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)로 쓰이고 있어요.




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


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


2018년 8월 21일 화요일

MMC/SD Drive V4 제작 #3 - 확장슬롯/메모리매퍼/한자롬 테스트

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

아이큐2000 + MMC/SD V4 (proto ver) + FMPAC으로 프린세스메이커를 실행한 모습입니다.

한자도 잘 나오죠? ㅎ.ㅎ




아시다시피 DOS2를 구동하려면 램이 최소 128KB는 필요하구요.

MMC/SD V3의 경우 COMMAND 2.44, FAT16.COM, MMCSD.COM 등의 기본 프로그램 구동 시, 최소 램256KB가 필요합니다.


대부분 일제 MSX2/2+ 기종들이 내장 메모리가 64KB뿐이죠?

제대로 쓰려면 본체램을 확장하거나 확장슬롯 + 메모리매퍼를 써야하는데요.

확장슬롯이 없거나, 그냥 저가의 MSX2 본체 하나만 쓰시는 분도 꽤 있을꺼에요.


집에 파나소닉 FS-A1이 한대 있습니다.

요놈은 메모리매퍼도 없고, FM 사운드도 없고, 디스크도 없고, 한자롬도 없고...

그 흔한 숫자키패드도 없어요. 완전 싸9려 기종입니다. ㅎ.ㅎ

주로 애들이 게임할 때 쓰고 있죠.


요걸 MMC/SD V4를 꽂아서 써봅시다요~

현재 개발 용으로 쓰는 보드는 paraMSX-R에 쓰였던 보드입니다.

CPLD + FlashROM 8MB + SRAM 2MB + SRAM 128KB + SD카드를 넣어서, proto 버전의 V4를 구성했습니다.

V3 때처럼 이번 proto 버전은 H/W V4.0으로 되어있습니다.

개발완료되면 정식 보드는 V4.1 정도가 되겠네요.





V4 보드는 한장이지만, 내부는 확장슬롯으로 구성되어있습니다.

서브슬롯0: MMC/SD DiskROM

서브슬롯1: Kanji Driver

서브슬롯2: 비어있음

서브슬롯3: 메모리매퍼 496KB

그리고 Kanji JIS 1/2을 위한 256KB 한자폰트롬이 들어있습니다.


본체의 기본슬롯에 꽂으면 기능을 모두 사용할 수 있습니다.

저가 MSX2 기종 또는 확장슬롯이 없으시면 요렇게 쓰시구요.


메모리가 충분한 MSX2+ 이상의 기종을 쓰신다면, 그냥 확장슬롯에 꽂아서 쓰면 되겠습니다.

이 때는 MMC/SD DiskROM 하나만 동작합니다.

확장슬롯에 꽂더라도 GameRunner 모드에서 한자롬/메모리매퍼를 활용가능하니 참고하시구요.

(이건 아주~ 나중에 설명을...ㅋ)



아래는 FS-A1에서 구동 후 MEGAREPORT 프로그램을 실행한 모습입니다.

KANJI, JIS, DOS2 등이 인식되는걸 볼 수 있습니다.






그럼, 실제 동작영상을 보시죠~ ㅎ.ㅎ

메가램 기능은 V3 호환모드로 구동이 되구요.

한자롬은 본체에 한자롬이 없는 경우만 활성화됩니다. 참고하세요.





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


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


2018년 8월 5일 일요일

[파라동 이벤트] 게시글 13579 히트 기념품 소개드려요~

이번 이벤트에 당첨되신 "리랴"님께 전해드릴 카트리지입니다.





카트리지는 MSX2 이상의 기종에서 실행됩니다.

짧은 축하말과 함께 게임 4가지를 선택하는 메뉴가 나오게 되구요.

스페이스 바를 누르면 게임으로 ㄱㄱㄱ~


THEXDER, ZANAC, ZANAC EX, ALESTE 4개의 롬이 들어있습니다.





실행되는 모습도 잠깐 보시죠~ ㅎ.ㅎ