Just a Blog

[MiSTer FPGA] 초기 사용 소감 본문

Game

[MiSTer FPGA] 초기 사용 소감

wehong 2020. 3. 16. 00:45

* 아래 내용은 2020년 3월에 작성되었으므로, 이후 변경된 사항들은 관련된 다른 글들을 참고해 주세요.

 

 

1. 서론

레트로 게임 콘솔을 소프트웨어 에뮬레이션이 아닌 FPGA 하드웨어를 통해 복각하려는 노력들이 얼마 전 부터 큰 관심을 받아왔다. Analogue사는 패미컴/NES, 슈퍼패미컴/SNES, 메가드라이브/Genesis 플랫폼에 대응하는 복각 기기를 각각 Nt mini, Super Nt, Mega Sg 라는 제품으로 출시했다. RetroUSB라는 곳도 FPGA 기반으로 AVS라는 패미컴/NES 복각기를 내놓았다. MiSTer 프로젝트는 이러한 흐름과 유사하게, DE-10 Nano라는 교육용 보드를 사용하여 FPGA 기반으로 레트로 콘솔, 컴퓨터, 아케이드 기판을 복각하려는 오픈 소스 프로젝트이다.

MiSTer 프로젝트가 목표로 하는 대상 콘솔, 컴퓨터, 아케이드 기판은 소프트웨어 에뮬레이터를 사용하면 이미 쉽게 사용해 볼 수 있다. 굳이 FPGA라는 칩 모듈을 사용해서 이들을 재창조하려는 이유는 무엇일까? 많은 전문가들의 대답은 'hardware accuracy'이다. '하드웨어적 측면에서의 정확성'을 의미하는데 내가 이해한 바로는, 대상 기기의 기능에 대한 구현 만이 아니라 그 기능을 구현하기 위한 하드웨어적 구조(회로 신호, 신호 타이밍 등)까지 정밀하게 구현되는 것을 말하는 것 같다. 이런 'hardware accuracy'를 추구함으로써 사용자는 모방 대상의 실체와 더욱 더 가까워 진다는 의미이다. 이것이 의미가 있는지에 대한 개인적인 생각은 뒤에서 이야기 해보겠다. 

 

 

2. MiSTer 프로젝트 기본 하드웨어

가장 기본이 되는 서킷 보드는 'DE-10 Nano'라는 교육용 보드이다.  Altera Cycone V SE FPGA와 ARM Cortex A9 듀얼코어 프로세서로 구성된 보드로서, ARM 프로세서에서는 Linux를 구동하면서 Cyclone V SE에 각 대상 코어 로직을 넣어 구동한다. 5핀 규격의 USB OTG 포트가 있고 Ethernet 커넥터도 달려 있으며, SDRAM 모듈 등을 연결할 수 있는 포트도 구성되어 있다.

SDRAM 모듈은 추가 add-on 모듈로서, 거의 대다수의 코어에서 DDR3 메모리 대신 사용하고 있기 때문에 필수품에 가깝다. 기성품으로 32MB 또는 128MB가 많이 판매된다.

IO 보드는 DE-10 Nano의 I/O를 확장하는 목적으로 사용되는 add-on으로서, 아날로그 비디오 출력이나 아날로그 오디오 출력에 사용될 수 있으며 DE-10 Nano 보드를 위한 냉각팬을 장착할 수 있다.

USB허브는 DE-10 Nano 보드에 하나만 있는 USB OTG를 확장하여 사용하기 위한 것으로, MiSTer 코어 사용에 키보드와 컨트롤러의 동시 연결이 빈번히 일어나므로 장착하는 편이 편리하다.

기타 케이스, 전원 스위치 등을 추가로 연결할 수 있다.

 

 

 

3. 참고한 자료

거의 대부분 해당 Github 저장소에서 정보를 얻었고, 국내에서는 유일하게 네이버카페 구닥동에서 소개 자료들을 보았다. 다른 곳에서 정보를 찾기 어려웠고 특히 국내에서 정보를 찾기는 더 어려웠다.

 

 

4. 각 코어 별 소감

 

(1) TurboGrafx-16 (PC엔진) 코어

이전 글에서도 밝혔지만, 현재까지 TurboGrafx-16/PC엔진을 타겟으로 한 FPGA 복각 제품은 없었고 고가의 SuperGrafx까지 구현하기 때문에 매우 의미있는 코어라고 생각한다. 더구나 SDRAM 모듈이 없이 DE-10 Nano 만으로도 구동된다.

