Just a Blog

[MiSTer FPGA] MSX1 (MSX2test 브랜치) 코어 사용 본문

IT, Computer

[MiSTer FPGA] MSX1 (MSX2test 브랜치) 코어 사용

wehong 2023. 10. 3. 13:28

MiSTer에는 두 개의 MSX 컴퓨터 관련 코어가 있다. 하나는 'MSX' 코어로서 OCMC(One Chip MSX Clone)를 기반으로 만들어 진 것이고, 다른 하나는 'MSX1' 코어로서 유럽 필립스의 MSX1 모델을 타켓으로 만들어진 것이다.

MSX 코어는 MSX2+ 수준의 기능을 가지고 있지만 OCMC에서 물리적 슬롯이 빠진 것이라고도 볼 수 있기 때문에 OCMC에서 SD 카드만 사용하는 것과 같은 사용의 불편함이 있다. 카트리지 롬, 플로피 디스크, 카세트테이프 이미지를 구동하기 위해 Sofarun 같은 별도의 런처 프로그램을 사용해야 하기도 하고, 이런 파일들을 MiSTer의 SD 카드 드라이브가 아닌 가상 디스크 이미지 파일(VHD 파일)에 넣거나 빼는 작업을 해야 하니 작은 수정을 가하는 것도 여러 모로 귀찮아진다.

 

[MiSTer FPGA] MSX 코어에서 플로피 및 하드 디스크 이미지 실행

MiSTer의 MSX 코어는 OCMC(One Chip MSX Clone)들이 사용하는 SD 카드 저장장치를 VHD라는 가상 디스크 이미지로 대체해 사용한다. 이것으로 MSX-DOS2 기반 대용량 저장공간을 사용할 수 있는데, 사용자들은

wehong.tistory.com

반면에 MSX1 코어는 마치 소프트웨어 에뮬레이터에서 롬이나 플로피 디스크 이미지 파일을 선택해 로딩하듯이 편리하게 실행할 수 있는데, 아쉬운 것은 MSX1 규격만을 지원하여 MSX2나 MSX2+에 대응하는 소프트웨어를 구동할 수가 없다는 것이었다. 많은 사람들이 이 코어에서 MSX2 이상을 지원하면 좋겠다고 희망하고 있었는데...

놀랍게도 얼마전부터 MSX1 코어의 GitHub 리파지토리에 별도의 'MSX2test' 브랜치가 생기고 MSX2에 대응하는 실험적인 MSX1 코어가 만들어지기 시작했다. 처음에는 MSX 기기의 바이오스 이미지 파일을 로드해 MSX2 시스템까지 구성할 수 있는 구성이었는데, 최근에는 MSX 소프트웨어 에뮬레이터에서 MSX 시스템을 구성하듯이 설정 파일로 시스템을 구성하는 방식을 사용하고 있다.

 

GitHub - MiSTer-devel/MSX1_MiSTer: Computer MSX1

Computer MSX1. Contribute to MiSTer-devel/MSX1_MiSTer development by creating an account on GitHub.

github.com

어제 한번 시간을 잡아 이 코어를 들여다 보았는데, 몇몇 MSX2 시스템 구성으로 코어를 구동할 수 있어 기뻤을 뿐 아니라 코어에서 제공하는 각종 편의 기능들에 깜짝 놀랐다. 이에 대해 몇가지 정보를 정리하고자 글을 포스팅을 한다. 본 내용은 MSX1_MiSTer 리파지토리 MSX2test 브렌치의 2023년 7월 2일자 release 버전을 기준이다.

 

1. 설정 방법에 대한 간략한 소개

