3 पॉइंट द्वारा GN⁺ 2024-05-09 | 1 टिप्पणियां | WhatsApp पर शेयर करें

NES Tetris में नया कोड मिला

  • हैकर्स ने गेम के भीतर ही NES Tetris को फिर से प्रोग्राम करने का तरीका खोज लिया है
  • यह तरीका गेम समाप्ति पर होने वाले crash से बचने की कोशिश कर रहे high-score चेज़र्स के लिए मददगार हो सकता है

कोड चलाने का तरीका

  • NES Tetris के "kill screen" का इस्तेमाल कर memory को manipulate करने की एक जटिल विधि से बिना संशोधित hardware और cartridge पर चल रहे Tetris वर्ज़न में नया व्यवहार कोड किया जा सकता है
  • Super Mario World, Paper Mario, The Legend of Zelda: Ocarina of Time जैसे गेम्स में भी इसी तरह के "arbitrary code execution" glitch पहले पाए जा चुके हैं
  • NES Tetris में बाहरी कोड लाने का बुनियादी तरीका कम से कम 2021 से सार्वजनिक रूप से सैद्धांतिक रूप में चर्चा में रहा है
  • यह तरीका विस्तार से बताता है कि Tetris की high-score table को machine code instructions की तरह पढ़ना कैसे शुरू कराया जाए

कंट्रोलर पोर्ट के साथ दिलचस्प प्रयोग

  • NES Tetris में crash तब होता है जब गेम का score processor frames के बीच नया स्कोर निकालने में बहुत ज़्यादा समय ले लेता है
  • जब यह देरी होती है, तो control code का एक हिस्सा नए frame-writing routine द्वारा बीच में रुक जाता है और अनजाने में RAM के किसी और हिस्से पर jump करके अगला instruction ढूंढने लगता है
  • जापानी वर्ज़न कंसोल Famicom पर चलने पर Tetris संभावित input को जिस तरह संभालता है, उसकी वजह से खिलाड़ी इस jump को manipulate कर सकते हैं

high-score table में कोडिंग

  • Displaced Gamers की jump-control विधि के लिए खिलाड़ियों को तीसरे कंट्रोलर पर "ऊपर" और चौथे कंट्रोलर पर दायां, बायां और नीचे दबाकर रखना होता है
  • ऐसा करने पर jump code गेम की high-score list के नाम और स्कोर स्टोर करने वाले RAM क्षेत्र में भेजा जाता है, जिससे खिलाड़ियों को अपने नियंत्रण में एक बड़ा RAM surface मिल जाता है
  • high-score table के लक्षित हिस्से में "(G" डालने से गेम को high-score table के किसी दूसरे हिस्से पर jump करने के लिए मजबूर किया जा सकता है
  • इसके बाद नाम और स्कोर NES CPU के लिए opcode के रूप में क्रमवार पढ़े जाने लगते हैं
  • हालांकि नाम इनपुट क्षेत्र में इस्तेमाल किए जा सकने वाले symbols सिर्फ 43 हैं और high score का हिस्सा बन सकने वाले अंक केवल 10, इसलिए उपलब्ध NES opcode instructions में से केवल कुछ को ही high-score table में "कोड" किया जा सकता है
  • battery-backup save system न होने की वजह से हैकर्स को हर बार Tetris शुरू करते समय ये high scores हाथ से हासिल करने और जटिल नाम दर्ज करने पड़ते हैं

