Just a Blog

MSX 게임 'Aleste 2' JAM(José Ángel Morente) 패치 버전의 치트키 수정 본문

Game

MSX 게임 'Aleste 2' JAM(José Ángel Morente) 패치 버전의 치트키 수정

wehong 2023. 10. 26. 19:52

'Aleste 2'는 MSX 플랫폼에서 개인적으로 손에 꼽는 비행 슈팅 게임이다. 화려한 그래픽과 사운드, 놀라운 고속 스크롤링, 적들의 다채로운 패턴 등 Compile의 저력이 느껴지는 게임이라 생각한다. 하지만 조금 아쉬운 부분들도 있는데, 몇 년 전 José Ángel Morente 라는 분이 이런 아쉬움의 일부를 보완하는 패치를 공개했다. 몇몇 특징을 간략히 소개하면 다음과 같다.

(1) 원래 플로피 디스크 3장의 게임인데, 이것을 단일한 ROM 이미지로 만들어 준다. 게임 도중 디스크를 갈아 끼우지 않아도 된다.

(2) 원래는 디스크 1번 데모 영상 부터 시작하면 게임의 난이도가 어렵게 맞춰지는데, 이것을 개선해 데모 영상부터 시작해도 낮은 레벨의 난이도로 시작한다(변수 초기화 문제라는 듯 하다). 낮은 난이도로 맞추기 위해 일부러 2번 디스크로 게임을 시작하곤 했었는데 그럴 필요가 없어졌다.

(3) 원래 게임에서 다수의 오브젝트들이 화면에 나타나면 게임이 느려지는 현상이 발생하는데, R800을 사용하는 TurboR에서 이를 감소시키도록 한다.

그 외에 빠른 CPU나 R800에서 구동 시 오류들도 수정되었다고 한다.

 

MSX Related / aleste2-rom · GitLab

Aleste 2 is a great game by Compile for the MSX2 (and upper) series of home computers. It was a sequel to "Aleste" and a precursor to "M.U.S.H.A."...

gitlab.com

 

사실 디스크 3장을 하나의 ROM 이미지로 만든 작업은 이전에도 있었다고 하고, 게임 난이도는 타이틀 화면에서 SELECT 버튼을 통해 선택할 수도 있으며, TurboR을 사용하지 않으면 R800 관련 패치는 의미가 없다. 그럼에도 개인적으로 이 패치를 적용해 보고 싶었던 이유는 추가적으로 내장된 치트 기능 때문이다. MSX 부팅 후 키보드의  'J', 'A', 'M' 키를 누르고 게임에 진입하면 게임 중 피격을 받아도 남은 대수(잔기, stock)가 줄지 않는다.

'Aleste 2'가 쉬운 게임은 아니라고 생각하기 때문에 치트 모드를 원했는데, 이 패치가 어느 정도 그런 것을 제공해 주고 있다. 'Aleste 2'는 피격 후 그 자리에서 바로 재시작 하기 때문에, 이러한 방식의 치트도 소위 '무적(invincible)'이라고 하는 방식과 비슷한 편리함을 준다.

 

문제는 이렇게 패치된 ROM 이미지를 실기가 아닌 MiSTer의 MSX 또는 MSX1 코어에서 구동할 때 발생할 수 있다. 이전에 'MiSTer를 사용해 오면서 MiSTer에 아쉬운 점들'라는 글에서도 언급했지만 MiSTer에서 사용하는 USB 키보드의 키 입력 특징 때문에, 일반적인 USB 키보드를 사용하는 경우 부팅 후 게임 시작 시 까지 'J', 'A', 'M' 키가 동시에 입력되지 않을 수 있는 것이다.

 

[MiSTer FPGA] MiSTer를 사용해 오면서 MiSTer에 아쉬운 점들

MiSTer를 사용한지 얼추 만 3년이 넘었다. MiSTer를 열정적으로 사용하시는 다른 분들에 비해 능숙하고 세련되게 잘 사용했다고 하기는 어렵지만, FPGA 재구현 방식이 레트로 게임 콘솔들 또는 레트

wehong.tistory.com

개인적으로 MiSTer에 붙여 사용하던 'EK807G' 키보드와 'EQwear-Q30' 키보드에서는 'J', 'A', 'M' 키 동시 입력이 되지 않았다('N-키 롤 오버'를 지원하는 'FKBN87MC' 키보드를 사용하니 입력되기는 했다).

 

그래서 패치 파일의 일부를 바꿔서 시작시 'J'키만 누르고 있어도 게임 내에서 피격 시 남은 대수가 줄지 않도록 해 보았다. 변경한 것은 'aleste2.asm' 파일 내용 중 일부이다. 기존에 다음과 같은 내용의 'checkCheat' 부분을...

checkCheat:
                ld      a,3     ;'J'
                call    SNSMAT
                cp      #7f     ;bit     7,a
                ret     nz
                ld      a,2
                call    SNSMAT
                cp      #bf     ;bit     6,a
                ret     nz
                ld      a,4
                call    SNSMAT
                cp      #fb     ;bit     2,a
                ret     nz
                ld      a,1                
                ld      (CHEAT),a

다음으로 변경했다(즉, 'J' 키 이외의 확인 부분 삭제).

checkCheat:
                ld      a,3     ;'J'
                call    SNSMAT
                cp      #7f     ;bit     7,a
                ret     nz
                ld      a,1                
                ld      (CHEAT),a

 

MSX1(MSX2test 브렌치) 코어에서 시작시 'J' 키를 누르고 있으니 해당 치트가 동작했다. 빌드 작업도 그럭저럭 되었는지, 일단 4 스테이지를 넘어 중간 영상이 나오는 부분까지 잘 플레이 되었다.

 

Comments