이번에는 MMC/SD Drive V4의 메가램 및 GameRunner II에 관한 내용입니다.
2015년 MMC/SD V3를 만들기 전까지는 메가롬 게임을 실행할 때, 아래 기기를 조합해서 썼습니다.
MMC/SD V2 멀티롬, 코나미 SCC-I 128KB, 디럭스박스
근데 대부분은 MMC/SD V2 멀티롬을 쓰게 되더라구요.
아무래도 메가램 기기들은 게임을 로딩 후 일반 DOS2로 재부팅 시 번거롭기 때문이었는데요.
메가램 내의 램 내용이 지워지도록 전원 OFF 상태로 10초 이상 기다려야했죠.
특히 롬 테스트 용도로 사용하기엔 너무 귀찮아서...ㅎ
MMC/SD V2는 기본 부팅이 디스크롬이라서, 멀티롬 상태에서 리셋되면 바로 디스크로 돌아갑니다.
그래서 MMC/SD V3,V4의 메가램을 넣을 때에도 V2의 멀티롬처럼, 기본 부팅은 디스크롬으로 되도록 했죠.
디스크롬으로 부팅된다는 것을 바꿔말하면,
시스템에서는 메가램이 보이지 않게 된다는 의미입니다.
MMCSD.COM 프로그램에서만 롬파일 로딩 시, 내부 모드를 바꿔서 메가램쪽으로 로딩할 수 있습니다.
V4에서는 디스크롬에서 SD카드의 파일을 바로 메가램의 SRAM으로 바로 전송합니다.
DOS2의 DISK I/O 루틴을 쓰지 않기 때문에 로딩이 꽤 빠릅니다.
MSX-DOS와 MSX-DOS2는 디스크 액세스 시 큰 차이가 하나 존재하는데요.
MSX-DOS는 디스크와 다른 슬롯의 메모리로 직접 R/W가 가능합니다만,
MSX-DOS2는 무조건 메모리매퍼(데이터 세그먼트)를 쓰도록 되어있습니다요.
기기(슬롯)간의 다이렉트 전송이 불가능한 대신 일정한 전송속도을 얻게 되었죠. 빠릅니다!
참고로, MSX-DOS는 메모리 영역(주소)에 따라 전송 속도가 제각각입니다.
아마 turboR을 주로 쓰시는 분들은 아시겠지만,
MSX1에서만 동작하는 게임도 있고, 확장슬롯에서는 오동작하는 게임도 있고 그렇죠.
국산 아이큐1000,2000 전용 프로그램도 있구요.
그래서, paraMSX-R에서 구현했던 머신 에뮬의 기본 슬롯 처리만 V4에 살짝 넣었습니다.
본체를 MSX1, MSX2, MSX2+ 하위 기종처럼 보이도록 해주는 것이죠.
여기에 MSX1,2 모드에서는 JP,KR,EU BIOS도 선택가능합니다.
여기에 BIOS, 메가램과 디스크롬, 메인램이 모두 기본슬롯에 배치됩니다.
슬롯 구조에 따른 호환성에 문제가 있는 프로그램을 커버하기 위함이죠.
이 기능이 GameRunner II입니다.
수년을 거쳐 MMC/SD V4까지 오게 되니, turboR에서 불편했던 것들이 한방에 해결되었습니다요.
MMC/SD의 메가램, 멀티롬(FlashROM) 기능을 요약하면,
V1,V2 = 멀티롬 384KB (2메가롬 가능)
V2 Multi-ROM II = 멀티롬 512KB x 15개 (7.5MB)
V3 = 메가램 1MB + 서브롬 1MB
V4 = 메가램 2MB + 서브롬 4MB
마지막으로 하나 더 적어봅니다.
코나미 SCC, SCC-I 칩의 롬매퍼 기능인데요.
SCC 매퍼 -> 최대 512KB 롬
SCC-I 매퍼 -> 최대 128KB 램
으로 구성됩니다.
에뮬레이터(S/W 에뮬 및 CPLD,FPGA 구현)에서는
8K 매퍼의 최대용량인 2048KB 메모리를 SCC, SCC-I 매처로 설정하는 경우가 있습니다.
2000년 이후에 만들어진 게임 중에 이런 에뮬을 활용하는 경우가 있으니 참고하세요.
반대로, SCC-I의 경우는 128KB를 넘는 메모리를 쓰면 오동작하는 프로그램(예: SCMD)도 있습니다.
MMC/SD V4와 T-Wave의 SCC-I 매퍼에는 128KB, 512KB 등으로 제한하는 기능이 들어간 것도 이 때문입니다.
다음 편은 DSK 에뮬 이야기로 이어집니다...