Proyek ini merekayasa balik game ZX Spectrum 48K klasik Denton Designs, The Great Escape, dari gambar rekaman game asli ke dalam pembongkaran HTML yang direferensikan dan diberi anotasi serta kode sumber perakitan lengkap, menggunakan SkoolKit.
The Great Escape adalah game pembobolan penjara 3D isometrik tahun 1986 untuk 48K ZX Spectrum tempat Anda memainkan POW yang mencoba melarikan diri dari kamp penjara nazi. Ini adalah salah satu game Spectrum yang paling dihormati dan saya ingin tahu bagaimana penulisnya berhasil mengemas semua keajaiban itu ke dalam 48K ZX Spectrum.
Baca versi pembongkaran terkini di sini. Ini bukan hanya daftar perakitan: ia telah menguraikan grafik game, karakter, item, animasi, dan berbagai detail lainnya tentang cara kerja game.
Perhatikan bahwa pembongkaran mungkin tertinggal di belakang pohon sumber: mungkin tidak menampilkan perubahan terbaru sampai saya mendorong versi yang diperbarui.
Tujuan pertama saya adalah membuat pembongkaran game yang terdokumentasi sepenuhnya. SkoolKit memungkinkan kita membuat daftar perakitan beranotasi yang cocok untuk membangun kembali gambar persis dari game asli dan pembongkaran referensi silang mendetail dalam format HTML.
Yang kedua adalah mengubah perakitan beranotasi menjadi kode sumber C yang berperilaku persis seperti game aslinya. Proyek implementasi ulang yang masih dalam proses berada di repositori ini dan kedua proyek tersebut berjalan secara bersamaan.
SkoolKit adalah toolkit Python tiada tara untuk membongkar perangkat lunak ZX Spectrum yang ditulis oleh Richard Dymond.
Selain menghasilkan pembongkaran HTML referensi silang, SkoolKit juga dapat menghasilkan daftar perakitan beranotasi. Kita dapat menggunakan ini untuk merakit kembali game menjadi file .TAP yang dapat Anda muat ke dalam emulator. Anda dapat menggunakannya untuk mengubah permainan dan memperbaiki bug berusia 30 tahun!
git clone https://github.com/dpt/The-Great-Escape.git
cd <cloned repo>
make disasm
Jika semuanya baik-baik saja, Anda akan melihat output seperti:
$ make disasm
tap2sna.py --output-dir build @TheGreatEscape.t2s && mv build/TheGreatEscape.z80 build/TheGreatEscape.pristine.z80
Downloading http://www.worldofspectrum.org/pub/sinclair/games/g/GreatEscapeThe.tzx.zip
Extracting The Great Escape.tzx
Writing build/TheGreatEscape.z80
mkdir -p build
sna2skool.py --hex --sft TheGreatEscape.sft build/TheGreatEscape.pristine.z80 > TheGreatEscape.skool
Using skool file template: TheGreatEscape.sft
skool2html.py --hex --asm-labels --rebuild-images TheGreatEscape.skool
Using ref files: TheGreatEscape.ref, TheGreatEscapeBugs.ref, TheGreatEscapeChangelog.ref, TheGreatEscapeFacts.ref, TheGreatEscapeGame.ref, TheGreatEscapeGlossary.ref, TheGreatEscapeGraphics.ref
Parsing TheGreatEscape.skool
Output directory: build/TheGreatEscape
Copying /usr/local/lib/python3.7/site-packages/skoolkit/resources/skoolkit.css to skoolkit.css
Copying TheGreatEscape.css to TheGreatEscape.css
Copying static-images/BarbedWire.png to static-images/BarbedWire.png
Copying static-images/GameWindow.png to static-images/GameWindow.png
Copying static-images/JoystickControls.png to static-images/JoystickControls.png
Writing disassembly files in asm
Writing maps/all.html
Writing maps/routines.html
Writing maps/data.html
Writing maps/messages.html
Writing maps/unused.html
Writing buffers/gbuffer.html
Writing reference/bugs.html
Writing reference/changelog.html
Writing reference/facts.html
Writing reference/glossary.html
Writing graphics/glitches.html
Writing Intro.html
Writing Controls.html
Writing Completion.html
Writing Characters.html
Writing Items.html
Writing Masks.html
suggested width 17 > actual 16
Writing RoomObjects.html
Writing Rooms.html
Writing Map.html
Writing index.html
build/TheGreatEscape/index.html
di browser Anda dan selami. make tap
akan membangun build/TheGreatEscape.tap
make z80
untuk membuat image .z80 jika Anda mau.Salah satu langkah di atas akan menjalankan langkah sebelumnya secara otomatis.
make skool
-- untuk membuat file .skoolTheGreatEscape.skool
make tap
build/TheGreatEscape.tap
di emulator Anda Jika file skool tidak sesuai dengan selera Anda dan Anda lebih memilih daftar perakitan reguler: make asm
akan membangun build/TheGreatEscape.asm
. Ini kemudian dapat diteruskan ke Pasmo, misalnya, untuk membuat biner.
Rekayasa balik permainan kini telah selesai, namun pekerjaan akan terus dilakukan untuk meningkatkan keakuratan dan keterbacaan pembongkaran.
Berikut slide presentasi yang saya sampaikan kepada rekan-rekan saya tentang proyek tersebut pada bulan Januari 2016.
Ada juga versi yang lebih baru diperbarui yang ditulis untuk presentasi tahun 2020 tentang proyek tersebut kepada kelompok pengguna ABug: http://abug.org.uk/index.php/2020/07/04/the-great-escape-risc -os-konversi-david-thomas/
Pada tahun 2019 saya membuat artikel besar tentang proyek ini di situs web saya: http://www.davespace.co.uk/the.great.escape/