Skip to content

SSG Extend ko

ToughkidDEV edited this page Oct 15, 2026 · 1 revision

SCC/SCC+ SSG 확장과 PCMInvert

네 실행파일을 같은 버전의 세트로 설치하세요. 기존 세션은 교체 전에 해제합니다.

어떤 소리가 바뀌나요?

#SSGExtend On은 mucomDotNET의 가상 SSG 파형을 SCC 또는 SCC+로 근사 연주하는 옵션입니다. MAKOTO의 YM2608 자체에 임의 파형 기능을 추가하는 것은 아닙니다. 접두어 없는 D/E/F의 톤을 SCC/SCC+ 1–3번으로 보내고, 노이즈는 MAKOTO에 남깁니다. MSXD/E/F는 기존 내부 PSG 파트로 유지됩니다. FM·리듬·ADPCM도 기존 출력 대상 그대로입니다. 일반 SCC의 4·5번 파형 공유 제약은 이 3채널 경로에는 영향을 주지 않습니다.

기본값은 Off입니다. 태그는 곡의 첫 소스 창에서 음악 행보다 앞에 놓습니다. On/Off는 대소문자를 구별하지 않습니다. 값 오류나 음악 행 뒤의 태그는 오류로 처리합니다.

#SSGExtend On
#PCMInvert Off
D @0 @I8 v15 t180 o4 l8 cdefgab>c
E @0 @I9 v12 o3 l4 ceg>c
F @0 @I3 v12 o5 l4 c r g r

@0 등 일반 @n은 SSG 소프트웨어 엔벌로프, @I/@W는 파형입니다. 서로 다른 설정입니다. 필요한 엔벌로프와 음량을 명시해 주세요.

파형과 팬 명령

명령 의미 MSX 처리
@I0–@I7 펄스파, 듀티 8/16–1/16 SCC/SCC+ 32샘플 프리셋
@I8 삼각파 위상 형태를 32샘플로 근사
@I9 톱니파 위상 형태를 32샘플로 근사
@W0–@W255 사용자 파형 선택 64샘플 정의를 인접 두 샘플 평균으로 32샘플화
peL,R 좌·우 각각 0–8의 음량 mucomDotNET 감쇠값을 모노 평균; pe0,0 무음, pe8,8 최대
p1–p3 오른쪽·왼쪽·양쪽 한쪽은 모노 절반, 양쪽은 전체 음량
p4–p6 자동 팬 좌우 이동 대신 모노 절반 음량으로 고정

p의 선택적 대기 인자도 파싱하지만 좌우 자동 이동을 재현하지 않습니다. Off에서 기존 SSG p의 노이즈 의미는 바뀌지 않습니다. pe·@I·@W는 확장을 켠 D/E/F에서만 사용합니다. 다른 대상이나 범위를 벗어난 값은 오류입니다.

파형 정의는 다음과 같습니다. 십진수는 -128–127, 16진수 $00–$FF는 부호 있는 8비트 값입니다. 샘플은 정확히 64개여야 합니다.

#SSGExtend On
D @0 @W1 v15 o4 l4 cdef
 @W1
 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127
 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127
 -128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128
 -128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128

다음 소스 뱅크에 있는 정의와 매크로 안의 파형 선택도 검색합니다. 같은 번호를 여러 번 정의하면 마지막 정의를 사용합니다. 미정의 파형·샘플 범위 오류·샘플 부족/초과는 컴파일 오류입니다. 선택 시점마다 변환된 32바이트 파형이 DATA에 들어가므로, 같은 파형을 불필요하게 반복 지정하면 DATA가 커집니다. 별도의 파형 매퍼 뱅크는 만들지 않습니다.

실제 음원에서 생기는 차이

  • SCC/SCC+는 모노, 파형 32샘플, 선형 4비트 음량입니다. PC의 가상 SSG와 파형·음량·스테레오가 완전히 같지는 않습니다. 낮은 SSG 음량은 양자화로 무음이 될 수 있습니다.
  • 일반 음표, 소프트웨어 엔벌로프·음정 LFO·포르타멘토의 계산 결과를 SCC+ 주파수/음량으로 변환합니다. 고주파 영역에서는 SCC의 최소 주기 제한을 적용합니다.
  • S/m 하드웨어 엔벌로프는 MAKOTO의 사각파/노이즈로 되돌려 연주합니다. 이때 선택한 SCC 파형은 들리지 않습니다. 엔벌로프의 pe는 완전 무음만 보장하며 중간 감쇠는 재현하지 않습니다.
  • 확장 연주와 VGM 변환 시작 시 근사 방식 안내를 출력합니다. 안내가 나온다고 컴파일에 실패한 것은 아닙니다.
  • 다중 페이지는 물리 채널을 공유합니다. 소유 페이지가 바뀔 때 저장해 둔 파형·음량을 복원합니다. 동시 발음 수가 늘어나는 것은 아닙니다.

하드웨어와 메모리

MAKOTO와 SCC 또는 SCC+가 필요합니다. BIOS가 열거하는 기본 슬롯 0–3과 확장 슬롯의 서브슬롯 0–3을 탐색합니다. 전체 SCC+ 탐색이 먼저이고, 없으면 전체 일반 SCC 탐색으로 대체합니다. MegaFlashROM SCC+ SD의 SCC+는 내부 서브슬롯 1입니다. DOS 등록 RAM 매퍼는 시험 쓰기 전에 제외하고, 나머지는 8000h/A000h의 원복 가능한 2패턴 검사로 RAM을 제외한 뒤 파형 RAM을 검사합니다. 실행 중인 코드를 보호하기 위해 BIOS inter-slot 접근을 사용합니다. 변형 레지스터를 읽지 않으며 시험 파형 바이트는 복원합니다. 임의 주변기기의 모든 쓰기 부작용까지 보장하는 범용 슬롯 검사는 아닙니다.

