일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 티스토리챌린지
- 3DS
- analogue
- Game Gear
- mister
- 메트로이드
- snes
- PC엔진
- 메가드라이브
- 슈퍼패미컴
- 오블완
- 패미컴
- Apple II
- 건담
- GOG
- ensemble
- ps4
- 앙상블
- MSX
- fpga
- 이스
- 슈퍼마리오
- 컨트롤러
- 닌텐도 스위치
- YS
- 게임기어
- PSP
- 모빌슈트
- 게임보이
- mobilesuit
- Today
- Total
Just a Blog
[MiSTer FPGA] MSX 코어에서 플로피 및 하드 디스크 이미지 실행 본문
MiSTer의 MSX 코어는 OCMC(One Chip MSX Clone)들이 사용하는 SD 카드 저장장치를 VHD라는 가상 디스크 이미지로 대체해 사용한다. 이것으로 MSX-DOS2 기반 대용량 저장공간을 사용할 수 있는데, 사용자들은 보통 여기에 ROM이나 FDD 이미지를 넣고 SofaRun 등의 로더(loader)툴을 이용해 그것들을 구동하고 있다.
로더 프로그램들의 기능과 안정성이 상당히 좋아서 대부분의 경우 ROM 또는 FDD(다중 디스크 소프트웨어는 묶어줘야 함) 이미지들이 잘 구동되는데, 간혹 특별한 이미지를 실행해야 할 때 잘 되지 않거나 적절한 방법이 없어서 아쉬움이 있었다. 대표적인 경우로, 사용자들이 개인적 사용을 목적으로 만드는 게임집합(10합, 20합 등) 플로피 디스크 이미지들과 하드디스크(HDD) 게임 이미지들을 들 수 있다. 게임집합 플로피 디스크의 이미지를 SofaRun으로 구동하는 경우 선택된 게임의 ROM 이미지가 메모리에 올라갈 때 'not enough memory' 에러가 발생하였으며, 하드 디스크 이미지의 경우 SofaRun으로 실행할 방법도 마땅치 않았다.
그래서, MSX 코어가 사용하는 VHD 이미지에 플로피 디스크의 파일 또는 하드 디스크의 파일을 복사해 작은 용량의 VHD 이미지를 디스크 처럼 사용하는 방법을 생각했다. 게임집합 플로피 디스크나 사용자화된 HDD 이미지에는 락(lock)이 걸려 있지 않을 것이므로 파일을 복사하기만 하면 실행이 될 것으로 판단했다.
방법은 다음과 같다.
우선, 플로피 또는 하드 디스크 내의 파일이 담길 적당한 크기의 VHD 파일을 만든다(VHD 내 FAT16으로 사용할 수 있는 크기는 VHD 자체 크기보다 작을 것이므로 이를 고려해야 함). 그리고 MSX 코어의 GitHub 페이지 내 sdcreate를 이용하거나 Kdl 사이트에 있는 유틸리티를 이용해 VHD 파일 내 파티션에 시스템 파일을 설치해 준다.
그 다음으로, 복사하고자 하는 원본 디스크 이미지에서 파일들을 VHD 이미지 내 파티션에 복사한다. 플로피 디스크 이미지의 경우는 'Disk-Manager'를 이용하고, 하드 디스크 이미지의 경우 'DiskExplorer'를 이용하는 것이 편했다.
마지막으로, 만약 AUTOEXEC.BAT이나 AUTOEXEC.BAS를 사용하고 있다면 이를 적절히 수정해서 VHD 이미지 선택 시 바로 시작될 수 있도록 수정한다.
이런 과정을 사용하면 MiSTer의 MSX 코어가 사용하는 VHD 형태로 플로피 디스크 및 하드 디스크 이미지를 사용할 수 있다. '키티야'님이 공개해 주신 'YS2 한글 HDD' 버전을 이런 방식으로 변경해 보니, MiSTer의 MSX 코어에서도 실행가능했다(한글화 되었음은 물론이고 YS2의 배경음악을 더 좋은 사운드로 들을 수 있으며 세이브 시 디스크 교환이 필요없다!).
이 시도에서 얻은 교훈은... 'OCM 클론에서 스토리지 디바이스(SD카드, VHD파일)는 MSX 입장에서 디스크다'라는 것이다.