Console denen makinalar, ilk yapılışında yalnızca oyun oynama mantığı taşıyan belli ve kısıtlı yeteneklere sahip makinalardı. Bu makinaların en ünlüsüne örnek olarak bir tane göstermek gerekirse, size 13 milyondan fazla satan ve piyasada 6 bin oyunu bulunan Nintendo firmasının kendi adıyla piyasaya sürdüğü, 8- bit mimarili Nintendo Console'unu söyleyebilirim. Ya Pc'ler? Pc, Personal Computer yani Kişisel bigisayar teriminin kısaltılmış halidir. Herhangi biri bu kişisel bilgisayarlar ile dünya teknolojisinin elverdiği şartlarda istediğini yapabilir. Tabii ki bu özgürlük o bilgisayarın donanımına bağlıdır. Bundan anlaşılabileceği gibi, Pc'lerin yeteneklerinde bir kısıtlama yoktur. Bir Pc'nin yetenekleri tümüyle sizin cebinizin şişkinliği ile doğru orantılıdır. Günümüz teknolojisine bakıldığında, Console'ların bu kısıtlı olma tutumundan uzaklaştığını görüyoruz. Yani Console'larda Pc'leşmeye başladı! Bu durumun yakında bizim için kafa karıştıcı olaylar doğuracağı malum; fakat Allah'tan ümit kesilmez. Sanıyorum az veya çokta olsa Console ile Pc arasındaki farkı anladık. Şimdi geçelim PlayStation'ımıza. Sanırım sizelere Nintendo'dan bahsetmem doğru olmaz. Yani bahsetsem bile kısa sürer. O yüzden PlayStation ile başlayalım. PlayStation aslında Sony firmasının deneme amacıyla piyasaya sunduğu bir Console idi. Çok masraf yapmadan böyle bir girişimde bulundular ve sonuçta karşımıza Psx(PlayStation) çıktı. Rakipleri Sega ve Nintendo'ya göre bu piyasada yeni olan Sony'nin oyuncağı Psx akılalmaz bir biçimde tırmanışa geçti. Bir anda beklenmeyen satış rakamlarına ulaştı. Rakipleri azğzı açık ayran budalasına döndü. Ve artık Psx kendinden daha iyi yeteneklere sahip olan başka console'lar varken en popüler olanı oldu. Tabii bende bu popüleriteye katılıp bir tane Psx edindim. Yani çorba da benimde tuzum var. Yatıp, kalkıp Sony bana dua etsin walla :) Peki niye en popüler olan Psx olmuştu. Bunun açık birkaç nedeni var.
1-) Sony'nin elektronik sanayisinde bir dev olması ve Türkiye
gibi yerlerde bile bayiliklerinin olması. Yani müşteri arkayı sağlama alıyordu.
:)
2-) Diğerlerine oranla ucuz fiyat.
3-) Ucuz fiyatla 3d kullanan tek
console olması.
4-) Bir anda oyun firmalarının odağı olması.
5-) Kopya
oyun piyasasının Full bir şekilde Psx'a işlemesi. Bu nedenler bu console'u
almak için yetti. Çünkü ardında ekonomik rahatlık vardı. Kopya oyun piyasası
kötü olmasına rağmen, Psx'ın en büyük dostu oldu! Hemde akıl almaz bir
biçimde.
Psx, 33,8 Mhz ve 2Mb Ram'lik
32Bit mimarilik yapıya sahip olan bir console. Mükemmel diyebileceğimiz
yetenekleri yok ama, insanlar onu sevdi. Buna bende dahilim. Hem Console
hem Pc oynamış biri console'ların nekadar mükemmel olduklarını bilir. Hatta
o console yeteneksiz bile olsa. Evet, Psx ile ilgili ön bilgilerden bahsettik.
Şimdi anlatacaklarım Psx sahibi olan ve onu daha çok öğrenmek isteyenler
için.
İlk konumuz: Game Shark nedir? Ne iş yarar? Yahnisi lezzetli olur mu? Yoksa
fırında külbastı mı yapmalı?
Game Sharklardan bahsetmeden
önce hexadecimal(16'lık sayı sistemi)dan bahsetmek istiyorum. Normalde
kullandığımız rakamlar 10'luk sayı sistemidir. Fakat bilgisayarların işlemcilerinin
algıladıkları sayı sistemi 2'lik sayı sistemidir. Yani 1110101101011101000101
gibi. Bu sistemde yazılan bir dil, bilgisayar tarafından algılanır. Yani,
Pc'de bir *.exe dosyası CPU için 1010101000010111010 gibi binlerce rakamdan
oluşan bir değerliktir. 16'lık sistemde bu 2'lik sistemin 16'lık tabanda
yazılmış halidir. Mesela 10'luk sistemde "15", Hex(16'lık) sistemde "F"
dir. "16" ise "10" dur. Eğer biz bir dosyanın Hex yada Bin(2'lik)kodu ile
oynarsak onu değiştirebiliriz. Zaten o dosya bu rakamlardan meydana gelmiştir.
İşte Game Shark denen alet Psx için yapılmış bir Hex editörüdür. Yani oyunun
bu rakamlardan meydana geldiğini düşünürsek, oyunun koduyla oynayıp oyundaki
bazı şeyleri modifiye edebileceğimizi anlarız. Bir oyun çalışırken Random
Acces Memory(rastgele erişmli bellek) yani RAM e dosya aktarır. Bu sayede
oyun sürekli çalışır durumda olur. Mesela oyun kahramanının bir adım atması
demek RAM de bulunan Hex değerlerinin(aslında normal Binary değerlerin) birçoğunun yeniden yazılması demek.
Böylece karakter bir adım atmış olur. Bir oyunda bulunan bütün değerler,
mesela zaman, can, cephane bunların hepsi RAM de yazılı halde bulunur.
Eğer biz RAM de yazılan bu değerleri bir Hex editörü (Game Shark)ile yeniden
yazarsak, canımızı çoğaltabiliriz veya sınırsız cephane elde edebiliriz.
Örnek: Varsayalım Resident Evil denen oyunda, cephane bilgileri 01AF 0000
FF01 adlı Hex registerda bulunuyor. Yanı bu register bizim cephanemizin
ne kadar olduğunu barındırıyor. Eğer Game Shark mantığı ile düşünürsek,
burdaki FF silahın cinsini, 01 de ne kadar mermisinin olduğunu gösteriyor.
Mesela FF magnum, FE handun, 00 bazooka gibi. O zaman biz diyoruz ki, bize
sınırsız mermili bir bazooka lazım. Ozaman FF in yerine 00, 01 yerine de
FF yazıyoruz. Burdaki FF Dec(10'luk) sistemde 255 demek. Mesela Hex de
00 veya 01 yada FF...vs... bir Byte eder. Her iki rakam=1 Byte. 255dec
bir Byte için verilecek son değerdir.
Yani Hex olarak bu FF oluyor. FF=1Byte=255dec. Yani biz bazooka için
verilebilecek son değeri verdik. Bir Byte'lık alana FF=255 dedik.Bu da
bize ya 99 veya 9999(değişir) tane mermi verir yada mermiyi sınırsız yapar.
Aslında oldukça basit bir mantığa dayalı. Hafızada var olan bilgi bizim zaten
oynadığımız oyunun ta kendisi. Peki, bir kod ile oynamanın mantığını öğrendik sanırım. Fakat bunu yapanlar
nasıl yapıyor? Hani demiştik ya, bir adım attığımızda Ram deki değerler
değişiyor. İşte biz Psx'i bir Pc ye bağlıyıp onun RAM'ini okuyoruz ve değişen
değerlerden istediğimizi buluyoruz. Örnek, Oyuna başladık ve 99 mermimiz var. Hiçbirşey yapmıyoruz RAM e bakıyoruz
ve onu olduğu gibi kaydediyoruz. Daha sonra bir mermi atıyoruz 98 tane
kalıyor. Tekrar Ram i kaydetip öncekiyle kıyaslıyoruz.
Değişen değer yani düşen değerler i ayıklıyoruz ve geri kalan tek değer,
cephane bilgilerinin saklandığı kod oluyor. Yani olay bu kadar basit. Bizde
onu Game Shark ile ayarlıyoruz. Peki, şimdi diyecesiniz madem ki parça
lazım, bunu ben yapamam, benim ne işime yarar? Merak etmeyin, ben bile
var olan kodlarla tonlarca kod yaptım. Tek yapmanız gereken azcık düşünmek.
Kod modifiye etmek kolaydır; fakat yeni bir kod yapmak zordur. Mesela ben
size yaptığım bir kodu nasıl yaptığımı kısaca anlatiyim.
Bu kod Level dergisinde ve Game Shark Code Creators Club da yayınlanan
Elbise silme kodum. İngilizcesi= Erase Moving Pieces Of Costumes. Bu kodu
Tekken 3 için yapmıştım. Özellikle bir kızın eteğini sildiği için çok tuttu
:) Elimde var olan kodları söylüyorum
yani bu kodu yapmak için:
1-) Joker Command: bir tuşa bastığınızda o tuş'a
atanan kod aktif olur ve ram'e yazar.
2-) Costume modifier: bir karakterin
değişik elbiselerini açar ve giydirir.
3-) Aklıma gelmedi, dörde geçiyorum.
4-) Ha, hatırladım. Daha başka kod yoktu. Evet, yalnızca 2 kod. Peki ben
nasıl yaptım?
Öncelikle köstüm kodu için atanabilecek tüm değerleri buldum.
Daha sonra Wrap olmuş bir Kostüm kodu buldum. Bu kod Base'i kostüm davranışları
ile alakalı olduğu için daha genişletilmesi lazımdı. Bende kodu, aktif
olduğu tüm kostümü kontrol etme alanından alıp hareketli olan sprite alanına
atadım. Şu an için bunları yapmanız imkansız, ancak mantığı kavrayınca bu işi
kolayca yapabilirsiniz. Neyse, kod böylece
kostüm için tutulan sprite değerlerine geçti. Bunu yaptıktan sonra kodu
sprite silmesi için ters çevirmek lazımdı bende bunu ters çevirdim. Mesela,
FF00 tersi= 00FF gibi. Bu kod aktif olan kostümdeki sprite yani hareketli
olan parçaları siler hale geldi. Ama bir sorun vardı. Oyunu bu kodla açınca,
initial search dediğimiz, oyunun RAM deki datalardan bilgi alıp kendini
kurduğu yerde oyunu kitliyordu. Bende bunun için bir tuşa basılınca bu
kodun aktif edicek bir joker command yaptım ve R2 tuşuna atadım. kod yardımcı
kodlarla beraber 4 satır'a çıktı. Oyunu açtım, sprite ı eteği olan xiayou
u seçtim. İnitial search ü geçince R2 bastım ve yeni yükleme ekranın bekledim.
Sonuç görülmeye değerdi :D
Şu an elinizde bir Game Shark ve Tekken 3 Japon Versiyonu varsa şimdi vereceğim
kodlarla bu işi yapabilirsiniz. Ve kendi gözlerinizle görebilirsiniz.
GameShark'a gireceğiniz kodlar:
800992C8 FFFF
800992CA 001F
800992CC 0382
800992CE 0005
E00AA5C8 00080002
800AA6DD 0012
800AA6DD 0013
Bu kodları girdikten sonra oyunu bu hile başlatın. Daha sonra ana menüde XIAOYU karakterini "START" tuşu ile seçin. VS yazan yükleme ekranı geldiğinde "R1" tuşuna oyun açılana kadar basılı tutun. Oyun yüklendiğinde manzaranın keyfini çıkarın :)
Benim biraraya getirmiş olduğum GS kod türleri.
1-) Erase:bu tür kodların görevi var olan ram
verilerini yok etmektir.
2-) Erect:" " "
" " olmayan (akmayan) verileri akar hale getirir.
3-) Anticipatory:ara yükleme veya initial search esnasında devreye
girer.
4-) Streamer:oyun esnasında devreye girer.
5-) Temporary:çalıştırılan kod yeni bir yükleme esnasında veya
belli bir süre sonra durur.örn;elbise silme kodum.
6-) Seizable:initial search sırasında yakalanır ve çalışmaz
joker command veya switch gerekir.
7-) Accompanier:bir başka kodun yanında kullanılarak yeni işlev
kazanır.
8-) Approach:kodları farklı adreslere taşır.
9-) Perpetual:yapıldığı zaman sürekli çalışır durmaz.
10-) Enable:çok maksatlıdır,genellikle düzenli kod erişimini
sağlar.
11-) Crash:çalışmayıp oyunu bozan kodlar yani submit değil.
Şimdi geçelim bir diğer
olaya. Nasıl oluyorda millet bu üç boyutlu grafikleri falan yapıyor? Mantık
şu, üç boyultu bir ortamda çevreye resim yapıştırmak. Yani bir 3d oda içindeki
gözle görülen bir duvarkağıdı Texture oluyor, buda bir resme eşit oluyor.
Mesela, Silent Hill deki Harry nin yüzü aslında resim, bacaklarıda öyle.
Yanlızca bu 3d mimari bu resimleri birleştirip, bize 3d bir karakter çıkartıyor.
Bir oyunun grafiklerinin iyi olması demek, kullandığı teknoloji ile grafik
işlemcinin yeteneklerini nasıl kullandığı demektir. Yani, her oyunun grafikler
i eşittir. yalnızca kullanılan tech. farklıdır. Oyunlar yapım aşamasıda
cam gibi görüntülerle yapılır ama Psx platformunda bu düşer. Düşmemesi
için IQ su yüksek yapımcıların o oyunu yapmış olması gerekir.
Peki bir örnek verelim, FF8'i bilmeyeniniz yoktur. Şimdi biz bu oyunu
alıp Pc ye takalım.Bir emulatör ile açıp 3d acc. verelim. Nasıl anladık
mı? Daha sonra cd-rom'un içine dönelim. İki üç dosya görücez. Bunlardan
en büyüğü yani ff8imgdisc1 bizim oyunun tamamı olcak. İşte bu dosya bütün
oyunu, filmleri, müzikleri ve resimleri falan barındırıyor. Fakat gördüğünüz
gibi tek dosya halinde. Yani birbirlerine bağlı. Biz bu durumda, bu bağlı
dosyalardan resimleri almak istediğimizde, bir tool kullanarak tüm resimleri
ayıklıyacağız. Bu arada şunu söyliyim, Psx *.tim ve *.bmp denen resim formatlarını
çok kullanır. *.tim formatı Psx e özeldir. İşte bir tool bize bu tim dosyalarını
ayıklamakta yardım edecektir. Tabii sandığınız gibi size 3,5 resim çıkarmıyacak.
Binlerce hatta onbinlerce resim sizi bekliyor olacak. Ve harddiskinzde
cd nin 4/2 kadar yer kaplıyacak. Bu resimler, karakterleri oluşturan resimlerdir.
Mesela Squall'in yüzünü, omzunu falan bu resimlerin arasında parça parça
olarak bulursunuz. Hatta oyunda kullanılan yazılar bile bu resimlerden
oluşur. 012.. ve ab... diye oluşan tablolar vardır. Bu tek bir resimdir
yani oyunun font'u. İşte bu resimlerin arasında bazen hiç görülmemişleride
vardır. Mesela benim bulduğum birkaç resim. Fakat yalnızca resim değil,
müzik ve filmde çıkarabilirsiniz. Ama bunların hiçbirini Pc okumaz. Psx
Film için *.mov *.str *.fmv , ses için *.xa *.str *.mov *.vab gibi formatlar
kullanır. Bunları codeclerini bularak görüntü elde etmeniz mümkün. Tabii
resim içinde aynı şey geçerlidir. *.tim codec i bulmanız lazım. Pekala,
benim bulduğum birkaç resim.
Tabii *.gif ve *.bmp halinde:









