PlayStation 2 Mimarisi

Rodrigo Copetti tarafından hazırlanan pratik bir analiz

Erişilebilirlik araçları veya eski tarayıcılar kullanıyorsanız, 'klasik' sürüme geçin.




Destekleyici görüntüler

Model

Image
Orijinal PlayStation 2.
Piyasaya sürülme; 04/03/2000'de Japonya, 26/10/2000'de Amerika ve 24/11/2000'de Avrupa

Anakart

Image
Anakart
Sadece Japonya'da pisayasa sürülen SCPH-10000 Modelinin 'GH-001' revizyonu gösteriliyor.
Aldığımız bağışlar sayesinde, bu modeli satın alıp, Çiplerin büyük çoğunluğunu tespit edebilmemi sağlayan bir fotoğraf çekebildim.
Sağ alt köşedeki çipin 4 MB BIOS ROM olduğunu tahmin ediyorum
Image
Önemli parçaları etiketlenmiş anakart

Diyagram

Image
Ana mimari diyagramı
Orijinal dizayn (revizyon 'SCPH-10000'de uygulanan hâli).
Her veriyolu için genişliği ve hızı üstüne yazılarak gösteriliyor.
Bu mimari birçok revizyona uğradı, aşağıda daha fazla detaylandırılacak

Kısa bir giriş

PlayStation 2, neslinin en güçlü konsollarından biri değildi. Ne var ki diğer şirketlerin hayal bile edemeyeceği bir popülerlik seviyesine ulaşmayı başardı.

Bu makine, Orijinal PlayStation’ın basitliğine yakın bile değildi ancak neden önceki karmaşık konsollarla aynı kaderi paylaşmadığını irdeleyeceğiz.


İşlemci (CPU)

Bu konsolun tam kalbinde, Emotion Engine ya da ‘EE’ denilen, Sony tarafından dizayn edilen, ~294.91 MHz’de çalışan güçlü bir paket (çipler bütünü) görüyoruz [1]. Çipset, birden fazla bileşeni içinde bulunduruyor ve bunlardan biri de Ana İşlemci (CPU). Geri kalan kısımları ise belirli görevleri hızlandırmak için CPU’nun kullanımındadır.

Çipteki Lider

Ana işlemci çekirdeği, MIPS R5900 uyumlu bir işlemci fakat birçok gelişmiş özellikle beraber geliyor. Bu, konsol açıldığı andan itibaren talimat (CPU Instruction) yürütmeye başlayan ilk çiptir. İşlemci, aşağıda sıralanan özelliklere sahiptir:

Çekirdek, 32-bit kayan noktalı sayılarla (C’de float olarak da bilinir) olan işlemleri hızlandıran bir ayrılmış kayan nokta işleme birimi (‘COP1’ olarak adlandırılır) ile tamamlanmıştır. Bu alışılmadık bir parçadır çünkü IEEE 754 standardını takip etmez ve bunun en bariz olanı infinity (sonsuzluk) değerinin olmayışıdır (bunun yerine 0 hesaplanır) [2].

Tanıdık bir hafıza seçimi

Emotion Engine’in yanında iki adet 16 MB RAM bloğu olmak üzere toplam 32 MB ana hafızası vardır. Kullanılan hafızaya 16-bit veri yolu ile ulaşılıyor, türü ise RDRAM. (dejavu!)

Image
Emotion Engine’in bellek dizaynı. Tıkanıklığın nerede ortaya çıkacağını tahmin edebilirsiniz.

İlk başta, bunu duyması biraz hayal kırıklığı yaşatabilir zira bunun aksine Emotion Engine’in dahili veriyolu 128-bit gibi büyük bir genişliğe sahip. Ancak, RAM çipleri; iki çipi bağımsız iki 16-bit veriyolu (her çipe 1 veriyolu) ile bağlamak suretiyle elde edilen çift kanallı mimariyi kullanacak şekilde stratejik olarak konumlandırılmıştır. Ortaya çıkan kurulumla teorik olarak 3,2 GB/sn’lik bir hız elde edilir, dolayısıyla hafıza gecikmesinin bu konsolda bir sorun olmayacağından emin olabilirsiniz!

Emotion Engine’in köşesinde, ana hafıza ile Karalama belleği arasında ya da ana hafıza ile EE içindeki bileşenler arasında veri transferi yapan güçlü bir Doğrudan Bellek Erişimi Kontrolcüsü (DMA Controller) ya da ‘DMAC’ var.

Veri aktarımı 128-bit’lik öbekler halinde yapılır fakat işin ilginç kısmı: Her sekiz öbekte bir ana veriyolunun kilidi geçici olarak açılır. Bu, paralelde (10 adede kadar) diğer DMA aktarımları ya da İşlemci’nin (CPU) ana veriyolunu kullanabilmesi için kapı aralar. Bu işleyiş biçimi (modus operandi) için dilim modu (slice mode) denir ve bu DMA birimindeki birçok mevcut moddan biridir. Şunu aklınızda bulundurun ki dilim modu, ana veriyolundaki gecikmeleri azaltmayı, DMA transferi genelinde bir yavaşlama pahasına yapar.

Geçmiş aksiliklerin önlemesi

İstesek de istemesek de Emotion Engine’in içinde meydana gelen trafiğin büyüklüğü sebebiyle, bu dizayn, sonunda Birleşik Hafıza Mimarisi ya da kısa adıyla UMA’nın getirdiği sonuçlardan muzdarip olacaktır. Şöyle ki: Birden çok bağımsız bileşen, ana hafızaya aynı anda eşirmeye çalışıp tıkanıklığa sebebiyet verecek. Aslında bu sorunu düzelmek için Sony, devamlı hafıza ihtiyacını şu yollarla hafifletti:

Bu, önbellekten yararlanabilecek uygulamalar için çok elverişli görünebilir ancak ya Görüntü Listeleri’ni (Display Lists) manipüle etme gibi önbelleği kullanmaması gereken işlemler ne olacak? Neyse ki İşlemci, sadece ve sadece Geri Yazma Arabelleğini kullanan Önbelleksiz (UnCached) Mod adlı bir diğer hafıza erişim moduna sahiptir. Böylelikle Önbelleği (Önbellek kayıplarını) düzeltmek için İşlemci döngüsü heba edilmez.

Dahası, Önbelleksiz hızlandırılmış mod da mevcut. Bu mod, hafızadaki ardışık adreslerin okunmasını hızlandırmak için bir arabellek ekler.

Diğer ilginç parçalar

Aynı Emotion Engine paketi içinde Görüntü İşlem Birimi (Image Processing Unit) ya da ‘IPU’ denilen, görüntü çözmeye (decompression) yarayan bir diğer işlemci var. MDEC’nin halefi olan IPU, bir oyunun MPEG2 görüntülerini (movie) Ana İşlemciyi (CPU) meşgul etmeden çözmesi gerektiğinde kullanışlı olabilir.

Uzun lafın kısası, oyun, sıkıştırılmış görüntü akışını IPU’ya (umarız DMA kullanarak) gönderir ve bu GPU’nun (Grafik İşlemci) ekranda gösterebileceği bir formata çevrilir. Ayrıca PS2’nin İşletim Sistemi de DVD oynatma için IPU’dan istifade eder.

Son olarak, IPU ayrıca sıkıştırılmış Yüksek çözünürlüklü dokuları (Hi-res textures) da işler. Bu da İşlemci (CPU) kullanımını ve büyük transferleri azaltır.