둘 다 찾지 못하면 이유를 표시하고 연주를 중단합니다. VGM 생성에는 실제 SCC가 필요 없습니다. 연주 중 카트리지를 독점 사용합니다. 종료할 때 5채널을 음소거하고 SCC는 9000h=2, SCC+는 B000h=3으로 돌린 뒤 BFFFh=0으로 복귀합니다. 쓰기 전용 레지스터의 임의 이전 상태까지 복구하는 것은 아니므로, SCC를 동시에 사용하는 TSR과 병용하지 마세요.

실물 카트리지 사용권과 가상 VGM 출력 상태는 따로 관리합니다. VGM 출력 모드가 먼저 해제되더라도 정리 단계에서 미획득 슬롯에 SCC 정지 쓰기를 하지 않습니다.

최소 매퍼 조건은 512 KiB 그대로입니다. 기존 네이티브 출력 드라이버의 16 KiB 뱅크 내부에 SCC/SCC+ 코드와 재사용 가능한 로더 캐시를 배치합니다. 추가 매퍼 뱅크는 없습니다. 컴파일 입력/편집/DATA의 기존 용량 한도도 바꾸지 않습니다. 큰 편집 세션과 큰 DATA를 함께 보유할 때의 메모리 부족 가능성까지 없어지는 것은 아닙니다.

MUCVOICE의 같은 32샘플 DAT 파형도 일반 SCC와 SCC+에서 건반 미리 듣기가 가능합니다. K의 슬롯 입력에서 255는 자동 탐색, 기존 BIOS 슬롯 ID는 수동 선택입니다. CH1만 사용하므로 공유 파형 제약이 없으며, 단음 시험 VGM도 공통 SCC 포트 0으로 출력합니다. DAT 형식은 그대로입니다. 5개 독립 파형 전체를 일반 SCC로 변환하는 기능과는 구별하세요.

MUB 형식: 기존 msPb 계열 확장

식별자 의미
기존 MUB8 / muPb0100 기존 판정 규칙 유지
msPb0100 기존 MSX-MUSIC·내부 PSG 확장
msPb0101, byte 26 = 2 SCC/SCC+ SSG 확장
msPb0101, byte 26 = 3 SCC/SCC+ SSG와 기존 MSX 접두어 파트 혼용

byte 26의 bit 0은 네이티브 MSX 파트, bit 1은 SCC 계열 SSG를 뜻합니다. SCC 지원으로 MUB 버전이나 DATA를 바꾸지 않았으며, 같은 MUB가 두 칩에서 동작합니다. 0101에서 byte 27–33은 0이어야 합니다. 알 수 없는 플래그/버전은 거부합니다. 0101은 MUCOMSX 전용 프로파일로, 기존 muPb의 같은 위치에 있는 점프 정보와 혼용하지 않습니다. 과거 플레이어와 mucomDotNET/MDPlayer가 그대로 재생할 수 있다고 가정하면 안 됩니다.

SSG 스트림의 FF ED n은 프리셋(0–9), FF ED FF 뒤 32바이트는 파형, FF EE gain은 0–255 모노 게인입니다. 0101의 D/E/F에서만 유효합니다. 파트 수·디렉터리·DATA 기본 구조는 기존 다중 페이지 형식을 재사용합니다. MUC2MUB/MUCPLAY/MUCEDIT export는 같은 컨테이너 작성기를 사용합니다.

VGM은 1.61 헤더에 SCC 클록 1,789,773Hz(최상위 SCC+ 전용 플래그 없음)와 D2 쓰기를 기록합니다. 파형은 공통 SCC 포트 0을 사용합니다. 세 파형만 사용하므로 실제 출력이 SCC+여도 이 형식으로 손실 없이 기록할 수 있습니다. VGMPlay MSX가 일반 SCC 또는 SCC+를 선택할 수 있도록 한 것으로, 이전 개발 빌드의 SCC+ 전용 포트 4 출력에서 개선되었습니다. OPNA 노이즈와 하드웨어 엔벌로프도 함께 기록합니다. 5개의 독립 SCC+ 파형을 일반 SCC로 재현한다는 의미는 아닙니다.

#PCMInvert On/Off

K(ADPCM)의 상대 옥타브 >/< 방향을 컴파일할 때 반대로 해석합니다. 절대 o 값이나 PCM 샘플 데이터를 반전하지 않습니다. 기본값 Off이며 A–J에는 영향을 주지 않습니다. 이번 작업에서 별도로 #invert 태그를 구현한 것은 아닙니다.

#PCMInvert On
K o4 c > d < e

이는 Off의 K o4 c < d > e와 같은 음표로 컴파일됩니다. 재생 중 별도 분기나 샘플 가공이 없으므로 PCMInvert 자체의 재생 처리량 비용은 없습니다. PCMInvert만 사용한 곡은 SSG 확장 형식을 강제하지 않습니다.

MUCEDIT에서는 최신 MUCPLAY와 함께 열기 → 컴파일 → 연주 → EXPMUB → EXPVGM을 사용합니다. 기존 세션은 구버전 실행파일로 해제한 뒤 실행파일 세트를 교체하세요.

Clone this wiki locally