- Game Nintendo 64 yang dirilis pada 1996 kini bisa dikompilasi ulang menjadi port PC native alih-alih diemulasikan, sehingga peningkatan seperti ray tracing, ultrawide, dan FPS tinggi dapat diterapkan
- N64Recomp dan Zelda64Recomp yang dirilis Mr-Wiseguy di GitHub adalah alat utamanya, dan Zelda64Recomp mem-porting The Legend of Zelda: Majora's Mask ke PC
- Pendekatan ini berbeda dari port PC Super Mario 64 berbasis dekompilasi penuh yang dirilis pada 2020, tetapi keduanya sama-sama berjalan native di PC sehingga dapat meningkatkan performa dan akurasi efek
- Sementara dekompilasi manual membutuhkan satu orang atau lebih untuk bekerja selama bertahun-tahun, N64Recomp adalah pendekatan untuk mengubah game N64 menjadi bentuk yang bisa dijalankan di PC dengan lebih cepat
- Hasil akhirnya tidak menyertakan aset, sehingga ROM tetap dibutuhkan untuk bermain, dan Banjo-Kazooie, Rocket Robot, serta Superman 64 disebut sebagai contoh yang berhasil dijalankan
Perubahan cara porting game N64
- Pada 2024 pun, perangkat keras asli dan game Nintendo 64 masih terus mendapat perhatian dari komunitas penggemar
- Ada kemungkinan besar bahwa langkah berikutnya untuk memainkan N64 tingkat lanjut bukan lagi emulasi, melainkan port PC hasil kompilasi ulang
- Mr-Wiseguy di GitHub merilis N64Recomp dan Zelda64Recomp
- N64Recomp adalah alat dasar untuk membuat game N64 menjadi port PC native
- Zelda64Recomp mem-porting The Legend of Zelda: Majora's Mask ke PC dan menerapkan peningkatan grafis serta kemudahan dari N64Recomp
Peningkatan yang dimungkinkan di port PC
- Port PC hasil kompilasi ulang dapat menambahkan peningkatan khas lingkungan PC ke game N64 asli
-
Ray tracing sungguhan
- Batas frame dibuka
- Dukungan ultrawide yang semestinya
- Peningkatan grafis dan kemudahan yang diharapkan di PC
- Majora's Mask dibahas sebagai contoh perbandingan menjalankan ultrawide dengan metode emulasi versus kompilasi ulang native di PC
-
Perbedaan dengan port PC Super Mario 64
- Port PC Super Mario 64 berbasis dekompilasi penuh yang dirilis pada 2020 memungkinkan fitur seperti ray tracing dan penggantian seluruh model, dan mod-nya masih terus berlanjut hingga sekarang
- Port hasil kompilasi ulang berbeda cara pembuatannya dari port hasil dekompilasi seperti port PC SM64
- Kedua pendekatan sama-sama berjalan native di PC, dan dapat meningkatkan performa serta akurasi efek dibanding perangkat keras asli, sambil tetap menghadirkan peningkatan ala PC yang biasanya diharapkan dari emulasi
Mengapa N64Recomp penting
- N64Recomp adalah alat yang melalui pendekatan kompilasi ulang menargetkan kelebihan emulasi dan port native sekaligus
- Untuk mendekompilasi game N64 secara manual, satu orang atau lebih harus bekerja selama bertahun-tahun
- Alat yang lebih efisien untuk mengubah game N64 menjadi kondisi yang bisa cepat dijalankan di PC juga bisa berguna bagi para pegiat preservasi
RT64 dan contoh eksekusi
- Dario adalah pengembang pembuat plugin RT64 yang digunakan di N64Recomp dan beberapa emulator N64
- Menurut postingan Dario, Wiseguy diam-diam mengerjakan alat untuk membuat port PC game N64 tanpa dekompilasi penuh selama satu tahun
- Hasil akhirnya tidak menyertakan aset, dan hanya ROM yang dibutuhkan untuk bermain
- Game berikut disebut sebagai contoh yang berhasil dijalankan
- Banjo-Kazooie
- Rocket Robot
- Superman 64
Pergerakan lain di ekosistem N64
- Kemajuan lain untuk para penggemar pustaka N64 dan perangkat keras aslinya juga terus berlanjut
- SummerCart64 open source adalah flash cart untuk konsol yang sudah ada, dan juga menghadirkan dukungan 64DD
- Game homebrew N64 yang kompatibel dengan perangkat keras asli dan ROM hacking juga terus dirilis
- Smash Remix yang menyediakan 30 fighter
- Peach's Fury, proyek penulisan ulang engine Mario 64
2 komentar
Opini Hacker News
Untuk memakai alat ini, kamu tetap harus terlebih dulu mendisassemble ROM, lalu memberi banyak anotasi agar bisa dikompilasi ulang
Alatnya sendiri bagus, tetapi klaim bahwa ROM sembarang bisa hampir dengan sekali klik dijadikan berkas eksekusi mandiri terasa terlalu dilebih-lebihkan
Dalam video di postingan, mereka mengompilasi ulang game N64 yang tidak disebutkan namanya dan berjalan dengan baik, dan sepertinya tidak perlu anotasi terpisah
ROM secara harfiah bersifat hanya-baca, jadi skenario memasukkan ROM lalu mendapatkan port native itu memungkinkan
Konversi biner-ke-biner mestinya lebih intuitif, dan sepertinya tidak memerlukan input manusia
Benar-benar keren
Berbagai alat dasar yang dibuat untuk dekompilasi N64 mulai menyebar ke paket dekompilasi untuk sistem lain
Yang baru-baru ini saya lihat, https://decomp.me/, mendukung dekompilasi kolaboratif untuk berbagai sistem dengan SDK terkait dan preset perangkat keras
Saya rasa dalam beberapa tahun ke depan tren seperti ini akan muncul di lebih banyak sistem
Saya melihat ini ketika baru muncul, dan sebagai orang yang tidak mengikuti dunia ROM hacking, saya penasaran kenapa pendekatan seperti ini baru muncul begitu terlambat
Menerjemahkan instruksi assembly ke C lalu mengompilasinya ulang tampak seperti metode jelas yang layak dicoba sejak awal, jadi saya penasaran apakah dulu tidak mungkin dan kini ada terobosan lain yang membuatnya memungkinkan
Dari melihat sekilas repositori GitHub-nya, sepertinya secara internal memakai rt64 untuk dukungan ray tracing (https://github.com/rt64/rt64)
rt64 memakai teknik ubershader untuk mengemulasi GPU, dan tulisan bagus ini menjelaskan apa itu ubershader, kenapa dibutuhkan, dan betapa rumitnya: https://dolphin-emu.org/blog/2017/07/30/ubershaders/
Rekompilasi statis dari satu bahasa mesin ke bahasa lain berada di antara sangat sulit dalam praktik dan umumnya mustahil [1]
Agar rekompilasi seperti ini berjalan dengan benar, diperlukan juga bantuan dari sisi biner yang membuat rekompilasi lebih mudah [2], ditambah patch agar bisa berjalan di atasnya [3]
Rekompilasi dinamis tidak punya masalah seperti ini, jadi jika memasukkan biner asli dan asetnya, yaitu ROM, biasanya bisa dibuat perangkat lunak yang teremulasi
Ada banyak kebingungan tentang seberapa umum solusi ini
Dari sisi pengurangan beban kerja yang membuat rekompilasi atau port jauh lebih mudah, ini sangat mengesankan dan bernilai besar, tetapi tidak menggantikan kebutuhan akan emulator tradisional
[1]: https://cs.stackexchange.com/questions/155511/why-is-static-...
[2]: Biner game N64 mungkin secara kebetulan menghindari berbagai faktor yang membuat rekompilasi statis umum menjadi sulit, sehingga membantu pendekatan ini, tetapi sebenarnya saya tidak tahu pasti
[3]: Repositori rekompilasi Majora's Mask berisi banyak patch buatan tangan agar bisa berjalan: https://github.com/Mr-Wiseguy/Zelda64Recomp
Jamulator sudah melakukan ini untuk NES pada 2013, tetapi sepertinya tidak banyak yang peduli
https://andrewkelley.me/post/jamulator.html
Ada juga Winlator, yang menjalankan program Windows di Android
https://github.com/brunodev85/winlator
Dan apakah video YouTube yang ditautkan di artikel itu memakai suara AI?
Di repositori GitHub N64Recomp[0] tertulis begini:
"This is not the first project that uses static recompilation on game console binaries. A well known example is jamulator, which targets NES binaries."
[0]: https://github.com/Mr-Wiseguy/N64Recomp
Dalam situasi seperti itu, recompilation hanya membuat semuanya lebih rumit tanpa banyak manfaat
N64 sedikit lebih mudah karena hardware-nya tetap
Meski begitu, proyek ini masih memakai emulasi untuk RDP
Saya tidak tahu bagaimana mereka menangani microcode RSP yang dihasilkan, dan mungkin saja tidak menanganinya
Banyak game hanya memakai library resmi
Kalau Jamulator keluar bersama peningkatan serupa untuk Zelda, mungkin popularitasnya akan jauh lebih besar
Minat tampaknya lebih banyak muncul dari apa yang kini bisa dilakukan dengannya, bukan dari metodenya sendiri
Narasi videonya hanya dibawakan oleh orang sungguhan bernama Nerrel
Menariknya, karena suara AI sekarang sudah sangat bagus, kita jadi cukup terkejut dalam arti yang menarik ketika mencurigai orang sebagai AI hanya karena mereka tidak berbicara dengan cara yang kita harapkan
Narasinya memang sangat datar, jadi sejak dulu terdengar seperti AI, dan saya suka kesan itu bercampur dengan humornya
Akan bagus kalau semua executable game bersifat independen dari sistem operasi, mirip WebAssembly
Misalnya sesuatu seperti GameAssembly
Sekarang di macOS baru kita tidak bisa memainkan game 32-bit, dan di Wine pun game Windows 32-bit tidak bisa jalan
Hampir mustahil juga menemukan file
.exe64-bit yang bisa dijalankan dengan benar di Wine/CrossoverUntuk konsol, terutama judul lama dan platform exclusive, banyak yang bergantung pada detail implementasi GPU tingkat sangat rendah
Konsol yang lebih lama juga punya chip khusus lain yang melakukan pekerjaan penting selain I/O sederhana
Misalnya, chip suara SNES adalah CPU yang sepenuhnya independen dan menjalankan program kecilnya sendiri secara paralel dengan CPU dan GPU
Tentu saja untuk semua pengembangan game ke depan kita bisa saja mewajibkan virtual machine tingkat tinggi, tetapi mengingat spesifikasi hardware konsol itu tetap, pendekatan itu tidak akan kompetitif untuk judul yang ingin memanfaatkan grafis modern
Di Debian, saya harus menjalankan ini
dpkg --add-architecture i386 && apt-get updateLalu tinggal memasang paket
wine32Game membutuhkan berbagai API seperti API grafis, API jendela, API input, API suara, API disk, dan sebagainya
Kadang juga perlu modul kernel karena anti-cheat atau proteksi salinan
Yang disayangkan adalah sistem operasi open source tidak berusaha menyediakan sekumpulan API umum agar developer cukup menulis dan menguji kode sekali, lalu berjalan di mana saja
Memang ada Flatpak, tetapi sejauh pemahaman saya itu bukan menyediakan sekumpulan API, melainkan lebih seperti membungkus distribusi Linux di dalam virtual machine tanpa spesifikasi atau dokumentasi
Tidak sedap dipandang, dan juga tidak kompatibel dengan sistem operasi kecil non-Linux
Saya menjalankan GTA IV di M1 mini
Sepertinya ada semacam emulasi "32 on 64" di dalam versi Wine 32-bit yang dipasang PlayOnMac, tetapi sulit sekali mencarinya sehingga saya tidak tahu bagaimana cara kerjanya sebenarnya
Menarik juga bahwa Mac lebih kompatibel dengan program Windows lama dibandingkan dengan program Mac lama
Saya ragu Minecraft akan mendukung Linux atau keluarga BSD dan sebagainya kalau tidak ada JVM
Bedrock Edition yang bukan versi JVM mendukung Windows, konsol, dan ponsel, tetapi tidak mendukung macOS padahal jelas itu mungkin dilakukan
Pada akhirnya semoga ini juga berjalan di Linux, sehingga game N64 bisa dimainkan dengan stabil di perangkat portabel yang sangat rendah spesifikasinya
N64 terkenal sulit diemulasikan, tetapi jika dibuat sebagai build native untuk platformnya, masalah performa akan hilang
Contohnya bisa dilihat di sini: https://github.com/Mr-Wiseguy/Zelda64Recomp?tab=readme-ov-fi...
Saya tidak terlalu tahu detail emulasi N64, tetapi sejak awal 2010-an saya sudah menjalankan emulator N64 dengan sempurna
Karena biasanya hanya memainkan judul-judul klasik besar, saya tidak terlalu tahu performa judul yang lebih niche
Saya bermain sekitar satu jam dan tidak ada masalah
Saya sudah mengujinya sendiri
Ini bisa cukup berguna untuk game seperti GoldenEye
Game itu sulit dimainkan di PC karena mengasumsikan input joystick yang aneh, jadi akan keren kalau ada port GoldenEye native dengan gerakan mouse normal seperti FPS lain
Cara beralih mode untuk membidik, serta waktu saat kursor bergerak lalu kembali ke tengah, adalah bagian yang menarik dari game tersebut
Jika pemain bisa berlari sambil membidik bebas seperti FPS PC, kampanyenya justru bisa rusak karena memang didesain dengan asumsi itu
Daya tariknya adalah memilih kapan berhenti untuk membidik dan tetap tenang saat sedang membidik
Namun akan menarik jika perpindahan mode tetap dipertahankan, sementara mouse 1) memutar Bond seperti stik kiri-kanan dan 2) hanya mengendalikan kursor saat tombol R ditekan untuk masuk ke "mode bidik"
Sejujurnya, saya menyayangkan semua shooter langsung menuju gaya Quake, WASD+mouse dengan bidikan bebas
Cara beralih mode itu memberi GoldenEye sensasi fisik yang saya sukai
https://github.com/Graslu/1964GEPD/releases/tag/latest
Juga berfungsi di Perfect Dark
Ini cukup menarik, dan saya penasaran apakah ini bisa berujung pada versi Conker yang berjalan dengan benar di MiSTer
Misalnya, bisakah ini dipakai untuk membantu dekompilasi, lalu seseorang membuat versi modifikasinya?
Saya penasaran apa kelebihannya dibanding emulator
Bukankah pada akhirnya ini semacam emulator yang sudah diterjemahkan lebih dulu?
Pendekatan seperti ini dulu juga pernah ada lewat sesuatu seperti Bleem, dan mungkin punya keuntungan performa, tetapi di PC modern emulator yang bagus umumnya berjalan baik
https://en.wikipedia.org/wiki/Bleem!
Tujuan emulator N64 biasanya adalah mereproduksi perilaku konsol asli secara akurat
Sebaliknya, ada banyak orang yang ingin memainkan SM64, OOT, dan MM pada 60fps, widescreen, dengan texture pack, randomizer, dan berbagai peningkatan grafis lain
Bagi orang-orang seperti ini, fakta bahwa game-game tersebut dulu berjalan di N64 pada dasarnya tidak penting
Justru lebih mendekati hambatan
Pipeline grafis N64 merepotkan untuk diemulasikan dan secara aktif menghalangi peningkatan modern
Proyek ini tampaknya lebih berfokus pada memperlakukan gamenya sendiri secara modern dan sepenuhnya mengeluarkan elemen yang berpusat pada N64 dari persamaan
Saat ini komputer sudah jauh lebih cepat daripada N64, jadi perbedaannya mungkin tidak terlihat
Apakah emulator umum melakukan kompilasi di muka, atau menggunakan JIT?
Jika tidak, saya penasaran mengapa tidak
Pendekatan ini, yaitu kompilasi di awal, tampaknya punya keuntungan besar
Namun kecuali TeknoParrot bekerja dengan cara seperti itu, saya tidak terlalu tahu soal penerjemahan di muka
Misalnya, dengan TeknoParrot kita bisa menjalankan game arcade Linux yang memakai binary ELF di Windows, tetapi karena arsitekturnya sama, saya tidak akan menyebut salah satunya sebagai emulasi
Eksekusi interpretatif adalah cara menulis virtual machine yang merepresentasikan status berbagai bagian mesin, lalu menjalankan instruksi yang mengubah status itu dengan tingkat akurasi yang berbeda-beda
Kemampuan para penggemar memang luar biasa! Melampaui sekadar memasang kompiler JIT pada emulator, kini bahkan bisa mengonversinya ke C dengan binary lifting lalu mengompilasikannya ulang.