2021년 7월 18일 일요일

MoonBase 제작 #4 - 동작 모드

먼저 기존 MSX-Audio 기기들의 차이를 설명해드리는게 좋겠죠?


파나소닉 FS-CA1, 필립스 NMS 1205 (뮤직모듈), 도시바 HX-MU900 세종류의 카트리지가 있습니다.

모두 Y8950 칩과 32KB의 샘플램(ADPCM 용 SRAM) 내장이구요, 뮤직 키보드 용 커넥터가 있습니다.

기본 기능은 똑같다고 보시면 되겠네요.


* 파나소닉 FS-CA1 

Y8950 (OPL + ADPCM 32KB)

Audio BIOS: O

I/O Port 변경: O

MIDI: X

PCM u8: X


* 필립스 NMS 1205

Y8950 (OPL + ADPCM 32KB)

Audio BIOS: X

I/O Port 변경: X

MIDI: O

PCM u8: O


* 도시바 HX-MU900

Y8950 (OPL + ADPCM 32KB)

Audio BIOS: X

I/O Port 변경: X

MIDI: X

PCM u8: X


S/W 호환성(BIOS)을 고려하면 파나소닉이 최선의 선택지입니다만,

BIOS 보드 개조를 기본으로 가정하면, H/W 기능이 더 많은 필립스 NMS 1205가 좋습니다.

ADPCM 샘플램을 32KB -> 256KB로 증설하는게 기본 소양(?)이라서,

BIOS 보드(Audio BIOS 1.3 개조버전)도 함께 추가 해주는게 좋습니다요.

필립스/도시바 카트리지 용으로 개조 보드가 제작/판매된 적도 있었죠.


MoonBase의 기능은 아래처럼 정리가 되겠네요.

Ext.OPL + ADPCM 256KB: O

Audio BIOS: O

I/O Port 변경: O

MIDI: X

PCM u8: O

PCM s16: O


저는 필립스 NMS 1205의 샘플램이 256KB으로 개조되어있구요.

문사운드는 샘플램 1024KB 증설해서 사용하고 있습니다.


근데, 필립스 뮤직모듈의 출력이 좀 작은편에 노이즈가 좀 있어서,

항상 꽂아놓고 쓰기가 좀 애매하더라구요. (믹서 출력을 많이 높이다 보니..ㄷㄷ)

최근 5년정도는 거의 문사운드 하나만 꽂고 쓴 듯 합니다.

그러다보니, MSX-Audio 용 프로그램을 쓰려고 뮤직모듈을 꺼내기도 귀찮고 좀 그랬죠.


MoonBase를 제작하게 된 이유가,

문사운드(OPL4) 호환 기기는 흔하게 쓰이고 있으니,

"슬롯 낭비 없이 카트리지 두개를 합체해서 MSX-Audio 기기로 동작하도록 해보자"였습니다요~ ㅎ.ㅎ


그리고 듀얼 MSX-Audio를 쓰려면, 파나소닉의 FS-CA1 두개가 필요한데요.

MoonBase도 포트 변경이 가능하니, 필립스/도시바 기기와 조합으로도 쓸 수 있습니다.

포트 변경이 안되는 필립스/도시바 카트리지는 기존 포트 C0H/C1H 사용,

MoonBase는 C2H/C3H 포트를 사용하는거죠.


보통 C0H/C1H 포트가 기본(마스터)으로 쓰이기 때문에,

NMS 1205 + MoonBase + MoonSound 조합으로 구동하면 NMS 1205의 OPL + ADPCM이 기본포트가 됩니다.

.

.

.

듀얼 Audio를 쓰는 프로그램이 거의 없다는게 함정이지만요ㅋㅋ


그 외, 필립스 카트리지와 호환되는 Mono PCM u8 (unsigned 8bit)이 들어있구요.

Mono PCM s16 (signed 16bit)도 들어있습니다.

MMCSD.COM의 WAV 플레이어를 구동하면,

Mono/Stereo u8 WAV는 T-Wave로

Mono u16 WAV는 MoonBase로 출력가능합니다.




이제 본론으로 넘어가서...

MoonBase의 동작모드에 대해 알아보겠습니다요~


아래처럼 보드 왼쪽에는 3단 슬라이드 스위치가 있는데요.

부팅 할 때 스위치 위치에 따라 동작 모드가 결정됩니다.

일단 부팅 후에는 슬라이드를 움직여도 모드가 바뀌지는 않아요.

BIOS가 동작하는 도중에 바꾸면 죽으니까, 일부러 막아놨습니다ㅋ





각 모드의 설명 나갑니다~


* (상) BIOS FS-CA1 OPL with ADPCM


