1 पॉइंट द्वारा GN⁺ 2023-09-24 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Nintendo 3DS, smartphone और app store के बढ़ते दौर का एक portable console था, जिसमें बिना चश्मे वाला stereoscopic 3D, dual screen, backward-compatible CPU और तरह-तरह के I/O को एक जटिल SoC संरचना में जोड़ा गया था
  • ऊपर की 800×240 LCD, half-width pixels और parallax barrier के जरिए 400×240 के 2 frame एक साथ दिखाती है, और depth slider व New 3DS की face tracking से viewing angle और आंखों की थकान की समस्याएं कम होती हैं
  • बेस मॉडल में 268MHz ARM11 MPCore 2-core, 128MB FCRAM, DMP PICA200 GPU और CEVA TeakLite II DSP इस्तेमाल हुआ, जबकि New 3DS में 804MHz 4-core और 256MB FCRAM, NFC, तथा बेहतर stereoscopic viewing system जोड़ा गया
  • अंदर ARM11 के अलावा DS के लिए ARM946E-S और GBA के लिए ARM7TDMI भी हैं, इसलिए यह Native 3DS, Nintendo DSi और Game Boy Advance mode में switch होता है, लेकिन developer आम तौर पर सीधे सिर्फ ARM11 MPCore को ही handle करते हैं
  • operating system और security, NATIVE_FIRM, TWL_FIRM, AGB_FIRM, SAFE_FIRM, Boot9/Boot11, AES/RSA/OTP आधारित trust chain से बने थे, और कई vulnerabilities के बाद homebrew और custom firmware ecosystem विकसित हुआ

मॉडल सीरीज़ और hardware generations

  • Nintendo ने 3DS के lifecycle के दौरान कई revised models जारी किए, ताकि price segments और user groups अलग किए जा सकें
  • architecture के नजरिए से models 6 तरह के हैं
    • Nintendo 3DS(2011), Nintendo 3DS XL(2012): मूल architecture पर आधारित हैं, और XL व non-XL के बीच मुख्य अंतर screen size है
    • Nintendo 2DS(2013): stereoscopic screen हटाकर Game Boy से प्रेरित form factor वाला low-cost model
    • New Nintendo 3DS(2014), New Nintendo 3DS XL(2015): hardware upgrade, NFC reader, ज्यादा buttons और बेहतर stereoscopic system जोड़ा गया
    • New Nintendo 2DS XL(2017): New Nintendo 3DS XL से stereoscopic feature हटाया गया low-cost model
  • games के लिए common baseline मूल Nintendo 3DS है, जबकि New series में अलग hardware differences काफी बड़े हैं

बिना चश्मे वाला 3D display

  • Nintendo 3DS में Nintendo DS के successor की तरह 2 LCD लगे हैं, और ऊपर की screen 800×240 pixels specification के साथ depth दिखाती है
  • stereoscopic effect, Virtual Boy जैसी stereoscopic parallax principle का इस्तेमाल करता है
    • बाईं और दाईं आंख को थोड़ी अलग images दिखाई जाती हैं
    • दोनों images की center position में अंतर से objects आगे-पीछे होने जैसा महसूस होता है
  • ऊपर की LCD भौतिक रूप से half-width pixels से बनी है और 2 modes में काम करती है
    • 2D mode: 2 horizontal pixels को एक की तरह treat करता है
    • 3D mode: सभी pixels को अलग-अलग इस्तेमाल कर 400×240 के 2 frame एक साथ दिखाता है
  • parallax barrier LCD pixels के पीछे की backlight को अलग करता है, ताकि हर आंख pixels का अलग subset देखे
  • इस तरीके की कुछ सीमाएं हैं
    • अतिरिक्त brightness चाहिए, जिससे battery life प्रभावित होती है
    • अगर screen आंखों के हिसाब से tilt हो जाए, तो दोनों parallax frames मिले हुए दिखते हैं और आंखों की थकान बढ़ सकती है
    • fixed posture और जल्दी आंखें थकने के कारण 3D feature झंझट वाला लग सकता है
  • 3D depth slider दो frames के बीच अंतर को बढ़ाकर या घटाकर depth effect को adjust करता है
  • New 3DS, front camera और infrared LED का इस्तेमाल करने वाली face tracking से tilt की समस्या कम करता है
  • games को GPU पर सामान्य frame draw करने की तरह ही, उसी scene को थोड़ा shift किए गए 2 frames के रूप में render करना पड़ता है
    • official API दो projection matrices बनाने के लिए routines देती है