MSX2test 브랜치의 코어를 사용하는데 가장 큰 걸림돌은 기기 롬과 펌웨어로 사용할 '.MSX' 파일을 만드는 것이라 할 수 있다. 리파지토리의 release에서 CreateMSXpack.zip 파일을 받아서 열러 보면 XML 형식의 각종 설정 파일과 python 코드가 나오는데, 그것을 이용해 모든 또는 원하는 기기의 .MSX 파일과 펌웨어 .MSX 파일을 만들어야 한다. Computer 디렉토리에 있는 MSX 기기 별 XML 파일에 기록된 SHA1 값과 동일한 rom 파일을 ROM 디렉토리에 두어야 하며, 마찬가지로 Extension 디렉토리에 있는 'CART_FW_JP.xml' 또는 'CART_FW_EN.xml' 파일에 기록된 SHA1 값과 동일한 rom 파일을 ROM 디렉토리에 두어야 한다. 그리고 python 코드를 python으로 실행시키면 기기에 해당하는 .MSX 파일과 CART_FW_JP.MSX 또는 CART_FW_EN.MSX가 만들어진다. 이 파일들을 MiSTer의 마이크로SD카드 안 'games\MSX1' 디렉토리에 저장한 뒤, 코어 메뉴의 'Load ROM PACK *.MSX'에서 기기의 MSX 파일을 선택하고 'Load FW PACK *.MSX'에서 CART_FW_JP.MSX 또는 CART_FW_EN.MSX 파일을 선택하면 된다.

설명도 복잡하지만 과정도 번거롭고 특히 SHA1 값에 해당하는 rom 파일을 찾기 어려운 경우도 있어 초보자에게 쉽지 않아 보인다.

일단 설정되면 실제 기기와 비슷한 모습을 볼 수 있다. 아래는 파나소닉 FS-A1을 설정했을 때의 부팅 화면인데, FS-A1 실기와 동일하게 'Deskpac'의 모습이 보인다.

아래는 대우 IQ-2000(CPC-300)의 부팅화면인데, 실기와 동일하게 'IQ 교실'의 모습이 보인다.

 

2. 손쉬운 롬 이미지 파일 (.ROM) 선택

설택한 MSX 기기의 설정에 따라 다르겠지만, 대부분의 MSX 실기처럼 대부분 카트리지 슬롯 2(Slot A, Slot B)개가 보일 것이다.

마치 소프트웨어 에뮬레이터에서처럼 각각의 슬롯에서 'Load *.ROM' 메뉴를 통해 rom 파일을 선택하면 롬 카트리지가 삽입되면서 시스템이 재시작한다. 'Mapper type'을 'auto'로 하면 보통 알아서 매퍼를 설정해 주는데, Sofarun 같은 런처보다는 덜 똑똑한 것인지 별도로 지정해줘야 하는 경우도 있었다. ASCII8, ASCII16, Konami SCC 등 다양한 매퍼를 선택할 수 있다.

'Mapper type'에 'KOEI'를 설정하고 'SRAM size'에 적절한 메모리 값을 할당한 뒤 '대항해시대'나 '삼국지2' 롬 이미지를 구동하면, 해당 게임 내 저장 기능에서 SRAM 저장을 사용할 수 있다. 주의해야 할 것은 게임에서 저장 후 코어 메뉴의 'SRAM Save'를 선택해야 실제로 MiSTer의 마이크로SD 저장공간에 세이브 파일이 생성된다(게임에서 SRAM의 내용을 로드할 때 'SRAM Load'를 선택할 필요는 없었다).

슬롯이 2개가 되면서 카트리지 두 개를 사용하는 플레이를 할 수도 있게 되는데, 예를 들어 '몽대륙'을 슬롯2(Slot B)에 로드하고 '그라디우스2'를 슬롯1(Slot A)에 로드하면 '펭타'로 '그라디우스2'를 플레이 할 수 있다.

 

3. 손쉬운 플로피 디스크 이미지 파일 (.DSK) 선택

플로피 디스크가 기본적으로 장착된 기기의 .MSX 파일을 설정한 경우, 메뉴에 'Mount Drive A: *.DSK'라는 메뉴가 나타난다. 플로피 디스크가 기본적으로 설치되지 않은 기기라도 Slot A를 'ROM'이 아닌 'FDC'로 선택하면 같은 메뉴를 볼 수 있다(플로피 디스크가 기본적으로 설치된 기기에서는 'FDC'가 선택되지 않는다).

이 메뉴를 통해 플로피 디스크 이미지 파일인 .DSK를 선택하면 플로피 디스크 드라이브에 해당 디스크를 넣은 것과 같은 효과가 발생한다. 역시 소프트웨어 에뮬레이터처럼 쉽게 디스크 파일을 구동할 수 있다.

