2024년 2월 29일 목요일

'시끌시끌 야구' 카트리지 제작

'시끌시끌 야구' 카트리지 제작


음성과 효과음이 PCM 사운드로 출력되는 야구 게임 카트리지가 있었습니다.


혹시 기억하시나요? ㅎ.ㅎ 'PLAYBALL'과 '불타라! 열투야구'입니다.

음성이 기록된 ADPCM 칩으로 소리를 내주고 있어요.


아래는 PLAYBALL 카트리지의 모습입니다.

투명한 케이스로 제작된 이유가... 아마도 ADPCM 칩이 내장된걸 뽐내려는 목적이겠죠? ㅎ.ㅎ




그 외 'Hard Ball' 게임에서도 음성출력이 되는데요.

본체의 SLOT 1에는 Hard Ball, SLOT 2에는 PLAYBALL을 함께 꽂아서 실행하면,

Hard Ball에서 SLOT 2에 있는 ADPCM 칩을 구동합니다.

결국 PLAYBALL 카트리지가 있어야, 음성/효과음을 들을 수 있습니다요.



.

.

.


여기까지 읽으셨으면, 제가 뭘 하려는지 눈치채셨겠지만ㅋ

Oraksil보드에 내장된 PCM player로 이 ADPCM 칩의 음성을 에뮬하는 거죠.


ADPCM을 H/W 로직으로 구현하려면 MoonBase처럼 큰 보드가 필요합니다만...

음성을 녹음해서 LPCM으로 바꿔 처리하면 쉽게 출력할 수 있어요~

그냥 용량 큰 플래쉬롬을 박으면 해결 ㅎ.ㅎ/


사실 음성지원 야구 카트리지는 작년말에 만들었는데, 올초에 TapTapRevolution 작업에 정신이 팔려서...ㅋ

TTR을 대충 완성한 후에야, 야구 카트리지 제작을 마무리했습니다요~


카트리지 이름은 '시끌시끌 야구'로 붙여보았습니다.

8개의 야구 게임이 들어있구요. 부팅하면 커서키(또는 조이패드)로 게임을 골라서 실행합니다.

게임 선택화면에서 제목도 음성으로 들을 수 있어요.


아...  Hard Ball은 별도의 PLAYBALL 카트리지 없이 음성출력이 되도록 수정되어있습니다.


아래는 들어간 게임들의 목록입니다. 발매년도 순으로 넣었어요.


1986. PLAYBALL (음성 지원)

1986. Hard Ball (음성 지원)

1987. Victorius NINE II

1988. 프로야구 FAN 텔레넷 스타디움

1988. 불타라! 열투야구 (음성지원)

1989. 프로야구 패밀리스타디움 - 페넌트레이스

1989. 프로야구 패밀리스타디움 - 홈런콘테스트

1989. PLAYBALL III



동작 모습은 아래 유투브로 구경하세욤~ ㅎ.ㅎ/




그럼, 이만~~

2024년 2월 24일 토요일

TapTapRevolution 제작 #4 - 노래와 함께~ 고고

이제 음악을 넣어보아요! ㅎ.ㅎ


1편 글에서 PCM 출력을 사용한다고 얘기했었는데요.

turboR, 뮤직모듈, Covox 등의 PCM은 CPU가 데이터 1바이트씩 전송(write)해야 되니까, CPU 부하가 매우 큽니다.

동영상 플레이어 같은 단순 반복작업인 경우는 타이밍 맞춰서 사용할 수 있겠습니다만... TTR에서는 못 쓴다고 봐야겠죠.


TTR 카트리지에는 8MB의 플래쉬롬이 내장되어있구요. 이 데이터를 8BIT PCM으로 자동 재생이 되는 기능이 들어있습니다.

CPU는 단지 Play/Stop 커맨드만 보내주면 됩니다. 노래는 그냥 쭈욱~ 출력됩니다요.

메인 프로그램에서 그래픽과 사운드 싱크만 잘 맞춰주면 OK입니다!


카트리지의 PCM 출력은 22.05kHz, 44.1kHz 모드가 있는데요.

TTR에서 쓰이는 곡은, 길이가 약 90초 쯤 됩니다. 44.1kHz PCM으로 변환하면 거의 4MB 분량이 나오게 됩니다.