Yardımcı İşlemciler (Co CPU’lar)

Rakipleri son ürünlerini piyasaya süreli iki yıl olmuştu. Önceki makalemizi okuduktan sonra bu makaleyi okumaya okumaya başladıysanız, tahminimce PS2’yi o zamanlarki gücüne kavuşturan ‘o şeyi’ görmeyi hâlâ bekliyorsunuz. Öyleyse, müsaadenizle, Sony’nin Emotion Engine’e sığdırdığı, çok önemli bir bileşen setini sizlere duyurayım: o güçlü Vektör İşlem Birimleri (Vector Processing Units) nâm-ı diğer ‘VPU’.

Mimari

Vektör İşlem Birimi, vektörleri ve bilhassa dört kayan noktalı (float) sayıdan oluşan vektörleri işlemek için tasarlanmış küçük bağımsız bir işlemcidir. Bu işlemciler o kadar hızlıdırlar ki işlem başına tek döngü harcarlar, bu ise vektör işleme için aşırı elverişlidir. Buna karşın CPU’nun FPU’suyla aynı standart dışı (IEEE 754’e uymayan) davranışı sergilerler.

VPU’lar aşağıdaki bileşenlerden oluşur:

İşlevsellik

Vektör biriminin çalışması için ‘başlatılması’ gerekir. Ana İşlemci (CPU), bu iş için olan mikrokodu sağlamaktan sorumludur.

Emotion Engine’in içine konmuş iki VPU vardır ancak bunlar farklı şekilde ayarlanmış olup, farklı kullanım ve optimizasyonlara elverişlidirler.

Vektör İşlem Birimi 0

Image
VPU0 Mimarisi.

İlk VPU yani VPU0, CPU ile diğer vektör birimi (VPU1) arasında konumlandırılmıştır. Ana işlemciye ‘yardımcı’ rolde bulunur.

VPU0, iki adet işlem moduna sahiptir:

  • Mikro Mod: Bu mod ‘geleneksel mod’dur. VPU, Mikro Hafıza’da bulunan bir mikroprogramın ’mikro talimatlarını’ bağımsızca yürütecektir.
  • Makro Mod: VPU0, CPU için ’COP2’ye (Yardımcı İşlemci 2’ye) dönüşür ve belli bir 128-bit veriyolu aracılığıyla CPU’dan alınan ’makro talimatlar’ı çalıştırır.
    • Makro talimatlar, micro talimatlarla aynı işlevselliğe sahiptir ancak farklı opcode’lar (assembly kodları) kullanır. Buna rağmen, VPU yürütme birimi artık ayrık değildir (yani aynı zamanda sadece 1 talimat yürütebilir).
    • Bu mod VPU0’ın tüm bileşenlerinden tamamen yararlanamasa da CPU’nun vektör işlemlerini hızlandırmaya devam eder. Üstelik, basitlik açısından, bir yardımcı işlemciyi programlamak, bağımsız bir birimi programlamaktan daha kolaydır (bilgisayar programlayıcıları bunu kullanışlı bulacaktır).

VPU0’ın hafıza haritası (memory map’i), ek olarak diğer VPU’nun bazı işlemci kayıtlarına (register) ve bayraklarına (flag) da erişebilir ki bu muhtemelen diğer VPU’nun durumunu kontrol etmek ya da gerçekleştirdiği işlemlerin sonuçlarını hızlıca okuyabilmek içindir.

Vektör İşlem Birimi 1

Image
VPU1 Mimarisi.

Mevcut ikinci VPU, yani VPU1 ise VPU0’ın dört katı mikro hafıza ve VU Hafızasıyla yükseltilmiş bir versiyonudur. Dahası, bu birim Temel İşlev Birimi (Elementary Function Unit) ya da ‘EFU’ adı verilen; üstel ve trigonometrik fonksiyonların yürütülmesini hızlandıran ilâve bir bileşen içerir.

VPU1 konum olarak, VPU0 ve (GPU’ya çıkan kapı olan) Grafik Arayüzü’nün arasında bulunur, bu sebeple, ana veri yolunu kullanmadan ve olabildiğince hızlı şekilde GPU’yu geometriyle beslemek için ekstra veri yolları içerir.

Öte yandan VPU1, konumu gereği, sadece mikro modda çalışır.

VPU’nun trigonometrik işlemler için dizayn edildiği çok açık ve GPU için bir ön işlemci olarak hizmet edebilir. Genellikle bu sebepten, meşhur Görüntü Listeleri’ni teslim etmekle yükümlendirilir.

Sonsuz dünyalar

Bu birimlerden kullanışlı bir şekilde istifâde etme yöntemi de prosedürel oluşturmadır. Diğer bir ifadeyle, sahneyi, önceden kodlanmış geometri (yer ve nesne şekilleri) ile oluşturmak yerine, VPU’nun bunu algoritmalar kullanarak oluşturmasına izin vermektir. Bu durumda VPU, geometriyi matematiksel fonksiyonlar hesaplayarak oluşturur ve daha sonra bunlar GPU tarafından çevrilip (örn. üçgenler, çizgiler ve dörtgenlere), en nihayetinde sahneyi çizmek için kullanılır.

Kesin bir biçimde yazılmış verileri kullanmakla kıyaslandığında prosedürel içerik, paralelize edilmiş görevler için idealdir, çok az depolama gerektirir ve değişkendir (programlayıcılar parametrelerle oynayarak farklı sonuçlar elde edebilir) [3]. Pek çok alan bu teknikten son derece yarar sağlayabilir:

Öte yandan prosedürel içerik, animasyonlarda sıkıntı oluşturabilir ve hattâ algoritma çok karmaşıksa VPU geometriyi (üç boyutlu şekli) gereken zamanda oluşturamayabilir.

Özetle, prosedürel işleme (procedural rendering) yeni bir teknik değil, ancak VPU’lar sayesinde daha fazla optimizasyon ve daha zengin grafik olanaklarına kapı aralıyor. Her şeye rağmen bu uygulaması kolay bir teknik değildir ve Sony Ar-Ge, konsollarında kullanılmak üzere farklı yaklaşımları izah eden bir çok belge yayınlamıştır.

Gidişâta sen karar vereceksin

Bu yeni eklemelerle, programlayıcılar artık kendi grafik motorlarını tasarlamak konusunda oldukça esnek davranabilirler. Buna yardımcı olmak adına Sony, verimli boru hattı (pipeline) tasarımları ortaya çıkarıp bunları belgelemek için ekstra kaynak harcadı. Aşağıdakiler, farklı iş yükü çeşitleri için optimize edilmiş grafik boru hattı örnekleridir [4]:

Image
Paralel boru hattı (pipeline) dizaynı.
Image
Seri boru hattı dizaynı.

Birinci örnekteki Paralel diazyn için; İşlemci, makro moddaki VPU0 ile takım hâlindedir ki VPU1 ile paralel olarak geometri işleyebilsin. CPU&VPU0 grubu, VPU1’in ana hafızadan veri aldığı yol olan ana veri yolunu kullanmaktan kaçınmak için, karalama belleğinden ve önbellekten tamamıyla istifade eder. Sonuç olarak, her iki görüntü işleme grubu da aynı anda kendi payına düşen Görüntü Listelerini GPU’ya gönderir.

