1 puan yazan GN⁺ 2023-09-24 | 1 yorum | WhatsApp'ta paylaş
  • Nintendo 3DS, akıllı telefonlar ve uygulama mağazalarının büyüdüğü dönemin taşınabilir konsoluydu; gözlüksüz stereoskopik 3D, çift ekran, geriye dönük uyumlu CPU ve çeşitli I/O birimlerini karmaşık bir SoC yapısında bir araya getiriyordu
  • Üstteki 800×240 LCD, yarım genişlikli pikseller ve parallax barrier ile iki adet 400×240 kareyi aynı anda gösteriyor; derinlik kaydırıcısı ve New 3DS’in yüz takibi ise görüş açısı ve göz yorgunluğu sorunlarını azaltıyordu
  • Temel modelde 268MHz çift çekirdekli ARM11 MPCore, 128MB FCRAM, DMP PICA200 GPU ve CEVA TeakLite II DSP bulunuyordu; New 3DS ise 804MHz 4 çekirdek, 256MB FCRAM, NFC ve geliştirilmiş stereoskopik görüş sistemi ekliyordu
  • İçeride ARM11’e ek olarak DS için ARM946E-S ve GBA için ARM7TDMI de yer alıyordu; böylece Native 3DS, Nintendo DSi ve Game Boy Advance modları arasında geçiş yapılabiliyordu, ancak geliştiriciler genelde doğrudan yalnızca ARM11 MPCore ile çalışıyordu
  • İşletim sistemi ve güvenlik; NATIVE_FIRM, TWL_FIRM, AGB_FIRM, SAFE_FIRM, Boot9/Boot11 ve AES/RSA/OTP tabanlı bir güven zincirinden oluşuyordu; çeşitli açıkların ardından homebrew ve custom firmware ekosistemi gelişti

Model ailesi ve donanım nesilleri

  • Nintendo, 3DS yaşam döngüsü boyunca farklı fiyat aralıkları ve kullanıcı grupları için çeşitli revize modeller çıkardı
  • Mimari açıdan modeller 6 türe ayrılıyor
    • Nintendo 3DS (2011), Nintendo 3DS XL (2012): Orijinal mimariye dayanır; XL ile XL olmayan model arasındaki temel fark ekran boyutudur
    • Nintendo 2DS (2013): Stereoskopik ekranı kaldıran ve Game Boy’dan ilham alan bir form kullanan düşük maliyetli modeldir
    • New Nintendo 3DS (2014), New Nintendo 3DS XL (2015): Donanım yükseltmeleri, NFC okuyucu, daha fazla düğme ve geliştirilmiş stereoskopik sistemi ekler
    • New Nintendo 2DS XL (2017): New Nintendo 3DS XL’in stereoskopik özelliği çıkarılmış düşük maliyetli modelidir
  • Oyunlar için ortak taban orijinal Nintendo 3DS’tir; New serisi ise belirgin ek donanım farklarına sahiptir

Gözlüksüz 3D ekran

  • Nintendo 3DS, Nintendo DS’in halefi gibi iki LCD ekran taşır; üst ekran 800×240 piksel özelliğiyle derinlik hissi gösterir
  • Stereoskopik etki, Virtual Boy’daki gibi stereoscopic parallax ilkesini kullanır
    • Sol ve sağ göze birbirinden biraz farklı görüntüler gösterilir
    • İki görüntünün merkez konumu farkı, nesnelerin önde ya da arkada olduğu algısını oluşturur
  • Üst LCD fiziksel olarak yarım genişlikli piksellerden oluşur ve iki modda çalışır
    • 2D modu: Yatayda 2 piksel tek piksel gibi ele alınır
    • 3D modu: Tüm pikseller ayrı ayrı kullanılarak iki adet 400×240 kare aynı anda gösterilir
  • Parallax barrier, LCD piksellerinin arkasındaki arka aydınlatmayı ayırarak her gözün farklı bir piksel alt kümesini görmesini sağlar
  • Bu yöntemin bazı kısıtları vardır
    • Ek parlaklık gerektirir, bu da pil ömrünü etkiler
    • Ekran gözlere göre eğildiğinde iki paralaks karesi birbirine karışmış görünür ve göz yorgunluğu artabilir
    • Sabit duruş gereksinimi ve hızlı göz yorgunluğu, 3D özelliğini kullanışsız hâle getirebilir
  • 3D derinlik kaydırıcısı, iki kare arasındaki farkı artırıp azaltarak derinlik etkisini ayarlar
  • New 3DS, ön kamera ve kızılötesi LED kullanan yüz takibi ile eğilme sorununu hafifletir
  • Oyunların, GPU’ya normal bir kare çizdirir gibi aynı sahneyi hafifçe kaydırılmış 2 kare olarak render etmesi gerekir
    • Resmî API, iki projeksiyon matrisi oluşturan rutinler sağlar

