2015년 10월 22일 목요일

MMC/SD Drive V3 제작 #5 - MegaRAM 모드

MMC/SD Drive V3에는 플래쉬롬 외에 SRAM이 추가됩니다.


원래 SRAM은 MBR, FAT, 파티션 정보, 2DD에뮬 시 정보 저장을 위해 쓰이게 되는데요.

뭐 이정도라면 32KB 정도면 충분합니다만...

걍 512KB짜리 SRAM을 넣기로 결정했습니다.


왜냐구요?

MMC/SD Drive V3에서는 V2에서 쓰이던 멀티롬 기능이 제거되고,

대신 메가램 기능이 들어가게 되거든요..ㅋ


참고로 메가램은 메가롬을 흉내내는 기기입니다.

디럭스 박스, 럭셔리 박스 등의 카트리지 생각하시면 맞습니다!


이번 V3에서는 SCC 칩이 들어가지 않기 때문에, SCC 사운드는 들을 수 없지만,

HW적으로 기존 멀티롬 보다 좀 더 롬구동에 적합하도록 되었습니다.


MMC/SD에서 게임롬 구동을 짧게 비교하자면...

# V2 멀티롬

 1. 롬디스크 영역 일부에 롬 데이터 저장

 2. 롬의 뱅킹 루틴을 패치하여, 메인램으로 뱅킹 코드 이동

 3. 실제 HW에 맞도록 뱅크 변경하여 적용


# V3 메가램

 1. SRAM 영역에 롬 데이터 저장

 2. 롬의 뱅킹 루틴의 주소 변경(패치 )

 3. MMC/SD Drive를 메가램모드로 부팅


V2의 뱅킹 루틴은 메인램 상에 존재해야되서, 수행되는 코드 양이 늘어나게 됩니다.

대부분의 경우는 문제 없지만, 타이밍에 민감한 부분에서는 손해가 될 수 있어요.


V3의 메가램은 IO 주소만 변경되는거라서, 수행되는 코드 양이 동일하거나 약간만 증가합니다.

ASCII 8K, KONAMI 8K, KONAMI SCC 매퍼는 원본과 코드 사이즈 같구요,

ASCII 16K 매퍼는 V2 패치 코드의 절반 사이즈로 구동됩니다.


참고로, V2 멀티롬은 플래쉬롬에 이미 롬데이터가 들어있기 때문에,

DOS 구동이 불가능한 본체(32KB램 달린 MSX1 등)에서도 게임이 실행되는 장점이 있어요. ㅎ.ㅎ

주로 즐기는 게임 한두개 정도라면, 한번 로딩으로 언제든 실행이 가능하니 꽤 편하지요.


글이 자꾸 길어지네요. 별 내용이 아닌데..ㅋ

암튼 실제 구동 화면을 보시겠습니다요~


아래는 악마성 드라큐라 롬을 실행하는 모습입니다.

매퍼가 KONAMI 8K로 인식되구요. 패치되어 로딩됩니다.




아래는 4가지 매퍼타입의 메가롬들을 하나씩 실행해보는 영상입니다.

실제 동작이 어떻게 되는지 참고하시면 되겠습니다.




2015년 10월 12일 월요일

MMC/SD Drive V3 제작 #4 - SDHC 8GB 테스트

이번에는 SDHC 카드 테스트를 해보았습니다.


참고로, SDSC 카드는 32bit byte address로 메모리 액세스를 하기 때문에, 4GB 용량 제한이 있는데요.

SDHC 카드는 32bit block address 방식으로 바뀌면서 더 큰 메모리를 쓸 수 있습니다.

이번 테스트에서는 SanDisk 8GB SDHC 카드를 썼습니다.


구버전 MMC/SD BIOS를 수정해서, SDSC/SDHC 모두 사용할 수 있도록 만들었구요.

MBR/EBR 영역의 파티션 테이블을 이용하여, 여러개의 디스크 영역을 액세스 할 수 있도록 했습니다.


이렇게 SD카드를 HDD처럼 쓰는게 보편적인 방법인데,

기존 MMC/SD BIOS에서는 많은 수의 2DD 디스크를 쓰기위해 자체방식의 파티션을 구현해서 썼었지요.


암튼 8GB 카드를 6개의 파티션으로 나눴습니다. ㅎ.ㅎ

Partition Wizard라는 윈도용 프로그램을 사용했습니다.

MSX용 파티션 툴도 언젠가 만들어야겠지요? ㅋ




Primary 파티션 3개, Logical 파티션 3개 총 6개로 나누었구요.

앞쪽 두개 파티션은 32MB 용량으로 FAT12 디스크가 됩니다. MSX-DOS2 부팅하려면 FAT12가 필수겠죠?

