2019년 3월 30일 토요일

MMC/SD Drive V4 제작 #11 - PSG to SCC 구현




아시다시피 V4에는 SCC 사운드가 들어있습니다.


게임을 구동할 때 PSG만 지원하는 경우는 V4의 SCC 사운드가 쉬고 있을텐데요.

이걸 강제로 구동해보려고 합니다.

그러니까 원래 PSG 사운드는 그대로 출력이 되고, SCC가 추가되는 셈이에요.


PSG의 사운드 출력을 가로채려면 아래 두가지 방법이 있습니다.

1. 기존 게임의 PSG write 코드를 패치

2. 주기적으로 PSG 레지스터를 읽어서 처리


참고로 V3의 게임러너는 PAC-V의 비주얼라이저 처리를 위해, 위의 1번 방법을 사용했습니다. 

V4에서는 게임러너 BIOS에서 PSG 레지스터를 읽어서 PAC-V로 전달하는 방법으로 바꿨습니다.

그러니까 위의 2번 방법을 쓰고 있는거죠.


두둥~ 선택은? 2번으로 갑니다.

이유는? 이미 PAC-V 때문에 같은 방식으로 쓰고 있으니까요 ㅎ.ㅎㅋ



그럼 SCC 소리를 PSG랑 섞었을 때 적당한 파형이 있을까요?

PSG는 구형파로 고정되어 있으니, 간단하게 사인파 또는 톱니파 등으로 섞어봅니다.


아래는 사운드 에디터로 만든 파형입니다.

두개는 기존 코나미 게임에서 쓰이는 샘플을 편집했구요.

나머지는 대충 만들었습니다ㅋ





게임 동작 중 단축키를 눌러서 SCC wave 메모리를 변경할 수 있습니다.


  단축키 = CTRL + SHIFT + 숫자키

  1 키 = PSG only

  2 키 = PSG + SCC (Sine wave)

  3 키 = PSG + SCC (Half sine + half sawtooth)

  4 키 = PSG + SCC (Double sine + sawtooth)

  5 키 = PSG + SCC (Double sawtooth)

  6 키 = PSG + SCC (사용자 wave 파일)


기본 파형 4개 외, 사용자가 임의로 추가할 수 있는 영역도 넣었어요.

롬파일과 같은 이름의 *.PCM파일이 발견되면, 자동으로 로딩되도록 합니다.


*.PCM 파일은 SCC 채널 3개에서 쓰일 샘플 데이터로 구성됩니다.

한 채널의 샘플은 32바이트의 signed 8BIT PCM이구요.

3채널을 모으면 총 96바이트의 PCM 파일이 되겠네요.


아래는 요술나무에서 쓰려고 편집한 PCM 파일입니다.

에디터에서 읽으면 요렇게 볼 수가 있죠~





MMCSD.COM으로 로딩하면 아래처럼 롬파일과 PCM파일이 한꺼번에 로딩됩니다.

PCM파일이 로딩되는 경우는 PSG2SCC 기능이 자동으로 ON 되니까 편하게 쓸 수 있어요.



샘플 파일 몇개 넣은 ZIP파일입니다.

심심하시면 구경하셔요~

Download: V4_PSG2SCC_Sample.zip



그럼 설명은 여기서 끝내고, 어떻게 동작하는지 영상으로 한번 보시죠.

영상 초반에는 롬파일만 로딩해서 내장된 샘플을 사용하고,

영상 후반에는 PCM파일을 자동으로 로딩해서 구동되는걸 볼 수 있어요.






그럼, 편안한 밤 되셔요~


2019년 3월 23일 토요일

XII-V 제작 #2 - LED 보드 테스트

X-II 전면에 장착될 LED PCB가 나왔습니다~ ㅎ.ㅎ/





본체에 장착되면 어떤 모습일까요? 납땜을 해보아요~


LED Bar가 보이는 보드 앞쪽입니다.





요건 보드 뒷쪽입니다.





아래는 본체 앞면에 LED 보드를 장착한 모습입니다.

원래 FDD B드라이브가 장착되는 곳이지만 구멍을 뻥~ 뚫어버렸어요~





아래는 본체 안쪽에서 바라본 모습입니다.

나사가 채결된 곳이 보이나요? XII-V 메인보드 용 커넥터 바로 아래에 있어요.





이제 아크릴 창문을 붙여봅니다.

다크/레드/블루 세가지 버전이 준비되어있습니다. (맛탱이님 감사요~ ㅎ.ㅎ)


다크 - 원래 X-II 부품처럼 딱 맞네요~




레드 - 전원 버튼 테두리랑 잘 어울립니다요.