CPU, memory और backward compatibility structure

  • main SoC CPU CTR storage और RAM को छोड़कर system के ज्यादातर हिस्से अपने अंदर रखता है
  • Nintendo ने ARM के साथ मिलकर ARM11 MPCore आधारित CPU cluster बनाया
    • मूल 3DS: 2 MP11 cores, हर एक 268MHz
    • New 3DS: 4 MP11 cores, हर एक 804MHz, shared 2MB L2 cache
  • ARM11, ARMv6k instruction set का इस्तेमाल करता है, और इसमें Thumb, Jazelle, VFP जैसे components भी शामिल हैं
    • ARMv6 integer SIMD instructions और multicore synchronization के लिए load/store instructions देता है
    • VFP11, 32-bit single-precision और 64-bit double-precision floating-point operations को accelerate करता है और IEEE 754 को follow करता है
  • हर MP11 core में 8-stage pipeline, dynamic/static branch prediction, CP15 system control coprocessor, 16KB instruction cache और 16KB data cache होता है
  • ARM11 cores ARM की AXI bus से जुड़े होते हैं, और MPCore की Snoop Control Unit L1 cache coherency बनाए रखती है
  • 3DS में ARM11 के अलावा दो और CPU भी हैं
    • ARM946E-S: Native 3DS mode में OS-managed security/I/O auxiliary processor के रूप में काम करता है, और DS/DSi games चलाते समय main processor बन जाता है
    • ARM7TDMI: DS/DSi mode में auxiliary processor के रूप में काम करता है, और GBA mode में main execution CPU बन जाता है
  • operating modes तीन हैं
    • Native 3DS mode: ARM11, 3DS games चलाता है, ARM9 I/O और security संभालता है, और ARM7 बंद रहता है
    • Nintendo DSi mode: ARM9 और ARM7, DS/DSi games चलाते हैं, और ARM11 missing/relocated DS hardware में मदद करता है
    • Game Boy Advance mode: ARM7, GBA game instructions execute करता है, और ARM11 व ARM9 background support देते हैं
  • memory configuration जटिल है
    • मूल 3DS, developer के नजरिए से 128MB FCRAM देता है, और New 3DS 256MB FCRAM देता है
    • ARM11 में security purposes के लिए 512KB SRAM है
    • ARM9 में 1MB SRAM है, और New 3DS में 1.5MB SRAM है
    • ARM9 में 32KB instruction TCM और 16KB data TCM भी है
  • FCRAM Fujitsu और Toshiba द्वारा 2002 में बनाया गया Fast Cycle DRAM है, जिसका लक्ष्य non-contiguous reads में DRAM से कम latency देना था
  • DMA configuration भी शामिल है
    • ARM9 के पास वाला XDMA अधिकतम 4 channels देता है
    • ARM11 के पास वाला CDMA अधिकतम 8 channels देता है
    • New 3DS, ARM11 block के पास एक और CoreLink DMA-330 जोड़ता है
  • 3DS developers आम तौर पर सिर्फ ARM11 MPCore तक access करते हैं, और programs thread-based multithreading model में लिखे जाते हैं
  • New 3DS में अगर game metadata यह दिखाए कि target नया model है, तो OS fast clock, additional RAM और L2 cache जैसी features activate करता है
    • अन्यथा compatibility के लिए New-only hardware को disable कर देता है
    • game Old और New के लिए codebases साथ में रख सकता है

ग्राफिक्स पाइपलाइन और PICA200

  • Nintendo 3DS, Nintendo के handheld लाइनअप में पहली बार अपने PPU के बजाय GPU vendor के IP core का उपयोग करता है
  • Nintendo ने DMP के PICA200 को license कर CPU CTR SoC के अंदर रखा, और GPU 268MHz पर चलता है
  • PICA200 एक low-power 3D processor है, और OpenGL ES 1.1 के अनुरूप तथा OpenGL ES 2.0 elements से विस्तारित Maestro 2G architecture का उपयोग करता है
  • pixel stage fixed-function structure है, लेकिन Maestro functions fragment lighting, multiple shadow algorithms, polygon subdivision, bump mapping, procedural textures और कई fog effects प्रदान करते हैं
  • GPU-dedicated VRAM केवल 6MB है, इसलिए programmers को तुरंत access की जरूरत वाले commands, buffers और repeating textures को VRAM में रखना होता है और बाकी को FCRAM में रखना होता है
    • PICA200 में FCRAM और VRAM के बीच transfer के लिए DMA है
  • LCD controller PICA200 के render buffer format को सीधे नहीं समझता, इसलिए अलग LCD framebuffer की जरूरत होती है
    • top left-eye, top right-eye और bottom screen के लिए कम से कम 3 चाहिए
    • artifacts से बचने के लिए page flipping के लिए duplicate set रखा जा सकता है
  • gameplay के दौरान GPU आम तौर पर तीन screens render करता है
    • top left-eye: 400×240
    • top right-eye: 400×240
    • bottom: 320×240
    • सभी 8-bit RGB color में अधिकतम 1.678 करोड़ colors दिखाते हैं
  • PICA200 pipeline command, vertex, geometry, rasterizer, fragment और post-processing stages से बनी है
    • command stage command buffer पढ़कर polygons draw करता है
    • vertex stage 4 Vertex Processors को parallel में इस्तेमाल करता है, और geometry shader enable करने पर केवल 3 usable रहते हैं
    • geometry stage एक Vertex Processor लेकर उसे अलग shader के रूप में उपयोग करता है
    • fragment stage 4 texture units और shading unit से बना है
    • pixel shader नहीं है; 6 color combiners और Maestro functions को combine किया जाता है
    • post-processing stage alpha, stencil और depth tests के साथ blending और 2×2 supersampling कर सकता है
  • New 3DS में MVD नाम का DSP जोड़ा गया लगता है, जो H.264/MJPEG decompression और YUV-to-RGB conversion करता है
    • New 3DS web browser शायद accelerated video playback के लिए इसका उपयोग करता है
  • DS और GBA games के लिए PPU भी SoC के अंदर है
    • DS/DSi/GBA games पुराने hardware की तरह PPU का उपयोग करते हैं
    • output LgyFB से होकर framebuffer में जाता है और display का काम PICA200 संभालता है
    • यह structure latency जोड़ता है, लेकिन users के लिए नगण्य स्तर पर है

