2018년 10월 6일 토요일

MMC/SD Drive V4 제작 #5 - 레알 DCSG(SN76489)를 붙여보자

초기 계획이랑 조금 달라진 부분이 되겠네요.

보드에 CPLD 두개를 실장하고, 두번째 CPLD는 사운드 전용으로 쓰려는 계획이었는데요.


막상 개발를 해보니...

메인 CPLD 하나에 MMC/SD + MegaRAM + GameRunner (Virtual Machine) + SCC-I + PCM까지 다 들어가더라구요.

남은 로직은 별로 없긴하지만요~ ㅎ.ㅎ


결과적으로, 두번째 CPLD에 DCSG랑 PSG를 넣으려던 계획은 삭제(!)되었습니다. ㅎ.ㅎ

대신 DCSG 칩 한개를 보드에 넣기로 했어요. 진짜 칩이요~ SN76489입니다.


DCSG(SN76489)는 PSG(AY-891x)에 비해 크기가 작아서, 보드에 넣기에도 부담이 적습니다.

물론 DIP 타입이긴 하지만요. 꼭 OPLL 칩을 보는 듯 하네요.





기존 MMC/SD V4 개발 보드에도 하나를 붙이고, 따로 만능기판으로도 하나 만들었습니다.

칩 테스트 용으로 하나 있어야할 것 같아서요. 흐...


앞면 사진입니다.





뒷면 사진입니다.





DCSG 컨트롤 포트는 49H를 사용합니다.

사실 40H~4FH 영역은 Switched I/O로 할당된 곳이긴 하지만,

Franky 카트리지가 오랫동안 점유하고 있습니다. (덕분에 다른 기기들은 49H 포트를 피해야..ㅋ)


참고로 VGMplay 프로그램은 DCSG 재생 시, 항상 Franky 카트리지가 존재한다고 가정하고 동작합니다.

DCSG는 레지스터를 읽을 수 없는 칩이라서, 디텍션이 불가능하기때문에 이렇게 동작하는걸로 보심 되겠습니다.


그리고, MMC/SD V4의 DCSG I/O포트는 Disable 가능하기 때문에,

진짜 Franky 카트리지를 함께 꽂더라도 문제되진 않습니다.



동작영상은 따로 안찍어도 되겠죠? ㅎ.ㅎ

DCSG 구동 모습은 이미 유튜브에 두어개 올라가있을겁니다. 궁금하시면 찾아보시구요~



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


궁금한 점 있으시면 댓글주세요!

 

2018년 10월 2일 화요일

2018년 파라동 정모 후기

2016년 이후 2년만의 정모였습니다.

장소는 이번에도 파나소닉 코리아 컨퍼런스 룸이었구요.





많은 분들이 오셔서 즐거운 시간을 보냈습니다.







저는 집에서 쓰는 MSX 세팅을 그대로 들고 왔습니다.

V4 개발 보드도 가져와서 몇가지 시연도 했습니다.




2012년에 만들었던 "ASO 리메이크 AREA1"도 켜봤습니다.

간만에 해봤는데, 여전히 어렵네요 ㅋ

조이메가로 개조된 MD패드도 갖고 왔었어요.




다른 분들의 부스 사진도 몇장 나갑니다. (사실 몇장 못찍었습니다요)






이번 모임에서 MSX 퀴즈랑 게임대회가 아~주~ 잼났습니다.

게임 진행하던 모습이 담긴 사진/영상이 좀 있는데, 약간 민망한 샷이라 업로드는 안합니다요~ 히히






그리고 키티야님의 한글화 진행중인 게임도 잠깐 보여주셨네요.

세상의 종말이 오더라도 그건 하고(?)봐야되는 ... 그런 게임이었어요.




그리고... 대망의 득템샷~

그 동안 가위바위보의 벽에 막혀서 득템의 기회가 별로 없었는데요.

이번에 게임대회(허족, 올림픽)에서 모두 2등을 하는 바람에 싹쓸이를 했습니다~~~~ㅎ.ㅎ

송년회가 곧 다가오니, 득템에 실패하신 분들은 미리 가위바위보 연습 좀 하시구요.


빛님이 제작하신 뱃지가 참 이쁘네요. 



행사 준비하신 분들, 같이 즐겨주신 분들, 모두 감사드립니다!

뭐 늘 그랬지만 ㅎ.ㅎ 아자씨들끼리 떠들고 노는게 참 재밌습니다요~


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




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


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