2023년 9월 10일 일요일

Ponpoko Remake #4 - 사운드 추가

이제 오리지널 3채널 사운드를 MSX쪽에서 구현하면 되겠습니다.


오리지널 보드에서는 각채널의 주파수가 16BIT로 설정됩니다.

볼륨은 4BIT로 설정이 되구요. 뭔가 PSG랑 비슷하죠? ㅎ.ㅎ

이걸 부가 H/W를 쓰지않고 그냥 본체의 PSG로 출력해보아요~


아시다시피 PSG의 레지스터는 주파수(Frequency)가 아닌 주기(Period)를 설정하도록 되어있습니다.

구형파(HIGH/LOW)가 바뀌는 시간을 클럭 카운트 수로 표현하는거죠.


그러면 이 카운터를 구하려면 나눗셈(1/주파수)을 해야하는데, Z80으로 느릿느릿하면 안좋겠죠?

그냥 결과값만 모아서 테이블로 만들어둡시다~

참고로, 이번 Ponpoko 리메이크는 메가롬 카트리지로 제작될 예정입니다 ㅎ.ㅎ


16BIT 주파수를 입력하면 12BIT PSG 카운터(2바이트)이 나오는 테이블입니다.

테이블 계산이 쉽도록 16BIT 주파수에서 하위 12BIT를 잘라서 테이블 주소값으로 사용하고,

상위 4BIT는 메가롬 매퍼의 페이지값으로 넣으면 쉽게 찾을 수 있겠네요.


결과적으로 8KB 테이블 16개가 나옵니다.

이걸 걍 롬에 때려넣어요. 16K 매퍼를 쓰고 있어서, 실제 롬에서는 256KB를 차지합니다 ㅎ.ㅎㅋ



모든 파형을 PSG의 구형파로 출력하니까, 조금 날카롭게 들립니다만... 이대로도 괜찮네요.

근데 볼륨이 이상한지, 채널간 밸런스가 엉망이군요.


왜 그럴까... MAME의 사운드 보드 설명을 읽어보니,

4BIT DAC과 볼륨 조절이 선형(linear)으로 출력되도록 만들어져있네요.

PSG에서 비슷하게 맞도록 조절해줍니다 ㅎ.ㅎ

참고로, PSG 출력 그래프에 직선을 그어보연 이정도로 꽤 차이가 납니다.




이제 대충 밸런스가 맞는 듯 하군요.

그리고, 이 사운드가 PSG로 출력되니까...

PSG I/O로 동작하는 사운드 카트리지(예: T-Wave)가 있으면 좀 더 재밌게 들을 수 있습니다 ㅎ.ㅎ


Ponpoko는 게임 중에는 BGM없이 효과음만 나오는데요.

이게 원래 의도된건지, 프로그램 용량제약 등 다른 문제로 사운드가 간단해진건지 궁금하네요.

스테이지 클리어 하면 짧은 음악이 또 나오긴해요.

근데 움직일 때 '띠띠띠~' 효과음만 나오는게 나름 잘 어울립니다 ㅎ.ㅎ


그럼, 다음편에서 ...


PS. 실제 소리는 다음편에서 영상으로 보여드릴게요 ㅎ.ㅎ/


댓글 없음:

댓글 쓰기