CPU, bellek ve geriye dönük uyumluluk yapısı

  • Ana SoC olan CPU CTR, depolama birimleri ve RAM dışındaki sistemin büyük bölümünü içerir
  • Nintendo, ARM ile iş birliği yaparak ARM11 MPCore tabanlı bir CPU kümesi oluşturdu
    • Orijinal 3DS: 2 adet MP11 çekirdeği, her biri 268MHz
    • New 3DS: 4 adet MP11 çekirdeği, her biri 804MHz, paylaşımlı 2MB L2 cache
  • ARM11, ARMv6k komut setini kullanır; Thumb, Jazelle ve VFP gibi bileşenleri de içerir
    • ARMv6, tam sayı SIMD komutları ile çok çekirdek senkronizasyonu için load/store komutları sunar
    • VFP11, 32 bit tek duyarlıklı ve 64 bit çift duyarlıklı kayan nokta işlemlerini hızlandırır ve IEEE 754 standardına uyar
  • Her MP11 çekirdeğinde 8 aşamalı pipeline, dinamik ve statik dallanma kestirimi, CP15 sistem kontrol yardımcı işlemcisi, 16KB komut önbelleği ve 16KB veri önbelleği bulunur
  • ARM11 çekirdekleri ARM’nin AXI veri yolu ile bağlanır; MPCore’un Snoop Control Unit’i L1 önbellek tutarlılığını korur
  • 3DS’te ARM11 dışında iki CPU daha vardır
    • ARM946E-S: Native 3DS modunda işletim sisteminin yönettiği güvenlik ve I/O yardımcı işlemcisi olarak çalışır; DS/DSi oyunları çalıştırılırken ana işlemci olur
    • ARM7TDMI: DS/DSi modunda yardımcı işlemci olarak çalışır; GBA modunda ise ana yürütme CPU’su olur
  • Üç çalışma modu bulunur
    • Native 3DS mode: ARM11, 3DS oyunlarını çalıştırır; ARM9 I/O ve güvenliği yönetir, ARM7 kapalıdır
    • Nintendo DSi mode: ARM9 ve ARM7, DS/DSi oyunlarını çalıştırır; ARM11 ise eksik veya yeniden yerleştirilmiş DS donanımını destekler
    • Game Boy Advance mode: ARM7, GBA oyun komutlarını yürütür; ARM11 ve ARM9 arka planda destek sağlar
  • Bellek yapısı karmaşıktır
    • Geliştirici bakış açısından orijinal 3DS 128MB FCRAM, New 3DS ise 256MB FCRAM sunar
    • ARM11 tarafında güvenlik amaçlı 512KB SRAM bulunur
    • ARM9 tarafında 1MB SRAM, New 3DS’te ise 1.5MB SRAM vardır
    • ARM9 ayrıca 32KB komut TCM ve 16KB veri TCM içerir
  • FCRAM, Fujitsu ve Toshiba’nın 2002’de geliştirdiği Fast Cycle DRAM’dir ve ardışık olmayan okumalarda klasik DRAM’e göre daha düşük gecikme hedefler
  • DMA yapısı da buna dahildir
    • ARM9’un yanında yer alan XDMA, en fazla 4 kanal sunar
    • ARM11’in yanında yer alan CDMA, en fazla 8 kanal sunar
    • New 3DS, ARM11 bloğunun yanına ek olarak bir CoreLink DMA-330 daha ekler
  • 3DS geliştiricileri genellikle yalnızca ARM11 MPCore’a erişir ve programlar thread tabanlı çoklu iş parçacığı modeliyle yazılır
  • New 3DS’te oyun meta verisi yeni modeli hedeflediğini belirtirse işletim sistemi daha yüksek saat hızı, ek RAM ve L2 cache gibi özellikleri etkinleştirir
    • Aksi durumda, uyumluluk için New’e özgü donanımı devre dışı bırakır
    • Oyunlar, Old ve New için aynı anda kod tabanlarını birlikte içerebilir