MoonBase + MoonSound(OPL4 호환) 카트리지 하나만 사용하는 경우 유용합니다.

파나소닉의 오리지널 BIOS와 ADPCM용 샘플 데이터 64KB롬이 동작합니다.

BASIC의 COPY PCM 등의 모든 명령어가 다 동작합니다.

단, MoonBase는 ADPCM 레코딩(encoder) 기능이 없다는걸 기억하시구요! ㅎ.ㅎ


FS-CA1와 같은 방식으로 포트 스위칭이 가능합니다.

만약 파나소닉 카트리지가 있다면, 함께 꽂아서 마스터/슬레이브로 사용가능합니다.

(참고: 빠른 슬롯에 꽂은 카트리지가 마스터가 됩니다.)



* (중) BIOS 1.3 OPL with ADPCM


개조 BIOS인 Audio BIOS 1.3 (HX-MU900 모드)을 사용합니다.

MoonBase + MoonSound(OPL4 호환) 단독으로 사용 시, C0H/C1H으로 구동됩니다.

필립스/도시바 카트리지에 BIOS 개조킷(+ ADPCM 256KB)을 장착한 것과 동일한 상태가 됩니다.

개조 BIOS는 ADPCM 샘플롬을 지원하지 않기 때문에 COPY PCM 등의 명령은 사용불가능합니다.

그 외 기능은 FS-CA1과 동일합니다.

개조 BIOS 문서 상에는 OPL 중복 처리 등의 코드가 제거(개선)되어 있다고 하네요.


만약 필립스/도시바 카트리지를 추가 장착하는 경우는

MoonBase의 포트가 C2H/C3H로 변경되어 슬레이브로 동작합니다.

저처럼, MoonBase + MoonSound를 기본 세팅으로 쓰다가,

뮤직모듈 추가해서 듀얼 ADPCM을 쓰는 시나리오에서 가장 유용하게 쓸 수 있겠습니다.


아래 사진은 GT의 슬롯1에 MoonBase + MoonSound를 꽂고

후면 확장슬롯에 필립스 뮤직모듈을 꽂은 상태입니다.





* (하) BIOS 1.3 OPL3 with OPLL Drum


개조 BIOS인 Audio BIOS 1.3 (OPL3 모드)을 사용합니다.

이 때는 MoonBase의 포트 포워딩(C0H/C2H -> C4H/C5H)이 비활성됩니다.

BIOS에서 직접 OPL3(OPL4)를 컨트롤하기 때문에 필요가 없죠.


근데 OPL3 모드에서는 ADPCM 관련 루틴이 제거되어있습니다. OPL3/OPL4 칩은 ADPCM이 없으니까요.

대신 MoonBase의 OPLL Drum 기능을 사용할 수 있습니다.

MSX-Music의 OPLL 리듬모드 I/O를 5채널의 PCM으로 변환해서 구동하는 모드입니다.

부드러운 FM 멜로디에 강력한(!) 드럼 소리가 추가됩니다.

YM2608의 FM + PCM 드럼 사운드와 유사한 방식입니다~ ㅎ.ㅎ



* OPLL Drum without BIOS


이 모드는 슬라이드 스위치 설정과 상관없이, 부팅 시 M 키를 누르면 선택됩니다.

Audio BIOS가 인스톨 되어있을 때 S/W 호환성 문제가 생기거나,

MSX-Audio를 지원하는 S/W에서 강제로 MSX-Music을 쓰고 싶을 때 쓰시면 됩니다.


예를 들어 제비우스처럼 MSX-Music과 MSX-Audio를 둘 다 지원하는 게임에서,

이 모드를 선택하면 MSX-Audio 사운드 대신 MSX-Music + PCM 드럼 사운드를 들을 수 있게됩니다.




[요약]


(상) BIOS FS-CA1 OPL with ADPCM

-> MoonBase + MoonSound 단독 또는 MoonBase 2개으로 사용 시.


(중) BIOS 1.3 OPL with ADPCM

-> MoonBase + MoonSound 사용 중, 필립스/도시바 카트리지를 추가 사용으로 듀얼 ADPCM 구동.


(하) BIOS 1.3 OPL3 with OPLL Drum

-> OPL3(OPL4) 모드를 주로 사용하고, Audio BIOS (ADPCM 제외) 및 OPLL 드럼 사운드 활용 시.


OPLL Drum without BIOS

-> Audio BIOS 호환 문제 회피 또는 MSX-Audio 대신 MSX-Music + OPLL 드럼으로 고정 사용 시.




MoonBase의 기본 정보는 요렇게 마무리합니다.

그럼, 즐거운 일요일 되세요! ㅎ.ㅎ