Peki mademki PSX aslında bir bilgisayardan farkı olmayan bir alet. Biz bu alete kendimiz oyun yazabilir miyiz? Cevap basit: Elbette!! Hemde evinizdeki bilgisayar ve bir CD yazıcısından başka bir donanıma gerek kalmadan :)
Bir Psx'in tuşuna dokunduğunuzda, kendi Rom'u içinde bulunan Bios dosyasını çalıştırmaya başlar. Bunu yapmaya başlayan şey ise CPU dediğimiz, tranzistörlerden yapılmış, chip birimidir. Bir tranzistör en basit haliyle, 3 uçlu bir devre anahtarıdır, elektrik akımı orta uçtan verildiğinde diğer iki uç arasından elektrik akımının geçmesine izin vermektedir. Kısaca eletriğin ya "var" yada "yok" olmasını sağlar. Biz bu işlemde var olan akıma "1" yok olan akıma "0" diyoruz. Bu sayede elimizde 1 ve 0 lardan oluşan bir haberleşme metodu oluyor. Bu metod ile, sayıları ve doğal olarak değerleri elde edebiliyoruz. 0 ve 1 lerden oluşan bir alfabede bir sayı söyleyebilmek için ise 2 lik sayı sistemini kullanıyoruz. İşte bu işlevlerle yola çıkan cpu, aynı mantıkla BIOS dediğimiz, temel girdi-çıktı denetimini yapan dosyayı okuyup işliyor. Bu bios'a bağlı olarakta ufak çapta bir işletim sistemi hazır hale geliyor. Ardından, makina, sadece PSX cdlerine özel olan CDlerin yazılmayan ve formatlayan kısmında(sektör) bulunan veriyi okuyor. Eğerki veri uyuşmazsa, sistem oyunu açmayı reddediyor.Biz ise bunun üzerine Mod-Chip denilen, bu kontrol biriminin üzerine paralel lehimlenen ve cdlerde aranan orjinal psxCd verisinin aynısını içeren bir chip-rom yerleştiriyoruz. Böylece PSx her takılan cd yi geçerli bir cd sanıyor. Geçerli olan cdlerde, PSX-EXE dediğimiz, Windows bilgisayarda benzeri olara *.exe uzantılı dosyaları gösterebileceğimiz dosya açılıyor. Böylece oyun hafızada yerini alıyor. Bu hafıza CPU tarafından işleniyor. Bu CPU R3000A denilen bir işlemci. Kendine ait bir Inst. Table'ı olan bir işlemci. Kendisi 32 Mhz hızında da olsa harikalar yaratabiliyor :) Çünkü kendisi özel bir amaç için dizayn edilmiş. Oyun, oyun makinası olan konsolda oynanır.
CPU gerekli komutları okuyor ve grafik ses gibi birimleri oluşturuyor. Bunların hepsi CPU tarafından algılanıp paylaştırılıyor. Bu durumda iş CPU denilen ve dili R3000A olan bir birimde bitiyor. O zaman kendi oyununu yazmak isteyen için yapması gereken teş şey, nasıl windowsda x86 gibi Assemblerlarla uğraşıyorsa, R3000A assembler ile yapılan her tarz psx-exe PSx tarafından okunabilir. Tabii ki bunun olması için, sizin PSx'in cd koruması kalkmış versiyonunda sizin yazdığınız dosyayı bir R3000A ile build ettiğiniz exeyi bir cdye yazmanızla olur.
Elbette bu işi yapmak oldukça zordur. Bunu SNES ve Sega MD için NES için yapanlar var; ancak onların dili daha kolay. Ve CPU mimarisi 32 bit değil 16 ve 8 bit. Ama Bir PSX exe yapmaktansa onu okumak daha kolaydır. İşte bunu yapan, R3000A işlemciyi taklite edebilen diğer bir tabirle komutlarını işleyebilen emülatör dediğimiz programlardır. Bir emülatörde 3 birim bulunur. Cpu, Spu, Gpu... Bu üç birim hem birinden bağımsız hemde birbiriyle eş zamanlıdır. Günümüzde ePSXe denilen bir emülatör bu 3 birimi ayrı ayrı seçip emulate etmenizi sağlayan güzel bir emülatördür.
Kısacası bir bilgisayar türevinin tek farkı onun kullandığı komut dilidir. Bunuda yapan şey CPU dediğimiz işlemci birimidir.
Örneğin bir PlayStation CDsi içindeki hiçbir codec ile açılamayacak olan SEQ die adlandırılan, bizim windows makinalarda kullandığımız *.MID, midi formatının aynısıdır. Bir midi dosyasında, ses kartında önceden tanımlanmış enstrüman ve ses aralıklarının nasıl çalınacağı ve notaları gibi bilgiler vardır. Bir orkestra düşünün ama orkestra sizin bir kağıda yazdığınız şeyi çalan bir orkestra. Siz kağıdı verdiğinizde üzerindeki notalara göre orkestra size bir şarkıyı çalabilir. Sizde yanınızda sadece notalarla gezebilirsiniz. Ama orkestra olmazsa siz bir şarkıyı kaydetmeli yada kendi orkestranızı yanınızda taşımalısınız :) İşte burdaki orkestraya verilen kağıt, midi dosyalar oluyor. Aynı şekilde PlayStation'ın sound chipi içinde kendine özgü enstrümanları olan bir sistem mevcuttur. SEQ dediğimiz dosyalar sadece bu enstrümanların nasıl çalınacağını söyler. Bu yüzden bu chip olmadan hiçbir şekilde SEQ dosyaları başka bilgisayarlarda çalıştıramazsınız. Ancak siz bu chip içinde bulunan enstrüman sistemini alıp Emulate edersiniz iş değişir :) Kısacası dilinden konuşmanız yeterli olacaktır. Konu hakkında ilgilenenler internette "psf sound format" yazarak bunun hayata geçirildiğini görebilir.
Aynı şekilde var olan oyun dosyaları Reverse Engineering ile açılarak değiştirebilir. Bunun için bir compiler gerekli değil, bir editör ye R3000A bilgisi yeterlidir. Hatta daha basit yolla, PSX cdleri içinde XA formatlı ses dosyalşarı bulunuyorsa bir codec converter ile bunu yapabilirsiniz. Mesela Tomb Radier 3 cdsini hard diskinize kopyalayıp, XA isinli dosylardan birini sizde var olan bir mp3 ü XA formatına çevirerek değiştirip yeni bir cd yazabilirsiniz. Mesela Title ekranında TR3 için Michael Jackson Billie Jean çalması ilginç olurdu :)
Aynı şekilde Hex editör dediğimiz Game Shark kodlarını cd içindeki PSX-EXE içine yerleştirebiliriz. Böylece hazır Crack edilmiş bir oyunumuz olur. Bunun için yapılması gereken, dosyada hafızadaki alana karşılık gelen offseti bulup valueler ile oynamaktır.
Peki Psx örneğini ele alarak bir emülatör yapılabildiğine göre Mac gibi diğer sistemler içinde bir emülatör yapılabilir. Bunun terside olabilir. Windows uygulamalarını çalıştırabilen başka bir makine de yapılabilir. Ancak bu Psx olamaz, çünkü Psx'in donanım özellikleri bunu karşılamamaktadır. Peki bir PlayStation içinde donanım olarak neler barındırır?
--- CPU ---
32 Bit R3000A 32 MHZ Risc , 30 MIPS, Ins. Cache 4KB, Data Cache 1 KB, Bus 132 MB/Sec., OsRom 512KB.
--- SPU ---
24 KAnal, 44.1 KHZ, Envelope, Digital Reverb, 512K Sampled, Waveforms, MIDI, Ram 512KB
--- GPU ---
16.7 Milyon Renk, Res. 1256x224 ve 740x480, Sprite/BG, 4000 8x8 sprites,360000 poligon/sec ...
Elbette PlayStation2 ile kıyaslanınca rakamlar çok komik kalıyor. Ama bu oyunlarında komik kalması anlamına gelmiyor.
Psx için düşündüğünüz mantığın aynısını Ps2 içinde düşünebilirsiniz. Sistem aynı sadece donanım değişik. Donanım dğeişince yazılımda da değişim olabiliyor. Örneğin Ps2 için çıkarılmış YaBasic isimli bir programlama dili mevcut. Bu programlama dili ile Ps2 için ufak yazılımlar geliştirebiliyorsunuz. Aslında görüntüde bilgisayarlara yaklaşan bir Console piyasası mevcut. Ancak unutulmaması gereken birşey var. Oda en sanatsal oyunlar hep Console oyunlarıyla piyasaya düşmüştür. Bazı donanım yeteneklerinin artması, bir konsolu bilgisayar yapmaz.
Crack ve Hack işlerini yapabilen kişiler her zaman ellerinin altındaki sistemi
iyi bilen kişilerdir. Bu işin tek yolu budur. Eğerki bir şeyi iyi bir şekilde
ezbere değilde, mantıkla biliyorsanız, o iş ile ilgili her konuda yetkili birim
olabilirsiniz. Elinizin altındakine hükmedebilirsiniz.
Yazan: Gökhan Muharremoğlu