Grafik işlem hattı ve PICA200

  • Nintendo 3DS, Nintendo taşınabilir ürün serisinde ilk kez kendi PPU’su yerine bir GPU üreticisinin IP çekirdeğini kullandı
  • Nintendo, DMP’nin PICA200 lisansını alıp bunu CPU CTR SoC içine yerleştirdi ve GPU 268MHz hızında çalışıyor
  • PICA200 düşük güç tüketimli bir 3D işlemcidir; OpenGL ES 1.1 ile uyumludur ve OpenGL ES 2.0 öğeleriyle genişletilmiş Maestro 2G mimarisini kullanır
  • Piksel aşaması sabit işlevli bir yapıdır, ancak Maestro functions; parçacık aydınlatma, çoklu gölge algoritmaları, poligon bölme, bump mapping, prosedürel doku ve çeşitli sis efektleri sunar
  • GPU’ya ayrılmış VRAM yalnızca 6MB olduğundan, programcıların anında erişim gereken komutları, tamponları ve sık tekrar kullanılan dokuları VRAM’de; geri kalanları ise FCRAM’de tutması gerekir
    • PICA200, FCRAM ile VRAM arasında aktarım için DMA içerir
  • LCD denetleyicisi, PICA200’ün render tamponu biçimini doğrudan anlayamadığı için ayrı bir LCD framebuffer gerekir
    • Üst ekran sol göz, üst ekran sağ göz ve alt ekran için en az 3 tane gerekir
    • Artefaktlardan kaçınmak için page flipping amacıyla kopya bir set tutulabilir
  • Oyun sırasında GPU genellikle üç ekranı da render eder
    • Üst ekran sol göz: 400×240
    • Üst ekran sağ göz: 400×240
    • Alt ekran: 320×240
    • Hepsi 8 bit RGB renkle en fazla 16,78 milyon renk gösterebilir
  • PICA200 işlem hattı; komut, vertex, geometri, rasterizer, fragment ve son işleme aşamalarından oluşur
    • Komut aşaması, command buffer’ı okuyup poligonları çizer
    • Vertex aşaması, 4 Vertex Processor birimini paralel kullanır; geometri shader etkinse yalnızca 3’ü kullanılabilir
    • Geometri aşaması, bir Vertex Processor birimini ayırıp onu ayrı bir shader olarak kullanır
    • Fragment aşaması, 4 doku birimi ve gölgelendirme biriminden oluşur
    • Piksel shader yoktur; bunun yerine 6 renk birleştirici ve Maestro işlevleri birlikte kullanılır
    • Son işleme aşaması alfa, stencil, derinlik testi ile blending ve 2×2 supersampling uygulayabilir
  • New 3DS’e MVD adlı bir DSP eklenmiş görünüyor; bu birim H.264/MJPEG açma ve YUV-to-RGB dönüşümü yapar
    • New 3DS web tarayıcısının hızlandırılmış video oynatımı için bunu kullandığı düşünülüyor
  • DS ve GBA oyunları için PPU da SoC içinde yer alır
    • DS/DSi/GBA oyunları, önceki donanımdaki gibi PPU kullanır
    • Çıkış, LgyFB üzerinden framebuffer’a aktarılır ve görüntülemeyi PICA200 üstlenir
    • Bu yapı gecikme ekler ama kullanıcı açısından ihmal edilebilir düzeydedir

Ses ve I/O

  • SoC içinde 2 ses bloğu bulunur
    • 3DS oyunları için özel bir DSP
    • 3DS, DS ve GBA oyunlarının kullandığı DS türevi CSND
  • 3DS’e özel DSP, CEVA TeakLite II’dir ve yaklaşık 134MHz hızında çalışır
    • Stereo 2 kanal, en fazla 32kHz örnekleme ve 16 bit çözünürlük çıkışı verir
    • DSP çalışma alanı olarak 512KB RAM kullanır ve bu alan 256KB’lık çift tamponlama şeklindedir
    • DSP, ADPCM ve PCM örneklerini en fazla 24 kanala kadar miksleyebilir
  • Programlar, resmî SDK ile gelen Nintendo tarafından yazılmış DSP firmware’ini çalışma zamanında yükler ve işletim sisteminin ses servisi DSP iletişimini soyutlar
  • CSND, 32 kanal sunar; bu, DS’deki karşılığının iki katıdır
  • Harici I/O, taşınabilir oyun konsolundan çok akıllı telefonlarla rekabet etmeyi hedefleyen bir yapıdadır
    • Dijital düğmeler, analog Circle Pad, 3D ve ses seviyesi kaydırıcıları, Wi-Fi anahtarı
    • Rezistif dokunmatik sensör, jiroskop, ivmeölçer
    • 1 ön kamera ve 2 arka kamera
    • Kızılötesi alıcı-verici, SD kart yuvası, 3.5mm jak, oyun kartı okuyucu
  • New 3DS ek I/O bileşenleri getirir
    • 2 dijital düğme, C-Stick, alt ekran için NFC okuyucu
    • Yüz takibi için kızılötesi LED
    • SD yerine microSD yuvası
    • Wi-Fi anahtarının kaldırılması ve yazılım üzerinden kontrol
  • Dahili arabirimler; SPI, HID, I²C, FIFO tabanlı yüksek hızlı çevre birimleri ve MCU olarak ayrılır
    • SPI; oyun kartı depolaması için flash belleği, DS güç yönetimini, Wi-Fi’ın bazı kısımlarını, dokunmatik ekranı, sesi, mikrofonu, Circle Pad’i ve diğerlerini bağlar
    • HID, dijital keypad’i 16 bit register olarak okur
    • I²C; kameraları, kızılötesi alıcı-vericiyi, NFC’yi, QTM yüz takip modülünü, jiroskopu, MCU’yu ve diğerlerini bağlar
    • eMMC ve SD yuvası, FIFO register’ları üzerinden bağlanan 16MB/s çevre birimleridir
  • Auxiliary Microcontroller, NEC tasarımlı ve Renesas üretimi bir 78K0R MCU’dur; LCD, LED, güç yönetimi, batarya, RTC, 3D kaydırıcısı, HOME/güç düğmeleri ve benzerlerini yönetir
  • I/O tabanlı servisler arasında QR Reader, AR Games, Face Raiders, Amiibos, SpotPass, StreetPass ve Play Coins bulunur

