RetroDECK


스팀머신용으로 제작한 BC-250에서 사용할 아케이드 스틱을 구매했었는데요. 레트로게임도 즐기기 위해 RetroDECK을 설치하였습니다.

설치

Bazzite 환경에서 RetroDECK을 설치하는 가장 빠르고 안정적인 방법은 Flatpak을 이용하는 것입니다. Bazzite는 Fedora 기반이므로 일반 리눅스 데스크톱 환경과 동일한 앱 설치 방식을 지원합니다.

  • 시스템 메뉴의 전원 옵션에서 데스크톱 모드(Desktop Mode)로 진입합니다.
  • 작업 표시줄이나 시작 메뉴에서 Bazaar를 실행 후 상단 검색창에 RetroDECK을 검색합니다.
  • 검색된 결과를 클릭하고 설치(Install) 버튼을 누릅니다.

초기 설정 및 폴더 구성

  • 설치가 완료 후 RetroDECK을 실행하면 에뮬레이터 파일을 설치할 위치를 묻습니다. 저는 외장 SSD를 선택하였습니다.
  • 추가로 Steam 입력 프로필 설치 여부나 PS3, PS Vita의 펌웨어 설치 여부를 선택할 수 있습니다. 저는 당장 필요하지는 않지만 펌웨어 설치에 동의하니 자동으로 설치가 완료되었습니다.
  • 설치가 완료되면 지정된 경로 안에 roms 폴더와 bios 폴더가 생성됩니다.

Windows 에서 ES-DE 준비

  • RetroDECK은 Frontend로 ES-DE를 사용합니다. 게임에 필요한 rom, playlist, media 경로들이 Retrobat 등의 다른 Frontend와 다르기 때문에 Windows용 ES-DE로 검토 후 RetroDECK에 추가해 주었습니다.
  • ES-DE 공식 문서를 참고하여 경로와 파일 구조를 확인할 수 있습니다.
"ES-DE/download_media/시스템명/미디어종류" 디렉토리에 필요한 미디어 파일들을 위치합니다. 파일명은 rom파일명과 동일해야 합니다.
rom파일을 디렉토리별로 관리하고 있다면, 미디어 파일들도 동일한 디렉토리 구조를 가져야 합니다.
  • 기존에 RetroBat으로 관리하던 rom, media, playlist들을 쉽게 ES-DE로 마이그레이션 하기 위해 python으로 코드를 작성하여 media, playlist 이동 작업을 진행하였습니다.



바이오스 및 게임추가

RetroDECK은 외장 SSD에 설치하였고 경로는 다음과 같습니다. 해당 경로에 SFTP로 접근하여 파일들을 추가해 주었습니다. 아래의 경로에서 /run/media/system/PSSD_T7_Touch/ 는 외장 SSD가 마운트된 경로입니다.

  • Retrodeck : /run/media/system/PSSD_T7_Touch/retrodeck/
  • BIOS : /run/media/system/PSSD_T7_Touch/retrodeck/bios
  • roms : /run/media/system/PSSD_T7_Touch/retrodeck/roms
  • playlist : /run/media/system/PSSD_T7_Touch/retrodeck/ES-DE/gamelists
  • media : /run/media/system/PSSD_T7_Touch/retrodeck/ES-DE/downloaded_media

ES-DE 설정

ES-DE를 실행 후 Start버튼을 누르면 메인메뉴가 나옵니다. 개인 취향껏 다음과 같이 설정하였습니다.

  • Retrodeck Configuration
    • 메인메뉴 > Retrodeck Configuration
    • Settings
      • Quick Resume : Disable
    • Steam Tools
      • Automatic Steam Synchronization : Disable
  • 테마
    • 메인메뉴 > ES-DE Configurations > UI 설정 >
      • 테마 다운로드 > CHICUELO (Revisited)
      • 테마 > CHICUELO (Revisited)
      • 테마 변형 > Artwork: CHICUELO
    • 다운로드 받은 테마는 /run/media/system/PSSD_T7_Touch/retrodeck/ES-DE/themes/chicuelo-revisited-es-de 에 저장됩니다.
  • 테마 수정
    • 일부 시스템 이미지가 없어서 이미지 추가하였습니다. 추가한 파일은 cps1.png, cps2.png, cps3.png, dos.png, fbneo.png 입니다.
    • 시스템 이미지 추가 위치 : /run/media/system/PSSD_T7_Touch/retrodeck/ES-DE/themes/chicuelo-revisited-es-de/_inc/systems/artwork-chicuelo
    • theme.xml 에서 일부 설정을 수정하여 사용중입니다.
<theme>
   <view name="system">
      <carousel name="system-carousel">
         <!-- 시스템 전환을 좌우로 변경 -->
         <type>vertical_wheel</type>

         <!-- 시스템 로고를 즉시 전환 -->
         <itemTransitions>instant</itemTransitions>
      </carousel>
   </view>
   <view name="gamelist">
      <!-- 이미지를 잘림없이 비율조정하여 꽉차게 표시 -->
      <video name="game-art">
         <pos>0.67 0.41</pos>
         <origin>0.5 0.5</origin>
         <maxSize>0.435 0.58</maxSize>
         <delay>3</delay>
         <interpolation>nearest</interpolation>
         <pillarboxes>true</pillarboxes>
         <imageType>miximage,screenshot,titlescreen,fanart,cover</imageType>
      </video>
   </view>