이 글의 작성 시점에 아쉬운 점은 HuCARD 이미지만 구동되고 CD-ROM 이미지를 구동할 수 없다는 점이다. 또한 일부 HuCARD 이미지가 구동되지 않는 등 다듬어져야 할 부분도 있다.

간단한 PC엔진 슛뎀업(shoot'em up) 게임을 하나 하기 위해 실기와 OSSC를 꺼내지 않아도 되어 편리하기는 했다.

 

 

(2) NeoGeo 코어

MiSTer 프로젝트에서 관심을 많이 받은 코어이다.

32MB SDRAM 모듈로도 대부분의 롬을 구동할 수 있으나 일부 고용량을 필요로 하는 롬도 있다. Uni-bios를 이용할 수 있으며 AES와 MVS 모두 사용할 수 있다.

이 코어가 가지는 또 다른 의의는,  Capcom CPS 등 다른 아케이드 시스템도 MiSTer에서 구현될 수도 있겠다는 가능성을 열어 준 것이라고 생각한다.

 


(3) Genesis(메가드라이드), MegaCD, SNES(슈퍼패미컴) 코어

이 코어들을 유심히 본 이유는, 현재 이를 지원하는 FPGA 기반 제품들이 있기 때문이다. Genesis/메가드라이브와 MegaCD는 Analogue사의 Mega Sg와 Terraonion의 Mega SD라는 FPGA 기반 제품이 있으며, SNES/슈퍼패미컴은 Analogue사의 Super Nt라는 FPGA 기반 제품이 있다. 세 가지 제품 모두 사용해 보았으므로(#1, #2, #3) MiSTer의 세 코어와 비교해 보게 되었다.

구동이 되는 것 기준으로 MiSTer 코어들이 사용 제품들에 버금가는 수준이라고 생각되었다. 물론 MiSTer의 코어들이 상용 복각 제품 수준으로 세밀한 설정을 할 수는 없었고, 상용 제품들 만큼 호환성에 대해 빠르게 대처하지는 못 할 것 같다(MiSTer가 오픈소스이므로 당연하다). 각 코어들의 완성도가 더 높아진다면, Analogue사의 각 기기들을 구매하는 것 보다 MiSTer의 기기 하나로 여러 플랫폼을 커버하는 것의 비용이 저렴하므로 가격 경쟁력은 있어 보인다.

 

 

 

 

(4) Gameboy, Gameboy Color, Gameboy Advance, SMS / Game Gear 코어

소프트웨어 에뮬레이터에서도 그랬지만, 모바일 게임 콘솔을 대형 화면과 별도 컨트롤러로 하는 것은 코어의 완성도를 떠나 어색하다. MiSTer의 각종 디스플레이 필터로 제법 LCD 화면과 비슷하게 만들어도 실기에서 하는 것과 느낌이 같지는 않았다.

Gameboy 코어의 경우 화면 플리커링(flickering) 등 약간 불안한 모습도 보였다.

SMS 코어는 Game Gear 플레이용으로 구동했는데, Github 페이지 설명에는 Game Gear 실행에 대한 설명이 전혀 없지만 SMS 코어를 구동해 보면 Game Gear 용  *.gg 파일을 열 수 있는 메뉴가 별도로 존재한다. SMS 코어에서 Game Gear 구동은 실기에서와 좀 다르다는 느낌이었다. 실기에서 처럼 플레이가 잘 안되었기 때문에 그랬다.

 

 

 

 


(5) Apple II 코어

MiSTer Github 페이지의 오른쪽 코어 별 링크에 'Apple II+'라고 되어 있고 미국 모 대학 학생이 II+ 규격까지만 FPGA로 구현했다고 들었기에, MiSTer의 Apple II 코어는 Apple II+ 까지의 구현이라고 생각했다. 실제 실행시켜 보니 부팅 화면에 'Apple //e'라고 표시되고 설정에서 CPU를 '6502'와 '65C02' 중 하나를 고를 수 있으며, 64kb+64kb 메모리에 80컬럼 텍스트 표시와 double hi-res 그래픽이 지원된다고 하니 '//e'에 가까운 것이 맞을 것이다.

MiSTer 사용 시 8bitdo M30 컨트롤러를 주로 사용하지만 Apple II에서 방향 스틱은 아날로그 입력을 받으므로 Apple II 게임을 구동할 때는 아날로그가 있는 XBox One 컨트롤러로 바꿔 사용하고 있다.

사용 중 가장 큰 문제는 디스크 이미지 인식이었다. *.nib, *.dsk, *.do, *.po 의 다양한 포맷을 지원하지만 인식이 안되는 몇 가지 파일들이 있었다. 제작자도 이를 인지하고 있는지, 잘 안되면 확장자를 바꿔보라는 권고를 주고 있다.

 

 

(6) MSX 코어

One Chip MSX 기기라고 할 수 있는 IQ3000을 작년 말 입수했기에 비교를 해 볼 수 있을 것 같았다. 어떻게 보면 둘 다 FPGA 기반 One Chip MSX 구현이다.

MiSTer의 MSX는 소프트웨어 실행을 위해서 별도의 SD 카드 이미지나 VHD 형식의 디스크 이미지 파일이 필요하다. 이를 만들 수 있는 유틸리티도 코어와 함께 배포하고 있다. 4GB 이미지를 만들고 sofarun을 넣어 구동해 봤는데 대체로 잘 구동되나 몇몇 롬 이미지가 구동이 안되었다(매퍼 등의 설정이 잘 안되어서 일 수도 있다). 사운드는 SCC, OPLL, PSG 등 음원을 지원한다.

MSX2/2+/3 규격을 지원한다고 적혀 있는데, MSX3 규격은 처음 들어 봤으며 혹시 turboR의 의미인지는 확실하지 않으나 코어 실행 시 'MSX3'라는 로고까지 뜬다.

현재까지 IQ3000 기기에 비해 편리하다 느낀 점은, VGA 케이블 제작 같은 것 필요없이 고해상도 디스플레이에 연결해 사용할 수 있다는 점과 USB 인터페이스의 스틱과 패드를 그대로 사용할 수 있다는 점이었다.

 

 


(7) 아케이드 코어

그린베레(Green Beret), 마계촌(Ghosts'n Goblins), 제비우스(Xevious), 동키콩(Donkey Kong) 등의 코어를 실행해 봤다.

일단 만드는 방법이 바뀌었는데 각 코어 별로 이에 대한 설명이 충분하지 않아 보인다. MRA 파일을 이용하는 방식은, 시스템적으로 이상이 없는지 체크하지 못하기 때문에 사용자가 MRA 파일의 내용과 해당 파일들의 존재 유무를 확인해 봐야 할 것 같다.

80년대 말 즈음의 게임들이기 때문에 비교적 오래되고 복잡도가 비교적 낮은 게임들이지만, 그런 것들의 기판을 하드웨어적으로 구현한다고 하니 신기했다. 기판에 있는 점퍼를 조작하듯이 코어 설정에서 Life 수, 보너스 점수 등을 설정할 수 있었다.

 

 

5. 얻은 교훈

 

(1) DE-10 Nano 보드는 비교적 쉽게 구매할 수 있는데, SDRAM 모듈이나, IO보드 등은 구하기 어려웠다

DE-10 Nano는 제작사인 Terasic의 홈페이지에서 가장 저렴하게 구매할 수 있고, Amazon에서는 $10 비싸지만 간편하고 빠르게 받아 볼 수 있으며, MisterAddons 사이트에서는 더 비싸지만 다른 주변기기와 함께 구매할 수 있다.

DE-10을 제외한 SDRAM 모듈, IO 보드, 전용 USB 허브 등은 MisterAddons 사이트가 가장 구하기 좋다. 문제는 구매 희망자가 많아서 주문 시 거의 backorder 과정을 거쳐야 하며, 특히 코로나 사태 이후 중국에서 제작이 지연되어 현재 케이스 등 일부 물품 배급이 어렵다고 한다.

 

(2) 리눅스나 전자공학에 대한 지식이 별로 필요하지 않다

한국의 게임잡지인 '게이머즈'의 2020년 3월호의 레트로 게임 에뮬레이션과 관련된 기사에 MiSTer가 소개되었는데, 기사에서 MiSTer를 사용하기 위해 리눅스와 전자공학에 대한 지식이 필요하다는 식의 문구가 있다. 이것은 사실과 다른 내용이라고 생각한다.

실제로 MiSTer 프로젝트의 결과물을 사용하면서, DE-10 Nano에 설치되는 리눅스를 접근한 적이 없다. 오히려 Retropie 등의 소프트웨어 에뮬레이션을 사용할 때 고급 설정을 위해 SSH로 접속한 적이 있지, MiSTer 쪽에서는 핫 키 하나로 접근 가능한 터미널 접속 조차 시도해 본 적이 없다. MiSTer 자체 설정을 포함해 USB polling rate를 설정하기 위한 리눅스 쪽 설정에 대한 변경은, 윈도우에서 USB 메모리를 읽어 텍스트 파일을 수정하는 것으로 다 되었다. 오히려 리눅스 환경에서 MiSTer 설정을 하고 싶었는데, MiSTer를 설치하는 SD 카드 설치 프로그램도 윈도우즈 용으로만 공식으로 제공한다.

전자공학에 대한 지식은 더욱 더 필요없다. 메뉴얼이나 튜토리얼 영상을 보고 보드를 스택으로 쌓고 선만 연결하면 그만이다. 전자공학적 지식은 오히려 오드로이드 고 어드밴스를 조립할 때 더 필요했던 것 같다. 오드로이드 고 어드밴스 조립에서는 사용자가 전원선을 반대로 꽂을 지도 모르지만 현재의 MiSTer 구성 하드웨어에서는 특별히 그럴 일이 없다.

 

(3) Github에 있는 코어의 설명(readme.md)은 정확하지 않다

정확히는 변경된 정보들이 바로바로 업데이트 되지 않는다. 그래서 그것만 읽어보고 판단해서는 안된다. 대표적인 사례는, 아케이드 코어와 롬을 연결하는 방법, Apple II+라고 링크되어 있지만 실제로 Apple IIe를 구현한 것, 각 코어 별 롬파일 위치 등이다.

초기에 아케이드 코어와 롬 파일을 연결시키는데 배치(batch) 파일 실행을 요구했지만, 최근 MRA 파일을 통해 두 파일을 그대로 분리시켜서 사용하는 방법으로 바뀌고 있다. Github 상의 release 디렉토리에 커밋 메시지는 '오래된(obsolete) 내용을 제거했다'고 되어 있고 MRA 파일을 사용하는 것으로 바뀌어 있는데, readme 내용에는 예전에 배치 파일을 실행하는 설명이 아직까지 있다.

Apple II 코어는 앞의 구동 화면에 보여지는 것과 같이 Apple IIe이라고 표시되고 그에 맞는 기능이 구현되어 있는데, MiSTer 홈페이지 링크와 Apple II 코어 설명에 II+ 까지만 구현된 것 처럼 보여진다. 

 

 

6. 실기, FPGA 기반 에뮬레이션 , SW 기반  에뮬레이션

복잡한 생각이다. 이에 대한 결론을 내기 위해 여러가지 시험을 해 봤는데, MiSTer가 실기와 비슷하다는 생각을 하다가 SW 에뮬레이터를 구동해 보면 SW 에뮬레이터도 그 정도가 된다는 생각이 들기도 했다. USB 기반의 컨트롤러가 실기와 같은 경험을 망칠 것 같았는데 인풋랙이 생각보다는 덜 느껴졌다.

SW 에뮬레이션이 FPGA 기반 에뮬레이션에 비해 모자란 예시가 발견되면 스스로 설득되겠는데, 그것을 아직 못 찾았다. 일단 SW 에뮬레이션이 실기만 못하다는 감성적 증거 하나는, 실기에서 만큼 플레이 결과가 안나온다는 것이었다. 실기 컨트롤러를 사용하는 Super Nt, Mega Sg, One Chip MSX를 사용할 때 까지는 FPGA 에뮬레이션이 그런 부분에서 실기에 가깝다고 생각했었다. 그런데 MiSTer는 실기와 다른 일반 컨트롤러를 사용하게 되니, 하드웨어를 잘 복각했다고 해도 조작의 감성이 달라져 플레이 감이 실기 같지 않게 되었다. 그런 의미에서 MiSTer는 나에게, Super Nt 등의 FPGA 복각 기술이 제공해 줄 것이라는 감성적 충족성의 가능성을 낮게 보게 만들어 버렸다.

하지만 아직도 발전할 부분이 많은 프로젝트이고 재미있는 프로젝트라고 생각한다. 하드웨어 라이브러리가 구축되는 것이다. 레트로아크에서 SW 에뮬레이터 코어를 선택하는 것 처럼 MiSTer에서는 하드웨어 코어를 선택할 수 있게 해 놓았다. 벌써부터 MiSTer의 하드웨어들을 포터블화 하는 아이디어들이 나오고 있는 듯 한데, MiSTer 프로젝트의 결과물들은 더 성숙해 질 것이며 다양하게 변형될 것이라고 생각한다. 

Comments