İşletim sistemi ve önyükleme yapısı

  • Nintendo 3DS, yerel çalıştırma, geriye dönük uyumluluk ve bakım modları sağlamak için birden fazla firmware saklar
    • NATIVE_FIRM: 3DS’in yerel işlevlerini çalıştırır ve ana programı ARM11 yürütür
    • TWL_FIRM: 3DS’i Nintendo DSi gibi çalıştırır ve ARM9 ile ARM7 ön planda olur
    • AGB_FIRM: 3DS’i Game Boy Advance gibi çalıştırır ve ana programı ARM7 yürütür
    • SAFE_FIRM: sistem güncellemesi gibi bakım işleri için kullanılır
  • NATIVE_FIRM içinde ARM9 ve ARM11, ayrı ayrı işletim sistemi rolleri üstlenir
    • ARM9; Kernel9 ve Process9’u çalıştırır ve güvenlik, şifreleme, I/O, dosya sistemi, başlık doğrulama ve kurulumdan sorumludur
    • ARM11; Kernel11 ve çeşitli kullanıcı süreçlerini çalıştırır, ağ iletişimi, HOME Menu, uygulama yürütme ve donanım servislerinin soyutlanmasını sağlar
  • ARM11 zamanlayıcısı, çekirdekleri tipik genel amaçlı çekirdekler gibi ele almaz
    • İlk çekirdek olan appcore oyunlar içindir ve FIFO zamanlaması kullanır
    • İkinci çekirdek olan syscore sistem işleri içindir ve çalışma süresinin %30’unu kullanıcı uygulamalarına ödünç verebilir
    • New 3DS’teki dördüncü MP11 çekirdeği yalnızca yüz takibi içindir
    • Üçüncü MP11 çekirdeği varsayılan olarak zamanlanmaz ve çoğunlukla boştadır
    • New 3DS’teki ek CDMA’ya yalnızca önyükleme sırasında erişilebilir ve sonrasında kullanılmaz
  • Uygulamaların gerçekten kullanabildiği RAM, toplam FCRAM’den daha azdır
    • Orijinal 3DS: 128MB içinden varsayılan 64MB
    • New 3DS: 256MB içinden varsayılan 124MB
    • APPMEMTYPE bayrağıyla HOME Menu açılmadan önyükleme yapılarak sırasıyla en fazla 96MB ve 176MB elde edilebilir
  • Depolama ortamı; Boot ROM, OTP, eMMC NAND ve SD/microSD’den oluşur
    • Boot9 ve Boot11, önyükleme için kullanılan ROM’lardır ve güvenlik nedeniyle gizlidir
    • OTP, üretim sırasında tek sefer yazılan konsola özgü bilgiler ile şifreleme anahtarlarını içerir
    • eMMC NAND’de sistem verileri, firmware ve 3DS/DSi modu kullanıcı verileri saklanır
    • SD/microSD’de eShop yazılımları, kayıt verileri, fotoğraflar, ses kayıtları ve benzerleri saklanır; bunlar AES-128-CTR ile korunur
  • Önyüklemede önce ARM9’un Boot9’u çalışır, ardından ARM11’in Boot11’ini uyandırır ve NAND içindeki NCSD başlığı ile firmware partition’larını doğrular
    • Geçerli firmware’i bulmak için SHA-256 hash ve RSA-2048 imzalarını doğrular
    • Bu başarısız olursa Wi-Fi modülünün flash önyüklemesini dener; o da başarısız olursa hata ekranı gösterir
    • NATIVE_FIRM yüklendiğinde süreç Kernel9, Process9, Kernel11, sistem süreçleri, NS ve ardından HOME Menu veya oyuna kadar ilerler
  • HOME Menu, kurulu uygulamaları kaydırılabilir bir ızgarada gösteren tek sayfalık bir gezinme kabuğudur
    • NS modülü ayrıca HOME düğmesi katmanı ve sanal klavye gibi Applet çağrılarını da sağlar
    • New 3DS’te oyun uyumluluk modunda çalışsa bile Applet ve NS rutinleri tüm donanımı kullanabilir
  • Sistem güncellemeleri çevrimiçi veya oyun kartuşu ile yapılabilir
    • Kartuşlar, kullanıcı uygulaması güncellemeleri olmadan yalnızca sistem güncellemesi içerir
    • Ağ güncellemeleri tam paketi içerir
    • Kurulum, SAFE_FIRMe yeniden başlatıldıktan sonra System Updater tarafından gerçekleştirilir

