- 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
Ö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
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
Henüz yorum yok.