İkinci örnekte görülen Seri dizayn ise, CPU&VPU0 grubunun VPU1 için bir ön işlemci olarak çalıştığı bir diğer yaklaşımı öne sürer. İlk aşama, geometrinin tümünü alıp işlerken, VP1 ise peşi sıra bunları Görüntü Listelerine dönüştürür.

Şu ana kadarkiler teorik açıdan örneklerdi ancak daha ‘gerçeğe uygun’ bir uygulanışı anlatması açısından, Jor Burton’un kendi yaptıkları PS2 oyunlarından birine ilişkin yayınladığı bir videoyu referans verebilirim [5].

Image
Crash Bandicoot: The Wrath of Cortex (2001). Partiküller, mumun alevini ve pencere camından sızan ışığı meydana getiriyor.

Traveller’s Tales’in eski yönetmeni, takımının nasıl tamamen VPU1’in içerisinde olan bir partikül sistemi oluştırmayı başardığını açıkladı. Kısaca anlatmak gerekirse, VPU1, önceden oluşturulmuş bir veri tabanını VU Hafızasından okumaya odaklandı. Bu veri tabanı, her an, başka bir bileşene ihtiyaç duymadan partiküllerin koordinatlarını hesaplamada kullanıldı. İşlemin sonucu doğrudan Görüntü Listelerine dönüştürülüp gönderilebildi.

Bu yaklaşımla, CPU büyük ölçüde yükten kurtuldu ve AI (yapay zeka) ve fizik işleme gibi diğer işlemleri halledebildi.

Başka bir çok örnek anlatılabilir ancak işin özü: Şu halde en uygun düzeni oluşturmak programlayıcıya bağlı ve bu da iyi bir şey.


Grafikler

Emotion Engine tarafından yapılan tüm bu işler göz önüne alındığında, geriye bir şey kaldı mı? İşte kalan son adım: Görüntüleme!

Image
Final Fantasy X (2001).

Tam da bu iş için özelleştirilmiş, basit fakat hızlı bir çip mevcuttur: Grafik Sentezleyici (Graphics Synthesizer) ya da ‘GS’ ve bu ~147.46 MHz’de çalışıyor. Görüntü işlemenin tümünü kendi içinde halledebilmek için 4 MB DDRAM’i gömülü olarak içerir. Böylece, ana hafızaya erişim ihtiyacı ortadan kalkar. Gömülü RAM, ihtiyaç duyulan veri türüne göre farklı veri yollarıyla bağlanmıştır.

GS, bu sitede daha önce ele anınan diğer grafik sistemlerinden daha az özelliğe sahiptir. Buna rağmen, yaptığı işte oldukça hızlıdır.

Mimari ve Tasarım

Bu GPU, sadece rasterizasyon yapar ve bu da… Pikselleri oluşturma, dokuları kaplama (texture mapping), ışık ve diğer diğer bazı efektleri uygulamadır. Bu demek oluyor ki vertex dönüşümleri yapamaz (bunlar VPU’larca üstlenilir). Ayrıca bu, sabit işlevli bir boru hattıdır yani hayal gücünüze kalmış ince ayarlar çekilemez ya da gölgelendiriciler (shader) yoktur, sâbit bir gölgelendirme modeline saplanmış durumdasınız (bu model örn. Gouraud Shading’dir).

Image
Grafik Sentezleyici’nin boru hattı dizaynı

Oldukça basit görünüyor, değil mi? Öyleyse, daha derinlere dalıp her bir aşamada neler döndüğüne bakalım.

Ön İşleme

Image
Ön İşleme aşaması.

Emotion Engine, Grafik Sentezleyiciyi, gömülü DRAM’ini gerekli malzemelerle (Texture bitmap’ler ve ‘CLUT’ olarak da bilinen Colour Lookup Table’lar ile) doldurarak tezelden başlatır, GS’yi onun işlemci kayıtlarına değerler atayarak yapılandırır ve son olarak GS’ye ekranın belirli konumlarına temel şekilleri (noktalar, çizgiler, üçgenler, sprite’lar, vb.) çizmesi talimatını veren çizim komutlarını (Görüntü Listeleri) gönderir.

Ayrıca, GS, ileriki hesaplamalarda gerekecek olan bazı değerleri de ön işler. En kayda değer olanı, çizimler sırasında interpolasyon için kullanılacak olan Digital Differential Algorithm (Sayısal Türev Alma Algoritması) değeridir.

Pikselleştirme (Rasterisation)

Image
Pikselleştirme (rasterisation) aşaması.

Önceden hesaplanmış olan verileri kullanarak, işleyici (renderlayıcı), temel şekilleri (çizgi, üçgen vb.) kullanarak pikselleri oluşturur. Bu birim eş zamanlı olarak 8 piksel (dokularla) ya da 16 piksel (dokular olmadan) oluşturabilir. Her piksel girdisi, aşağıda sıralanan hesaplanmış özellikleri içerir:

  • RGBA: Kırmızı, Yeşil, Mavi ve Alfa (Opaklık) geçişlerine karşılık gelir. (İng. Red, Green, Blue, Alfa’nın baş harfleridir).
  • Z değeri: Sonraki aşamalarda derinlik analizinde kullanılır.
  • Sis: İsteğe bağlıdır, ortamda sis simüle etmeye yarar.
  • Doku Özellikleri: Dokunun (texture) DRAM’deki adresini ve sonraki aşamada kullanılmak üzere dokunun (koordinat, level of detail yani detay seviyesi, filtre ve) sair özelliklerini barındırır.

Ayrıca çerçeve dışında kalan çokgenleri kesip atmak için Scissoring Testleri de gerçekleştirir (X, Y değerlerini baz alır) ve bazı piksel özellikleri daha ileriki kontroller için ‘Piksel Testi’ aşamasına intikal eder. Ayrıca, Işıklandırma da (İng. Lightning) mevcut iki seçenekle gerçekleşir: Gouraud ve Flat (yani Düz).

Paket, ‘Doku Kaplama’ (Texture Mapping) motoruna taşınır, ancak her özellik, ilgili iş için özelleştirilmiş bir ‘alt motor’ tarafından işlenir ve bu, farklı özelliklerin paralel olarak işlenmesine imkân verir.

Doku Kaplama

Image
Doku kaplama aşaması

Bu aşama, her seferde 16’ya kadar pikseli işleyebilen geniş bir Piksel Birimi tarafından gerçekleştirilir, burada dokular çokgenlerin üstüne kaplanır (bunlar artık pikseldirler). Dahası, sis ve kenar yumuşatma (anti-aliasing) efektleri de burada uygulanır.

Doku haritaları, DRAM’in Doku Arabelleği olarak adlandırılan bir bölümünden getirilirler, kaldı ki bölümle de Doku Sayfa Arabelleği denilen ayrı bir yer sayesinde bağlantı kurulur ve bu, dokular için bir önbellekleme mekanizması görevinde gibi görünüyor. Ayrıca CLUT’lar da bu sayfa sistemiyle haritalanır. Her iki eleman da 512-bit veri yolu kullanılarak taşınıp alınır.

Piksel Birimi, temel şekiller üzerine dokuları giydirirken perspektif düzeltme gerçekleştirir (önceki kosoldaki affine mapping yaklaşımına göre fevkalâde bir iyileştirme). Dahası, bilineer ve trilineer filtreleme de gerçekleştirebilir ki bunlardan ikincisi, mipmap’lenmiş dokularla beraber kullanılır.

