1 puan yazan GN⁺ 2025-12-12 | 1 yorum | WhatsApp'ta paylaş
  • Nintendo 64 için olan Super Mario 64 decompile projesi temel alınarak PlayStation(PSX)'e özel olarak portlanan bir sürüm
  • DualShock titreşim desteği, sabit nokta matematik dönüşümü, render optimizasyonu gibi PS1 donanımına uyarlanmış kapsamlı değişiklikler içerir
  • Grafik ön işleyici, doku sıkıştırma, animasyon bellek optimizasyonu gibi performans geliştirme özellikleri eklendi
  • Bazı kamera kontrol eksiklikleri, çarpışma ve çökme sorunları, müzik build edilememesi gibi çok sayıda bilinen hata mevcut
  • Klasik bir oyunun platformlar arası portlama deneyi olarak, miras konsol geliştirme ve tersine mühendislik araştırmaları için anlamlı bir örnek

Proje Genel Bakış

  • Bu kod, Super Mario 64 (J/U/E/SH) tam decompile sürümünün bir fork'ıdır ve yalnızca PSX ve PC (hata ayıklama amaçlı) hedeflenmektedir
    • Nintendo 64 için build artık desteklenmemektedir
    • Şu anda yalnızca ABD (US) ROM'u derlenebilir
  • Oyun derlemesinde orijinal varlıklar bulunmaz; resmî ROM'dan varlık çıkarımı gereklidir
Reklam

Öne Çıkan Özellikler

  • Orijinal “Rumble Pak Compatible” etiketi kopyalanarak DualShock™ uyumlu grafik eklendi
  • DualShock büyük motor için analog titreşim sinyali ve küçük motor için dijital sinyal desteği sağlanır
  • PSX için düşük hassasiyetli soft float uygulanışı ile kayan nokta işlemlerindeki performans kaybı minimize edildi
  • Kodu sabit nokta matematik ile değiştirerek, PSX standardı olan 16 bit tamsayı vektör/matrisler kullanıldı
  • Render graph worker basitleştirildi ve yeniden yazıldı
  • Büyük poligon sorunlarını azaltmak için çokgen bölme (en fazla 2x)
  • RSP display listleri JIT yöntemiyle özel bir formata dönüştürülerek işlem hızı artırıldı
  • Display list ön işleyici ile gereksiz komutları kaldırma ve mesh optimizasyonu
  • Mario animasyon sıkıştırma (580,632 → 190,324 bayt) ve doğrudan VRAM'e yerleştirme
  • Özel profilör ve 4bpp doku kodlayıcısı eklendi
  • PSX'in şeffaflık sınırları nedeniyle altıgen gölgelere geçildi
  • (Planlanan) Sağ analog çubukla kamera dönmesi ve Goddard alt sisteminin yeniden yazımı

Bilinen Sorunlar

  • Yüzen ağaçlar, bazı animasyonların çalışmaması veya çökme
  • Müzik derleme yapılamaması, efekt seslerinin eksik veya bozuk çıkması
  • Kamera kontrolünün tamamlanmamış olması, belirli bir seviyeye girildiğinde çökme
  • Bitiş sıralamasının yüklenememesi, Lakitu'nun görünmemesi, Pol'un çalışmaması
  • Tek tek doku yükleme nedeniyle uzun yükleme süresi, PSX sınırlamasıyla doku bozulması
  • Grafik ön işleyicisinin iyileştirilmesi gerekliliği, bazı dokuların render hatası, başlık ekranının tamamlanmamış olması, duraklatma menüsünün çalışmaması

Derleme Yöntemi

Linux

  • mipsel-none-elf-gcc araç zinciri kurulduktan sonra deposu klonlayın
  • baserom.us.z64 dosyasını kök dizine yerleştirin
  • (Opsiyonel) .local klasörüne soundtrack .wav dosyalarını (0~37) ekleyin
  • make komutu ile ISO görseli oluşturulur (build/us_psx/sm64.us.iso)
  • make BENCH=1 benchmark sürümü ISO oluşturmadan sadece ELF/EXE üretir ve 8MB RAM PSX gerektirir

Windows (doğrulanmamış)

  • MSYS2 kurulumundan sonra mingw-w64 paketleri yapılandırılır
  • mipsel-none-elf-gcc kurulumu yapın ve sm64-psx deposunu klonlayın
  • baserom.us.z64 dosyasını ekleyip make çalıştırın
  • Derleme çıktısı Linux ile aynı dizinde üretilir
Reklam

Sorun Giderme

  • gcc tanınmıyorsa yanlış MSYS2 ortamının çalıştırılıp çalıştırılmadığını kontrol edin
  • baserom.us.z64 eksikse dosya konumunu kontrol edin
  • Makefile bulunamazsa dizin yolunu doğrulayın
  • Paket hatası durumunda pacman -Syu ve pacman -Su ile güncelleme yapın
  • mipsel gcc çalıştırma doğrulaması için mipsel-none-elf-gcc -v komutu doğrulama sağlar
  • Platform değiştirildiğinde araçları yeniden derlemek için make -C tools clean gereklidir