블루 - 요것도 나름의 색감을 보여주네요!





XII-V 메인보드가 제작되면 동작하는 모습을 볼 수 있겠죠? ㅎ.ㅎ


그럼, 여기서 이만...


.

.

.

.

.

.


끝내면 좀 아쉬우니까ㅋ 조금 더 삽질을 해봅니다!!

기존 PAC-V의 메인보드의 출력을 XII-V LED보드랑 연결하는건데요.


요렇게 임시 연결보드를 만들고, 케이블로 한땀한땀 연결해줍니다.

테스트 한번 하려고 힘든 바느질을...ㅎ.ㅎ;





LED 보드 안쪽에 결합된 모습입니다.





PAC-V 메인보드는 본체 후면슬롯에 꽂았습니다.

케이블로 본체 앞면으로 길게 연결을 했네요.






그럼, 동작 샷을 한번 보시죠~

창문은 다크 -> 레드 -> 블루 순으로 나옵니다.







마지막으로 동작영상도 감상하시죠! ㅎ.ㅎ

창문은 다크 버전입니다~




그럼, 다음편에서 만나요~


2019년 3월 18일 월요일

XII-V 제작 #1 - X-II 전용 LED 비주얼라이저?

X-II 본체에 장착가능한 LED 비주얼라이저를 만들어봅니다.


[서론]


음... 비주얼라이저는 PAC-V라는게 있었죠? 아마..ㅋ

제가 주로 쓰는 기종은 GT라서 FM 사운드가 내장되어 있습니다.

이 상태에서 가장 유용한 비주얼라이저는 PAC-V가 맞습니다요.

PAC의 SRAM 기능과 LED 불꽃쇼를 동시에 볼수가 있어요.


PAC-V가 최애템이라 GT의 슬롯1에는 항상 PAC-V가 차지합니다.

사실 최근 십여년동안 MSX 쓰는 시간 대부분은 음악듣기입니다.

MP3, IMS, VGM 등을 플레이하면서 LED 비주얼라이저를 보는게 참 즐겁죠~ ㅎ.ㅎ


최근 X-II 두대를 구하게 되면서 이리저리 본체를 굴려보는 중인데요.

맛탱이님과 대화를 하다보니, "본체의 FDD 장착부에 LED를 붙여보자"로 결론이 났습니다ㅋ

창문도 뚫어서 보내주셨네요. 으흐흐흐...

아래 사진은 빨간색 아크릴을 붙인 모습입니다.





[본론]


X-II는 FM사운드가 없다보니 FMPAC을 필수로 꽂아야하는데,

FMPAC과 PAC-V를 둘다 쓰면 SRAM기능이 겹치니 애매해집니다.

활용방법은 몇가지가 있네요.

1. I/O 전용 슬롯을 만들어서 PAC-V를 FM 전용 비주얼라이저로 사용

2. 기존 PAC-V에서 LED 보드만 분리 후 X-II 본체에 장착 (PAC-V 메인보드와 케이블로 연결)

3. X-II 전용의 비주얼라이저 제작


결론은 3번으로 가게 되었구요.

기존 PAC-V의 PAC 기능(SRAM 카트리지)은 없습니다.

대신 I/O 포트만으로 동작하도록 설계될 예정이구요. (슬롯 메모리를 점유하지 않음)

LED 패턴데이터는 SRAM대신 플래쉬롬에 다운로드하도록 변경됩니다.


그.리.고.

이름은 대충~~ "XII-V"로 정했습니다.

기존 PAC-V와 이름이 비슷하게 했습니다요.ㅋ


방향을 정했으니 살짝 달려봐야겠죠? ㅎ.ㅎ

X-II 앞면에 장착될 보드의 사이즈 및 볼트 위치 등을 확인 후, 이리저리 짱구를 굴려본 결과...

아래처럼 보드 두장을 만들어 붙이면 될 것 같더라구요.





앞쪽 LED 보드와 메인보드는 L자 형태로 결합되고,

메인보드는 본체 내부의 슬롯1 커넥터(IDC)에 병렬로 연결됩니다.

참고로 XII-V는 I/O 기기로 동작하니까, 슬롯1의 카트리지와 충돌하지않습니다.


캐드로 앞쪽 LED 보드를 그려보아요~

LED bar의 위치를 대충 잡고, 나머지 부품이 들어갈 자리를 궁리해봅니다.





진짜 절묘하게 LED위치와 칩들의 위치가 나오네요. ㅎ.ㅎ

보드 사이즈가 딱 맞게 나왔습니다. 으흐흐...

전체 패턴을 마저 그려봅니다.





