2024년 9월 13일 금요일

TapTapRevolution 제작 #7 - 완성판

 



기본 플레이 루틴을 완성하니까 동기부여가 확~ 떨어지네요.

몇 달 쉬었으니, 다시 진행해봅니다!


TTR에 사용되는 카트리지는 8MB 메모리(FlashROM 64Mbit)를 사용합니다.

2MB는 프로그램 및 오프닝 영상 및 각종 그래픽, 효과음 데이터로 사용되구요.

남은 6MB에 노래 3곡이 들어갑니다. 노래 한곡당 2MB가 소진된다고 보심 맞아요 ㅎ.ㅎ


오프닝 영상은 약 7초 정도로 편집한 MV 파일입니다.

구동 방식은 V3, V4에서 쓰이던 것과 거의 같습니다. 스크린2 + 팔레트 스위칭~


타이틀과 노래 선택 화면은 스크린8을 사용합니다.

타이틀 그래픽은 AI의 힘을 좀 빌려서...ㅋ


메인 플레이 영역은 기존에 보여드린대로 스크린5를 사용합니다.


스테이지가 끝나고 나오는 결과 화면과 게임오버 화면은 스크린8을 사용합니다.

기존 그래픽을 변환해서 그대로 넣어도 꽤 괜찮아보이더라구요.


효과음으로 쓰이는 사운드는 모두 PCM으로 들어갑니다. 노래 재생용 PCM player와 같은 동작구조입니다.


마지막으로,

타이틀 화면에서 일반 모드 또는 트레이닝 모드로 선택이 가능한데요.

트레이닝 모드는 체력(?) 게이지가 0이 되어도 게임오버가 되지 않습니다.


.

.

.


그럼, 동작 모습을 보시죠~ 백문이 불여일견 ㅎ.ㅎ

비트맵 그래픽을 그리고, 지우고, 스프라이트 뿌리느라 Z80, VDP가 미친듯이 삽질을 합니다만...

60FPS로 잘 동작하는 것을 보실 수 있습니다요. 이번엔 DOUBLE 모드 플레이로 찍어보았어요~




PS.

효과음을 PCM으로 처리하니까 편하고 좋네요.

이제 OPL4 (문사운드, 달소리 등) 사운드를 쓰시는 분이 많으니...

앞으로 DOS2용 게임을 만든다면, 그냥 OPL4 PCM으로 도배하는 쪽으로 생각해봐야겠습니다요ㅋㅋ


PS. 2024-09-18
옵션 메뉴을 따로 할당했습니다. 오디오 싱크 조절도 가능하고, 키맵도 확인할 수 있습니다요~ ㅎ.ㅎ


2024년 9월 6일 금요일

지난 20년 개발의 추억 #11 - T-Wave


월간 추억팔이 #11편이 나왔습니다~ ㅎ.ㅎ


지난 글은 아래 링크를 이용하세요!

https://sharksym.blogspot.com/2023/07/20-1.html

https://sharksym.blogspot.com/2023/08/20-2.html

https://sharksym.blogspot.com/2023/10/20-3.html

https://sharksym.blogspot.com/2023/10/20-4-mmcsd-drive-v3.html

https://sharksym.blogspot.com/2023/11/20-5-paramsx-r.html

https://sharksym.blogspot.com/2024/01/20-6-paramsx-r-v11.html

https://sharksym.blogspot.com/2024/03/20-7-audiofactory.html

https://sharksym.blogspot.com/2024/04/20-8-mmcsd-drive-v4.html

https://sharksym.blogspot.com/2024/06/20-9-xii-v.html

https://sharksym.blogspot.com/2024/07/20-10-slt-x-v1.html




V4에는 PSG 사운드를 씐나게 해주는 PSG2SCC 기능이 있습니다.

PSG의 구형파 소리에 SCC의 파형을 보태주면 꽤 재미난 소리가 나죠.

PSG만 쓰는 32KB 롬게임 또는 자낙EX 등의 메가롬에서 활용하면 GOOD!


2020년 어느날...

GameRunner BIOS 없이 H/W 단독으로 동작하는 PSG2SCC 카트리지가 있으면 좋겠더라구요.

이스 시리즈 처럼 PSG만 쓰는 디스크 게임에서는 GameRunner를 못 쓰니까,

H/W만으로 구동이 되면 모든 S/W에서 다 쓸 수 있어서 좋겠죠? ㅎ.ㅎ

.

.

.

근데 PSG2SCC 카트리지 하나 때문에 서브 슬롯 한개를 써버리기엔 좀 아깝다는 생각이 듭니다.

일단 비슷한 컨셉으로 쓸만한 기능들을 떠올려보아요~


PSG2SCC를 처리하려면 파형샘플로 출력해주는 기능이 필요한데,

그냥 SCC 기능을 그대로 구현해서 SCC 단독 또는 PSG2SCC로 전환하면 좋겠죠?

이왕이면 SCC보다는 SCC-I가 좋겠구요. 사운드 기능뿐만 아니라, SCC-I의 메가램도 그대로 구현합니다.


사실, 오리지널 SCC-I는 메가램이 64KB라서 사실 메가 BIT는 아닙니다만, 128KB로 증설이 가능해요.