Oyun geliştirme, dağıtım, Virtual Console

  • 3DS geliştirme ekosistemi, ARM tabanlı akıllı telefon endüstrisi ve derleyici gelişmelerinden etkilendi, ancak Nintendo henüz standart bir toolchain sunmuyordu
  • Donanım geliştirme kitleri Intelligent Systems ve Kyoto MicroComputers tarafından sağlandı
    • CTR-BOX, 3DS donanımını içeren metal bir kutu ve sahte bir 3DS kasasından oluşuyordu
    • Resmî flash kartlar, harici test kullanıcılara oyun prototipleri dağıtmak için kullanılıyordu
    • New 3DS için SNAKE kiti sunuldu
  • Resmî SDK; 3DS için armcc, hata ayıklayıcı, donanım ve OS servis API'leri, grafik kütüphaneleri, paketleyici, ağ-ses-video kütüphaneleri, Visual Studio 2010 eklentisi, PICA200 araçları ve profiler içeriyordu
  • Grafik kütüphaneleri dört türdü
    • GL: Basit ama yavaş bir OpenGL ES API'si
    • GD: PICA200 komutları üreten daha hızlı bir alternatif
    • GR: Donanıma en yakın PICA200 komut API'si
    • GX: PICA200 yönetimi için genel amaçlı kütüphane
  • Oyun çalıştırma ortamı üç çeşitti
    • Gamecard: 128MB~4GB ROM veya en fazla 2GB Flash ile kayıt için backup memory içerebiliyordu
    • eShop/SD Card: İndirilebilir yazılımları, ön siparişi ve DLC dağıtımını destekliyordu
    • Local wireless: Download Play, 3DS'e taşındı; aktarılan oyunlar NAND'a kuruluyor ve yalnızca bir slot kullanıyordu
  • Virtual Console, eShop üzerinden DSiWare, NES/Famicom, Sega Game Gear, Game Boy ve Game Boy Color oyunları sunuyordu
    • New 3DS kullanıcıları Super Nintendo kataloğuna da erişebiliyordu
    • Çoğu, ROM ve emülatör içeren uygulama paketleri olarak çalışıyordu
  • Game Boy Advance oyunları resmî olarak yalnızca Ambassador Program kullanıcılarına sunuldu
    • ARM11 emülatörüyle değil, AGB_FIRM üzerinden ARM7'de native olarak çalışıyordu
    • GBA oyunları FCRAM'e kopyalandıktan sonra AGB_FIRM'e yeniden başlatılıyor ve kontrol ARM7'ye geçiyordu
  • Oyun güncellemeleri eShop üzerinden dağıtılıyordu ve Download Play dışındaki oyun türlerine uygulanıyordu

Güvenlik, kopya koruması, homebrew

  • 3DS güvenliğinin ana hedefleri Game/CTR card reader ve işletim sistemi idi
    • CTR kartı içindeki veriler NCSD biçimindeydi ve kimlik doğrulama, doğrulama ve şifre çözme işlerini OS üstleniyordu
    • Gerçek güven zinciri, işletim sistemi ve önyükleme yapısına odaklanıyordu
  • Özel güvenlik donanımı bulunuyordu
    • ARM11'in XN bayrağı ve ARM9'un MPU'su rastgele bellek yürütmeyi kısıtlıyordu
    • ARM9, güvenliğe ayrılmış bir işlemci gibi davranıyor ve AES, RSA, PRNG gibi kriptografik bloklara erişiyordu
    • AES motoru, AES-128 şifreleme/şifre çözme, en fazla 64 anahtar yuvası ve CTR/CCM/CBC/ECB modlarını destekliyordu
    • RSA motoru, açık anahtar tabanlı RSA işlemlerini gerçekleştiriyordu ve 4 anahtar yuvasına sahipti
    • OTP, konsola özgü anahtarları ve CTCert'i içeriyordu; eMMC CID de anahtar gizlemekte kullanılıyordu
  • Güven zinciri Boot9, OTP, eMMC, NCSD, NCCH ve Title doğrulamasına kadar uzanıyordu
    • NCSD ve NCCH, RSA-2048 + SHA-256 imzalarını kullanıyordu
    • NCCH payload'ları AES-128 CTR ile şifreleniyordu
    • Title'lar RSA-2048, RSA-4096 veya ECDSA ve SHA-256 ile imzalanıyordu
    • eShop indirme lisansı olan Ticket da RSA-2048 + SHA-256 ile imzalanıyordu
  • Uygulamada zayıflıklar da vardı
    • Kernel11'in AXI WRAM sayfa tablosu ayarı, okuma-yazma-çalıştırma izinlerini geniş biçimde veriyordu
    • Sistem 3.0.0'dan önce OTP belleği gizlenmiyordu
    • Process9 ile Kernel9 arasında yetki ayrımı yoktu
    • ASLR yoktu ve sistem sürüm düşürmeye karşı koruma da bulunmuyordu
    • WebKit tabanlı web tarayıcısı sürekli saldırı hedefi oldu
  • İlk homebrew ve kopyalama, DS flash kartlarıyla başladı
    • DSi ve 3DS, izinli kart listesini tutan whitelist ile flash kartları engellemeye çalışıyordu
    • Üreticiler, kartuş başlıklarını yeniden programlayarak bunların farklı izinli oyunlar gibi tanınmasını sağlıyordu
  • 2013'te Gateway3DS, ilk gerçek anlamda işlevsel 3DS flash kartı olarak ortaya çıktı
    • Blue Gateway, MSET exploit giriş noktasını kurmak için bir DS flash kartıydı
    • Red Gateway, FPGA ve microSD ile orijinal oyun kartlarını kopyalıyordu
    • Launcher.dat, MSET exploit payload'ı ve custom firmware işlevi görüyordu
  • Nintendo buna güncellemelerle karşılık verdi
    • 5.0.0-11, MSET exploit'i geçici olarak düzeltti
    • 7.0.0-13, kernel exploit'lerini engelledi ve NCCH şifre çözme güven zincirine bir RSA modülü ekledi
    • 9.3.0, Gateway3DS'in özel kernel exploit'ini yamaladı
    • Sky3DS, 11.0 sürümünde kara listeye alındı
  • Homebrew ekosistemi, libctru, nihstro, Ninjhax ve Homebrew Launcher ile gelişti
    • Ninjhax, Cubic Ninja'nın QR kod özelliğini giriş noktası olarak kullanıyordu
    • GSPWN, GPU DMA ile HOME Menu heap'ini ezmeye dayanan bir zafiyetti
    • Homebrew Launcher, .3dsx biçimindeki imzasız homebrew uygulamalarını çalıştırıyordu
  • memchunkhax ve memchunkhax2, Kernel11 yetki yükseltmesini mümkün kıldı
    • FCRAM'de depolanan memchunk header manipüle edilerek AXI WRAM erişimi ve Kernel11 kontrolü elde ediliyordu
  • 2015'te New 3DS'e arm9loader eklendikten sonra arm9loaderhax ortaya çıktı
    • Önyükleme anında Kernel9 yetkileriyle rastgele kod çalıştırmayı mümkün kılan kalıcı bir exploit'ti
    • Luma3DS, Godmode9, Anemone3DS ve nds-bootstrap gibi araçlar yaygın biçimde kullanıldı
  • 2016~2017 döneminde Boot9 analiziyle sighax, boot9strap ve ntrboot ortaya çıktı
    • sighax, güven zincirini etkisiz kılmak için Boot9'un RSA-2048 imza doğrulama kusurundan yararlanıyordu
    • boot9strap, SD kart payload'ı veya normal önyüklemeyi destekleyen alternatif bir bootloader oldu
    • ntrboot, Boot9 yetkilerini elde etmek için DS flash kartı, mıknatıs ve tuş kombinasyonu kullanıyordu
    • Bu zafiyetler Boot ROM içinde yer aldığı için yazılım güncellemeleriyle düzeltilemiyordu
  • 2018'den sonraki yöntemler, boot9strap kurulumunu basitleştirme yönünde gelişti
    • seedminer, Friend Code, SD kart alt dizin adı ve kısa bir brute force ile movable.sed dosyasını yeniden oluşturuyordu
    • BannerBomb3, DSiWare title banner ayrıştırması sırasında Settings uygulamasındaki bir stack overflow'dan yararlanıyordu
    • SAFE_FIRM tabanlı unSAFE_MODE ve safehax ile HOME Menu tabanlı menuhax67 ve nimdsphax yolları kullanıldı
  • Mayıs 2023'teki 11.17.0 güncellemesi, ek ekipman gerektirmeyen son giriş noktalarından biri olan BannerBomb3'ü yamalayarak etkisiz hâle getirdi
    • Bunun ardından kullanıcılar yasal bir 3DS oyun exploit'ine, ntrboot uyumlu bir DS flash karta veya bir WebKit exploit'ine ihtiyaç duymaya başladı

