
Chase H.Q. for ZX Spectrum — リバースエンジニアリングされ、移植可能なC言語で再構築された
David Thomasによるリバースエンジニアリング、2023-2024年
プロジェクト開始: 2023年3月

これはOcean SoftwareによるZX Spectrum版Chase H.Q.の進行中の逆アセンブルです。今のところ、これは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
skoolファイルは高水準のアセンブリリストであり、そこから通常のアセンブリリストやHTMLの逆アセンブルを生成できます。生成されたファイルは、デフォルトでは'build'というディレクトリに置かれます。skoolファイルを編集して、次のように別のコントロールファイルに戻すこともできます:
make ctl
これにより、次のようにして変更をメインのコントロールファイルに簡単に反映できます:
cp build/ChaseHQ.ctl ChaseHQ.ctl
または、2つをdiffして、ステージングをより選択的にすることもできます。
コントロールファイルが大きく詳細になるほど、ゲームの説明も向上します!
次のようにアセンブリリストをビルド:
make asm
私は通常、コントロール、skool、アセンブリの3つのファイルをすべて開いた状態で編集し、変更の影響を確認しています:

エミュレータや実機の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,<spawn rate> -- 20はステージ1のデフォルトです。10にすると出現頻度が2倍になります。
レベルの色を設定
POKE 23796,<attribute byte> -- 112はステージ1と同様に黄色地に黒です。96にすると緑地に黒になります。
POKE 23797,<attribute byte>
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