2020년 3월 1일 일요일

T-Wave 제작 #1 - 섞어사운드!!

2020년을 맞아, 사운드 카트리지를 한번 만들어보기로 합니다.

생각해보니, 사운드 전용기기의 제작은 이번이 처음인 듯 하네요. ㅎ.ㅎ



[서론]


실기로 듣는 사운드를 좋아하시나요?


제 경우는, 주변기기가 없던 시절에는 GT에 SC-88 연결해서 MIDI 감상이나 하는 정도였구요.

사실 이건 실기의 소리라고 하긴 좀 그렇네요. 그냥 롤랜드 사운드캔버스의 소리?ㅋ


고속의 디스크 환경(MMC/SD V1)이 되면서부터, 실기로 사운드를 많이 즐기게 되었습니다요.

그 때부터 주변기기도 하나둘 늘어나기 시작됐구요.


근데 주변기기들이 다 채워지고 나니까, 뭔가 오리지널(PSG, FM)이 아닌 소리들을 주로 듣게 되더라구요.

최근 십여년동안 주로 듣던걸 떠올려보니, MP3, OPLx 음악(VGM, IMS 등)들이군요.

아무래도 PSG, SCC, FM(OPLL) 쪽은 오랫동안 들어왔으니까 그런게 아닐까 싶기도...ㅎ.ㅎ


그리고, MMC/SD V4가 나온 후로는 PSG2SCC 기능으로 게임을 하거나, MV 동영상도 많이 본 것 같습니다.

.

.

.

그러다가 문득 생각이 들더라구요. '사운드 카트리지를 한번 만들어볼까?'



[본론]


뭔가 새로운 기기를 만들게 되면 늘~~~ 한가지 문제에 부딛히게 됩니다.

'닭이 먼저냐? 알이 먼저냐?'


S/W가 없는 H/W는 쓸모가 없죠. 맞나요?

물론 H/W가 없으면 S/W를 만드는 사람도 없겠죠. ㅎ.ㅎ;


그럼 이 문제를 어떻게 해결하느냐? H/W와 S/W를 한사람이 다 만드는거죠ㅋ

근데 사운드 쪽은 좀 문제가 있어요.

제가 소리를 듣는건 좋아하지만, 트래커로 곡을 만들거나, 아님 트래커 S/W를 만들거나... 그런적은 없었거든요.


--> 결론: 완전 새로운 기기를 만들면? 본인도 쓰지못함ㅋ



사실, 사운드 카트리지 만들 생각을 하게 된 이유는 V4의 PSG2SCC 기능때문입니다.

이걸 실제로 써보니 재밌더라구요. 아마 써보신 분은 별로 없겠...죠?

그래서 '본체의 PSG와 연동하는 전용의 카트리지를 만들자'라는 생각으로 시작이 되었습니다.

기존 S/W를 그대로 쓸 수 있으면 쉽게 활용이 가능하니까요.


그럼, 몇가지 생각들을 정리해봅니다.


1. PSG 도우미를 만들자.

   - PSG로는 불가능한 사인파, 톱니파 등의 다양한 파형을 섞어보자.

   - 파형뿐만 아니라 주파수 조절로 화음도 구현. (장3화음으로?)

   - 칩 컨트롤은 포트 I/O를 사용.


2. 부가 사운드도 넣으면?

   - SCC-I 사운드(메모리 128KB) 추가. SCMD 및 보이스패치 게임롬 활용. (V3 친구도 환영)

   - 듀얼 DCSG 추가. VGMPlay 및 SG-1000 롬 활용.



일단 MMC/SD V4 보드를 이용해서 기본기능을 만들어보니, 6채널의 PSG 도우미와 SCC-I는 구현이 가능하네요.

CPLD 용량이 모자라면 노이즈 채널을 줄여야할 가능성도 좀 있긴합니다.


그럼, 이쯤에서 카트리지의 이름을 정해야겠죠? 사실 이름 정하는게 젤 힘듭니다요~

'T-Wave'라고 지어봅니다. 세가지 사운드 - Triple Wave 정도로 생각하시면 되겠습니다.


그리고, 새로 제작되는 PSG 도우미 엔진은 WSG라고 이름을 붙였습니다.

Wave Sound Generator 일까요? ㅎ.ㅎ;



[요약]


사운드 카트리지 T-Wave를 제작합니다.

Triple Wave! 3종류의 사운드를 사용!


1. WSG:   본체의 PSG와 화음을 내는 6채널 사운드 엔진 (다양한 샘플 파형 지원)

2. SCC-I: 코나미 SCC-I 카트리지 호환 (메모리 128KB)

3. DCSG:  듀얼 SN76489AN 칩 내장



그럼, 오늘은 여기까지이구요. WSG의 구조는 다음편에서 이어지겠습니다~


2020년 2월 15일 토요일

MMC/SD V4 - GameRunner II 실행 예

V4 가지신 분은 GameRunner II 기능을 한번정도는 써보셨...겠죠?ㅋ

(정답: 아니요!?)