ऑडियो और I/O

  • SoC में 2 audio blocks हैं
    • 3DS games के लिए proprietary DSP
    • 3DS, DS और GBA games द्वारा इस्तेमाल किया जाने वाला DS-series CSND
  • 3DS-only DSP CEVA TeakLite II है और लगभग 134MHz पर चलता है
    • stereo 2 channels, अधिकतम 32kHz sampling और 16-bit resolution output करता है
    • DSP workspace के रूप में 512KB RAM का उपयोग करता है, और 256KB each के साथ double-buffered है
    • DSP ADPCM और PCM samples को अधिकतम 24 channels तक mix कर सकता है
  • program runtime पर official SDK में शामिल Nintendo-written DSP firmware upload करता है, और OS audio service DSP communication को abstract करती है
  • CSND 32 channels प्रदान करता है, जो DS के corresponding block से दोगुना है
  • external I/O का configuration portable console से ज्यादा smartphone से compete करने जैसा है
    • digital buttons, analog Circle Pad, 3D और volume sliders, Wi-Fi switch
    • resistive touch sensor, gyroscope, accelerometer
    • 1 front camera और 2 rear cameras
    • infrared transceiver, SD card slot, 3.5mm jack, game card reader
  • New 3DS अतिरिक्त I/O जोड़ता है
    • 2 digital buttons, C-Stick, bottom screen NFC reader
    • face tracking के लिए infrared LED
    • SD के बजाय microSD slot
    • Wi-Fi switch हटाकर software control
  • internal interfaces SPI, HID, I²C, FIFO-based high-speed peripherals और MCU में बंटे हैं
    • SPI game card storage flash, DS power management, Wi-Fi के कुछ हिस्से, touchscreen, sound, microphone, Circle Pad आदि को connect करता है
    • HID digital keypad को 16-bit register के रूप में पढ़ता है
    • I²C cameras, infrared transceiver, NFC, QTM face tracking module, gyroscope, MCU आदि को connect करता है
    • eMMC और SD slot 16MB/s peripherals के रूप में FIFO registers के जरिए connect होते हैं
  • Auxiliary Microcontroller NEC-designed और Renesas-manufactured 78K0R MCU है, जो LCD, LED, power management, battery, RTC, 3D slider, HOME/power buttons आदि manage करता है
  • I/O-based services में QR Reader, AR Games, Face Raiders, Amiibos, SpotPass, StreetPass और Play Coins शामिल हैं