Testler

Image
Piksel Testi aşaması

Burada, belli pikseller, eğer birtakım gereksinimleri karşılamazlarsa atılırlar. Konusu açılmışken, bu işlem için aşağıdaki testler uygulanır:

  • Alpha Testi: Bir pikselin alpha (transparanlık) değerini, onun ‘standart’ değeriyle kıyaslar. Sebebi ise bazı durumlarda, alpha değeri belli bir aralıkta olmalıdır ya da keyfî bir değerin altında/üstünde olmamalıdır.
  • Hedef Alpha Testi: Bu, pikselin alpha değerini, onu frame buffer’a (çerçeve arabelleği’ne) çizmeden önce bir kez daha kontrol eder.
  • Derinlik Testi: Pikselin Z değerini, Z buffer’da (Derinlik Arabelleği’nde) karşılık gelen Z değeriyle kıyaslar. Buysa başka piksellerin arkasında kalarak görünmeyecek olan piksellerin işlenmesini önler.

Son İşleme (Post-Processing)

Image
Son İşleme aşaması.

Son aşamada yeni piksellerimize yerel DRAM’de bulunan önceki çerçeve arabelleği (frame-buffer) kullanılarak bazı efektler uygulanabilir:

  • Alpha Karıştırma: Hafızadaki mevcut (işlenmiş çereveyi tutan) arabellekle bir öncekinin renklerini birbirine karıştırır.
  • Noktalı Tonlama (Dithering): Büyük RGBA değerlerinin kırpılması gerekir, ancak tonlama (dithering) uygulanarak keskinlik kaybı bir nebze giderilir.
  • Renk Kıstırma (Color Clamping): Alpha Karıştırma gibi işlemler uygulandıktan sonra, yeni RGB değerleri geçerli aralığın (0 ilâ 255) dışında kalabilir ve kıstırma da değeri bu aralığa atar.
  • Biçimlendirme: Bu, boru hattında oluşturulup son aşamadan geçmiş çerçeve arabelleğini, hafızada saklanabilecek bir biçime dönüştürür.

Son olarak, yeni çerçeve arabelleği (yani ekrana gidecek çıktı), güncellenen yeni Z-buffer ile birlikte, 1024-bit veri yolu üzerinden hafızaya yazılır.

Daha fazla Son İşleme

GS’nin içinde, Programlanabilir CRT Kontrolcüsü ya da ‘PCRTC’ dedilen, ayrılmış bir bileşen bulunur ve bu, hafızadaki çerçeve arabelleğini, Video çıkışına gönderir ki televizyon ekranında görebilin. Ama hepsi bu da değil: Ayrıyeten, Birleştirme Devresi adlı özel bir blok içerir ki bu iki farklı çerçeve arabelleğini Alpha kaynaştırma yapabilir (Eğer oyun, yenisini şekillendirmek için önceki çerçeveyi tekrar kullanmak istiyorsa kullanışlıdır). Oluşturulan çerçeve, video sinyalleri yoluyla çıktı olarak verilebilir ve/veya hafızaya geri yazılabilir.

İyileştirilmiş Modellemeler

Bahsettiğimiz bütün şeyler, beraberinde, hâlihazırda meşhur karakterler yenilenirken daha iyi dizaynlar getirecektir. Şimdi şu ’Öncesi & Sonrası’na bir bakın:

Tel ÇerçeveYüzeyDokular
3D model
PS1’deki Crash Bandicoot (1996).
732 üçgene sahip.
Tel ÇerçeveYüzeyDokular
3D model
Crash Bandicoot: The Wrath of Cortex (2001).
2226 üçgene sahip.

Bunlar da yeni oyun serilerinden karakterler, tepeden tırnağa yüksek detay seviyeleriyle modellenmişler:

Tel ÇerçeveYüzeyDokular
3D model
Kingdom Hearts (2002).
2744 üçgene sahip.
Tel ÇerçeveYüzeyDokular
3D model
Dragon Quest VIII (2004).
2700 üçgene sahip.

Bahse değer Dragon Quest gibi oyunlar, Cel Shading denilen (daha önce bahsettiğim bir tabir), özgü bir ışıklandırma modeli uyguladılar, ancak önceki makalelerde açıkladıklarımda bundan sorumlu olan GPU idi. PS2’de ise, gerekli renk hesaplamaları muhtemelen Emotion Engine tarafından yapılıyor, çünkü GS, diğer GPU’lar kadar esnetilebilir değil.

Video Çıkışı

Dah önce belirttiğimiz gibi PCRTC, çerçeve arabelleğini video sinyalleri aracılığıyla gönderir. Arayüz, çeşitli formatlar yoluyla video sinyalini yayınlayabilir (herhangi bir grafik bölgesinden Televizyonlar üzerinde çalışabilmesi için) [6]:

. - Pazarda 576p kullanan oyun yoktur. Bazıları progressive modu desteklese de 480p modda destekler. - NTSC: 640x464 pikselde 60 Hz’e kadar, progressive (480p) ya da interlaced (480i) olarak destekler.

. - VESA: 1280x1024 piksele kadar. - DTV: Progressive modda 768x480 ya da interlaced modda 768x960 gibi sayıca muazzam büyüklükte piksele çıkabilir.

Image
Konsolun arkadan görünümünün sağ kısmı [7]. A/C yuvası, Dijital ses yuvası ve AV Çoklu Çıkışı görülebiliyor.

Seçilebilecek birçok mod var ancak 2000’lerin başlarında gerçekleşen format benimsemeleriyle hespi gözden düşüyor ve seçenekler sadece PAL ve NTSC’ye kadar daralıyor. Ayrıca, PAL her ne kadar NTSC’den daha yüksek çözünürlük sunsa da, NTSC oyunlarının bazı Avrupa versiyonlarında, kullanılmayan piksel satırlarını maskelemek için letterboxing’e sığınılmış ve 50 Hz sınırına uymak için ekran yenileme hızı yavaşlatılmış (ben bunlara ‘kötü port’ diyorum!) (ÇN: Dolayısıyla görüntü küçülüp, oyun yavaşlıyor).

Video çıkış yuvası (Multi A/V) çok kullanışlıdır. RGB, Komponent (Component), S-Video ve kompozit (composite) sinyali taşır. Yani bütün önemli sinyaller, tescilli adaptörler ya da dâhilî modifikasyonlar gerektirmeden burada bulunuyor.


Ses

Yeni ses çipi, eski SPU’ya kıyasla marjinal geliştirmelere uğramıştır ve adı da… SPU2! Geliştirmelere 2 MB dâhilî hafıza eklenmesi ve kullanılabilir 48 ses kanalı da (ki orijinalinin 2 katıdır) dâhildir.

SPU2, kendi içinde iki işlemciden oluşmuştur, bunlar CORE0 ve CORE1’dir ve ~36.86 MHz’de çalışırlar. Her biri 24 kanal işler.

İşin ilginç tarafı, sonuçta bunlar iki ayrı işlemcidir ve onları yapılandırmak için, onların özel işlemci kayıtlarında değişiklik yapmanız gerek. Fakat Sony, geliştiricileri, farklı işlemciye ait kayıt setlerinin 1/48000 saniye arayla değiştirilmesi gerektiği konusunda uyardı. Eğer çok acele ederseniz, SPU2’nin davranışları tahmin edilemez olur!

