2018년 10월 28일 일요일

MMC/SD Drive V4 제작 #7 - 듀얼 DCSG 활용

MMC/SD V4에는 SCC-I, DCSG, 8BIT PCM 이렇게 3종류의 사운드가 들어있습니다.


만약 MMC/SD V4를 두개 이상 꽂게 되면 어떻게 될까요?

I/O 포트를 사용하는 DCSG와 PCM은 I/O 주소가 중복이 되겠죠?

참고로, SCC-I의 경우는 메모리맵 I/O로 구동되기 때문에 서로 충돌하지 않습니다.


DCSG, PCM의 기본포트는 아래와 같습니다.

DCSG = 49H (Franky DCSG 포트)

PCM  = 91H (Covox PCM 포트)


만약 카트리지가 두개가 장착이 되면 두번째 DCSG, PCM 포트는 아래처럼 변경됩니다.

DCSG = 3FH (MMM DCSG 포트)

PCM  = 0AH (MusicModule PCM 포트)


물론 포트를 개별적으로 OFF할 수도 있구요.

사실 DCSG, PCM 모두 출력전용 포트라서, 기기가 중복되어도 큰 문제가 생기지는 않습니다.

대신 사운드가 중복되니까 볼륨이 좀 크게 나오겠네요ㅋ


현재 DCSG의 경우는 활용할 수 있는 경우가 두가지인데요.

SG-1000 loader, VGMPlay


여기서 VGMPlay는 듀얼 DCSG를 지원합니다.

하지만 MMC/SD V4를 직접 지원하는건 아니니, 활용하려면 VGMPlay 소스를 좀 고쳐야겠죠?

PAC-V의 비주얼라이저도 쓸 수 있으면 더 좋겠구요. ㅎ.ㅎ


아래는 수정된 VGMPlay로 원더보이2 VGM을 재생하는 모습입니다.

DCSG는 구형파 3채널 + 노이즈 1채널로 구성되어있구요.

DCSG 칩 하나가 PAC-V의 LED바 4개를 사용하도록 했습니다.

듀얼 DCSG가 모두 동작하면 불꽃 8개를 볼 수 있겠네요.




영상도 하나 찍어보았습니다.

DCSG뿐만 아니라 PSG, SCC 재생 시에도 PAC-V의 불꽃을 볼 수 있어요. ㅎ.ㅎ




그럼, 이만...~

궁금한 부분이 있으시면 댓글달아주세요.



2018년 10월 20일 토요일

MMC/SD Drive V4 제작 #6 - GameRunner (가상 슬롯)

GameRunner는 가상의 MSX 환경을 만들어 주는 기능입니다.

MMC/SD V3에서도 GameRunner 기능(가상의 MSX1 ROM 환경)이 있었는데요,

V4는 내부 가상슬롯(확장슬롯이 아닙니다) 기능으로 좀 더 다양한 환경을 만들 수 있게되었습니다.


기능을 나열해보면요...

- MSX1,2,2+ 가상모드 (JP/KR/EU Locale 지원)

- BASIC 환경 지원

- DiskROM 지원 (DSK 파일 실행)

- MegaRAM과 DiskROM을 동시 구동 (ROM + DSK, DeluxeBox + DSK, SCC-I + DSK)

- RAM Kanji Font 지원

- 넌매퍼 64KB 또는 메모리매퍼 512KB 선택가능 (메인 메모리 설정)



V4의 가상 슬롯은 4개로 이루어져있구요. GameRunner 모드로 전환되면 활성화됩니다.

활성화되면, 가상 슬롯 4개가 본체의 기본 슬롯 4개를 대체하는 방식으로 동작합니다.


아래는 MSX2 JP 모드로 구동 후, SLOT_CHK.ROM을 실행한 모습입니다.

참고로, MMC/SD V4 카트리지는 A1GT의 슬롯2-0에 장착된 상태입니다.

어떤식으로 구현되는지 짐작이 되시죠? ㅎ.ㅎ





아래는 여러가지 조합으로 구동되는 GameRunner 영상입니다.

ROM/DSK 로딩없는 BASIC 부팅 및 각종 ROM, DSK, DeluxeBox, SCC-I 조합환경을 보여줍니다.





다음편에서는 PAC-V 비주얼라이저 연동과 듀얼 DCSG 동작 모습이 나올 예정입니다~ ㅎ.ㅎ

궁금한 부분이 있으시면 댓글달아주세요.



.

.

.


PS. 최종 테스트 용 V4 PCB가 나왔습니다. (아쉽게도 잘 동작하네요.ㅋ)

    곧 제작 신청을 받을 예정입니다. 올 크리스마스까지 달려보아요~ ㅎ.ㅎ/





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 구동 모습은 이미 유튜브에 두어개 올라가있을겁니다. 궁금하시면 찾아보시구요~



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


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