Retro Game & PC/매뉴얼 팁 작업

mednafen gui 2023

smores 2023. 12. 1. 02:30

개인적으로 콘솔 고전게임을 즐기면서 가장 선호하는 에뮬레이터는 mednafen 이다. 이유는 매우 가벼우면서도 단일 에뮬레이터로 내가 좋아하는 대다수의 콘솔을 다 지원하기 때문이다. 원래는 개인적인 고전 콘솔게임의 영역은 8, 16비트 가정용 콘솔 (NES, SNES, SMS, MD, PCE) 와 일부 포터블 핸드헬드 콘솔 (GB, GBC, GBA) 정도 까지였다. 하지만 요즘에는 그나마 주력으로 사용하는 홈 데스크탑의 성능이 받쳐주는 덕분에 (이전 회사에서 쓰다가 회사가 사이트를 철수하면서 employee sale 로 사온 Dell Precision 웍스테이션을 쓰는 중이다) PS2 정도까지는 그런데로 돌아가기에 Sega Saturn 하고 Playstation 1 게임 정도까지 즐기기 시작한 상태며, 이들 역시 mednafen 이 지원하는 콘솔 리스트에 포함되기 때문에도 즐기게 된 셈이다. 가만 보면 아나로그 스틱이 필요 없는 콘솔 까지인 듯 하다. 하지만 본인이 PC 에 게임 패드를 연결해 놓았고 (예를 들어 XBox 패드나 로지텍 패드 같은 것들을 USB를 통해 연결해 놓은 경우) 아나로그 스틱으로 컨트롤을 하고 싶을 경우 컨트롤 패드 키 매핑에서 아나로그 스틱도 매핑이 가능하다.

 

 

그러고 보면 이 에뮬레이터를 쓴지도 꽤 오래 됬다. mednafen 의 경우는 커맨드 모드로만 돌리는 에뮬레이터라 적절한 프론트엔드가 없으면 사용하기 매우 불편한 에뮬레이터이다. 그럼에도 여러 기능들에 대한 만족도, 특히 LCD 상에서 보여주는 레트로 콘솔 스러운 화질 셋팅의 가능성(스캔라인 포함, 특히 스캔라인의 강도 조절 가능)과 함께, 하나의 에뮬레이터라 UI 가 통일이 된다는 점 때문에 더 좋아하게 되었다. 특히 게임의 엔딩을 보기 위한 가장 큰 치팅이라 할 수 있는 게임 중간 상태 저장의 핫키가 모든 콘솔들에 대해 동일하다는 점이, 상태저장 키가 에뮬레이터 마다 다른 다수의 전용 에뮬레이터 사용시에 비해 너무도 큰 장점으로 느낀다. 그래서 2016년도에는 직접 비주얼베이식으로 간단한 프론트엔드를 만들어서 사용하기 시작했다. 당시에는 mednafen 0.9x 대의 구버전을 사용했었다. 

 

https://smores.tistory.com/995

 

mednafen gui (자작 - VB.net VisualStudio 2012)

CRPG 들을 조금씩 즐기는 중이다. 그중에 Wizardry 1 을 Apple II 버전으로 시작을 했는데 아무리 애플에 대한 추억이 있더라도 직접 경험해 보지 않았던 게임이어서인지 그 느린 반응속도 및 너무도

smores.tistory.com

 

올해 들어 다시 레트로 게이밍을 나름 본격적으로 즐기다 보니 mednafen 자체도 1.29.0 으로 업데이트 된 버전을 사용하기 시작했고, 조금 더 옵션 조절을 쉽게 하기 위해 프론트엔드의 업그레이드도 해 보았다. 혹시나 mednafen 을 사용하시길 원하는 분들 중에서 한번 시도해 보고 싶은 분을 위해 공유해본다. 

 

mgui2023A.exe
0.03MB

 

 

 

 

프로그램을 실행하면 기본적으로 다음과 같이 셋팅이 안 된 상태를 보여준다. 첫번째 mednafen.exe path 에는 mednafen 실행파일의 full path 가 들어가는 곳인데, select 버튼을 눌러서 mednafen 이 있는 곳에 찾아가서 mednafen.exe 를 선택해 주면 된다. 

 