2021년 7월 15일 목요일

MoonBase 제작 #3 - OPLL 용 PCM Drum




음... 기억하시는 분이 있으려나요?

21년전ㅋ paraMSX 0.13 버전에서 FM 사운드가 처음으로 들어갔는데요.

그시절엔 OPLL 사운드를 합성하는 방법을 몰라서, 적당한 PCM으로 걍 때려넣었습니다.

FM 사운드가 이상하다는 피드백이 난무했었지요...ㅎ.ㅎ


갑자기 이 얘기를 왜 했냐면요~

그 때 넣었던 FM Drum을 이번에 또 만들었거든요ㅋ


MSX-AUDIO, OPL4 모두 훌륭한 사운드를 만들어내지만,

대부분 게임에서는 MSX-MUSIC (OPLL)을 활용합니다.

이런 경우는 MoonBase랑 MoonSound를 합체해봐야 전기만 먹을뿐이겠죠? ㅎ.ㅎ


그.래.서.

MoonBase의 동작 모드를 하나 더 추가했습니다.

OPLL에 어울리는 드럼 사운드를 만들어내는거죠. PCM으로요!


근데 FM 사운드에 PCM 드럼을 섞는게, 이미 오래전부터 익숙하실겁니다요.

YM2608, YM2610 같은 칩의 음악을 많이 들어보셨을꺼에요.

MoonBase는 내장된 PCM음원으로 드럼 소리를 만드는거니까,

구조적으로는 YM2608쪽에 더 가깝겠네요.


MoonBase의 드럼 샘플은 44.1KHz 8BIT MONO PCM으로 들어갑니다.

본체의 OPLL 사운드와 드럼 사운드가 적당히 밸런스가 맞아야 듣기 좋으니까,

드럼 출력레벨을 8단계로 조절할 수 있도록 해놨습니다.

제 GT 기준으로 레벨4가 적당한 출력이 되도록 레벨 테이블을 만들었습니다.

쓰시는 FM내장 기종 또는 외장 FMPAC에 맞도록 조절하시면 되겠네요.


MoonBase의 왼쪽에는 3단 스위치가 있습니다.

이걸로 BIOS 또는 ADPCM / PCM 드럼 선택이 가능합니다.

자세한건 다음번에서 소개해드리겠구요.

이번엔 PCM 드럼 소리만 영상으로 감상하시죠.


영상에서는 OPLL 사운드를 쓰는 오리지널 Fire Hawk 버전과

Audio BIOS 1.3을 지원하도록 패치된 Fire Hawk 버전을 함께 사용했습니다.

영상 데모는 아래순으로 진행됩니다.

1. OPLL 사운드

2. Audio BIOS 1.3 OPL3 사운드

3. OPLL + PCM Drum 사운드

4. 외부 믹서 조절






그럼, 다음편에서 뵈어요~ ㅎ.ㅎ


2021년 7월 10일 토요일

MoonBase 제작 #2 - MoonSound와 합체

테스트 용 PCB가 나왔네요~ ㅎ.ㅎ




S/W 입장에서 본 MoonBase 카트리지는 기본적으로 MSX-AUDIO 호환입니다.

Y8950 칩 대신,

- 외부 OPL4 카트리지에서 Sec.FM 파트를 가져오고

- MoonBase에서 ADPCM-B 파트를 구현해서

합체합니다.


MSX-AUDIO의 I/O 포트는 C0H 및 C1H 주소를 사용하는데요.

MoonBase도 동일한 주소를 제공합니다.

만약 컨트롤 레지스터 번호가 20H ~ FFH 영역(FM 파트)이 되면,

외부 슬롯 커넥터쪽의 C6H, C7H 포트로 컨트롤이 전달됩니다.

결국 외부 OPL4 카트리지의 Sec.FM 파트가 동작하게 되는거겠지요.


실제 사용 시, 아래처럼 MoonBase 위에 OPL4 카트리지를 장착합니다.

OPL4의 오디오 출력을 MoonBase로 입력하면 ADPCM과 믹스되어 최종출력됩니다.

오디오 밸런스는 문사운드 카트리지를 기준으로 되어있구요.





MSX-AUDIO 파트는 더 이상 설명이 필요없겠네요.

그냥 영상으로 보시죠~ ㅎ.ㅎ


세가지 뮤직/데모 디스크를 구동하는 모습입니다.

먼저 MSX-AUDIO 전용인 Muzax3, Impact4의 영상이 나오고,

마지막으로 MSX-AUDIO과 MSX-MUSIC을 함께 쓰는 Unknown Reality의 영상이 나옵니다.





그럼, 다음편에서 뵈어요~ ㅎ.ㅎ