
Chase H.Q. لنظام ZX Spectrum — تمت هندستها عكسيًا وإعادة بنائها بلغة C محمولة
هندسة عكسية بواسطة David Thomas، 2023-2024
بدأ المشروع: مارس 2023

هذا تفكيك قيد الإعداد لـ تحويل لعبة Chase H.Q. إلى ZX Spectrum بواسطة Ocean Software. حتى الآن يغطي هذا إصدار 48K والمرحلة الأولى فقط من اللعبة. إصدار 128K أفضل (يحمّل جميع المراحل دفعة واحدة، ويحتوي على موسيقى AY ورسوم متحركة لشاشة القائمة) لكنه يحتوي على شيفرة أكثر بكثير يجب أخذها في الاعتبار، لذا من الأسهل البدء بإصدار 48K ومن المرحلة الأولى أولاً.
ملاحظة: أعمل حالياً على إصدار 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
أو يمكنك مقارنة الملفين بأمر diff لتكون أكثر انتقائية في تجهيز التغييرات.
كلما كبر ملف التحكم وازدادت تفاصيله، كان شرحنا للعبة أفضل!
أنشئ قائمة تجميع كما يلي:
make asm
عادةً ما أحرر والملفات الثلاثة — ملف التحكم وملف skool وملف التجميع — مفتوحة جميعها لأتمكن من التحقق من تأثير تغييراتي:

أنشئ ملف tap أو z80 لتحميله في المحاكيات أو أجهزة Spectrum الحقيقية كما يلي:
make tap # or z80
ستحتاج على الأرجح إلى القيام بالأمرين معاً.
شاهد https://youtu.be/ZcoFi4T4tsU للحصول على فيديو قصير لي وأنا أشغّل Spectrum Analyser لمعرفة كيف تبني اللعبة مخزونها المؤقت الخلفي (back buffer).
إذا لم تكن مهتماً بالتفكيك نفسه، فثمة نتيجة جانبية لطيفة: POKEs تجعل اللعبة أسهل أو أصعب أو مختلفة فقط.
اعتمادات لا نهائية
POKE 39998,166
وقت لا نهائي
POKE 39937,0
ضربة واحدة للقبض
POKE 46351,62
تيربو لا نهائي
POKE 45221,0
التحكم في معدل ظهور السيارات
POKE 23834,<spawn rate> -- 20 هو الإعداد الافتراضي للمرحلة 1. 10 سيجعل السيارات تظهر بمعدل ضعف.
ضبط لون المرحلة
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