Add MGBA Standalone (#558)

* begin mgba standalone flatpak code

* add config files

* add srm parser and sh

* fix mistaken merge

* fix mistaken merge

* NYI set emulation folder for now

* convert to appimage

* Hotkeys and Steam Input Profile

* Updating Hotkeys/Steam Input Profile

* Updating Steam Input Profile/Hotkeys

* Cleared recent history

* Update config.ini

* zenity updates

* add uninstall and cli scripts

* add library, gb, and gbc parsers

* add input profile and change parser id

* fix category

* begin mgba standalone flatpak code

* add srm parser and sh

* add preliminary CSO compression for PSP

* zenity updates

* add uninstall and cli scripts

* add library, gb, and gbc parsers

* fix steam categories

* fix rebase errors

* fix chd change

* Fix extra If in uninstall
move mgba to normal install area in zenity

---------

Co-authored-by: rawdatafeel <108900299+rawdatafeel@users.noreply.github.com>
Co-authored-by: Godsbane <godsbane@gmail.com>
This commit is contained in:
Griffin 2023-02-02 13:18:11 -08:00 committed by GitHub
parent 50b45d760d
commit 1c2e970bbd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 1555 additions and 5 deletions

221
configs/mgba/config.ini Normal file
View file

@ -0,0 +1,221 @@
[General]
audioDriver=1
cameraDriver=0
displayDriver=1
maximized=true
multiplayerAudio=all
windowPos=@Point(0 0)
[shader.default.0]
bias%5B0%5D=0
bias%5B1%5D=0
bias%5B2%5D=0
desaturation%5B0%5D=0
desaturation%5B1%5D=0
desaturation%5B2%5D=0
gamma=1
scale%5B0%5D=1
scale%5B1%5D=1
scale%5B2%5D=1
[shortcutAxis]
fastForward=@String(\0-1)
[shortcutButton]
fastForward=-1
[shortcutKey]
fastForward=F
fastForwardRatio.-1=F10
fastForwardRatio.10=F9
fastForwardRatio.2=F1
fastForwardRatio.3=F2
fastForwardRatio.4=F3
fastForwardRatio.5=F4
fastForwardRatio.6=F5
fastForwardRatio.7=F6
fastForwardRatio.8=F7
fastForwardRatio.9=F8
fullscreen=Z
gbPrint=H
holdFastForward=E
holdRewind=G
loadState=B
pause=D
quit=C
reset=X
rewind=
saveState=A
screenshot=I
shutdown=Ctrl+S
[shortcutProfileAxis.Microsoft%20X-Box%20360%20pad%200]
fastForward=@String(\0-1)
[shortcutProfileButton.Microsoft%20X-Box%20360%20pad%200]
fastForward=-1
[gba.input.SDLB]
keyRight=-1
keyDown=-1
axisUpValue=-12288
device0=03000000de280000ff11000001000000
hat0Up=6
tiltAxisY=3
axisLeftAxis=-0
gyroAxisZ=-1
gyroSensitivity=2.2e+09
gyroAxisX=0
axisLeftValue=-12288
axisRightAxis=+0
keyR=5
keyL=4
hat0Right=4
hat0Left=5
tiltAxisX=2
keyB=1
keyUp=-1
gyroAxisY=1
keySelect=6
keyLeft=-1
axisRightValue=12288
keyA=0
hat0Down=7
axisDownValue=12288
keyStart=7
axisUpAxis=-1
axisDownAxis=+1
[gba.input.QT_K]
keyRight=16777236
keyDown=16777237
keyR=83
keyL=65
keyB=90
keyUp=16777235
keySelect=16777219
keyLeft=16777234
keyA=88
keyStart=16777220
[gba.input-profile.Microsoft X-Box 360 pad 0]
keyRight=-1
keyDown=-1
axisUpValue=-12288
hat0Up=6
axisLeftAxis=-0
axisLeftValue=-12288
axisRightAxis=+0
keyR=5
keyL=4
hat0Right=4
hat0Left=5
keyB=1
keyUp=-1
keySelect=6
keyLeft=-1
axisRightValue=12288
keyA=0
hat0Down=7
axisDownValue=12288
keyStart=7
axisUpAxis=-1
axisDownAxis=+1
[gba.input-profile.03000000de280000ff11000001000000]
tiltAxisY=3
gyroAxisX=0
gyroAxisZ=-1
gyroSensitivity=2.2e+09
tiltAxisX=2
gyroAxisY=1
[ports.qt]
fullscreen=0
showOSD=1
suspendScreensaver=1
logFile=
width=2560
skipBios=0
gb.pal[4]=8953928
gb.pal[5]=4745264
gb.pal[7]=1583112
pauseOnMinimize=0
useDiscordPresence=0
autoload=1
allowOpposingDirections=0
muteOnMinimize=0
gb.bios=
logToStdout=0
lockIntegerScaling=0
gb.pal[0]=8953928
logLevel=7
pauseOnFocusLost=0
frameskip=0
hwaccelVideo=1
height=1330
rewindBufferCapacity=1000
autofireThreshold=1
showFilename=0
vbaBugCompat=1
savestatePath=/run/media/mmcblk0p1/Emulation/saves/mgba/states
gb.pal[10]=2637856
sampleRate=44100
showFilenameInLibrary=0
lockAspectRatio=1
lastDirectory=/run/media/mmcblk0p1/Emulation/roms
cheatsPath=/run/media/mmcblk0p1/Emulation/storage/mgba/cheats
resampleVideo=0
autosave=0
fastForwardRatio=-1
logLevel.core.status=111
cgb.model=CGB
showLibrary=1
loadStateExtdata=9
interframeBlending=0
sgb.borders=1
videoScale=5
updateAutoCheck=0
gb.pal[2]=2637856
showResetInfo=0
showFps=1
cheatAutoload=1
gb.colors=1
audioSync=1
fastForwardVolume=256
sgb.model=SGB
fastForwardHeldRatio=-1
gbc.bios=
sgb.bios=
screenshotPath=/run/media/mmcblk0p1/Emulation/storage/mgba/screenshots
savegamePath=/run/media/mmcblk0p1/Emulation/saves/mgba/saves
idleOptimization=ignore
gb.pal[1]=4745264
gb.pal[8]=8953928
dynamicTitle=1
gb.model=DMG
fastForwardMute=0
volume=256
videoSync=0
rewindEnable=1
logLevel.gba.bios=33
preload=0
cheatAutosave=1
gba.forceGbp=0
cgb.sgbModel=CGB
gb.pal[11]=1583112
cgb.hybridModel=CGB
libraryStyle=1
mute=0
fpsTarget=59.72750056960583
gb.pal[6]=2637856
gb.pal[9]=4745264
showFrameCounter=0
gba.bios=
muteOnFocusLost=0
patchPath=/run/media/mmcblk0p1/Emulation/storage/mgba/patches
audioBuffers=1536
saveStateExtdata=31
useBios=1
logToFile=0
gb.pal[3]=1583112

56
configs/mgba/qt.ini Normal file
View file

@ -0,0 +1,56 @@
[General]
audioDriver=1
cameraDriver=0
displayDriver=1
maximized=true
multiplayerAudio=all
windowPos=@Point(0 0)
[shader.default.0]
bias%5B0%5D=0
bias%5B1%5D=0
bias%5B2%5D=0
desaturation%5B0%5D=0
desaturation%5B1%5D=0
desaturation%5B2%5D=0
gamma=1
scale%5B0%5D=1
scale%5B1%5D=1
scale%5B2%5D=1
[shortcutAxis]
fastForward=@String(\0-1)
[shortcutButton]
fastForward=-1
[shortcutKey]
fastForward=F
fastForwardRatio.-1=F10
fastForwardRatio.10=F9
fastForwardRatio.2=F1
fastForwardRatio.3=F2
fastForwardRatio.4=F3
fastForwardRatio.5=F4
fastForwardRatio.6=F5
fastForwardRatio.7=F6
fastForwardRatio.8=F7
fastForwardRatio.9=F8
fullscreen=Z
gbPrint=H
holdFastForward=E
holdRewind=G
loadState=B
pause=D
quit=C
reset=X
rewind=
saveState=A
screenshot=I
shutdown=Ctrl+S
[shortcutProfileAxis.Microsoft%20X-Box%20360%20pad%200]
fastForward=@String(\0-1)
[shortcutProfileButton.Microsoft%20X-Box%20360%20pad%200]
fastForward=-1

View file

@ -0,0 +1,894 @@
"controller_mappings"
{
"version" "3"
"revision" "46"
"title" "EmuDeck - mGBA"
"description" "Your modified layout for this game."
"creator" "76561199036238022"
"progenitor" ""
"url" "template://mgba_controller_config.vdf"
"export_type" "template"
"controller_type" "controller_neptune"
"controller_caps" "23117823"
"major_revision" "0"
"minor_revision" "0"
"Timestamp" "-136895680"
"localization"
{
"english"
{
"title" "mGBA Menu Hotkeys"
"description" "mGBA Menu Hotkeys"
}
"czech"
{
"title" "Gamepad s ovládáním kamery"
"description" "Tato šablona je pro většinu her podporujících gamepad a disponujících kamerou z pohledu první nebo třetí osoby. Mezi takové hry patří například akční hry z pohledu první nebo třetí osoby."
}
"danish"
{
"title" "Gamepad med kamerastyring"
"description" "Denne skabelon er til de fleste spil, der allerede har indbygget gamepad-understøttelse og har et første- eller tredjepersonskontrolleret kamera. FPS eller tredjepersons adventure-spil osv."
}
"dutch"
{
"title" "Gamepad met camerabesturing"
"description" "Deze template is voor de meeste spellen die reeds ingebouwde gamepadondersteuning hebben en die een camera hebben die wordt bestuurd in de eerste of derde persoon. FPS, third person-avontuurspellen, etc."
}
"finnish"
{
"title" "Kameraa ohjaava peliohjain"
"description" "Tämä malli on useimmille muita ohjaimia valmiiksi tukeville peleille, joissa on ensimmäisessä tai kolmannessa persoonassa ohjattava kamera. FPS-pelit, kolmannen persoonan seikkailupelit jne."
}
"french"
{
"title" "Manette avec contrôles caméra"
"description" "Ce modèle fonctionne pour la plupart des jeux ayant un support manette intégré et une caméra contrôlée à la première ou à la troisième personne. FPS, jeux d'aventure à la troisième personne, etc."
}
"german"
{
"title" "Gamepad mit Kamerasteuerung"
"description" "Diese Vorlage ist für die meisten Spiele konzipiert, die bereits volle Untersützung für Gamepads mit sich bringen und eine First- oder Third-Person-Kamerasteuerung haben. Gedacht für Ego-Shooter, Third-Person-Abenteuerspiele usw."
}
"hungarian"
{
"title" "Gamepad kamerairányítással"
"description" "Ez a sablon a legtöbb olyan játékhoz való, melyek már rendelkeznek beépített gamepad-támogatással, és van első vagy harmadik személyű kezelésű kamerájuk. Ilyenek az FPS vagy harmadik személyű kalandjátékok stb."
}
"italian"
{
"title" "Gamepad con controlli della telecamera"
"description" "Questo template è pensato per la maggior parte dei giochi che hanno già il supporto per gamepad integrato e hanno la visuale controllata in prima o terza persona. Giochi d'avventura in terza persona, FPS ecc."
}
"japanese"
{
"title" "カメラコントロール機能を持つゲームパッド"
"description" "FPS や、アドベンチャーゲームのような、一人称または三人称のカメラ操作を行うゲームパッドに標準対応したゲーム用のテンプレートです。"
}
"koreana"
{
"title" "카메라 조작 기능이 있는 게임패드"
"description" "이 템플릿은 이미 게임패드 지원이 내장되어 있으며 1인칭 또는 3인칭 시점 카메라 조작을 지원하는 대부분의 게임을 위한 것입니다. FPS, 3인칭 어드벤쳐 게임 및 기타."
}
"polish"
{
"title" "Kontroler obsługujący kamerę"
"description" "Ten szablon jest dla większości gier, które mają wbudowane wsparcie dla kontrolerów, a także kamerę kontrolowaną z perspektywy pierwszej lub trzeciej osoby, np. FPS-y bądź gry przygodowe."
}
"portuguese"
{
"title" "Comando com controlos de câmara"
"description" "Este modelo é indicado para jogos que já têm compatibilidade nativa com comando e têm uma câmara que pode ser controlada. Por exemplo, jogos em primeira ou terceira pessoa, do género de aventura, de tiros, etc."
}
"romanian"
{
"title" "Gamepad cu controale pentru cameră"
"description" "Acest șablon este pentru majoritatea jocurilor care au deja suport pentru gamepad implementat și au o cameră controlată din perspectivă first sau third person. FPS sau jocuri de aventură third person, etc."
}
"russian"
{
"title" "Геймпад с управлением камерой"
"description" "Этот шаблон предназначен для большинства игр от первого или третьего лица, в которых уже есть встроенная поддержка геймпада (например, для шутеров или экшенов)."
}
"spanish"
{
"title" "Mando con controles de cámara"
"description" "Esta plantilla es para la mayoría de juegos que ya incluyen de serie compatibilidad con mando y disponen de cámara controlada en primera o tercera persona: FPS, juegos de aventura en tercera persona, etc."
}
"swedish"
{
"title" "Gamepad med kamerakontroller"
"description" "Denna mall är för de flesta spel som redan har inbyggt stöd för spelkontroller och har en kamera som styrs i första- eller tredjeperson. FPS eller äventyrsspel etc."
}
"schinese"
{
"title" "支持视角控制的手柄"
"description" "该模板适用于已内置手柄支持,并且拥有第一或第三人称控制视角的大多数游戏。包括 FPS 或第三人称冒险游戏等。"
}
"thai"
{
"title" "เกมแพดพร้อมการควบคุมมุมกล้อง"
"description" "แม่แบบนี้ใช้สำหรับเกมส่วนมากที่มีการรองรับเกมแพดมาในตัวอยู่แล้ว และมีการควบคุมมุมกล้องในมุมมองบุคคลที่หนึ่งหรือสาม เช่น เกมยิงมุมมองบุคคลที่หนึ่ง หรือเกมผจญภัยมุมมองบุคคลที่สาม ฯลฯ"
}
"brazilian"
{
"title" "Controle com controle de câmera"
"description" "Este modelo é para jogos já compatíveis com controles que possuem uma câmera controlável, seja em primeira ou terceira pessoa, como jogos de tiro, aventura, etc."
}
"bulgarian"
{
"title" "Геймпад с управление на камерата"
"description" "Този шаблон е за повечето игри, които вече имат вградена поддръжка на геймпад и включват управление на камерата от първо или трето лице. Екшъни от първо лице, приключенски игри от трето лице и т.н."
}
"greek"
{
"title" "Χειριστήριο με πλήκτρα κάμερας"
"description" "Αυτό το πρότυπο είναι για τα περισσότερα παιχνίδια που έχουν ενσωματωμένη υποστήριξη χειριστηρίου και έχουν μια ελεγχόμενη κάμερα πρώτου ή τρίτου προσώπου. FPS ή παιχνίδια περιπέτειας τρίτου προσώπου κλπ."
}
"turkish"
{
"title" "Kamera Kontrollü Oyun Kumandası"
"description" "Bu şablon hali hazırda oyun içi oyun kumandası desteği ve birincil veya üçüncü kişi kontrollü kameraya sahip oyunlar içindir. FPS veya Üçüncü Kişi Macera oyunları vb."
}
"ukrainian"
{
"title" "Ґеймпад з елементами керування камерою"
"description" "Цей шаблон для більшості ігор, що вже мають вбудовану підтримку ґеймпада і у яких камера керується від першої або третьої особи. Шутери від першої особи чи пригодницькі ігри від третьої особи тощо."
}
}
"group"
{
"id" "0"
"mode" "four_buttons"
"name" ""
"description" ""
"inputs"
{
"button_a"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button A, , "
}
}
}
"disabled_activators"
{
}
}
"button_b"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button B, , "
}
}
}
"disabled_activators"
{
}
}
"button_x"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button X, , "
}
}
}
"disabled_activators"
{
}
}
"button_y"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button Y, , "
}
}
}
"disabled_activators"
{
}
}
}
}
"group"
{
"id" "1"
"mode" "dpad"
"name" ""
"description" ""
"inputs"
{
"dpad_north"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button dpad_up, , "
}
"settings"
{
"haptic_intensity" "1"
}
}
}
"disabled_activators"
{
}
}
"dpad_south"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button dpad_down, , "
}
"settings"
{
"haptic_intensity" "1"
}
}
}
"disabled_activators"
{
}
}
"dpad_east"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button dpad_right, , "
}
"settings"
{
"haptic_intensity" "1"
}
}
}
"disabled_activators"
{
}
}
"dpad_west"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button dpad_left, , "
}
"settings"
{
"haptic_intensity" "1"
}
}
}
"disabled_activators"
{
}
}
}
}
"group"
{
"id" "2"
"mode" "joystick_move"
"name" ""
"description" ""
"inputs"
{
"click"
{
"activators"
{
"Soft_Press"
{
"bindings"
{
"binding" "xinput_button JOYSTICK_RIGHT, , "
}
}
}
"disabled_activators"
{
}
}
}
}
"group"
{
"id" "3"
"mode" "joystick_move"
"name" ""
"description" ""
"inputs"
{
"click"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button JOYSTICK_LEFT, , "
}
"settings"
{
"haptic_intensity" "2"
}
}
}
"disabled_activators"
{
}
}
}
"settings"
{
"deadzone_inner_radius" "7199"
}
}
"group"
{
"id" "4"
"mode" "trigger"
"name" ""
"description" ""
"inputs"
{
}
"settings"
{
"output_trigger" "1"
}
}
"group"
{
"id" "5"
"mode" "trigger"
"name" ""
"description" ""
"inputs"
{
}
"settings"
{
"output_trigger" "2"
}
}
"group"
{
"id" "6"
"mode" "joystick_move"
"name" ""
"description" ""
"inputs"
{
"click"
{
"activators"
{
"Soft_Press"
{
"bindings"
{
"binding" "xinput_button JOYSTICK_RIGHT, , "
}
}
}
"disabled_activators"
{
}
}
}
}
"group"
{
"id" "8"
"mode" "joystick_move"
"name" ""
"description" ""
"inputs"
{
"click"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button JOYSTICK_RIGHT, , "
}
}
}
"disabled_activators"
{
}
}
}
}
"group"
{
"id" "9"
"mode" "dpad"
"name" ""
"description" ""
"inputs"
{
"dpad_north"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button DPAD_UP, , "
}
"settings"
{
"haptic_intensity" "1"
}
}
}
"disabled_activators"
{
}
}
"dpad_south"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button DPAD_DOWN, , "
}
"settings"
{
"haptic_intensity" "1"
}
}
}
"disabled_activators"
{
}
}
"dpad_east"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button DPAD_RIGHT, , "
}
"settings"
{
"haptic_intensity" "1"
}
}
}
"disabled_activators"
{
}
}
"dpad_west"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button DPAD_LEFT, , "
}
"settings"
{
"haptic_intensity" "1"
}
}
}
"disabled_activators"
{
}
}
}
"settings"
{
"requires_click" "0"
"haptic_intensity_override" "0"
}
}
"group"
{
"id" "10"
"mode" "single_button"
"name" ""
"description" ""
"inputs"
{
"click"
{
"activators"
{
"Soft_Press"
{
"bindings"
{
"binding" "xinput_button START, , "
}
}
}
"disabled_activators"
{
}
}
}
}
"group"
{
"id" "11"
"mode" "single_button"
"name" ""
"description" ""
"inputs"
{
"click"
{
"activators"
{
"Soft_Press"
{
"bindings"
{
"binding" "xinput_button SELECT, , "
}
}
}
"disabled_activators"
{
}
}
}
}
"group"
{
"id" "12"
"mode" "mouse_joystick"
"name" ""
"description" ""
"inputs"
{
"click"
{
"activators"
{
"Soft_Press"
{
"bindings"
{
"binding" "xinput_button JOYSTICK_RIGHT, , "
}
}
}
"disabled_activators"
{
}
}
}
}
"group"
{
"id" "14"
"mode" "touch_menu"
"name" ""
"description" ""
"inputs"
{
"touch_menu_button_0"
{
"activators"
{
"Long_Press"
{
"bindings"
{
"binding" "key_press A, Save State, ghost_075_utility_020.png, #232323 #0074ad"
}
}
}
"disabled_activators"
{
}
}
"touch_menu_button_1"
{
"activators"
{
"Long_Press"
{
"bindings"
{
"binding" "controller_action empty_binding, , "
}
}
}
"disabled_activators"
{
}
}
"touch_menu_button_2"
{
"activators"
{
"Long_Press"
{
"bindings"
{
"binding" "key_press B, Load State, ghost_075_utility_010.png, #232323 #0074ad"
}
}
}
"disabled_activators"
{
}
}
"touch_menu_button_3"
{
"activators"
{
"Long_Press"
{
"bindings"
{
"binding" "key_press D, Pause/Play, ghost_090_media_0210.png, #232323 #E4E4E4"
}
}
}
"disabled_activators"
{
}
}
"touch_menu_button_4"
{
"activators"
{
"Long_Press"
{
"bindings"
{
"binding" "key_press Z, Menu, ghost_070_setting_0030.png, #232323 #E4E4E4"
}
}
}
"disabled_activators"
{
}
}
"touch_menu_button_5"
{
"activators"
{
"Long_Press"
{
"bindings"
{
"binding" "key_press X, Reset, ghost_075_utility_040.png, #232323 #E4E4E4"
}
}
}
"disabled_activators"
{
}
}
"touch_menu_button_6"
{
"activators"
{
"Long_Press"
{
"bindings"
{
"binding" "key_press G, Rewind, ghost_090_media_0200.png, #232323 #00AD00"
}
}
}
"disabled_activators"
{
}
}
"touch_menu_button_7"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "controller_action empty_sub_command, , "
}
}
}
"disabled_activators"
{
}
}
"touch_menu_button_8"
{
"activators"
{
"Long_Press"
{
"bindings"
{
"binding" "key_press F, Fast Forward, ghost_090_media_0190.png, #232323 #00AD3D"
}
}
}
"disabled_activators"
{
}
}
}
"settings"
{
"mouse_smoothing" "0"
"touch_menu_button_count" "9"
"touch_menu_scale" "120"
"touch_menu_show_labels" "0"
}
}
"group"
{
"id" "7"
"mode" "switches"
"name" ""
"description" ""
"inputs"
{
"button_escape"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button start, , "
}
}
}
"disabled_activators"
{
}
}
"button_menu"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button select, , "
}
}
}
"disabled_activators"
{
}
}
"left_bumper"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button shoulder_left, , "
}
}
}
"disabled_activators"
{
}
}
"right_bumper"
{
"activators"
{
"Full_Press"
{
"bindings"
{
"binding" "xinput_button shoulder_right, , "
}
}
}
"disabled_activators"
{
}
}
"button_capture"
{
"activators"
{
"release"
{
"bindings"
{
"binding" "controller_action system_key_1, , "
}
}
}
"disabled_activators"
{
}
}
}
}
"preset"
{
"id" "0"
"name" "Default"
"group_source_bindings"
{
"7" "switch active"
"0" "button_diamond active"
"1" "left_trackpad inactive"
"11" "left_trackpad inactive"
"14" "left_trackpad active"
"2" "right_trackpad inactive"
"6" "right_trackpad inactive"
"10" "right_trackpad inactive"
"12" "right_trackpad active"
"3" "joystick active"
"4" "left_trigger active"
"5" "right_trigger active"
"8" "right_joystick active"
"9" "dpad active"
}
}
"settings"
{
"left_trackpad_mode" "0"
"right_trackpad_mode" "0"
}
}