두번째 game rom path 는 원하는 게임 롬을 선택하는 곳으로 가장 자주 사용하게 되는 옵션이다. 

 

xscale, yscale 값은 윈도우 모드로 실행할 때 원래의 콘솔의 native resolution 대비 가로 세로로 각각 몇배로 확대해서 보여줄지에 대해 설정하는 값들이다. 같은 2, 2 라 해도 콘솔마다 native resolution 이 다르기에 윈도우 사이즈가 살짝 달라진다. 그리고 이 값은 (다음의 x/y scalefs 포함) 실수값이 된다는 점이 개인적으로 제일 맘에 드는 점이다. 사실 주로 정수값(aspect_int 에 해당)을 주로 사용하긴 하지만...

 

xscalefs/yscalefs 는 풀스크린 모드(타이틀바도 안보임, 개인적으로 선호) 일때, stretch 옵션(뒤에 설명)이 0 인 경우 역시 native resolution 대비 가로 세로 확대 비율이다.

 

scanlines 는 스캔라인을 그려줄때 스캔라인의 강도를 설정한다. 0 이면 안보이고 숫자가 클수록 (최대치는 100이지만 개인적으로 너무 큰 값을 싫어해서 라벨엔 50까지라고 써 놓았다. 하지만 100까지 작동된다) 스캔라인이 진해진다. 나의 경우 5-20 사이의 값을 선호한다. 스캔라인의 경우는 세로 스캐일이 1 일 경우는 기본적으로 안 나타난다. 이유는 native resolution 의 스캔라인의 두배 간격으로 그려주기 때문인 것 같다. 그리고 스캔라인을 쓸 때는 가급적 스케일 값을 정수배로 늘려나가는 것이 좋다. 안그러면 스캔라인 주기가 스케일링 값에 의해 그려지는 LCD 화면상의 y 축의 라인간 주기가 정수배로 딱 안떨어지기 때문에 모아레 간섭무늬가 나타나기 시작해서 보기 불편하기 때문이다. 

 

videoip 는 화면 필터 기능이다. 0 이면 필터 없이, 1 이면 가로 세로 모두 bilinear 보간으로 부드럽게 해 준다. 추가로 원한다면 x 축, y 축 방향으로만 bilinear 보간도 할 수 있다. 이 기능을 통해 확대해 놓은 영상이 사각 깍두기 같은 픽셀이 아니라 살짝 번지는 듯한 느낌으로 CRT 화면상의 이미지와 약간은 비슷해져 보인다 (라고 생각한다 ^^).

 

other options 는 위에 설명한 기본 옵션 외에도 더 주고 싶은 옵션의 경우 mednafen 의 document 에서 설명하는 것을 토대로 직접 커맨드라인에서 옵션을 주듯 더 추가해 주기 위한 기능이다. 콘솔별로 조절해야 하는 것은 -console약자.옵션명 옵션값 식으로 준다. 

 

일단 한번 실행했다가 마치면 마지막에 설정되어 있던 내용들이 mednafengui.ini 라는 텍스트파일내에 저장되고, 다시 실행할 때 그 값들을 읽어서 그대로 복원한다. 이는 마지막으로 로드했던 롬파일 및 롬파일 위치까지 포함한다.

 

Run 버튼으로 실행할때 Rom Type 콤보버튼 중에서 선택된 콘솔 종류에 맞춰서 옵션이 주어지기 때문에, 만일 롬 타입과 다른 콘솔 종류를 선택해 놓은 상태라면 실행은 되지만 옆에 설정해 놓은 옵션이 아닌 이전에 실행될때 사용됬던 해당 콘솔의 옵션으로 돌아간다. mednafen 자체가 어떤 옵션으로 특정 콘솔을 에뮬레이트 하고 나면 해당 옵션을 mednafen.cfg 에 기록해 놓기 때문이다. 때문에 스캐일이나 스캔라인 값 등을 바꿨는데도 변화가 없다면 올바른 롬 타입을 선택해 놓고 실행했는지 확인해 보면 실수했을 가능성이 높다. 

 

 

mednafen 이 온갖 기능 옵션들은 이곳에 가면 다 나와 있다.

 

https://mednafen.github.io/documentation/

 

Mednafen General Documentation

