2024년 1월 18일 목요일

2024년 1월 14일 일요일

[강좌] 09. 같은 종류의 사운드 카드를 여러개 사용

확장슬롯에 사운드 카드를 주렁주렁 달아서 쓰는 분들이 꽤 있으실텐데요 ㅎ.ㅎ

이 때 기억해야 할 내용들을 조금 정리해보았습니다.


주변기기의 I/O는 메모리맵 I/O (Memory Mapped I/O) 또는 포트 I/O (Port Mapped I/O)를 사용합니다.

물론 둘을 함께 쓰는 경우도 있구요.



사운드를 I/O 종류로 나누어 보면 이렇습니다.


1. 메모리맵 I/O 전용


SCC/SCC-I

OPM (YM2151)

OPNB (YM2610)

MP3/WMA (MPX)


하나의 슬롯에 두개의 기기를 꽂을 수는 없으니, 기기간의 메모리 영역이 충돌하지 않습니다.

예를 들어 SCC-I 카트리지 4개를 확장슬롯에 몽땅 꽂아놓아도 각각 동작합니다.

이 기기들은 아무 생각없이 꽂아주시면 됩니다 ㅎ.ㅎ



2. 포트 I/O 전용


PSG (AY-3-8910, YM2149)

Secondary PSG

MSX-AUDIO (Y8950)

MSX-MUSIC (YM2413)

MIDI Saurus

MSX-MIDI (A1GT, µ-pack)

u8 PCM (turboR, Covox, MusicModule)

s16 PCM (MoonBase)

DCSG (SN76489AN)

WSG (T-Wave)

OPL4 (YMF278B)

OPNA (YM2608)


포트 주소가 충돌하면 기기에 문제가 생길 수 있으니, 기본적으로 한개만 쓰셔야합니다.

근데 여러개를 지원하는 기기들이 있으니 이건 따로 숙지해주세요!

이 기기들은 부팅 시, BIOS INIT 루틴에서 시스템에 존재하는 I/O포트를 검사 후 포트 주소를 바꿉니다.


2.1 MSX-AUDIO 카트리지를 2개 사용


파나소닉의 오리지널 MSX-AUDIO (FS-CA1) 카트리지에 한합니다.

첫번째 Y8950은 C0H,C1H 포트로 설정되고,

두번째 Y8950은 C2H,C3H 포트로 설정됩니다.


주의)

필립스, 도시바의 저가형 Y8950 카트리지는 포트 ON/OFF가 불가능하며 C0H, C1H 포트로 고정됩니다.

중복으로 사용하시면 안됩니다. '필립스랑 도시바랑 함께 쓰면 되나요?' 등의 질문은 하지마시구요ㅋ

물론 파나소닉의 MSX-AUDIO와 함께 쓰는 것은 가능합니다.

MoonBase + OPL4를 연결해서 MSX-AUDIO 모드를 쓰는 것도 가능하구요.

참고로, MoonBase도 FS-CA1와 동일한 방식으로 포트를 선택합니다.


2.3 MMC/SD Drive V4를 2개 사용


첫번째 V4의 DCSG는 49H, PCM은 91H 포트로 설정되고,

두번째 V4의 DCSG는 3FH, PCM은 0AH 포트로 설정됩니다.



3. 메모리맵 I/O와 포트 I/O 모두 사용


FMPAC만 이 구조를 사용하는 것으로 알고있는데요. 혹시 더 있는지 모르겠네요 ㅎ.ㅎ


FMPAC은 PAC(SRAM 카트리지)에 FM 사운드(OPLL)가 추가된 기기인데요.

이 카트리지는 기본적으로 메모리맵 I/O로 OPLL 칩이 동작합니다.

만약 포트 I/O로 사용하고 싶다면, 스위치(메모리맵 I/O의 7FF6H에 있습니다)를 따로 켜야합니다.

본체 내장된 MSX-MUSIC은 메모리맵 I/O 없이, 항상 포트 I/O 모드로 동작합니다.

당연히 S/W를 만드는 입장에서는 FMPAC을 포트 I/O 모드로 쓰는게 편하겠죠?


그럼 여기서 의문이 하나 떠오를겁니다...

본체에 FMPAC을 여러개 꽂거나, MSX-MUSIC이 내장된 본체에 FMPAC을 추가하면 어떻게 될까요?


3.1 FMPAC을 여러개 꽂는 경우


각 슬롯의 메모리맵 I/O를 통해 각 OPLL을 따로 구동가능합니다.

일부 데모 프로그램에서 이렇게 사용하는 것으로 알려져있어요.