GN⁺ की राय

  • यह हैरान करने वाली बात है कि Tetris के NES वर्ज़न में ऐसी छिपी हुई क्षमता मौजूद थी। लगता है उस समय यह खोज नहीं हो पाई थी, और अब कई दशक बाद इसका सामने आना और भी दिलचस्प है।
  • Famicom के expansion port का इस्तेमाल करके ऐसा hack संभव होना भी रोचक है। भले ही Nintendo ने यह इरादतन नहीं किया होगा, लेकिन इससे NES की तुलना में फीचर-समृद्ध Famicom की खूबियां ज़रूर सामने आती हैं।
  • ऐसे bug का इस्तेमाल करके उल्टा crash रोकने वाला code डालने का विचार भी काफ़ी चतुर है। सैद्धांतिक रूप से यह gameplay को जारी रखने देता है, इसलिए high-score चुनौती में यह बहुत मददगार हो सकता है।
  • लेकिन इस तरीके को इस्तेमाल करने के लिए हर बार गेम शुरू करते समय जटिल setup करना पड़े, यह असुविधाजनक लगता है। व्यावहारिक इस्तेमाल के लिए इसे और automated बनाने का तरीका चाहिए होगा।
  • कुल मिलाकर, यह तरीका सामान्य खिलाड़ियों की तुलना में high-score के शौकीनों या programming में रुचि रखने वालों को ज़्यादा आकर्षित करेगा। इसका व्यापक उपयोग होना मुश्किल लगता है।

1 टिप्पणियां

 
GN⁺ 2024-05-09
Hacker News टिप्पणियाँ

सारांश:

  • Stross के उपन्यास 'Accelerando' में आया यह विचार कि "space-time fabric को hack करके उसके नीचे क्या है, यह पता लगाना" ultimate hacking का लक्ष्य है, इस exploit की याद दिलाता है।
  • बिना किसी व्यावहारिक उद्देश्य के, सिर्फ मज़े के लिए कुछ करने वाली hacker spirit अपने भीतर न होने पर शर्म महसूस होती है।
  • NES cartridge ROM से चलती है, लेकिन यह exploit CPU को उस RAM पर jump करने देता है जिसका इस्तेमाल high score table स्टोर करने के लिए होता है।
  • कोई सोच रहा है कि Tetris में Doom चलाने में कितना समय लगेगा।
  • Factorio के अंदर belts से एक विशाल computer बनाकर segmentation fault कराना और game से बाहर निकलना चाहने की बात की गई।
  • लगता है समय बहुत अच्छे से बर्बाद किया गया।
  • पुराने games में ACE की खोज बहुत दिलचस्प लगती है। कुछ साल पहले Super Mario World में इसे देखकर यह कैसे संभव है, इसी में अटका रह गया था।
  • यह अच्छा लगता है कि बेहद चतुर लोग पूरी तरह बेकार चीज़ों पर इतना समय और मेहनत लगाते हैं।
  • अभी NES Tetris में code inject करने का कोई खास कारण नहीं है, लेकिन बात वही नहीं है। असली बात यह पता लगाना है कि क्या-क्या संभव है, और पुराने code व primitive computers से क्या कराया जा सकता है।
  • हैरानी होती है कि Tetris को इस तरह टूटने में इतना समय लगा। यह game ending/credits को जितनी जल्दी हो सके चलाने पर केंद्रित any% runs के एक नए युग का संकेत हो सकता है।
  • Ocarina of Time में वर्षों से ACE exploits रहे हैं। game memory को manipulate करके और कुछ खास entrance warps को edit करके उसे सिर्फ कुछ मिनटों में "complete" किया जा सकता है, इतना ज़्यादा वह टूट चुका है।
  • सबसे हैरान करने वाली बात यह है कि लोग सिर्फ कुछ buttons और analog joystick की मदद से हाथों-हाथ memory edit कर लेते हैं।
  • arbitrary code execution संभव हो जाना, उसके बाद आप उससे क्या करते हैं उससे हमेशा ज़्यादा दिलचस्प होता है।
  • game को disassemble करके यह पता लगाना कि यह सब कब और कहाँ करना है, और अगला instruction डालने के लिए कहाँ manipulation किया जा सकता है, वाकई सम्मान के लायक समर्पण है।
  • 2024 में NES/SNES पर समय लगाना ऐसा महसूस कराता है जैसे यह इस बात का सबूत हो कि Nintendo ने बच्चों पर अनैतिक mind control/psychological tricks का इस्तेमाल किया था।
  • इन लोगों में प्रतिभा है, और फिर भी ऐसा नहीं लगता कि इस project को चुनने का कोई तार्किक कारण था।