SPU2, orijinal SPU’da bulunan efektlerin aynısını miras alır. Kullanıma sunulan hafıza, bir ‘çalışma alanı’ olarak kullanılır: İşlenmemiş dalga biçimini depolayabilir ve onu işleyip efektler uygulamak için ektra alan ayırabilirsiniz.

Sonunda, çip, stereo çıkış hazırlamak için bütün kanalları karıştırır. Şimdi, gelelim ilginç kısma: SPU2, karıştırılmış stereo örneği yeni girdi olarak alarak kendini besleyebilir ve bu EE’nin ona (örneğin başka seslerle karıştırması için) erişmesine ya da daha fazla efekt (örn. reverb (yankı), eko, delay (gecikme) gibi) eklemeye devam edebilmesine olanak tanır.

Kingdom Hearts II (2005). Yankı (reverb) olmadan.
Kingdom Hearts II (2005). Yankıyla.

Ses çıkışı

Ses sinyali çıkışı, iki ortam aracılığıyla sağlanır:


Giriş/Çıkış

PS2’nin Giriş/Çıkışı karmaşık değildir, buna rağmen konsolun çok sayıda revizyonuyla, çeşitli dahilî ve haricî arayüzler değişikliğe uğramıştır.

Başlangıç olarak, farklı birimler arsındaki iletişimi sağlayan ayrılmış bir işlemci bulunur ve bu işlemci, PlayStation 1’de bulunan orijinal MIPS R3000 tabanlı çekirdekten başkası değildir. Bu seferki adıysa IOP ve 37.5 MHz’de çalışıyor ve bir 32-bit veri yolu kullanıyor [8].

IOP, Sistem Arayüzü (System Interface) ya da ‘SIF’ denilen özelleştirilmiş bir Giriş/Çıkış arayüzü kullanarak Emotion Engine’le iletişim kuruyor ve iki uç da birbirine veri transferi yapmak için kendi DMA birimlerini kullanıyor. Ayrıca IOP, bir arabellek olarak kullanılmak üzere kendi hafızasını içeriyor.

IOP, ön dıştaki yuvalara, DVD kontrolcüsüne, SPU2’ye, BIOS ROM’a ve PC card yuvasına erişim sağlıyor.

Miras alınan uyumluluk

Orijinal CPU’yu dâhil etmek suretiyle bir şekilde PS1 uyumluluğu sağlanabileceğini düşünebiliriz. Buna uygun şekilde IOP, PS1 CPU’sunun yardımcı sistemini oluşturan diğer bileşenleri de içeriyor. Dahası çekirdeğe, PS1 hızında çalışacak şekilde hız düşürme yapılabiliyor. Maalesef SPU2, PS1’e karşın çok fazla değişikliğe uğradı fakat bunun için de Emotion Engine, eski SPU’yu taklit (emüle) etmek amacıyla ‘yeniden işlevlendiriliyor’.

Konsolun sonraki revizyonlarında IOP, bir Power PC 401 ‘Deckard’ ve 4 MB SDRAM ile (öncekinden 2 MB daha fazla) değiştirildi, geriye dönük uyumluluk devam etti ancak bu sefer yazılım yoluyladır.

Mevcut arayüzler

Konsol, orijinal PlayStation’da bulunan eski ön dış bağlantı noktalarını barındırdı ve ayrıca ilk bakışta ümit verici görünen birtakım ‘deneysel’ arayüzler de sundu.

Image
PS2’nin önü, Kontrolcü ve Hafıza Kartı (MemoryCard) dâhil yaygın yuvalar gösteriliyor, ayrıca yeni USB’ler ve i.Link de [9].

En meşhur ilave ise: İki adet USB 1.1 yuvası. Büyük ölçüde üçüncü parti eklentiler tarafından benimsenildi ve bunlar, gelecekteki tüm revizyonlarda da bulunmaya devam etti.

Peki ya ‘deneysel’ olanlar? İlk olarak, başlangıçta bir dış i.Link portu yuvası bulunuyordu (ayrıca IEEE 1394 ya da Apple camiasında ‘FireWire’ olarak da bilinir). Bu yuva, yerel çok oyunculuyu mümkün kılmak için iki PS2’yi bağlamada kullanıldı ancak üçüncü revizyonla kaldırılı (muhtemelen yerini ’Network card’a bıraktı, aşağıda daha fazla detay var).

Konolsun arkasında, PC card’lar için de bir yuva var, Sony’den iki ekstra yuva getiren ‘Network Adaptor card’ alabiliyordunuz. Biri Ethernet kablosu bağmak için, diğeri de bir özel ürün bağlamak ve yine Sony tarafından satılan bir harici ‘Hard Disk Sürücüsü Birimi’ (HDD) takmak içindir. Bir sürücüye sahip olmak, daha hızlı yükleme süreleri için oyunların geçici verileri depolamasına (ya da kalıcı olarak burada kurulmalarına) imkan tanır. Gerçi bu özelliği sadece birkaç oyun kullanmıştır.

Image
PS2’nin arkasındaki Sabit disk bölmesi (kapağı çıkarılmış olarak) gösteriliyor [10].
Image
Ağ adaptörünün (Network adaptor) önden görünümü [11]. Bu özel model, modem ve Ethernet girişleri barındırdı.
Image
Ağ adaptörü (Network adaptor) arkadan görünüşü [12], bir sabit disk takılmış hâlde.
Image
Slim modelinin arkasındaki sabit Ethernet yuvası gösteriliyor.

Sonraki revizyonlarda PCMCIA yuvası, konsola 3.5” (inçlik) bir Hard disk sürücüsü sığdırılabilecek bir Expansion Bay (Genişletme Bölmesi) ile değiştirildi. Öncelikle, sadece Modem ve/veya Ethernet girişlerini (modele göre değişir) bulundurmakla kalmayıp aynı zamanda bir ATA-66 hard disk için gerekli bağlantıları da bulunduran bir Network adaptor almanız gerekliydi. ‘Slim’ revizyonlarıyla bu özellik tamamen kaldırıldı ancak arkada kalıcı olarak bulunacak bir Ethernet yuvası bırakıldı. Buna ek olarak, yeni revizyonla yeni bir ön yuva olan kızılötesi sensör eklendi.

Donatılmış olan Ethernet alıcı/vericisi, 100 Mbps’ye (12.5 MB/s) kadar transfer hızlarını destekler. Ancak gözlemlenen hız düşüklüğü kötü şöhretle bilinir (bazı durumlarda 2 MB/s’ye kadar düşer). Bunun açıklaması ise görece basittir: Kullanılabilir iletişim ağına (network) erişmek için standart ’OSI Modeli’nin tüm katmanları uygulanmalıdır, alıcı/verici ise bütünün sadece bir parçası. İşin geri kalanı genel olarak IOP’nin emrindedir (ki yazılımla yapılır) fakat IOP’nin sınırlı performansı yüzünden [13], darboğaz meydana gelir.

Etkileşimli eklentiler

Kontrolcülerinin (oyun kolu) yeni versiyonu olan DualShock 2, DualShock’un biraz geliştirilmiş versiyonudur.

Image
DualShock 2 kontrolcüsü [14].
Image
Orijinal Hafıza Kartı (Memory Card) (8 MB modeli) [15].