그 외 일반 프로그램에서는,

우선순위가 높은 슬롯의 FMPAC 한개에서만 사운드가 출력되고, 두번째 FMPAC은 PAC처럼 동작하게 됩니다.


3.2 MSX-MUSIC이 내장된 본체에 FMPAC을 꽂는 경우


FM 사운드는 본체의 OPLL에서 소리가 출력되며, FMPAC은 PAC처럼 동작하게 됩니다.


만약 본체의 MSX-MUSIC 슬롯보다 FMPAC 슬롯의 우선순위가 높다면, FMPAC의 포트 I/O 모드가 켜질 수 있습니다.

그러면 FMPAC의 OPLL과 본체의 OPLL이 동시에 동작하는 현상이 발생합니다.

두 칩에서 소리가 중복으로 출력되면, PSG와 FM밸런스가 무너지니까 이렇게 쓰시면 안됩니다요.

그리고 두 칩의 출력이 완벽하게 같지않을테니, FM 소리도 좀 이상할거에요.


참고로, 산요 MSX2+ 기종을 보면 SLOT 3쪽에 내장 MSX-MUSIC이 배치되어있는데, 그닥 좋은 설계는 아니라고 봅니다.


주의)

본체 내장형 MSX-MUSIC을 카트리지로 만든 기기를 쓰시는 분들이 많은데요. 알고계시면 좋습니다.

오래전 유럽에서 만들어진 FM-PAK이라는게 있습니다. 국산으로는 재미나 뮤직박스도 있었구요.

MSX-MUSIC이 없는 본체에 꽂아서, MSX-MUSIC 내장형 본체처럼 만들어주는 기기인데요.

2000년 이후 지금까지도 클론 카트리지가 꽤 제작이 된 걸로 알고 있습니다.

이 카트리지는 본체에 한개만 꽂으셔야 합니다!


그리고, FM-PAK과 FMPAC을 함께 쓰는 경우는 FMPAC을 우선순위가 낮은 슬롯에 꽂으면 됩니다.

뭐, 애초에 FM-PAK을 꽂지 않으면 문제가 생길 여지도 없겠지만요 ㅎ.ㅎ

만약 본체를 개조해서 FM-PAK (또는 클론)을 내장하는 경우는, 가능한 우선순위가 높은 슬롯에 장착해야합니다.

그냥 SLOT 0-X에 넣는다고 생각하심 되겠습니다요~



쓰다보니 FMPAC 얘기가 길어졌는데, 하나만 더 추가해봅니다 ㅎ.ㅎ

앞의 3.1, 3.2에서 OPLL 칩이 중복으로 장착되더라도 소리는 하나만 출력되니 괜찮다고 설명드렸는데요.

이건 정상적(ㅋ)으로 만든 S/W를 사용하는 경우이고, 늘 그렇지만 예외가 있습니다.


마이크로캐빈에서 만든 게임에서는 OPLL 칩들이 동시에 출력되는 문제가 존재합니다.

XAK, XAK2, 프린세스메이커, 프레이, 환영도시 정도만 테스트해봤는데 모두 같은 문제가 있네요.

(심지어 터보알 전용 게임도 이렇게 해놨...ㅋ)

일단 '마이크로캐빈' 이름을 기억해주세요!


타사의 게임들은 별 문제없었습니다. 테스트해본 것들은 적어보면,

알레스트, 알레스트2, 레이독2, 삼국지2, 신장의야망(전국군웅전),

피드백, 팩매니아, 퀸플, 테트리스, 파이어호크, 싸이코월드, 파이널판타지

이 정도가 되겠습니다.


조금 특이한 게임은 '드래곤슬레이어6'였는데요.

요놈은 아시다시피 SRAM 세이브를 지원하지만, PAC은 인식불가이고 FMPAC만 가능한데요.

아마 FMPAC 체크 루틴과 FM 사운드(OPLL) 초기화 루틴을 섞다가 꼬인건지...

암튼 이 게임에서도 두개의 OPLL에서 동시에 소리가 출력됩니다. 참고하세요.


그럼, 즐거운 일요일 되셔요~ ㅎ.ㅎ


2024년 1월 1일 월요일

MRC의 멍청이

이젠 이름을 '멍청이'라고 해놨군요.

MRC wiki가 쓰레기통이 되는 건 그닥 상관없지만, 트롤 놀이터가 된 MRC는 좀 불쌍...ㅋ



사실 어디든 쓰레기를 버리는 사람은 있습니다. 그걸 어떻게 처리하느냐가 문제죠 ㅎ.ㅎ