본체의 구조물(철판, 볼트)에 간섭받지 않도록 배치하느라 진땀을... ㅋ

이대로 PCB를 찍어서 동작 확인을 하면 되겠네요.

기존 PAC-V의 메인보드에 LED보드를 연결해서 불꽃쇼만 한번 해볼 예정입니다.


그럼, 다음편에서 만나요~


2019년 3월 10일 일요일

대우 CPC-400 (X-II) FDD VDP 건전지 교체

V4 납땜하느라 방치했던 X-II 2호기 작업들어갑니다~ ㅎ.ㅎ

아래순으로 진행했어요

- 파워 교체

- Z80 소켓 처리

- FDD 교체

- VDP 소켓 처리

- V9958 업그레이드

- RTC 배터리 교체



불량불량한 순정 파워를 교체해봅니다.

지난번 X-II 1호기와 동일한 파워가 쓰였습니다.





"급사(GS) Z80"를 뽑고 소켓 처리를 해줍니다. 죽으면 칩을 바로 갈면되겠죠? ㅎ.ㅎ

핀 피치가 넓으니 쉽게 납을 뽑아낼 수 있네요~

다행스럽게도 순정 Z80은 여전히 잘 돌아가고 있습니다.





순정 FDD는 불량 판정을 받고 관짝처리했구요.

삼성 FDD를 대신 달아줍니다.

옥션에서 구매한 중고 SFD-321B (REV.TA)입니다.





FDD의 Drive Select 12번핀에 MSX 10번핀 출력을 연결하고,

DC 신호를 RDY 신호로 변경하면 됩니다.





잘 돌아가네요~ ㅎ.ㅎ





VDP를 바꿔서 쓸 수 있도록 소켓 처리를 해줍니다.

기존 V9938을 뽑고 사진을 한장 찍어보아요~

실수한 곳이 있는지 꼼꼼하게 확인해야되겠습니다.






어딘가 실수한 부분이 있는지 전원을 켜도 화면이 안나오네요. ㅎ.ㅎ;

멀티미터로 대충 찍어보니, 쇼트난 곳도 없고 주변부와 연결도 괜찮은데...으흠

VDP가 열받아서 죽은걸까요?ㅋ


디버깅 용 PAC-V를 한번 꽂아봅니다. 코드가 어디쯤 돌고 있는지 궁금하네요.





주소를 보니 메인BIOS 루틴은 아니고 SUBROM 쪽이네요.

blueMSX에서 코드를 보니 VDP 액세스 루틴이네요.





VDP status 레지스터 2번을 읽어서 프레임 시작을 확인하는 루틴인데,

여기서 무한루프를 도는 듯합니다.


단순한 레지스터 Read니까...범인은? 아래 핀 중에서 있겠죠? ㅋ

/CSR, /CSW, CPU DATA


멀티미터로 찍어보니 /CSR, /CSW는 VDP 아래쪽의 74HCT32 칩으로 정상연결된 듯 합니다.

CPU DATA는 어딘가 끊어졌다면, 같이 연결된(좀 멀리있는) 칩들과 확인해보면 좋겠죠?


BIOS 롬 두개의 DATA 라인이 VDP DATA 라인과 직결되어있습니다.

여기를 확인해보니 D6 라인이 끊어져있네요.

보드 윗면의 소켓에 가려진 패턴인데 VDP뽑을 때 끊어졌나봅니다. 요건 따로 연결하는걸로~ㅎ





화면이 잘 나오는군요! ㅎ.ㅎ





소켓 작업이 잘 되었으니, 이제 V9958로 교체해봅니다.

핀 4개만 다르게 연결하면 되는데요, 그냥 칩에다 선을 바로 납땜했어요.

별 문제없이 동작하네요~ ㅎ.ㅎ






이제 남은건 RTC 배터리네요.

기존의 알카라인 건전지 소켓을 그냥 뽑아서 버립니다~

용량 큰 리튬전지 CR2450을 달아주었어요.

전원 OFF/ON 후 시간이 유지되면? OK!






이걸로 기본 작업은 완료네요.

잘 돌아가는지 영상으로 한번 보시죠~

스크린12 및 V9958 가로스크롤을 확인할 수 있는 영상으로 담아보았어요.






그럼 다음 숙제를 위한 Teaser 나갑니다. ㅎ.ㅎ/~




2019년 3월 3일 일요일

드디어 V4 2차 제작이 마무리되어갑니다~ ㅎ.ㅎ

보드는 제작 및 테스트 완료된 상태이구요.

월요일에 케이스 조립 및 배송을 위해 택배로 전해드릴 예정입니다.





ㅃㅃ2/