Orijinal PlayStation zamanlarında, orijinal kontrolcünün farklı özellikler barındıran birçok revizyonu piyasaya sürüldü (aynı zamanda pazara ayrışma getirdi). Artık geliştiriciler lehine, öncesinde gelen bütün özellikleri kendinde toplayan tek bir kontrolcü vardır.

DualShock’la kıyaslandığında yeni versiyon ince bir yeniden dizayn geçirdi, iki analog çubuğu ve iki titreşim motorunu sırasıyla daha zengin girdi alma ve etkili geri bildirim verme adına ekledi.

Kontrolcü giriş yuvasının yanındaysa PS1 ve PS2 kartlarıyla uyumlu Hafıza kartı yuvası bulunuyor. Yeni kartlara, MagicGate olarak anılan güvenlik sebepleriyle ekstra devre gömüldü, bu da oyunların, farklı hafıza kartlarına veri transferini engelleyebilmesine imkan tanıdı.


İşletim Sistemi

Anakartın üstüne yerleşmiş, kullanıcıların etkileşime geçebileceği bir shell (sistem kullanıcı arayüzü) menüsü açmak için muazzam miktarda kodu depolayan bir 4 MB ROM çipi bulunur, ancak buna ek olarak Giriş/Çıkış erişimini kolaylaştırmak için oyunların dayandığı sistem çağrılarını (system call) da gerçekleştirir.

Image
Konsol başlatıldıktan sonra görünen açılış animasyonu.
Image
Geçerli bir PS2 oyunu takıldıktan sonra PS2 logosu gösteriliyor.

Önyükleme ardından CPU, ROM’daki talimatları ve üzerine şunları çalıştırır:

  1. Donanımı ilk kullanıma hazırlar.
  2. RAM’e bir Kernel (sistem çekirdeği) açar, bu ise sistem çağrılarıyla ilgilenir ve de çoklu iş parçacığı (multi-threading) desteği sağlar (iş birlikçi ve öncelik tabanlıdır).
  3. IOP işlemcisini başlatıp, ona modüller gönderir; bu, IOP’nin konsolun donanımını yönetmesine izin verir. Son olarak, IOP bir ‘komut bekleme’ hâline geçirilir.
    • Modüllerin kullanılması, Sony’nin IOP’yi değiştirmeden yeni PS2 donanım revizyonları yayınlamasına imkân sağladı, bu da üretim mâliyetlerini düşürdü.
  4. Açılış animasyonu ve shell menüsünü gösteren program olan ’OSDSYS’i açar.

Etkileşimli kabuk (Interactive shell)

PS2 kabuğunun (PS2 shell) işlevselliği, diğer 6. nesil konsollarla hemen hemen aynı düzeydedir.

Image
İlk gösterilen menü. Herhangi bir disk yerleştirilmediğinde ortaya çıkar.
Image
Hafıza Kartı tarayıcısı.
Image
Kayıt tarayıcısı. Bir hafıza kartı seçildiğinde ortaya çıkar.
Image
Kayıt düzenleyici, bir kaydın seçiminden sonra gösterilir.
Image
Sistem Yapılandırma.

Kabuk, gündelik işlemleri gerçekleştirmeyi sağlayan kullanışlı kısımlar sunar, örneğin hafıza kartındaki kayıtların düzenlenmesi gibi. Bununla birlikte, bazı fevkalade seçenekler de sunar, meselâ geçerli video modunu değiştirmek gibi.


Oyunlar

Bu sistemin 2000’ler boyunca ulaştığı şöhret seviyesinin emsâli görülmemiştir, vadesini doldurduğunda (2013’te, çıkışından 13 yıl sonra!) oyun kütüphanesi 1850 oyunla doluydu [16].

Image
Mr Moskeeto (2001). Ne zaman biri PS2 oyunlarının bolluğundan dem vursa, bunu hatırlarım.

Burada gerçekleşenler etkileyicidir. PS2, ‘programlayıcı dostu’ bir mimariye sahip değildir (bir PC programcısının bakış açısından görüldüğü gibi), ancak bu kadar çok sayıda oyun geliştirildiğinde, ben de daha fazla faktörün dahil olup olmadığını merak ediyorum (meselâ ‘lisans indirimleri’, düşük dağıtım maliyetleri, geliştirme maliyeti, küçük form faktörü vesaire).

Geliştirme ekosistemi

Sony, oyun geliştirilmesine yardımcı olacak donanım ve yazılımı temin etti.

Yazılım tarafında, aşağıdakileri içeren PlayStation 2 SDK (PS2 Yazılım Geliştirme Kiti) mevcuttur [17]:

Donanım tarafında Sony, oyunları kurum içi çalıştırma ve hata ayıklama için stüdyolara mahsus donanım sağladı. İlk geliştirme kitleri (devkits), PS2’nin pisayasa sürülmemiş donanımını replika etmek için birarada yığılmış çıplak (kasasız) kartlardı. Sonraki kitler (Development Tool yani Geliştirme Araçları adını alanlar), daha tatmin edici bir görünüşe, gelişmiş Giriş/Çıkışa (I/O) ve oyunları aynı şartlarda geliştirip dağıtma için PS2 donanımıyla çalışan bileşik iş yeri donanımına (RedHat 5.2 çalıştırır) sahipti.

Geliştirme kiti (DevKit), resmî SDK ve CodeWarrior (meşhur bir IDE yani bütünleşik geliştirme ortamıdır) birleşimi, kullanılan en popüler düzeneklerdendi.

Medya Ortamı

Disk sürücü, hem DVD hem de CD okuyabilir yani oyunlar her iki fiziksel formatla da dağıtılabilir. Ancak bariz sebeplerden ötürü, çoğu oyunu DVD formatında bulacaksınız.

Image
Kingdom Hearts II (2005). Tipik perâkende oyun kutusu ve diski.

DVD’ler, (en yaygın DVD ‘alt türü’ olan) DVD-5 biçiminde 4.7 GB’a kadar ya da DVD-9 için (çift katmanlı versiyonu, daha az yaygındır) 8.5 GB’a kadar veri tutabilir [18]. Aslında üçüncü bir format olan çift taraflı DVD-10 da vardır ancak hiçbir oyun bunu kullanmadı.

Kullanılan medya türü sayesinde, sadece oyunlar değil, filmler de oynatılabiliyordu. Yine de, film formatında bir DVD’yi okuyabilmek için ilgili kod çözücü gerekiyordu ve bunun için, PS2 ilk zamanlarda gerekli dijital aracı bir hafıza kartına (PS2 Memory Card) dahil etmişti (sonuçta hafıza kartı da bir depolama medyası/ortamıdır) fakat sonraki modeller ise BIOS ROM’a halihazırda kurulmuş bir DVD yazılımı ile çıktı.

Hızlarına gelince, CD-ROM’lar 24x hızda (yani 3.6 MB/sn) okunuyordu ve DVD-ROM’lar 4x hızda (5.28 MB/sn) okunuyordu [19].

Ağ hizmeti

Görmüş olduğunuz üzere, konsolun genel ağ özellikleri, ilk piyasaya sürülüşünden dört yıl sonraki revizyonlara kadar standarda kavuşmamıştı. Benzer şekilde, eğer oyun stüdyoları çevrim içi hizmetler (çok oyunculu gibi) sağlamak istiyorlarsa, gerekli altyapıyı sağlamakla yükümlü idiler. Sonraki yıllarda Sony, Dinamik Ağ Kimliği Doğrulama Sistemi (Dynamic Network Authentication System) ya da ’DNAS’ı işleve soktu, bu çevrim içi bir hizmet değildi fakat korsan oyunların çevrim içine bağlanmasını engelleyen bir doğrulama sistemiydi.

