DOS गेम F-15 Strike Eagle II रिवर्सिंग प्रोजेक्ट के लिए DOS टेस्ट पायलटों की भर्ती
(neuviemeporte.github.io)- 1989 के गेम F-15 Strike Eagle II के मूल बाइनरी को reverse engineer करके C source code को फिर से बनाने वाला प्रोजेक्ट अब वास्तविक play test चरण में पहुँच गया है
egame,endसहित सभी executable फ़ाइलों के code और data को C में स्थानांतरित कर दिया गया है, और अधिकांश assembly-only code के लिए C replacement implementation तैयार है- नवीनतम रिलीज़
v0.9.1में मूल गेम के451.03वर्ज़न और Desert Storm expansion pack के साथ मूल executable फ़ाइलों को बदलकर टेस्ट किया जा सकता है - नया executable settings screen से नहीं गुजरता और MCGA/VGA, बिना sound, बिना joystick की स्थिति मानकर चलता है, लेकिन mission briefing, flight और debriefing काम करने चाहिए
- चूँकि लक्ष्य मूल के bugs तक को सुरक्षित रखने वाला bug-for-bug reconstruction है, इसलिए मूल गेम में भी मौजूद व्यवहार अभी bug report का विषय नहीं है
C पुनर्निर्माण प्रोजेक्ट की प्रगति
- F-15 Strike Eagle II reconstruction एक hobby project है, जिसमें मूल बाइनरी को reverse engineer करके 1989 के इस गेम का C source code फिर से बनाया जा रहा है
- एक महीने से थोड़ा पहले तक ऐसा लग रहा था कि दूसरे executable
egameको C में लाने में अभी कई साल लगेंगे, और तीसरा executableendभी बाकी था - अब प्रोजेक्ट यहाँ तक पहुँच चुका है
- सभी executable फ़ाइलों का C code reconstruction पूरा
- सभी data को assembly से C में स्थानांतरित किया गया
- अधिकांश assembly-only code के लिए functionally equivalent C replacement implementation लिखी गई
- अधिकांश routines और data structures को अर्थपूर्ण नाम दिए गए
- निकट भविष्य में porting project के लिए repository branch पर विचार किया जाएगा
- reconstructed opcode मूल के प्रति वफ़ादार हैं या नहीं, यह tools से जाँचा जाता है, लेकिन data layout से जुड़े bugs पूरी तरह नहीं पकड़े जा सकते
- अब सिर्फ opcode match की जाँच से आगे बढ़कर वास्तव में चलने वाला गेम बनाए रखना है, इसलिए external testing की ज़रूरत है
टेस्ट करने का तरीका और किन समस्याओं की रिपोर्ट करें
- टेस्ट का लक्ष्य नवीनतम रिलीज़ v0.9.1 है
- मूल गेम के
451.03वर्ज़न और Desert Storm expansion pack वाले game folder में नए executable रखकर मूल executable फ़ाइलों को बदलना होगा- बदलने से पहले backup ज़रूर लें
- नए
f15.exeकी बजाय मूलf15.comचलने से रोकने के लिए मूलf15.comहटाना पड़ सकता है
- नया executable configuration screen में नहीं जाता
- यह MCGA/VGA display मानकर चलता है
- sound नहीं
- joystick नहीं
- टेस्ट के दौरान समस्या मिले तो उसे GitHub issue में रिपोर्ट किया जा सकता है
- crash
- graphic glitches
- key input का काम न करना
- ज़रूरत हो तो dosbox में
Ctrl+F5से लिया गया screenshot संलग्न करें - समस्या आने से पहले आपने क्या किया, यह लिखने से reproduction और fix में मदद मिलेगी
- इस प्रोजेक्ट का लक्ष्य bug-for-bug reconstruction है, इसलिए मूल गेम में मौजूद व्यवहार को बनाए रखना है
- मूल गेम में 3D objects के गायब हो जाने की समस्या, और उलटी स्थिति में fuel खत्म होने पर विमान का आसमान की ओर गिरने जैसी समस्याएँ हैं
- रिपोर्ट करने से पहले जाँच लेना बेहतर है कि क्या वही समस्या मूल गेम में भी होती है
1 टिप्पणियां
Hacker News की राय
DOS version खेलने योग्य है
पहला चरण पूरे गेम को assembler में reverse engineer करना था, और दूसरा चरण assembler को compiled C code में बदलना है ताकि binary एकदम वैसी ही रहे। यह काम DOS पर तब तक जारी रहेगा जब तक assembler code पूरी तरह हट नहीं जाता, उसके बाद Linux और Windows porting शुरू करने का इरादा है
reverse engineering में नए bug आ जाना आसान है, और इतने पुराने reverse-engineered code में सारे bug ढूँढना भी आसान नहीं, लेकिन अभी तक सब कुछ काम करता हुआ लग रहा है
अगर आपके पास F-15 version 451.03 है और Dosbox या असली DOS उपलब्ध है, तो खुले bug ढूँढकर बताइए
नवीनतम DOS release यहाँ मिल सकता है: https://github.com/neuviemeporte/f15se2-re/releases
f15_se2-*.zipफ़ाइलों में DOS गेम के लिए replacement executable शामिल हैAir Force needs YOU!
बस एक बहुत छोटी और निजी सी आपत्ति है, जिससे दूसरी branches फिर यह छेड़ेंगी कि मुझे chair कितनी पसंद है
Air Force दो शब्द हैं
मुझे नहीं लगता कि Linux port को लेकर ज़्यादा दबाव लेने की ज़रूरत है। emulator support इतना अच्छा और व्यापक है कि अगर यह वहाँ चल रहा है, तो उसे भी बड़ी सफलता माना जा सकता है
मैं सुविधा के लिए Lutris(https://lutris.net/) इस्तेमाल करता हूँ
लेकिन आप low-level चीज़ें पसंद करने वाले लगते हैं, तो हो सकता है कि यह अपने-आप में ही एक quest हो, न कि सिर्फ एक शानदार retro game चलाना
लेकिन मुझे चिंता है कि यह कानूनी रूप से कुल मिलाकर ठीक है या नहीं। इस पर आपकी राय जानना चाहूँगा
यह एक शुरुआती सवाल है। उम्मीद है नकारात्मक नहीं लगेगा
पुराने game को चलने लायक बनाने में समय लगाना वाकई अच्छी बात है, लेकिन मैं सोच रहा हूँ कि जिसे DOSbox जैसी चीज़ से emulate किया जा सकता है, उस game को decompile क्यों किया जाए। क्या इतने पुराने game बहुत कम-specced hardware पर भी ठीक से नहीं चलेंगे?
source code हो तो आप पूरे feature जोड़ सकते हैं, Windows 10 पर port कर सकते हैं, 4K HDR, texture, नए model, नई mission तक लागू कर सकते हैं। सीमाएँ लगभग खत्म हो जाती हैं
और hardcoded data offset वाले assembly instructions देखकर game का analysis करना सच में बहुत कठिन है। C code हो तो आप सीधे behavior पढ़ सकते हैं, या instrumentation/debugging code डालकर समझ सकते हैं
मैं file format document करना चाहता था, data खंगालकर unused media ढूँढना चाहता था, गंभीर bug पहचानकर ठीक करना चाहता था, modding tools बनाना चाहता था, और बचपन की किसी यादगार चीज़ को किन techniques से बनाया गया था यह समझना चाहता था
मैं modern systems पर उसे चलाने की friction कम करना चाहता था, और higher resolution या texture replacement जैसी optional improvements भी संभव बनाना चाहता था
आखिरकार उसे पूरा करने लायक धैर्य नहीं जुटा पाया, लेकिन अब लगता है कि शायद आज कर पाता
और ऐसे games अक्सर कई तरह के graphics और sound hardware पर चलने के लिए बनाए जाते थे, इसलिए drivers लगभग game के अंदर ही compiled होते थे
[0] https://github.com/keirf/greaseweazle
यह वह game है जिसे मैंने बचपन में बहुत खेला। F-19 Stealth Fighter, F-117A Nighthawk Stealth Fighter भी खेले थे, और आज पहली बार पता चला कि वे दोनों इस game के आसपास के समय में आए थे। F-14 Tomcat भी थोड़ा खेला था
अगर मैंने सही पढ़ा है, तो इसे चलाने के लिए original game files चाहिए होंगी। इसलिए लगता है कि मैं इस विमान को फिर उड़ाने से ज़्यादा development log पढ़ूँगा
मुझे याद है कि मैंने इसे 1980s के आखिर में Electronics Boutique से खरीदा था और घर के Packard Bell 286 पर खेला था। copy protection manual में विमान ढूँढकर पहचानने वाली थी, और नतीजा यह हुआ कि game में मौजूद सारे विमान मुझे याद हो गए
game खेलने के लिए मैंने Gravis Analog joystick भी खरीदी थी, और keyboard overlay अब भी मेरे पास है
मैं सच में इस game का modern reboot देखना चाहूँगा
मैं दोस्त को landline पर बार-बार फ़ोन करके modem settings मिलाता था, फिर उसे दोबारा कॉल करने को कहता, फिर game शुरू होता, फिर disconnect हो जाता, फिर क्या हुआ यह देखने के लिए दोबारा फ़ोन करना पड़ता
जब आखिरकार यह चल पड़ा, तो हम इतने लगातार खेलते रहे कि दोस्त की माँ ने कई-कई घंटों तक एकमात्र phone line घिरे रहने के कारण modem play पर रोक लगा दी
मैं दूसरे flight simulator या space simulator में भी ऐसा multiplayer ढूँढना चाहूँगा, और इस game को भी फिर चलाकर दोस्त को nostalgia के नाम पर फँसाना चाहूँगा
आजकल game porting अविश्वसनीय रूप से आसान हो गई है
https://robin.tooclever.org को API time के हिसाब से एक दिन से भी कम लगा
मैं सोच रहा हूँ कि symbol names के बिना decompiled project की structure समझने के लिए AI कितना उपयुक्त है
यह मेरा क्षेत्र नहीं है, लेकिन source map के बिना JavaScript structure की intent AI जितनी अच्छी तरह समझ लेता है, उसे देखकर मैं हैरान रहा हूँ
कुछ मामलों में यह tools के बिना भी बहुत भारी obfuscated control flow को सीधे समझ सकता है
अब इस पर YouTube video भी आ गई है: https://youtu.be/aIPKkOpIiF8
मेरा एक दोस्त F15 उड़ाता था, इसलिए मैंने यह उसे भेज दिया
ऐसे पुराने game communities अपनी पसंदीदा titles के लिए चार स्वतंत्रताएँ सुरक्षित करने में कमाल का काम करती हैं, और यह सच में प्रेरक है
मैंने यह नहीं खेला, लेकिन Jane's F/A-18 खेला है, और वह शानदार game था
मैंने उड़ान के दौरान Doppler map बनाकर उसे SLAM launch में इस्तेमाल करने में बहुत समय लगाया
यह Digital Integrations के Tornado के साथ एक शानदार simulator था, और Tornado को सच में reboot की ज़रूरत है