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프레임으로 애니메이션이 진행됩니다.




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


댓글 없음:

댓글 쓰기