플로피 디스크 드라이브와 슬롯을 연계하면, 외산 MSX 기기 슬롯에 '한글 확장팩' 이미지를 로드하고 플로피 디스크 드라이브에 한글 사용 프로그램을 실행하는 등의 사용이 가능하다. 아래는 그런 방법을 통해, 'MSX의 천국' 네이버카폐 '타누사마'님이 만드시고 '삶의여유'님이 수정하신 플로피 디스크용 런처 프로그램을 외산 기기인 소니 HB-F1XV 기기 설정에서 실행시켜 본 것이다(물론 한국산 MSX 기종을 선택하고 이 플로피 디스크를 선택하면 한글 표시는 그냥 된다).

 

4. 손쉬운 카세트 테이프 이미지 파일 (.CAS) 선택 가능

MiSTer의 'Audio In' 단자를 통해 카세트 테이프 플레이어로 직접 데이터를 로드할 수도 있겠지만, .CAS 파일을 통해 데이터를 로드할 수도 있다.

 

5. FM-PAC 사용 가능

MSX-MUSIC이 장착되지 않은 MSX2 이하 기기 설정에서는 FM 사운드를 들을 수가 없는데, Slot A나 Slot B에서 'ROM' 대신 'FM-PAC'을 설정하면 FM-PAC을 장착한 것 처럼 FM 사운드를 들을 수 있다.

MSX-MUSIC 기능이 없는 기기 설정에서 'Aleste' 같은 게임을 구동해 보면 PSG 사운드만 사용할 때와 FM 사운드를 함께 사용할 때 소리가 (당연하게도) 다르다. 그런 기기 설정을 사용할 때  Slot A나 Slot B를 FM-PAC으로 설정하면 FM 사운드를 들을 수 있다.

FM-PAC을 이용하면 기본적으로 MSX-MUSIC이 장착된 MSX2+ 기기에서와 마찬가지로 BASIC에서 MSX-MUSIC 프로그래밍을 할 수 있다. 'CALL MUSIC' 같은 명령이 정상적으로 동작하며, FM-PAC 메뉴얼에 나와 있는 예제 음악 코드도 잘 동작한다.

MSX2+ 기기를 설정하면 기본적으로 MSX-MUSIC이 사용 가능 하지만 'PAC' 세이브 기능 때문에 FM-PAC 사용이 필요할 수 있다. PAC 세이브를 지원하는 'YS II' 게임에서 슬롯에 'FM-PAC'을 선택하고 게임 저장을 SRAM으로 하니 잘 동작했고 세이브 데이터의 load에도 문제가 없었다. 다만 문제는 'FM-PAC'에 저장된 SRAM 데이터가 MiSTer의 마이크로SD카드에 저장되지 않아 코어를 재부팅하면 날아간다는 것인데, 코어 메뉴의 'SRAM Save'를 선택해 봐도 스토리지에 저장되지 않았다.

일단 BASIC에서 'CALL FMPAC' 명령으로 '팩 커맨더'를 실행할 수 있으니, 코어를 끄지 않은 상태에서 SRAM에 있는 것을 플로피 디스크로 복사는 가능했다.

 

6. Game Master 2 구동 가능

Slot A에 코나미 'Game Master 2'를 선택하고 Slot B에 적용 가능한 코나미 게임 롬을 선택하여 사용할 수 있다.

코나미 게임 치팅(?)을 편하게 할 수 있고, 얼마 전에 생각해 냈던 바 처럼 MSX 메탈기어 1편을 세이브하면서 플레이 할 수도 있다.

 

MSX 버전 '메탈기어'를 세이브 하면서 플레이 하는 방법들 조사

얼마전 MSX '메탈기어'를 플레이 하려고 PS2의 '메탈기어 솔리드 3 서브시스턴스'를 꺼내 플레이 했던 글을 올린 적이 있다. 나쁜 방법은 아니지만 PS2 기기나 PS2 에뮬레이터를 사용해야 한다는 점

wehong.tistory.com

 

7. MegaFlashROM SCC+ SD 기능

