2018년 9월 15일 토요일

MMC/SD Drive V4 제작 #4 - 메가램 로딩 및 SRAM 활용

일단 사진 한장 띄우고 갑니다.

2048KB 롬인 Pointless Fighting을 로딩하는 모습이네요.





MMC/SD V3를 써오셨다면 아주 익숙한 화면이 되겠습니다.

V4와 H/W는 좀 다르지만, V4에서 MMCSD.COM의 사용법은 똑같습니다. ㅎ.ㅎ



1. SRAM 사용


V4의 SRAM 2048KB는 용도별로 조각조각 나누어서 사용하게 되는데요.

메가램 단일모드에는 모든 SRAM을 사용할 수 있습니다.

위의 사진처럼 2048KB 롬을 로딩하거나, 코에이의 1024KB 롬과 SRAM 세이브 등등

사이즈 제한없이 쓸 수가 있어요.

이젠 V3의 하이브리드모드(플래쉬롬 1024KB + SRAM 1024KB 조합)는 더 이상 쓰지 않습니다.

물론 대부분의 롬은 512KB 이하로 되어있으니, 평소에는 SRAM이 많이 낭비되겠죠? ㅎ.ㅎ


단일 메가램 모드가 아닌 경우에는 SRAM을 여러가지 용도로 나누어 사용합니다.

메인 메모리매퍼(512KB) 및 GameRunner 모드 용 메모리매퍼(512KB),

딜럭스박스(512KB), MA/MV 미디어플레이어 용 클러스터버퍼,

User Kanji Font (256KB) 등으로요~


동작 시나리오에 따라 중복되지 않는 기능은 서로 메모리 영역을 공유하도록 되어있습니다.

이 때문에 롬 로더 등의 코드는 모두 새로 만들었어요.

MMCSD.COM는 DOS2용 프로그램이긴 하지만,

실제 동작 시에는 MMC/SD BIOS 내부에서 BDOS, 메인 BIOS를 전혀 쓰지않습니다.

코딩하다가 머리가 뽀개지는줄..ㅋ




2. 기본 슬롯에서 구동


기본슬롯에서 사용할 때는 서브슬롯 할당이 아래처럼됩니다.

저사양 기종을 쓰는 분들에게는 이정도가 유용하지 않을까 싶으네요.


SSLOT 0 = MMC/SD Drive

SSLOT 1 = KanjiROM (BASIC)

SSLOT 2 = BASIC'n 2.1

SSLOT 3 = Memory Mapper 512KB


본체의 메모리도 충분(512KB 이상)하고 슬롯 여유도 있다면,

그냥 저처럼 확장슬롯에 꽂아서 쓰시면 되겠습니다.

당연한거지만, V4를 확장슬롯에 꽂으면 위의 SSLOT 1,2,3의 기능은 동작안합니다.


참, 이전 게시물에서는 메인 메모리매퍼로 496KB을 할당했었는데요.

이게 아무래도 S/W 호환성 문제를 발생시킬 듯 해서, 512KB를 쓰는걸로 바꼈습니다.




3. 메가롬 매퍼


이전 V3에서는 SCC 매퍼와 간이 16K 매퍼 두개만으로 모든 매퍼를 처리했습니다.

그러다보니 S/W 패치만으로 구동이 불가능한 경우도 좀 있었는데요.

(MMC/SD 용 I/O맵과 충돌하는 경우 등)


이번 V4는 아래의 기본 매퍼가 H/W적으로 구현이 되어있습니다.

KONAMI 8K, KONAMI SCC, V3호환 16K,

ASCII/KOEI 8K, ASCII 8K + SRAM, ASCII 16K, ASCII 16K + SRAM


그리고 MMC/SD로 사용되는 I/O 영역과 SCC SOUND IO로 쓰이는 영역은,

메모리 I/O를 ON/OFF 할 수 있도록 되어있습니다. 더 이상 충돌의 여지가 없는 셈이죠.


막상 구현해서 동작시켜보니 쬐끔 허무한 느낌도 있네요.

V3때는 H/W 충돌을 회피하려고, 디버깅을 참 많이 했었는데 말이죠.

(배부른 소리이려나요. ㅎ.ㅎ)




4. 기타


현재 기본 기능은 거의 다 구현이 되어있습니다.

SCC 사운드, 8BIT PCM도 들어있구요.

paraMSX-R의 기술이 집약된 NEW GameRunner도 있구요. 으흐흐...


현상태에서 메인 CPLD가 85%정도 점유중인데요.

원래 계획했던 DCSG와 세컨더리 PSG를 빼버릴까...고민하고 있습니다요.

보드 앞뒤로 CPLD 두개를 넣고 디버깅하려면 고생길이 활짝 열릴 가능성도 있어서요.ㅋㅋ

차라리 DCSG 하나를 실제칩으로 넣는 것도 괜찮아보이구요.

이거 SN76489 칩이 크기가 작아서 보드에서는 별 부담이 안되거든요.




마지막으로, 각종 롬들을 로딩/실행하는 모습을 한번 보시죠~

Voice Set 패치된 게임 구동을 위해 SCC-I 카트리지가 추가(슬롯2-2)로 쓰이고 있어요.




그럼, 다음편에서 보아요~ ㅎ.ㅎ


궁금한 점 있으시면 댓글로 ㄱㄱㄱ