1 poin oleh GN⁺ 2025-12-12 | 1 komentar | Bagikan ke WhatsApp
  • Berdasarkan proyek dekompilasi Super Mario 64 untuk Nintendo 64, ini adalah versi yang di-port khusus untuk PlayStation (PSX)
  • Mencakup modifikasi besar yang disesuaikan untuk perangkat keras PS1, seperti dukungan getar DualShock, konversi matematika fixed-point, dan optimasi rendering
  • Menambahkan fitur peningkatan performa seperti preprocessor grafis, kompresi tekstur, dan optimasi memori animasi
  • Terdapat banyak bug yang sudah diketahui, seperti kontrol kamera yang belum selesai, masalah tabrakan dan crash, serta musik yang tidak bisa di-build
  • Sebagai eksperimen porting lintas platform untuk game klasik, ini menjadi contoh yang bermakna bagi pengembangan konsol lawas dan riset reverse engineering

Gambaran proyek

  • Kode ini adalah fork dari versi dekompilasi penuh Super Mario 64 (J/U/E/SH), yang hanya menargetkan PSX dan PC (untuk debugging)
    • Build untuk Nintendo 64 sudah tidak lagi didukung
    • Saat ini hanya ROM versi AS (US) yang bisa di-build
  • Build game tidak menyertakan aset asli, sehingga perlu mengekstrak aset dari ROM asli
Iklan

Fitur utama

  • Menambahkan grafis kompatibel DualShock™, meniru tampilan label “Rumble Pak Compatible” asli
  • Mendukung baik sinyal getar analog untuk motor besar DualShock maupun sinyal digital untuk motor kecil
  • Implementasi soft float presisi rendah untuk PSX guna meminimalkan penurunan performa operasi floating-point
  • Kode diganti dengan matematika fixed-point, menggunakan vektor dan matriks integer 16-bit yang menjadi standar PSX
  • Render graph walker disederhanakan dan ditulis ulang
  • Pembelahan poligon (hingga 2x) untuk mengurangi masalah poligon besar
  • RSP display list diubah ke format kustom dengan metode JIT, meningkatkan kecepatan pemrosesan
  • Preprocessor display list menghapus perintah yang tidak perlu dan mengoptimalkan mesh
  • Kompresi animasi Mario (580,632 → 190,324 byte) dan penempatan langsung ke VRAM
  • Menambahkan profiler kustom dan encoder tekstur 4bpp
  • Mengganti bayangan menjadi bayangan heksagonal dengan mempertimbangkan keterbatasan transparansi PSX
  • (Direncanakan) rotasi kamera dengan stik analog kanan dan penulisan ulang subsistem Goddard

Masalah yang diketahui

  • Pohon melayang, sebagian animasi tidak berfungsi atau menyebabkan crash
  • Musik tidak bisa di-build, efek suara hilang atau terdengar aneh
  • Kontrol kamera belum selesai, crash saat masuk level tertentu
  • Gagal memuat sequence ending, Lakitu tidak muncul, pole tidak berfungsi
  • Waktu loading lama karena tekstur dimuat satu per satu, distorsi tekstur akibat keterbatasan PSX
  • Preprocessor grafis perlu ditingkatkan, sebagian tekstur salah render, layar judul belum selesai, menu jeda tidak berfungsi

Cara build

Linux

  • Instal toolchain mipsel-none-elf-gcc, lalu clone repositori
  • Letakkan file baserom.us.z64 di direktori root
  • (Opsional) Tambahkan file soundtrack .wav (0~37) ke folder .local
  • Menjalankan make akan membuat image ISO (build/us_psx/sm64.us.iso)
  • Versi benchmark (make BENCH=1) hanya membuat ELF/EXE tanpa ISO, dan memerlukan PSX RAM 8MB

Windows (belum diverifikasi)

  • Instal MSYS2 lalu konfigurasikan paket mingw-w64
  • Instal mipsel-none-elf-gcc dan clone repositori sm64-psx
  • Letakkan file baserom.us.z64, lalu jalankan make
  • Hasil build dibuat di jalur yang sama seperti di Linux
Iklan

Pemecahan masalah

  • Jika gcc tidak dikenali, periksa apakah lingkungan MSYS2 yang dijalankan sudah benar
  • Jika baserom.us.z64 tidak ada, periksa lokasi file
  • Jika Makefile tidak ditemukan, periksa jalur direktori
  • Jika terjadi error paket, lakukan update dengan pacman -Syu dan pacman -Su
  • Untuk memastikan mipsel gcc berfungsi, verifikasi dengan perintah mipsel-none-elf-gcc -v
  • Saat berpindah platform, perlu mengompilasi ulang tool dengan make -C tools clean

