
ZX Spectrum के लिए Chase H.Q. — रिवर्स-इंजीनियर्ड और पोर्टेबल C में पुनर्निर्मित
डेविड थॉमस द्वारा रिवर्स इंजीनियरिंग, 2023-2024
परियोजना प्रारंभ: मार्च 2023

यह Ocean Software द्वारा Chase H.Q. का ZX Spectrum रूपांतरण का एक प्रगति-पर विघटन (disassembly) है। अब तक इसमें केवल 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
इस प्रकार एक स्कूल फ़ाइल बनाएँ:
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,<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