ऑपरेटिंग सिस्टम और boot structure

  • Nintendo 3DS कई firmwares store करता है, जिससे native execution, backward compatibility और maintenance mode मिलते हैं
    • NATIVE_FIRM: 3DS native features चलाता है और ARM11 main program execute करता है
    • TWL_FIRM: 3DS को Nintendo DSi की तरह चलाता है और ARM9 व ARM7 front line में आते हैं
    • AGB_FIRM: 3DS को Game Boy Advance की तरह चलाता है और ARM7 main program execute करता है
    • SAFE_FIRM: system update जैसे maintenance tasks में उपयोग होता है
  • NATIVE_FIRM में ARM9 और ARM11 अलग-अलग OS roles रखते हैं
    • ARM9 Kernel9 और Process9 चलाता है और security, encryption, I/O, file system, title verification और installation संभालता है
    • ARM11 Kernel11 और कई user processes चलाता है तथा network, HOME Menu, app launch और hardware service abstraction प्रदान करता है
  • ARM11 scheduler cores को सामान्य general-purpose cores की तरह नहीं मानता
    • पहला core appcore games के लिए है और FIFO scheduling का उपयोग करता है
    • दूसरा core syscore system tasks के लिए है और execution time का 30% user applications को उधार दे सकता है
    • New 3DS का चौथा MP11 core face tracking के लिए dedicated है
    • तीसरा MP11 core default रूप से scheduled नहीं होता, इसलिए अधिकतर idle रहता है
    • New 3DS का अतिरिक्त CDMA केवल booting के दौरान accessible है और बाद में use नहीं होता
  • apps द्वारा वास्तव में इस्तेमाल की जा सकने वाली RAM total FCRAM से कम है
    • original 3DS: 128MB में से default 64MB
    • New 3DS: 256MB में से default 124MB
    • APPMEMTYPE flag से HOME Menu launch किए बिना boot कर क्रमशः maximum 96MB, 176MB तक सुरक्षित किया जा सकता है
  • storage media Boot ROM, OTP, eMMC NAND और SD/microSD से बने हैं
    • Boot9 और Boot11 boot ROM हैं और security reasons से hidden हैं
    • OTP में manufacturing के दौरान एक बार लिखी जाने वाली console-unique information और encryption keys होती हैं
    • eMMC NAND में system data, firmware और 3DS/DSi mode user data store होता है
    • SD/microSD में eShop software, save data, photos, recordings आदि store होते हैं और AES-128-CTR से protected रहते हैं
  • boot के समय ARM9 का Boot9 पहले चलता है और ARM11 के Boot11 को wake करता है, फिर NAND के NCSD header और firmware partitions verify करता है
    • SHA-256 hash और RSA-2048 signature verify कर valid firmware ढूंढता है
    • failure होने पर Wi-Fi module के flash boot की कोशिश करता है, और यह भी fail हो तो error screen दिखाता है
    • NATIVE_FIRM load होने पर flow Kernel9, Process9, Kernel11, system processes, NS, HOME Menu या game तक आगे बढ़ता है
  • HOME Menu installed applications को scrollable grid में दिखाने वाला one-page navigation shell है
    • NS module HOME button overlay और virtual keyboard जैसे Applet calls भी प्रदान करता है
    • New 3DS में game compatibility mode में चले तब भी Applet और NS routines पूरे hardware का उपयोग कर सकते हैं
  • system update online या game cartridge से किया जा सकता है
    • cartridge में user app updates के बिना केवल system update शामिल होता है
    • network update में पूरा package शामिल होता है
    • installation SAFE_FIRM में reboot करने के बाद System Updater करता है

गेम डेवलपमेंट, डिस्ट्रीब्यूशन, Virtual Console

  • 3DS डेवलपमेंट ecosystem ARM-आधारित smartphone industry और compiler में प्रगति से प्रभावित था, लेकिन Nintendo ने अभी तक standard toolchain तक उपलब्ध नहीं कराया था
  • Hardware development kits Intelligent Systems और Kyoto MicroComputers ने सप्लाई किए
    • CTR-BOX में 3DS hardware वाला एक metal box और dummy 3DS case शामिल था
    • Official flashcard का उपयोग external testers को game prototypes distribute करने के लिए किया जाता था
    • New 3DS के लिए SNAKE kit उपलब्ध कराया गया
  • Official SDK में 3DS के लिए armcc, debugger, hardware और OS services API, graphics library, packager, network/audio/video libraries, Visual Studio 2010 plugin, PICA200 tools और profiler शामिल थे
  • Graphics libraries चार प्रकार की थीं
    • GL: सरल लेकिन धीमा OpenGL ES API
    • GD: PICA200 commands generate करने वाला तेज़ alternative
    • GR: hardware के सबसे करीब PICA200 command API
    • GX: PICA200 management के लिए general-purpose library
  • Game execution media तीन प्रकार के थे
    • Gamecard: 128MB~4GB ROM या अधिकतम 2GB Flash और save के लिए backup memory रख सकता था
    • eShop/SD Card: downloadable software, pre-orders और DLC distribution को support करता था
    • Local wireless: Download Play 3DS पर भी जारी रहा, और transferred games NAND में install होते हैं तथा केवल एक slot का उपयोग करते हैं
  • Virtual Console eShop के ज़रिये DSiWare, NES/Famicom, Sega Game Gear, Game Boy, Game Boy Color games उपलब्ध कराता था
    • New 3DS users Super Nintendo catalog भी access कर सकते थे
    • अधिकांश ROM और emulator शामिल करने वाले app package के रूप में काम करते थे
  • Game Boy Advance games आधिकारिक रूप से केवल Ambassador Program users को उपलब्ध कराए गए
    • ये ARM11 emulator से नहीं, बल्कि AGB_FIRM के ज़रिये ARM7 पर natively चलते थे
    • GBA games को FCRAM में copy करने के बाद AGB_FIRM में reboot किया जाता है, जिससे ARM7 control लेता है
  • Game updates eShop के ज़रिये distribute होते हैं और Download Play को छोड़कर game types पर लागू होते हैं