Struktur proyek

  • actors: perilaku objek, geo layout, display list
  • assets: data animasi dan demo
  • src: source C inti game (audio, engine, game, menu, port, dll.)
  • textures, text, levels: data grafis dan level
  • tools: alat build
  • lib: termasuk kode SDK N64

Kontribusi

  • Pull Request diterima
  • Sebelum perubahan besar, disarankan membuka Issue dan mendiskusikannya terlebih dahulu

1 komentar

 
GN⁺ 2025-12-12
Komentar Hacker News
  • Kalau kamu suka port ini, proyek implementasi ulang SM64 sepenuhnya di GBA juga sepertinya menarik
    Tonton video YouTube

    • Karena ini HN, ini wajib disebut. Port GBA ini ditulis dalam Rust
      Artikel terkait: The Impossible Port – Super Mario 64 on the Game Boy Advance
    • Menarik. Aku penasaran apakah GBA sanggup menjalankan versi ringan bergaya Minecraft
      Rasanya juga bakal cukup cocok di N64, dan suatu saat aku ingin dapat SummerCart64 untuk bereksperimen
    • Ada yang tahu source code proyek ini? Sepertinya sudah dihapus
    • Keren sih, tapi menurutku pribadi agak sulit dilihat
      Meski begitu, tetap luar biasa bisa diselesaikan sampai tuntas
  • Ini benar-benar pencapaian yang mengagumkan
    Dulu aku punya kedua konsol itu, dan melihat port ini membuatku kembali sadar betapa baiknya N64 pada 1996 menangkap nuansa ‘SGI di rumah’
    Aku masih ingat jelas rasa takjub saat pertama kali melihat Mario 64 di N64 versi impor Jepang
    Ini juga mengingatkanku pada ekosistem game yang beragam di masa ketika game seperti Wipeout di PSX berkembang ke arah yang berbeda

  • Mereka bilang “Tessellation (maksimal 2x)” mengurangi masalah poligon besar, tapi di video distorsi tekstur masih sangat terlihat
    Mungkin 2x masih kurang, atau geometri levelnya memang perlu dibuat ulang

    • Aku juga melihat distorsi teksturnya, tapi tidak melihat geometri yang bergoyang khas game PS1
      Mungkin karena operasi floating-point diproses lewat software, jadi perspective-correct mapping akan terlalu membebani frame rate
    • Saat ini hampir tidak ada proses prapemrosesan untuk poligon level
      Kalau nanti diimplementasikan, poligon besar akan dipecah sehingga masalah batas koordinat tekstur juga bisa diatasi
    • Di isu yang sudah diketahui juga tertulis bahwa “Tessellation tidak cukup”
      Nuansa 3D awal yang kasar khas era PS1 masih tetap terasa
  • Penasaran apakah ada video berjalan atau screenshot. Aku paham kenapa tidak ada di GitHub

  • Banyak orang mengeluh soal distorsi tekstur, tapi ini tetap hasil kerja yang luar biasa

  • Mustahil tidak menyebut Kaze
    Dia sudah bertahun-tahun mengoptimalkan Mario 64 dengan berbagai cara, dan kalau kamu tertarik pada persimpangan game retro dan pemrograman, kanalnya wajib ditonton
    Kanal YouTube Kaze

    • Dalam video yang diunggah pada Agustus, dia menganalisis seberapa besar Mario 64 membuang-buang RAM, dan saat itu pertama kali menyinggung kemungkinan port PS1
      Aku tidak menyangka itu akan jadi kenyataan secepat ini
      Tonton video terkait
    • Dia memang luar biasa (dan berotot)
      Kalau ada orang dengan tingkat pengetahuan seperti Kaze tentang PS1, proyek seperti Mario 32 mungkin saja bisa terwujud
  • Belakangan ini jumlah proyek dekompilasi meledak, dan aku penasaran apa latar belakangnya

    • Alasan utamanya adalah kemajuan tooling yang mendukung dekompilasi dengan pencocokan byte 1:1
      Salah satu contoh utamanya adalah decomp.me
      Tool seperti ini memungkinkan rekonstruksi kode yang cocok persis dengan biner asli, sehingga proyek baru bisa dimulai dengan cepat
      Munculnya porting layer yang meniru API SDK konsol juga ikut membantu
      Tapi untuk mencapai pencocokan sempurna, tetap dibutuhkan usaha besar, seperti mereproduksi perilaku aneh dari toolchain lama
    • Mungkin juga karena AI membuat dekompilasi jadi lebih mudah
    • Bisa jadi ya cuma karena AI
    • Semakin banyak orang yang memakai Ghidra juga berpengaruh
  • Baru-baru ini juga muncul port Dreamcast, dan Star Fox 64 serta Mario Kart 64 juga sudah diport ke berbagai platform
    Daftar terkait: awesome-game-decompilations

    • Port Star Fox 64 juga baru saja selesai
  • Sayang sekali tidak ada screenshot

  • “Akhirnya, Super Mario 32