Slot A에 'MegaFlashROM SCC+ SD'를 선택하면 해당 카트리지를 모의한다. SD 카드 내용은 FAT 포맷의 VHD 파일로 만들어서 'Load SD card *.VHD' 메뉴에서 선택해 주면 된다. 이로서 이 코어에서도 OCM/OCMC 처럼 대용량 스토리지를 사용할 수 있는 방법을 갖게 된다.

실험 삼아 한글화된 'YS 2'의 HDD 버전을 VHD 파일로 만들어 돌려 보니 잘된다. MGSEL 사운드 (PSG+SCC+FM)도 잘 재생되며, 심지어 MegaFlashROM 기능으로 MSX 코어에서는 되지 않던 'Double PSG'가 활성화 된다(물론 메시지만 그렇게 나오는 것인지 실제 활성화된 것인지는 확실하게 모르겠다).

<<추가 업데이트>> MegaFlashROM SCC+ SD의 SD스토리지(VHD 파일)에 롬이나 디스크 이미지 파일을 넣고 MM으로 선택 실행하면 로더 프로그램이 자동으로 동작한다. 이 때 로더 프로그램이 롬 데이터를 카트리지 롬 영역에 놓고 리부트 해야 하는데 그 작업을 진행하지 못하는 듯 하다. 또한 디스크 이미지 로더 프로그램은 한번 특수한 파일을 만든 후 재시작 한 뒤 그 파일을 지워야 하는데 그렇지 않아서 더 이상 MegaFlashROM SCC+ SD가 정상 부팅되지 못하는 상황을 경험하기도 했다.

 

8. SCC, SCC+

OCM/OCMC에서 처럼 슬롯 하나를 SCC/SCC+나 MegaFlashROM SCC+ 등으로 사용할 수 있다. 슬롯에 SCC+로 설정하고 플로피 디스크 드라이브에 'Snatcher'나 'SD Snatcher'를 구동하면 SCC+ 사운드를 들을 수 있다.

또한 Slot B에 SCC+를 설정하고 Slot A에 '사라만다' 보이스 셋 패치 버전을 구동하면 두 개의 SCC를 사용해 게임 내 보이스를 들을 수 있다.

 

9. 가로 스크롤 문제

23년 7월 2일자 버전에서 화면이 가로로 스크롤 되는 몇몇 게임들(Space Manbow, Salamander 패치 버전, Manbow 2 등)에서 화면 스크롤이 이상하게 되는 것을 확인했다. 'set adjust' 기법을 사용했을 때 화면 테두리가 움직이고 화면 내 캐릭터의 위치는 고정이어야 하는데, 반대로 화면은 고정되고 게임 캐릭터들이 앞뒤로 계속 조정되거나 화면 폭이 이상하게 좁아지는 현상이 보인다. 23년 6월 23일자는 버전에는 그런 현상은 없으나 다른 글리치(glitch)들이 있어 상황을 좀 더 지켜봐야 할 것 같다. 최근 자주 업데이트 되지 않는다는 점은 사용자로서 아쉽기는 하다.

 

10. 총평

코어의 진면목을 보고 깜짝 놀랐다. 소프트웨어 에뮬레이터에서 롬 파일이나 디스크 파일을 선택하듯이 이미지를 실행할 수 있으며, FM-PAC이나 Game Master 2 기능도 실행할 수 있다. SRAM이 카트리지에 포함된 코에이 게임을 SRAM이 내장된 것 처럼 실행할 수 있다는 것은 충격적이었으며, 슬롯 2개와 플로피 디스크를 연계한 실행을 해 볼 수 있다는 점이 너무 좋게 느껴졌다.

물론 아쉬운 점도 있다. FM-PAC의 SRAM 관리 매커니즘 등 모호하고, FM 사운드가 일부 구간에서 늘어지거나 품질이 부족함도 느꼈다. 버전에 따라 화면 스크롤이나 사운드 처리가 이상한 오류도 보인다. 가장 큰 아쉬움은 코어에 대한 자세한 설명을 찾기 어렵다는 점인데 아직 완성 단계의 코어가 아닌 만큼 나아질 것으로 예상한다.

개인적인 판단으로는, 완성도가 갖추어 지면 OCMC 기반의 MSX 코어보다 MSX 팬에게 더욱 사랑받는 코어가 될 수도 있을 것이라고 생각한다.

Comments