2023년 9월 10일 일요일

Ponpoko Remake #3 - 그래픽 작업

메인 화면은 스크린4를 212라인 모드로 구동합니다.

8 x 8 패턴 처리는 MSX1 TMS9918의 스크린2와 비슷합니다.

TMS9918은 모든 스크린이 192라인으로 고정되어있어서, BASIC 명령어도 거기에 맞춰 구성이 되어있어요.


V9938에서는 수직 해상도를 212라인으로 늘려서 쓸 수 있지만, BASIC에서는 지원하지 않습니다.

인터레이스 모드도 BASIC으로는 아무것도 못하니까, 국딩 때는 이걸 어케 쓰는건지 궁금했던 추억도 있습니다요ㅋ


근데, 스크린4에서 패턴 테이블을 4개 쓰더라도, 수직 스크롤을 쓰지 않는다면...

화면 하단에 20라인(212 - 192)이 추가로 보여지는 것 뿐인데요.

패턴 관리에 필요한 CPU 로드는 33%(3장 -> 4장)가 늘어나지만 보여지는 스크린은 약 10% 증가 ㅎ.ㅎ


게임중에 변경이 필요한 부분들은 패턴 4장 모두 똑같이 고정하고,

장면전환 등 CPU 로드가 늘어도 상관없는 때만 패턴을 변경하는 식으로 처리하면 사실 큰 부담은 안됩니다요.


보통 비트맵 그래픽을 작업할 때는 DD구락부를 많이 썼는데요.

이번엔 패턴 편집이 대부분이라, 윈도용 폰트 에디터 yy-chr을 썼습니다.



영문 폰트처럼 여러가지 컬러를 써야하는 경우는, 미리 중복패턴으로 채웠습니다.

아무래도 컬러 테이블(8바이트)을 변경하는 것 보다는, 패턴 코드(1바이트)를 변경하는게 빠르거든요.

게다가 한 테이블에서 서로다른 색의 문자가 나오는 경우도 있으니, 무조건 이렇게 구성해야합니다요!

화면상단에 나오는 타이머 막대기는 짧아지면 색이 바뀌는데요. 이건 팔레트를 바꾸는식으로 처리했습니다.


기본 패턴에 컬러를 입혀서 표시하면 이렇게 나오게 됩니다.



과일 패턴을 4개씩 모아서 찍으면 요렇게 볼 수 있구요.

도트를 열심히 찍었지만, 8도트에 2컬러 제약때문에 품질이 떨어지는 부분도 조금 있습니다요ㅋ



이제 스프라이트도 넣어야겠죠?


오리지널 4컬러 스프라이트는 V9938의 스프라이트 모드2에서 레이어 2개를 겹치면 똑같이 구현가능합니다.

OR되는 픽셀 컬러를 휴리스틱 알고리듬으로 잘(!) 선택해서 배치하면 이렇게 되네요.


0. 0000 = 검정 

1. 0001 = 타이머 전용  -> 파랑/노랑/빨강

2. 0010 = 오렌지       -> 당근, 감, 옥수수, 파인애플, 오렌지

3. 0011 = 연보라       -> 가지, 포도, 복숭아

4. 0100 = 녹색         -> 완두콩

5. 0101 = 살구색

6. 0110 = 갈색         -> 밤, 땅콩

7. 0111 = 파랑         -> 가지

8. 1000 = 짙은 하늘색  -> 멜론, [사다리], [층바닥]

9. 1001 = 갈색         -> 너구리 전용

A. 1010 = 빨강         -> 너구리 전용

B. 1011 = 흰색         -> 너구리 전용

C. 1100 = 흰색         -> 무, 문자열

D. 1101 = 빨강         -> 앵두, 버섯, 수박, 딸기, 사과, [압정]

E. 1110 = 하늘색       -> [외벽], [스코어 숫자]

F. 1111 = 노랑         -> 바나나, 맥주


스프라이트 OR 컬러의 경우, 너구리를 예로 들면요...

갈색(9번) 레이어와 빨간색(10번) 레이어가 사용되는데요.

픽셀이 겹치는 부분은 OR연산으로 흰색(11번)으로 표시됩니다.

이런식이죠.




전체 스프라이트 패턴은 아래처럼 볼 수 있습니다.



실제 데이터는 이런 테이블이 4장 들어갑니다. 8 x 8 패턴이 1024개!

게임 내에서는 너구리가 좌우, 상하 반전되는 것 때문에 그렇습니다요.

오리지널 Ponpoko에서는 스프라이트를 패턴 개별로 XY flip 처리되는 속성이 있어서, H/W가 그냥 해주더라구요.

H/W가 딸리는 MSX2에겐 대용량 VRAM 128KB으로 떼우는 방법이...ㅋ

결국 Ponpoko 리메이크에서는 스프라이트를 4페이지로 구성했다는 얘기였습니다.


여담이지만,

MSX2 BASIC에서는 비트맵 스크린의 ACTIVE, VIEW 페이지 명령어가 있는데요.

사실 V9938은 패턴맵 테이블, 스프라이트 패턴, Attrib 테이블 등도 바꿀 수 있습니다.

게임에서는 이런 테이블을 여러개로 만들어서 페이징을 하게 됩니다. 참고하세요~


도트 작업(막노동ㅋ)을 하다보면 언젠가는 끝이 납니다 ㅎ.ㅎ


그럼, 실제 화면에서는 패턴 그래픽과 스프라이트가 어떻게 나오는지 보시죠!






아마 나중에 동영상으로 보시면 확인되겠지만,

스프라이트의 레이어 우선순위도 오리지널과 똑같게 구성했습니다.

너구리가 앞쪽, 항아리/뱀은 중간에, 애벌레는 뒷쪽 레이어로 나옵니다 ㅎ.ㅎ


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


댓글 없음:

댓글 쓰기