1 yorum

 
GN⁺ 2023-09-24
Hacker News yorumları
  • Gameboy Advance oyunlarını çalıştırırken içinde gerçek fiziksel bir GBA CPU bulunması gerçekten şaşırtıcı.
    Çıkıştan önce tüm söylentileri okuyup mavi modeli ön sipariş vermiştim; başlangıçta yaklaşık 250 dolar ödediğim için Ambassador Program kapsamındaydım. Nintendo çıkıştan hemen sonra fiyatı ciddi biçimde düşürünce özür mahiyetinde eShop’ta olmayan oyunlar da dahil olmak üzere birkaç ücretsiz oyun verdi; bundan memnun kalmıştım.
    Çocukken oynadığım Mario Kart Super Circuit’i 3DS’in harika kaydırmalı pediyle yeniden oynamak rüya gibiydi; eskiden kullandığım GBA’daki gibi gerçek CPU üzerinde çalıştığını öğrenince bu daha da özel bir anıya dönüştü.

    • Bunun nedeni daha da şaşırtıcı. Nintendo geriye dönük uyumluluğu matruşka bebekleri gibi üst üste yığdığı için GBA CPU neredeyse tesadüfen içeri girmiş sayılır.
      Nintendo 3DS’in içinde Nintendo DSi’nin tüm sistem mimarisi var ve DSi CPU aynı zamanda sistemin gözetmen CPU’su olarak görev yapıyor. DSi zaten temelde Nintendo DS mimarisinin büyük ölçüde hız aşırtılmış bir biçimiydi; ilk iki Nintendo DS modeli de GBA yuvası üzerinden geriye dönük uyumluluk için GBA’nın ARM7TDMI’sini içeriyordu.
      Ambassador Program sırasında Nintendo, 3DS’i Game Boy Advance modunda başlatan AGB_FIRM firmware’ini dağıttı; Nintendo DS modu için de TWL_FIRM vardı. Bugün 3DS’i hack’lerseniz başka GBA yazılımlarını da yükleyebilirsiniz; çevre birimi bağımlılıkları hariç tutulursa GBA oyunlarını fiilen kusursuz doğrulukla çalıştırabilir.
    • Sony de benzer bir yöntem kullanmıştı.
      PlayStation 2’nin bir giriş/çıkış çipine ihtiyacı vardı ve Sony PS1 CPU’yu seçti. PS1 oyunları çalıştırılırken yürütme o tarafa devrediliyordu.
      Yanlış hatırlamıyorsam ilk PlayStation 3’lerde PS2 CPU ve GPU vardı, fakat PS2 oyunu çalıştırılmadığında pek bir işleri yoktu sanırım. Daha sonra maliyeti düşürmek için emülasyona geçilirken kaldırılmış olmaları çok muhtemel.
    • Gerçek fiziksel bir Gameboy Advance CPU koymak eski bir numara ama hâlâ havalı.
      GBA da geriye dönük uyumluluk için GBC CPU koymuştu ve kartuşun kendisinin bastığı fiziksel bir anahtarla mod değiştiriyordu. PS2 de PS1 CPU’yu kartın giriş/çıkış bileşeni olarak yeniden kullanıp geriye dönük uyumlulukta değerlendirebiliyordu; diğer bileşenlerin ise emülasyon desteği aldığını hatırlıyorum.
    • Walmart, resmi fiyat indirimi ve Ambassador Program başvuru bitişinden birkaç gün önce ürünü zaten düşmüş fiyatla satmaya başlamıştı.
      Bir Reddit gönderisi sayesinde düşük fiyattan alıp ücretsiz oyunları da edinebilmiştim. Ücretsiz oyunları neredeyse hiç oynamadım ama sistemi kandırmışım gibi hissetmiştim.
    • GBA CPU, NDS CPU’nun bir parçası olduğu için 3DS’in içinde de bulunuyor.
  • 3DS çok yavaş bir başlangıç yaptı ama sonunda kişisel olarak en sevdiğim konsollardan biri oldu.
    Hiç N64’üm olmadığı için Ocarina of Time ve Majora’s Mask’i ilk kez harika 3D remaster’lar sayesinde oynadım. Tam DS geriye dönük uyumluluğu da büyük bir artıydı; ekrandaki çirkin tam sayı olmayan ölçekli büyütmeden kaçınmak için Start’a basılı tutup başlatmak gerekiyor.
    Softmod yapılmış bir cihazda desteklenen homebrew ve emülasyon kapsamı da geniş; bu yüzden çok çekici küçük bir cihaz. Küçük New 3DS tasarımını da tüm zamanların en iyilerinden biri olarak seviyorum; havalı görünen, oyuncak hissi veren değiştirilebilir faceplate’lerden epey satın almıştım.
    Bir diğer gerçekten güzel şey de pil eskimeye başladığında Nintendo’yu arayıp kendim ve eşiminki için iki yeni orijinal pil satın alabilmiş olmamdı. Tanesi yaklaşık 15 sterlindi ve cihazı sökmeden değiştirilebiliyordu. Günümüzde nadir görülen bir yaklaşım.

  • Pandemi sırasında ADHD yüzünden sonunda New Nintendo 3DS XL’den üç tane aldım.
    Birini Japonya’dan ithal edip ABD ROM’una çevirdim. Seyahat için gerçekten seviyorum. 3D efekti harika ve kapatılabilmesi de güzel; pil ömrü de mükemmel.
    Ama her hobide olduğu gibi, bir şeyler nadirleşince insanın canı çekiyor ve toplamaya başlıyor; aynı anda üç konsol oynayamayacağıma göre artık elden çıkarmam gerekecek gibi.

    • Üç konsolun varsa iki arkadaşınla Tri Force Heroes oynamalısın.
    • Pillerin bozulmasını engellemenin bir yolu varsa ya da ileride yedek pil bulunabilecekse sanırım elimde tutardım.
      Daha önce New Nintendo 2DS XL almıştım; DS serisinin son yinelemesi ve DS, DSi, 3DS oyunlarının hepsini çalıştırıyor. “new” DS’e özel çıkan oyun sayısı sadece birkaç tane olduğundan yaklaşık 15 yıllık oyun tarihini destekliyor sayılır.
      Gördüğüm her yerde DS oyunu almaya çalışıyorum ama iyi fiyat bulmak şimdiden zorlaştı; Bravely Default gibi bazı oyunlar buralarda hâlâ yaklaşık 60 avro. DS’te kaba saba seri üretim oyun da çok fazla, onları pas geçiyorum.
  • 3DS’te derinlik ayarının çok kolay erişilen bir fiziksel kaydırıcıyla yapılması dahiyane bir tasarımdı.
    Hangi araştırma sonucunda 3D özelliğinin özünü bu şekilde ayarlatmaya karar verdiler bilmiyorum ama 3D özelliğinin kullanılabilirliğinde belirleyici fark yarattı.

    • Şimdiye kadar derinlik hissi veren ekranların dokunmatik ekranlı cihazlarda sıradan bir özellik hâline gelmiş olması beklenirdi.
      Face ID varken gözlerin birbirinden ne kadar uzak olduğunu bilebilir ve o kaydırıcı değerini otomatik ayarlayabilir.
  • Bu yazı harika bir serinin parçası: https://www.copetti.org/writings/consoles/

  • Jailbreak yapılmış 3DS’te en sevdiğim özelliklerden biri NSUI uygulaması: https://3ds.eiphax.tech/nsui
    Resmi Virtual Console sürümleri sayesinde bazı eski Nintendo oyunlarını 3DS’te oynayabiliyorduk; aynı wrapper’ı desteklenen sistemlerdeki herhangi bir oyun için kullanabiliyorsunuz. Emülatörden çok wrapper’a yakın olduğu için performans ve uyumluluk doğrudan iyi oluyor.
    Böylece 3DS, NES/SNES/GB/GBC/GBA oyunlarını piksel düzeyinde doğru biçimde oynamak için iyi bir taşınabilir cihaz hâline geliyor.
    Ancak birkaç yıl önce fark ettiğim bir başka şey, daha büyük microSD kart kullandıkça 3DS’in yavaşlamasıydı. Bildiğim kadarıyla konsolun tamamı depolamayı blok blok baştan sona tarıyor; 64 GB ve üstünden itibaren acı verecek kadar yavaşlıyor. Özellikle GBA enjekte edilmiş oyunlarda, 3DS neredeyse o moda yeniden başlatıldığı için depolamayı tekrar tarıyor.

  • “Sistem sürümü 3.0.0’dan önce OTP belleği gizlenmiyordu; herhangi bir açık varsa OTP anahtarı sorunsuzca çıkarılabiliyordu” kısmı aklımda kalmış
    Eskiden 3DS’i hacklemek için OTP çıkarma amacıyla firmware’i 3.0.0’a düşürmek gerekiyordu. Ama 3.0.0, New 3DS ile tamamen uyumlu değildi; o modelde eski firmware durumundayken kapağı kapatmanız bile konsolu kalıcı olarak brick ediyordu. Güzel günlerdi

  • Bu seri gerçekten çok iyi
    3DS için homebrew denemek istiyorsanız https://github.com/devkitPro/libctru’ya bakabilirsiniz

  • Nintendo’nun, tüm bir konsolu avuç içine sığdıran taşınabilir oyun konsolu deneyiminden asla vazgeçmemesini umuyorum
    Daha büyük indie taşınabilir oyun sektörünün de gelişmesini isterim
    Üst seviye taşınabilir cihazların yaklaşan sonu gibi görünen şey bulut oyun. Buna evdeki konsolu çalıştırıp telefona stream etmek de dahil
    Sonunda her şey herkesin cüzdanıyla neyi seçeceğine bağlı. GBC’yi özlüyorum

    • Taşınabilir oyun konsollarının öleceğini sanmıyorum. Donanım gelişmeye devam ediyor, donanım gereksinimleri ise durağanlaşıyor
      Switch’in Stardew Valley, Hades, Dead Cells gibi 2D indie oyunlarda büyük başarı yakaladığını düşünüyorum. Bu tür oyun tasarımı iyi işliyor ve iyi 2D grafikler asla eskimiş görünmüyor
      Patates gibi cihazlarda bile çalışacak harika oyunları oynamak için insanların, tüketici aleyhine olan streaming modeline para vereceğinden şüpheliyim
    • Bu olasılık çok düşük görünüyor. Stadia kapandı ama Switch ve Steam Deck ikisi de çok başarılı oldu
      Bulut oyunun gecikme süresi ve kararlı ağ bağlantısına bağımlılığı hâlâ birçok kişi için sorun. Üstelik oyuncuların çoğunun bir abonelik ücreti daha ödemek isteyeceğini sanmıyorum; bulut oyun da sonunda büyük olasılıkla abonelikle gelecek
      Zaten oynamak için bir donanıma ihtiyacınız olacaksa iyi bir taşınabilir cihaz kullanmak yeterli. Asus gibi PC üreticileri de RoG Ally gibi taşınabilir cihazlar üretiyor; Switch 2 ve Steam Deck 2 de fiilen kesin gibi. Aksine taşınabilir cihazlar sürekli daha iyiye gidiyor ve pazar payları da artıyor gibi
    • Sony’nin PSP’yi bırakmasından gerçekten hoşlanmıyorum ama nedenini anlıyorum. Steam Deck ve daha güçlü türev cihazların başarılı olmasının nedeni de aynı
      Günümüzde oyunlarda özel kalma durumu eskisi kadar güçlü değil; Nintendo gibi ev konsolu ile taşınabilir olanı tamamen birleştirecek kadar sıkı entegre etmezseniz şirket gereksiz bir ayrım yaratmış oluyor
      Nintendo’nun Switch’in yanında ayrıca bir ev konsolu da çıkardığını düşünün; sürdürülebilir bir yapı olmazdı
      İnsanların TV’ye takıp oynayabildiği taşınabilir bir cihaz yaptığı için Nintendo’nun “dehasını” ve “yenilikçiliğini” övmesi eğlenceli. Öte yandan PSP Go ve TV dock’u da “Arkadaşlar, beni hatırlamıyor musunuz?” der gibi duruyor. PSP Go gerçekten küçük ve sevimli, seviyorum
    • Çipler yalnızca daha güçlü ve daha küçük hâle gelecek. Raspberry Pi’de bile şimdiden birçok oyun oynanabiliyor; yaklaşık 10 yıl sonra benzer boyuttaki cihazlarda güncel nesil oyunların çalışabileceğini düşünüyorum
      Eğlenceli bir proje olarak kızım için taşınabilir bir konsol yapmayı düşünüyorum
  • Bu tür yazılar gerçekten harika
    GB/GBC mimarisiyle ilgileniyordum ve o platform için oyun yapmak istiyordum ama bu yazıyı henüz bulamamıştım. Paylaştığın için teşekkürler; Rodrigo’ya da yazdığı için teşekkürler