सुरक्षा, copy protection, homebrew

  • 3DS security के मुख्य target Game/CTR card reader और operating system हैं
    • CTR cart के अंदर data NCSD format में होता है, और OS authentication, verification और decryption संभालता है
    • वास्तविक trust chain operating system और boot structure पर केंद्रित होती है
  • Dedicated security hardware शामिल है
    • ARM11 का XN flag और ARM9 का MPU arbitrary memory execution को restrict करते हैं
    • ARM9 security-only processor की तरह काम करता है और AES, RSA, PRNG जैसे cryptographic blocks तक access करता है
    • AES engine AES-128 encryption/decryption, अधिकतम 64 key slots, CTR/CCM/CBC/ECB modes को support करता है
    • RSA engine public-key आधारित RSA operations करता है, और key slots 4 हैं
    • OTP में console-unique keys और CTCert होते हैं, और eMMC CID भी key obfuscation में इस्तेमाल होता है
  • Trust chain Boot9, OTP, eMMC, NCSD, NCCH, Title verification तक जाती है
    • NCSD और NCCH RSA-2048 + SHA-256 signatures का उपयोग करते हैं
    • NCCH payload AES-128 CTR से encrypted होता है
    • Title RSA-2048, RSA-4096 या ECDSA और SHA-256 से signed होता है
    • eShop download license यानी Ticket भी RSA-2048 + SHA-256 से signed होता है
  • Implementation-level कमजोरियां भी मौजूद थीं
    • Kernel11 की AXI WRAM page table settings read/write/execute permissions को व्यापक रूप से grant करती हैं
    • System 3.0.0 से पहले OTP memory hidden नहीं थी
    • Process9 और Kernel9 के बीच privilege separation नहीं है
    • ASLR नहीं है, और system downgrade protection भी नहीं है
    • WebKit-based web browser बार-बार attacks का target बना
  • शुरुआती homebrew और cloning DS flashcards से शुरू हुए
    • DSi और 3DS ने allowed cards की list यानी whitelist के ज़रिये flashcards को block करने की कोशिश की
    • Manufacturers ने cartridge header को reprogram करके उन्हें दूसरे authorized games की तरह identify कराया
  • 2013 में Gateway3DS पहले व्यावहारिक 3DS flashcard के रूप में सामने आया
    • Blue Gateway एक DS flashcard के रूप में MSET exploit entry point install करता था
    • Red Gateway FPGA और microSD के साथ genuine game cards को clone करता था
    • Launcher.dat MSET exploit payload और custom firmware की भूमिका निभाता था
  • Nintendo ने updates के साथ जवाब दिया
    • 5.0.0-11 ने MSET exploit को temporarily fix किया
    • 7.0.0-13 ने kernel exploit को block किया और NCCH decryption trust chain में RSA module जोड़ा
    • 9.3.0 ने Gateway3DS के private kernel exploit को patch किया
    • Sky3DS को 11.0 में blacklist किया गया
  • Homebrew ecosystem libctru, nihstro, Ninjhax, Homebrew Launcher के साथ विकसित हुआ
    • Ninjhax Cubic Ninja की QR code feature को entry point के रूप में इस्तेमाल करता है
    • GSPWN GPU DMA से HOME Menu heap को overwrite करने वाली vulnerability है
    • Homebrew Launcher .3dsx format के unsigned homebrew apps चलाता है
  • memchunkhax और memchunkhax2 ने Kernel11 privilege escalation को संभव बनाया
    • FCRAM में stored memchunk header को manipulate करके AXI WRAM access और Kernel11 control तक पहुंचा जाता है
  • 2015 में New 3DS में arm9loader आने के बाद arm9loaderhax सामने आया
    • यह boot time पर Kernel9 privileges के साथ arbitrary code execution संभव बनाने वाला persistent exploit था
    • Luma3DS, Godmode9, Anemone3DS, nds-bootstrap जैसे tools व्यापक रूप से इस्तेमाल हुए
  • 2016~2017 में Boot9 analysis से sighax, boot9strap, ntrboot सामने आए
    • sighax ने Boot9 की RSA-2048 signature verification flaw का इस्तेमाल करके trust chain को निष्क्रिय किया
    • boot9strap SD card payload या normal boot support करने वाला replacement bootloader बना
    • ntrboot DS flashcard, magnet और key combination का उपयोग करके Boot9 privileges हासिल करता है
    • ये vulnerabilities Boot ROM में हैं, इसलिए इन्हें software update से ठीक नहीं किया जा सकता
  • 2018 के बाद के तरीकों का विकास boot9strap installation को आसान बनाने की दिशा में हुआ
    • seedminer Friend Code, SD card subdirectory name और short brute force से movable.sed को reconstruct करता है
    • BannerBomb3 DSiWare title banner parsing के दौरान Settings app के stack overflow का उपयोग करता है
    • SAFE_FIRM-based unSAFE_MODE और safehax, HOME Menu-based menuhax67 और nimdsphax paths इस्तेमाल हुए
  • मई 2023 के 11.17.0 update ने BannerBomb3 को patch करके बिना additional equipment वाले आखिरी entry points में से एक को निष्क्रिय कर दिया
    • इसके बाद users को legitimate 3DS game exploit, ntrboot-compatible DS flashcard, या WebKit exploit की ज़रूरत होती है