작년까지는 V3, V4 게임러너를 모두 하나의 이름(GameRunner)로 불렀는데,

매뉴얼을 만들다보니 따로따로 설명이 힘들어서 V4의 게임러너를 GameRunner II로 바꿨습니다.

그냥 GameRunner는 V3, V4 공용이고 GameRunner II는 V4 전용 모드로 생각하시면 됩니다.


암튼 이넘의 동작 방식을 정확히 이해 못하더라도, 실행하는 방법은 알아야 활용할 수 있겠죠?

그 동안 게시판에 글도 많이 쓰고 유투브에 영상도 몇개 올렸었는데요.

따라해보시는 분은 별로 없는 것 같더라구요.


그래서, 이번에 스터디(!) 용으로 파일(GRUN_V4.ZIP)을 하나 첨부합니다.

SD카드에 압축을 풀어 넣으시면 되겠습니다. 용량은 약 7MB입니다.

(최근 제작된 4차 V4에는 SD카드에 들어습니다. 참고하세요.)


GameRunner II의 실행 커맨드를 알 수 있도록, BAT 파일이 9개가 들어있습니다.

실행에 필요한 각종 ROM, DSK, CAS, PCM 파일도 함께 들어있습니다.

PAC-V 및 XII-V의 LED 비주얼라이저의 동작도 볼 수 있으니, 함께 꽂으시면 좋아요!

Download: GRUN_V4.ZIP


그럼, 설명 나갑니다~

따라해보시면서 옵션들을 외우세요ㅋ


1) G1J_MTRE.BAT -> MMCSD M-TREE.ROM /G1J /DM


일제 MSX1 모드로 구동하며, M-TREE.ROM 파일(요술나무)을 로딩 후 실행합니다.

같은 이름으로 된 PCM파일(M-TREE.PCM)도 로딩되어 PSG2SCC 기능에서 사용됩니다. (자동 ON됨)

/DM 옵션으로 MusicROM은 OFF됩니다. 따라서 LED 비주얼라이저가 PSG/SCC 모드로 동작합니다.



2) G1K_1000.BAT -> MMCSD HAN_1000.DSK /G1K /DM


천자문 프로그램은 국산 MSX1에서만 구동되는 참 좋은 프로그램입니다. (테스트 용으로ㅋ)

국산 MSX1 모드로 구동하며, HAN_1000.DSK 파일(천자문)을 가상 FDD로 실행합니다.



3) G2J_GRA2.BAT -> MMCSD GRADIUS2.ROM /G2J /DM /KG


일제 MSX2 모드로 구동하며, GRADIUS2.ROM 파일(그라디우스2)을 로딩 후 실행합니다.

같은 이름으로 된 DSK파일(GRADIUS2.DSK)을 가상 FDD로 실행합니다.


/KG 옵션으로 코나미 게임마스터가 함께 구동됩니다.

게임 실행 중 STOP을 눌러 게임을 멈춘 후, CTRL 키를 누르면 게임마스터 메뉴가 나타납니다.

게임데이터 로드 메뉴에서 스테이지5 세이브(샘플 데이터)를 로딩할 수 있습니다.


/DM 옵션으로 MusicROM은 OFF됩니다. 따라서 LED 비주얼라이저가 PSG/SCC 모드로 동작합니다.



4) G2J_MANB.BAT -> MMCSD S-MANBOW.ROM /G2J /DM


일제 MSX2 모드로 구동하며, S-MANBOW.ROM 파일(스페이스 맨보)을 로딩 후 실행합니다.

/DM 옵션으로 MusicROM은 OFF됩니다. 따라서 LED 비주얼라이저가 PSG/SCC 모드로 동작합니다.



5) G2J_MG2.BAT -> MMCSD M-GEAR2.ROM /G2J /DM


일제 MSX2 모드로 구동하며, M-GEAR2.ROM 파일(메탈기어2)을 로딩 후 실행합니다.

같은 이름으로 된 DSK파일(M-GEAR2.DSK)이 가상 FDD로 실행됩니다.

게임 내에서 디스크 세이브/로드 메뉴를 쓸 수 있습니다.

/DM 옵션으로 MusicROM은 OFF됩니다. 따라서 LED 비주얼라이저가 PSG/SCC 모드로 동작합니다.



6) G2J_SCMD.BAT -> MMCSD SCMD110A.DSK /G2JSM


일제 MSX2 모드로 구동하며, SCMD110A.DSK 파일(SCMD)을 가상 FDD로 실행합니다.

S 옵션으로 SCC-I RAM 128KB 카트리지가 가상슬롯에 설정됩니다.

M 옵션으로 메모리매퍼 512KB가 가상슬롯에 설정됩니다.

참고로 SCMD 프로그램은 SCC-I 카트리지(64KB 또는 128KB)와 메모리매퍼가 필수인 프로그램입니다.



7) G2J_ZANA.BAT -> MMCSD ZANACEX.ROM /G2J /DM


일제 MSX2 모드로 구동하며, ZANACEX.ROM 파일(자낙EX)을 로딩 후 실행합니다.

