Nintendo 64'e 2026'da yeni oyun: Xibalba 64 nasıl yapıldı
Dominic Szablewski, 4 KB doku belleğine sahip N64 için açık kaynak araçlarla 60 FPS çalışan bir nişancı yazdı. İşte homebrew sahnesinin yöntemleri.

Bir geliştiricinin masasında, bilgisayarın hemen yanında 1996 tasarımı bir Nintendo 64 duruyor. Konsolun görüntüsü on dolarlık ucuz bir USB yakalama kartıyla masaüstündeki bir pencereye aktarılıyor; kod derleniyor, kartuşa USB üzerinden gönderiliyor, konsolun sıfırlama düğmesine basılıyor ve oyunun yeni hali otuz yıllık donanımda açılıyor. Geliştirici Dominic Szablewski, Xibalba 64 adlı birinci şahıs nişancı oyununu aylarca bu döngüyle yaptı.
Oyun, Maya mitolojisindeki yeraltı dünyasının adını taşıyor ve Wolfenstein 3D'yi andıran bir yapıya sahip. Bu yaz kartuşu, kutusu ve basılı kılavuzuyla fiziksel olarak çıktı. Szablewski'nin kendi blogunda yazdığına göre, bildiği kadarıyla bu, konsolun ticari ömrü bittikten sonra Nintendo 64 için fiziksel olarak yayımlanan yeni oyunların ancak ikincisi. Birincisi, aslında Sega Mega Drive için yapılan ve 2023'te N64'e de gelen Xeno Crisis. Ondan önce bu platforma çıkan son yeni oyunun 2002'deki Tony Hawk's Pro Skater 3 olduğunu not ediyor.
Asıl ilginç olan ise oyunun kendisinden çok, yapılış hikâyesi. Bu hikâye bugünün araçlarıyla çeyrek asırlık bir makinenin sınırlarına nasıl sığıldığını gösteriyor.
Tuhaf bir mimari: tek işlemci yetmiyor
Nintendo 64'ün kalbinde 93 MHz hızında çalışan, büyük uçlu (big-endian; çok baytlı sayıları en anlamlı bayttan başlayarak saklayan) bir MIPS işlemci var. Ama görüntü ve ses işinin büyük kısmı iki yardımcı işlemciye düşüyor. Reality Display Processor (RDP) işlevleri sabit, yani yeniden programlanamayan bir grafik birimi. Reality Signal Processor (RSP) ise programlanabilen bir vektör işlemcisi. İkisi aynı yonga paketinde durduğu için birlikte "Reality Coprocessor" diye anılıyor.
Szablewski'nin anlattığına göre Nintendo konsolun ilk yıllarında RSP'ye erişimi sıkı tutmuş. Bu işlemci yalnız şirketin resmî kütüphanesi libultra üzerinden kullanılabiliyormuş. Stüdyoların RSP için kendi "mikrokod"larını, yani aslında MIPS assembly ile yazılmış küçük programlarını yazmasına ancak sonradan izin verilmiş. RDP'nin komut yapısı da karmaşık. Geliştiriciye göre oyunu doğrudan donanım üzerine, hiçbir kütüphane olmadan yazmak neredeyse imkânsız. Sızan libultra'yı kullanmak ise telif açısından ciddi bir hukuki risk demek.