1 टिप्पणियां

 
GN⁺ 2023-09-24
Hacker News की राय
  • Gameboy Advance गेम चलाते समय उसके अंदर असली भौतिक GBA CPU होना सचमुच हैरान करने वाला है
    लॉन्च से पहले की सारी अफवाहें पढ़कर मैंने नीले रंग का मॉडल प्री-ऑर्डर किया था, और शुरुआत में करीब 250 डॉलर चुकाए थे, इसलिए मैं Ambassador Program के लिए पात्र था। Nintendo ने लॉन्च के तुरंत बाद कीमत काफी घटाई, तो माफी के तौर पर eShop पर उपलब्ध न होने वाले गेम्स सहित कई मुफ्त गेम दिए, और मैं संतुष्ट था
    बचपन में पसंद किया हुआ Mario Kart Super Circuit 3DS के शानदार स्लाइड पैड पर फिर से खेलना सपने जैसा था, और यह जानने के बाद कि वह पुराने GBA की तरह असली CPU पर चल रहा था, यह याद और भी खास बन गई

    • इसकी वजह और भी ज्यादा हैरान करने वाली है। Nintendo ने बैकवर्ड कम्पैटिबिलिटी को मातृयोश्का गुड़िया की तरह परत-दर-परत जोड़ते-जोड़ते GBA CPU को लगभग संयोग से ही अंदर शामिल कर लिया
      Nintendo 3DS में Nintendo DSi का पूरा सिस्टम स्ट्रक्चर मौजूद है, और DSi CPU सिस्टम के सुपरवाइजरी CPU की भूमिका भी निभाता है। DSi मूल रूप से Nintendo DS आर्किटेक्चर का काफी हद तक ओवरक्लॉक किया हुआ रूप था, और शुरुआती Nintendo DS के दो मॉडलों में GBA स्लॉट के जरिए बैकवर्ड कम्पैटिबिलिटी के लिए GBA का ARM7TDMI भी शामिल था
      Ambassador Program के समय Nintendo ने AGB_FIRM फर्मवेयर जारी किया, जो 3DS को Game Boy Advance मोड में बूट करता था, और Nintendo DS मोड के लिए TWL_FIRM था। आज 3DS को हैक करने पर अन्य GBA सॉफ्टवेयर भी लोड किए जा सकते हैं, इसलिए पेरिफेरल निर्भरताओं को छोड़ दें तो यह लगभग पूरी सटीकता के साथ GBA गेम चला सकता है
    • Sony ने भी मिलता-जुलता तरीका अपनाया था
      PlayStation 2 को इनपुट/आउटपुट चिप की जरूरत थी और Sony ने PS1 CPU चुना। PS1 गेम चलाते समय execution उसी तरफ सौंप दिया जाता था
      अगर मुझे सही याद है तो शुरुआती PlayStation 3 में PS2 CPU और GPU मौजूद थे, लेकिन PS2 गेम न चलाते समय उनका कोई खास रोल नहीं था। बाद में लागत घटाने के लिए emulation पर स्विच करते हुए उन्हें हटाया गया होगा
    • असली भौतिक Gameboy Advance CPU डालना पुरानी तरकीब है, लेकिन अब भी कमाल की लगती है
      GBA ने भी बैकवर्ड कम्पैटिबिलिटी के लिए GBC CPU डाला था, और cartridge खुद जिस भौतिक switch को दबाता था उससे mode बदलता था। PS2 भी PS1 CPU को board के input/output component के रूप में दोबारा इस्तेमाल कर पाता था और उसे बैकवर्ड कम्पैटिबिलिटी में काम में लाता था; मेरी याद में बाकी components को emulation से मदद मिलती थी
    • Walmart ने आधिकारिक price cut और Ambassador Program आवेदन खत्म होने से कुछ दिन पहले ही कम कीमत पर बेचना शुरू कर दिया था
      Reddit पोस्ट की वजह से मैं कम कीमत पर खरीद पाया और मुफ्त गेम भी मिल गए। मैंने मुफ्त गेम ज्यादा नहीं खेले, लेकिन ऐसा लगा जैसे सिस्टम को चकमा दे दिया हो
    • GBA CPU, NDS CPU का हिस्सा है, इसलिए वह 3DS के अंदर भी मौजूद है
  • 3DS की शुरुआत बहुत धीमी रही, लेकिन आखिरकार वह निजी तौर पर मेरे सबसे पसंदीदा consoles में से एक बन गया
    मेरे पास कभी N64 नहीं था, इसलिए बेहतरीन 3D remasters की वजह से मैंने Ocarina of Time और Majora’s Mask पहली बार खेले। पूरा DS backward compatibility भी बड़ा फायदा था, और screen की बदसूरत non-integer scaling से बचना हो तो Start दबाकर launch करना पड़ता है
    softmod किए हुए device पर supported homebrew और emulation की range भी बड़ी है, इसलिए यह बहुत आकर्षक छोटा device है। छोटा New 3DS design भी मुझे अब तक के सबसे अच्छे designs में से लगता है, इसलिए मैंने कई शानदार दिखने वाली, playful replaceable faceplates खरीदीं
    एक और बहुत अच्छी बात यह थी कि जब battery पुरानी होने लगी, तब Nintendo को फोन करके मैं अपने और अपनी पत्नी के device के लिए दो नई genuine batteries खरीद सका। हर एक करीब 15 पाउंड की थी, और device खोले बिना बदली जा सकती थी। आजकल ऐसा तरीका कम ही दिखता है

  • pandemic के दौरान ADHD की वजह से आखिरकार मैंने New Nintendo 3DS XL के 3 units खरीद लिए
    उनमें से एक Japan से import किया और उसे US ROM में बदल दिया। travel के लिए यह मुझे बहुत पसंद है। 3D effect शानदार है और उसे बंद किया जा सकता है, यह भी अच्छा है; battery life भी बेहतरीन है
    लेकिन हर hobby की तरह, जब चीजें rare होने लगती हैं तो लालच बढ़ता है और collect करने का मन होता है; और तीन consoles साथ-साथ तो खेल नहीं सकता, इसलिए अब शायद इन्हें बेच देना चाहिए

    • अगर तुम्हारे पास 3 consoles हैं, तो दो दोस्तों के साथ Tri Force Heroes जरूर खेलना चाहिए
    • अगर batteries खराब होने से रोकने का कोई तरीका हो, या आगे replacement batteries मिल सकें, तो शायद मैं इन्हें अपने पास ही रखूंगा
      पहले मैंने New Nintendo 2DS XL खरीदा था; यह DS series का आखिरी iteration model है और DS, DSi, 3DS—सभी game चलाता है। “new” DS के लिए exclusive games बस कुछ ही आए थे, इसलिए यह लगभग 15 साल की game history को support करता है
      जहां भी दिखे, मैं DS games खरीदने की कोशिश करता हूं, लेकिन अब अच्छे दाम मिलना मुश्किल हो गया है, और Bravely Default जैसे कुछ titles इस इलाके में अब भी करीब 60 यूरो के हैं। DS पर घटिया mass-produced games भी बहुत हैं, इसलिए उन्हें छोड़ देता हूं
  • 3DS में depth setting को बहुत आसानी से access होने वाले physical slider से adjust करने देना genius design था
    पता नहीं किस research के आधार पर 3D feature के core को इस तरह adjust कराया गया, लेकिन 3D feature की usability में इससे निर्णायक फर्क पड़ा

    • अब तक तो depth दिखाने वाली screen touchscreen devices का आम feature बन चुकी होनी चाहिए थी
      Face ID है, इसलिए आंखों के बीच की दूरी पता की जा सकती है, और उस slider value को automatically adjust भी किया जा सकता है
  • यह लेख एक शानदार series का हिस्सा है: https://www.copetti.org/writings/consoles/

  • jailbroken 3DS पर मेरी सबसे पसंदीदा features में से एक NSUI app है: https://3ds.eiphax.tech/nsui
    official Virtual Console releases की वजह से कुछ पुराने Nintendo games 3DS पर खेले जा सकते थे, लेकिन उसी wrapper को supported systems के किसी भी game पर इस्तेमाल किया जा सकता है। यह emulator से ज्यादा wrapper जैसा है, इसलिए performance और compatibility तुरंत बेहतर मिलती है
    इसलिए 3DS, NES/SNES/GB/GBC/GBA games को pixel-perfect तरीके से enjoy करने के लिए अच्छा handheld device बन जाता है
    कुछ साल पहले ही मुझे एक और बात समझ आई: जितना बड़ा microSD card इस्तेमाल करते हैं, 3DS उतना धीमा हो जाता है। जहां तक मुझे पता है, पूरा console storage को block-by-block पूरा scan करता है, इसलिए 64GB से ऊपर यह दर्दनाक रूप से slow हो जाता है। खासकर GBA injected games चलाने पर, क्योंकि 3DS उस mode में लगभग reboot होता है और storage को फिर से scan करता है

  • “सिस्टम वर्ज़न 3.0.0 से पहले OTP मेमोरी छिपाई नहीं जाती थी, और कोई भी vulnerability हो तो OTP key बिना दिक्कत निकाली जा सकती थी” वाला हिस्सा याद है
    पहले 3DS को hack करने के लिए OTP extraction के लिए firmware 3.0.0 पर downgrade करना पड़ता था। लेकिन 3.0.0, New 3DS के साथ पूरी तरह compatible नहीं था, इसलिए उस model पर पुराने firmware की हालत में सिर्फ lid बंद कर देने से भी console permanent brick हो जाता था। क्या दिन थे

  • यह series सच में बहुत अच्छी है
    अगर आप 3DS के लिए homebrew आज़माना चाहते हैं, तो https://github.com/devkitPro/libctru देखें

  • उम्मीद है Nintendo हाथ में पूरा console समेटने वाला portable gaming experience कभी नहीं छोड़ेगा
    बड़ी indie handheld gaming industry भी और विकसित हो, यही चाहूँगा
    high-end handheld devices के आसन्न अंत जैसा जो दिखता है, वह cloud gaming है। इसमें घर के console को चलाकर phone पर stream करने वाला तरीका भी शामिल है
    आखिर में सब इस पर निर्भर है कि लोग अपने wallet से क्या चुनते हैं। GBC की याद आती है

    • मुझे नहीं लगता handheld game consoles मरने वाले हैं। hardware लगातार बेहतर हो रहा है, और hardware requirements ठहर रही हैं
      मेरे हिसाब से Switch को Stardew Valley, Hades, Dead Cells जैसे 2D indie games में बड़ी सफलता मिली। ऐसी game design अच्छी चलती है, और अच्छे 2D graphics कभी पुराने नहीं लगते
      शक है कि लोग ऐसे बेहतरीन games खेलने के लिए, जो potato जैसी device पर भी चल जाएँ, consumers के लिए नुकसानदेह streaming model पर पैसे देंगे या नहीं
    • इसकी संभावना बहुत कम लगती है। Stadia बंद हो गया, लेकिन Switch और Steam Deck दोनों बहुत सफल रहे
      cloud gaming की latency और stable network connection पर निर्भरता अब भी कई लोगों के लिए समस्या है। ऊपर से ज्यादातर gamers शायद एक और subscription fee नहीं देना चाहेंगे, और cloud gaming के साथ आखिरकार subscription जुड़ने की संभावना ज्यादा है
      अगर खेलने के लिए किसी hardware की जरूरत वैसे भी है, तो अच्छी handheld device ही इस्तेमाल कर लें। Asus जैसे PC manufacturers भी RoG Ally जैसी handheld devices बना रहे हैं, और Switch 2 तथा Steam Deck 2 भी लगभग तय ही हैं। उल्टा, handheld devices लगातार बेहतर हो रही हैं और market share भी बढ़ता दिख रहा है
    • Sony ने PSP बंद किया, यह मुझे सच में पसंद नहीं आया, लेकिन वजह समझ आती है। Steam Deck और उसके ज्यादा powerful variants के सफल होने की वजह भी वही है
      आजकल games में exclusivity पहले जितनी मजबूत नहीं रही, और अगर कोई company Nintendo की तरह home console और portable को बिल्कुल एक में मिलाने जितनी closely integrate नहीं करती, तो वह अनावश्यक विभाजन बना रही होती है
      सोचिए अगर Nintendo ने Switch के अलावा अलग से home console भी निकाला होता, तो वह sustainable structure नहीं होता
      यह देखना मजेदार है कि लोग TV में लगाकर खेलने वाली handheld device बनाने के लिए Nintendo की “genius” और “innovation” की तारीफ करते हैं। दूसरी तरफ PSP Go और TV dock जैसे कह रहे हैं, “दोस्तों, मुझे याद नहीं किया?” PSP Go सच में छोटा और प्यारा था, इसलिए मुझे पसंद है
    • chips बस ज्यादा powerful और ज्यादा छोटे होते जा रहे हैं। Raspberry Pi पर भी पहले से कई games खेले जा सकते हैं, और करीब 10 साल बाद लगता है इसी तरह के आकार की device पर current-gen games चल पाएँगे
      एक मजेदार project के तौर पर अपनी बेटी के लिए handheld console बनाने के बारे में सोच रहा हूँ
  • ऐसे लेख सच में बेहतरीन होते हैं
    GB/GBC architecture में मेरी दिलचस्पी थी और मैं उस platform के लिए game बनाना चाहता था, लेकिन अभी तक यह लेख नहीं मिला था। पोस्ट करने के लिए धन्यवाद, और Rodrigo को लिखने के लिए धन्यवाद