아마 많은 분들이 128KB로 증설해서 쓰시는 걸로 알고 있습니다.

예전엔 코나미의 1메가 SCC게임들을 구동하는 용도로 요긴하게 썼습니다요.

일단 512KB를 때려넣고, 기본 설정을 128KB로 두면 기존 S/W 호환문제는 해결!


여기까지 해놓으니, 욕심이 생기네요.

SCC-I를 유저 선택으로 PSG2SCC 모드로 전환하는 게 아닌 별도의 채널로 구현하면?

그럼 사라만다, 메탈기어2 등의 기존 SCC를 쓰는 롬에서도 PSG2SCC와 SCC 사운드를 동시에 쓸 수 있겠네요.

특히 보이스 패치된 SCC롬들을 쓸 때에는 듀얼 SCC가 필수이니, 이 때도 유용하겠구요.

VS + T-Wave 조합이면, 보이스 SCC + PSG/SCC BGM + PSG2SCC를 한방에 해결!


여기까지 생각을 정리해보면...

- SCC-I 128KB/512KB RAM mode (5Ch. Sound)

- PSG2SCC Sound (3Ch. Sound)

되겠습니다.


.

.

.

그러던 어느날 또 다른 아이디어가 떠오르네요.

PSG2SCC의 채널을 2배로 늘려서 스테레오로 구현해보는거죠.

물론 채널 늘려서 좌우 다른 샘플 소리를 내주는 것도 중요하지만... 여기에 주파수 조절을 추가해봅니다.

원본 PSG에 어울리는 화음을 넣어주는거죠.

좌우 채널에 다른 주파수를 쓸 수 있도록, PSG2SCC를 6채널로 구현합니다.


실제로 구현해서 들어보니, 원래 PSG 채널이 노이즈를 출력모드가 될 때는 화음이 잘 안어울리네욤

V3의 PSG2SCC는 PSG와 같은 주파수라서 별로 거슬리지않았는데 말이죠. 으흠...

결국 T-Wave의 PSG2SCC는 노이즈 모드도 들어갑니다. 실제로 들어보면 차이가 꽤 나요 ㅎ.ㅎ


샘플 파형은 16가지를 롬에 내장해서 외부 스위치(카트리지 상단)로 쉽게 선택할 수 있도록 합니다.

주파수도 외부 스위치로 조절 가능하구요.

물론 파형과 주파수는 좌우 채널 각각 조절됩니다.


그리고, 샘플 파형에는 구형파도 있어서, 본체의 PSG 복제도 가능합니다.

본체의 사운드 출력을 MUTE하고, T-Wave의 출력만 스피커로 듣는 식으로 활용할 수 있어요.


여기에 PSG 2번째 포트를 쓰는 것도 옵션으로 추가합니다.

듀얼 PSG (포트 10H, 11H)를 쓰는 S/W에서 활용하면 좋겠죠?


기능이 많이 바꼈으니 PSG2SCC 대신 다른 이름을 붙여봅니다.

Wave Sound Generator - 줄여서 WSG!


WSG 기능을 요약하면 이렇게 됩니다.

- 샘플 파형 출력 (SCC와 같은 방식)

- 노이즈 모드

- 좌우 채널 분리 (3Ch. + 3Ch.)

- Sec-PSG 에뮬 모드



카트리지 상단에는 3단 스위치 2개와 조그 다이얼 2개를 넣었습니다.

설정이 귀찮은 분들을 위해 프리셋 모드(EASY MODE)도 넣었어요.

부팅 시 기본 설정되는 화음 모드 그대로 두어도 꽤 괜찮은 밸런스를 보여줍니다. 흐흐...


마지막으로 다른 사운드를 넣어봅시다.

카트리지 출력이 기본 스테레오니까, 세가에서 많이 쓰였던 DCSG(SN76489)를 2개 넣어서 스테레오로 들어보아요.

오락실 기판에서 듀얼 DCSG가 꽤 쓰였습니다. MSX에서 VGM파일이라도 스테레오로 들으면 잼납니다 ㅎ.ㅎ


최종 T-Wave의 스펙은 2x WSG + SCC-I + 2x DCSG가 되겠습니다.

3종류의 디지털 사운드의 조합이라서, 이름을 Tripple Wave로 붙였습니다. (제3의 물결?)


그리고, 디버깅 용으로 넣은 DAC 테스트 모드가 있는데요.

이 모드에서는 WSG + SCC 대신 스테레오 8BIT DAC으로 동작합니다.

MMCSD.COM 등에서 스테레오 WAV 파일을 출력하는 등의 용도로 쓸 수 있어요.


.

.

.


T-Wave를 5년째 쓰고 있는데, 이젠 WSG 화음이 없으면 귀가 허전하네욤.

아무리 생각해도 잘 만든 것 같아요 ㅎ.ㅎㅋ


그럼, 다음편에서 뵙겠습니다! ㅎ.ㅎ/


2024년 8월 25일 일요일

MMC/SD Drive V4 제작 #22 - MV 영상으로 SD 응답속도 테스트