</theme>
  • 대체 에뮬레이터
    • 메인메뉴 > ES-DE Configurations > 기타 설정 > 대체 에뮬레이터
      • cps1 : FB Alpha 2012 CPS-1
      • cps2 : FB Alpha 2012 CPS-2
      • cps3 : FB Alpha 2012 CPS-3
      • gameandwatch : Handheld Electronic (GW)
      • mastersystem : PicoDrive
  • 기타
    • 메인메뉴 > ES-DE Configurations > 기타 설정 >
      • 숨긴 게임 보이기 : OFF
      • gamelist.xml 파일에 있는 게임만 보이기 : ON

Retroarch Overlay

대부분의 게임들은 디폴트 에뮬레이터인 Retroarch를 통해 실행됩니다.
Retroarch의 Overlay를 사용하여 Bezel을 추가하면 16:9 화면에서 비어 있는 공간을 채워줄 수 있습니다.
ES-DE에서 게임을 실행 후 L3+R3 버튼을 누르면 Retroarch 메뉴가 보입니다.
여기서 overlay를 설정 후 코어별 또는 디렉토리별 설정을 override하여 저장하면 됩니다.

오버레이 파일들은 해당 위치에 저장하였습니다.

  • 오버레이 : /run/media/system/PSSD_T7_Touch/retrodeck/borders/retroarch/overlays

세로 게임의 경우 게임별로 설정을 추가하여야 합니다. FBNeo DAT 파일에서 세로게임을 추출하였으며, 부모롬과 클론롬을 모두 포함하여 2,493개의 cfg 파일을 생성하였습니다. 생성한 cfg 파일들은 Retroarch의 FinalBurn Neo 게임별 설정 경로에 저장하였습니다.

  • 게임별 설정 : /var/home/b612rose/.var/app/net.retrodeck.retrodeck/config/retroarch/config/FinalBurn Neo

제가 사용한 overlay와 설정이 완료된 config입니다.

설치 보류한 게임 시스템

roms 디렉토리에는 ES-DE가 지원하는 게임 시스템들의 디렉토리가 미리 생성되어 있습니다. model3와 switch의 디렉토리에 rom 파일들을 넣어줬지만 정상적으로 실행되지 않았습니다. ES-DE에서 실행되는 에뮬레이터, 롬파일, 경로 정보는 es_systems.xml, es_find_rules.xml에 정의되어 있습니다.

  • /var/lib/flatpak/app/net.retrodeck.retrodeck/current/active/files/retrodeck/components/es-de/share/es-de/resources/systems/linux/es_systems.xml
  • /var/lib/flatpak/app/net.retrodeck.retrodeck/current/active/files/retrodeck/components/es-de/share/es-de/resources/systems/linux/es_find_rules.xml

ES-DE가 설치된 디렉토리를 확인해 보면 해당 설정을 override할 수 있는 파일들이 존재합니다. 에뮬레이터 정보를 수정/추가하기 위해서는 해당 파일을 사용하면 됩니다. 참고로 /run/media/system/PSSD_T7_Touch/ 는 외장 SSD 경로입니다.

  • /run/media/system/PSSD_T7_Touch/retrodeck/ES-DE/custom_systems/es_systems.xml
  • /run/media/system/PSSD_T7_Touch/retrodeck/ES-DE/custom_systems/es_find_rules.xml

model3

model3는 ES-DE 목록에 노출되지 않았습니다. es_systems.xml을 확인해 보면 해당 설정이 주석으로 막혀 있습니다. 아마 게임실행에 문제가 보고되어 의도적으로 막은 것으로 보입니다. 설치된 component를 확인해 봐도 supermodel3는 제외되어 있습니다.

<!--
<system>
    <name>model3</name>
    <fullname>Sega Model 3</fullname>
    <path>%ROMPATH%/model3</path> 
    <extension>.7z .7Z .zip .ZIP</extension>
    <command label="Supermodel (Standalone)">%STARTDIR%=%GAMEDIR% %EMULATOR_SUPERMODEL% -log-output=%GAMEDIR%/Config/Supermodel.log -force-feedback %INJECT%=%BASENAME%.commands %ROM%</command>
    <platform>arcade</platform>
    <theme>model3</theme>
</system>
-->

switch

es_systems.xml 에는 switch가 정의되어 있지만 RetroDECK 설치시 관련 에뮬레이터가 누락되어 있습니다. retroDECK 위키에 따르면 프로젝트 보호와 법적위험을 피하기 위해서라고 합니다. ryujinx를 설치 후 custom_systems/es_systems.xml 에 설정을 추가해 주었지만, desktoop mode에서 실행한 ES-DE에서만 정상적으로 실행되었습니다.