같은 이름으로 된 PCM파일(ZANACEX.PCM)도 로딩되어 PSG2SCC 기능에서 사용됩니다. (자동 ON됨)

/DM 옵션으로 MusicROM은 OFF됩니다. 따라서 LED 비주얼라이저가 PSG/SCC 모드로 동작합니다.



8) G2K_BUBL.BAT -> MMCSD BUBBLE.CAS /G2KZ /DM


국산 MSX2 모드로 구동하며, BUBBLE.CAS 파일(버블보블 재미나 크랙버전)을 가상 카세트로 설정합니다.

Z 옵션으로 재미나 메가램 512KB 카트리지가 가상슬롯에 설정됩니다.

가상 카세트는 부팅 후 자동으로 로딩되므로 CLOAD 명령을 쓸 필요는 없습니다.

참고로 카세트 동작음은 V4의 PCM(Covox)로 만들어내는 사운드효과입니다.



9) G3J_SNAT.BAT -> MMCSD SNATCHER.DSK /G3JS /DM


일제 MSX2+ 모드로 구동하며, SNATCHER.DSK 파일(스내처)을 가상 FDD로 실행합니다.

주의: 본체의 VDP가 V9938인 경우는 MSX2 모드로 구동됩니다.

      X-II의 VDP를 V9958로 교체했다면 MSX2+ 모드로 구동가능합니다.


S 옵션으로 SCC-I RAM 128KB 카트리지가 가상슬롯에 설정됩니다.

참고로, 코나미 스내처를 실행하려면 사운드 카트리지(SCC-I 64KB)가 필수입니다.


/DM 옵션으로 MusicROM은 OFF됩니다. 따라서 LED 비주얼라이저가 PSG/SCC 모드로 동작합니다.



여기까지입니다.

주말을 맞아 GameRunner II 공부를 해보심이 어떨지요? ㅎ.ㅎ


2020년 1월 9일 목요일

MMC/SD V4의 DCSG 출력 개조(ON/OFF)

아시다시피 V4에는 DCSG(SN76489AN) 사운드 칩이 들어있습니다.

VGMPlay, SG-1000 롬 구동 시 요긴하게 쓸 수 있지요.


근데 요놈이 약간의 문제를 갖고 있습니다.

아마 칩특성과 저의 아트웍 한계로 인한 문제점일텐데요~ ㅎ.ㅎ

DCSG 칩의 오디오 출력에서 약한 노이즈가 발생합니다.

특히 V4의 모든 사운드가 OFF된 상태에서 쉽게 들을 수 있습니다.


V4를 구동할 때 DCSG가 놀고 있는 경우가 많으니, 이 상태로 두면 노이즈가 귀에 거슬릴 수 있습니다요.

DCSG 칩이 동작하는 경우만 출력을 연결하도록 스위칭 회로를 추가해보았습니다.


V4에서는 DCSG에 공급되는 클럭(3.58MHz)를 ON/OFF 하고 있습니다.

클럭이 OFF되면 스위칭 회로를 이용해서 오디오 출력을 끊는 방법을 쓰는거에요.


물론 이렇게 개조를 하면 DCSG가 동작하지 않는 시나리오에서는 노이즈가 줄어듭니다만...

VGMPlay 등에서 DCSG를 ON 하는 경우는 스위칭 팝 노이즈가 발생합니다.

사용자의 취향에 따라 개조를 할지말지 선택하시면 되겠습니다. ㅎ.ㅎ



1. 재료를 준비합니다.

   74HC4053 칩, 10uF 전해 캐패시터, 1K옴 저항 그리고 전선이 조금 필요합니다.





2. DCSG의 오디오 출력과 OPAMP 사이의 연결을 끊어줍니다.

   패턴을 니퍼로 긁으면 쉽게 끊을 수 있어요.





3. 먼저 패턴 한 곳을 끊습니다. (초록색 부분)

   다음엔 74HC4053 칩을 보드 뒷면에 고정해야되는데요.

   아래 사진처럼 보드의 넓은 패턴을 칼등으로 긁어서 GND로 연결할 수 있습니다.

   74HC4053 칩을 얹으면, 16번 핀이 5V 위치에 대강 맞을꺼에요~ ㅎ.ㅎ

   GND와 VCC 5V를 연결하면 보드에 잘 고정될겁니다.

   나머지 핀들도 적당히(?) 연결해주세요.





4. 작업이 완료되면 아래 사진처럼 되겠습니다.

   캐패시터는 보드와 밀착되도록 위치를 잡으셔야합니다.

   캐패시터가 너무 뚱뚱하면 케이스가 안닫힐지도 모르니 확인해보세요! ㅎ.ㅎ






개조작업은 이걸로 끝입니다.

나머지는 BIOS 업뎃이 되겠네요. 요건 주말에 업로드 해놓겠습니다.


그리고, 기존 BIOS에서는 부팅하면 항상 DCSG CLOCK을 켜놓기 때문에,

H/W 개조만으로는 기존과 차이없게됩니다. 참고하세요!


궁금한 부분이 있으시면 댓글 ㄱㄱ~