1 poin oleh GN⁺ 2025-10-20 | 1 komentar | Bagikan ke WhatsApp
  • Pengenalan proyek open source yang berhasil mendekompilasi ROM Nintendo 64 dari Duke Nukem: Zero Hour secara sempurna
  • Repositori ini telah mencapai 100% dalam upaya menghidupkan kembali seluruh kode sumber perangkat lunak game asli
  • Pengguna harus memiliki ROM game tersebut sendiri, dan build serta pengujian penuh dapat dilakukan menggunakan ROM asli versi AS atau Prancis
  • Dibandingkan proyek dekompilasi yang sudah ada, proyek ini unggul secara teknis berkat kompatibilitas fungsional sempurna dan dukungan alat debugging
  • Proyek ini merupakan sumber yang sangat berharga untuk riset engine game, modifikasi, porting, dan analisis engine

Makna dan keunggulan proyek

  • Duke Nukem: Zero Hour adalah game aksi terkenal yang dirilis secara eksklusif untuk platform Nintendo 64
  • Proyek open source ini merekonstruksi seluruh ROM game tersebut di level kode sumber dengan mendekompilasinya secara lengkap ke C, Python, dan lainnya
  • Berbeda dari proyek dekompilasi N64 lain, proyek ini menyediakan kompatibilitas sempurna, termasuk build dan eksekusi ROM yang normal, debugging berbasis kode sumber, serta dukungan multi-versi
  • Proyek ini memiliki nilai referensi yang sangat tinggi untuk meneliti struktur engine game dan pengetahuan pengembangan game konsol era 90-an
  • Berbagai alat analisis/dekompilasi otomatis seperti asm-differ, mips2c, splat, dan decomp-permuter terintegrasi dalam proyek untuk memaksimalkan efisiensi pengembang

Fitur utama dan struktur

Struktur keseluruhan

  • Proyek ini tersusun dalam banyak bahasa dan dibagi ke dalam beberapa bagian seperti C (lebih dari 95%), Python, Roff, C++, Makefile, dan Shell
  • Direktori utama:
    • .github/workflows: pengaturan CI dan otomatisasi
    • include, libs, src: pengelolaan source game, library, dan header
    • tools: alat analisis, ekstraksi, dan konversi
    • versions: struktur dukungan simultan untuk berbagai versi game seperti US/FR
  • Dipelihara secara aktif dengan hampir 370 commit

Ringkasan build dan cara penggunaan

  • Mendukung lingkungan berbasis Ubuntu 20.04 dan Docker
  • Mendukung ekstraksi ROM, perbandingan bit-level, dan mode ketidakcocokan (NON_MATCHING)
  • Mendukung ROM versi Prancis dan versi AS, dengan opsi yang dapat dipilih sesuai kebutuhan pengguna
  • Menyediakan kompatibilitas lintas OS (Windows/Mac/Linux) dengan memanfaatkan lingkungan Docker dan Mutagen Extension

Debugging dan alat pengembangan

  • Mendukung debugging level kode sumber berbasis gdb dan mupen64plus (saat ini berfokus pada Windows)
  • Mendukung integrasi dengan Visual Studio Code dan Native Debug Extension
  • Alat otomatisasi dan analisis inti:
    • asm-differ: perbandingan source/target di level assembly
    • decomp-permuter: penataan ulang kode dan penilaian otomatis
    • mips2c: konversi kode dari assembly MIPS ke C
    • splat: alat analisis struktur ROM

Cara pemanfaatan

  • Dapat dimanfaatkan sebagai sumber untuk reverse engineering game, porting, analisis engine, dan proyek peningkatan game klasik
  • Juga sangat cocok untuk tujuan pelestarian sejarah dan riset pendidikan
  • Pemeliharaan dan pembaruan aktif terus berlangsung untuk berbagai platform dan versi

Kesimpulan

  • Proyek open source ini adalah contoh langka yang berhasil mewujudkan pembukaan penuh kode sumber perangkat lunak game konsol klasik era 90-an
  • Ini merupakan sumber daya berharga bagi peneliti reverse engineering game dan konsol, pengembang muda, serta pembuat port game dan fan game