그리고, 나머지 네개 파티션은 FAT16 디스크가 되겠습니다요.


아래는 제 turboR에서 부팅 시 모습입니다.

간략한 카드 정보와 전체 드라이브(파티션) 갯수가 표시됩니다.




MSX DOS1/2에서 최대 8개의 드라이브만 쓸 수 있으니,

이번 테스트 처럼 8GB 카드로 드라이브 6개 붙이고, 나머지 두개는 본체 내장 FDD, 램디스크 이렇게 하면...

아마 왠만한 환경에서는 충분히 활용이 될 것 같습니다.


만약 16GB 카드에서 8개 넘는 파티션을 쓴다면,

런타임으로 파티션 교체하는 기능 등... 뭔가 부가적인 방법이 있어야겠네요.


아래는 M 구동한 모습입니다.

슬롯2-1에 드라이브 6개가 연결된게 보이시죠?




아래는 DOSSCAN을 돌려본 결과입니다.

turboR 고속모드를 활용을 높이기위해, IO 코드 일부를 내부 메모리로 옮겨서 동작하게 됩니다.

스택을 약간 소모하는 정도라, 실사용에서 별 무리가 없을 걸로 생각합니다요~

속도는 544KBytes/sec 가 나오네요.




마지막으로 동영상 하나 붙입니다.

기존 MMC/SD보다 R/W 속도가 조금 빠르다는 것 외엔 특이한건 없어요. ㅎ.ㅎㅋ

영상 끝부분에는 SofaRunit 프로그램으로 DSK 이미지를 구동한 모습도 있습니다. 참고하시구요.

(근데 배경음악 볼륨이 넘 크네요. 소리 좀 줄이고 보셔요~ ㅋ)




2015년 10월 3일 토요일

프리뷰가 나오는 멀티롬팩을 만들어보아요~

이제 저희 애들이 많이 커서, 지들끼리 MSX 겜도 잘 합니다. ㅎ.ㅎㅋ

MSX 게임팩은 70개쯤 있지만... 좀 더 편하게 쓸 수 있도록 멀티롬팩을 하나 만들었습니다.

애들 수준에 맞는 겜으로 24개를 모아보았어요.


팩에 사진도 한장 프린트해서 붙이고~ 으흐흐..ㅋ

이런 모습입니다! ㅎ.ㅎ




일반 멀티롬팩(합팩)과 차이라면....

게임 선택 메뉴에서 실제 게임샷을 볼 수 있다는 점인데요.

실제 실행하면, 아래처럼 나옵니다.

화면 2/3는 게임 모습이구요. 아래쪽 1/3 화면에 게임 목록이 표시되겠습니다요.




멀티롬팩이야..뭐, 플래쉬롬만 큰거 달면 쉽게 만들수 있겠죠?

지난번 폰트팩 만들다가 남은 보드 재활용해서 쓰도록합니다. 1MB 플래쉬롬 사용할꺼에요.


음... 그럼, 다음 문제는 각 게임의 화면을 캡쳐하는 일인데... 어떻게 하면 쉽게 가능할까요?

80년대에는 좀 힘들었겠지만, 지금은 21세기가 아닙니까요? 걍 에뮬레이터로 갑니다~ ㅋ


paraMSX를 이용하면 VDP 레지스터와 VRAM 내용을 그대로 덤프할 수 있습니다.

아래 스크린샷 참고하셔요.




VDP 레지스터 설정만 알면, 필요한 데이터들을 추출할 수 있겠지요?

걍 윈도용 프로그램하나 만들어서 돌립니다~




패턴 네임, 패턴 제너레이터, 컬러 테이블의 메모리 영역을 확인해서,

스크린2 화면의 상단 2/3 영역을 파일로 뽑습니다.


아래 스크린 샷 참고하셔요.

VRAM0.BIN -> 패턴 네임 데이터

VRAM1.BIN -> 패턴 제너레이터 데이터

VRAM2.BIN -> 컬러 테이블 데이터




전체 24개의 게임들의 스크린샷을 추출하면, OK!!

이제 남은 건, 실제 MSX에서 구동될 런처 프로그램이네요.


화면 출력용 ASCII 폰트 하나 집어넣고, (왠지 BIOS 내장 폰트 쓰면 좀 누추해 보일까봐서요..ㅎ.ㅎ;;)

키 또는 조이스틱 입력받아서 선택/실행할 수 있도록 간단하게 만들었습니다.


실제 구동한 모습은 동영상으로 보여드립니다.

국딩 때, 학교 PC실에서 친구랑 트윈비 많이 했었는데... 이제 저희 애들이 겜하는 모습을 보니 감회가 새롭네요~




그럼, 즐거운 주말 되셔요~ ㅎ.ㅎ