팩맨 킬스크린

Retro Game Mechanics Explained에서 올렸던 팩맨의 킬스크린 버그에 대한 영상. 팩맨에서는 레벨 256에 도달하면 버그가 일어나는데, 그 원리를 설명하고 있다.

화면 우하단에는 현재 레벨을 과일로 표시하는 레벨 카운터가 있는데 각 레벨마다 상징하는 아이콘이 주어져 있고 (레벨 13부턴 열쇠 모양으로 고정) 레벨을 올라가며 옆으로 밀어내는 식이다. 이는 위와 같은 간단한 알고리즘으로 구현된다. 레벨 L의 값이 오버플로 때문에 255에서 0으로 바뀌게 되면 Case A로 분류되고, 따라서 표시할 아이콘의 레인지 R은 [1,0]이 된다. 이는 곧 1번째, 2번째, 3번째, …, 255번째, 0번째 아이콘을 순서대로 표시하란 뜻이 됨.

아이콘 테이블은 $3B08에 2바이트씩 저장되어 있고, 앞의 1바이트는 그래픽(4개단위로 뭉침), 뒤의 1바이트는 팔레트를 뜻함.

따라서 $3B08에서부터 시작해 256개의 오브젝트를 표시하다보면 테이블 밖의 영역에 있는 다른 값(주로 음악과 사운드 이펙트)을 불러와 글리치 타일이 나타나는 것.

킬 스크린에서는 화면의 오른쪽이 깨지는데 이는 디스플레이를 표시할 때 하단 두줄을 오른쪽->왼쪽으로 훑고, 메인 게임 화면을 top to bottom then right to left로 훑기 때문에 레벨 표시가 시작되는 하단의 시작점인 $4004부터 시작해 순서대로 계속 잘못된 타일셋을 표시하도록 해서 오른쪽 화면까지 영향을 받는 것이다. 영상에서는 256개의 오브젝트를 순차적으로 표현해서 어떻게 버그 화면이 생성되는지를 보여주고 있다.

트윗 타래를 정리. (2017/11/04)

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중