Alışılmadık bir oyun türü

Sony, güzel grafikli tüm bu oyunların yanı sıra, ‘Kondara’ tabanlı (ki bu da Red Hat 6 tabanlıdır) bir Linux dağıtımını iki CD halinde (ilk disk ‘Runtime Environment’ yani program çalıştırma ortamı ve ikincisi ‘Software Packages’ yani yazılım paketleridir), VGA adaptörü, USB Klavye ve Fare ve ek olarak bazı geliştirici kılavuzları ile birlikte piyasaya sürdü. Paket, Linux Kit olarak bilinirdi ve ilk DVD’yi başlatarak OS’i (işletim sistemini) çalıştırabilir ve herhangi bir old school (eski usul) Linux ortamı gibi devam edebilirdiniz. Tabii ki Linux dağıtımını kurmak için konsola bir sabit disk (Hard drive) takmanız gerekirdi. Kurulduktan sonra, bu işletim sistemini başlatmak için her zaman ilk DVD’ye ihtiyaç vardı.

Linux Kit’e, EE’ye yönelik (glibc 2.2.2 ile gcc 2.95.2) derleyiciler (compilers), vektör birimlerine yönelik talimat derleyiciler (assemblers) ve beraberinde Grafik Sentezleyici’de hızlandırılmış bir pencere sistemi (XFree86 3.3.6) [20]. Genel anlamda bu, kulağa ilginç bir ortam gibi geliyor. Aslında, okuduğum araştırma makalelerinin biri bu kurulumla oluşturulmuştu.


Korsanla Mücadele ve Ev Yapımı (Homebrew)

Bu alanda konuşulacak çok şey var, hadi DVD okuyucuyla başlayalım, olur mu?

Kopya Koruma

Bu kısım bilhassa oyun stüdyolarını endişeye düşürüyordu zira bu konsol, oyunları depolamak için pek uygun fiyatlı bir disk biçimi kullandı ve bu da hayli yüksek bir korsana düşme riski getirdi.

Image
Bu ekran, sürücü arızalıysa görülebilir… ya da korsan bir kopya takıldıysa.

İşletim sistemi, bir oyunu açma işini DVD okuyucuya özel komutlar göndererek yapar. Özel olarak oyun içeriğini okumak için kullanılan komutlar, standart DVD komutlarından (yani DVD filmi okunmasından) çok farklı davranır. Tescilli oyunların, diskin daha içeri kısımlarında, dosya sisteminin (filesystem) adını, konumunu ve boyutunu işaretleyen ve erişim alanının dışında kalan bir ‘yerleştirme dosyası’ (map file) bulundurduğu ortaya çıktı. DVD’den bir oyun diskini okuması istendiğinde, diskte her zaman yerleştirme dosyası (map file) yardımıyla yön bulur; bu da demektir ki yerleştirme dosyasını bulundurmayan bir korsan kopyanın okunması imkânsızdır. Bu, başka bir bölgenin konsolunda çalışan ithal oyunların çalıştırılmasını engelleyen bir bölge kilidi sistemiyle bütünleşmiştir.

Keşfedilen açıklar

Bu konsola dair en önemli bölümü açıkladık, şimdi de koruma mekanizmalarını atlatmayı başaran keşfedilmiş birkaç yönteme göz atalım.

Modifikasyon Çipleri (Modchips)

Kendi neslinde (ve öncekilerde) disk tabanlı sistemler kullanan diğer konsollardaki gibi, DVD yardımcı sisteminin üçüncü taraf şirketlerce tersine mühendisliğe uğraması an meselesiydi. Buradaki hedef, sürücüyü, erişim alanı dışındaki yerleştirme dosyasını (map file) kullanmayı gerektirmeden dosya sisteminde gezinmeye zorlayacak kullanışlı bir açık yakalamaktı.

Sonunda bu, aynı zamanda bölge kilidi kısıtlamalarını da askıya alan modchipler şeklinde gerçekleşti.

Hileler

Takılması için lehim kabiliyeti gerektiren modchiplerin yanı sıra, gayriresmî fakat ‘orijinal’ diskler pazarda yerini aldı. Bunlar, bölge kilidini aşmayı ve işletim sistemine yama yaparak oyun içi hileleri kullanmayı mümkün kıldı. Dahası, ‘hile diskleri’ (cheat discs), konsolun modifiye edilmesini gerektirmeme avantajına da sahipti. Düşünceme göre bu bahse en iyi örnek CodeBreaker’dır.

Disk değiştirme

Son gelişmeler arasında bir hileli teknik daha ortaya çıktı. Bu sefer, okuyucunun hatalı sektörlere müdahale davranışından faydalanılıyor. Swap Magic bir diğer ‘orijinal’ disk gibi görünüyor ancak içindeki ‘oyun’ DVD’ye kasten yapılmış bir hatalı sektördeki, aslında var olmayan bir çalıştırılabilir (executable) dosyayı okumasını söylüyor, böylece sürücüyü büsbütün donduruyor [21]. Kullanıclar için mevcut diski ‘orijinal’ olmayan bir diskle değiştirebilecekleri bir fırsat penceresi aralanıyor. Sonrasında, hâlen hafızada bulunan Swap Magic, yeni diskin ana çalıştırılabilir dosyasını önyüklüyor ve sonunda gerçek bir oyun açılıyor. Tüm bunlar, sürücü hâlâ orijinal bir diskin takılı olduğunu zannederken gerçekleşiyor.

Bu işlem, illâki konsolda bir değişiklik yapılmasını gerektirmez. Fakat modele bağlı olarak, sürücünün disk çıkarma sensörünü bloke edecek şekilde, PS2’nin dış kasasının kurcalanması gerekebilir. Bazı durumlarda, belli yerlere pamuk yerleştirmek iş görecektir.

PS1 taşması (overflow)

PS2, PS1 oyunlarının emülasyonunu optimize ederken kullanılacak bilgileri içeren, TITLE.DB adı verilen bir veri tabanı dosyasını Hafıza Kartında (MemoryCard) saklar [22]. İşletim sistemi, bir PS1 oyunu yerleştirildiğinde veri tabanı dosyasını getirir ve bütün dosyayı hafızadaki sabit bir adrese açar (ihmâl bir). Bilgi derleyici, C’de dizileri (harf ve diğer karakterler zinciri) bir yerden ötekine kopyalamaya yarayan strncpy() fonksiyonu kullanılarak uygulandı.

C’ye aşina olanlarınız, muhtemelen nereye varacağımı tahmin ettiniz. Olay şu ki strncpy(), bir dizi ne kadar uzun bilmiyor, yani (zincirin sonuna \0 yazmak suretiyle) bitirilmediği sürece kopyalama ‘sonsuza dek’ devam edecek (ve öngörülemeyen sonuçları olacak!). Şanslarına bu fonksiyon, tercihen kullanılabilen, kopyalanacak maksimum byte sayısını belirleyen bir parametre içeriyor ve böylece kopyayı arabellek taşmalarından koruyor. Fakat şu gülünç gelebilir ve öyledir ki Sony, bu parametreyi kullanmadı, hem de her veri tabanı girdisinin 256 byte’lık sabit bir boyuta sahip olmasına rağmen (ihmal iki).

