- original Xbox के लिए Halo 2 HD patch एक ऐसा प्रोजेक्ट है जिसमें executable modification, console hardware modding, और benchmark tool development को जोड़कर 480p से आगे 720p और 1080p rendering की कोशिश की गई
- मौजूदा Halo 2, 480p लेबल होने के बावजूद, अंदरूनी रूप से 640×480 back buffer पर draw करता था और फिर GPU उसे 720×480 तक upscale करता था, इसलिए HD support के लिए D3D buffer और video mode handling दोनों बदलने पड़े
- 720p चलाने के लिए डिफ़ॉल्ट 64MB RAM पर्याप्त नहीं थी, इसलिए 128MB RAM upgrade और kernel hot patch की ज़रूरत पड़ी, साथ ही GPU के लिए contiguous physical memory को upper 64MB में भी allocate करने के लिए limit bypass करनी पड़ी
- performance को triple buffering, texaccum render target tiling, और GPU 233.33MHz→300MHz overclock जैसे तरीकों से बेहतर किया गया, और Zanzibar benchmark scene लगभग 19FPS से बढ़कर 27~28FPS तक पहुंच गया
- अतिरिक्त RAM का इस्तेमाल texture·geometry cache बढ़ाने और HDD transfer speed सुधारने में भी हुआ, और अंतिम patch ने 720p को व्यावहारिक रूप से उपयोग योग्य बना दिया, जबकि 1080p ज़्यादातर screenshot bonus जैसा रहा
प्रोजेक्ट का लक्ष्य और hardware आधार
- लक्ष्य original Xbox वर्ज़न Halo 2 में HD resolution support जोड़ना और यह देखना था कि modded console hardware आखिर कितनी दूर तक जा सकता है
- काम के दायरे में game patching, Xbox console hardware modification, और performance benchmarking के लिए custom tool लिखना शामिल था
- इस प्रोजेक्ट का आधार बना modded Xbox, जिसे “god box” कहा गया, और इसमें ये बदलाव शामिल थे
- डिफ़ॉल्ट 733MHz Pentium 3 CPU को custom interposer board के जरिए 1.4GHz Pentium 3 variant CPU से बदलना
- CPU को लगभग 2GHz तक overclock किया जा सकता था
- अतिरिक्त RAM और SSD का उपयोग
- hardware modifications को support करने वाला custom kernel या BIOS image उपयोग करना
- Halo 2 की अधिकतम supported video resolution 480p थी, और लक्ष्य 720p तथा संभव हो तो 1080i support जोड़ना था
- resolution बढ़ाने पर pixel shader calculation बढ़ती है और GPU load भी बढ़ता है, इसलिए यह काम तभी सार्थक माना गया जब GPU overclocking संभव हो
- बाद में GPU को लगभग 15% overclock करना संभव हुआ, और “GENESIS-3” console development के लिए तैयार किया गया
Halo 2 का 480p और internal rendering structure
- Halo 2 बॉक्स पर 480p support लिखा होने के बावजूद, D3D present parameter में
D3DPRESENTFLAG_PROGRESSIVEसेट नहीं था और screen size scale भी हमेशा1.0fथा - internal
screen_boundsvideo mode से अलग हमेशा 640×480 पर सेट होता था- original Xbox में 480p को 720×480 माना जाता है
- Halo 2, 640×480 back buffer पर render करने के बाद GPU से उसे 720×480 तक upscale कराकर video encoder को भेजता था
- widescreen mode में 1.33:1 anamorphic camera का उपयोग होता था, जो उसी 640×480 surface पर ज्यादा चौड़ा दृश्य compress करके render करता था
- संभव है यह तरीका TV के stretch mode में horizontal compression को offset करने के लिए रहा हो
- patch में anamorphic scaling बंद करने का विकल्प भी जोड़ा गया
HD rendering के लिए D3D patch
- resolution support के लिए तीन functions मुख्य modification target बने
_rasterizer_detect_video_mode: 720p में भी progressive scan enable रहे, इसके लिए बदलाव_rasterizer_init_screen_bounds: video mode के अनुसार 640×480, 720×480, 1280×720, 1920×1080 size सेट करनाrasterizer_device_initialize: D3D back buffer और present flag सेट करना
- 1080i mode में screen width 1920 होने की पुष्टि के बाद
D3DPRESENTFLAG_PROGRESSIVEहटाकरD3DPRESENTFLAG_INTERLACEDसेट किया गया - शुरुआती बदलावों के बाद main menu में blue filter गायब हो गया, और repeating stripes तथा water geometry clipping जैसी समस्याएँ दिखीं
- कुछ समस्याएँ back/front/depth buffer के लिए hardcoded 640×480 view की वजह से थीं
- एक ही memory को अलग width से देखने वाले texture/surface view बन रहे थे, जिससे scan line placement बिगड़ रहा था
D3D memory और render target पुनर्गठन
- original Xbox में CPU और GPU एक ही RAM इस्तेमाल करते हैं, यानी यह unified memory architecture है
- PC की तरह VRAM में D3D allocation बनाकर GPU द्वारा managed structure नहीं है
- CPU texture, render target, vertex buffer जैसी memory बनाकर सीधे GPU को address दे सकता है
- Halo 2 लगभग 25 render target इस्तेमाल करता है, लेकिन वास्तविक unique buffer allocation सिर्फ 4~5 ही हैं
- कई render target, memory बचाने के लिए एक ही memory को अलग resource view के रूप में share करते हैं
rasterizer_primary_targets_initializeD3D द्वारा बने back/front/depth buffer से अतिरिक्त render target और texture view बनाता था, और इसमें 640×480 size hardcode थी- patch ने इस function को hook से wrap किया और original function चलने के बाद texture/surface size को मौजूदा back buffer resolution के अनुसार बदला
- tiled memory का pitch सामान्य
width * bppसे अलग हो सकता है, इसलिएD3D_CalcTilePitchसे गणना की गई - गलत pitch खासकर 1080i में stripe effect पैदा कर सकता था
- tiled memory का pitch सामान्य
texaccum render target size में सुधार
- main menu में water geometry clipping की वजह यह थी कि texaccum render target 640×480 पर fixed था
- Xbox DirectX implementation एक pixel shader pass में केवल 4 texture sampling की अनुमति देता है
- 4 से अधिक input texture की ज़रूरत वाले object को कई passes में render करना पड़ता है
- texaccum layer पहले detail textures को combine करती है और फिर lightmap pass के input के रूप में काम करती है
rasterizer_targets_initializetexaccum render target को 640×480 पर allocate कर रहा था_rasterizer_alloc_and_create_render_targetको hook से wrap करकेtarget_index == 1वाले texaccum target की width और height को current back buffer size में बदला गया- इस बदलाव के बाद water geometry clipping गायब हो गई और map loading के दौरान दिखने वाली rendering समस्याएँ भी खत्म हो गईं
- blue filter समस्या केवल size check update से ठीक हो गई, लेकिन विस्तृत प्रक्रिया नहीं बताई गई
720p चलाने से रोकने वाली memory limit
- 720p पर सेट करने से game startup पर crash हो जाता था, क्योंकि बड़े front/back/depth buffer और rasterizer target के कारण memory कम पड़ रही थी
- original Xbox में consumer 64MB RAM model और development 128MB RAM dev kit/debug console दोनों थे
- retail board पर अतिरिक्त RAM chip के लिए जगह मौजूद थी
- RAM chip solder करके और modified kernel उपयोग करके अतिरिक्त 64MB access की जा सकती थी
- 720p या उससे ऊपर चलाने के लिए 128MB RAM upgrade ज़रूरी था
- सामान्य 480p को भी RAM upgrade के बिना चलाने के लिए game के in-memory texture cache से memory लेनी पड़ती, जिससे texture pop-in बढ़ जाता
Halo 2 memory manager patch
- Halo 2 startup पर उपलब्ध 64MB में से लगभग 48.9MB को एक बड़े runtime data region के रूप में allocate करता है
- यह region level metadata, texture, geometry, animation, sound cache, rasterizer target, network/simulation resources आदि में बाँटा जाता है
- memory usage visualization के लिए XboxImageGrabber बनाया गया
- page table entry को traverse करके RAM usage state को bitmap के रूप में visualize किया गया
- runtime data region एक hardcoded address 0x80061000 पर allocate होता था
- map file का tag data इसी base address के आधार पर serialize होता है, इसलिए यह data हमेशा उसी address पर रहना चाहिए
- बाकी runtime data को move किया जा सकता था
- जिन regions को relocate किया गया वे थे rasterizer target, texture cache, और geometry cache
- specific allocation calls को hook करके debug memory region में move किया गया
- नए level loading जैसी free timing पर उचित free calls भी जोड़े गए
- runtime data region का size भी घटाया गया ताकि waste कम हो
physical_memory_malloccompiler द्वारा inline किया गया था, इसलिए हर call site पर अलग patch की ज़रूरत पड़ी
Xbox kernel hot patch और upper 64MB physical memory
- GPU को दिया जाने वाला memory address physical address होना चाहिए, और वह memory range contiguous होनी चाहिए
- GPU में page table या virtual address translation जैसा concept नहीं है
- 128MB RAM kernel में भी डिफ़ॉल्ट रूप से physically contiguous allocation केवल पहले 64MB से ही संभव थी, जबकि virtual allocation पूरे 128MB से संभव थी
- manual तरीके से upper 64MB page table entries का उपयोग GPU memory की तरह करने वाला test सफल रहा
- upper 64MB से GPU physical memory न इस्तेमाल कर पाने की सीमा hardware नहीं, kernel की software limitation थी
MmAllocateContiguousMemoryExके अंदरMAX_USABLE_PFNcheck मौजूद था- पुरानी value 0x83FE0000 थी, जो 64MB - 128KB के बराबर है
- ऊपर के 128KB को GPU scratch area 64KB और CPU page table 64KB के लिए reserve किया गया था
- patch game boot पर यह जांचता है कि console में 128MB RAM है या नहीं, फिर
MmAllocateContiguousMemoryExमेंmov edx, 0x3FDFvalue ढूंढकर 128MB configuration के लिए नई value से बदल देता है - इसके बाद
MmAllocateContiguousMemoryExऔरMmFreeContiguousMemoryका उपयोग कर पूरे 128MB में contiguous physical memory allocate/free की गई - इसके side effects भी थे
- game बंद होने के बाद cold reboot के बिना dashboard पर लौटना या DVD tray eject जैसी warm reboot करने पर अगले app/game में गंभीर graphics artifact और crash हो सकते थे
- इसे छिपाने के लिए game exit पर cold reboot force करने वाला अतिरिक्त patch डाला गया
720p/1080p rendering results और performance bottleneck
- 720p rendering दृश्य रूप से बेहतर थी, लेकिन भारी scenes में performance इतनी कम थी कि FPS 10 से नीचे गिर जाता था
- 1080p native rendering संभव थी, लेकिन Xbox console output केवल 1080i signal दे सकता था
- D3D back buffer को सीधे dump करने पर GPU द्वारा video encoder के लिए half frame में बदलने से पहले का 1080p screenshot मिल सकता था
- performance measurement में तीन configurations की तुलना की गई: base Xbox, केवल CPU overclock वाला god box, और CPU+GPU overclock वाला god box
- Zanzibar के भारी हिस्से को “zanzibar benchmark scene” के रूप में इस्तेमाल किया गया
- शुरुआती measurement में तीनों configurations का FPS लगभग समान था, और performance graph से swap stall कारण के रूप में सामने आया
- Halo 2, vsync on और double buffering का उपयोग करता है
- GPU, vblank का इंतज़ार करते हुए swap chain rotation नहीं कर पाता और stall हो जाता है
triple buffering और GPU bottleneck की पुष्टि
- समाधान के रूप में back buffer count को 2 किया गया, जिससे 1 front buffer और 2 back buffer, यानी कुल 3 buffers वाला triple buffering लागू हुआ
D3DPRESENT_PARAMETERSमेंBackBufferCount = 2,D3DSWAPEFFECT_DISCARD,D3DPRESENT_INTERVAL_ONEसेट किया गया- Halo 2 का rendering engine double buffering को मानकर हर frame back/front buffer pointer swap करता था, इसलिए swap hook और primary target initialize hook में भी बदलाव करना पड़ा
- दो primary render surface और texture view को हमेशा current back buffer refer करने के लिए बदला गया
- game अंदरूनी रूप से दो pointers swap करता रहे, तब भी वे एक ही memory को point करते हैं, इसलिए यह व्यवहारिक रूप से no-op बन गया
- Zanzibar benchmark scene में base GPU पर FPS लगभग 22FPS हो गया
- पहले से लगभग 3FPS अधिक
- 30FPS cap के आधार पर लगभग 10% वृद्धि
- swap stall हट गया और GPU utilization अधिकतम पर पहुंचा, जिससे पुष्टि हुई कि bottleneck GPU ही है
GPU और RAM overclock
- texaccum render target को tiled memory में बदलकर अतिरिक्त 1~2FPS हासिल हुए
- Zanzibar benchmark scene लगभग 19FPS से बढ़कर 23~24FPS तक पहुंचा
- god box के GPU overclock state में Zanzibar benchmark scene 27~28FPS तक पहुंचा
- map में घूमते समय अधिकतर 30FPS बना रहता था और केवल कुछ भारी क्षेत्रों में गिरावट आती थी
- BIOS reflash की ज़रूरत से बचने के लिए game startup पर GPU clock generator के memory-mapped IO register को सीधे adjust किया गया
- GPU clock calculation
NVPLL_COEFFके M, N, P values और 16.6667MHz base clock पर आधारित थी- डिफ़ॉल्ट N value 28, 233.33MHz GPU clock बनाती है
- N value बदलकर लगभग 8MHz step में setting संभव की गई, और इसे ini file से configurable बनाया गया
- 300MHz GPU overclock ने base GPU की तुलना में Zanzibar benchmark में लगभग 3FPS अतिरिक्त बढ़ाए
- GPU के overclock limits chip के अनुसार अलग थे
- 1.0~1.4 revision console के GPU अक्सर low 300MHz range में limit दिखाते थे
- 1.6 revision console GPU के 400MHz से ऊपर स्थिर चलने के उदाहरण भी थे
- RAM clock का भी test किया गया
- Xbox memory bus की theoretical maximum throughput 6.4GB/s है, जबकि व्यावहारिक usable throughput लगभग 70%, यानी 4.5GB/s मानी गई
- RAM लगभग 200MHz पर डिफ़ॉल्ट चलती है, इसलिए लगभग 10MHz बढ़ाना भी instability ला सकता है
- लगभग 208MHz setting test में 0.7FPS की बढ़त देखी गई
- 250MHz-capable RAM chips भी मंगाई गईं, लेकिन लेख लिखे जाने तक उन्हें install करके आगे test नहीं किया गया था
pop-in में कमी और cache expansion
- Halo 2 में texture और geometry pop-in की समस्या पहले से थी, और 2000s के शुरुआती mechanical HDD वाले console पर यह और स्पष्ट दिखती थी
- अतिरिक्त RAM का उपयोग texture cache और geometry cache बढ़ाने में किया गया
- डिफ़ॉल्ट geometry cache single-player maps के लिए 6.5MB और multiplayer maps के लिए 7MB थी
- texture cache map size के अनुसार बदलती है और tag data के बाद तथा low detail texture cache के पहले बची हुई जगह उपयोग करती है
- cache, LRU तरीके से काम करती है
- हर 30 frames पर पिछले 30 frames में इस्तेमाल न हुए data को हटा दिया जाता है
- cache भर जाने पर caller forced eviction निर्दिष्ट कर सकता है, या load request fail होकर अगले frame में फिर कोशिश करती है
- texture में low/medium/high LOD buffers हो सकते हैं
- high LOD load fail होने पर medium या low LOD आज़माया जाता है
- पहले lower LOD दिखना और बाद में higher LOD पर बदलना, pop-in का कारण बन सकता है
- maps में 2×2 से लेकर अधिकतम 8×8 size का emergency low detail texture cache भी शामिल होता है
- सामान्य texture load fail होने पर भी model को अस्थायी रूप से screen पर draw करने के लिए इसका उपयोग होता है
- Xbox Live friends menu खोलकर बंद करने पर terrain का बहुत low-resolution texture में दिखना इसी cache के उपयोग से जुड़ा था
- Bungie debug build की graph visualization feature को फिर से तैयार किया गया ताकि cache usage को सीधे देखते हुए size tune की जा सके
- अंतिम setting में geometry cache को 20MB और texture cache को fixed 30MB तक बढ़ाया गया
- दोनों caches डिफ़ॉल्ट settings की तुलना में लगभग दोगुनी हो गईं
- Outskirts opening cutscene में Master Chief तुरंत high-resolution texture के साथ दिखता है और cache space भी बचा रहता है
- बची हुई pop-in को कम करने के लिए HDD transfer speed भी बढ़ाई गई
- डिफ़ॉल्ट UDMA 2 लगभग 33.3MB/s
- UDMA 3 लगभग 44.4MB/s
- 80-pin IDE cable होने पर UDMA 5 लगभग 100MB/s तक सेट किया जा सकता है
- डिफ़ॉल्ट IDE cable पर लगभग 10%, और upgraded IDE cable पर सैद्धांतिक रूप से अधिकतम 300% transfer speed improvement मिला
- अंतिम 720p memory profile, 128MB RAM का 75% से अधिक उपयोग करता था
- 1080p mode में swap chain और rasterizer target memory usage इतना बढ़ गया कि cache size घटानी पड़ी, और व्यवहारिक रूप से लगभग पूरी 128MB RAM उपयोग होने लगी
परिणाम
- कुल मिलाकर 720p patch को playable level तक सुधार लिया गया, जबकि 1080p support ज़्यादातर screenshot bonus जैसा रहा
- performance और memory changes में अभी भी सुधार की गुंजाइश है, लेकिन यह Halo 2 और Xbox console की सीमाओं को काफी हद तक आगे धकेलने वाला परिणाम है
- Halo 2 HD patch download और source code GitHub पर उपलब्ध हैं
1 टिप्पणियां
Hacker News की राय
लेख के नीचे वीडियो लिंक: https://www.youtube.com/watch?v=O_nk21389u8
वीडियो में मूल upscale 480p और 720p का side-by-side comparison है, और लगभग 7 मिनट के बाद यह समझाता है कि 720p हासिल करते हुए लगभग 30fps gameplay बनाए रखने के लिए क्या चाहिए
लेख भी शानदार है, लेकिन higher resolution के लिए ज़रूरी बदलावों का सार बताने वाला वीडियो भी अच्छा है
720×480 के 16:9 resolution न होने या “असली 480p” न होने की बात दरअसल 1970s की ITU standardization से जुड़ा मामला है: https://tech.ebu.ch/docs/techreview/trev_304-rec601_wood.pdf
फ़रवरी 1980 के एक memo में कहा गया था कि यूरोपीय standard की effective scanline period को पूरी तरह समायोजित करने के लिए प्रति effective line sample count 715.5 से बड़ा होना चाहिए, और बाद में Rec. 601 तथा SMPTE 125 में इस्तेमाल किए गए 720 samples पहला ऐसा मान बन गए जो “काम करता” था
Rec. 601 ने luma channel के लिए प्रति effective line 720 samples और chroma signals के लिए 360-360 samples दिए, और HDTV को परिभाषित करते समय मौजूदा TV system की horizontal resolution को दोगुना कर 16:9 aspect ratio लागू किया गया, जिससे 1920 samples/line और 1080 lines तक बात पहुँची
1280×720 progressive scan system भी इसी 720-pixel family का हिस्सा है, और ज़्यादातर digital TV·DVD·MPEG-आधारित systems इसी 4:2:2 base standard format से निकले हैं
“hacker spirit” अपने आप में पूरी तरह जायज़ है, लेकिन console में memory जोड़कर और GPU को overclock करके Halo 2 को इस तरह खेलने की वजह PC version की बजाय अलग से क्या है, यह जानने की जिज्ञासा है
इसकी खामियों को अलग-अलग स्तर पर विस्तार से कवर करने वाले कई वीडियो हैं
https://youtu.be/03K2Uz3s1hg?si=zaFO1XdzMcFvI1F6
जैसे यह साबित करना कि वह काफ़ी है, या शायद और बेहतर भी
शायद यह किसी psychological block जैसा हो सकता है, लेकिन ज़्यादातर हल्का-फुल्का और मज़ेदार होता है, और लोकप्रिय device का latest model सबसे पहले खरीदने की सनक के उलट लगता है
दोनों ही तरह से एक प्रकार की श्रेष्ठता की भावना मिलती है
आज भी Halo 2 को online lobby या campaign में खेला जा सकता है, और 343 के original graphics या remastered HD graphics में से चुन सकते हैं
मुख्य लेख में कहा गया है, “tag data system को यथासंभव flexible और fast डिज़ाइन किया गया था, और इसकी internal workings इंजीनियरिंग के लिहाज़ से कमाल की हैं. सिर्फ इस बारे में कि मुझे क्यों लगता है कि Blam engine सबसे flexible engines में से एक है, मैं एक अलग लेख लिख सकता हूँ, लेकिन वह इस लेख से संबंधित नहीं है।” अगर वह लेख सच में लिखा जाए तो मैं ज़रूर पढ़ना चाहूँगा
मैं इतना beginner था कि यह समझना भी मुश्किल था कि वे कैसे काम करते हैं, और वे इतने dynamic थे कि ऐसी structure संभव है, यह बात ही बुनियादी स्तर पर समझ नहीं आती थी
मुझे समझ नहीं आता था कि player position उसी context में कैसे हो सकती है जिसमें settings वाले weapons हों, और effects भी उसी list में कैसे हो सकते हैं
जिन कई चीज़ों में आज मेरी दिलचस्पी है, वे आखिरकार अब भी इन्हीं concepts के आसपास घूमती रहती हैं
काश Xbox और Halo 2 modding का दौर फिर से वापस आ जाए।
उस दौर ने मेरे करियर के चुनाव पर बड़ा असर डाला था, और आज भी मुझे लगता है कि Halo 2 अब तक का सबसे innovative online game था।
तब सिर्फ game save लोड करने वाला एक साधारण टूल खरीदकर कुछ ही मिनटों में soft-modded Xbox बनाया जा सकता था, लेकिन आज के consoles में e-fuse उड़ा दिए जाते हैं, downgrade रोका जाता है, और security भी कहीं ज्यादा सख्त हो गई है।
Insignia के Halo 2 support शुरू करने वाले प्रोजेक्ट के साथ मिलकर देखें तो classic Halo 2 के लिए यह सचमुच अच्छा समय है।
मैं software engineer इसलिए बना, क्योंकि वेबपेज कैसे काम करते हैं यह आसानी से देख सकता था, program memory के साथ छेड़छाड़ कर सकता था, और hardware खोलकर अंदर देख सकता था।
Halo PC के दिनों में levels mod करते हुए मैंने बहुत कुछ सीखा कि game के भीतर क्या-क्या होता है, और “BSP” क्या है यह जानना भले बेकार trivia लगे, लेकिन इससे यह भरोसा मिला कि मैं और भी बहुत कुछ समझ सकता हूँ।
आज भी tech में आकर सीखा जा सकता है, लेकिन असली tinkering के रास्ते ऐसा होना अब कम दिखता है।
Software को crack या debug करना अब बहुत कठिन हो गया है; असंभव नहीं, लेकिन entry barrier कहीं ज्यादा ऊँचा है।
वेबपेज अब भी inspect किए जा सकते हैं, लेकिन आजकल बहुत-सी sites minified, obfuscated JavaScript के राक्षस को संभालने वाले div के ढेर बन गई हैं, और games में server से content streaming पर निर्भरता इतनी बढ़ गई है कि कई बार काम ही मुश्किल हो जाता है।
Hardware में भी ऐसी security प्रक्रियाएँ हैं जो device को brick कर सकती हैं, चिपके हुए bezel खोलने के लिए heat gun चाहिए, और स्थायी नुकसान का जोखिम अलग है।
इन हर बदलाव के अपने कारण रहे होंगे, लेकिन इस प्रक्रिया में ज़्यादातर मज़ा भी गायब हो गया, और आज tools तकनीकी रूप से बेहतर होने पर भी game modding पहले जैसा नहीं रहा।
आज भी PC या Steam Deck जैसे PC-based consoles पर काफी tinkering की जा सकती है, तो जानबूझकर locked-down बनाए गए proprietary consoles से लड़ने की वजह समझ नहीं आती।
बाज़ार में सस्ते में मिलने वाले custom x86 hardware तक पहुँच के अलावा इससे और क्या मिलता है, यह भी साफ नहीं है।
मजबूत modding community वाले rival online FPS, PC पर उससे पहले ही 10 साल से ज्यादा समय से सक्रिय थे।
Project Cartographer की वजह से इसकी community अब भी सक्रिय है: https://halo2.online/home/
यह व्यक्ति आजकल Bungie अपने IP पर जितना ध्यान देता है, उससे कहीं ज्यादा Halo 2 के लिए समर्पित लगता है।
IP का मालिक Microsoft है, और development 343 Industries संभालता है।
Bungie के पास अभी Destiny/Destiny 2 और आने वाला Marathon extraction shooter है।
मैंने उस game में सचमुच बहुत समय लगाया था, और अच्छा लगता है कि मेरे जैसा कोई और भी उस जादू में डूबा हुआ है।
फिर भी इस स्तर की dedication काबिल-ए-तारीफ़ है।
यह शायद ज़रूरत से ज़्यादा cynical लगे, लेकिन प्रोजेक्ट खुद में सचमुच शानदार है।
बस यह सवाल है कि CPU बदलने, overclock करने, RAM बढ़ाने, solid-state storage जोड़ने, और GPU तक overclock करने के बाद इसे original Xbox की limits तक धकेलना कहना ठीक है या नहीं।
उस बिंदु पर यह असल में Xbox रह भी जाता है या नहीं, कहना मुश्किल है।
अगर आप कहें कि Honda Civic को engine और suspension mods की भरमार के साथ उसकी limits तक धकेला गया, तो “लेकिन क्या वह सच में Civic है?” पूछना तकनीकी रूप से सही हो सकता है, पर सुनने में बेकार की नुक्ताचीनी लगेगा।
लेखक को अपनी पसंद का शीर्षक देने का हक है, और चाहें तो आप मन ही मन इसे “OG Xbox को मरने की कगार तक mod करना” जैसा पढ़ सकते हैं।
Halo 2, 360 पर ज्यादा ऊँचे resolution में चल सकता है, इसलिए यह साफ करना उपयोगी है कि यह modding project original Xbox को लक्ष्य बना रहा था।
इसका मतलब unmodified Xbox को शब्दशः बताना नहीं, बल्कि यह है कि modding का target original Xbox था।
इसमें यह भी लिखा है कि stock IDE cable वाले console पर transfer speed 10% बढ़ती है, और upgraded IDE cable के साथ सैद्धांतिक रूप से यह 300% तक जा सकती है।
अगर 128MB RAM हो तो अतिरिक्त RAM का उपयोग करके 720p और 1080i video modes चालू किए जा सकते हैं, और texture तथा geometry memory cache बढ़ाकर pop-in लगभग खत्म किया जा सकता है।
अगर आपको सिर्फ 480p चाहिए, तो stock console पर GPU overclock और अलग IDE cable काफी है।
SSD वाली बात शायद अनजाने में गलतफहमी पैदा कर गई, और संभव है कि उसका मतलब 80-pin cable और SSD के संयोजन से रहा हो।
Overclocked CPU की ज़रूरत नहीं है और CPU bottleneck भी नहीं है; बढ़ी हुई RAM सिर्फ तब चाहिए जब 720p से ऊपर जाना हो।
यह feedback दे दिया गया है, इसलिए हो सकता है कि blog post बाद में इस हिस्से को और साफ करके update करे।
retro computing scene ऐसा ही है, और car tuning भी कुछ वैसी ही चीज़ है।
किसी को factory-condition वाली परफेक्ट Corvette चाहिए होती है, और किसी को 50 साल नया engine लगी Model A।
किसी जानी-पहचानी चीज़ को अपनी मर्ज़ी के मुताबिक मोड़ना अपने-आप में कमाल की बात है।
काम बहुत ज़्यादा है
यह भी दिलचस्प है कि दोस्त “doom” अपनी पहचान उजागर नहीं करना चाहता था