View file

@ -1504,6 +1504,68 @@
}
}
},
{
"parserType": "Glob",
"configTitle": "Nintendo GameBoy - mGBA",
"steamCategory": "${GameBoy}",
"executableModifier": "\"${exePath}\"",
"romDirectory": "${romsdirglobal}/gb",
"steamDirectory": "${steamdirglobal}",
"startInDirectory": "",
"titleModifier": "${fuzzyTitle}",
"executableArgs": "-f \"'${filePath}'\"",
"onlineImageQueries": "${${fuzzyTitle}}",
"imagePool": "${fuzzyTitle}",
"imageProviders": ["SteamGridDB"],
"defaultImage": "",
"defaultTallImage": "",
"defaultHeroImage": "",
"defaultLogoImage": "",
"defaultIcon": "/home/deck/.config/EmuDeck/backend/configs/steam-rom-manager/userData/img/default/icon.png",
"localImages": "",
"localTallImages": "",
"localHeroImages": "",
"localLogoImages": "",
"localIcons": "",
"disabled": true,
"userAccounts": {
"specifiedAccounts": "",
"skipWithMissingDataDir": true,
"useCredentials": true
},
"parserInputs": {
"glob": "${title}@(.7z|.7Z|.gb|.GB|.dmg|.DMG|.zip|.ZIP)"
},
"titleFromVariable": {
"limitToGroups": "",
"caseInsensitiveVariables": false,
"skipFileIfVariableWasNotFound": false,
"tryToMatchTitle": false
},
"fuzzyMatch": {
"replaceDiacritics": true,
"removeCharacters": true,
"removeBrackets": true
},
"executable": {
"path": "/run/media/mmcblk0p1/Emulation/tools/launchers/mgba.sh",
"shortcutPassthrough": false,
"appendArgsToExecutable": false
},
"parserId": "164785621855061650",
"version": 10,
"imageProviderAPIs": {
"SteamGridDB": {
"nsfw": false,
"humor": false,
"imageMotionTypes": ["static"],
"styles": [],
"stylesHero": [],
"stylesLogo": [],
"stylesIcon": []
}
}
},
{
"parserType": "Glob",
"configTitle": "Nintendo GameBoy Color - Retroarch - Gambatte",
@ -1566,6 +1628,68 @@
}
}
},
{
"parserType": "Glob",
"configTitle": "Nintendo GameBoy Color - mGBA",
"steamCategory": "${GameBoy Color}",
"executableModifier": "\"${exePath}\"",
"romDirectory": "${romsdirglobal}/gbc",
"steamDirectory": "${steamdirglobal}",
"startInDirectory": "",
"titleModifier": "${fuzzyTitle}",
"executableArgs": "-f \"'${filePath}'\"",
"onlineImageQueries": "${${fuzzyTitle}}",
"imagePool": "${fuzzyTitle}",
"imageProviders": ["SteamGridDB"],
"defaultImage": "",
"defaultTallImage": "",
"defaultHeroImage": "",
"defaultLogoImage": "",
"defaultIcon": "/home/deck/.config/EmuDeck/backend/configs/steam-rom-manager/userData/img/default/icon.png",
"localImages": "",
"localTallImages": "",
"localHeroImages": "",
"localLogoImages": "",
"localIcons": "",
"disabled": true,
"userAccounts": {
"specifiedAccounts": "",
"skipWithMissingDataDir": true,
"useCredentials": true
},
"parserInputs": {
"glob": "${title}@(.7z|.7Z|.gb|.GB|.gbc|.GBC|.zip|.ZIP)"
},
"titleFromVariable": {
"limitToGroups": "",
"caseInsensitiveVariables": false,
"skipFileIfVariableWasNotFound": false,
"tryToMatchTitle": false
},
"fuzzyMatch": {
"replaceDiacritics": true,
"removeCharacters": true,
"removeBrackets": true
},
"executable": {
"path": "/run/media/mmcblk0p1/Emulation/tools/launchers/mgba.sh",
"shortcutPassthrough": false,
"appendArgsToExecutable": false
},
"parserId": "164785621855061650",
"version": 10,
"imageProviderAPIs": {
"SteamGridDB": {
"nsfw": false,
"humor": false,
"imageMotionTypes": ["static"],
"styles": [],
"stylesHero": [],
"stylesLogo": [],
"stylesIcon": []
}
}
},
{
"parserType": "Glob",
"configTitle": "Nintendo GameBoy Advance - Retroarch - mGBA",
@ -1628,6 +1752,68 @@
}
}
},
{
"parserType": "Glob",
"configTitle": "Nintendo GameBoy Advance - mGBA (Standalone)",
"steamCategory": "${GameBoy Advance}",
"executableModifier": "\"${exePath}\"",
"romDirectory": "${romsdirglobal}/gba",
"steamDirectory": "${steamdirglobal}",
"startInDirectory": "",
"titleModifier": "${fuzzyTitle}",
"executableArgs": "-f \"'${filePath}'\"",
"onlineImageQueries": "${${fuzzyTitle}}",
"imagePool": "${fuzzyTitle}",
"imageProviders": ["SteamGridDB"],
"defaultImage": "",
"defaultTallImage": "",
"defaultHeroImage": "",
"defaultLogoImage": "",
"defaultIcon": "/home/deck/.config/EmuDeck/backend/configs/steam-rom-manager/userData/img/default/icon.png",
"localImages": "",
"localTallImages": "",
"localHeroImages": "",
"localLogoImages": "",
"localIcons": "",
"disabled": true,
"userAccounts": {
"specifiedAccounts": "",
"skipWithMissingDataDir": true,
"useCredentials": true
},
"parserInputs": {
"glob": "${title}@(.7z|.7Z|.gba|.GBA|.zip|.ZIP)"
},
"titleFromVariable": {
"limitToGroups": "",
"caseInsensitiveVariables": false,
"skipFileIfVariableWasNotFound": false,
"tryToMatchTitle": false
},
"fuzzyMatch": {
"replaceDiacritics": true,
"removeCharacters": true,
"removeBrackets": true
},
"executable": {
"path": "/run/media/mmcblk0p1/Emulation/tools/launchers/mgba.sh",
"shortcutPassthrough": false,
"appendArgsToExecutable": false
},
"parserId": "164785621855061652",
"version": 10,
"imageProviderAPIs": {
"SteamGridDB": {
"nsfw": false,
"humor": false,
"imageMotionTypes": ["static"],
"styles": [],
"stylesHero": [],
"stylesLogo": [],
"stylesIcon": []
}
}
},
{
"parserType": "Glob",
"configTitle": "Nintendo GameCube - Dolphin",

View file

@ -0,0 +1,123 @@
#!/bin/bash
#variables
mGBA_emuName="mGBA"
mGBA_emuType="AppImage"
mGBA_emuPath="$HOME/Applications/mGBA.AppImage"
mGBA_configFile="$HOME/.config/mgba/config.ini"
#cleanupOlderThings
mGBA_cleanup(){
echo "NYI"
}
#Install
mGBA_install(){
echo "Begin mGBA Install"
installEmuAI "mGBA" "$(getReleaseURLGH "mgba-emu/mgba" "x64.appimage")" #mgba.AppImage
}
#ApplyInitialSettings
mGBA_init(){
setMSG "Initializing $mGBA_emuName settings."
configEmuAI "$mGBA_emuName" "config" "$HOME/.config/mgba" "$EMUDECKGIT/configs/mgba" "true"
mGBA_setupStorage
mGBA_setEmulationFolder
mGBA_setupSaves
mGBA_addSteamInputProfile
}
#update
mGBA_update(){
setMSG "Updating $mGBA_emuName settings."
configEmuAI "$mGBA_emuName" "config" "$HOME/.config/mgba" "$EMUDECKGIT/configs/mgba"
mGBA_setupStorage
mGBA_setEmulationFolder
mGBA_setupSaves
mGBA_addSteamInputProfile
}
#ConfigurePaths
mGBA_setEmulationFolder(){
echo "NYI"
}
#SetupSaves
mGBA_setupSaves(){
mkdir -p "$savesPath/mgba/saves"
mkdir -p "$savesPath/mgba/states"
}
#SetupStorage
mGBA_setupStorage(){
mkdir -p "$storagePath/mgba/cheats"
mkdir -p "$storagePath/mgba/patches"
mkdir -p "$storagePath/mgba/screenshots"
}
#WipeSettings
mGBA_wipe(){
setMSG "Wiping $mGBA_emuName settings."
rm -rf "$HOME/.config/mgba"
}
#Uninstall
mGBA_uninstall(){
setMSG "Uninstalling $mGBA_emuName."
rm -rf "$emuPath"
}
#setABXYstyle
mGBA_setABXYstyle(){
echo "NYI"
}
#Migrate
mGBA_migrate(){
echo "NYI"
}
#WideScreenOn
mGBA_wideScreenOn(){
echo "NYI"
}
#WideScreenOff
mGBA_wideScreenOff(){
echo "NYI"
}
#BezelOn
mGBA_bezelOn(){
echo "NYI"
}
#BezelOff
mGBA_bezelOff(){
echo "NYI"
}
mGBA_IsInstalled(){
if [ -e "$mGBA_emuPath" ]; then
echo "true"
else
echo "false"
fi
}
mGBA_resetConfig(){
mGBA_init &>/dev/null && echo "true" || echo "false"
}
#finalExec - Extra stuff
mGBA_finalize(){
echo "NYI"
}
mGBA_addSteamInputProfile(){
echo "NYI"
setMSG "Adding $mGBA_emuName Steam Input Profile."
rsync -r "$EMUDECKGIT/configs/steam-input/mGBA_controller_config.vdf" "$HOME/.steam/steam/controller_base/templates/"
}

View file

@ -64,12 +64,11 @@ source "$EMUDECKGIT"/functions/EmuScripts/emuDeckPCSX2QT.sh
source "$EMUDECKGIT"/functions/EmuScripts/emuDeckMAME.sh
source "$EMUDECKGIT"/functions/EmuScripts/emuDeckScummVM.sh
source "$EMUDECKGIT"/functions/EmuScripts/emuDeckVita3K.sh
source "$EMUDECKGIT"/functions/EmuScripts/emuDeckMGBA.sh
source "$EMUDECKGIT"/functions/EmuScripts/emuDeckRMG.sh
source "$EMUDECKGIT"/functions/EmuScripts/emuDeckMelonDS.sh
#Soon
#source "$EMUDECKGIT"/EmuScripts/emuDeckMgba.sh
#source "$EMUDECKGIT"/EmuScripts/emuDeckRedream.sh
#source "$EMUDECKGIT"/EmuScripts/emuDeckMAMEProton.sh

View file

@ -252,6 +252,7 @@ function createUpdateSettingsFile(){
defaultSettingsList+=("doSetupVita3K=true")
defaultSettingsList+=("doSetupRMG=true")
#defaultSettingsList+=("doSetupMelon=true")
defaultSettingsList+=("doSetupMGBA=true")
defaultSettingsList+=("doInstallSRM=true")
defaultSettingsList+=("doInstallESDE=true")
defaultSettingsList+=("doInstallRA=true")
@ -272,6 +273,7 @@ function createUpdateSettingsFile(){
defaultSettingsList+=("doInstallScummVM=true")
defaultSettingsList+=("doInstallVita3K=true")
#defaultSettingsList+=("doInstallMelon=false")
defaultSettingsList+=("doInstallMGBA=false")
defaultSettingsList+=("doInstallCHD=true")
defaultSettingsList+=("doInstallPowertools=false")
defaultSettingsList+=("doInstallGyro=false")

View file

@ -398,6 +398,7 @@ if [ "$RUNCHOICE" == 1 ]; then
if [[ $doSelectEmulators == "true" ]]; then
emuTable=()
emuTable+=(TRUE "GameBoy / Color / Advance" "mGBA")
emuTable+=(TRUE "Multiple" "RetroArch")
emuTable+=(TRUE "Metroid Prime" "PrimeHack")
emuTable+=(TRUE "PS2" "PCSX2")
@ -435,6 +436,9 @@ if [ "$RUNCHOICE" == 1 ]; then
if [ $ans -eq 0 ]; then
echo "Emu Install selected: $emusToInstall"
if [[ "$emusToInstall" == *"mGBA"* ]]; then
setSetting doInstallMGBA true
fi
if [[ "$emusToInstall" == *"RetroArch"* ]]; then
setSetting doInstallRA true
fi
@ -553,6 +557,7 @@ if [ "$RUNCHOICE" == 1 ]; then
if [ -f "$SECONDTIME" ]; then
emuTable=()
emuTable+=(TRUE "mGBA")
emuTable+=(TRUE "RetroArch")
emuTable+=(TRUE "PrimeHack")
emuTable+=(TRUE "PCSX2")
@ -587,6 +592,9 @@ if [ "$RUNCHOICE" == 1 ]; then
echo -e "EmuDeck ${version}"
if [ $ans -eq 0 ]; then
echo "Emulators to reinstall selected: $emusToReset"
if [[ "$emusToReset" == *"mGBA"* ]]; then
setSetting doSetupMGBA true
fi
if [[ "$emusToReset" == *"RetroArch"* ]]; then
setSetting doSetupRA true
fi
@ -648,6 +656,7 @@ if [ "$RUNCHOICE" == 1 ]; then
fi
else
#easy mode settings
setSetting doInstallMGBA true
setSetting doInstallRA true
setSetting doInstallDolphin true
setSetting doInstallPCSX2 true
@ -738,6 +747,9 @@ if [ $doInstallSRM == "true" ]; then
SRM_install
fi
#Emulators Installation
if [ "$doInstallMGBA" == "true" ]; then
MGBA_install
fi
if [ "$doInstallPCSX2" == "true" ]; then
PCSX2_install
fi
@ -806,6 +818,9 @@ fi
if [ "$doSetupDolphin" == "true" ]; then
Dolphin_init
fi
if [ "$doSetupMGBA" == "true" ]; then
mGBA_init
fi
if [ "$doSetupPCSX2" == "true" ]; then
PCSX2_init
fi

View file

@ -25,6 +25,7 @@ doSetupESDE=true
doSetupSRM=true
doSetupPCSX2QT=true
#doSetupMelon=true
doSetupMGBA=true
#Install all systems by default
doInstallSRM=true
@ -46,6 +47,7 @@ doInstallXemu=false
doInstallPCSX2QT=false
doInstallMAME=true
#doInstallMelon=false
doInstallMGBA=false
doInstallCHD=false
doInstallPowertools=false
doInstallGyro=false

View file

@ -312,6 +312,10 @@ if [ $doInstallVita3K == "true" ]; then
echo "Vita3K_install"
Vita3K_install
fi
if [ $doInstallMGBA == "true" ]; then
echo "mGBA_install"
mGBA_install
fi
#Xenia - We need to install Xenia after creating the Roms folders!
if [ "$doInstallXenia" == "true" ]; then
echo "Xenia_install"
@ -397,6 +401,10 @@ if [ "$doSetupVita3K" == "true" ]; then
echo "Vita3K_init"
Vita3K_init
fi
if [ "$doSetupMGBA" == "true" ]; then
echo "mGBA_init"
mGBA_init
fi
if [ "${doSetupCemuNative}" == "true" ]; then
echo "CemuNative_init"
CemuNative_init

24
tools/launchers/mgba.sh Normal file
View file

@ -0,0 +1,24 @@
#!/bin/sh
emuName="mGBA" #parameterize me
emufolder="$HOME/Applications" # has to be applications for ES-DE to find it
#find full path to emu executable
exe=$(find $emufolder -iname "${emuName}*.AppImage" | sort -n | cut -d' ' -f 2- | tail -n 1 2>/dev/null)
#if appimage doesn't exist fall back to flatpak.
if [[ $exe == '' ]]; then
#flatpak
flatpakApp=$(flatpak list --app --columns=application | grep $emuName)
exe="/usr/bin/flatpak run "$flatpakApp
else
#make sure that file is executable
chmod +x $exe
fi
#run the executable with the params.
#Fix first '
param="${@}"
substituteWith='"'
param=${param/\'/"$substituteWith"}
#Fix last ' on command
param=$(echo "$param" | sed 's/.$/"/')
eval "${exe} ${param}"

View file

@ -17,6 +17,7 @@ doUninstallPPSSPP=true
doUninstallMame=true
doUninstallSRM=true
doUninstallESDE=true
doUninstallMGBA=true
doUninstallRMG=true
LOGFILE="$HOME/Desktop/emudeck-uninstall.log"
@ -138,7 +139,10 @@ if [ "$doUninstall" == true ]; then
fi
if [[ "$emusToUninstall" == *"Mame"* ]]; then
doUninstallMame=false
fi
fi
if [[ "$emusToUninstall" == *"mGBA"* ]]; then
doUninstallMGBA=false
fi
if [[ "$emusToUninstall" == *"RMG"* ]]; then
doUninstallRMG=false
fi
@ -209,6 +213,10 @@ if [ "$doUninstall" == true ]; then
flatpak uninstall org.mamedev.MAME --system -y
rm -rf ~/.var/app/org.mamedev.MAME &>> /dev/null
fi
if [[ "$doUninstallMGBA" == true ]]; then
rm -rf ~/Applications/mGBA.AppImage &>> /dev/null
rm -rf ~/.config/mgba
fi
if [[ "$doUninstallRMG" == true ]]; then
flatpak uninstall org.com.github.Rosalie241.RMG --system -y
rm -rf ~/.var/app/com.github.Rosalie241.RMG &>> /dev/null

View file

@ -323,7 +323,8 @@ if [ "$expert" == "true" ]; then
emuTable+=(TRUE "WiiU" "Cemu")
emuTable+=(TRUE "XBox" "Xemu")
emuTable+=(TRUE "N64" "RMG")
emuTable+=(FALSE "GameBoy / Color / Advance" "mGBA")
#if we are in beta / dev install, allow Xenia. Still false by default though. Will only work on expert mode, and explicitly turned on.
if [[ $branch == "beta" || $branch == "dev" ]]; then
emuTable+=(FALSE "Xbox360" "Xenia")
@ -393,6 +394,11 @@ if [ "$expert" == "true" ]; then
else
setSetting doInstallPPSSPP false
fi
if [[ "$emusToInstall" == *"mGBA"* ]]; then
setSetting doInstallMGBA true
else
setSetting doInstallMGBA false
fi
if [[ "$emusToInstall" == *"Yuzu"* ]]; then
setSetting doInstallYuzu true
else
@ -580,6 +586,11 @@ if [ "$expert" == "true" ]; then
else
setSetting doSetupPPSSPP false
fi
if [[ "$emusToReset" == *"mGBA"* ]]; then
setSetting doSetupMGBA true
else
setSetting doSetupMGBA false
fi
if [[ "$emusToReset" == *"Yuzu"* ]]; then
setSetting doSetupYuzu true
else
@ -641,12 +652,12 @@ else
setSetting doInstallCitra true
setSetting doInstallDuck true
setSetting doInstallCemu true
setSetting doInstallXenia false
setSetting doInstallPrimeHacks true
setSetting doInstallPPSSPP true
setSetting doInstallXemu true
setSetting doInstallMAME true
setSetting doInstallXenia false
setSetting doInstallMGBA false
setSetting doInstallRMG true
#doInstallMelon=true
@ -665,6 +676,7 @@ else
setSetting doSetupMAME true
setSetting doSetupCemu true
setSetting doSetupXenia false
setSetting doSetupMGBA false
setSetting doSetupRMG true
#widescreen off by default