vbvb.palVB LED Active Time; 256 left, 256 right. If only 256 triplets are present, then they will be used for both left and right views. When the custom palette's right view colors are the same as the left view colors(either explicitly, or when using a 256

mednafen.github.io

 

 

개인적으로 많이 쓰는 핫키 중심의 기능들을 조금 정리해 보면 다음과 같다.

 

SHIFT+L-ALT+1 : 현재 실행하는 콘솔의 게임 패드 버튼 매핑. 나의 경우 상하좌우는 키보드의 커서키 네방향에, 그리고 가급적 ABC, I II III 등은 순서 방향도 오리지널 패드의 그것과 맞추려는 편이다. 예를 들어 NES 의 A, B 버튼은 키보드의 X, Z 에, PCE 6 버튼의 1,2,3/4,5,6 은 CXZ/DSA 식이다. SNES 같은 십자키와 shoulder 버튼이 있는 경우가 좀 애매한데, 개인적으로 터보 키는 잘 안쓰기에 터보가 아닌 키 위주로 설정하고, 터보 키는 적당히 떨어진 곳에 설정한다. 예를 들어 SNES 의 경우 XY/AB 의 경우 SA/XZ 로 셋팅하고, shoulder 버튼이 이중인 경우는 LR1, LR2 는 각각 WD, QC 식으로 하는 편이다. 

 

상태 저장, 로드는 F5/F7 인데 사용하기 전에 1,2,...,9,0 까지 10개의 슬롯 중 하나가 정해져 있고, 그 번호로 선택이 된다. 특정 게임에 대해 이 기능을 처음 쓸 경우 0 번 슬롯이 선택되어 있다. 만일 다른 슬롯에 저장, 로드했었다면 마지막에 선택됬던 슬롯 번호가 기록이 되어 다시 게임을 새로 시작할때 그 슬롯 번호를 따라가기에 편하다. 저장된 상태는 mcs 라는 폴더에 들어간다. 

 

빨리감기 (fast forward) 기능은 ` 키, slow forward 는 \ 키인데, 누를때만 동작하게 하거나, 한번 누를때 마다 toggle 식으로 (정상 속도와 빠른/느린 속도간 전환) 사용할 수 있게 옵션으로 조작할 수 있다. 빨리감기는 -fftoggle 1 또는 0, 느리게 감기는 -sftoggle 1 또는 0 식으로 other options 에 넣어서 셋팅 가능하다. 

 

F10, F11 은 콘솔의 soft, hard reset 기능이다. 

 

F12 와 ESC 는 에뮬레이션을 끝내는 기능이다. F12는 상관 없지만 ESC 는 눌리기 쉬운 위치이므로, 특히 fast foward 를 누르려다 누르기 쉬우니 조심해야 할듯. 

 

키보드의 Pause 키는 말 그대로 Pause (일시 정지)

 

그 밖에도 다양한 기능들 (예를 들어 스크린샷, 영상 레코딩 - 실제 영상 또는 상태 기준으로 작은 파일로 나중에 mednafen 으로만 재생 가능한 데이터 포맷으로 저장 가능, 다양한 화면 필터 -콘솔약자.special 옵션 으로 줄 수 있다. special 옵션들은 잊기 쉬워서 프론트엔드 빈 공간에 써 놓았다)이 많지만 이 정도만 알아도 게임을 즐기기는 충분할 듯 하다.

 

 

 

혹시나 mednafen 을 사용해 보고 싶지만 마땅한 프론트엔드를 못 찾거나, 기존에 있는 것이 맘에 안 드는 분이라면 한번 사용해 보셔도 좋을것 같다. 워낙 작은 파일(실행파일 33KB)이라 mednafen 폴더 안에 함께 넣고 안써도 그만이다. 그리고 이렇게 작은 이유는 윈도우즈 10 64비트 환경에서 Visual Studio .net 으로 컴파일했기에 윈도우즈에서 필요한 런타임이 있다고 가정해서일 듯 하다. 만일 런타임이 없어서 실행이 안된다면 자동으로 설치를 하게 되는 것인지, 아니면 마이크로소프트 사이트에서 다운받아 설치해야 하는 것인지는 잘 모르겠다 (무책임에 대해선 죄송).