2026년 9월 27일 일요일

21세기 MSX 활용 #8 - ROM 카트리지 에뮬 (2)

이번에는 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 에뮬 이야기로 이어집니다...

2026년 9월 26일 토요일

21세기 MSX 활용 #7 - ROM 카트리지 에뮬 (1)

카트리지 중 주변기기로 제작된 것들을 제외하면, 순수 S/W로 된 ROM 카트리지가 남습니다.

이런 카트리지의 롬을 덤프하면 대략 아래의 4가지 종류가 나옵니다.


- 유틸리티 16KB, 32KB

- BASIC 게임 16KB

- 게임 16KB, 32KB, 48KB, 64KB

- 게임 메가롬 (128KB ~ )


MSX1 용 프로그램(유틸, 게임 등)은 램 요구사항이 8KB 또는 16KB입니다.

BASIC 게임은 코드가 Page 2로 매핑되도록 정해져 있어요.


용량이 16KB, 32KB, 48KB인 롬들은 램 64KB 기종에서 쉽게 에뮬을 할 수 있습니다.

주의 할 부분은, 여기서 램 64KB는 단일 슬롯에 장착된 램을 의미한다는 건데요.

만약 램 32KB 달린 MSX1의 외부 슬롯에 32KB 확장램을 장착하면?

MSX-DOS를 쓸 수는 있지만 게임롬 에뮬은 불가능합니다.


보통 게임 코드는 자신의 코드가 같은 슬롯에 있기 때문에 기동 시, Page 1,2의 슬롯을 맞춰주게 되는데요.

슬롯이 서로 다른 경우는 엉망이 되면서 실행이 불가능하게 됩니다.

물론 게임별로 하나하나 패치롬을 따로 만들면 되긴 하겠지만, 시간낭비겠죠?ㅋ


만약, 램 64KB인 기종의 Page 0,1,2 (0000H ~ BFFFH) 램에 롬을 로딩 후 재부팅하면 어떻게 될까요?

그 컴퓨터는 램 16KB 기종에 롬 카트리지를 꽂은 것처럼 동작하게 됩니다. 

이런 이유로, 램 64KB 또는 128KB 기종이 주류였던 국내는 복돌이 천국이 될 수 밖에 없었죠.

물론 게임 제작사가 이걸 막으려고 카피프로텍션 코드를 넣었지만, 크랙은 뭐 금방이죠 ㅎ.ㅎ;


그럼, 남은 건 64KB 용량의 롬과 메가롬인데요.

16K 롬매퍼를 쓰는 64KB 롬 -> 메모리 매퍼로 에뮬가능

롬매퍼가 없는 64KB 롬 -> Page 3의 데이터 접근 코드를 별도로 구현하거나 

 8K 롬매퍼의 메가롬 -> 메모리 매퍼로 분할 로딩 시 속도저하 발생 (실사용 불가능)

16K 롬매퍼의 메가롬 -> 메모리 매퍼로 에뮬가능


메모리 매퍼로 에뮬을 하려면, 본체의 메모리 용량이 롬 사이즈 보다는 커야합니다.

자낙EX처럼 롬 사이즈가 112KB인 경우는 아이큐2000의 램 128KB에서도 에뮬이 가능합니다.

수퍼람보 스페셜은 타이틀 그래픽을 제거해서 용량을 줄여놓은 버전도 나오고 그랬네요.


문제는 MSX2 본체만으로 에뮬이 불가능한, 8KB 매퍼를 쓰는 메가롬인데요.

ASCII 8K, KONAMI 8K, KONAMI SCC 류의 매퍼를 쓰는 롬이 되겠습니다요.

이건 딱히 방법이 없죠.

롬 대신 램 카트리지에 매퍼를 넣어서 에뮬을 하는 방식을 사용했습니다.

80년대에 나왔던 블랙박스, 디럭스박스 류의 기기입니다요.


TTL 로직칩으로 범용 매퍼를 간단하게 구현해서 넣고,

게임롬에서 해당 매퍼를 쓰도록 패치해서 램 카트리지에 로딩하면 끝!

언제부터인지 이런 기기를 MegaRAM이라고 부르고 있는데, 저도 걍 그렇게 부르고 있네요.


코나미의 스내처, SD스내처에 들어있는 SCC-I 사운드 카트리지는 램이 64KB가 들어있는데요.

보드의 램을 128KB로 증설하면 1메가전용 메가램 카트리지로 쓸 수 있습니다.

SCC-I가 SCC 사운드 하위호환이 되기 때문에 사라만다, 파로디우스 같은 게임을 구동하는 용도죠.


그 외, SCC롬팩을 개조해서 512KB FlashROM을 넣으면, 현존하는 코나미의 게임은 다 실행가능한데요.

2000년대에는 이런 SCC플래쉬롬팩을 만드는 게 유행이었네요.


써놓고 보니 서론이 좀 길군요 ㅎ.ㅎ


롬 에뮬을 요약하면,

- 메인램 64KB 또는 메모리 매퍼 사용

- 메가램 카트리지 사용

- 플래쉬롬 카트리지 사용


나머지 롬 에뮬 얘기는 다음 편에서 이어집니다...


2026년 9월 23일 수요일

21세기 MSX 활용 #6 - SDHC 32GB

SDHC는 'SD High Capacity'를 의미합니다.

기존 SD 메모리의 용량 한계를 늘리기 위해, 메모리 주소를 컨트롤하는 방식을 확장한 것인데요.

기존의 SD는 SDSC (Standard Capacity)로 부르기도 합니다.


SDHC의 용량은 4GB ~ 32GB입니다.

MSX-DOS2에서 드라이브 8개를 모두 FAT16 4GB 파티션으로 채우면 -> 4GB x 8 = 32GB

SDHC 한개로 MSX 최대 용량을 커버할 수 있게 됩니다. 기가막힌 사이즈! ㅎ.ㅎ


이 많은 용량을 어디에 쓰나요? 라고 하실 분도 계시겠네요.

저는 MP3랑 대용량 MV로 팍팍 채워놨습니다요.

제가 486 때 쓰던 HDD가 270MB였는데, MSX에서 180MB짜리 MV파일을 쓰게 될 줄은 몰랐네요ㅋ


MMC Disk를 처음 만들었을 때에는 MMC 256MB 메모리도 '넉넉해서 좋구나'의 느낌이었죠.

MMC/SD V2때는 MMC는 이미 단종되고 SD 2GB 메모리가 대세였구요.

MMC/SD V3, V4를 만들 때는 번들 메모리가 SDHC 8GB -> 16GB -> 32GB로 바뀌었던 기억도 납니다.


아마 V4를 구매하신 분이라면 32GB 메모리에 파티션 7개만 설정되어 있는데요.

이게 본체의 FDD를 활용하려면 마지막 드라이브 문자(H:) 1개를 남겨야 해서 7개만 세팅되어있어요.

V4랑 FDD를 함께 쓰는 경우가 별로 없다면, 그냥 4GB 파티션을 추가해서 쓰셔도 좋겠습니다.

저는 그렇게 쓰고 있어요. FDD는 단독으로 쓸 때만 사용하구요.


그나저나 MMC/SD V3 때 SDHC로 갈아탄지 12년째인데...

언젠가는 SDHC도 단종되겠죠? 미리 쟁여놔야하나 그런 생각도 해봅니다ㅋ


디스크에 관한 얘기만 연속으로 5편을 썼네요. 이번 글로 디스크 얘기는 END입니다! ㅎ.ㅎ


그럼, 다음 편에서...