Proje Yapısı

  • actors: nesne davranışı, geo layout, display listleri
  • assets: animasyon ve demo verileri
  • src: oyun çekirdek C kaynakları (ses, engine, oyun, menü, portlama vb.)
  • textures, text, levels: grafik ve seviye verileri
  • tools: derleme araçları
  • lib: N64 SDK kodunu içerir

Katkıda Bulunma

  • Pull Request memnuniyetle karşılanır
  • Büyük değişikliklerden önce Issue açıp tartışılması önerilir

1 yorum

 
GN⁺ 2025-12-12
Hacker News yorumları
  • Bu portu sevdiyseniz, GBA üzerinde SM64'ü baştan sona yeniden hayata geçiren proje de ilginizi çekebilir.
    YouTube videosunu izle

    • Burası HN olduğu için mutlaka söylemek gerekir: bu GBA portu Rust ile yazıldı.
      İlgili yazı: The Impossible Port – Super Mario 64 on the Game Boy Advance
    • İlginç. GBA'nın Minecraft tarzı hafif bir sürümü kaldırıp kaldıramayacağını merak ediyorum.
      N64'e de epey yakışır gibi geliyor; bir gün SummerCart64 edinip denemek isterim.
    • Bu projenin kaynak kodunu bilen var mı? Silinmiş gibi görünüyor.
    • Harika ama şahsen bana bakması biraz zor geliyor.
      Yine de bunu tamamlamış olmaları gerçekten etkileyici.
  • Gerçekten inanılmaz bir başarı.
    Eskiden iki konsola da sahiptim; bu porta bakınca N64'ün 1996'da "evdeki SGI" hissini ne kadar iyi verdiğini yeniden fark ettim.
    Japon ithal N64'te Mario 64'ü ilk gördüğüm andaki şoku hâlâ çok net hatırlıyorum.
    PSX'teki Wipeout gibi oyunların bambaşka bir yönde geliştiği dönemin çeşitli oyun ekosistemi aklıma geliyor.

  • "Tessellation (maksimum 2x)" ile büyük poligon sorununu azalttığını söylüyor ama videoda texture warping hâlâ çok belirgin.
    Muhtemelen 2x yetmiyor ya da level geometry'nin yeniden yapılması gerekiyor.

    • Ben de texture warping'i görüyorum ama PS1 oyunlarına özgü geometry wobble yok gibi.
      Muhtemelen kayan nokta işlemleri yazılımla yapıldığı için perspective-correct mapping kare hızına fazla yük bindirirdi.
    • Şu anda level poligonları için önişleme neredeyse hiç yok.
      İleride uygulanırsa büyük poligonlar bölünecek ve texture coordinate sınırı sorunu da çözülmüş olacak.
    • Bilinen sorunlarda da "Tessellation yeterli değil" diye açıkça belirtilmiş.
      PS1 döneminin erken 3D'nin pürüzlü hissi hâlâ duruyor.
  • Çalışırken çekilmiş video ya da ekran görüntüsü var mı diye merak ediyorum. GitHub'da olmamasını anlıyorum gerçi.

  • Texture warping var diye şikâyet eden çok kişi var ama buna rağmen bu gerçekten inanılmaz bir çalışma.

  • Kaze'den bahsetmeden geçemem.
    Kendisi yıllardır Mario 64'ü farklı şekillerde optimize ediyor; retro oyunlar ile programlamanın kesişimiyle ilgileniyorsanız mutlaka bakmaya değer.
    Kaze'nin YouTube kanalı

    • Ağustosta yüklediği videoda Mario 64'ün ne kadar RAM israf ettiğini analiz etmiş ve PS1 portu ihtimalinden ilk kez orada söz etmişti.
      Bunun bu kadar hızlı gerçeğe dönüşeceğini düşünmemiştim.
      İlgili videoyu izle
    • Gerçekten müthiş biri (ve kaslı).
      PS1 tarafında Kaze seviyesinde bilgiye sahip biri varsa, Mario 32 gibi bir proje de mümkün olabilir.
  • Son dönemde decompilation projeleri patlama yaşıyor; bunun arkasındaki nedeni merak ediyorum.

    • Ana sebep, 1:1 byte-eşleşmeli decompilation'ı destekleyen araçların gelişmesi.
      Örneğin decomp.me bunun önde gelen örneklerinden biri.
      Bu tür araçlar mevcut binary ile tam eşleşen kodun yeniden oluşturulmasını sağlıyor ve yeni projelerin hızla başlamasına yardımcı oluyor.
      Ayrıca konsol SDK API'lerini taklit eden porting layer yapılarının ortaya çıkması da etkili oldu.
      Ama kusursuz eşleşme için eski toolchain'lerin alışılmadık davranışlarını yeniden üretmek gerektiğinden çok büyük emek istiyor.
    • Belki de AI, decompilation'ı daha kolay hâle getirdiği içindir.
    • Belki de sebep sadece AI'dır.
    • Daha fazla kişinin Ghidra kullanmaya başlamasının da etkisi var.
  • Yakın zamanda bir Dreamcast portu da çıktı; Star Fox 64 ve Mario Kart 64 de çeşitli platformlara taşındı.
    İlgili liste: awesome-game-decompilations

    • Star Fox 64 portu da daha yeni tamamlandı.
  • Ekran görüntüsü olmaması üzücü.

  • "Sonunda, Super Mario 32."