يقوم هذا المشروع بعكس هندسة لعبة ZX Spectrum 48K الكلاسيكية من Denton Designs The Great Escape من صورة شريطية للعبة الأصلية إلى تفكيك HTML مرجعي ومشروح وكود مصدر التجميع الكامل، باستخدام SkoolKit.
The Great Escape هي لعبة هروب من السجن ثلاثية الأبعاد متساوية القياس لعام 1986 لـ 48K ZX Spectrum حيث تلعب دور أسير حرب يحاول الهروب من معسكر اعتقال نازي. إنها واحدة من أفضل ألعاب Spectrum شهرة وأريد أن أعرف كيف تمكن المؤلفون من تجميع كل هذا السحر في 48K ZX Spectrum.
اقرأ الإصدار الحالي من التفكيك هنا. إنها ليست مجرد قائمة تجميع: فقد قامت بفك تشفير رسومات اللعبة والشخصيات والعناصر والرسوم المتحركة وتفاصيل أخرى متنوعة حول طريقة عمل اللعبة.
لاحظ أن عملية التفكيك قد تتأخر عن رأس الشجرة المصدر: فقد لا تحتوي على أحدث التغييرات حتى أقوم بدفع الإصدار المحدث.
هدفي الأول هو بناء تفكيك موثق بالكامل للعبة. يتيح لنا SkoolKit إنشاء قائمة تجميع مشروحة مناسبة لإعادة بناء صورة دقيقة للعبة الأصلية وتفكيك مفصل مرجعي بتنسيق HTML.
والثاني هو تحويل التجميع المشروح إلى كود مصدر C والذي يتصرف تمامًا مثل اللعبة الأصلية. يوجد مشروع إعادة تنفيذ العمل قيد التنفيذ في هذا المستودع ويستمر المشروعان جنبًا إلى جنب.
SkoolKit هي مجموعة أدوات Python التي لا مثيل لها لتفكيك برنامج ZX Spectrum الذي كتبه ريتشارد ديموند.
بالإضافة إلى إنتاج تفكيك HTML المرجعي، يمكن لـ SkoolKit أيضًا إنتاج قائمة تجميع مشروحة. يمكننا استخدام هذا لإعادة تجميع اللعبة في ملف .TAP والذي يمكنك تحميله في المحاكي. يمكنك استخدامه لتغيير اللعبة وإصلاح الأخطاء التي عمرها 30 عامًا!
git clone https://github.com/dpt/The-Great-Escape.git
cd <cloned repo>
make disasm
إذا كان كل شيء على ما يرام، فسوف ترى مخرجات مثل:
$ 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
في متصفحك وتعمق فيه. make tap
build/TheGreatEscape.tap
make z80
بدلاً من ذلك لإنشاء صورة .z80 إذا كنت تفضل ذلك.ستستدعي أي من الخطوات المذكورة أعلاه خطوتها السابقة تلقائيًا.
make skool
- لإنشاء ملف .skoolTheGreatEscape.skool
make tap
build/TheGreatEscape.tap
في المحاكي الخاص بك إذا كانت ملفات skool لا تناسب ذوقك وتفضل قائمة التجميع العادية: فسوف يقوم make asm
ببناء build/TheGreatEscape.asm
. ويمكن بعد ذلك تمرير هذا إلى Pasmo، على سبيل المثال، لإنشاء ملف ثنائي.
اكتملت الآن الهندسة العكسية للعبة، ولكن سيستمر العمل على تحسين دقة وسهولة قراءة التفكيك.
إليكم شرائح العرض التقديمي الذي قدمته لزملائي حول المشروع في يناير 2016.
هناك أيضًا إصدار محدث مؤخرًا تمت كتابته لعرض تقديمي لعام 2020 حول المشروع لمجموعة مستخدمي ABug: http://abug.org.uk/index.php/2020/07/04/the-great-escape-risc -نظام التشغيل-التحويل-ديفيد-توماس/
في عام 2019، قمت بكتابة كبيرة حول المشروع على موقع الويب الخاص بي: http://www.davespace.co.uk/the.great.escape/