2025년 7월 13일 일요일

DW의 지하실 제작 #3 - 스프라이트 구성

아시다시피 MSX의 스프라이트는 컬러코드가 4BIT입니다.

V9938의 G7(스크린8)에서는 그래픽은 RGB 8BIT 출력이 됩니다만, 스프라이트는 여전히 4BIT죠.


근데, 한가지 문제라면,

스크린8에서는 스프라이트가 16컬러로 고정되어 출력됩니다. 팔레트 레지스터의 영향을 받지않아요.

바꿔말하면 MSX1의 스프라이트랑 비슷한 색으로 나옵니다. 실제로는 EGA 16컬러에 더 가까운 듯요 ㅎ.ㅎ


암튼 잡설은 여기까지구요, 스프라이트를 만들어봅시다요!

이전 글에서 언급했지만, 플레이어는 비트맵 그래픽(16 x 24)로 구현되어 있습니다.

나머지 몬스터와 잡다 효과용 패턴만 스프라이트를 적용합니다.


먼저 그림판으로 밑그림을 그려보아요.



이제 스프라이트 데이터를 만들어야하는데요.

예전엔 주로 DD구락부를 썼지만, 이번엔 그냥 YY-CHR 프로그램을 사용했습니다. (귀찮 귀찮...ㅋ)

'2BPP MSX' 포맷으로 놓으면, 연속한 번호(짝, 홀)의 패턴 두개를 2BIT 컬러로 보여주는데요.

실제 MSX2에서는 스프라이트 OR 연산된 출력과 같은 효과를 얻을 수 있습니다. 

적 캐릭터 하나당 8개의 패턴이 필요하고, 애니메이션 효과를 위해 4배의 패턴을 그려야합니다.



참고로, 실제 VRAM에는 아래처럼 1BPP 데이터로 들어갑니다요.



VDP는 8 x 8 패턴 256개의 스프라이트를 처리합니다.

보통 게임에서는 16 x 16 패턴을 쓰니까, 64개의 스프라이트라고 보면 되겠죠?

여기서 캐릭터가 상하좌우 등의 여러가지 모습을 보여주려면, 실제 한번에 쓸 수 있는 패턴 수가 팍팍 줄어버립니다.

결국 전체 패턴 메모리를 여러벌로 쓰는 방법밖에는 없죠.


아래는 VRAM Page 0의 가용 메모리를 쪼개서 스프라이트로 할당한 모습입니다.

참고로 스프라이트 어트리뷰트도 2벌을 쓰고 있습니다. 테어링을 막는 가장 쉬운 방법이죠. 페이지 플립이요!




그럼, 실제 화면에서는 어떻게 나오는지 보아요.

애니메이션은 6프레임 당 한번씩 패턴이 바뀝니다. 바꿔말하면, 초당 10프레임으로 애니메이션이 진행됩니다.




그럼, 다음 편에서 뵈어요~ ㅎ.ㅎ/


2025년 7월 10일 목요일

DW의 지하실 제작 #2 - 그래픽(비트맵) 구성

그래픽 데이터를 만들어봅시다.

모든 스크린샷은 에뮬에서 캡쳐한 것이니 참고하시구요.


먼저 부팅 후 게임 오프닝에 나올 X-II의 모습입니다.

256 x 192 사이즈로 맞춘 비트맵입니다.




다음은 타이틀 화면에 나오는 컴컴한 지하실의 모습이네요ㅋ




스크린8에서는 VRAM 페이지 용량이 64KB입니다. 결국 2페이지로 게임 구현이 되어야합니다.

페이지 1에는 플레이어, 아이템, 배경 등에 쓰일 그래픽이 들어가겠구요.

그래픽 처리를 쉽게 할 수 있도록, 게임 화면의 백업 데이터를 남겨둡니다.




아래는 페이지 0에 표시된 게임 화면입니다. 표시영역은 256 x 192 픽셀이욤.

아래쪽에 보이지 않는 부분(256 x 64 픽셀)은 스프라이트 데이터로 쓰이겠습니다.




대충 어떤식으로 보여지는지 아시겠죠?


그럼, 다음 편에서 뵈어요~ ㅎ.ㅎ/


2025년 7월 6일 일요일

DW의 지하실 제작 #1 - X-II를 찾아서



국딩 시절에는 이 광고를 보면서, 다들 최고급 기종에 대한 환상 같은 게 있었죠. 명조체 한글이라니!

물론 실물을 만져보는 순간... 그 환상은 뿅~하고 사라졌지만요ㅋㅋ


그 후 30년 정도는 X-II를 잊고 지냈습니다만...

2018년에 일명 대란이 터지면서 창고(?)에서 잠자던 X-II가 쏟아져나왔지요.

저도 당시의 본체 2대를 받아서 열심히 굴리고 있습니다 ㅎ.ㅎ/


그리곤 시간이 꽤 흘렀네요.

당시의 X-II를 수리해서 쓰는 경우도 많아서, 이젠 X-II를 갖고 계신 분들이 많은데요.

갑자기 이런 생각이 떠올랐습니다.


창고에서 정상 동작하는 X-II를 찾는 게임을 만들면 재밌을까? 이런 생각이요!


일단 제목부터 지어봅니다. 'DW의 지하실'

네, DW는 그 회사의 이니셜 맞습니다ㅋ



@ 요구환경


게임 사양은 256KB(2메가비트)의 작은 메가롬팩으로 제작됩니다.

램 64KB의 기본 MSX2에서 실행됩니다만, VRAM은 128KB가 필수가 되겠습니다.



@ 그래픽


모든 그래픽은 스크린8(VDP G7 모드)을 사용합니다.

이 모드는 그래픽 부하도 높고, 팔레트를 쓸 수 없고, 스프라이트 색이 고정된다는 등의 제약이 있지만,

한번쯤은 256컬러 모드로 게임을 만들어보는 것도 재밌을 것 같더라구요.

게임 화면은 흔히 보는 탑뷰 형식입니다.



@ 사운드


현재 PSG만 사용하는 것으로 진행중입니다만, 혹시 여유가 되면 FM을 추가할 가능성도 있습니다.

사실 여유가 되면 PSG PCM을 넣는 쪽이 더 끌립니다만, 아직 확정된 건 아니네요.



@ 게임 플레이


한줄로 표현하면,

-> 지하실에 흩어진 건전지를 모아서 X-II를 켠 후, 동작 테스트가 되면 스테이지가 클리어!

가 되겠습니다. 간단하죠? ㅎ.ㅎ


지하실은 여러개의 방으로 구성이 됩니다.

스크롤은 불가능하고 장면전환 되는 식이에요. 메탈기어를 떠올려보시면 되겠습니다.


주인공을 방해하는 DW의 망령들이 돌아다닙니다만,

RGB 모니터를 좋아하는 유령이라서, X-II를 켜서 물리칠 수 있습니다요!

음... 모니터 속으로 사라진다는 표현이 더 맞겠네요.


최종 X-II 키보드 테스트에서는,

유령들이 알려주는 단어(또는 문장)를 입력해야합니다.

실기에서 플레이하려면 키보드가 멀쩡한 기종을 쓰는 게 유리하겠죠? (X-II 실기는 애로사항이...)



마지막으로 타이틀 화면을 올려보아요~



그럼, 이만...