RAM daha yakından incelendiğinde, TITLE.DB’nin, yürütülmekte olan mevcut fonksiyon bittikten sonra dönülecek adresi belirtmek üzere kayıtlanmış bir işlemci kaydının, $ra’nın yanına kopyalandığı görülür (ihmal üç) ve bu da <0>Bağımsızlık Açığına (The Independence Exploit)</0> yol açar: Büyük bir dizi içeren bir Title.db oluşturun, içine bir çalıştırılabilir dosya yerleştirin ve bu dizeyi öyle bir hazırlayın ki $ra’nın içeriği, bu çalıştırılabilir dosyayı işaretleyecek şekle dönüşerek hükümsüz kalsız. Eğer bu dosyayı (başka bir alet ya da PC USB adaptörü yardımıyla) kendi Hafıza Kartınıza (MemoryCard) aktarmayı başarırsanız, kendinize basit bir ev yapımı başlatıcısı (Homebrew launcher) hazırlamış olursunuz.

Slim revizyonu yayınlandıktan sonra, bu açık giderildi (Nasıl oldu merak ediyoum). İlginçtir ki bu, acemice kod meydana getiren son falso değildi.

Yarı kalıcı bir yazılımsal kilit kaldırma

Bir süre önce, bu konsolun BIOS’unun Hafıza Kartı kullanılarak güncelleştirilebildiği keşfedildi, bu özellik uygulamada hiçbir zaman kullanılmadı ancak konsoldan da kaldırılmadı (en azından konsolun ömrünün büyük kısmı boyunca). Bundan yola çıkan hackerlar, eğer Hafıza Kartına özel bir yazılım kurmanın bir yolunu bulurlarsa, BIOS’un önyüklemede her zaman bunu çalıştıracağının farkına vardılar. Bu keşif Free MCBoot’a zemin hazırladı, bu program kendini ‘güncelleme verisi’ olarak takdim edip orijinal shell’i, Homebrew (ev yapımı) çalıştırabilen bir shell’le değiştirdi.

Aklınızda bulunsun ki bu değişiklik kalıcı değildir, ‘Free MCBoot’ kurulu bir Hafıza Kartı, konsol başlatılmadan önce takılmalıdır. Ek olarak, bu yazılım sonuçta bir şekilde kurulmalı, yani kurucuyu başlatmak bir diğer açıktan (örneğin disk değiştirme) faydalanılmalıdır.

Daha fazla disk hilesi

Free MCBoot’un yayınlanmasının ardından hemen aynı sene bir diğer tatkik keşfedildi: Oyunları DVD filmleri olarak göstermek, modchip’e gerek kalmadan tescillenmemiş oyun kopyalarının okumasını mümkün kıldı.

Bu, yalnızca oyun kopyasına sahte metadata (dosya format ön bilgisi) ve sadece DVD filmlerinde kullanılan bölümlendirmeler eklemek suretiyle yama yapmayı gerektirdi. Sonrasında ise aktarılmış (disk burn) kopya, konsola takıldığında sürücü bunu geri atmaz ancak oyunu da çalıştırmaz. Buna rağmen ESR adı verilen bir Homebrew programı yardımıyla oyun başlatılabilir.


Hepsi bu kadar

Makalenin sonuna ulaştığınız için sizi tebrik ediyor ve teşekkürlerimi sunuyorum! Açıkçası, bahsedilecek o kadar şey var ki, bunu bitirdikten sonra, okuyucular eninde sonunda PlayStation’la ilgili şeylerden bıkarlar mı, diye düşündüm.

Her neyse, bütün ciddiyetimle, umuyorum ki bu makaleyi okuduktan sonra yeni şeyler keşfetmişsinizdir ve olur da yorum yapmak isterseniz benimle iletişime geçmekten çekinmeyin.

Bir dahaki sefere kadar hoşça kalın!
Rodrigo


Katkıda Bulunma

Bu makale Konsolların Mimarileri serisinin bir parçasıdır. Eğer ilginç bulduysanız lütfen bağış yapmayı düşünün. Bağışınız, mevcut ve gelecek makalelerin kalitesini artırmama yardımcı olacak araç ve kaynakların satın alınmasını finanse etmek için kullanılacaktır.

Donate with PayPal
Become a Patreon

Ayrıca eBook sürümünü İngilizce olarak da satın alabilirsiniz. Kârları bağış olarak kabul ediyorum.

Image

Bu makale için arzu edilen araçların ve en son kazanımların bir listesi burada takip edilmektedir:

### Interesting hardware to get (ordered by priority)

- Hard drive/Network card for the SCPH-10000.
- PS2 SCPH-3x00x model to check out Homebrew using the hard drive.

### Acquired tools used

- PS2 SCPH-10000 (£60) to do a proper motherboard analysis.
- Old PS2 Slim grey (£40?) from back then.

Alternatif olarak, değişiklikler önererek ve/veya çeviriler ekleyerek yardımcı olabilirsiniz.


Copyright and permissions

This work is licensed under a Creative Commons Attribution 4.0 International License. You may use it for your work at no cost, even for commercial purposes. But you have to respect the license and reference the article properly. Please take a look at the following guidelines and permissions:

Article information and referencing

For any referencing style, you can use the following information:

For instance, to use with BibTeX:

@misc{copetti-ps2,
    url = {https://www.copetti.org/writings/consoles/playstation-2/},
    title = {PlayStation 2 Architecture - A Practical Analysis},
    author = {Rodrigo Copetti},
    year = {2020}
}

or a IEEE style citation:

[1]R. Copetti, "PlayStation 2 Architecture - A Practical Analysis", Copetti.org, 2020. [Online]. Available: https://www.copetti.org/writings/consoles/playstation-2/. [Accessed: day- month- year].
Special use in multimedia (Youtube, Twitch, etc)

I only ask that you at least state the author’s name, the title of the article and the URL of the article, using any style of choice.

You don’t have to include all the information in the same place if it’s not feasible. For instance, if you use the article’s imagery in a Youtube video, you may state either the author’s name or URL of the article at the bottom of the image, and then include the complete reference in the video description. In other words, for any resource used from this website, let your viewers know where it originates from.

This is a very nice example because the channel shows this website directly and their viewers know where to find it. In fact, I was so impressed with their content and commentary that I gave them an interview 🙂.

Appreciated additions

If this article has significantly contributed to your work, I would appreciate it if you could dedicate an acknowledgement section, just like I do with the people and communities that helped me.

This is of course optional and beyond the requirements of the CC license, but I think it’s a nice detail that makes us, the random authors on the net, feel part of something bigger.

Third-party publishing

If you are interested in publishing this article on a third-party website, please get in touch.

If you have translated an article and wish to publish it on a third-party website, I tend to be open about it, but please contact me first.


Kaynaklar / Okumaya Devam Edin

Korsanlıkla Mücadele

İşlemci (CPU)

Oyunlar

Genel

Grafikler

Giriş/Çıkış

İşletim Sistemi

Fotoğrafçılık


Rodrigo Copetti

Rodrigo Copetti

Umarım bu makaleyi beğenmişsinizdir! Yazar hakkında daha fazla bilgi edinmek istiyorsanız buraya tıklayın ve eğer desteklemek isterseniz buraya tıklayın

rsslinkedintwittergithub facebookreddit