게임을 공식적으로 리메이크를 하게되면, 원본 소스(코드, 그래픽 등)를 포팅(이식)하게 됩니다.
근데 비공식으로 리메이크하게되면, 원본 소스가 없으니 사실상 게임을 새로 만드는 것과 비슷합니다.
게임을 새로 기획하거나, 캐릭터를 새로 디자인하는게 아니니까,
간단한 게임의 리메이크라면... 프로그래머 한명으로도 가능합니다요.
제작하는데 시간이 많이 걸리느냐, 적게 걸리느냐 정도의 차이는 있겠네요 ㅎ.ㅎ
이 경우 리메이크의 완성도를 결정하는 것은,
프로그래머가 그 게임을 얼마나 잘 알고 있느냐의 정도라고 생각되네요.
그럼, Ponpoko 리메이크는 어떻게 진행하면 좋을까요?
늘 하던대로 눈카피? ㅎ.ㅎ
먼저 아래 스샷을 보시죠. MAME에서 실행하면 처음에 나타나는 게임정보입니다.
먼저, 리메이크를 만들 때 가장 중요한 부분은 비디오쪽입니다.
아무래도 게임에서 그래픽이 차지하는 비중이 높은데, 이게 쉽게 되면 좋죠 ㅎ.ㅎ
제가 지난글에서도 그래픽부터 언급한 이유가 그 때문입니다.
사실 이게 안되면 걍 포기해야됩니다요~~ㅋ
사운드 정보는 간단하게 남코의 96KHz H/W로 나오는데요.
보드 내부적으로는 파형샘플을 주파수에 맞춰 3개 채널을 믹스해서 최종 모노 오디오를 만듭니다.
결국 3채널짜리 SCC를 보드로 만들었다고 생각하시면 되겠네요.
SCC는 샘플램에 데이터를 매번 로딩해야하지만, Ponpoko는 롬샘플이라 CPU가 로딩할 필요가 없습니다.
지난글에서 구동환경을 MSX2 최소사양으로 잡았는데요.
만약 PSG 3채널로 그럭저럭 괜찮은 소리가 나온다면 좋겠네요 ㅎ.ㅎ
보통은 여기까지 생각하고 넘어갑니다만, 이번엔 하나를 더 봅시다요!
CPU 정보를 보니, 3MHz짜리 Z80 하나만 나와있네요?!
보통 오락실 기판에 Z80이 박혀있으면, 사운드 컨트롤 전용으로 쓰이는게 대부분인데요.
그게 아니면 여러개의 Z80 CPU가 들어있거나요.
근데 Ponpoko는 MSX의 3.58MHz 보다 느린 CPU입니다 ㅎ.ㅎ
이걸로 추측해볼 수 있는 것은...
CPU 로드가 낮다 -> H/W에 의존하는 그래픽, 사운드 외의 S/W 테크닉은 사용하지 않음!
네, 그냥 게임 로직을 돌리는거 외엔 별로 하는 일이 없다는 얘기입니다.
게임을 만들다보면 CPU 로드가 늘어나서 사양을 높이거나 다른 처리(그래픽, 사운드)를 삭제하게 되는데요.
Ponpoko 리메이크는 진짜 MSX2만으로 충분할 것 같은 느낌이라는거죠.
자! 그럼 작업을 시작합니다!!
너구리의 숏점프, 롱점프 움직임을 스샷으로 한프레임씩 잡고 데이터를 테이블로 정리!
적들(애벌레, 오리)의 프레임당 이동량을 확인! (참고로 애벌레는 속도가 다른 3종류가 나와요.)
이것만으로 힘들다면...?
MAME 디버그 창을 띄워놓고 프레임을 끊어서 변수값을 보거나,
소스를 수정해서 데이터를 직접 로그(파일)로 저장 등의 방법을 씁니다.
.
.
.
근데, 이번엔 이렇게 안했어요ㅋ
사실 로직이 워낙 단순해서 이렇게 해도 금방 만듭니다만...
방금 Ponpoko의 메인 CPU가 Z80이라고 했잖아요?
보통 게임을 눈카피하게 되면, 원작과 미세하게 차이가 나는 부분들이 생기게 마련입니다.
적 또는 아이템 충돌 범위가 다르거나, 점프할 때 적용되는 중력 가속도가 다르거나 등등이요.
만약 원본 코드를 가져다 쓸 수 있으면, 이 부분을 똑같이 구현할 수 있습니다.
공식 리메이크라면 소스를 가져와서 컴파일했겠지만,
이번 Ponpoko 리메이크는 비공식이니, 그냥 롬에 들어있는 Z80 머신코드를 가져다 쓰는거죠. (Z80 만세!)
그리고 이게 쉽게 되는 이유 중 하나가 더 있는데요.
Ponpoko의 주변 I/O는 모두 메모리맵 I/O이고 포트맵 I/O를 쓰지않습니다.
반대로 MSX는 대부분 주변 I/O가 포트맵 I/O이고 메모리맵 I/O들은 이미 슬롯으로 보호받고 있습니다.
그러니까 메모리맵 I/O만 잘 분리해주면, MSX에서 충돌하지 않는다는 얘기에요.
관련된 코드는 잘 정리(패치)를 해서 오동작하지 않도록 해주면 됩니다.
인터럽트 관련 코드도 마찬가지겠구요.
뭔가 일반적인 리메이크 작업과는 상당히 다르게 진행되는데요.
저도 이런식으로는 처음 해보는거라 꽤 재미있었습니다.
그럼, Ponpoko의 메인코드를 초간단 그래픽 에뮬을 넣어서 테스트해봅니다.
걸음마 떼는게 쉽게 되면, 나머지 구현은 시간문제니까요.
아래 스샷의 왼쪽은 MAME, 오른쪽은 MSX입니다.
MSX쪽은 스크린1을 212라인 모드로 전환해서 돌렸구요. 패턴 데이터는 BIOS 폰트 기본값입니다.
오른쪽 스샷을 매트릭스 네오의 눈으로 보면, 왼쪽이랑 똑같죠?ㅋㅋ
지난글의 댓글에서 제가 "느낌이 아케이드랑 99% 같을거에요. 이건 제가 보장합니다."라고 적었는데요.
왜 그런건지 이제 이해되시죠? ㅎ.ㅎ
그럼, 다음 편에서 이어집니다~
댓글 없음:
댓글 쓰기