Homebrew sahnesinin açık kaynak araçları
Boşluğu, son yıllarda epey hareketlenen N64 homebrew topluluğu (resmî lisans olmadan, meraklıların kendi yaptığı yazılımlar) doldurmuş. Szablewski'nin kullandığı temel araçlar şunlar:
- Libdragon: Geliştiricinin deyişiyle "N64'ün SDL'i". Sprite ve üçgen çizimi, ses çıkışı ve kol girdisi gibi işleri üstleniyor, ROM üretmek için gereken derleyicileri de getiriyor. Szablewski "kararlı" diye işaretlenen dalın çok geride kaldığını, önizleme dalının tercih edilmesi gerektiğini söylüyor.
- Tiny3D: Max Bebök'ün geliştirdiği bu kütüphane, dönüşüm, ışıklandırma ve derinlik hesaplarını RSP'de yapıp çizimi RDP'ye yaptırıyor.
- Ares öykünücüsü: Eski öykünücüler donanımı değil, libultra'nın "bir üçgen çizme niyetini" taklit ediyordu. Ares'in N64 çekirdeği ise RSP ve RDP'yi zamanlamalarıyla birlikte öykünüyor. Yine de konsolun ünlü düşük bellek bant genişliği yalnız gerçek donanımda sınanabiliyor.
- SummerCart64: Açık kaynaklı bir geliştirme kartuşu. SD kart yuvasının yanı sıra USB-C bağlantısı sayesinde ROM, derleme sürecinin bir adımı olarak doğrudan konsola yüklenebiliyor.
Oyunun motoru da kendine özgü. Szablewski 2010'da 2D aksiyon oyunları için Impact adlı bir JavaScript motoru yazmış, iki yıl önce de onu C diline aktarıp high_impact adıyla MIT lisansıyla yayımlamış. Bu motor pencere açma ve girdi okuma gibi alt düzey işleri değiştirilebilir "platform arka uçları"na bırakıyor. Libdragon üzerine yeni bir arka uç yazmak birkaç akşamını almış.
Üç boyut gibi görünen iki boyut
Peki 2D bir motorla 3D bir nişancı nasıl yapılır? Xibalba 64'ün haritalarında yükseklik farkı yok. Bu yüzden fizik, hareket ve atış hesapları yukarıdan bakılan düz bir harita üzerinde yapılabiliyor; üçüncü boyut neredeyse yalnız çizim için gerekiyor. Wolfenstein 3D'nin hilesi de aşağı yukarı buydu.
Asıl zorluk çizimde. N64'ün doku belleği yalnız 4 KB. Tek seferde yüklenebilecek en büyük doku 64×64 piksel ve doku yüklemenin gecikmesi çok yüksek. Szablewski'nin belirttiğine göre Super Mario 64 dahil birçok oyun bu sorunu mümkün olan her yerde dokusuz çokgen kullanarak aşmış. Xibalba 64'ün görsel üslubu buna uymadığı için geliştirici başka yollar denemiş:
- Aynı dokuyu kullanan üçgenler, her biri 64 bitlik paketlenmiş birer kayıt olan çizim çağrılarında toplanıyor. Böylece kare sonunda hızla sıralanıp Tiny3D'ye toplu halde gönderilebiliyor. Kütüphane tek seferde 17 dörtgene kadar işleyebiliyor.
- Neyin görüneceğine, görüş alanını kaplayan 320 ışın gönderilerek karar veriliyor. Işınların geçtiği kareler işaretleniyor. İki komşu ışın aynı kareye çarpana kadar görüş alanı tekrar tekrar ikiye bölünerek iş azaltılıyor.
- Doku sayfaları tek sütuna diziliyor ve mümkün olan her yerde 4 bitlik dizinli renk kullanılıyor. Böylece her karo bellekte kesintisiz tek bir parça halinde yükleniyor.
- Gökyüzü yalnız 32×32 piksellik tek bir dokunun ufka yayılmasından ibaret.
Sonuçta oyun, Szablewski'nin ifadesiyle "pek az N64 oyununun iddia edebileceği" kararlı 60 kare/saniyede çalışıyor. Dört kişilik bölünmüş ekran kipinde bu hız her an korunamıyor ama akıcılık bozulmuyor. Geliştirici karşılaştırma için GoldenEye 007'yi hatırlatıyor; o oyun aynı kipte sık sık tek haneli kare hızlarına düşüyordu.
Yukarıdaki tanıtım videosu, Dominic Szablewski'nin kendi YouTube kanalında yayımlandı.
Kartuşun neredeyse tamamı ses
En şaşırtıcı ayrıntı belki de bu: 32 MB'lık ROM'un yaklaşık 31 MB'ı ses ve müziğe gidiyor. Kartuşta yer dar, sıkıştırılmış sesi çözmek ise işlemciye pahalı. Libdragon'un geliştiricilerinden Giovanni Bajo, RSP üzerinde hızlandırılmış bir Opus çözücü yazmış. 2012'de yayımlanan bir ses biçiminin 1996 donanımında çalışması başlı başına ilginç, ama oyun sırasında kullanmak için hâlâ fazla ağır. Bu yüzden oyunda Libdragon'un çalma sırasında RSP'de çözdüğü 4 bitlik VADPCM biçimi kullanılmış. Müzikler Szablewski'nin bütün oyunlarında birlikte çalıştığı arkadaşı Andreas Lösch'e ait.
Hikâye burada da bitmiyor. Szablewski kasım ayında yayımladığı yeni yazısında, ilk olarak Game Boy Advance için tasarlanan ULC (Ultra Low Complexity) adlı bir dönüşüm kodlayıcısını N64'e uyarladığını anlatıyor. Ölçümlerine göre bu kodlayıcı, 44.100 Hz stereo sesi Opus'a yakın bit hızlarında çalıyor ve işlemci zamanının yalnız yüzde 4 kadarını harcıyor.
Neden önemli: kısıt bir tasarım okulu
| Donanım ya da ölçü | Değer |
|---|---|
| Ana işlemci | 93 MHz MIPS, büyük uçlu |
| Doku belleği | 4 KB (en büyük doku 64×64 piksel) |
| ROM boyutu | 32 MB, yaklaşık 31 MB'ı ses |
| Görünürlük hesabı | Kare başına en çok 320 ışın |
| Kare hızı | Tek oyunculu kipte kararlı 60 FPS |
Tablodaki veriler Szablewski'nin geliştirme günlüğünden derlendi. Bu sayılar bugünün oyun geliştiricisine yabancı. Günümüzde bir dokunun tek başına megabaytlar tutması sıradan bir durum. Xibalba 64'ün hikâyesi ise eski bir alışkanlığı hatırlatıyor: bellek, bant genişliği ve kartuş alanı bu kadar kısıtlıyken her bayt bir karar demek. Hangi karonun ne zaman çizileceği, hangi rengin kaç bitle saklanacağı, sesin ne kadarının sığacağı tek tek tartılıyor.
Bir başka önemli nokta da bilginin artık açık olması. Doksanlarda bu sınırlarla boğuşan ekipler, çoğunlukla gizlilik anlaşmalarıyla korunan belgelerle ve kapalı araçlarla çalışıyordu. Bugün Libdragon, Tiny3D, Ares ve SummerCart64 gibi açık araçlar sayesinde aynı makine için tek kişi oyun çıkarabiliyor. Szablewski de motorunu sonradan açık kaynak olarak yayımlayabilmek için yayıncıyla yaptığı sözleşmede değişiklik istediğini yazıyor. Yazısını N64brew Discord topluluğuna ve kütüphane geliştiricilerine teşekkürle kapatıyor.
Açık soru, bu ivmenin nereye varacağı. Elde artık gerçek donanıma yakın öykünücüler, modern ses kodlayıcıları ve Pyrite64 gibi görsel düzenleyiciler var. Bu durum, otuz yaşındaki bir konsolun yeni oyun kütüphanesinin önümüzdeki yıllarda tek tük örneklerin ötesine geçip geçmeyeceğini merak ettiriyor. Szablewski ise beklentileri gerçekçi tutuyor: ona göre N64 oyunu yapmak insana işini bıraktırmaz, ama birkaç güzel tatilin parasını çıkarabilir.
Fotoğraf: Evan-Amos, Public domain, Wikimedia Commons
Kaynak: Yudum — https://www.yudum.net/haber/nintendo-64-icin-2026da-yeni-oyun-xibalba-64-nasil-yapildi.html — Yazdırma tarihi:



















