diff --git a/config/retrodeck/reference_lists/features.json b/config/retrodeck/reference_lists/features.json index 55b6dde0..7e5d9d50 100644 --- a/config/retrodeck/reference_lists/features.json +++ b/config/retrodeck/reference_lists/features.json @@ -1,1111 +1,1129 @@ { - "about_links": { - "rd_changelog": { - "description": "Opens the RetroDECK change log in your default browser", - "name": "Changelog", - "url": "https://retrodeck.readthedocs.io/en/latest/wiki_rd_versions/version-history/", - "icon": "res://assets/icons/pixelitos/128/internet-web-browser.png" - }, - "rd_contactus": { - "description": "Opens the RetroDECK contact us section in your default browser", - "name": "Contact us", - "url": "https://github.com/XargonWan/RetroDECK", - "icon": "res://assets/icons/pixelitos/128/internet-web-browser.png" - }, - "rd_credits": { - "description": "Opens the RetroDECK Credits in your default browser", - "name": "Credits", - "url": "https://retrodeck.readthedocs.io/en/latest/wiki_credits/donations-licenses/", - "icon": "res://assets/icons/pixelitos/128/internet-web-browser.png" - }, - "rd_donate": { - "description": "Opens Donations page in your default browser", - "name": "Donate", - "url": "https://retrodeck.readthedocs.io/en/latest/wiki_credits/donations-licenses/", - "icon": "res://assets/icons/pixelitos/128/internet-web-browser.png" - }, - "rd_licenses": { - "description": "Opens the RetroDECK licenses in your default browser", - "name": "Licences", - "url": "https://retrodeck.readthedocs.io/en/latest/wiki_credits/donations-licenses/", - "icon": "res://assets/icons/pixelitos/128/internet-web-browser.png" - }, - "rd_web": { - "description": "Opens the RetroDECK Website in your default browser", - "name": "Website", - "url": "https://retrodeck.net/", - "icon": "res://assets/icons/pixelitos/128/internet-web-browser.png" - }, - "rd_wiki": { - "description": "Opens the RetroDECK Wiki in your default browser", - "name": "Wiki", - "url": "https://retrodeck.readthedocs.io/en/latest/", - "icon": "res://assets/icons/pixelitos/128/internet-web-browser.png" - } - }, - "finit_default_options": { - "rd_controller_profile": { - "name": "RetroDECK Steam Controller Profiles Install", - "description": "Install RetroDECK Steam Input profiles to Steam - Recommended", - "enabled": true - }, - "rpcs3_firmware": { - "name": "RPCS3 Firmware Install", - "description": "Install firmware needed for PS3 emulation", - "enabled": false - }, - "vita3k_firmware": { - "name": "Vita3K Firmware Install", - "description": "Install firmware needed for Vita3K emulation", - "enabled": false - } - }, - "splash_screens": { - "xmas": { - "start_date": "1201", - "end_date": "1231", - "start_time": "0000", - "end_time": "2359", - "filename": "rd-xmas-splash.svg" - }, - "lunar_dragon": { - "start_date": "0209", - "end_date": "0212", - "start_time": "0000", - "end_time": "2359", - "filename": "rd-lunar-dragon-splash.svg" - }, - "valentines_day": { - "start_date": "0214", - "end_date": "0214", - "start_time": "0001", - "end_time": "2359", - "filename": "rd-valentines-splash.svg" - }, - "retrodeck_birthday": { - "start_date": "0304", - "end_date": "0304", - "start_time": "0000", - "end_time": "2359", - "filename": "rd-gm-bday-splash.svg" - }, - "st_patricks_day": { - "start_date": "0317", - "end_date": "0317", - "start_time": "0000", - "end_time": "2359", - "filename": "rd-stpatricks-splash.svg" - }, - "kodomo_golden_week": { - "start_date": "0429", - "end_date": "0505", - "start_time": "0000", - "end_time": "2359", - "filename": "rd-kodomo-golden.svg" - }, - "tanabata": { - "start_date": "0707", - "end_date": "0707", - "start_time": "0000", - "end_time": "2359", - "filename": "tanabata.svg" - }, - "mountain_day": { - "start_date": "0811", - "end_date": "0811", - "start_time": "0000", - "end_time": "2359", - "filename": "placeholder.svg" - }, - "obon": { - "start_date": "0813", - "end_date": "0816", - "start_time": "0000", - "end_time": "2359", - "filename": "placeholder.svg" - } - }, - "incompatible_presets": { - "borders": "widescreen" - }, - "helper_files": { - "dolphin_mods": { - "filename": "how-to-install-dolphin-mods.txt", - "location": "$mods_folder/Dolphin" - }, - "primehack_mods": { - "filename": "how-to-install-primehack-mods.txt", - "location": "$mods_folder/Primehack" - }, - "mesen_textures": { - "filename": "how-to-install-Mesen-textures.txt", - "location": "$texture_packs_folder/RetroArch-Mesen" - }, - "ppsspp_textures": { - "filename": "how-to-install-PPSSPP-textures.txt", - "location": "$texture_packs_folder/PPSSPP" - }, - "pcsx2_textures": { - "filename": "how-to-install-PCSX2-textures.txt", - "location": "$texture_packs_folder/PCSX2" - }, - "mupen64plus_cache_textures": { - "filename": "how-to-install-Mupen64Plus-textures.txt", - "location": "$texture_packs_folder/RetroArch-Mupen64Plus/cache" - }, - "mupen64plus_hires_textures": { - "filename": "how-to-install-Mupen64Plus-textures.txt", - "location": "$texture_packs_folder/RetroArch-Mupen64Plus/hires_texture" - }, - "duckstation_textures": { - "filename": "how-to-install-Duckstation-textures.txt", - "location": "$texture_packs_folder/Duckstation" - }, - "psvita_games": { - "filename": "how-to-install-psvita-games.txt", - "location": "$roms_folder/psvita" - }, - "ryujinx_firmware": { - "filename": "Install-firmware-through-Ryujinx.txt", - "location": "$bios_folder/switch/firmware" - } - }, - "compression_targets": { - "chd": [ - "3do", - "amigacd32", - "dreamcast", - "megacd", - "neogeocd", - "pcenginecd", - "pcfx", - "psp", - "psx", - "ps2", - "saturn", - "saturnjp", - "segacd", - "tg-cd" - ], - "rvz": [ - "gc", - "wii" - ], - "zip": [ - "atari2600", - "atari5200", - "atari7800", - "atari800", - "atarijaguar", - "atarilynx", - "atarist", - "gamegear", - "gb", - "gba", - "gbc", - "genesis", - "mastersystem", - "n64", - "nds", - "nes", - "ngp", - "ngpc", - "sega32x", - "sega32xjp", - "sega32xna", - "snes", - "snesna", - "tg16" - ] - }, - "zip_compressable_extensions": [ - ".32x", - ".68k", - ".NDS", - ".a26", - ".a52", - ".a78", - ".abs", - ".agb", - ".atr", - ".atx", - ".bin", - ".bml", - ".bms", - ".bs", - ".bsx", - ".cas", - ".cdm", - ".cgb", - ".cof", - ".col", - ".dim", - ".dmg", - ".dx2", - ".fds", - ".fig", - ".gb", - ".gba", - ".gbc", - ".gd3", - ".gd7", - ".gen", - ".gg", - ".ipf", - ".j64", - ".jag", - ".lnx", - ".md", - ".mdx", - ".mgd", - ".msa", - ".nds", - ".nes", - ".ngc", - ".o", - ".pce", - ".prg", - ".rom", - ".sfc", - ".sg", - ".sgb", - ".sgd", - ".smc", - ".smd", - ".sms", - ".st", - ".st", - ".stx", - ".swc", - ".unf", - ".unif", - ".xex", - ".xfd", - ".z64" - ], - "system": { - "3do": { - "name": "3DO Interactive Multiplayer" - }, - "adam": { - "name": "Coleco Adam" - }, - "amiga": { - "name": "Commodore Amiga" - }, - "amiga1200": { - "name": "Commodore Amiga 1200" - }, - "amiga600": { - "name": "Commodore Amiga 600" - }, - "amigacd32": { - "name": "Commodore Amiga CD32" - }, - "amstradcpc": { - "name": "Amstrad CPC" - }, - "apple2": { - "name": "Apple II" - }, - "apple2gs": { - "name": "Apple IIGS" - }, - "arcade": { - "name": "Arcade" - }, - "arcadia": { - "name": "Emerson Arcadia 2001" - }, - "archimedes": { - "name": "Acorn Archimedes" - }, - "arduboy": { - "name": "Arduboy Miniature Game System" - }, - "astrocde": { - "name": "Bally Astrocade" - }, - "atari2600": { - "name": "Atari 2600" - }, - "atari5200": { - "name": "Atari 5200" - }, - "atari7800": { - "name": "Atari 7800 ProSystem" - }, - "atari800": { - "name": "Atari 800" - }, - "atarijaguar": { - "name": "Atari Jaguar" - }, - "atarilynx": { - "name": "Atari Lynx" - }, - "atarist": { - "name": "Atari ST" - }, - "atarixe": { - "name": "Atari XE" - }, - "atomiswave": { - "name": "Sammy Corporation Atomiswave" - }, - "bbcmicro": { - "name": "Acorn Computers BBC Micro" - }, - "c64": { - "name": "Commodore 64" - }, - "cdimono1": { - "name": "Philips CD-i" - }, - "cdtv": { - "name": "Commodore CDTV" - }, - "chailove": { - "name": "ChaiLove Game Engine" - }, - "channelf": { - "name": "Fairchild Channel F" - }, - "colecovision": { - "name": "Coleco ColecoVision" - }, - "consolearcade": { - "name": "Console Arcade Systems" - }, - "cps": { - "name": "Capcom Play System" - }, - "cps1": { - "name": "Capcom Play System I" - }, - "cps2": { - "name": "Capcom Play System II" - }, - "cps3": { - "name": "Capcom Play System III" - }, - "crvision": { - "name": "VTech CreatiVision" - }, - "daphne": { - "name": "Daphne Arcade LaserDisc Emulator" - }, - "desktop": { - "name": "Desktop Applications" - }, - "doom": { - "name": "Doom" - }, - "dos": { - "name": "DOS (PC)" - }, - "dreamcast": { - "name": "Sega Dreamcast" - }, - "dc": { - "name": "Sega Dreamcast" - }, - "easyrpg": { - "name": "EasyRPG Game Engine" - }, - "electron": { - "name": "Acorn Electron" - }, - "emulators": { - "name": "Emulators" - }, - "famicom": { - "name": "Nintendo Family Computer" - }, - "fba": { - "name": "FinalBurn Alpha" - }, - "fbneo": { - "name": "FinalBurn Neo" - }, - "fds": { - "name": "Nintendo Famicom Disk System" - }, - "fm7": { - "name": "Fujitsu FM-7" - }, - "fmtowns": { - "name": "Fujitsu FM Towns" - }, - "gamate": { - "name": "Bit Corporation Gamate" - }, - "gameandwatch": { - "name": "Nintendo Game and Watch" - }, - "gamecom": { - "name": "Tiger Electronics Game.com" - }, - "gamegear": { - "name": "Sega Game Gear" - }, - "gg": { - "name": "Sega Game Gear" - }, - "gb": { - "name": "Nintendo Game Boy" - }, - "gba": { - "name": "Nintendo Game Boy Advance" - }, - "gbc": { - "name": "Nintendo Game Boy Color" - }, - "gc": { - "name": "Nintendo GameCube" - }, - "genesis": { - "name": "Sega Genesis" - }, - "gmaster": { - "name": "Hartung Game Master" - }, - "gx4000": { - "name": "Amstrad GX4000" - }, - "intellivision": { - "name": "Mattel Electronics Intellivision" - }, - "j2me": { - "name": "Java 2 Micro Edition (J2ME)" - }, - "laserdisc": { - "name": "LaserDisc Games" - }, - "lcdgames": { - "name": "LCD Handheld Games" - }, - "lowresnx": { - "name": "LowRes NX Fantasy Console" - }, - "lutris": { - "name": "Lutris Open Gaming Platform" - }, - "lutro": { - "name": "Lutro Game Engine" - }, - "macintosh": { - "name": "Apple Macintosh" - }, - "mame": { - "name": "Multiple Arcade Machine Emulator" - }, - "mastersystem": { - "name": "Sega Master System" - }, - "megacd": { - "name": "Sega Mega-CD" - }, - "megacdjp": { - "name": "Sega Mega-CD (Japan)" - }, - "megadrive": { - "name": "Sega Mega Drive" - }, - "megaduck": { - "name": "Creatronic Mega Duck" - }, - "mess": { - "name": "Multi Emulator Super System" - }, - "model2": { - "name": "Sega Model 2" - }, - "moto": { - "name": "Thomson MO/TO Series" - }, - "msx": { - "name": "MSX" - }, - "msx1": { - "name": "MSX1" - }, - "msx2": { - "name": "MSX2" - }, - "msxturbor": { - "name": "MSX Turbo R" - }, - "mugen": { - "name": "M.U.G.E.N Game Engine" - }, - "multivision": { - "name": "Othello Multivision" - }, - "n3ds": { - "name": "Nintendo 3DS" - }, - "n64": { - "name": "Nintendo 64" - }, - "n64dd": { - "name": "Nintendo 64DD" - }, - "naomi": { - "name": "Sega NAOMI" - }, - "naomi2": { - "name": "Sega NAOMI 2" - }, - "naomigd": { - "name": "Sega NAOMI GD-ROM" - }, - "nds": { - "name": "Nintendo DS" - }, - "neogeo": { - "name": "SNK Neo Geo" - }, - "neogeocd": { - "name": "SNK Neo Geo CD" - }, - "neogeocdjp": { - "name": "SNK Neo Geo CD (Japan)" - }, - "nes": { - "name": "Nintendo Entertainment System" - }, - "ngp": { - "name": "SNK Neo Geo Pocket" - }, - "ngpc": { - "name": "SNK Neo Geo Pocket Color" - }, - "odyssey2": { - "name": "Magnavox Odyssey 2" - }, - "openbor": { - "name": "OpenBOR Game Engine" - }, - "palm": { - "name": "Palm OS" - }, - "pc": { - "name": "IBM PC" - }, - "pc88": { - "name": "NEC PC-8800 Series" - }, - "pc98": { - "name": "NEC PC-9800 Series" - }, - "pcarcade": { - "name": "PC Arcade Systems" - }, - "pcengine": { - "name": "NEC PC Engine" - }, - "pcenginecd": { - "name": "NEC PC Engine CD" - }, - "pcfx": { - "name": "NEC PC-FX" - }, - "pico8": { - "name": "PICO-8 Fantasy Console" - }, - "plus4": { - "name": "Commodore Plus/4" - }, - "pokemini": { - "name": "Nintendo Pokémon Mini" - }, - "ports": { - "name": "Ports" - }, - "ps2": { - "name": "Sony PlayStation 2" - }, - "ps3": { - "name": "Sony PlayStation 3" - }, - "psp": { - "name": "Sony PlayStation Portable" - }, - "psvita": { - "name": "Sony PlayStation Vita" - }, - "psx": { - "name": "Sony PlayStation" - }, - "pv1000": { - "name": "Casio PV-1000" - }, - "quake": { - "name": "Quake" - }, - "satellaview": { - "name": "Nintendo Satellaview" - }, - "saturn": { - "name": "Sega Saturn" - }, - "saturnjp": { - "name": "Sega Saturn (Japan)" - }, - "scummvm": { - "name": "ScummVM Game Engine" - }, - "scv": { - "name": "Epoch Super Cassette Vision" - }, - "sega32x": { - "name": "Sega Mega Drive 32X" - }, - "sega32xjp": { - "name": "Sega Super 32X (Japan)" - }, - "sega32xna": { - "name": "Sega Genesis 32X" - }, - "segacd": { - "name": "Sega CD" - }, - "sfc": { - "name": "Nintendo SFC (Super Famicom)" - }, - "sg-1000": { - "name": "Sega SG-1000" - }, - "sgb": { - "name": "Nintendo Super Game Boy" - }, - "snes": { - "name": "Nintendo SNES (Super Nintendo)" - }, - "snesna": { - "name": "Nintendo SNES (Super Nintendo)" - }, - "solarus": { - "name": "Solarus Game Engine" - }, - "spectravideo": { - "name": "Spectravideo" - }, - "stv": { - "name": "Sega Titan Video Game System" - }, - "sufami": { - "name": "Bandai SuFami Turbo" - }, - "supergrafx": { - "name": "NEC SuperGrafx" - }, - "supervision": { - "name": "Watara Supervision" - }, - "supracan": { - "name": "Funtech Super A'Can" - }, - "switch": { - "name": "Nintendo Switch" - }, - "tg-cd": { - "name": "NEC TurboGrafx-CD" - }, - "tg16": { - "name": "NEC TurboGrafx-16" - }, - "ti99": { - "name": "Texas Instruments TI-99" - }, - "tic80": { - "name": "TIC-80 Fantasy Computer" - }, - "to8": { - "name": "Thomson TO8" - }, - "uzebox": { - "name": "Uzebox Open Source Console" - }, - "vectrex": { - "name": "GCE Vectrex" - }, - "vic20": { - "name": "Commodore VIC-20" - }, - "videopac": { - "name": "Philips Videopac G7000" - }, - "virtualboy": { - "name": "Nintendo Virtual Boy" - }, - "vsmile": { - "name": "VTech V.Smile" - }, - "wasm4": { - "name": "WASM-4 Fantasy Console" - }, - "wii": { - "name": "Nintendo Wii" - }, - "wiiu": { - "name": "Nintendo Wii U" - }, - "windows": { - "name": "Microsoft Windows" - }, - "windows3x": { - "name": "Microsoft Windows 3.x" - }, - "windows9x": { - "name": "Microsoft Windows 9x" - }, - "wonderswan": { - "name": "Bandai WonderSwan" - }, - "wonderswancolor": { - "name": "Bandai WonderSwan Color" - }, - "x1": { - "name": "Sharp X1" - }, - "x68000": { - "name": "Sharp X68000" - }, - "xbox": { - "name": "Microsoft Xbox" - }, - "zx81": { - "name": "Sinclair ZX81" - }, - "zxspectrum": { - "name": "Sinclair ZX Spectrum" - } - }, - "emulator": { - "retroarch": { - "description": "RetroArch (Multi-emulator Frontend)", - "name": "RetroArch", - "launch": "retroarch", - "properties": [ - { - "cheevos": true, - "cheevos_hardcore": true, - "quick_resume": true - } - ], - "cores": { - "citra_libretro": { - "description": "Nintendo 3DS Libretro Core", - "name": "Citra", - "system": "n3ds", - "properties": [ - { - "abxy_button": true - } - ] - }, - "mame_libretro": { - "description": "MAME: Multiple Arcade Machine Libretro Core", - "name": "MAME", - "system": "arcade", - "properties": [ - { - "tate_mode": true - } - ] - }, - "desmume_libretro": { - "description": "DeSmuME Nintendo DS Libretro Core", - "name": "desmume", - "system": "nds", - "properties": [ - { - "abxy_button": true - } - ] - }, - "melonds_libretro": { - "description": "MelonDS Nintendo DS Libretro Core", - "name": "melonds", - "system": "nds", - "properties": [ - { - "abxy_button": true - } - ] - }, - "swanstation_libretro": { - "name": "SwanStation", - "description": "Swanstation Libretro Core", - "system": "psx", - "properties": [ - { - "widescreen": true, - "borders": true - } - ] - }, - "picodrive_libetro": { - "name": "PicoDrive", - "description": "SEGA MS/MD/CD/32X Libretro Core", - "system": [ - "ms", - "md", - "cd", - "32x" - ], - "properties": [ - { - "widescreen": true, - "borders": true, - "rewind": true - } - ] - }, - "genesisplusgx_libetro": { - "name": "Genesis Plus GX", - "description": "SEGA MS/GG/MD/CD Libretro Core", - "system": [ - "ms", - "gg", - "mc", - "cd" - ], - "properties": [ - { - "widescreen": true, - "borders": true, - "rewind": true - } - ] - }, - "genesisplusgxwide_libetro": { - "name": "Genesis Plus GX Wide", - "description": "SEGA MS/GG/MD/CD Libretro Core for Wide Screen", - "system": [ - "ms", - "gg", - "mc", - "cd" - ], - "properties": [ - { - "widescreen": true, - "rewind": true - } - ] - }, - "mupen64plus-next_libetro": { - "name": "Mupen64Plus-Next", - "description": "Nintendo 64 Libretro Core", - "system": "n64", - "properties": [ - { - "widescreen": true, - "borders": true, - "abxy_button": true - } - ] - }, - "snes9x-current_libetro": { - "name": "Snes9x - Current", - "description": "Super Nintendo Libretro Core", - "system": "snes", - "properties": [ - { - "widescreen": true, - "borders": true, - "rewind": true, - "abxy_button": true - } - ] - }, - "gambatte_libetro": { - "name": "Gambatte", - "description": "Game Boy/Color Libretro Core", - "system": [ - "gb", - "gbc" - ], - "properties": [ - { - "borders": true, - "rewind": true, - "abxy_button": true - } - ] - }, - "mgba_libetro": { - "name": "mGBA", - "description": "Game Boy Advance Libretro Core", - "system": "gba", - "properties": [ - { - "borders": true, - "rewind": true, - "abxy_button": true - } - ] - } - } - }, - "mame": { - "description": "MAME: Multiple Arcade Machine Emulator", - "name": "MAME", - "system": [ - "arcade" - ], - "launch": "mame" - }, - "citra": { - "description": "Citra Nintendo 3DS Emulator (via Ponzu)", - "name": "Citra (via Ponzu)", - "system": "n3ds", - "ponzu": true, - "launch": "citra-qt", - "properties": [ - { - "abxy_button": true, - "ask_to_exit": true - } - ] - }, - "ruffle": { - "description": "Flash Games emulator", - "name" : "Ruffle", - "system" : "flash", - "launch": "ruffle-rd-wrapper.sh" - }, - "melonds": { - "description": "MelonDS Nintendo DS Emulator", - "name": "melonds", - "system": "nds", - "launch": "MelonDS" - }, - "pcsx2": { - "name": "pcsx2", - "description": "PCSX2 Play Station 2 Emulator", - "system": "ps2", - "launch": "pcsx2-qt", - "properties": [ - { - "ask_to_exit": true, - "cheevos": true - } - ] - }, - "duckstation": { - "name": "Duckstation", - "description": "PlayStation Emulator", - "launch": "duckstation-qt", - "system": "psx", - "properties": [ - { - "ask_to_exit": true, - "cheevos": true - } - ] - }, - "ppsspp": { - "name": "PPSSPP", - "description": "PPSSPP: PlayStation Portable Emulator", - "launch": "PPSSPPSDL", - "system": "psp", - "properties": [ - { - "cheevos": true, - "cheevos_hardcore": true - } - ] - }, - "vita3k": { - "name": "Vita3k", - "description": "Vita3K PSVita Emulator", - "system": "psvita", - "launch": "Vita3K" - }, - "rpcs3": { - "name": "RPCS3", - "description": "RPCS3 PlayStation 3 Emulator", - "system": "ps3", - "launch": "rpcs3", - "properties": [ - { - "ask_to_exit": true - } - ] - }, - "ryujinx": { - "name": "Ryujinx", - "description": "Ryujinx Nintendo Switch Emulator", - "system": "switch", - "launch": "Ryujinx.sh" - }, - "yuzu": { - "name": "Yuzu (via Ponzu)", - "description": "Yuzu Nintendo Switch Emulator (via Ponzu)", - "launch": "Yuzu", - "system": "switch", - "ponzu": true, - "abxy_button": true - }, - "dolphin": { - "name": "Dolphin", - "description": "Dolphin Wii and GameCube Emulator", - "launch": "dolphin-emu-wrapper", - "system": [ - "gc", - "wii" - ], - "properties": [ - { - "abxy_button": true, - "ask_to_exit": true, - "cheevos": true, - "cheevos_hardcore": true, - "universal_dyn_input": true - } - ] - }, - "primehack": { - "name": "PrimeHack", - "description": "A fork of Dolphiin to enhance Metroid Prime experience", - "launch": "primehack-wrapper", - "system": [ - "wii" - ], - "properties": [ - { - "ask_to_exit": true, - "universal_dyn_input": true - } - ] - }, - "cemu": { - "description": "Wii U emulator", - "name": "Cemu", - "system": "wiiu", - "launch": "Cemu-wrapper", - "properties": [ - { - "abxy_button": true, - "multi_user_config_dir": "Cemu" - } - ] - }, - "xemu": { - "description": "xemu Xbox Emulator", - "name": "xemu", - "system": "xbox", - "launch": "xemu" - }, - "es-de": { - "description": "ES-DE Emulation Frontend", - "name": "ES-DE", - "launch": "es-de" - } + "about_links": { + "rd_changelog": { + "description": "Opens the RetroDECK change log in your default browser", + "name": "Changelog", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_rd_versions/version-history/", + "icon": "res://assets/icons/pixelitos/128/internet-web-browser.png" + }, + "rd_contactus": { + "description": "Opens the RetroDECK contact us section in your default browser", + "name": "Contact us", + "url": "https://github.com/XargonWan/RetroDECK", + "icon": "res://assets/icons/pixelitos/128/internet-web-browser.png" + }, + "rd_credits": { + "description": "Opens the RetroDECK Credits in your default browser", + "name": "Credits", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_credits/donations-licenses/", + "icon": "res://assets/icons/pixelitos/128/internet-web-browser.png" + }, + "rd_donate": { + "description": "Opens Donations page in your default browser", + "name": "Donate", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_credits/donations-licenses/", + "icon": "res://assets/icons/pixelitos/128/internet-web-browser.png" + }, + "rd_licenses": { + "description": "Opens the RetroDECK licenses in your default browser", + "name": "Licences", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_credits/donations-licenses/", + "icon": "res://assets/icons/pixelitos/128/internet-web-browser.png" + }, + "rd_web": { + "description": "Opens the RetroDECK Website in your default browser", + "name": "Website", + "url": "https://retrodeck.net/", + "icon": "res://assets/icons/pixelitos/128/internet-web-browser.png" + }, + "rd_wiki": { + "description": "Opens the RetroDECK Wiki in your default browser", + "name": "Wiki", + "url": "https://retrodeck.readthedocs.io/en/latest/", + "icon": "res://assets/icons/pixelitos/128/internet-web-browser.png" + } + }, + "finit_default_options": { + "rd_controller_profile": { + "name": "RetroDECK Steam Controller Profiles Install", + "description": "Install RetroDECK Steam Input profiles to Steam - Recommended", + "enabled": true + }, + "rpcs3_firmware": { + "name": "RPCS3 Firmware Install", + "description": "Install firmware needed for PS3 emulation", + "enabled": false + }, + "vita3k_firmware": { + "name": "Vita3K Firmware Install", + "description": "Install firmware needed for Vita3K emulation", + "enabled": false + } + }, + "splash_screens": { + "xmas": { + "start_date": "1201", + "end_date": "1231", + "start_time": "0000", + "end_time": "2359", + "filename": "rd-xmas-splash.svg" + }, + "lunar_dragon": { + "start_date": "0209", + "end_date": "0212", + "start_time": "0000", + "end_time": "2359", + "filename": "rd-lunar-dragon-splash.svg" + }, + "valentines_day": { + "start_date": "0214", + "end_date": "0214", + "start_time": "0001", + "end_time": "2359", + "filename": "rd-valentines-splash.svg" + }, + "retrodeck_birthday": { + "start_date": "0304", + "end_date": "0304", + "start_time": "0000", + "end_time": "2359", + "filename": "rd-gm-bday-splash.svg" + }, + "st_patricks_day": { + "start_date": "0317", + "end_date": "0317", + "start_time": "0000", + "end_time": "2359", + "filename": "rd-stpatricks-splash.svg" + }, + "kodomo_golden_week": { + "start_date": "0429", + "end_date": "0505", + "start_time": "0000", + "end_time": "2359", + "filename": "rd-kodomo-golden.svg" + }, + "tanabata": { + "start_date": "0707", + "end_date": "0707", + "start_time": "0000", + "end_time": "2359", + "filename": "tanabata.svg" + }, + "mountain_day": { + "start_date": "0811", + "end_date": "0811", + "start_time": "0000", + "end_time": "2359", + "filename": "placeholder.svg" + }, + "obon": { + "start_date": "0813", + "end_date": "0816", + "start_time": "0000", + "end_time": "2359", + "filename": "placeholder.svg" + } + }, + "incompatible_presets": { + "borders": "widescreen" + }, + "helper_files": { + "dolphin_mods": { + "filename": "how-to-install-dolphin-mods.txt", + "location": "$mods_folder/Dolphin" + }, + "primehack_mods": { + "filename": "how-to-install-primehack-mods.txt", + "location": "$mods_folder/Primehack" + }, + "mesen_textures": { + "filename": "how-to-install-Mesen-textures.txt", + "location": "$texture_packs_folder/RetroArch-Mesen" + }, + "ppsspp_textures": { + "filename": "how-to-install-PPSSPP-textures.txt", + "location": "$texture_packs_folder/PPSSPP" + }, + "pcsx2_textures": { + "filename": "how-to-install-PCSX2-textures.txt", + "location": "$texture_packs_folder/PCSX2" + }, + "mupen64plus_cache_textures": { + "filename": "how-to-install-Mupen64Plus-textures.txt", + "location": "$texture_packs_folder/RetroArch-Mupen64Plus/cache" + }, + "mupen64plus_hires_textures": { + "filename": "how-to-install-Mupen64Plus-textures.txt", + "location": "$texture_packs_folder/RetroArch-Mupen64Plus/hires_texture" + }, + "duckstation_textures": { + "filename": "how-to-install-Duckstation-textures.txt", + "location": "$texture_packs_folder/Duckstation" + }, + "psvita_games": { + "filename": "how-to-install-psvita-games.txt", + "location": "$roms_folder/psvita" + }, + "ryujinx_firmware": { + "filename": "Install-firmware-through-Ryujinx.txt", + "location": "$bios_folder/switch/firmware" + } + }, + "compression_targets": { + "chd": [ + "3do", + "amigacd32", + "dreamcast", + "megacd", + "neogeocd", + "pcenginecd", + "pcfx", + "psp", + "psx", + "ps2", + "saturn", + "saturnjp", + "segacd", + "tg-cd" + ], + "rvz": [ + "gc", + "wii" + ], + "zip": [ + "atari2600", + "atari5200", + "atari7800", + "atari800", + "atarijaguar", + "atarilynx", + "atarist", + "gamegear", + "gb", + "gba", + "gbc", + "genesis", + "mastersystem", + "n64", + "nds", + "nes", + "ngp", + "ngpc", + "sega32x", + "sega32xjp", + "sega32xna", + "snes", + "snesna", + "tg16" + ] + }, + "zip_compressable_extensions": [ + ".32x", + ".68k", + ".NDS", + ".a26", + ".a52", + ".a78", + ".abs", + ".agb", + ".atr", + ".atx", + ".bin", + ".bml", + ".bms", + ".bs", + ".bsx", + ".cas", + ".cdm", + ".cgb", + ".cof", + ".col", + ".dim", + ".dmg", + ".dx2", + ".fds", + ".fig", + ".gb", + ".gba", + ".gbc", + ".gd3", + ".gd7", + ".gen", + ".gg", + ".ipf", + ".j64", + ".jag", + ".lnx", + ".md", + ".mdx", + ".mgd", + ".msa", + ".nds", + ".nes", + ".ngc", + ".o", + ".pce", + ".prg", + ".rom", + ".sfc", + ".sg", + ".sgb", + ".sgd", + ".smc", + ".smd", + ".sms", + ".st", + ".st", + ".stx", + ".swc", + ".unf", + ".unif", + ".xex", + ".xfd", + ".z64" + ], + "system": { + "3do": { + "name": "3DO Interactive Multiplayer" + }, + "adam": { + "name": "Coleco Adam" + }, + "amiga": { + "name": "Commodore Amiga" + }, + "amiga1200": { + "name": "Commodore Amiga 1200" + }, + "amiga600": { + "name": "Commodore Amiga 600" + }, + "amigacd32": { + "name": "Commodore Amiga CD32" + }, + "amstradcpc": { + "name": "Amstrad CPC" + }, + "apple2": { + "name": "Apple II" + }, + "apple2gs": { + "name": "Apple IIGS" + }, + "arcade": { + "name": "Arcade" + }, + "arcadia": { + "name": "Emerson Arcadia 2001" + }, + "archimedes": { + "name": "Acorn Archimedes" + }, + "arduboy": { + "name": "Arduboy Miniature Game System" + }, + "astrocde": { + "name": "Bally Astrocade" + }, + "atari2600": { + "name": "Atari 2600" + }, + "atari5200": { + "name": "Atari 5200" + }, + "atari7800": { + "name": "Atari 7800 ProSystem" + }, + "atari800": { + "name": "Atari 800" + }, + "atarijaguar": { + "name": "Atari Jaguar" + }, + "atarilynx": { + "name": "Atari Lynx" + }, + "atarist": { + "name": "Atari ST" + }, + "atarixe": { + "name": "Atari XE" + }, + "atomiswave": { + "name": "Sammy Corporation Atomiswave" + }, + "bbcmicro": { + "name": "Acorn Computers BBC Micro" + }, + "c64": { + "name": "Commodore 64" + }, + "cdimono1": { + "name": "Philips CD-i" + }, + "cdtv": { + "name": "Commodore CDTV" + }, + "chailove": { + "name": "ChaiLove Game Engine" + }, + "channelf": { + "name": "Fairchild Channel F" + }, + "colecovision": { + "name": "Coleco ColecoVision" + }, + "consolearcade": { + "name": "Console Arcade Systems" + }, + "cps": { + "name": "Capcom Play System" + }, + "cps1": { + "name": "Capcom Play System I" + }, + "cps2": { + "name": "Capcom Play System II" + }, + "cps3": { + "name": "Capcom Play System III" + }, + "crvision": { + "name": "VTech CreatiVision" + }, + "daphne": { + "name": "Daphne Arcade LaserDisc Emulator" + }, + "desktop": { + "name": "Desktop Applications" + }, + "doom": { + "name": "Doom" + }, + "dos": { + "name": "DOS (PC)" + }, + "dreamcast": { + "name": "Sega Dreamcast" + }, + "dc": { + "name": "Sega Dreamcast" + }, + "easyrpg": { + "name": "EasyRPG Game Engine" + }, + "electron": { + "name": "Acorn Electron" + }, + "emulators": { + "name": "Emulators" + }, + "famicom": { + "name": "Nintendo Family Computer" + }, + "fba": { + "name": "FinalBurn Alpha" + }, + "fbneo": { + "name": "FinalBurn Neo" + }, + "fds": { + "name": "Nintendo Famicom Disk System" + }, + "fm7": { + "name": "Fujitsu FM-7" + }, + "fmtowns": { + "name": "Fujitsu FM Towns" + }, + "gamate": { + "name": "Bit Corporation Gamate" + }, + "gameandwatch": { + "name": "Nintendo Game and Watch" + }, + "gamecom": { + "name": "Tiger Electronics Game.com" + }, + "gamegear": { + "name": "Sega Game Gear" + }, + "gg": { + "name": "Sega Game Gear" + }, + "gb": { + "name": "Nintendo Game Boy" + }, + "gba": { + "name": "Nintendo Game Boy Advance" + }, + "gbc": { + "name": "Nintendo Game Boy Color" + }, + "gc": { + "name": "Nintendo GameCube" + }, + "genesis": { + "name": "Sega Genesis" + }, + "gmaster": { + "name": "Hartung Game Master" + }, + "gx4000": { + "name": "Amstrad GX4000" + }, + "intellivision": { + "name": "Mattel Electronics Intellivision" + }, + "j2me": { + "name": "Java 2 Micro Edition (J2ME)" + }, + "laserdisc": { + "name": "LaserDisc Games" + }, + "lcdgames": { + "name": "LCD Handheld Games" + }, + "lowresnx": { + "name": "LowRes NX Fantasy Console" + }, + "lutris": { + "name": "Lutris Open Gaming Platform" + }, + "lutro": { + "name": "Lutro Game Engine" + }, + "macintosh": { + "name": "Apple Macintosh" + }, + "mame": { + "name": "Multiple Arcade Machine Emulator" + }, + "mastersystem": { + "name": "Sega Master System" + }, + "megacd": { + "name": "Sega Mega-CD" + }, + "megacdjp": { + "name": "Sega Mega-CD (Japan)" + }, + "megadrive": { + "name": "Sega Mega Drive" + }, + "megaduck": { + "name": "Creatronic Mega Duck" + }, + "mess": { + "name": "Multi Emulator Super System" + }, + "model2": { + "name": "Sega Model 2" + }, + "moto": { + "name": "Thomson MO/TO Series" + }, + "msx": { + "name": "MSX" + }, + "msx1": { + "name": "MSX1" + }, + "msx2": { + "name": "MSX2" + }, + "msxturbor": { + "name": "MSX Turbo R" + }, + "mugen": { + "name": "M.U.G.E.N Game Engine" + }, + "multivision": { + "name": "Othello Multivision" + }, + "n3ds": { + "name": "Nintendo 3DS" + }, + "n64": { + "name": "Nintendo 64" + }, + "n64dd": { + "name": "Nintendo 64DD" + }, + "naomi": { + "name": "Sega NAOMI" + }, + "naomi2": { + "name": "Sega NAOMI 2" + }, + "naomigd": { + "name": "Sega NAOMI GD-ROM" + }, + "nds": { + "name": "Nintendo DS" + }, + "neogeo": { + "name": "SNK Neo Geo" + }, + "neogeocd": { + "name": "SNK Neo Geo CD" + }, + "neogeocdjp": { + "name": "SNK Neo Geo CD (Japan)" + }, + "nes": { + "name": "Nintendo Entertainment System" + }, + "ngp": { + "name": "SNK Neo Geo Pocket" + }, + "ngpc": { + "name": "SNK Neo Geo Pocket Color" + }, + "odyssey2": { + "name": "Magnavox Odyssey 2" + }, + "openbor": { + "name": "OpenBOR Game Engine" + }, + "palm": { + "name": "Palm OS" + }, + "pc": { + "name": "IBM PC" + }, + "pc88": { + "name": "NEC PC-8800 Series" + }, + "pc98": { + "name": "NEC PC-9800 Series" + }, + "pcarcade": { + "name": "PC Arcade Systems" + }, + "pcengine": { + "name": "NEC PC Engine" + }, + "pcenginecd": { + "name": "NEC PC Engine CD" + }, + "pcfx": { + "name": "NEC PC-FX" + }, + "pico8": { + "name": "PICO-8 Fantasy Console" + }, + "plus4": { + "name": "Commodore Plus/4" + }, + "pokemini": { + "name": "Nintendo Pokémon Mini" + }, + "ports": { + "name": "Ports" + }, + "ps2": { + "name": "Sony PlayStation 2" + }, + "ps3": { + "name": "Sony PlayStation 3" + }, + "psp": { + "name": "Sony PlayStation Portable" + }, + "psvita": { + "name": "Sony PlayStation Vita" + }, + "psx": { + "name": "Sony PlayStation" + }, + "pv1000": { + "name": "Casio PV-1000" + }, + "quake": { + "name": "Quake" + }, + "satellaview": { + "name": "Nintendo Satellaview" + }, + "saturn": { + "name": "Sega Saturn" + }, + "saturnjp": { + "name": "Sega Saturn (Japan)" + }, + "scummvm": { + "name": "ScummVM Game Engine" + }, + "scv": { + "name": "Epoch Super Cassette Vision" + }, + "sega32x": { + "name": "Sega Mega Drive 32X" + }, + "sega32xjp": { + "name": "Sega Super 32X (Japan)" + }, + "sega32xna": { + "name": "Sega Genesis 32X" + }, + "segacd": { + "name": "Sega CD" + }, + "sfc": { + "name": "Nintendo SFC (Super Famicom)" + }, + "sg-1000": { + "name": "Sega SG-1000" + }, + "sgb": { + "name": "Nintendo Super Game Boy" + }, + "snes": { + "name": "Nintendo SNES (Super Nintendo)" + }, + "snesna": { + "name": "Nintendo SNES (Super Nintendo)" + }, + "solarus": { + "name": "Solarus Game Engine" + }, + "spectravideo": { + "name": "Spectravideo" + }, + "stv": { + "name": "Sega Titan Video Game System" + }, + "sufami": { + "name": "Bandai SuFami Turbo" + }, + "supergrafx": { + "name": "NEC SuperGrafx" + }, + "supervision": { + "name": "Watara Supervision" + }, + "supracan": { + "name": "Funtech Super A'Can" + }, + "switch": { + "name": "Nintendo Switch" + }, + "tg-cd": { + "name": "NEC TurboGrafx-CD" + }, + "tg16": { + "name": "NEC TurboGrafx-16" + }, + "ti99": { + "name": "Texas Instruments TI-99" + }, + "tic80": { + "name": "TIC-80 Fantasy Computer" + }, + "to8": { + "name": "Thomson TO8" + }, + "uzebox": { + "name": "Uzebox Open Source Console" + }, + "vectrex": { + "name": "GCE Vectrex" + }, + "vic20": { + "name": "Commodore VIC-20" + }, + "videopac": { + "name": "Philips Videopac G7000" + }, + "virtualboy": { + "name": "Nintendo Virtual Boy" + }, + "vsmile": { + "name": "VTech V.Smile" + }, + "wasm4": { + "name": "WASM-4 Fantasy Console" + }, + "wii": { + "name": "Nintendo Wii" + }, + "wiiu": { + "name": "Nintendo Wii U" + }, + "windows": { + "name": "Microsoft Windows" + }, + "windows3x": { + "name": "Microsoft Windows 3.x" + }, + "windows9x": { + "name": "Microsoft Windows 9x" + }, + "wonderswan": { + "name": "Bandai WonderSwan" + }, + "wonderswancolor": { + "name": "Bandai WonderSwan Color" + }, + "x1": { + "name": "Sharp X1" + }, + "x68000": { + "name": "Sharp X68000" + }, + "xbox": { + "name": "Microsoft Xbox" + }, + "zx81": { + "name": "Sinclair ZX81" + }, + "zxspectrum": { + "name": "Sinclair ZX Spectrum" + } + }, + "emulator": { + "retroarch": { + "description": "RetroArch (Multi-emulator Frontend)", + "name": "RetroArch", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/retroarch/retroarch-guide/", + "launch": "retroarch", + "properties": [ + { + "cheevos": true, + "cheevos_hardcore": true, + "quick_resume": true + } + ], + "cores": { + "citra_libretro": { + "description": "Nintendo 3DS Libretro Core", + "name": "Citra", + "system": "n3ds", + "properties": [ + { + "abxy_button": true + } + ] + }, + "mame_libretro": { + "description": "MAME: Multiple Arcade Machine Libretro Core", + "name": "MAME", + "system": "arcade", + "properties": [ + { + "tate_mode": true + } + ] + }, + "desmume_libretro": { + "description": "DeSmuME Nintendo DS Libretro Core", + "name": "desmume", + "system": "nds", + "properties": [ + { + "abxy_button": true + } + ] + }, + "melonds_libretro": { + "description": "MelonDS Nintendo DS Libretro Core", + "name": "melonds", + "system": "nds", + "properties": [ + { + "abxy_button": true + } + ] + }, + "swanstation_libretro": { + "name": "SwanStation", + "description": "Swanstation Libretro Core", + "system": "psx", + "properties": [ + { + "widescreen": true, + "borders": true + } + ] + }, + "picodrive_libetro": { + "name": "PicoDrive", + "description": "SEGA MS/MD/CD/32X Libretro Core", + "system": [ + "ms", + "md", + "cd", + "32x" + ], + "properties": [ + { + "widescreen": true, + "borders": true, + "rewind": true + } + ] + }, + "genesisplusgx_libetro": { + "name": "Genesis Plus GX", + "description": "SEGA MS/GG/MD/CD Libretro Core", + "system": [ + "ms", + "gg", + "mc", + "cd" + ], + "properties": [ + { + "widescreen": true, + "borders": true, + "rewind": true + } + ] + }, + "genesisplusgxwide_libetro": { + "name": "Genesis Plus GX Wide", + "description": "SEGA MS/GG/MD/CD Libretro Core for Wide Screen", + "system": [ + "ms", + "gg", + "mc", + "cd" + ], + "properties": [ + { + "widescreen": true, + "rewind": true + } + ] + }, + "mupen64plus-next_libetro": { + "name": "Mupen64Plus-Next", + "description": "Nintendo 64 Libretro Core", + "system": "n64", + "properties": [ + { + "widescreen": true, + "borders": true, + "abxy_button": true + } + ] + }, + "snes9x-current_libetro": { + "name": "Snes9x - Current", + "description": "Super Nintendo Libretro Core", + "system": "snes", + "properties": [ + { + "widescreen": true, + "borders": true, + "rewind": true, + "abxy_button": true + } + ] + }, + "gambatte_libetro": { + "name": "Gambatte", + "description": "Game Boy/Color Libretro Core", + "system": [ + "gb", + "gbc" + ], + "properties": [ + { + "borders": true, + "rewind": true, + "abxy_button": true + } + ] + }, + "mgba_libetro": { + "name": "mGBA", + "description": "Game Boy Advance Libretro Core", + "system": "gba", + "properties": [ + { + "borders": true, + "rewind": true, + "abxy_button": true + } + ] + } + } + }, + "mame": { + "description": "MAME: Multiple Arcade Machine Emulator", + "name": "MAME", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/mame/mame-guide/", + "system": [ + "arcade" + ], + "launch": "mame" + }, + "citra": { + "description": "Citra Nintendo 3DS Emulator (via Ponzu)", + "name": "Citra (via Ponzu)", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_about/what-is-retrodeck/", + "system": "n3ds", + "ponzu": true, + "launch": "citra-qt", + "properties": [ + { + "abxy_button": true, + "ask_to_exit": true + } + ] + }, + "ruffle": { + "description": "Flash Games emulator", + "name" : "Ruffle", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_about/what-is-retrodeck/", + "system" : "flash", + "launch": "ruffle-rd-wrapper.sh" + }, + "melonds": { + "description": "MelonDS Nintendo DS Emulator", + "name": "melonds", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/melonds/melonds-guide/", + "system": "nds", + "launch": "MelonDS" + }, + "pcsx2": { + "name": "pcsx2", + "description": "PCSX2 Play Station 2 Emulator", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/pcsx2/pcsx2-guide/", + "system": "ps2", + "launch": "pcsx2-qt", + "properties": [ + { + "ask_to_exit": true, + "cheevos": true + } + ] + }, + "duckstation": { + "name": "Duckstation", + "description": "PlayStation Emulator", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/duckstation/duckstation-guide/", + "launch": "duckstation-qt", + "system": "psx", + "properties": [ + { + "ask_to_exit": true, + "cheevos": true + } + ] + }, + "ppsspp": { + "name": "PPSSPP", + "description": "PPSSPP: PlayStation Portable Emulator", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/ppsspp/ppsspp-guide/", + "launch": "PPSSPPSDL", + "system": "psp", + "properties": [ + { + "cheevos": true, + "cheevos_hardcore": true + } + ] + }, + "vita3k": { + "name": "Vita3k", + "description": "Vita3K PSVita Emulator", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/vita3k/vita3k-guide/", + "system": "psvita", + "launch": "Vita3K" + }, + "rpcs3": { + "name": "RPCS3", + "description": "RPCS3 PlayStation 3 Emulator", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/rpcs3/rpcs3-guide/", + "system": "ps3", + "launch": "rpcs3", + "properties": [ + { + "ask_to_exit": true + } + ] + }, + "ryujinx": { + "name": "Ryujinx", + "description": "Ryujinx Nintendo Switch Emulator", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/ryujinx/ryujinx-guide/", + "system": "switch", + "launch": "Ryujinx.sh" + }, + "yuzu": { + "name": "Yuzu (via Ponzu)", + "description": "Yuzu Nintendo Switch Emulator (via Ponzu)", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_about/what-is-retrodeck/", + "launch": "Yuzu", + "system": "switch", + "ponzu": true, + "abxy_button": true + }, + "dolphin": { + "name": "Dolphin", + "description": "Dolphin Wii and GameCube Emulator", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/dolphin-primehack/dolphin-primehack-guide/", + "launch": "dolphin-emu-wrapper", + "system": [ + "gc", + "wii" + ], + "properties": [ + { + "abxy_button": true, + "ask_to_exit": true, + "cheevos": true, + "cheevos_hardcore": true, + "universal_dyn_input": true + } + ] + }, + "primehack": { + "name": "PrimeHack", + "description": "A fork of Dolphiin to enhance Metroid Prime experience", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/dolphin-primehack/dolphin-primehack-guide/", + "launch": "primehack-wrapper", + "system": [ + "wii" + ], + "properties": [ + { + "ask_to_exit": true, + "universal_dyn_input": true + } + ] + }, + "cemu": { + "description": "Wii U emulator", + "name": "Cemu", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/cemu/cemu-guide/", + "system": "wiiu", + "launch": "Cemu-wrapper", + "properties": [ + { + "abxy_button": true, + "multi_user_config_dir": "Cemu" + } + ] + }, + "xemu": { + "description": "xemu Xbox Emulator", + "name": "xemu", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/xemu/xemu-guide/", + "system": "xbox", + "launch": "xemu" + }, + "es-de": { + "description": "ES-DE Emulation Frontend", + "name": "ES-DE", + "url": "https://retrodeck.readthedocs.io/en/latest/wiki_es_de/esde-guide/." +, "launch": "es-de" + } + } } -} + \ No newline at end of file diff --git a/tools/configurator/assets/graphics/rekku2/rekku_base.png b/tools/configurator/assets/graphics/rekku2/rekku_base.png new file mode 100644 index 00000000..84516647 Binary files /dev/null and b/tools/configurator/assets/graphics/rekku2/rekku_base.png differ diff --git a/tools/configurator/assets/graphics/rekku2/rekku_base.png.import b/tools/configurator/assets/graphics/rekku2/rekku_base.png.import new file mode 100644 index 00000000..45620203 --- /dev/null +++ b/tools/configurator/assets/graphics/rekku2/rekku_base.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://l3bredurb11m" +path="res://.godot/imported/rekku_base.png-ba655e0b7ca5167750e3c33bad52b118.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/graphics/rekku2/rekku_base.png" +dest_files=["res://.godot/imported/rekku_base.png-ba655e0b7ca5167750e3c33bad52b118.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/tools/configurator/assets/graphics/rekku2/rekku_eye_1.png b/tools/configurator/assets/graphics/rekku2/rekku_eye_1.png new file mode 100644 index 00000000..f25c0c3b Binary files /dev/null and b/tools/configurator/assets/graphics/rekku2/rekku_eye_1.png differ diff --git a/tools/configurator/assets/graphics/rekku2/rekku_eye_1.png.import b/tools/configurator/assets/graphics/rekku2/rekku_eye_1.png.import new file mode 100644 index 00000000..8ff14492 --- /dev/null +++ b/tools/configurator/assets/graphics/rekku2/rekku_eye_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cvlncuql8igrm" +path="res://.godot/imported/rekku_eye_1.png-bdb05770012bbf8805a308be308f2f11.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/graphics/rekku2/rekku_eye_1.png" +dest_files=["res://.godot/imported/rekku_eye_1.png-bdb05770012bbf8805a308be308f2f11.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/tools/configurator/assets/graphics/rekku2/rekku_eye_2.png b/tools/configurator/assets/graphics/rekku2/rekku_eye_2.png new file mode 100644 index 00000000..8a33ab5b Binary files /dev/null and b/tools/configurator/assets/graphics/rekku2/rekku_eye_2.png differ diff --git a/tools/configurator/assets/graphics/rekku2/rekku_eye_2.png.import b/tools/configurator/assets/graphics/rekku2/rekku_eye_2.png.import new file mode 100644 index 00000000..70f02035 --- /dev/null +++ b/tools/configurator/assets/graphics/rekku2/rekku_eye_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bdrdu4nddkqjn" +path="res://.godot/imported/rekku_eye_2.png-470f058d31522c2d3d622d57668ea739.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/graphics/rekku2/rekku_eye_2.png" +dest_files=["res://.godot/imported/rekku_eye_2.png-470f058d31522c2d3d622d57668ea739.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/tools/configurator/assets/graphics/rekku2/rekku_mouth_a.png b/tools/configurator/assets/graphics/rekku2/rekku_mouth_a.png new file mode 100644 index 00000000..8433aa6f Binary files /dev/null and b/tools/configurator/assets/graphics/rekku2/rekku_mouth_a.png differ diff --git a/tools/configurator/assets/graphics/rekku2/rekku_mouth_a.png.import b/tools/configurator/assets/graphics/rekku2/rekku_mouth_a.png.import new file mode 100644 index 00000000..5132aa9b --- /dev/null +++ b/tools/configurator/assets/graphics/rekku2/rekku_mouth_a.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cb2hwhaq036mu" +path="res://.godot/imported/rekku_mouth_a.png-279dcb9a384b18dcc5f0e9b1fce89965.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/graphics/rekku2/rekku_mouth_a.png" +dest_files=["res://.godot/imported/rekku_mouth_a.png-279dcb9a384b18dcc5f0e9b1fce89965.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/tools/configurator/assets/graphics/rekku2/rekku_mouth_i.png b/tools/configurator/assets/graphics/rekku2/rekku_mouth_i.png new file mode 100644 index 00000000..3e1b8cc3 Binary files /dev/null and b/tools/configurator/assets/graphics/rekku2/rekku_mouth_i.png differ diff --git a/tools/configurator/assets/graphics/rekku2/rekku_mouth_i.png.import b/tools/configurator/assets/graphics/rekku2/rekku_mouth_i.png.import new file mode 100644 index 00000000..45651006 --- /dev/null +++ b/tools/configurator/assets/graphics/rekku2/rekku_mouth_i.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dl2fd66fvn1an" +path="res://.godot/imported/rekku_mouth_i.png-66f20d9dcec19841a364e26d8f38c17a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/graphics/rekku2/rekku_mouth_i.png" +dest_files=["res://.godot/imported/rekku_mouth_i.png-66f20d9dcec19841a364e26d8f38c17a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/tools/configurator/assets/graphics/rekku2/rekku_mouth_m.png b/tools/configurator/assets/graphics/rekku2/rekku_mouth_m.png new file mode 100644 index 00000000..4c8d44dc Binary files /dev/null and b/tools/configurator/assets/graphics/rekku2/rekku_mouth_m.png differ diff --git a/tools/configurator/assets/graphics/rekku2/rekku_mouth_m.png.import b/tools/configurator/assets/graphics/rekku2/rekku_mouth_m.png.import new file mode 100644 index 00000000..b18f656f --- /dev/null +++ b/tools/configurator/assets/graphics/rekku2/rekku_mouth_m.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://3ktnkmuecxea" +path="res://.godot/imported/rekku_mouth_m.png-f85c73bab4824d3102d50150c4e5375e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/graphics/rekku2/rekku_mouth_m.png" +dest_files=["res://.godot/imported/rekku_mouth_m.png-f85c73bab4824d3102d50150c4e5375e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/tools/configurator/assets/graphics/rekku2/rekku_mouth_o.png b/tools/configurator/assets/graphics/rekku2/rekku_mouth_o.png new file mode 100644 index 00000000..8871b416 Binary files /dev/null and b/tools/configurator/assets/graphics/rekku2/rekku_mouth_o.png differ diff --git a/tools/configurator/assets/graphics/rekku2/rekku_mouth_o.png.import b/tools/configurator/assets/graphics/rekku2/rekku_mouth_o.png.import new file mode 100644 index 00000000..96b42cb1 --- /dev/null +++ b/tools/configurator/assets/graphics/rekku2/rekku_mouth_o.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d08ngewjvxkmn" +path="res://.godot/imported/rekku_mouth_o.png-72bff84aecbb9047648fb98563492453.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/graphics/rekku2/rekku_mouth_o.png" +dest_files=["res://.godot/imported/rekku_mouth_o.png-72bff84aecbb9047648fb98563492453.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/tools/configurator/assets/graphics/rekku2/rekku_nomouth.png b/tools/configurator/assets/graphics/rekku2/rekku_nomouth.png new file mode 100644 index 00000000..a5b8224f Binary files /dev/null and b/tools/configurator/assets/graphics/rekku2/rekku_nomouth.png differ diff --git a/tools/configurator/assets/graphics/rekku2/rekku_nomouth.png.import b/tools/configurator/assets/graphics/rekku2/rekku_nomouth.png.import new file mode 100644 index 00000000..5156c7af --- /dev/null +++ b/tools/configurator/assets/graphics/rekku2/rekku_nomouth.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dieva7tuxjrvy" +path="res://.godot/imported/rekku_nomouth.png-6aea5248544dd97243fc5c179e0e2d58.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/graphics/rekku2/rekku_nomouth.png" +dest_files=["res://.godot/imported/rekku_nomouth.png-6aea5248544dd97243fc5c179e0e2d58.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/tools/configurator/assets/icons/pixelitos/128/es-de.png b/tools/configurator/assets/icons/pixelitos/128/es-de.png new file mode 100644 index 00000000..6575bb96 Binary files /dev/null and b/tools/configurator/assets/icons/pixelitos/128/es-de.png differ diff --git a/tools/configurator/assets/icons/pixelitos/128/es-de.png.import b/tools/configurator/assets/icons/pixelitos/128/es-de.png.import new file mode 100644 index 00000000..f49c47ce --- /dev/null +++ b/tools/configurator/assets/icons/pixelitos/128/es-de.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dhf620jyq75t1" +path="res://.godot/imported/es-de.png-7133c76b0fc370d6d2c311241df36cf6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/pixelitos/128/es-de.png" +dest_files=["res://.godot/imported/es-de.png-7133c76b0fc370d6d2c311241df36cf6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/tools/configurator/assets/icons/pixelitos/128/flycast.png b/tools/configurator/assets/icons/pixelitos/128/flycast.png new file mode 100644 index 00000000..a98a8cee Binary files /dev/null and b/tools/configurator/assets/icons/pixelitos/128/flycast.png differ diff --git a/tools/configurator/assets/icons/pixelitos/128/flycast.png.import b/tools/configurator/assets/icons/pixelitos/128/flycast.png.import new file mode 100644 index 00000000..294b5552 --- /dev/null +++ b/tools/configurator/assets/icons/pixelitos/128/flycast.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ctm3f56t7jhiw" +path="res://.godot/imported/flycast.png-454d63296971d85691881883d8c379e3.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/pixelitos/128/flycast.png" +dest_files=["res://.godot/imported/flycast.png-454d63296971d85691881883d8c379e3.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/tools/configurator/assets/icons/pixelitos/128/fuse.png b/tools/configurator/assets/icons/pixelitos/128/fuse.png new file mode 100644 index 00000000..a4cbea7a Binary files /dev/null and b/tools/configurator/assets/icons/pixelitos/128/fuse.png differ diff --git a/tools/configurator/assets/icons/pixelitos/128/fuse.png.import b/tools/configurator/assets/icons/pixelitos/128/fuse.png.import new file mode 100644 index 00000000..eb520d80 --- /dev/null +++ b/tools/configurator/assets/icons/pixelitos/128/fuse.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://t4bq3t2l0rja" +path="res://.godot/imported/fuse.png-798b47a8862532036e29b84ce0746e43.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/pixelitos/128/fuse.png" +dest_files=["res://.godot/imported/fuse.png-798b47a8862532036e29b84ce0746e43.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/tools/configurator/assets/icons/pixelitos/128/lime3ds.png b/tools/configurator/assets/icons/pixelitos/128/lime3ds.png new file mode 100644 index 00000000..c0363111 Binary files /dev/null and b/tools/configurator/assets/icons/pixelitos/128/lime3ds.png differ diff --git a/tools/configurator/assets/icons/pixelitos/128/lime3ds.png.import b/tools/configurator/assets/icons/pixelitos/128/lime3ds.png.import new file mode 100644 index 00000000..3f1489d4 --- /dev/null +++ b/tools/configurator/assets/icons/pixelitos/128/lime3ds.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bjxqyxpxb8h8q" +path="res://.godot/imported/lime3ds.png-46636e55aca4b1efb87cc2bb6ef805bd.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/pixelitos/128/lime3ds.png" +dest_files=["res://.godot/imported/lime3ds.png-46636e55aca4b1efb87cc2bb6ef805bd.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/tools/configurator/assets/icons/pixelitos/128/nestopia.png b/tools/configurator/assets/icons/pixelitos/128/nestopia.png new file mode 100644 index 00000000..0499a7cf Binary files /dev/null and b/tools/configurator/assets/icons/pixelitos/128/nestopia.png differ diff --git a/tools/configurator/assets/icons/pixelitos/128/nestopia.png.import b/tools/configurator/assets/icons/pixelitos/128/nestopia.png.import new file mode 100644 index 00000000..94a30a0b --- /dev/null +++ b/tools/configurator/assets/icons/pixelitos/128/nestopia.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://de3s3tkxffqk0" +path="res://.godot/imported/nestopia.png-e3a5ed0832cb977733e851f186fe9167.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/pixelitos/128/nestopia.png" +dest_files=["res://.godot/imported/nestopia.png-e3a5ed0832cb977733e851f186fe9167.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/tools/configurator/assets/icons/pixelitos/128/portal2.png b/tools/configurator/assets/icons/pixelitos/128/portal2.png new file mode 100644 index 00000000..9990ba37 Binary files /dev/null and b/tools/configurator/assets/icons/pixelitos/128/portal2.png differ diff --git a/tools/configurator/assets/icons/pixelitos/128/portal2.png.import b/tools/configurator/assets/icons/pixelitos/128/portal2.png.import new file mode 100644 index 00000000..1fbd7012 --- /dev/null +++ b/tools/configurator/assets/icons/pixelitos/128/portal2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://f8c6tobon13p" +path="res://.godot/imported/portal2.png-8c359b0df7fa9dc3dad992debc6f16c3.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/pixelitos/128/portal2.png" +dest_files=["res://.godot/imported/portal2.png-8c359b0df7fa9dc3dad992debc6f16c3.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/tools/configurator/assets/icons/pixelitos/128/portal2.png2 b/tools/configurator/assets/icons/pixelitos/128/portal2.png2 new file mode 120000 index 00000000..69558735 --- /dev/null +++ b/tools/configurator/assets/icons/pixelitos/128/portal2.png2 @@ -0,0 +1 @@ +portal2.png \ No newline at end of file diff --git a/tools/configurator/assets/icons/pixelitos/128/snes9x.png b/tools/configurator/assets/icons/pixelitos/128/snes9x.png new file mode 100644 index 00000000..d63bc0e5 Binary files /dev/null and b/tools/configurator/assets/icons/pixelitos/128/snes9x.png differ diff --git a/tools/configurator/assets/icons/pixelitos/128/snes9x.png.import b/tools/configurator/assets/icons/pixelitos/128/snes9x.png.import new file mode 100644 index 00000000..157f1b91 --- /dev/null +++ b/tools/configurator/assets/icons/pixelitos/128/snes9x.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cyqdlugy5lts5" +path="res://.godot/imported/snes9x.png-985444d2225cee74be2bbfe4fd683dbe.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/pixelitos/128/snes9x.png" +dest_files=["res://.godot/imported/snes9x.png-985444d2225cee74be2bbfe4fd683dbe.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/tools/configurator/assets/icons/pixelitos/128/steam_icon_620.png b/tools/configurator/assets/icons/pixelitos/128/steam_icon_620.png new file mode 120000 index 00000000..69558735 --- /dev/null +++ b/tools/configurator/assets/icons/pixelitos/128/steam_icon_620.png @@ -0,0 +1 @@ +portal2.png \ No newline at end of file diff --git a/tools/configurator/assets/icons/pixelitos/128/steam_icon_620.png.import b/tools/configurator/assets/icons/pixelitos/128/steam_icon_620.png.import new file mode 100644 index 00000000..dd872006 --- /dev/null +++ b/tools/configurator/assets/icons/pixelitos/128/steam_icon_620.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ck226cpy48rw" +path="res://.godot/imported/steam_icon_620.png-7a9e73f3c8c9a5c04b15bb9b88f1fab3.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/pixelitos/128/steam_icon_620.png" +dest_files=["res://.godot/imported/steam_icon_620.png-7a9e73f3c8c9a5c04b15bb9b88f1fab3.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/tools/configurator/assets/icons/pixelitos/128/stella.png b/tools/configurator/assets/icons/pixelitos/128/stella.png new file mode 100644 index 00000000..4953f902 Binary files /dev/null and b/tools/configurator/assets/icons/pixelitos/128/stella.png differ diff --git a/tools/configurator/assets/icons/pixelitos/128/stella.png.import b/tools/configurator/assets/icons/pixelitos/128/stella.png.import new file mode 100644 index 00000000..712034f3 --- /dev/null +++ b/tools/configurator/assets/icons/pixelitos/128/stella.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://2fp4cq1l0843" +path="res://.godot/imported/stella.png-e81484435d2c9330faaeb6dd19649c74.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/pixelitos/128/stella.png" +dest_files=["res://.godot/imported/stella.png-e81484435d2c9330faaeb6dd19649c74.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/tools/configurator/assets/icons/pixelitos/128/zsnes.png b/tools/configurator/assets/icons/pixelitos/128/zsnes.png new file mode 100644 index 00000000..824a41e7 Binary files /dev/null and b/tools/configurator/assets/icons/pixelitos/128/zsnes.png differ diff --git a/tools/configurator/assets/icons/pixelitos/128/zsnes.png.import b/tools/configurator/assets/icons/pixelitos/128/zsnes.png.import new file mode 100644 index 00000000..ecc2dc58 --- /dev/null +++ b/tools/configurator/assets/icons/pixelitos/128/zsnes.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bsctvdrl5okkn" +path="res://.godot/imported/zsnes.png-8880495aee27e317a73877d10d9f27e8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/pixelitos/128/zsnes.png" +dest_files=["res://.godot/imported/zsnes.png-8880495aee27e317a73877d10d9f27e8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/tools/configurator/components/bios_check/bios_check.gd b/tools/configurator/components/bios_check/bios_check.gd index d228e4b3..4d62da58 100644 --- a/tools/configurator/components/bios_check/bios_check.gd +++ b/tools/configurator/components/bios_check/bios_check.gd @@ -1,10 +1,8 @@ extends Control - var file := FileAccess var bios_tempfile : String var bios_result: Dictionary -var command: String = "../../tools/retrodeck_function_wrapper.sh" var console: bool = false var BIOS_COLUMNS_BASIC := ["BIOS File Name", "System", "Found", "Hash Match", "Description"] var BIOS_COLUMNS_EXPERT := ["BIOS File Name", "System", "Found", "Hash Match", "Description", "Subdirectory", "Hash"] @@ -13,13 +11,6 @@ var BIOS_COLUMNS_EXPERT := ["BIOS File Name", "System", "Found", "Hash Match", " func _ready(): $".".theme = custom_theme - #Check if XDG_RUNTIME_DIR is set and choose temp file location - if OS.has_environment("XDG_RUNTIME_DIR"): - #bios_tempfile = OS.get_environment("XDG_RUNTIME_DIR") + "/godot_temp/godot_bios_files_checked.tmp" - bios_tempfile = "/var/config/retrodeck/godot/godot_bios_files_checked.tmp" - else: - bios_tempfile = "/var/config/retrodeck/godot/godot_bios_files_checked.tmp" - var table := $Table if bios_type == 0: #Basic BIOS button pressed @@ -35,30 +26,22 @@ func _ready(): table.hide_root = true if bios_type == 0: #Basic BIOS button pressed - #OS.execute("/app/tools/retrodeck_function_wrapper.sh",["check_bios_files", "basic"]) - #var parameters = ["log", "i", "Configurator: " + "check_bios_files"] - # classFunctions.execute_command(command, parameters, false) var parameters = ["check_bios_files","basic"] - #class_functions.execute_command(command, parameters, false) - #threaded - await run_thread_command(command, parameters, console) + await run_thread_command(class_functions.wrapper_command, parameters, console) else: #Assume advanced BIOS button pressed var parameters = ["check_bios_files"] - class_functions.execute_command(command, parameters, false) - await run_thread_command(command, parameters, console) - #OS.execute("/app/tools/retrodeck_function_wrapper.sh",["check_bios_files"]) - print (bios_result["output"]) - if file.file_exists(bios_tempfile): #File to be removed after script is done - var bios_list = bios_result["output"] - var bios_lines = bios_list.split("\n") - for line in bios_lines: - var bios_line = line.split("^") - var table_line: TreeItem = table.create_item(root) - for i in bios_line.size(): - table_line.set_text(i, bios_line[i]) - if table_line.get_index() % 2 == 1: - table_line.set_custom_bg_color(i,Color(0.15, 0.15, 0.15, 1),false) - table_line.set_custom_color(i,Color(1,1,1,1)) + class_functions.execute_command(class_functions.wrapper_command, parameters, false) + await run_thread_command(class_functions.wrapper_command, parameters, console) + var bios_list = bios_result["output"] + var bios_lines = bios_list.split("\n") + for line in bios_lines: + var bios_line = line.split("^") + var table_line: TreeItem = table.create_item(root) + for i in bios_line.size(): + table_line.set_text(i, bios_line[i]) + if table_line.get_index() % 2 == 1: + table_line.set_custom_bg_color(i,Color(0.15, 0.15, 0.15, 1),false) + table_line.set_custom_color(i,Color(1,1,1,1)) func run_thread_command(command: String, parameters: Array, console: bool) -> void: bios_result = await class_functions.run_command_in_thread(command, parameters, console) diff --git a/tools/configurator/main.gd b/tools/configurator/main.gd index 7846b9ab..ba1929b8 100644 --- a/tools/configurator/main.gd +++ b/tools/configurator/main.gd @@ -5,9 +5,6 @@ extends Control var bios_type:int var status_code_label: Label -var wrapper_command: String = "../../tools/retrodeck_function_wrapper.sh" -var log_text = "gdc_" -var log_parameters: Array = ["log", "i", log_text] var log_results: Dictionary var theme_option: OptionButton #signal signal_theme_changed @@ -29,24 +26,24 @@ func _ready(): _connect_signals() _play_main_animations() - %locale_option.selected = class_functions.map_locale_id(OS.get_locale_language()) - app_data = data_handler.app_data + #%locale_option.selected = class_functions.map_locale_id(OS.get_locale_language()) + #app_data = data_handler.app_data #data_handler.add_emulator() #data_handler.modify_emulator_test() - if app_data: - var website_data: Link = app_data.about_links["rd_web"] - print (website_data.name,"-",website_data.url,"-",website_data.description,"-",website_data.url) - #print (app_data.about_links["rd_web"]["name"]) - var core_data: Core = app_data.cores["gambatte_libetro"] - print (core_data.name) - for property: CoreProperty in core_data.properties: - print("Cheevos: ", property.cheevos) - print("Cheevos Hardcore: ", property.cheevos_hardcore) - print("Quick Resume: ", property.quick_resume) - print("Rewind: ", property.rewind) - print("Borders: ", property.borders) - print("Widescreen: ", property.widescreen) - print("ABXY_button:", property.abxy_button) + #if app_data: + #var website_data: Link = app_data.about_links["rd_web"] + #print (website_data.name,"-",website_data.url,"-",website_data.description,"-",website_data.url) + ##print (app_data.about_links["rd_web"]["name"]) + #var core_data: Core = app_data.cores["gambatte_libetro"] + #print (core_data.name) + #for property: CoreProperty in core_data.properties: + #print("Cheevos: ", property.cheevos) + #print("Cheevos Hardcore: ", property.cheevos_hardcore) + #print("Quick Resume: ", property.quick_resume) + #print("Rewind: ", property.rewind) + #print("Borders: ", property.borders) + #print("Widescreen: ", property.widescreen) + #print("ABXY_button:", property.abxy_button) #for key in app_data.emulators.keys(): #var emulator = app_data.emulators[key] ## Display the properties of each emulator @@ -72,8 +69,8 @@ func _ready(): #print("Borders: ", property.borders) #print("Widescreen: ", property.widescreen) #print("ABXY_button:", property.abxy_button) - else: - print ("No emulators") + #else: + #print ("No emulators") var config_file_path = "/var/config/retrodeck/retrodeck.cfg" var json_file_path = "/var/config/retrodeck/retrodeck.json" @@ -100,7 +97,6 @@ func _ready(): n.self_modulate.a = 0.5 #make it half transparent combine_tkeys() - func _input(event): if Input.is_action_pressed("quit1") and Input.is_action_pressed("quit2"): get_tree().quit() @@ -120,6 +116,11 @@ func _input(event): if event.is_action_pressed("quit"): _exit() +func _exit(): + get_tree().root.propagate_notification(NOTIFICATION_WM_CLOSE_REQUEST) + get_tree().quit() + + func _get_nodes() -> void: status_code_label = get_node("%status_code_label") theme_option = get_node("%theme_optionbutton") @@ -138,17 +139,23 @@ func _connect_signals() -> void: %decorations_button.pressed.connect(_hide_show_containers.bind(%decorations_button, %decorations_gridcontainer)) %systems_button.pressed.connect(_hide_show_containers.bind(%systems_button, %systems_gridcontainer)) %save_resume_button.pressed.connect(_hide_show_containers.bind(%decorations_button,%systems_gridcontainer)) - + func _load_log(index: int) -> void: var log_content:String match index: 1: + class_functions.log_parameters[2] = class_functions.log_text + "Loading RetroDeck log" + class_functions.execute_command(class_functions.wrapper_command,class_functions.log_parameters, false) log_content = class_functions.import_text_file(rd_logs +"/retrodeck.log") load_popup("RetroDeck Log", "res://components/logs_view/logs_popup_content.tscn", log_content) 2: + class_functions.log_parameters[2] = class_functions.log_text + "Loading ES-DE log" + class_functions.execute_command(class_functions.wrapper_command,class_functions.log_parameters, false) log_content = class_functions.import_text_file(rd_logs +"/ES-DE/es_log.txt") load_popup("ES-DE Log", "res://components/logs_view/logs_popup_content.tscn",log_content) 3: + class_functions.log_parameters[2] = class_functions.log_text + "Loading RetroArch log" + class_functions.execute_command(class_functions.wrapper_command,class_functions.log_parameters, false) log_content = class_functions.import_text_file(rd_logs +"/retroarch/logs/log.txt") load_popup("Retroarch Log", "res://components/logs_view/logs_popup_content.tscn",log_content) @@ -179,7 +186,6 @@ func _hide_show_buttons(button: Button, buttons_gridcontainer: GridContainer, hi var child = hidden_gridcontainer.get_child(i) if child is Button and child != button: child.visible=false - %decorations_save.visible=true elif button.toggle_mode == true and %borders_gridcontainer.visible == true: print (button.name, "SAVE NOW? TODO") # TODO SHOW ALL AGAIN? buttons_gridcontainer.visible = false @@ -189,28 +195,25 @@ func _hide_show_buttons(button: Button, buttons_gridcontainer: GridContainer, hi if child is Button: child.visible=true child.toggle_mode = false - %decorations_save.visible=false button.toggle_mode = true - "decorations_save": - if %decorations_save.visible == true and %borders_gridcontainer.visible == true: - %borders_gridcontainer.visible = false - for i in range(buttons_gridcontainer.get_child_count()): - var child = buttons_gridcontainer.get_child(i) - if child is Button: - child.visible=true - child.toggle_mode = false - %decorations_save.visible=false func _conf_theme(index: int) -> void: - print (index) match index: 1: + class_functions.log_parameters[2] = class_functions.log_text + "Set theme to index " + str(index) + class_functions.execute_command(class_functions.wrapper_command,class_functions.log_parameters, false) custom_theme = preload("res://res/pixel_ui_theme/RetroDECKTheme.tres") 2: + class_functions.log_parameters[2] = class_functions.log_text + "Set theme to index " + str(index) + class_functions.execute_command(class_functions.wrapper_command,class_functions.log_parameters, false) custom_theme = preload("res://assets/themes/retro_theme.tres") 3: + class_functions.log_parameters[2] = class_functions.log_text + "Set theme to index " + str(index) + class_functions.execute_command(class_functions.wrapper_command,class_functions.log_parameters, false) custom_theme = preload("res://assets/themes/modern_theme.tres") 4: + class_functions.log_parameters[2] = class_functions.log_text + "Set theme to index " + str(index) + class_functions.execute_command(class_functions.wrapper_command,class_functions.log_parameters, false) custom_theme = preload("res://assets/themes/accesible_theme.tres") $".".theme = custom_theme _play_main_animations() @@ -238,28 +241,24 @@ func _on_quickresume_advanced_pressed(): func _on_bios_button_pressed(): _play_main_animations() bios_type = 0 - log_parameters[2] = log_text + "Bios_Check" - log_results = class_functions.execute_command(wrapper_command, log_parameters, false) + class_functions.log_parameters[2] = class_functions.log_text + "Bios_Check" + log_results = class_functions.execute_command(class_functions.wrapper_command, class_functions.log_parameters, false) load_popup("BIOS File Check", "res://components/bios_check/bios_popup_content.tscn","") status_code_label.text = str(log_results["exit_code"]) func _on_bios_button_expert_pressed(): _play_main_animations() bios_type = 1 - log_parameters[2] = log_text + "Advanced_Bios_Check" - log_results = class_functions.execute_command(wrapper_command, log_parameters, false) + class_functions.log_parameters[2] = class_functions.log_text + "Advanced_Bios_Check" + log_results = class_functions.execute_command(class_functions.wrapper_command, class_functions.log_parameters, false) load_popup("BIOS File Check", "res://components/bios_check/bios_popup_content.tscn","") status_code_label.text = str(log_results["exit_code"]) func _on_exit_button_pressed(): _play_main_animations() - log_parameters[2] = log_text + "Exited" - log_results = class_functions.execute_command(wrapper_command, log_parameters, false) - _exit() - -func _exit(): - get_tree().root.propagate_notification(NOTIFICATION_WM_CLOSE_REQUEST) - get_tree().quit() + class_functions.log_parameters[2] = class_functions.log_text + "Exited" + log_results = class_functions.execute_command(class_functions.wrapper_command, class_functions.log_parameters, false) + class_functions._exit() func _on_locale_selected(index): match index: diff --git a/tools/configurator/main.tscn b/tools/configurator/main.tscn index e642abc9..2eaf0cbf 100644 --- a/tools/configurator/main.tscn +++ b/tools/configurator/main.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=77 format=3 uid="uid://61f6m4r1mpan"] +[gd_scene load_steps=91 format=3 uid="uid://61f6m4r1mpan"] [ext_resource type="Texture2D" uid="uid://bv6vh33cnfaw4" path="res://icon.svg" id="1_axfei"] [ext_resource type="Theme" uid="uid://hhc60cllcg47" path="res://assets/themes/default_theme.tres" id="1_if8nh"] @@ -56,28 +56,38 @@ [ext_resource type="Texture2D" uid="uid://cvt2jky3bbjun" path="res://assets/icons/pixelitos/128/drive-removable-media.png" id="18_h2o3e"] [ext_resource type="Texture2D" uid="uid://dyumvh0ixwrbl" path="res://assets/icons/kenney_input-prompts-pixel-16/Tiles/tile_0042.png" id="30_glnve"] [ext_resource type="Texture2D" uid="uid://cn11vcrybtor4" path="res://assets/icons/kenney_input-prompts-pixel-16/Tiles/tile_0047.png" id="31_j5ri1"] -[ext_resource type="Texture2D" uid="uid://cor8ep0fkqm08" path="res://res/Rekku/base.png" id="32_omdu2"] [ext_resource type="Texture2D" uid="uid://cc7ohmfxafe78" path="res://assets/icons/kenney_input-prompts-pixel-16/Tiles/tile_0043.png" id="33_1ghye"] -[ext_resource type="Texture2D" uid="uid://cavtn1rljc5oe" path="res://res/Rekku/eyes-open.png" id="33_loftd"] [ext_resource type="Texture2D" uid="uid://cs8lh31kh7jv1" path="res://assets/icons/kenney_input-prompts-pixel-16/Tiles/tile_0048.png" id="34_fum2b"] -[ext_resource type="Texture2D" uid="uid://cv7nckloqhn5m" path="res://res/Rekku/blink1.png" id="34_liw3o"] -[ext_resource type="Texture2D" uid="uid://by0oj188x350g" path="res://res/Rekku/blink2.png" id="35_dxwop"] [ext_resource type="Texture2D" uid="uid://cfa5mn3dsdvw6" path="res://assets/icons/kenney_input-prompts-pixel-16/Tiles/tile_0729.png" id="36_3qttl"] -[ext_resource type="Texture2D" uid="uid://kx8eypf4ffvu" path="res://res/Rekku/mouth-base.png" id="36_qon8n"] -[ext_resource type="Texture2D" uid="uid://b6gl8sltbak7v" path="res://res/Rekku/mouth-O.png" id="37_2mdp6"] +[ext_resource type="Texture2D" uid="uid://chd6d8tx081hm" path="res://assets/icons/pixelitos/128/org.mamedev.MAME.png" id="36_dj81i"] +[ext_resource type="Script" path="res://scripts/system.gd" id="36_wv31h"] +[ext_resource type="Texture2D" uid="uid://10pyy05xqpr4" path="res://assets/icons/pixelitos/128/ruffle.png" id="37_7hhbn"] +[ext_resource type="Texture2D" uid="uid://fhxlwf7in0ke" path="res://assets/icons/pixelitos/128/net.pcsx2.PCSX2.png" id="38_44je8"] [ext_resource type="Texture2D" uid="uid://dpi351mmxu7x6" path="res://assets/icons/kenney_input-prompts-pixel-16/Tiles/tile_0797.png" id="38_prt7u"] +[ext_resource type="Texture2D" uid="uid://bum0ys5hf70g5" path="res://assets/icons/pixelitos/128/vita3k.png" id="38_vsjf2"] [ext_resource type="Texture2D" uid="uid://ckyvec3wqx3t" path="res://assets/icons/kenney_input-prompts-pixel-16/Tiles/tile_0798.png" id="39_5ft88"] [ext_resource type="Texture2D" uid="uid://n4hywdifr1q4" path="res://assets/icons/kenney_input-prompts-pixel-16/Tiles/tile_0763.png" id="39_m4qgd"] +[ext_resource type="Texture2D" uid="uid://4rxej78gwu6" path="res://assets/icons/pixelitos/128/org.ryujinx.Ryujinx.png" id="40_7fdvq"] [ext_resource type="Texture2D" uid="uid://bwcc0mjxxm0w1" path="res://assets/icons/kenney_input-prompts-pixel-16/Tiles/tile_0764.png" id="40_pnuor"] +[ext_resource type="Texture2D" uid="uid://dr637stsnsg01" path="res://assets/icons/pixelitos/128/primehack.png" id="41_55e56"] +[ext_resource type="Texture2D" uid="uid://lopxvipv6asb" path="res://assets/icons/pixelitos/128/info.cemu.Cemu.png" id="42_n3n7j"] +[ext_resource type="Texture2D" uid="uid://bxng1bakpvyyr" path="res://assets/icons/pixelitos/128/app.xemu.xemu.png" id="43_ifi6j"] +[ext_resource type="Texture2D" uid="uid://dhf620jyq75t1" path="res://assets/icons/pixelitos/128/es-de.png" id="44_7lpj5"] +[ext_resource type="Texture2D" uid="uid://b6vndtbu4qduo" path="res://assets/icons/pixelitos/128/preferences-desktop-launch-feedback.png" id="45_qxd26"] +[ext_resource type="Texture2D" uid="uid://3sw7gtoiuab3" path="res://assets/icons/pixelitos/128/help-browser.png" id="46_feagl"] +[ext_resource type="Texture2D" uid="uid://l3bredurb11m" path="res://assets/graphics/rekku2/rekku_base.png" id="57_1n3u5"] +[ext_resource type="Texture2D" uid="uid://cvlncuql8igrm" path="res://assets/graphics/rekku2/rekku_eye_1.png" id="59_7lcu5"] +[ext_resource type="Texture2D" uid="uid://bdrdu4nddkqjn" path="res://assets/graphics/rekku2/rekku_eye_2.png" id="60_mbhg6"] +[ext_resource type="Texture2D" uid="uid://cb2hwhaq036mu" path="res://assets/graphics/rekku2/rekku_mouth_a.png" id="61_5vyvy"] +[ext_resource type="Texture2D" uid="uid://dl2fd66fvn1an" path="res://assets/graphics/rekku2/rekku_mouth_i.png" id="62_lji1k"] +[ext_resource type="Texture2D" uid="uid://3ktnkmuecxea" path="res://assets/graphics/rekku2/rekku_mouth_m.png" id="63_52v81"] +[ext_resource type="Texture2D" uid="uid://d08ngewjvxkmn" path="res://assets/graphics/rekku2/rekku_mouth_o.png" id="64_s8u0e"] +[ext_resource type="Texture2D" uid="uid://dieva7tuxjrvy" path="res://assets/graphics/rekku2/rekku_nomouth.png" id="65_kk8ba"] [ext_resource type="AudioStream" uid="uid://dhejvg02t5o35" path="res://assets/sounds/30375__sjonas88__smooth-game-like-sounds/538549__sjonas88__select-2.wav" id="71_ghxvk"] [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_omewi"] bg_color = Color(0.712505, 0, 0.175592, 1) -[sub_resource type="GDScript" id="GDScript_203iw"] -script/source = "extends MarginContainer -" - [sub_resource type="SpriteFrames" id="SpriteFrames_lhf2y"] animations = [{ "frames": [{ @@ -101,17 +111,23 @@ animations = [{ "speed": 12.0 }] +[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_rf0rc"] +texture = ExtResource("4_2tuu4") +texture_margin_left = 6.0 +texture_margin_top = 6.0 +texture_margin_right = 6.0 +texture_margin_bottom = 6.0 +region_rect = Rect2(0, 8, 16, 16) +modulate_color = Color(0.65098, 0.403922, 0.819608, 1) + [sub_resource type="SpriteFrames" id="SpriteFrames_k7pd1"] animations = [{ "frames": [{ -"duration": 40.0, -"texture": ExtResource("33_loftd") +"duration": 10.0, +"texture": ExtResource("59_7lcu5") }, { -"duration": 0.15, -"texture": ExtResource("34_liw3o") -}, { -"duration": 0.15, -"texture": ExtResource("35_dxwop") +"duration": 1.0, +"texture": ExtResource("60_mbhg6") }], "loop": true, "name": &"blink", @@ -121,40 +137,27 @@ animations = [{ [sub_resource type="SpriteFrames" id="SpriteFrames_l20mt"] animations = [{ "frames": [{ -"duration": 0.5, -"texture": ExtResource("36_qon8n") +"duration": 1.0, +"texture": ExtResource("63_52v81") }, { "duration": 1.0, -"texture": ExtResource("37_2mdp6") +"texture": ExtResource("62_lji1k") }, { "duration": 1.0, -"texture": ExtResource("36_qon8n") +"texture": ExtResource("61_5vyvy") }, { "duration": 1.0, -"texture": ExtResource("36_qon8n") +"texture": ExtResource("64_s8u0e") }, { "duration": 1.0, -"texture": ExtResource("37_2mdp6") -}, { -"duration": 1.0, -"texture": ExtResource("37_2mdp6") -}, { -"duration": 1.0, -"texture": ExtResource("36_qon8n") +"texture": ExtResource("65_kk8ba") }], "loop": true, "name": &"speech", "speed": 5.0 }] -[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_rf0rc"] -texture = ExtResource("4_2tuu4") -texture_margin_left = 6.0 -texture_margin_top = 6.0 -texture_margin_right = 6.0 -texture_margin_bottom = 6.0 -region_rect = Rect2(0, 8, 16, 16) -modulate_color = Color(0.65098, 0.403922, 0.819608, 1) +[sub_resource type="GDScript" id="GDScript_j7wyh"] [node name="Control" type="Control"] layout_mode = 3 @@ -192,69 +195,70 @@ size_flags_horizontal = 3 unique_name_in_owner = true layout_mode = 2 tab_alignment = 1 -current_tab = 0 +current_tab = 1 script = ExtResource("3_id6l4") -[node name="Gobals" type="MarginContainer" parent="Background/SplitContainer/MarginContainer/TabContainer"] +[node name="GLOBALS" type="MarginContainer" parent="Background/SplitContainer/MarginContainer/TabContainer"] unique_name_in_owner = true +visible = false layout_mode = 2 metadata/_tab_index = 0 -[node name="ScrollContainer" type="ScrollContainer" parent="Background/SplitContainer/MarginContainer/TabContainer/Gobals"] +[node name="ScrollContainer" type="ScrollContainer" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS"] layout_mode = 2 follow_focus = true -[node name="VBoxContainer" type="VBoxContainer" parent="Background/SplitContainer/MarginContainer/TabContainer/Gobals/ScrollContainer"] +[node name="VBoxContainer" type="VBoxContainer" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer"] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 -[node name="GridContainer" type="GridContainer" parent="Background/SplitContainer/MarginContainer/TabContainer/Gobals/ScrollContainer/VBoxContainer"] +[node name="GridContainer" type="GridContainer" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer"] layout_mode = 2 columns = 3 -[node name="Widescreen6" type="CheckButton" parent="Background/SplitContainer/MarginContainer/TabContainer/Gobals/ScrollContainer/VBoxContainer/GridContainer"] +[node name="Widescreen6" type="CheckButton" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/GridContainer"] layout_mode = 2 text = "BUTTON SWAP " icon = ExtResource("4_q6hd2") -[node name="Widescreen2" type="CheckButton" parent="Background/SplitContainer/MarginContainer/TabContainer/Gobals/ScrollContainer/VBoxContainer/GridContainer"] +[node name="Widescreen2" type="CheckButton" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/GridContainer"] layout_mode = 2 text = "MODS" icon = ExtResource("4_q6hd2") -[node name="Widescreen5" type="CheckButton" parent="Background/SplitContainer/MarginContainer/TabContainer/Gobals/ScrollContainer/VBoxContainer/GridContainer"] +[node name="Widescreen5" type="CheckButton" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/GridContainer"] layout_mode = 2 text = "QUICK RESUME" icon = ExtResource("4_q6hd2") -[node name="decorations_button" type="CheckButton" parent="Background/SplitContainer/MarginContainer/TabContainer/Gobals/ScrollContainer/VBoxContainer/GridContainer"] +[node name="decorations_button" type="CheckButton" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/GridContainer"] layout_mode = 2 text = "BORDERS" icon = ExtResource("4_jldgc") -[node name="Widescreen" type="CheckButton" parent="Background/SplitContainer/MarginContainer/TabContainer/Gobals/ScrollContainer/VBoxContainer/GridContainer"] +[node name="Widescreen" type="CheckButton" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/GridContainer"] layout_mode = 2 text = "SHADERS" icon = ExtResource("4_q6hd2") -[node name="Widescreen3" type="CheckButton" parent="Background/SplitContainer/MarginContainer/TabContainer/Gobals/ScrollContainer/VBoxContainer/GridContainer"] +[node name="Widescreen3" type="CheckButton" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/GridContainer"] layout_mode = 2 text = "QUICK REWIND" icon = ExtResource("4_q6hd2") -[node name="Widescreen4" type="CheckButton" parent="Background/SplitContainer/MarginContainer/TabContainer/Gobals/ScrollContainer/VBoxContainer/GridContainer"] +[node name="Widescreen4" type="CheckButton" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/GridContainer"] layout_mode = 2 text = "TATE MODE" icon = ExtResource("4_q6hd2") -[node name="decorations_gridcontainer" type="GridContainer" parent="Background/SplitContainer/MarginContainer/TabContainer/Gobals/ScrollContainer/VBoxContainer"] +[node name="decorations_gridcontainer" type="GridContainer" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer"] visible = false layout_mode = 2 columns = 5 -[node name="wide_screen" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/Gobals/ScrollContainer/VBoxContainer/decorations_gridcontainer"] +[node name="wide_screen" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/decorations_gridcontainer"] custom_minimum_size = Vector2(200, 200) layout_mode = 2 size_flags_horizontal = 4 @@ -266,7 +270,7 @@ icon_alignment = 1 vertical_icon_alignment = 0 expand_icon = true -[node name="shaders" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/Gobals/ScrollContainer/VBoxContainer/decorations_gridcontainer"] +[node name="shaders" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/decorations_gridcontainer"] custom_minimum_size = Vector2(200, 200) layout_mode = 2 size_flags_horizontal = 4 @@ -278,7 +282,7 @@ icon_alignment = 1 vertical_icon_alignment = 0 expand_icon = true -[node name="mods" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/Gobals/ScrollContainer/VBoxContainer/decorations_gridcontainer"] +[node name="mods" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/decorations_gridcontainer"] custom_minimum_size = Vector2(200, 200) layout_mode = 2 size_flags_horizontal = 4 @@ -290,7 +294,7 @@ icon_alignment = 1 vertical_icon_alignment = 0 expand_icon = true -[node name="tate_mode" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/Gobals/ScrollContainer/VBoxContainer/decorations_gridcontainer"] +[node name="tate_mode" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/decorations_gridcontainer"] custom_minimum_size = Vector2(200, 200) layout_mode = 2 size_flags_horizontal = 4 @@ -302,7 +306,7 @@ icon_alignment = 1 vertical_icon_alignment = 0 expand_icon = true -[node name="borders_button" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/Gobals/ScrollContainer/VBoxContainer/decorations_gridcontainer"] +[node name="borders_button" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/decorations_gridcontainer"] custom_minimum_size = Vector2(200, 200) layout_mode = 2 size_flags_horizontal = 4 @@ -314,7 +318,7 @@ icon_alignment = 1 vertical_icon_alignment = 0 expand_icon = true -[node name="hotkey_sound" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/Gobals/ScrollContainer/VBoxContainer/decorations_gridcontainer"] +[node name="hotkey_sound" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/decorations_gridcontainer"] custom_minimum_size = Vector2(200, 200) layout_mode = 2 size_flags_horizontal = 4 @@ -327,7 +331,7 @@ icon_alignment = 1 vertical_icon_alignment = 0 expand_icon = true -[node name="button_layout" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/Gobals/ScrollContainer/VBoxContainer/decorations_gridcontainer"] +[node name="button_layout" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/decorations_gridcontainer"] custom_minimum_size = Vector2(200, 200) layout_mode = 2 size_flags_horizontal = 4 @@ -340,7 +344,7 @@ icon_alignment = 1 vertical_icon_alignment = 0 expand_icon = true -[node name="quick_resume" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/Gobals/ScrollContainer/VBoxContainer/decorations_gridcontainer"] +[node name="quick_resume" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/decorations_gridcontainer"] custom_minimum_size = Vector2(200, 200) layout_mode = 2 size_flags_horizontal = 4 @@ -353,7 +357,7 @@ vertical_icon_alignment = 0 expand_icon = true metadata/description = "This is a test description set to this element" -[node name="rewind" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/Gobals/ScrollContainer/VBoxContainer/decorations_gridcontainer"] +[node name="rewind" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/decorations_gridcontainer"] custom_minimum_size = Vector2(200, 200) layout_mode = 2 size_flags_horizontal = 4 @@ -366,7 +370,7 @@ vertical_icon_alignment = 0 expand_icon = true metadata/description = "This is another, very long and convoluted, description, that I put too much commas in to make in LONGER and more SOPHISTICATED. And I did it twice!!!This is another, very long and convoluted, description, that I put too much commas in to make in LONGER and more SOPHISTICATED." -[node name="quit_confirm" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/Gobals/ScrollContainer/VBoxContainer/decorations_gridcontainer"] +[node name="quit_confirm" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/decorations_gridcontainer"] custom_minimum_size = Vector2(200, 200) layout_mode = 2 size_flags_horizontal = 0 @@ -379,7 +383,7 @@ icon_alignment = 1 vertical_icon_alignment = 0 expand_icon = true -[node name="cheats" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/Gobals/ScrollContainer/VBoxContainer/decorations_gridcontainer"] +[node name="cheats" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/decorations_gridcontainer"] custom_minimum_size = Vector2(200, 200) layout_mode = 2 size_flags_horizontal = 4 @@ -392,7 +396,7 @@ icon_alignment = 1 vertical_icon_alignment = 0 expand_icon = true -[node name="decorations_save" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/Gobals/ScrollContainer/VBoxContainer/decorations_gridcontainer"] +[node name="decorations_save" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/decorations_gridcontainer"] visible = false custom_minimum_size = Vector2(125, 125) layout_mode = 2 @@ -405,13 +409,13 @@ icon_alignment = 1 vertical_icon_alignment = 0 expand_icon = true -[node name="borders_gridcontainer" type="GridContainer" parent="Background/SplitContainer/MarginContainer/TabContainer/Gobals/ScrollContainer/VBoxContainer"] +[node name="borders_gridcontainer" type="GridContainer" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer"] visible = false layout_mode = 2 theme_override_constants/h_separation = 30 columns = 6 -[node name="CheckBox5" type="CheckBox" parent="Background/SplitContainer/MarginContainer/TabContainer/Gobals/ScrollContainer/VBoxContainer/borders_gridcontainer"] +[node name="CheckBox5" type="CheckBox" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/borders_gridcontainer"] custom_minimum_size = Vector2(175, 175) layout_mode = 2 size_flags_horizontal = 0 @@ -419,7 +423,7 @@ size_flags_vertical = 0 icon = ExtResource("5_ja8to") expand_icon = true -[node name="CheckBox3" type="CheckBox" parent="Background/SplitContainer/MarginContainer/TabContainer/Gobals/ScrollContainer/VBoxContainer/borders_gridcontainer"] +[node name="CheckBox3" type="CheckBox" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/borders_gridcontainer"] custom_minimum_size = Vector2(175, 175) layout_mode = 2 size_flags_horizontal = 0 @@ -427,7 +431,7 @@ size_flags_vertical = 0 icon = ExtResource("6_mvrie") expand_icon = true -[node name="CheckBox4" type="CheckBox" parent="Background/SplitContainer/MarginContainer/TabContainer/Gobals/ScrollContainer/VBoxContainer/borders_gridcontainer"] +[node name="CheckBox4" type="CheckBox" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/borders_gridcontainer"] custom_minimum_size = Vector2(175, 175) layout_mode = 2 size_flags_horizontal = 0 @@ -435,7 +439,7 @@ size_flags_vertical = 0 icon = ExtResource("7_01lqn") expand_icon = true -[node name="CheckBox6" type="CheckBox" parent="Background/SplitContainer/MarginContainer/TabContainer/Gobals/ScrollContainer/VBoxContainer/borders_gridcontainer"] +[node name="CheckBox6" type="CheckBox" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/borders_gridcontainer"] custom_minimum_size = Vector2(175, 175) layout_mode = 2 size_flags_horizontal = 0 @@ -443,7 +447,7 @@ size_flags_vertical = 0 icon = ExtResource("7_b8xj2") expand_icon = true -[node name="CheckBox" type="CheckBox" parent="Background/SplitContainer/MarginContainer/TabContainer/Gobals/ScrollContainer/VBoxContainer/borders_gridcontainer"] +[node name="CheckBox" type="CheckBox" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/borders_gridcontainer"] custom_minimum_size = Vector2(175, 175) layout_mode = 2 size_flags_horizontal = 0 @@ -451,7 +455,7 @@ size_flags_vertical = 0 icon = ExtResource("8_rvph4") expand_icon = true -[node name="CheckBox7" type="CheckBox" parent="Background/SplitContainer/MarginContainer/TabContainer/Gobals/ScrollContainer/VBoxContainer/borders_gridcontainer"] +[node name="CheckBox7" type="CheckBox" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/borders_gridcontainer"] custom_minimum_size = Vector2(175, 175) layout_mode = 2 size_flags_horizontal = 0 @@ -459,7 +463,7 @@ size_flags_vertical = 0 icon = ExtResource("9_s3srh") expand_icon = true -[node name="CheckBox8" type="CheckBox" parent="Background/SplitContainer/MarginContainer/TabContainer/Gobals/ScrollContainer/VBoxContainer/borders_gridcontainer"] +[node name="CheckBox8" type="CheckBox" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/borders_gridcontainer"] custom_minimum_size = Vector2(175, 175) layout_mode = 2 size_flags_horizontal = 0 @@ -467,7 +471,7 @@ size_flags_vertical = 0 icon = ExtResource("10_2jlmn") expand_icon = true -[node name="CheckBox9" type="CheckBox" parent="Background/SplitContainer/MarginContainer/TabContainer/Gobals/ScrollContainer/VBoxContainer/borders_gridcontainer"] +[node name="CheckBox9" type="CheckBox" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/borders_gridcontainer"] custom_minimum_size = Vector2(175, 175) layout_mode = 2 size_flags_horizontal = 0 @@ -475,7 +479,7 @@ size_flags_vertical = 0 icon = ExtResource("5_4d7s7") expand_icon = true -[node name="CheckBox10" type="CheckBox" parent="Background/SplitContainer/MarginContainer/TabContainer/Gobals/ScrollContainer/VBoxContainer/borders_gridcontainer"] +[node name="CheckBox10" type="CheckBox" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/borders_gridcontainer"] custom_minimum_size = Vector2(175, 175) layout_mode = 2 size_flags_horizontal = 0 @@ -483,7 +487,7 @@ size_flags_vertical = 0 icon = ExtResource("12_pp08o") expand_icon = true -[node name="systems_gridcontainer" type="GridContainer" parent="Background/SplitContainer/MarginContainer/TabContainer/Gobals/ScrollContainer/VBoxContainer"] +[node name="systems_gridcontainer" type="GridContainer" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer"] visible = false layout_mode = 2 size_flags_vertical = 3 @@ -491,7 +495,7 @@ theme_override_constants/h_separation = 10 theme_override_constants/v_separation = 10 columns = 6 -[node name="Button3" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/Gobals/ScrollContainer/VBoxContainer/systems_gridcontainer"] +[node name="Button3" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/systems_gridcontainer"] layout_mode = 2 tooltip_text = "RetroARCH" theme_override_styles/focus = ExtResource("5_rjtkn") @@ -500,7 +504,7 @@ icon = ExtResource("4_xcuib") icon_alignment = 1 vertical_icon_alignment = 0 -[node name="Button8" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/Gobals/ScrollContainer/VBoxContainer/systems_gridcontainer"] +[node name="Button8" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/systems_gridcontainer"] layout_mode = 2 theme_override_styles/focus = ExtResource("5_rjtkn") text = "Dolphin" @@ -508,7 +512,7 @@ icon = ExtResource("11_61sak") icon_alignment = 1 vertical_icon_alignment = 0 -[node name="Button7" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/Gobals/ScrollContainer/VBoxContainer/systems_gridcontainer"] +[node name="Button7" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/systems_gridcontainer"] layout_mode = 2 tooltip_text = "CITRA" text = "RPCS3" @@ -516,7 +520,7 @@ icon = ExtResource("8_ec4gt") icon_alignment = 1 vertical_icon_alignment = 0 -[node name="Button5" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/Gobals/ScrollContainer/VBoxContainer/systems_gridcontainer"] +[node name="Button5" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/systems_gridcontainer"] layout_mode = 2 tooltip_text = "PSPSSPP" theme_override_styles/focus = ExtResource("5_rjtkn") @@ -525,7 +529,7 @@ icon = ExtResource("8_akxf7") icon_alignment = 1 vertical_icon_alignment = 0 -[node name="Button" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/Gobals/ScrollContainer/VBoxContainer/systems_gridcontainer"] +[node name="Button" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/systems_gridcontainer"] layout_mode = 2 tooltip_text = "Duckstation" theme_override_styles/focus = ExtResource("5_rjtkn") @@ -534,7 +538,7 @@ icon = ExtResource("6_winpq") icon_alignment = 1 vertical_icon_alignment = 0 -[node name="Button2" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/Gobals/ScrollContainer/VBoxContainer/systems_gridcontainer"] +[node name="Button2" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/systems_gridcontainer"] layout_mode = 2 tooltip_text = "Melon DS" theme_override_styles/focus = ExtResource("5_rjtkn") @@ -543,7 +547,7 @@ icon = ExtResource("7_4otos") icon_alignment = 1 vertical_icon_alignment = 0 -[node name="Button9" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/Gobals/ScrollContainer/VBoxContainer/systems_gridcontainer"] +[node name="Button9" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/GLOBALS/ScrollContainer/VBoxContainer/systems_gridcontainer"] visible = false layout_mode = 2 tooltip_text = "CITRA" @@ -553,12 +557,153 @@ icon = ExtResource("10_wbaif") icon_alignment = 1 vertical_icon_alignment = 0 +[node name="SYSTEM" type="MarginContainer" parent="Background/SplitContainer/MarginContainer/TabContainer"] +layout_mode = 2 +script = ExtResource("36_wv31h") +metadata/_tab_index = 1 + +[node name="ScrollContainer" type="ScrollContainer" parent="Background/SplitContainer/MarginContainer/TabContainer/SYSTEM"] +layout_mode = 2 +follow_focus = true + +[node name="VBoxContainer" type="VBoxContainer" parent="Background/SplitContainer/MarginContainer/TabContainer/SYSTEM/ScrollContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="controls_container" type="VBoxContainer" parent="Background/SplitContainer/MarginContainer/TabContainer/SYSTEM/ScrollContainer/VBoxContainer"] +layout_mode = 2 + +[node name="controls_label" type="Label" parent="Background/SplitContainer/MarginContainer/TabContainer/SYSTEM/ScrollContainer/VBoxContainer/controls_container"] +layout_mode = 2 +text = "SYSTEMS & EMULATORS" + +[node name="controls_separator" type="HSeparator" parent="Background/SplitContainer/MarginContainer/TabContainer/SYSTEM/ScrollContainer/VBoxContainer/controls_container"] +layout_mode = 2 + +[node name="system_gridcontainer" type="GridContainer" parent="Background/SplitContainer/MarginContainer/TabContainer/SYSTEM/ScrollContainer/VBoxContainer/controls_container"] +unique_name_in_owner = true +layout_mode = 2 +columns = 4 + +[node name="retroarch_button" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/SYSTEM/ScrollContainer/VBoxContainer/controls_container/system_gridcontainer"] +unique_name_in_owner = true +layout_mode = 2 +text = "RETROARCH" +icon = ExtResource("4_xcuib") + +[node name="mame_button" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/SYSTEM/ScrollContainer/VBoxContainer/controls_container/system_gridcontainer"] +unique_name_in_owner = true +layout_mode = 2 +text = "MAME" +icon = ExtResource("36_dj81i") + +[node name="ruffle_button" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/SYSTEM/ScrollContainer/VBoxContainer/controls_container/system_gridcontainer"] +unique_name_in_owner = true +layout_mode = 2 +text = "RUFFLE" +icon = ExtResource("37_7hhbn") + +[node name="melonds_button" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/SYSTEM/ScrollContainer/VBoxContainer/controls_container/system_gridcontainer"] +unique_name_in_owner = true +layout_mode = 2 +text = "MELONDS" +icon = ExtResource("7_4otos") + +[node name="pcsx2_button" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/SYSTEM/ScrollContainer/VBoxContainer/controls_container/system_gridcontainer"] +unique_name_in_owner = true +layout_mode = 2 +text = "PCSX2" +icon = ExtResource("38_44je8") + +[node name="duckstation_button" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/SYSTEM/ScrollContainer/VBoxContainer/controls_container/system_gridcontainer"] +unique_name_in_owner = true +layout_mode = 2 +text = "DUCKSTATION" +icon = ExtResource("6_winpq") + +[node name="ppsspp_button" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/SYSTEM/ScrollContainer/VBoxContainer/controls_container/system_gridcontainer"] +unique_name_in_owner = true +layout_mode = 2 +text = "PPSSPP" +icon = ExtResource("8_akxf7") + +[node name="vita3k_button" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/SYSTEM/ScrollContainer/VBoxContainer/controls_container/system_gridcontainer"] +unique_name_in_owner = true +layout_mode = 2 +text = "VITA3K" +icon = ExtResource("38_vsjf2") + +[node name="rpcs3_button" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/SYSTEM/ScrollContainer/VBoxContainer/controls_container/system_gridcontainer"] +unique_name_in_owner = true +layout_mode = 2 +text = "RPCS3" +icon = ExtResource("8_ec4gt") + +[node name="ryujinx_button" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/SYSTEM/ScrollContainer/VBoxContainer/controls_container/system_gridcontainer"] +unique_name_in_owner = true +layout_mode = 2 +text = "RYUJINX" +icon = ExtResource("40_7fdvq") + +[node name="dolphin_button" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/SYSTEM/ScrollContainer/VBoxContainer/controls_container/system_gridcontainer"] +unique_name_in_owner = true +layout_mode = 2 +text = "DOLPHIN" +icon = ExtResource("11_61sak") + +[node name="primehack_button" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/SYSTEM/ScrollContainer/VBoxContainer/controls_container/system_gridcontainer"] +unique_name_in_owner = true +layout_mode = 2 +text = "PRIMEHACK" +icon = ExtResource("41_55e56") + +[node name="cemu_button" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/SYSTEM/ScrollContainer/VBoxContainer/controls_container/system_gridcontainer"] +unique_name_in_owner = true +layout_mode = 2 +text = "CEMU" +icon = ExtResource("42_n3n7j") + +[node name="xemu_button" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/SYSTEM/ScrollContainer/VBoxContainer/controls_container/system_gridcontainer"] +unique_name_in_owner = true +layout_mode = 2 +text = "XEMU" +icon = ExtResource("43_ifi6j") + +[node name="esde_button" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/SYSTEM/ScrollContainer/VBoxContainer/controls_container/system_gridcontainer"] +unique_name_in_owner = true +layout_mode = 2 +text = "ES-DE" +icon = ExtResource("44_7lpj5") + +[node name="action_gridcontainer" type="GridContainer" parent="Background/SplitContainer/MarginContainer/TabContainer/SYSTEM/ScrollContainer/VBoxContainer/controls_container"] +unique_name_in_owner = true +visible = false +layout_mode = 2 +columns = 3 + +[node name="help_button" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/SYSTEM/ScrollContainer/VBoxContainer/controls_container/action_gridcontainer"] +unique_name_in_owner = true +layout_mode = 2 +text = "Help" +icon = ExtResource("46_feagl") + +[node name="launch_button" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/SYSTEM/ScrollContainer/VBoxContainer/controls_container/action_gridcontainer"] +unique_name_in_owner = true +layout_mode = 2 +text = "LAUNCH" +icon = ExtResource("45_qxd26") + +[node name="reset_button" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/SYSTEM/ScrollContainer/VBoxContainer/controls_container/action_gridcontainer"] +layout_mode = 2 +text = "RESET" +icon = ExtResource("12_3jrmi") + [node name="WIP" type="MarginContainer" parent="Background/SplitContainer/MarginContainer/TabContainer"] unique_name_in_owner = true visible = false layout_mode = 2 -script = SubResource("GDScript_203iw") -metadata/_tab_index = 1 +metadata/_tab_index = 2 [node name="ScrollContainer" type="ScrollContainer" parent="Background/SplitContainer/MarginContainer/TabContainer/WIP"] layout_mode = 2 @@ -577,11 +722,11 @@ icon = ExtResource("4_q6hd2") [node name="decorations_gridcontainer" type="GridContainer" parent="Background/SplitContainer/MarginContainer/TabContainer/WIP/ScrollContainer/VBoxContainer"] unique_name_in_owner = true -visible = false layout_mode = 2 columns = 5 [node name="wide_screen" type="Button" parent="Background/SplitContainer/MarginContainer/TabContainer/WIP/ScrollContainer/VBoxContainer/decorations_gridcontainer"] +visible = false custom_minimum_size = Vector2(200, 200) layout_mode = 2 size_flags_horizontal = 4 @@ -900,30 +1045,6 @@ layout_mode = 2 text = "FUNCTIONS - Save states, etc" icon = ExtResource("18_h2o3e") -[node name="TK_SYSTEM" type="MarginContainer" parent="Background/SplitContainer/MarginContainer/TabContainer"] -visible = false -layout_mode = 2 -metadata/_tab_index = 2 - -[node name="ScrollContainer" type="ScrollContainer" parent="Background/SplitContainer/MarginContainer/TabContainer/TK_SYSTEM"] -layout_mode = 2 -follow_focus = true - -[node name="VBoxContainer" type="VBoxContainer" parent="Background/SplitContainer/MarginContainer/TabContainer/TK_SYSTEM/ScrollContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 - -[node name="controls_container" type="VBoxContainer" parent="Background/SplitContainer/MarginContainer/TabContainer/TK_SYSTEM/ScrollContainer/VBoxContainer"] -layout_mode = 2 - -[node name="controls_label" type="Label" parent="Background/SplitContainer/MarginContainer/TabContainer/TK_SYSTEM/ScrollContainer/VBoxContainer/controls_container"] -layout_mode = 2 -text = "TK_SYSTEM" - -[node name="controls_separator" type="HSeparator" parent="Background/SplitContainer/MarginContainer/TabContainer/TK_SYSTEM/ScrollContainer/VBoxContainer/controls_container"] -layout_mode = 2 - [node name="TK_TOOLS" type="MarginContainer" parent="Background/SplitContainer/MarginContainer/TabContainer"] visible = false layout_mode = 2 @@ -1452,22 +1573,6 @@ mouse_filter = 1 mouse_default_cursor_shape = 8 script = ExtResource("4_nqqx3") -[node name="rekku_sprite" type="Sprite2D" parent="Background/SplitContainer/side_logo/rekku"] -position = Vector2(530.5, -989) -scale = Vector2(0.264648, 0.302734) -texture = ExtResource("32_omdu2") - -[node name="blink_anim" type="AnimatedSprite2D" parent="Background/SplitContainer/side_logo/rekku/rekku_sprite"] -sprite_frames = SubResource("SpriteFrames_k7pd1") -animation = &"blink" -autoplay = "blink" -frame_progress = 0.188668 - -[node name="speech_anim" type="AnimatedSprite2D" parent="Background/SplitContainer/side_logo/rekku/rekku_sprite"] -sprite_frames = SubResource("SpriteFrames_l20mt") -animation = &"speech" -autoplay = "speech" - [node name="speach_bubble" type="Panel" parent="Background/SplitContainer/side_logo/rekku"] layout_mode = 1 anchors_preset = 7 @@ -1475,25 +1580,25 @@ anchor_left = 0.5 anchor_top = 1.0 anchor_right = 0.5 anchor_bottom = 1.0 -offset_left = 395.0 -offset_top = -830.0 +offset_left = 365.0 +offset_top = -783.0 offset_right = 673.0 offset_bottom = -402.0 grow_horizontal = 2 grow_vertical = 0 theme_override_styles/panel = SubResource("StyleBoxTexture_rf0rc") -[node name="helper_text" type="RichTextLabel" parent="Background/SplitContainer/side_logo/rekku"] +[node name="helper_text" type="RichTextLabel" parent="Background/SplitContainer/side_logo/rekku/speach_bubble"] layout_mode = 1 anchors_preset = 8 anchor_left = 0.5 anchor_top = 0.5 anchor_right = 0.5 anchor_bottom = 0.5 -offset_left = 414.0 -offset_top = -815.0 -offset_right = 668.0 -offset_bottom = -420.0 +offset_left = -132.0 +offset_top = -177.5 +offset_right = 149.0 +offset_bottom = 172.5 grow_horizontal = 2 grow_vertical = 2 text = "Rekku: @@ -1504,6 +1609,24 @@ fit_content = true scroll_following = true script = ExtResource("5_cprkf") +[node name="rekku_sprite" type="Sprite2D" parent="Background/SplitContainer/side_logo/rekku"] +position = Vector2(544, -898) +scale = Vector2(0.5, 0.5) +texture = ExtResource("57_1n3u5") + +[node name="blink_anim" type="AnimatedSprite2D" parent="Background/SplitContainer/side_logo/rekku/rekku_sprite"] +position = Vector2(-72, -252) +sprite_frames = SubResource("SpriteFrames_k7pd1") +animation = &"blink" +autoplay = "blink" +frame_progress = 0.188668 + +[node name="speech_anim" type="AnimatedSprite2D" parent="Background/SplitContainer/side_logo/rekku/rekku_sprite"] +position = Vector2(-76, -198) +sprite_frames = SubResource("SpriteFrames_l20mt") +animation = &"speech" +autoplay = "speech" + [node name="TextureRect" type="TextureRect" parent="Background/SplitContainer/side_logo"] visible = false layout_mode = 0 @@ -1523,7 +1646,7 @@ visible = false position = Vector2(134, 151) color = Color(0.858824, 0.890196, 1, 1) -[node name="coltroller_guide" type="PanelContainer" parent="."] +[node name="controller_guide" type="PanelContainer" parent="."] layout_mode = 1 anchors_preset = 12 anchor_top = 1.0 @@ -1534,15 +1657,16 @@ offset_top = -69.0 offset_right = -337.0 grow_horizontal = 2 grow_vertical = 0 +script = SubResource("GDScript_j7wyh") -[node name="controller_guide_text" type="RichTextLabel" parent="coltroller_guide"] +[node name="controller_guide_text" type="RichTextLabel" parent="controller_guide"] layout_mode = 2 theme_override_colors/default_color = Color(1, 1, 1, 0.607843) theme_override_font_sizes/normal_font_size = 23 fit_content = true scroll_active = false -[node name="a_button" type="TextureButton" parent="coltroller_guide/controller_guide_text"] +[node name="a_button" type="TextureButton" parent="controller_guide/controller_guide_text"] unique_name_in_owner = true layout_mode = 2 offset_left = 147.0 @@ -1553,7 +1677,7 @@ texture_normal = ExtResource("30_glnve") texture_pressed = ExtResource("31_j5ri1") stretch_mode = 0 -[node name="b_button" type="TextureButton" parent="coltroller_guide/controller_guide_text"] +[node name="b_button" type="TextureButton" parent="controller_guide/controller_guide_text"] unique_name_in_owner = true layout_mode = 2 offset_left = 314.0 @@ -1564,7 +1688,7 @@ texture_normal = ExtResource("33_1ghye") texture_pressed = ExtResource("34_fum2b") stretch_mode = 0 -[node name="l1_button" type="TextureButton" parent="coltroller_guide/controller_guide_text"] +[node name="l1_button" type="TextureButton" parent="controller_guide/controller_guide_text"] unique_name_in_owner = true layout_mode = 2 offset_left = 7.0 @@ -1575,7 +1699,7 @@ texture_normal = ExtResource("38_prt7u") texture_pressed = ExtResource("39_m4qgd") stretch_mode = 0 -[node name="r1_button" type="TextureButton" parent="coltroller_guide/controller_guide_text"] +[node name="r1_button" type="TextureButton" parent="controller_guide/controller_guide_text"] unique_name_in_owner = true layout_mode = 0 offset_left = 832.0 @@ -1586,7 +1710,7 @@ texture_normal = ExtResource("39_5ft88") texture_pressed = ExtResource("40_pnuor") stretch_mode = 0 -[node name="exit_button" type="Button" parent="coltroller_guide/controller_guide_text"] +[node name="exit_button" type="Button" parent="controller_guide/controller_guide_text"] layout_mode = 2 offset_left = 567.0 offset_top = -11.0 @@ -1599,7 +1723,7 @@ flat = true icon_alignment = 1 expand_icon = true -[node name="locale_option" type="OptionButton" parent="coltroller_guide/controller_guide_text"] +[node name="locale_option" type="OptionButton" parent="controller_guide/controller_guide_text"] unique_name_in_owner = true layout_mode = 1 anchors_preset = 3 @@ -1636,5 +1760,5 @@ volume_db = -5.0 [connection signal="pressed" from="Background/SplitContainer/MarginContainer/TabContainer/TK_TOOLS/ScrollContainer/VBoxContainer/scan_container/bios_button" to="." method="_on_bios_button_pressed"] [connection signal="pressed" from="Background/SplitContainer/MarginContainer/TabContainer/TK_TOOLS/ScrollContainer/VBoxContainer/scan_container/bios_button_expert" to="." method="_on_bios_button_expert_pressed"] -[connection signal="pressed" from="coltroller_guide/controller_guide_text/exit_button" to="." method="_on_exit_button_pressed"] -[connection signal="item_selected" from="coltroller_guide/controller_guide_text/locale_option" to="." method="_on_locale_selected"] +[connection signal="pressed" from="controller_guide/controller_guide_text/exit_button" to="." method="_on_exit_button_pressed"] +[connection signal="item_selected" from="controller_guide/controller_guide_text/locale_option" to="." method="_on_locale_selected"] diff --git a/tools/configurator/res/pixel_ui_theme/RetroDECKTheme.tres b/tools/configurator/res/pixel_ui_theme/RetroDECKTheme.tres index e67b3822..2a5d880f 100644 --- a/tools/configurator/res/pixel_ui_theme/RetroDECKTheme.tres +++ b/tools/configurator/res/pixel_ui_theme/RetroDECKTheme.tres @@ -1087,7 +1087,7 @@ cache/0/16/0/glyphs/95/uv_rect = Rect2(92, 148, 6, 1) cache/0/16/0/glyphs/95/texture_idx = 0 cache/0/16/0/kerning_overrides/16/0 = Vector2(0, 0) -[sub_resource type="Image" id="Image_fqtjp"] +[sub_resource type="Image" id="Image_3jqhf"] data = { "data": PackedByteArray("4ODg4ODg4OD//////////+Dg4ODg4ODg///////////g4ODg4ODg4P//////////4ODg4ODg4OD//////////+Dg4ODg4ODg///////////g4ODg4ODg4P//////////4ODg4ODg4OD//////////+Dg4ODg4ODg/////////////////////+Dg4ODg4ODg///////////g4ODg4ODg4P//////////4ODg4ODg4OD//////////+Dg4ODg4ODg///////////g4ODg4ODg4P//////////4ODg4ODg4OD//////////+Dg4ODg4ODg///////////g4ODg4ODg4A=="), "format": "Lum8", @@ -1097,9 +1097,9 @@ data = { } [sub_resource type="ImageTexture" id="447"] -image = SubResource("Image_fqtjp") +image = SubResource("Image_3jqhf") -[sub_resource type="Image" id="Image_tditd"] +[sub_resource type="Image" id="Image_1thte"] data = { "data": PackedByteArray("AAQACgARABkAHwAiACQAJAAkACQAIgAfABkAEQAKAAQACgAVACUANAA/AEYARwBIAEgARwBGAD8ANAAlABUACgARACU/d1rvVv9W/1b/Vv9W/1b/Vv9W/1rvP3cAJQARABkANFnvSP9E/0P/Q/9D/0P/Q/9D/0T/SP9Z7wA0ABkAHwA/VP9D/0P/Q/9D/0P/Q/9D/0P/Q/9D/1T/AD8AHwAiAEZS/0L/Qv9C/0L/Qv9C/0L/Qv9C/0L/Uv8ARgAiACQAR1H/QP9A/0D/QP9A/0D/QP9A/0D/QP9R/wBHACQAJABIT/8//z//P/8//z//P/8//z//P/8//0//AEgAJAAkAEhN/z7/Pv8+/z7/Pv8+/z7/Pv8+/z7/Tf8ASAAkACQAR0z/Pf89/z3/Pf89/z3/Pf89/z3/Pf9M/wBHACQAIgBGSv87/zv/O/87/zv/O/87/zv/O/87/0r/AEYAIgAfAD9J/zr/Ov86/zr/Ov86/zr/Ov86/zr/Sf8APwAfABkANEvvPf85/zn/Of85/zn/Of85/zn/Pf9L7wA0ABkAEQAlNXdK70f/Rv9G/0b/Rv9G/0b/R/9K7TV3ACUAEQAKABUAJQA0AD8ARgBHAEgASABHAEYAPwA0ACUAFQAKAAQACgARABkAHwAiACQAJAAkACQAIgAfABkAEQAKAAQ="), "format": "LumAlpha8", @@ -1109,7 +1109,7 @@ data = { } [sub_resource type="ImageTexture" id="53"] -image = SubResource("Image_tditd") +image = SubResource("Image_1thte") [sub_resource type="StyleBoxTexture" id="54"] content_margin_left = 6.0 @@ -1123,7 +1123,7 @@ expand_margin_right = 2.0 expand_margin_bottom = 2.0 region_rect = Rect2(0, 0, 16, 16) -[sub_resource type="Image" id="Image_mrt37"] +[sub_resource type="Image" id="Image_qryl2"] data = { "data": PackedByteArray("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEeMvw5HjL85R4y/aEeMv3pHjL97R4y/e0eMv3tHjL97R4y/ekeMv2hHjL85R4y/DgAAAAAAAAAAAAAAAAAAAABHjL86R4y/dEeMvxBHjL8IR4y/CEeMvwhHjL8IR4y/CEeMvwhHjL8QR4y/dEeMvzoAAAAAAAAAAAAAAAAAAAAAR4y/aUeMvw8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEeMvw9HjL9pAAAAAAAAAAAAAAAAAAAAAEeMv3tHjL8GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHjL8GR4y/ewAAAAAAAAAAAAAAAAAAAABHjL97R4y/CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAR4y/CEeMv3sAAAAAAAAAAAAAAAAAAAAAR4y/e0eMvwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEeMvwhHjL97AAAAAAAAAAAAAAAAAAAAAEeMv3tHjL8IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHjL8IR4y/ewAAAAAAAAAAAAAAAAAAAABHjL97R4y/CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAR4y/CEeMv3sAAAAAAAAAAAAAAAAAAAAAR4y/e0eMvwYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEeMvwZHjL97AAAAAAAAAAAAAAAAAAAAAEeMv2lHjL8PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHjL8OR4y/aQAAAAAAAAAAAAAAAAAAAABHjL86R4y/dUeMvw9HjL8IR4y/CEeMvwhHjL8IR4y/CEeMvwhHjL8RR4y/dEeMvzoAAAAAAAAAAAAAAAAAAAAAR4y/DkeMvzpHjL9oR4y/ekeMv3tHjL97R4y/e0eMv3tHjL96R4y/aEeMvzlHjL8OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="), "format": "RGBA8", @@ -1133,7 +1133,7 @@ data = { } [sub_resource type="ImageTexture" id="56"] -image = SubResource("Image_mrt37") +image = SubResource("Image_qryl2") [sub_resource type="StyleBoxTexture" id="57"] content_margin_left = 6.0 @@ -1147,7 +1147,7 @@ expand_margin_right = 2.0 expand_margin_bottom = 2.0 region_rect = Rect2(0, 0, 16, 16) -[sub_resource type="Image" id="Image_mgesx"] +[sub_resource type="Image" id="Image_m8e1f"] data = { "data": PackedByteArray("AAAABAAAAAoAAAARAAAAGQAAAB8AAAAiAAAAJAAAACQAAAAkAAAAJAAAACIAAAAfAAAAGQAAABEAAAAKAAAABAAAAAoAAAAVAAAAJQAAADQAAAA/AAAARgAAAEcAAABIAAAASAAAAEcAAABGAAAAPwAAADQAAAAlAAAAFQAAAAoAAAARAAAAJUJAS3dfWmzvW1do/1pWZ/9aVmf/WlZn/1pWZ/9aVmf/WlZn/1tXaP9fWmzvQkBLdwAAACUAAAARAAAAGQAAADRfWmvvTUpX/0lGUv9IRVH/SEVR/0hFUf9IRVH/SEVR/0hFUf9JRlL/TUpX/19aa+8AAAA0AAAAGQAAAB8AAAA/W1dm/0lGUv9IRVH/SEVR/0hFUf9IRVH/SEVR/0hFUf9IRVH/SEVR/0lGUv9bV2b/AAAAPwAAAB8AAAAiAAAARllVZP9HRFD/R0RQ/0dEUP9HRFD/R0RQ/0dEUP9HRFD/R0RQ/0dEUP9HRFD/WVVk/wAAAEYAAAAiAAAAJAAAAEdYVGT/RkNQ/0ZDUP9GQ1D/RkNQ/0ZDUP9GQ1D/RkNQ/0ZDUP9GQ1D/RkNQ/1hUZP8AAABHAAAAJAAAACQAAABIVlNj/0VCT/9FQk//RUJP/0VCT/9FQk//RUJP/0VCT/9FQk//RUJP/0VCT/9WU2P/AAAASAAAACQAAAAkAAAASFZTYv9FQk7/RUJO/0VCTv9FQk7/RUJO/0VCTv9FQk7/RUJO/0VCTv9FQk7/VlNi/wAAAEgAAAAkAAAAJAAAAEdVUWL/REFO/0RBTv9EQU7/REFO/0RBTv9EQU7/REFO/0RBTv9EQU7/REFO/1VRYv8AAABHAAAAJAAAACIAAABGVVFg/0RBTf9EQU3/REFN/0RBTf9EQU3/REFN/0RBTf9EQU3/REFN/0RBTf9VUWD/AAAARgAAACIAAAAfAAAAP1VRYP9EQU3/Q0BM/0NATP9DQEz/Q0BM/0NATP9DQEz/Q0BM/0NATP9EQU3/VVFg/wAAAD8AAAAfAAAAGQAAADRWU2TvR0NR/0M/Tf9CP0z/Qj9M/0I/TP9CP0z/Qj9M/0I/TP9DP03/R0NR/1dTZO8AAAA0AAAAGQAAABEAAAAlPjtGd1dTY+9TUF//U09e/1NPXv9TT17/U09e/1NPXv9TT17/U1Bf/1dTY+0+O0Z3AAAAJQAAABEAAAAKAAAAFQAAACUAAAA0AAAAPwAAAEYAAABHAAAASAAAAEgAAABHAAAARgAAAD8AAAA0AAAAJQAAABUAAAAKAAAABAAAAAoAAAARAAAAGQAAAB8AAAAiAAAAJAAAACQAAAAkAAAAJAAAACIAAAAfAAAAGQAAABEAAAAKAAAABA=="), "format": "RGBA8", @@ -1157,7 +1157,7 @@ data = { } [sub_resource type="ImageTexture" id="59"] -image = SubResource("Image_mgesx") +image = SubResource("Image_m8e1f") [sub_resource type="StyleBoxTexture" id="60"] content_margin_left = 6.0 @@ -1175,7 +1175,7 @@ expand_margin_right = 2.0 expand_margin_bottom = 2.0 region_rect = Rect2(0, 0, 16, 16) -[sub_resource type="Image" id="Image_fkqgi"] +[sub_resource type="Image" id="Image_ugtma"] data = { "data": PackedByteArray("AAAABAAAAAoAAAARAAAAGQAAAB8AAAAiAAAAJAAAACQAAAAkAAAAJAAAACIAAAAfAAAAGQAAABEAAAAKAAAABAAAAAoAAAAVAAAAJQAAADQAAAA/AAAARgAAAEcAAABIAAAASAAAAEcAAABGAAAAPwAAADQAAAAlAAAAFQAAAAoAAAARAAAAJTw6RHdWU2HvUlBd/1FPXf9RT13/UU9d/1FPXf9RT13/UU9d/1JQXf9WU2HvPDpEdwAAACUAAAARAAAAGQAAADRWUmDvRkJO/0I+Sv9BPkn/QT5J/0E+Sf9BPkn/QT5J/0E+Sf9CPkr/RkJO/1ZSYO8AAAA0AAAAGQAAAB8AAAA/UU5b/0E+Sf9APkj/QD5I/0A+SP9APkj/QD5I/0A+SP9APkj/QD5I/0E+Sf9RTlv/AAAAPwAAAB8AAAAiAAAARk9MWf8/PUf/Pz1H/z89R/8/PUf/Pz1H/z89R/8/PUf/Pz1H/z89R/8/PUf/T0xZ/wAAAEYAAAAiAAAAJAAAAEdOSlj/PjtG/z47Rv8+O0b/PjtG/z47Rv8+O0b/PjtG/z47Rv8+O0b/PjtG/05KWP8AAABHAAAAJAAAACQAAABIS0lV/zw6RP88OkT/PDpE/zw6RP88OkT/PDpE/zw6RP88OkT/PDpE/zw6RP9LSVX/AAAASAAAACQAAAAkAAAASEpHVP87OUP/OzlD/zs5Q/87OUP/OzlD/zs5Q/87OUP/OzlD/zs5Q/87OUP/SkdU/wAAAEgAAAAkAAAAJAAAAEdJRlP/OjhC/zo4Qv86OEL/OjhC/zo4Qv86OEL/OjhC/zo4Qv86OEL/OjhC/0lGU/8AAABHAAAAJAAAACIAAABGR0VQ/zk3QP85N0D/OTdA/zk3QP85N0D/OTdA/zk3QP85N0D/OTdA/zk3QP9HRVD/AAAARgAAACIAAAAfAAAAP0dDUP84NT//ODU//zg1P/84NT//ODU//zg1P/84NT//ODU//zg1P/84NT//R0NQ/wAAAD8AAAAfAAAAGQAAADRHRFLvOjhC/zY0Pv82ND7/NjQ+/zY0Pv82ND7/NjQ+/zY0Pv82ND7/OjhC/0dEUu8AAAA0AAAAGQAAABEAAAAlMzE5d0dEUO9EQk3/REFM/0RBTP9EQUz/REFM/0RBTP9EQUz/REJN/0dEUe0zMTl3AAAAJQAAABEAAAAKAAAAFQAAACUAAAA0AAAAPwAAAEYAAABHAAAASAAAAEgAAABHAAAARgAAAD8AAAA0AAAAJQAAABUAAAAKAAAABAAAAAoAAAARAAAAGQAAAB8AAAAiAAAAJAAAACQAAAAkAAAAJAAAACIAAAAfAAAAGQAAABEAAAAKAAAABA=="), "format": "RGBA8", @@ -1185,7 +1185,7 @@ data = { } [sub_resource type="ImageTexture" id="62"] -image = SubResource("Image_fkqgi") +image = SubResource("Image_ugtma") [sub_resource type="StyleBoxTexture" id="63"] content_margin_left = 6.0 @@ -1199,7 +1199,7 @@ expand_margin_right = 2.0 expand_margin_bottom = 2.0 region_rect = Rect2(0, 0, 16, 16) -[sub_resource type="Image" id="Image_fe7ad"] +[sub_resource type="Image" id="Image_kxy7u"] data = { "data": PackedByteArray("AAAABAAAAAoAAAARAAAAGQAAAB8AAAAiAAAAJAAAACQAAAAkAAAAJAAAACIAAAAfAAAAGQAAABEAAAAKAAAABAAAAAsAAAAWAAAAJwAAADYAAABBAAAASQAAAEoAAABLAAAASwAAAEoAAABJAAAAQQAAADYAAAAnAAAAFgAAAAsAAAATAAAAKTEvN4BGQ0/xQ0BM/0JAS/9CQEv/QkBL/0JAS/9CQEv/QkBL/0NATP9GQ0/xMS83fwAAACkAAAATAAAAHgAAAD1HRFDyOjhB/wsLDP8LCgz/CwoM/wsKDP8LCgz/CwsM/wsLDP8LCwz/OjhB/0dEUPIAAAA9AAAAHgAAACcAAABNREJO/w8OEf8PDhH/Dw4R/w8OEf8PDhH/Dw4R/w8OEf8PDhH/Dw4R/w8OEf9EQk7/AAAATQAAACcAAAAsAAAAWEZCT/8UExb/ExIW/xMSFv8UExb/ExIW/xQTFv8UExb/FBMW/xQTFv8TEhb/RkJP/wAAAFgAAAAsAAAAMgAAAF1HRVD/GBcb/xgXG/8YFxv/GBcb/xgXG/8YFxv/GBcb/xkYHP8YFxv/GBcb/0dFUP8AAABdAAAAMgAAADMAAABjSUZT/x0cIf8dHCH/HRwh/x0cIf8dHCH/HRwh/x0cIf8dHCH/HRwh/x0cIf9JRlP/AAAAYwAAADMAAAA2AAAAZkpHVP8iISf/IiEn/yIhJ/8iISf/IiEn/yIhJ/8iISf/IiEn/yIhJ/8iISf/SkdU/wAAAGYAAAA2AAAAOQAAAGlLSVX/JyYt/ycmLf8nJi3/JyYt/ycmLf8nJi3/JyYt/ygmLf8nJi3/KCYt/0tJVf8AAABpAAAAOQAAADgAAABsTkpY/y0rM/8tKzP/LSsz/y0rM/8tKzP/LSsz/y0rM/8tKzP/LSsz/y0rM/9OSlj/AAAAbAAAADgAAAA1AAAAZVBNWv8zMTr/MzE5/zMxOf8zMTn/MzE5/zMxOf8zMTn/MzE5/zMxOf8zMTr/UE1a/wAAAGUAAAA1AAAALQAAAFlVUl/8RUJN/zk3QP84N0D/OTdA/zg3QP84N0D/ODdA/zg3QP86N0H/RUJN/1VSYPwAAABZAAAALQAAACAAAABEPTpFtFZSYP1STlz/UU5b/1FOW/9RTlv/UU5b/1FOW/9RTlv/Uk5c/1ZSYP09OkW0AAAARAAAACAAAAAUAAAAKAAAAEUAAABdAAAAbgAAAHkAAAB6AAAAfAAAAHwAAAB6AAAAeQAAAG4AAABdAAAARQAAACgAAAAUAAAACAAAABQAAAAhAAAAMAAAADoAAAA/AAAAQwAAAEMAAABDAAAAQwAAAD8AAAA6AAAAMAAAACEAAAAUAAAACA=="), "format": "RGBA8", @@ -1209,7 +1209,7 @@ data = { } [sub_resource type="ImageTexture" id="65"] -image = SubResource("Image_fe7ad") +image = SubResource("Image_kxy7u") [sub_resource type="StyleBoxTexture" id="66"] content_margin_left = 6.0 @@ -1223,7 +1223,7 @@ expand_margin_right = 2.0 expand_margin_bottom = 2.0 region_rect = Rect2(0, 0, 16, 16) -[sub_resource type="Image" id="Image_e7qpu"] +[sub_resource type="Image" id="Image_m6shq"] data = { "data": PackedByteArray("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/wAAAADf39+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P8AAAAA4ODg/9/f34gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/AAAAAODg4P/g4OD/39/fiAAAAAAAAAAAAAAAAAAAAAAAAAAA4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/wAAAADg4OD/4ODg/+Dg4P/f39+IAAAAAAAAAAAAAAAAAAAAAODg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P8AAAAAAAAAAAAAAAAAAAAA4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/AAAAAAAAAAAAAAAAAAAAAODg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/wAAAAAAAAAAAAAAAAAAAADg4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P8AAAAAAAAAAAAAAAAAAAAA4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/AAAAAAAAAAAAAAAAAAAAAODg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/wAAAAAAAAAAAAAAAAAAAADg4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P8AAAAAAAAAAAAAAAAAAAAA4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/AAAAAAAAAAAAAAAAAAAAAODg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="), "format": "RGBA8", @@ -1233,9 +1233,9 @@ data = { } [sub_resource type="ImageTexture" id="425"] -image = SubResource("Image_e7qpu") +image = SubResource("Image_m6shq") -[sub_resource type="Image" id="Image_bhnyy"] +[sub_resource type="Image" id="Image_rt115"] data = { "data": PackedByteArray("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4MXg/+D/4P/g/+D/4P/gwwAAAAAAAAAAAAAAAAAAAADg/+D/4P/g/+D/4P/g/+D/AAAAAAAAAAAAAAAAAAAAAOD/4P/g/+D/4P/g/+D/4P/hPAAAAAAAAAAAAAAAAAAA4P/g/+D/4P/g/+D/4P/g/+D/4P/g/+D/4P/gwwAAAADg/+D/4P/g/+D/4P/g/+D/4P/g/+D/4P/g/+D/AAAAAOD/4P/g/+D/4P/g/+D/4P/g/+D/4P/g/+D/4P8AAAAA4P/g/+D/4P/g/+D/4P/g/+D/4P/g/+D/4P/g/wAAAADg/+D/4P/g/+D/4P/g/+D/4P/g/+D/4P/g/+D/AAAAAOD/4P/g/+D/4P/g/+D/4P/g/+D/4P/g/+D/4P8AAAAA4P/g/+D/4P/g/+D/4P/g/+D/4P/g/+D/4P/g/wAAAADg/+D/4P/g/+D/4P/g/+D/4P/g/+D/4P/g/+D/AAAAAODD4P/g/+D/4P/g/+D/4P/g/+D/4P/g/+D/38IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="), "format": "LumAlpha8", @@ -1245,9 +1245,9 @@ data = { } [sub_resource type="ImageTexture" id="427"] -image = SubResource("Image_bhnyy") +image = SubResource("Image_rt115") -[sub_resource type="Image" id="Image_m68hq"] +[sub_resource type="Image" id="Image_vkmxh"] data = { "data": PackedByteArray("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3hfgz+DO3hcAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3Bbh0uD+4P7g1+AZAAAAAAAAAAAAAAAAAAAAAAAA3Bbh0uD+4P7g/uD+4NfgGQAAAAAAAAAAAAAAAAAA3hfg1OD+4NHg/uD94dLg/uDU3hcAAAAAAAAAAAAAAADgzeD+4NDcFuD+4P3bFeDR4P7gzAAAAAAAAAAAAAAAAOC+4MXZFP8B4P7g/QAA2xXhyeDFAAAAAAAAAAAAAAAAAAAAAAAA/wHg/uD9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AeD+4P0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4MThwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="), "format": "LumAlpha8", @@ -1257,9 +1257,9 @@ data = { } [sub_resource type="ImageTexture" id="429"] -image = SubResource("Image_m68hq") +image = SubResource("Image_vkmxh") -[sub_resource type="Image" id="Image_epcau"] +[sub_resource type="Image" id="Image_ggfgo"] data = { "data": PackedByteArray("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADbB99u4Mfg8+Dz4MfebdsHAAAAAAAAAAAAAAAAAADjG+DP4P7g/uD+4P7g/uD+4M7jGwAAAAAAAAAAAADbB+DP4P7g4eBT2A3YDd9Q4Nfg/uDO2wcAAAAAAAAAAN9u4P7g4eMSAAAAAAAAAADhEeDh4P7ebAAAAAAAAAAA4Mjg/uBTAAAAAAAAAAAAAAAA3lXg/uDGAAAAAAAAAADg8uD+2A0AAAAAAAAAAAAAAADbDuD+4PEAAAAA4J7g/uD+4P7g/uCeAAAAAAAAAAAAAN0P4P7g8QAAAADoC+DU4P7g/uDU6AsAAAAAAAAAAAAA3lbg/uDGAAAAAAAA4Svg8+Dz4SsAAAAAAAAAAAAA5BPh4uD+3mwAAAAAAAAAAN9g32AAAAAAAAAAANsO3lbh4uD+4M7VBgAAAAAAAAAAAAAAAAAAAAAAAAAA4P7g/uD+4M7jGwAAAAAAAAAAAAAAAAAAAAAAAAAAAADg8uDF3mzVBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="), "format": "LumAlpha8", @@ -1269,9 +1269,9 @@ data = { } [sub_resource type="ImageTexture" id="431"] -image = SubResource("Image_epcau") +image = SubResource("Image_ggfgo") -[sub_resource type="Image" id="Image_u4re4"] +[sub_resource type="Image" id="Image_2a1q2"] data = { "data": PackedByteArray("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA39/fCN7e3mzg4ODF4ODg9ODg4PPg4ODF3t7ebePj4wkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3t7eLuDg4Njg4OD+4ODg/uDg4P7g4OD+4ODg/uDg4P7h4eHa4ODgMgAAAAAAAAAAAAAAAAAAAAAAAAAA3t7eL+Dg4PDg4OD+4ODg4eDg4FPY2NgN2NjYDd/f31Dg4ODX4ODg/uDg4PLh4eEzAAAAAAAAAAAAAAAA4+PjCeDg4Nzg4OD+4ODg4ePj4xIAAAAAAAAAAAAAAAAAAAAA4eHhEeDg4OHg4OD+4ODg3+bm5goAAAAAAAAAAN/f33fg4OD+4ODg/uDg4FMAAAAA4ODgS+Dg4OPh4eHi4ODgSQAAAADe3t5V4ODg/uDg4P7f3995AAAAAAAAAADh4eHa4ODg/uDg4P7Y2NgNAAAAAOHh4eLg4OD+4ODg/uDg4OEAAAAA29vbDuDg4P7g4OD+4eHh2gAAAAAAAAAA4ODg2+Dg4P7g4OD+2NjYDQAAAADh4eHi4ODg/uDg4P7g4ODhAAAAAN3d3Q/g4OD+4ODg/uDg4NsAAAAAAAAAAN7e3nzg4OD+4ODg/t/f31AAAAAA4ODgSeHh4eLg4ODh39/fSAAAAADe3t5W4ODg/uDg4P7g4OB7AAAAAAAAAADV1dUM4ODg4+Dg4P7g4ODX4eHhEQAAAAAAAAAAAAAAAAAAAADk5OQT4eHh4uDg4P7g4ODh1dXVDAAAAAAAAAAAAAAAAN/f3zjg4OD04ODg/uDg4OHe3t5V29vbDtvb2w7e3t5W4eHh4uDg4P7g4OD03t7eNgAAAAAAAAAAAAAAAAAAAAAAAAAA39/fN+Dg4N7g4OD+4ODg/uDg4P7g4OD+4ODg/uDg4P7g4ODd3t7eNgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADm5uYK39/fcODg4MXg4ODz4ODg8+Dg4MXf399u5ubmCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="), "format": "RGBA8", @@ -1281,7 +1281,7 @@ data = { } [sub_resource type="ImageTexture" id="433"] -image = SubResource("Image_u4re4") +image = SubResource("Image_2a1q2") [sub_resource type="StyleBoxTexture" id="StyleBoxTexture_g6bu4"] texture = ExtResource("1_ak8qr") @@ -1359,7 +1359,7 @@ region = Rect2(96, 96, 16, 16) atlas = ExtResource("1_ak8qr") region = Rect2(96, 80, 16, 16) -[sub_resource type="Image" id="Image_sun6t"] +[sub_resource type="Image" id="Image_cd2os"] data = { "data": PackedByteArray("AAAAAJiYmHlOTk4xAAAAAAAAAACNjY15Tk5OMQAAAAAAAAAAgoKCeU5OTjEAAAAAAAAAAE5OTjFOTk4cAAAAAAAAAAA4VV8AOFVfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjKy4ADhVXwAAAAAAAAAAAIGirQA4VV8AAAAAAAAAAACYmJh5Tk5OMQAAAAAAAAAAjY2NeU5OTjEAAAAAAAAAAIKCgnlOTk4xAAAAAA=="), "format": "RGBA8", @@ -1369,7 +1369,7 @@ data = { } [sub_resource type="ImageTexture" id="29"] -image = SubResource("Image_sun6t") +image = SubResource("Image_cd2os") [sub_resource type="StyleBoxTexture" id="4"] content_margin_left = 6.0 @@ -1440,7 +1440,7 @@ bg_color = Color(0.490196, 0.490196, 0.490196, 1) corner_detail = 1 anti_aliasing = false -[sub_resource type="Image" id="Image_ui5pl"] +[sub_resource type="Image" id="Image_3oov2"] data = { "data": PackedByteArray("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN9Y3BYAAAAAAAAAAAAAAADcFt9YAAAAAAAAAAAAAN9Y4P7g09wWAAAAAAAAAADcFuDT4P7fWAAAAAAAAAAA2xXf0uD/4NfgGQAAAADbFd/S4P/g198YAAAAAAAAAAAAANsV39Lg/+DX4BnbFd/S4P/g198YAAAAAAAAAAAAAAAAAADbFd/S4P/h2uDW4P/g198YAAAAAAAAAAAAAAAAAAAAAAAA2xXf1uD/4P/g298YAAAAAAAAAAAAAAAAAAAAAAAAAADbFd/W4P/g/+Db4BkAAAAAAAAAAAAAAAAAAAAAAADbFd/S4P/f2uDW4P/g1+AZAAAAAAAAAAAAAAAAAADbFd/S4P/g198Y2xXf0uD/4NfgGQAAAAAAAAAAAADbFd/S4P/g198YAAAAANsV39Lg/+DX4BkAAAAAAAAAAN9Y4P7g09wWAAAAAAAAAADcFuDT4P7fWAAAAAAAAAAAAADfWNwWAAAAAAAAAAAAAAAA3BbfWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="), "format": "LumAlpha8", @@ -1450,7 +1450,7 @@ data = { } [sub_resource type="ImageTexture" id="49"] -image = SubResource("Image_ui5pl") +image = SubResource("Image_3oov2") [sub_resource type="StyleBoxTexture" id="127"] content_margin_left = 4.0 @@ -2271,7 +2271,7 @@ texture_margin_right = 2.0 texture_margin_bottom = 2.0 region_rect = Rect2(72, 64, 8, 8) -[sub_resource type="Image" id="Image_wlbr4"] +[sub_resource type="Image" id="Image_atdte"] data = { "data": PackedByteArray("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAc5uqs87c4bPO3OGzztzhs87c4bPO3OGzztzhs3ObqrMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="), "format": "RGBA8", @@ -2281,7 +2281,7 @@ data = { } [sub_resource type="ImageTexture" id="199"] -image = SubResource("Image_wlbr4") +image = SubResource("Image_atdte") [sub_resource type="StyleBoxTexture" id="200"] texture = SubResource("199") @@ -2305,7 +2305,7 @@ texture_margin_right = 2.0 texture_margin_bottom = 2.0 region_rect = Rect2(64, 64, 8, 8) -[sub_resource type="Image" id="Image_m37lc"] +[sub_resource type="Image" id="Image_rctl8"] data = { "data": PackedByteArray("/wD//wD//wD//wD/Z3qFZnqGaHuGaHuGaHuGaHuGZnqGZ3qF/wD//wD//wD//wD//wD//wD/Z3qFZnqGV1FRTEJATUNBTUNBTUNBTUNBTEJAV1FRZnqGZ3qF/wD//wD//wD/Z3qFVkxLTEJATURBTUNBTkRCTkRCTkRCTkRCTUNBTURBTEJAV1FRZ3qF/wD//wD/ZnqGTEJATEJATUNBT0VDT0VDT0VDT0VDT0VDT0VDTUNBTEJATEJAZ3uH/wD/Z3qFV1FRTEJATEJATkRCT0RDUEVEUkZEUkZEUUZFT0RDTkRCTEJATEJAV1FRZ3qFZnqGS0A/TEJATUNBT0RDUUdFUkhGU0hHU0hHUkhGUUdFT0RDTkRCTEJAS0E/Z3uHZ3uHS0E/TEJATUNBT0RDUUdFVElGVUpHVUlHVUpHUkhGUEVETUNBTEJAS0E/aHyIZ3uHSkA+S0E/TUNBT0VDUUdFVElGVUtJVk1LVElGU0lHUEZETkRCTEJAS0E/aHyIZ3uHSkE+S0E/TEJAT0VDUUdFVElGVUtJVUtJVUpHUkhGUEZETkRCTEJASkA+aHyIZ3uHSD48S0I/S0E/TkRCUEVEUUZFU0lHU0lHUkhGUEVETkRCTEJAS0E/ST89aHyIZ3uHRj08SD48SkA+TEJATkRCT0RDUEVEUEVEUEZET0VDTEJAS0A/ST89Rz07Z3uHZ3qFV1FRRz47SUA9S0E/TEJATUNBTkRCTkRCTUNBTEJAS0E/ST89Rz07V1FRaHuG/wD/Z3uHRj08Rz07SD48ST89SkA+S0E/S0E/S0A/SkA+SD48Rz47Rz07Z3uH/wD//wD/Z3qFV1FRRTw7Rz07Rz07Rz07SD48SD48Rz07Rz07Rz47Rj08V1FRZnqG/wD//wD//wD/Z3qFZ3uHV1FRRjw6Rjw6Rz47Rz47Rjw6Rjw6V1FRZ3uHaHuG/wD//wD//wD//wD//wD//wD/ZnqGZ3uHaHyIaHyIaHyIaHyIZ3uHaHuG/wD//wD//wD//wD/"), "format": "RGB8", @@ -2315,7 +2315,7 @@ data = { } [sub_resource type="ImageTexture" id="204"] -image = SubResource("Image_m37lc") +image = SubResource("Image_rctl8") [sub_resource type="StyleBoxTexture" id="205"] texture = SubResource("204") @@ -2428,7 +2428,7 @@ axis_stretch_horizontal = 2 axis_stretch_vertical = 2 region_rect = Rect2(80, 0, 16, 8) -[sub_resource type="Image" id="Image_tkr8g"] +[sub_resource type="Image" id="Image_r2vw0"] data = { "data": PackedByteArray("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOD/4P/g/+D/4P/g/+D/4P8AAAAAAAAAAOD/4P/g/+D/4P/g/+D/4P8AAAAAAAAAAOD/4P/g/+D/4P/g/+D/4P8AAAAAAAAAAOFe4PTg/+D/4P/g/+D24WYAAAAAAAAAAAAA3yjf0uD/4P/g1+MtAAAAAAAAAAAAAAAAAADoC+Gf4Z/oCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"), "format": "LumAlpha8", @@ -2438,9 +2438,9 @@ data = { } [sub_resource type="ImageTexture" id="306"] -image = SubResource("Image_tkr8g") +image = SubResource("Image_r2vw0") -[sub_resource type="Image" id="Image_18bpb"] +[sub_resource type="Image" id="Image_g4jd5"] data = { "data": PackedByteArray("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4P/g/+D/32AAAAAAAAAAAAAAAAAAAAAA4P/g/+D/4PThKwAAAAAAAAAAAAAAAAAA4P/g/+D/4P/g1egLAAAAAAAAAAAAAAAA4P/g/+D/4P/g/+GfAAAAAAAAAAAAAAAA4P/g/+D/4P/g/+GfAAAAAAAAAAAAAAAA4P/g/+D/4P/g1egLAAAAAAAAAAAAAAAA4P/g/+D/4PThKwAAAAAAAAAAAAAAAAAA4P/g/+D/32AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"), "format": "LumAlpha8", @@ -2450,9 +2450,9 @@ data = { } [sub_resource type="ImageTexture" id="308"] -image = SubResource("Image_18bpb") +image = SubResource("Image_g4jd5") -[sub_resource type="Image" id="Image_rvb8t"] +[sub_resource type="Image" id="Image_rv2mk"] data = { "data": PackedByteArray("AAAAAAAAAAAAAAAAAAAAAAAA/1n/FP8U/1kAAAAAAAAAAAAA/1n/FP8U/1kAAAAAAAAAAAAA/1n/FP8U/1kAAAAAAAAAAP9Z/xT/FP9ZAAAAAAAA/1n/FP8U/1kAAAAAAAD/Wf8U/xT/WQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="), "format": "LumAlpha8", @@ -2462,9 +2462,9 @@ data = { } [sub_resource type="ImageTexture" id="292"] -image = SubResource("Image_rvb8t") +image = SubResource("Image_rv2mk") -[sub_resource type="Image" id="Image_55usd"] +[sub_resource type="Image" id="Image_8rn4r"] data = { "data": PackedByteArray("FxYabx0cIe8gHiT3IR8l9yEfJfchHyX3IR8l9yAeJPcdHCHvFxYabx0cIfAkIin/KCYt/ygmLv8oJi7/KCYu/ygmLv8oJi3/JCIp/x0cIfAgHiT5KCYt/ysqMf8sKjL/LCoy/ywqMv8sKjL/Kyox/ygmLf8gHiT5IR8l9ygmLv8sKjL/LCoy/ywqMv8sKjL/LCoy/ywqMv8oJi7/IR8l9yEfJfcoJi7/LCoy/ywqMv8sKjL/LCoy/ywqMv8sKjL/KCYu/yEfJfchHyX3KCYu/ywqMv8sKjL/LCoy/ywqMv8sKjL/LCoy/ygmLv8hHyX3IR8l9ygmLv8sKjL/LCoy/ywqMv8sKjL/LCoy/ywqMv8oJi7/IR8l9yAeJPkoJi3/Kyox/ywqMv8sKjL/LCoy/ywqMv8rKjH/KCYt/yAeJPkdHCHwJCIp/ygmLf8oJi7/KCYu/ygmLv8oJi7/KCYt/yQiKf8dHCHxFxYabx0cIfAgHiT3IR8l9yEfJfchHyX3IR8l9yAeJPcdHCHuFxYabw=="), "format": "RGBA8", @@ -2474,7 +2474,7 @@ data = { } [sub_resource type="ImageTexture" id="39"] -image = SubResource("Image_55usd") +image = SubResource("Image_8rn4r") [sub_resource type="StyleBoxTexture" id="272"] content_margin_left = 0.0 @@ -2534,7 +2534,7 @@ axis_stretch_horizontal = 2 axis_stretch_vertical = 2 region_rect = Rect2(24, 40, 8, 8) -[sub_resource type="Image" id="Image_4foen"] +[sub_resource type="Image" id="Image_bqkin"] data = { "data": PackedByteArray("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNS1kHTUtZJ01LWVBNS1lmTUtZaE1LWWhNS1loTUtZaE1LWWhNS1loWFZjarCvtYFNS1knTUtZBwAAAAAAAAAATUtZJzg3QLQgICT6Hh4i/x8fI/8fHyP/Hx8j/x8fI/8fHyP/Hx8j/4uLjf//////tra53U1LWScAAAAAAAAAAE1LWVAgICT6ICAk/yIiJ/8jIyj/IyMo/yMjKP8jIyj/IyMo/0JCR//4+Pj//v7+/1dXWvtNS1lQAAAAAAAAAABNS1lmHh4i/yIiJ/8lJSr/JSUq/05OUv8mJiv/JSUq/yUlKv/Fxcf//////6qqq/8eHiL/TUtZZgAAAAAAAAAATUtZaB8fI/8jIyj/JSUq/7i4uv//////X19j/yUlKv90dHf//////+3t7f8zMzj/Hx8j/01LWWgAAAAAAAAAAE1LWWgfHyP/IyMo/yUlKv+NjY///////7i4uf81NTn/7e3t//////90dHf/IyMo/x8fI/9NS1loAAAAAAAAAABNS1loHx8j/yMjKP8lJSr/Ojo+//v7+//6+vr/srK0///////Fxcf/JSUq/yMjKP8fHyP/TUtZaAAAAAAAAAAATUtZaB8fI/8jIyj/JSUq/yUlKv+4uLr///////7+/v/4+Pj/RUVJ/yUlKv8jIyj/Hx8j/01LWWgAAAAAAAAAAE1LWWgfHyP/IyMo/yUlKv8lJSr/YWFl////////////j4+S/yUlKv8lJSr/IyMo/x8fI/9NS1loAAAAAAAAAABNS1loHx8j/yMjKP8lJSr/JSUq/yYmK/9OTlL/Y2Nm/yoqL/8lJSr/JSUq/yMjKP8fHyP/TUtZaAAAAAAAAAAATUtZZh4eIv8iIif/JSUq/yUlKv8lJSr/JSUq/yUlKv8lJSr/JSUq/yUlKv8iIif/Hh4i/01LWWYAAAAAAAAAAE1LWVAgICT6ICAk/yIiJ/8jIyj/IyMo/yMjKP8jIyj/IyMo/yMjKP8iIif/ICAk/yAgJPtNS1lQAAAAAAAAAABNS1knODZAtCAgJPseHiL/Hx8j/x8fI/8fHyP/Hx8j/x8fI/8fHyP/Hh4i/yAgJfo4NkC0TUtZJwAAAAAAAAAATUtZB01LWSdNS1lQTUtZZk1LWWhNS1loTUtZaE1LWWhNS1loTUtZaE1LWWZNS1lQTUtZJ01LWQcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="), "format": "RGBA8", @@ -2544,9 +2544,9 @@ data = { } [sub_resource type="ImageTexture" id="334"] -image = SubResource("Image_4foen") +image = SubResource("Image_bqkin") -[sub_resource type="Image" id="Image_070af"] +[sub_resource type="Image" id="Image_ydvb3"] data = { "data": PackedByteArray("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNS1kHTUtZJ01LWVBNS1lmTUtZaE1LWWhNS1loTUtZaE1LWWhNS1loTUtZZk1LWVBNS1knTUtZBwAAAAAAAAAATUtZJzg3QLQgICT6Hh4i/x8fI/8fHyP/Hx8j/x8fI/8fHyP/Hx8j/x4eIv8gICT6ODdAtE1LWScAAAAAAAAAAE1LWVAgICT6ICAk/yIiJ/8jIyj/IyMo/yMjKP8jIyj/IyMo/yMjKP8iIif/ICAk/yAgJPpNS1lQAAAAAAAAAABNS1lmHh4i/yIiJ/8lJSr/JSUq/yUlKv8lJSr/JSUq/yUlKv8lJSr/JSUq/yIiJ/8eHiL/TUtZZgAAAAAAAAAATUtZaB8fI/8jIyj/JSUq/yUlKv8lJSr/JSUq/yUlKv8lJSr/JSUq/yUlKv8jIyj/Hx8j/01LWWgAAAAAAAAAAE1LWWgfHyP/IyMo/yUlKv8lJSr/JSUq/yUlKv8lJSr/JSUq/yUlKv8lJSr/IyMo/x8fI/9NS1loAAAAAAAAAABNS1loHx8j/yMjKP8lJSr/JSUq/yUlKv8lJSr/JSUq/yUlKv8lJSr/JSUq/yMjKP8fHyP/TUtZaAAAAAAAAAAATUtZaB8fI/8jIyj/JSUq/yUlKv8lJSr/JSUq/yUlKv8lJSr/JSUq/yUlKv8jIyj/Hx8j/01LWWgAAAAAAAAAAE1LWWgfHyP/IyMo/yUlKv8lJSr/JSUq/yUlKv8lJSr/JSUq/yUlKv8lJSr/IyMo/x8fI/9NS1loAAAAAAAAAABNS1loHx8j/yMjKP8lJSr/JSUq/yUlKv8lJSr/JSUq/yUlKv8lJSr/JSUq/yMjKP8fHyP/TUtZaAAAAAAAAAAATUtZZh4eIv8iIif/JSUq/yUlKv8lJSr/JSUq/yUlKv8lJSr/JSUq/yUlKv8iIif/Hh4i/01LWWYAAAAAAAAAAE1LWVAgICT6ICAk/yIiJ/8jIyj/IyMo/yMjKP8jIyj/IyMo/yMjKP8iIif/ICAk/yAgJPtNS1lQAAAAAAAAAABNS1knODZAtCAgJPseHiL/Hx8j/x8fI/8fHyP/Hx8j/x8fI/8fHyP/Hh4i/yAgJfo4NkC0TUtZJwAAAAAAAAAATUtZB01LWSdNS1lQTUtZZk1LWWhNS1loTUtZaE1LWWhNS1loTUtZaE1LWWZNS1lQTUtZJ01LWQcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="), "format": "RGBA8", @@ -2556,7 +2556,7 @@ data = { } [sub_resource type="ImageTexture" id="336"] -image = SubResource("Image_070af") +image = SubResource("Image_ydvb3") [sub_resource type="AtlasTexture" id="359"] atlas = ExtResource("1_ak8qr") @@ -2632,7 +2632,7 @@ border_width_left = 1 border_color = Color(0.2, 0.2, 0.2, 1) anti_aliasing = false -[sub_resource type="Image" id="Image_qqej6"] +[sub_resource type="Image" id="Image_gpgg0"] data = { "data": PackedByteArray("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIKCgnmNjY15mJiYeYGirQCMrLgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOFVfAE5OTjGCgoJ5jY2NeZiYmHlOTk4xTk5OMU5OTjE4VV8AOFVfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADhVXwBOTk4cTk5OMU5OTjFOTk4xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="), "format": "RGBA8", @@ -2642,7 +2642,7 @@ data = { } [sub_resource type="ImageTexture" id="111"] -image = SubResource("Image_qqej6") +image = SubResource("Image_gpgg0") [sub_resource type="AtlasTexture" id="20"] atlas = ExtResource("3_0m6kw") diff --git a/tools/configurator/scripts/class_functions.gd b/tools/configurator/scripts/class_functions.gd index a138ae6f..88ef29db 100644 --- a/tools/configurator/scripts/class_functions.gd +++ b/tools/configurator/scripts/class_functions.gd @@ -1,6 +1,9 @@ -class_name ClassFunctions extends Control +class_name ClassFunctions -# This should be looked at again when GoDot 4.3 ships as has new OS.execute_with_pipe +extends Control +var log_text = "gdc_" +var log_parameters: Array = ["log", "i", log_text] +var wrapper_command: String = "../../tools/retrodeck_function_wrapper.sh" func array_to_string(arr: Array) -> String: var text: String @@ -9,6 +12,7 @@ func array_to_string(arr: Array) -> String: text = line.strip_edges() + "\n" return text +# TODO This should be looked at again when GoDot 4.3 ships as has new OS.execute_with_pipe func execute_command(command: String, parameters: Array, console: bool) -> Dictionary: var result = {} var output = [] diff --git a/tools/configurator/scripts/data_handler.gd b/tools/configurator/scripts/data_handler.gd index 8fc3deb9..800fcf9d 100644 --- a/tools/configurator/scripts/data_handler.gd +++ b/tools/configurator/scripts/data_handler.gd @@ -34,6 +34,8 @@ func load_base_data() -> AppData: var emulator = Emulator.new() emulator.name = emulator_data["name"] emulator.description = emulator_data["description"] + emulator.url = emulator_data["url"] + emulator.launch = emulator_data["launch"] if emulator_data.has("properties"): for property_data in emulator_data["properties"]: #print (emulator,"----",property_data) @@ -48,7 +50,8 @@ func load_base_data() -> AppData: property.multi_user_config_dir = property_data.get("multi_user_config_dir",true) emulator.properties.append(property) emulators[key] = emulator - + + #TODO add systems too var cores = {} for key in data_dict["emulator"]["retroarch"]["cores"].keys(): var core_data = data_dict["emulator"]["retroarch"]["cores"][key] @@ -85,7 +88,7 @@ func load_base_data() -> AppData: get_tree().quit() return null -func save_base_data(app_dict: AppData): # was apP_data but gave warning +func save_base_data(app_dict: AppData): var file = FileAccess.open(data_file_path, FileAccess.READ) var existing_data = {} if file: @@ -130,6 +133,8 @@ func save_base_data(app_dict: AppData): # was apP_data but gave warning emulators[key] = { "name": emulator.name, "description": emulator.description, + "launch": emulator.launch, + "url": emulator.url, "properties": properties } @@ -174,13 +179,14 @@ func modify_link(key: String, new_name: String, new_url: String, new_description print("Link not found") # Function to modify an existing emulator -func modify_emulator(key: String, new_name: String, new_description: String, new_properties: Array): +func modify_emulator(key: String, new_name: String, new_launch: String, new_description: String, new_properties: Array): #data_handler.modify_emulator_test() var app_dict = load_base_data() # was app_data if app_dict and app_dict.emulators.has(key): var emulator = app_dict.emulators[key] emulator.name = new_name emulator.description = new_description + emulator.launch = new_launch # Update properties emulator.properties.clear() @@ -211,6 +217,7 @@ func add_emulator() -> void: var emulator = Emulator.new() emulator.name = "Example System" emulator.description = "An example emulator." + emulator.launch = "launcher" var property = EmulatorProperty.new() #property.standalone = true property.abxy_button = false @@ -220,16 +227,12 @@ func add_emulator() -> void: func modify_emulator_test() -> void: data_handler.modify_link("example_site", "Updated Site", "https://updated-example.com", "Updated description.") - - var new_properties = [] var new_property = EmulatorProperty.new() #new_property.standalone = false new_property.abxy_button = true new_properties.append(new_property) - - data_handler.modify_emulator("example_emulator", "Updated System", "Updated description", new_properties) - + data_handler.modify_emulator("example_emulator", "Updated System", "launcher", "Updated description", new_properties) func parse_config_to_json(file_path: String) -> Dictionary: var config = {} diff --git a/tools/configurator/scripts/emulator.gd b/tools/configurator/scripts/emulator.gd index 31a937d5..52092c80 100644 --- a/tools/configurator/scripts/emulator.gd +++ b/tools/configurator/scripts/emulator.gd @@ -4,4 +4,6 @@ class_name Emulator @export var name: String @export var description: String +@export var launch: String +@export var url: String @export var properties: Array[EmulatorProperty] diff --git a/tools/configurator/scripts/system.gd b/tools/configurator/scripts/system.gd new file mode 100644 index 00000000..d7b92025 --- /dev/null +++ b/tools/configurator/scripts/system.gd @@ -0,0 +1,64 @@ +extends Control + +var app_data := AppData.new() +var current_system := Emulator.new() + +func _ready(): + app_data = data_handler.app_data + _connect_signals() + +func _connect_signals() -> void: + %retroarch_button.pressed.connect(_hide_show_buttons.bind(%retroarch_button,%system_gridcontainer, %action_gridcontainer)) + %mame_button.pressed.connect(_hide_show_buttons.bind(%mame_button,%system_gridcontainer, %action_gridcontainer)) + %ruffle_button.pressed.connect(_hide_show_buttons.bind(%ruffle_button,%system_gridcontainer, %action_gridcontainer)) + %melonds_button.pressed.connect(_hide_show_buttons.bind(%melonds_button,%system_gridcontainer, %action_gridcontainer)) + %pcsx2_button.pressed.connect(_hide_show_buttons.bind(%pcsx2_button,%system_gridcontainer, %action_gridcontainer)) + %duckstation_button.pressed.connect(_hide_show_buttons.bind(%duckstation_button,%system_gridcontainer, %action_gridcontainer)) + %ppsspp_button.pressed.connect(_hide_show_buttons.bind(%ppsspp_button,%system_gridcontainer, %action_gridcontainer)) + %vita3k_button.pressed.connect(_hide_show_buttons.bind(%vita3k_button,%system_gridcontainer, %action_gridcontainer)) + %rpcs3_button.pressed.connect(_hide_show_buttons.bind(%rpcs3_button,%system_gridcontainer, %action_gridcontainer)) + %ryujinx_button.pressed.connect(_hide_show_buttons.bind(%ryujinx_button,%system_gridcontainer, %action_gridcontainer)) + %dolphin_button.pressed.connect(_hide_show_buttons.bind(%dolphin_button,%system_gridcontainer, %action_gridcontainer)) + %primehack_button.pressed.connect(_hide_show_buttons.bind(%primehack_button,%system_gridcontainer, %action_gridcontainer)) + %cemu_button.pressed.connect(_hide_show_buttons.bind(%cemu_button,%system_gridcontainer, %action_gridcontainer)) + %xemu_button.pressed.connect(_hide_show_buttons.bind(%xemu_button,%system_gridcontainer, %action_gridcontainer)) + %esde_button.pressed.connect(_hide_show_buttons.bind(%esde_button,%system_gridcontainer, %action_gridcontainer)) + %help_button.pressed.connect(_do_action.bind(%help_button)) + %launch_button.pressed.connect(_do_action.bind(%launch_button)) + +func _hide_show_buttons(button: Button, buttons_gridcontainer: GridContainer, hidden_gridcontainer: GridContainer) -> void: + current_system = app_data.emulators[button.text.to_lower()] + match button.name: + "retroarch_button", "mame_button", "ruffle_button", "melonds_button", "pcsx2_button", "duckstation_button", \ + "ppsspp_button", "vita3k_button", "rpcs3_button", "ryujinx_button", "dolphin_button", "primehack_button", \ + "cemu_button", "xemu_button", "esde_button": + hidden_gridcontainer.visible = true + if button.toggle_mode == false: + for i in range(buttons_gridcontainer.get_child_count()): + var child = buttons_gridcontainer.get_child(i) + if child is Button and child != button: + child.visible=false + elif button.toggle_mode == true and hidden_gridcontainer.visible == true: + hidden_gridcontainer.visible = false + for i in range(buttons_gridcontainer.get_child_count()): + var child = buttons_gridcontainer.get_child(i) + if child is Button: + child.visible=true + child.toggle_mode = false + if hidden_gridcontainer.visible == true: + button.toggle_mode = true + +func _do_action(button: Button) -> void: + + match [button.name, current_system.name]: + ["help_button", current_system.name]: + class_functions.log_parameters[2] = class_functions.log_text + "Launching " + current_system.name + " Help" + class_functions.execute_command(class_functions.wrapper_command,class_functions.log_parameters, false) + class_functions.launch_help(current_system.url) + ["launch_button", current_system.name]: + class_functions.log_parameters[2] = class_functions.log_text + "Launching " + current_system.name + class_functions.execute_command(class_functions.wrapper_command,class_functions.log_parameters, false) + var launch = class_functions.execute_command(current_system.launch,[], false) + #Log the result TODO + class_functions.log_parameters[2] = class_functions.log_text + "Exit Code: " + str(launch["exit_code"]) + class_functions.execute_command(class_functions.wrapper_command,class_functions.log_parameters, false) diff --git a/tools/configurator/tk_about.gd b/tools/configurator/tk_about.gd index dddde099..35770c2b 100644 --- a/tools/configurator/tk_about.gd +++ b/tools/configurator/tk_about.gd @@ -83,18 +83,34 @@ func _connect_signals() -> void: func _about_button_pressed(id: String) -> void: match id: "rd_web": + class_functions.log_parameters[2] = class_functions.log_text + "Loading website for " + id + class_functions.execute_command(class_functions.wrapper_command,class_functions.log_parameters, false) OS.shell_open(rd_web_button.editor_description) "rd_changelog": + class_functions.log_parameters[2] = class_functions.log_text + "Loading website for " + id + class_functions.execute_command(class_functions.wrapper_command,class_functions.log_parameters, false) OS.shell_open(rd_changelog_button.editor_description) "rd_wiki": + class_functions.log_parameters[2] = class_functions.log_text + "Loading website for " + id + class_functions.execute_command(class_functions.wrapper_command,class_functions.log_parameters, false) OS.shell_open(rd_wiki_button.editor_description) "rd_credits": + class_functions.log_parameters[2] = class_functions.log_text + "Loading website for " + id + class_functions.execute_command(class_functions.wrapper_command,class_functions.log_parameters, false) OS.shell_open(rd_credits_button.editor_description) "rd_donate": + class_functions.log_parameters[2] = class_functions.log_text + "Loading website for " + id + class_functions.execute_command(class_functions.wrapper_command,class_functions.log_parameters, false) OS.shell_open(rd_donate_button.editor_description) "rd_contactus": + class_functions.log_parameters[2] = class_functions.log_text + "Loading website for " + id + class_functions.execute_command(class_functions.wrapper_command,class_functions.log_parameters, false) OS.shell_open(rd_contactus_button.editor_description) "rd_licenses": + class_functions.log_parameters[2] = class_functions.log_text + "Loading website for " + id + class_functions.execute_command(class_functions.wrapper_command,class_functions.log_parameters, false) OS.shell_open(rd_licenses_button.editor_description) _: + class_functions.log_parameters[2] = class_functions.log_text + "Loading website - no matching ID found" + class_functions.execute_command(class_functions.wrapper_command,class_functions.log_parameters, false) print ("Website ID/Link not found")