참고로, Flatpak으로 설치한 Ryujinx와 관련된 경로는 다음과 같습니다.

  • /var/home/계정명/.var/app/io.github.ryubing.Ryujinx/config/Ryujinx/Logs/
  • /var/home/계정명/.var/app/io.github.ryubing.Ryujinx/
  • /var/lib/flatpak/app/io.github.ryubing.Ryujinx/current/active/

스플래시 이미지

RetroDECK 실행시 로고는 splash.svg 파일로 저장되어 있습니다. 이를 교체하면 원하는 초기화면을 보실 수 있습니다. 해당 경로에 접근하려면 root 권한이 필요하여 SFTP로 ~/splash.svg 파일을 업로드 후 교체하였습니다.

$ flatpak info --show-location net.retrodeck.retrodeck
/var/lib/flatpak/app/net.retrodeck.retrodeck/x86_64/stable/a86d30895e4f2fbd3127e2df49c5538ac6b7c78ff06d31c5e3c852c0d505db5c

$ find /var/lib/flatpak/app/net.retrodeck.retrodeck/x86_64/stable/a86d30895e4f2fbd3127e2df49c5538ac6b7c78ff06d31c5e3c852c0d505db5c -name splash.svg
/var/lib/flatpak/app/net.retrodeck.retrodeck/x86_64/stable/a86d30895e4f2fbd3127e2df49c5538ac6b7c78ff06d31c5e3c852c0d505db5c/files/retrodeck/components/es-de/share/es-de/resources/graphics/splash.svg
/var/lib/flatpak/app/net.retrodeck.retrodeck/x86_64/stable/a86d30895e4f2fbd3127e2df49c5538ac6b7c78ff06d31c5e3c852c0d505db5c/files/retrodeck/graphics/splash.svg

$ cd /var/lib/flatpak/app/net.retrodeck.retrodeck/x86_64/stable/a86d30895e4f2fbd3127e2df49c5538ac6b7c78ff06d31c5e3c852c0d505db5c/files/retrodeck/graphics/
$ sudo mv splash.svg splash.svg.org
$ sudo cp ~/splash.svg .

참고

2026.07.05 - OpenBOR 추가

OpenBOR(Open Beats of Rage)는 2D 횡스크롤 액션(Beat 'em up) 게임을 제작하기 위한 오픈소스 게임 엔진입니다. 2003년에 공개된 Beats of Rage(BOR)라는 팬 게임에서 사용된 엔진이 오픈소스로 공개되면서 다양한 벨트스크롤 액션 게임들이 개발되고 있습니다. 게임 내부에서 사용되는 스프라이트, 음악, 스크립트 등은 PAK 이라는 파일로 패키지 되어 있습니다.

대부분의 Frontend에서는 OpenBOR을 실행하기 위해 pak을 사용하지만, ES-DE의 경우 bor 이라는 마커를 사용합니다.

ES-DE의 경우 .bor이라는 마커파일과 디렉토리를 사용하므로 하나의 디렉토리에 pak들을 모아서 관리할 수 없고, 하나의 pak마다 개별적인 디렉토리 구조가 필요합니다.

SSD/retrodeck/roms/openbor/8MAN.bor/8MAN.bor --> 마커 파일 (비어 있는 파일)
SSD/retrodeck/roms/openbor/8MAN.bor/Paks/8MAN.pak --> 패키지 파일
SSD/retrodeck/roms/openbor/8MAN.bor/Saves/8MAN.cfg --> 설정 파일 (게임 실행 후 생성됨)

pak마다 개별적인 디렉토리를 사용함에 따라 미디어를 위한 디렉토리 구조도 복잡해졌습니다.

SSD/retrodeck/ES-DE/downloaded_media/covers/8MAN.bor/8MAN.png
SSD/retrodeck/ES-DE/downloaded_media/marquees/8MAN.bor/8MAN.png
SSD/retrodeck/ES-DE/downloaded_media/screenshots/8MAN.bor.png --> 디렉토리용 이미지
SSD/retrodeck/ES-DE/downloaded_media/screenshots/8MAN.bor/8MAN.png
SSD/retrodeck/ES-DE/downloaded_media/videos/8MAN.bor/8MAN.mp4

RetroDECK에서 OpenBOR을 위한 컨트롤러 설정은 키보드로 설정되어 있습니다.
저는 8MAN 이라는 게임을 실행 후 게임패드로 컨트롤러를 변경하고, 생성된 8MAN.cfg 파일을 다른 게임들에도 복사하여 붙여넣었습니다. cfg 설정파일도 pak 파일과 동일한 이름을 사용해야 합니다.

SSD/retrodeck/roms/openbor/8MAN.bor/Saves/8MAN.cfg --> 설정 원본
SSD/retrodeck/roms/openbor/Aliens Vs. Predator.bor/Saves/Aliens Vs. Predator.cfg --> 붙여넣기
SSD/retrodeck/roms/openbor/Armored Warriors Cyberbots.bor/Saves/Armored Warriors Cyberbots.cfg --> 붙여넣기

광고

댓글 남기기