
ZX Spectrum용 Chase H.Q. — 리버스 엔지니어링을 거쳐 이식 가능한 C 언어로 재구성됨
David Thomas의 리버스 엔지니어링, 2023-2024
프로젝트 시작: 2023년 3월

이것은 Ocean Software의 Chase H.Q. ZX Spectrum 버전에 대한 진행 중인 디스어셈블리입니다. 현재까지는 48K 버전과 게임의 첫 번째 스테이지만 다룹니다. 128K 버전이 더 낫지만(모든 레벨을 한 번에 로드하고, AY 음악과 메뉴 화면 애니메이션이 있음) 고려해야 할 코드가 훨씬 많기 때문에 먼저 48K 스테이지 1부터 시작하는 것이 더 쉽습니다.
참고: 현재 "128k" 브랜치에서 128K 버전 작업 중입니다.
이 저장소에는 게임을 디스어셈블하는 데 사용할 수 있는 SkoolKit 컨트롤 파일이 있습니다. 이 파일은 게임이 "원본 그대로" 막 로드된 상태일 때 작동합니다. 원본 스냅샷을 만드는 방법과 SkoolKit 사용 방법은 아래를 참조하세요. 필요한 대부분의 단계를 자동화하는 Makefile을 제공했습니다.
현재 디스어셈블리는 여기에서 볼 수 있습니다.
어떻게 작동하는지 알아내기 위해서입니다! (그리고 언젠가는 새로운 레벨을 만들 수도 있겠죠...)
pip3 install skoolkit
make pristine
그러면 다음과 같이 표시됩니다:
Downloading https://worldofspectrum.net/pub/sinclair/games/c/ChaseH.Q..tzx.zip
Extracting Chase HQ - Side 1.tzx
Program: CHASE HQ
Fast loading data block: 23755,3870
Data (514 bytes)
Data (6914 bytes)
Data (19074 bytes)
Data (16130 bytes)
Data (4 bytes)
Data (6898 bytes)
Tape finished
Simulation stopped (PC at start address): PC=23372
Writing chase-hq.z80
다음과 같이 스쿨(skool) 파일을 빌드:
make skool
스쿨 파일은 일반 어셈블리 목록이나 HTML 디스어셈블리를 생성할 수 있는 고수준 어셈블리 목록입니다. 생성된 파일은 기본적으로 'build'라는 디렉터리에 저장됩니다. 스쿨 파일을 편집한 후 다음과 같이 다시 컨트롤 파일로 변환할 수 있습니다:
make ctl
이렇게 하면 다음과 같이 변경 사항을 기본 컨트롤 파일로 쉽게 다시 가져올 수 있습니다:
cp build/ChaseHQ.ctl ChaseHQ.ctl
또는 두 파일을 diff하여 스테이징을 더 선택적으로 할 수 있습니다.
컨트롤 파일이 더 크고 상세할수록 게임에 대한 설명이 더 좋아집니다!
다음과 같이 어셈블리 목록을 빌드:
make asm
저는 보통 컨트롤, 스쿨, 어셈블리 파일 세 개를 모두 열어 두고 편집하면서 변경 사항의 영향을 확인합니다:

다음과 같이 에뮬레이터나 실제 Spectrum에 로드하기 위한 tap 또는 z80 파일을 빌드:
make tap # or z80
아마 두 가지를 모두 해야 할 것입니다.
게임이 백 버퍼를 어떻게 구성하는지 알아내기 위해 Spectrum Analyser를 실행하는 짧은 영상은 https://youtu.be/ZcoFi4T4tsU 에서 볼 수 있습니다.
디스어셈블리 자체에 관심이 없다면, 게임을 더 쉽게, 더 어렵게, 또는 그냥 다르게 만드는 POKE가 좋은 부산물이 될 것입니다:
무한 크레딧
POKE 39998,166
무한 시간
POKE 39937,0
체포까지 1회 적중
POKE 46351,62
무한 터보
POKE 45221,0
차량 스폰율 변경
POKE 23834,<스폰율> -- 20은 스테이지 1의 기본값입니다. 10은 두 배 더 자주 스폰됩니다.
레벨 색상 설정
POKE 23796,<속성 바이트> -- 112는 스테이지 1과 같이 노란색 바탕에 검은색입니다. 96은 녹색 바탕에 검은색이 됩니다.
POKE 23797,<속성 바이트>
Spectrum Computing 포럼 스레드: https://spectrumcomputing.co.uk/forums/viewtopic.php?p=113633
Chase H.Q. 온라인으로 플레이: http://torinak.com/qaop#!chasehq
이전 디스어셈블리 프로젝트: https://github.com/dpt/The-Great-Escape