SD카드를 Read/Write 할 때에는 컨트롤러에게 먼저 커맨드를 보내고 Ready 신호를 기다리게 됩니다.

그 후 Read/Write를 주르륵 해주는 거죠.

근데 데이터(파일)이 저장된 위치에 따라 응답속도에 편차가 생기게 됩니다.


MMC/SD에서 동영상 재생 기능을 처음 넣었던 때가 2009년 MMC/SD V2를 쓰던 시절이었는데요.

그 때는 동영상 저장용 파티션을 별도로 만들어서, SD카드의 연속된 메모리공간을 활용했습니다.

SD카드의 멀티섹터 Read 커맨드를 쓰면, 연속으로 데이터를 읽을 때 빠르게 처리가 가능하죠.


나중에 2015년 MMC/SD V3부터는 디스크 파티션에 일반 파일을 영상으로 처리할 수 있도록 구현이 되었습니다.

이 방법은 CPU에 굉장히 부담이 됩니다.

많은 클러스터로 쪼개진 파일을 처리해야 되는 것과 SD카드의 연속 읽기를 쓰지 못한다는 것 때문이죠.

사실 V3 설계 때에는 MV 플레이어는 계획에 없었는데요.

DSK 에뮬 때문에 클러스터 처리를 구현해보니, MV 플레이어도 가능성이 보이더라구요 ㅎ.ㅎ


처음 MV 플레이어를 만들었을 때에는 주로 8GB SD를 사용했구요.

2018년 V4에 와서는 16GB SD를 쓰다가 후기에는 32GB SD를 사용했습니다.


여러 종류의 SD카드를 쓰면서 알게된 것이 하나 있는데요.

용량이 늘면, 커맨드 응답도 느려지더라구요.

초기 코드는 샌디스크 8GB SD기준이었는데, 그 때는 커맨드 응답이 꽤 빨랐습니다.

이 코드가 32GB SD에서는 버티지 못해서, 결국 작년에 MV 플레이어 코드를 다 갈아엎었죠.


.

.

.


며칠전 알리에서 할인하는 SD 32GB를 3개 구매합니다.

빨간색+회색의 Sandisk Ultra UHS-I 모델입니다. 두둥~~




사진의 왼쪽 흰색+회색으로 된 SD가 구버전이구요. 오른쪽 빨강+회색은 신버전입니다.

둘 다 UHS-I, Class 10으로 거의 같은 속도입니다.

사실 구버전은 종류가 여러개 있는데요.

최대 속도가 80MB/s, 98MB/s, 100MB/s 였던걸로 기억하는데, V4에 번들된 SD는 80MB/s, 100MB/s 두 종류였습니다.

사진 아랫쪽의 삼성 EVO 32GB는 제가 최근 4년정도 계속 쓰던 거네요.


그럼 본론으로 넘어가서, 어제 택배로 받은 신버전 32GB SD에 기존 SD카드와 똑같이 파일들을 때려넣고 테스트 해봅니다.


드라마 도깨비의 영상으로 테스트해보았어요!


MMC/SD BIOS는 디버깅모드입니다. 동영상 재생 시, SD카드 커맨드의 응답속도가 PAC-V의 LED로 표시됩니다.

왼쪽부터 켜지는 LED바 1개가 PCM 샘플 1개를 의미합니다.

커맨드를 대기하는 동안 LED가 점점 켜지는거죠 ㅎ.ㅎ

결국 LED가 모두 꺼져있면 응답속도가 빠르고, LED가 많이 켜지면 응답이 느린 상태입니다.


아래는 삼성 EVO입니다.




아래는 샌디스크 구버전입니다.




아래는 샌디스크 신버전입니다.



위의 사진에서는 샌디스크 Ultra 신버전이 꽤 느린 것으로 보이는데요.

실제로 MV 재생을 해보면 타이밍을 놓쳐서 화면에 테어링도 생기고, 사운드도 끊어질 정도로 엉망이 됩니다 ㄷㄷ


여러 종류의 MV 파일로 테스트 했을 때의 응답 딜레이는,

삼성 EVO        -> 대부분 1개 또는 2개, 느린 경우는 6개까지 발생

샌디스크 구버전 -> 대부분 0개 또는 1개, 느린 경우는 9개 이상 발생

샌디스크 신버전 -> 대부분 2개 ~ 5개, 느린 경우는 9개 이상 발생


삼성 EVO가 가장 안정적이구요. (그래서 계속 쓰고 있었...)

샌디스크 구버전은 파일에 따라 가끔 테어링이 나는 경우가 생깁니다.

샌디스크 신버전은 사실상 재생포기 수준이네요 ㅎ.ㅎ


V4에서 빨강+회색의 샌디스크 SD를 쓰시려는 분은 참고하세요~

저는 이번에 구매한 것들 서랍에 쳐박아놨습니다ㅋㅋ


그럼, 이만...


PS. 나무위키에서 찾아보니 위의 SD에 대한 출시연도가 나오네요. (위키라서 틀린 정보일 수도 있습니다.)

제가 샌디스크의 구버전(흰색+회색), 신버전(빨강+회색)이라고 표현했는데, 모두 같은 해(2020년)에 출시되었군요.