1 komentar

 
GN⁺ 2025-10-20
Opini Hacker News
  • Menarik bahwa ini sudah didekompilasi 100% ke C, tetapi pelabelannya masih belum sepenuhnya lengkap karena banyak nama fungsi dan variabel yang dibuat otomatis. Akan seru kalau ada yang mencoba mem-porting-nya sekarang
    • Aku penasaran seberapa efektif LLM untuk pelabelan. Jangan-jangan malah membuang waktu karena pelabelan yang salah
    • Sekarang alat seperti Ghidra tersedia gratis, jadi rasanya “didekompilasi 100% ke C” bukan hal yang terlalu luar biasa
    • Kode sumber Build engine sudah dibuka untuk penggunaan nonkomersial, jadi penasaran apakah itu bisa membantu memetakan nama fungsi dan variabel
  • Sepertinya Gillou68310 mengerjakan 99% sendirian, jadi menurutku ini dedikasi yang benar-benar luar biasa. The Legend of Zelda: Twilight Princess juga berjalan dengan baik https://decomp.dev/zeldaret/tp
    • Sekalian mau memberi semangat untuk proyek dekompilasi Castlevania: Symphony of the Night juga. Progresnya cukup bagus (meski masih banyak yang harus dikerjakan) https://github.com/Xeeynamo/sotn-decomp
  • Zero Hour adalah salah satu judul wajib era N64, dan salah satu game bagus yang langka di fase akhir seri Duke Nukem. Ada elemen platforming yang menantang dan beberapa stage yang cukup menyebalkan, tetapi upayanya untuk secara konsisten menghadirkan lingkungan yang solid dan nuansa Duke 3D sangat mengesankan. Port Perfect Dark terbaru sangat bagus, jadi aku berharap dekompilasi ini ditangani dengan kualitas serupa
  • Aku penasaran kenapa yang dipilih justru Duke Nukem: Zero Hour
    • Zero Hour itu semacam permata tersembunyi yang agak terlupakan. Game Duke Nukem di Playstation itu tiruan Tomb Raider dan penilaiannya juga buruk, tetapi Zero Hour berbasis Build engine seperti Duke Nukem 3D yang orisinal. Memang tidak sampai level itu, tetapi masih bisa dibilang yang terbaik di antara seri Duke Nukem yang bukan buatan 3D Realms. Kekurangannya, sudut pandangnya diubah jadi third-person (ada mode first-person yang belum selesai lewat cheat) dan kontrolnya kurang enak. Tapi karena sekarang kode sumbernya ada, masalah seperti ini pun bisa diperbaiki
    • Pertanyaan bagus. Cuma sayang tidak ada screenshot, padahal aku ingin membagikannya ke teman-teman. Dulu waktu main bareng teman-teman, ini benar-benar surga kekacauan
  • Aku penasaran kenapa orang (atau kelompok) mau menghabiskan waktu dan tenaga untuk proyek dekompilasi seperti ini. Apakah ini komunitas gamer hobi yang mencintai judul game favorit mereka, atau lebih karena tujuan pelestarian digital
    • Aku orang yang dulu membuat implementasi ulang Cosmo's Cosmic Adventure (DOS, 1992). Alasannya sederhana: aku penasaran bagaimana game ini bisa menghadirkan trik grafis yang keren di perangkat keras lemah (IBM AT). Bukan karena game ini luar biasa secara objektif, melainkan karena ini kenangan penting masa kecilku sehingga aku punya keterikatan dengannya. Dari pengalaman ini aku jadi memahami platform PC, ekosistem C era 80-an, dan seleraku sendiri https://github.com/smitelli/cosmore https://cosmodoc.org/
    • Aku menghabiskan banyak waktu untuk merekayasa balik firmware synthesizer vintage (lebih sederhana daripada game modern). Misalnya, aku pernah memberi anotasi pada ROM synth Yamaha DX7 dan DX9, dan proses ini sangat memperluas kemampuan engineering-ku. Ini menyenangkan, dan aku juga jadi punya kesempatan bertemu orang-orang yang sangat pintar. Rasanya seperti permainan menyusun puzzle teknis. Ada juga mod firmware menarik yang lahir dari proses ini anotasi DX7 anotasi DX9 DX97 dan aku juga menulis tutorial tentang proses reverse engineering tutorial. Rasanya seperti arkeologi karena kita bisa mengintip cara berpikir engineer terdahulu. N64 juga kuingat cukup sulit untuk dikembangkan pada masanya
    • Bisa jadi murni karena kecintaan pada gamenya. Aku juga sangat menyayangi game masa kecilku, Mega Man Battle Network 2, dan game itu membuatku belajar bahasa Inggris sekaligus menjadi programmer. Aku bahkan masih menyimpan dua cartridge fisiknya. Kadang aku menganalisisnya dengan IDA dan mencoba sedikit demi sedikit memahaminya, walau kemampuan dan waktuku belum selevel komunitas ROM hacking yang sesungguhnya
    • Menurutku mereka memang orang-orang yang ingin mencoba sendiri atau punya semangat tantangan yang tidak biasa
    • Tahun ini aku sempat presentasi tentang dekompilasi Castlevania: Symphony of the Night di Game On Expo https://github.com/xeeynamo/sotn-decomp. Sebagian besar orang yang terlibat dalam pekerjaan seperti ini termotivasi karena sangat mencintai gamenya. Setelah itu alasannya bisa bermacam-macam, seperti porting, modding, belajar, atau dorongan pelestarian. Secara pribadi, ada juga kesenangan dari tantangannya sendiri (mirip menyelesaikan puzzle matematika). Kalau ingin mengerjakannya lama, kita perlu memahami sejarah dan teori compiler, juga tekanan bisnis dan rekayasa saat game itu dibuat. Dalam prosesnya, kita jadi paham kenapa sebagian bagian game dibuat seperti itu. Aku juga menyiarkan pekerjaan SotN, dan kalau ada pertanyaan, silakan mampir ke chat https://m.twitch.tv/madeupofwires/home
  • Proyek yang keren! Tapi… karena platformnya GitHub, aku agak khawatir. Jangan-jangan sebentar lagi kena takedown notice
    • Aku sempat melihat cepat repositorinya, dan sepertinya tidak ada materi berhak cipta di sana. Yang diunggah hanya kode untuk melakukan dekompilasi itu sendiri
    • Dekompilasi game Nintendo juga dipublikasikan di GitHub, jadi aku tidak paham kenapa yang ini harus dihapus
  • Menekankan bahwa ada pemberitahuan berbunyi, “Ini adalah dekompilasi Duke Nukem Zero Hour N64. Catatan: Anda harus memiliki cartridge game untuk menggunakan repositori ini”
  • Aku penasaran apakah LLM cocok untuk reverse engineering seperti ini
    • Dengan LLM, banyak pelabelan bisa diotomatisasi. Mungkin juga bisa melakukan “ulangi perbaikan sampai cocok dengan binary”, meski aku belum pernah melihat contoh yang benar-benar rapi. Sebagai referensi, proyek decompai memakai pendekatan yang mirip (meski agak berbeda dari proyek ini). Aku pernah mencobanya sendiri, dan kalau sudah ada sedikit informasi awal, itu cukup berguna untuk menebak nama variabel. Terutama efektif untuk pekerjaan membosankan dan berulang seperti penamaan counter atau variabel sementara. Nama fungsi juga kadang bisa ditebak dari pola algoritmenya
    • Aku tidak tahu apakah EFF pernah mengeluarkan posisi resmi soal penggunaan LLM untuk ini, tetapi menurutku ada risiko hukum dari sisi hak cipta. Dekompilasi dimungkinkan karena menghasilkan karya baru, sedangkan LLM bisa dengan mudah dianggap menghasilkan keluaran yang turunan/tidak kreatif. Fakta bahwa perusahaan AI membayar mahal untuk lisensi data pelatihan juga membuat situasinya makin rumit. Aku pribadi mungkin akan menghindarinya karena risiko hak cipta ini. Tapi kalau dekompilasi dengan bantuan LLM benar-benar jadi mudah, mungkin segera akan muncul preseden hukum baru
    • Menurutku cukup berguna. Tidak sempurna, tetapi sangat menghemat waktu. Terutama untuk mengidentifikasi fungsi library atau algoritma terkenal, akurasinya sampai level yang sulit ditandingi manusia. Bahkan dari kode yang sudah rusak akibat proses kompilasi dan dekompilasi pun masih bisa dikenali
    • Aku sedang mem-porting game dengan memanfaatkan agent. Meski ada source code-nya, sering kali tetap tidak berjalan mulus. Karena LLM sering tidak mau mem-porting banyak library, upaya untuk mengurangi pekerjaan berulang justru sering berubah jadi tumpukan stub dan asumsi yang malah mengacaukan keseluruhan pekerjaan
    • Aku sendiri belum pernah memakainya, tetapi menurutku itu akan membantu untuk perbaikan yang sifatnya lokal seperti mengganti nama variabel/fungsi
  • Sengaja menyebut lagi peringatan “harus memiliki cartridge game untuk menggunakan repositori”
    • Orang yang memakai konsol game genggam retro buatan Tiongkok secara hukum memang harus mengekstrak ROM sendiri. Tapi kalau membeli paket murah berisi 10.000 game, entah kenapa semuanya tiba-tiba jadi legal. Tentu saja hampir tidak ada yang benar-benar dihukum, jadi pemberitahuan seperti ini terasa lucu
    • Pada praktiknya, aku bisa memakainya dengan baik tanpa punya cartridge game. Jadi menurutku pemberitahuannya salah
    • Ini murni peringatan legal, bukan syarat yang benar-benar berlaku dalam praktik
  • Aku masih menunggu Duke Nukem Forever sampai leherku panjang. Aku bahkan sudah samar-samar lupa ini sudah berapa lama