22.05kHz PCM으로 변환하면 2MB 정도가 되니까, 8MB 플래쉬롬에 4곡을 넣을 수 있겠네요.

11.025kHz 등으로 샘플레이트를 낮추면 곡을 많이 넣을 수는 있겠지만, 음질 손해가 크니 22.05kHz로 갑니다요!


TTR에서는 22.05kHz 모드로 3곡을 넣고 남은 2MB 영역은, 프로그램 및 그래픽 데이터가 들어가게 되겠습니다.

결국 노래는 3곡이 들어가게 되겠네요.



그럼, 실제로 구동해보겠습니다. 잘 나오는지 한번 보셔요! ㅎ.ㅎ/~




.

.

.


으흠... 사운드는 딱히 더 설명할 부분이 없네요ㅋ


그럼, 다음편에서 보아요~ ㅎ.ㅎ/


2024년 2월 23일 금요일

TapTapRevolution 제작 #3 - 그래픽을 더 멋지구리하게

게임의 메인화면은 아래처럼 표시됩니다.




화면은 3부분으로 나눠져있습니다.

윗쪽의 점수표시 영역, HP게이지 영역, 노트(화살표) 스크롤 영역


분할된 영역은 각각의 팔레트 테이블과 스프라이트(어트리뷰트 페이징) 및 비트맵 그래픽(VRAM 페이징)으로 처리됩니다.



1. 점수표시 영역




이곳은 수직 스크롤이 멈춰있고 점수만 표시합니다. 알레스트 시리즈에서 흔히 보이는 구성이에요.

폰트는 추후 이쁜놈(!)으로 교체될 예정입니다 ㅎ.ㅎ



2. HP 게이지




노트 타이밍에 맞춰 발판을 누르면, 게이지가 빨강에서 주황색까지 늘어납니다.

타이밍을 놓치면 줄어들고, 바닥나면 게임오버 되겠네요.


원작 DDR에서 이부분이 박자에 맞춰 파도타기를 하는데요.

요것도 비슷하게 구현해봅니다.

파도타기 그래픽은 아래처럼 미리 VRAM에 몽땅 그려놓습니다.

스크린5 모드는 VRAM 페이지가 4개라서, 이렇게 한 페이지를 훅~ 써버려도 부담(?)없습니다.




타이밍에 맞춰 수직스크롤을 해주면, 제자리에서 파도타기를 하는 듯한 모습으로 나오게됩니다.

2인플레이도 지원해야하니까, 오른쪽 2P 게이지는 반전해서 그려줍니다~


플레이 중 게이지를 줄여야 하는 경우는, 검정색 스프라이트를 겹쳐서 게이지 일부분을 가려주면 됩니다.

비트맵을 다시 그리는 건 느리기 때문에 이렇게 처리하는게 편해요.



3. 노트 스크롤 영역




상단에는 발판(버튼)을 누르는 타이밍을 보여주는 회색 화살표가 8개 나와있구요.

그 아래로는 비트맵 그래픽이 스크롤되며 올라갑니다.

흰색 가로선과 숫자는 곡의 마디를 표시하는 용도입니다.

이건 연습모드(무적모드)에서만 표시되니 참고하시구요.


먼저 화살표를 단일 컬러로 팔레트 애니메이션을 해보니, 생각했던 것만큼 이쁘진 않더라구요.

정박자, 반박자 화살표 각각 4등분해서 색칠을 해봅니다.

(16컬러 모드에서 컬러 절반(8개)을 화살표에 칠해버리는 만행을...ㅋ)




실제 화면에서는 아래처럼 팔레트가 적용되어 나타납니다.

화살표 꼬리에서 머리쪽으로 애니메이션 해주니, 훨씬 보기 좋네요 ㅎ.ㅎ/




.

.

.

사실 이 스크롤 영역에서는, 컬러 8개의 팔레트 애니메이션으로 다중 스크롤 효과를 넣으려고 했습니다.

근데 이게 워낙 흔한 테크닉이라서, 큰 감동(ㅋ)을 주기는 힘들고...

결정적으로 화면 대부분이 화살표 스크롤이라, 요놈들을 이쁘게 그려주는게 더 만족도가 높더라구요.

대신 단색의 배경으로... 암튼 그렇게 되었습니다~ ㅎ.ㅎ


그럼, 다음편에서 보아요~ ㅎ.ㅎ/