1 puan yazan GN⁺ 2025-10-20 | 1 yorum | WhatsApp'ta paylaş
  • Duke Nukem: Zero Hour için Nintendo 64 ROM'unu tamamen dekompile eden bir açık kaynak proje tanıtımıdır
  • Bu depo, orijinal oyun yazılımının tüm kaynak kodunu canlandırma işini %100 tamamladı
  • Kullanıcılar ROM'u kendilerinin temin etmesi gerekir; orijinal ABD veya Fransa sürümü ROM'lar ile tam derleme ve test yapılabilir
  • Mevcut dekompile projeleriyle karşılaştırıldığında, tam işlevsel uyumluluk ve hata ayıklama araç desteği ile teknik bir avantaj sağlıyor
  • Bu proje, oyun motoru araştırması, modlama, portlama ve motor analizi için çok değerli bir kaynaktır

Projenin Önemi ve Rekabet Avantajı

  • Duke Nukem: Zero Hour, yalnızca Nintendo 64 platformu için yayımlanmış ünlü bir aksiyon oyunudur
  • Bu açık kaynak proje, oyunun tamamını C, Python vb. dillerle tamamen dekompile ederek kaynak kodu seviyesinde yeniden yapılandırmıştır
  • Diğer N64 dekompile projelerinin aksine tam uyumluluk sağlayarak, normal ROM derleme ve çalıştırma, kaynak kodu tabanlı hata ayıklama ve çoklu sürüm desteği sunar
  • Oyun motoru yapısını ve 90'ların konsol oyunu geliştirme bilgisini araştırmak için güçlü bir kaynak değerine sahiptir
  • Birçok otomatik analiz/dekompile aracı (asm-differ, mips2c, splat, decomp-permuter vb.) projeye entegre edilerek geliştirici verimliliği artırılmıştır

Ana Özellikler ve Yapı

Genel Yapı

  • Proje çok dilli olarak kurgulanmıştır; C (%95’in üzerinde), Python, Roff, C++, Makefile ve Shell ile parçalanmıştır
  • Başlıca dizinler:
    • .github/workflows: CI ve otomasyon ayarları
    • include, libs, src: oyun kaynakları ve kütüphaneler, başlık yönetimi
    • tools: analiz, çıkarma ve dönüştürme araçları
    • versions: ABD/Fransa gibi birden fazla oyun sürümünü aynı anda destekleme yapısı
  • Yaklaşık 370 commit ile oldukça aktif biçimde bakımı yapılan bir projedir

Derleme ve Kullanım Özetleri

  • Ubuntu 20.04 tabanlı ortam ve Docker desteği
  • ROM çıkarımı, bit düzeyinde karşılaştırma, NON_MATCHING (eşleşmeyen) mod desteği
  • Fransızca sürüm ve ABD sürümü ROM'ları her ikisini de destekler; kullanıcı gereğine göre seçenekler belirtilebilir
  • Docker ortamı ve Mutagen Extension ile farklı işletim sistemleri (WIN/Mac/Linux) arasında uyumluluk sağlanır

Hata Ayıklama ve Geliştirme Araçları

  • gdb ve mupen64plus tabanlı, kaynak kodu seviyesinde hata ayıklama desteği (şu anda Windows öncelikli)
  • Visual Studio Code ve Native Debug Extension ile entegrasyon
  • Temel otomasyon ve analiz araçları:
    • asm-differ: assembly düzeyinde kaynak/hedef karşılaştırması
    • decomp-permuter: kod yeniden düzenleme ve otomatik puanlama
    • mips2c: MIPS assembly'den C'ye kod dönüştürme
    • splat: ROM yapısını analiz eden araç

Kullanım Alanları

  • Oyun tersine mühendisliği, portlama, oyun motoru analizi ve klasik oyun iyileştirme projelerinde kaynak olarak kullanılabilir
  • Tarihsel koruma ve eğitimsel araştırma amaçları için de son derece uygundur
  • Çeşitli platformlar ve sürümler için bakım ve güncellemeler aktif olarak sürmektedir

Sonuç

  • Bu açık kaynak proje, 90'lar klasik konsol oyun yazılımının tamamen kaynak düzeyinde açığa çıkarılmasının nadir bir örneğidir
  • Oyun ve konsol tersine mühendisliği araştırmacıları, genç geliştiriciler, oyun portlama ve fan oyun üreticileri için değerli bir kaynaktır

1 yorum

 
GN⁺ 2025-10-20
Hacker News görüşleri
  • %100 C’ye decompile edilmiş olması ilginç, ancak işlev ve değişken adlarının önemli bir kısmı otomatik üretilmiş göründüğü için etiketleme hâlâ tam değil. Biri şimdi port etmeyi denese eğlenceli olurdu
    • LLM’lerin etiketleme konusunda ne kadar etkili olacağını merak ediyorum. Yanlış etiketleme yüzünden zaman kaybedilmesinden endişe ederim
    • Artık Ghidra gibi araçlar ücretsiz olduğundan, “%100 C’ye decompile edildi” ifadesi bana o kadar da büyük bir olay gibi gelmiyor
    • Build engine’in kaynak kodu ticari olmayan kullanım için açık olduğuna göre, işlev ve değişken adlarını eşleştirmede yardımcı olup olmayacağını merak ediyorum
  • Gillou68310 sanki işin %99’unu tek başına yapmış gibi görünüyor; bu gerçekten inanılmaz bir adanmışlık. The Legend of Zelda: Twilight Princess de iyi ilerliyor https://decomp.dev/zeldaret/tp
  • Zero Hour, N64 döneminin olmazsa olmaz oyunlarından biriydi ve Duke Nukem serisinin geç dönemindeki ender iyi oyunlardan biriydi. Zorlayıcı platform öğeleri ve epey sinir bozucu bölümler var, ama tutarlı biçimde güçlü ortamlar sunması ve Duke 3D’nin cazibesini yeniden yakalama çabası etkileyiciydi. Yakın tarihli Perfect Dark portu harikaydı; bu decompilation çalışmasının da benzer kalitede ele alınmasını umuyorum
  • Neden özellikle Duke Nukem: Zero Hour’ın seçildiğini merak ediyorum
    • Zero Hour biraz unutulmuş bir cevher. PlayStation’daki Duke Nukem oyunları Tomb Raider taklidi ve pek beğenilmiyor, ama Zero Hour orijinal Duke Nukem 3D gibi Build engine tabanlı. O seviyede olmasa da, 3D Realms dışındaki Duke Nukem oyunları arasında en iyisi denebilir. Eksileri, kamerayı üçüncü şahsa çevirmiş olması (tamamlanmamış birinci şahıs modu hileyle açılabiliyor) ve kontrollerinin pek iyi olmaması. Ama artık kaynak kodu olduğuna göre bunlar da düzeltilebilir
    • Güzel soru. Yalnız keşke ekran görüntüleri de olsaydı; arkadaşlarımla paylaşmak isterdim. Eskiden arkadaşlarla oynadığımızda tam bir kaos cennetiydi
  • İnsanların (veya grupların) neden böyle decompilation projelerine bu kadar zaman ve emek verdiğini merak ediyorum. Sevdikleri oyunları seven hobi oyuncularının bir araya geldiği topluluklar mı var, yoksa daha çok dijital koruma amacı mı söz konusu, bilmek isterim
    • Cosmo's Cosmic Adventure’ı (DOS, 1992) yeniden uygulayan kişiyim. Sebebim basitti: Bu oyunun zayıf donanımda (IBM AT) bu kadar güzel grafik numaralarını nasıl yaptığını merak ettim. Oyun objektif olarak olağanüstü olduğundan değil, çocukluğumda benim için önemli olduğundan duygusal bir bağım vardı. Bu deneyim sayesinde PC platformunu, 80’lerin C ekosistemini ve kendi zevklerimi daha iyi tanıdım https://github.com/smitelli/cosmore https://cosmodoc.org/
    • Eski synthesizer firmware’lerini reverse engineering yapmak için çok zaman harcadım (modern oyunlardan daha basitler). Örneğin Yamaha DX7 ve DX9 synth ROM’larını yorumladım ve bu süreç mühendislik becerilerimi ciddi biçimde geliştirdi. Eğlenceliydi, ayrıca inanılmaz zeki insanlarla tanışma fırsatı verdi. Teknik bir yapboz gibi. Bu süreçten çıkan eğlenceli firmware modları da oldu DX7 açıklamalı sürüm DX9 açıklamalı sürüm DX97 ve reverse engineering süreci üzerine bir eğitim de yazdım eğitim. Biraz arkeoloji gibi; önceki mühendislerin nasıl düşündüğünü görüyorsunuz. N64’ün de kendi döneminde geliştirmesi zor bir platform olduğunu hatırlıyorum
    • Bazen sebep sadece oyuna duyulan sevgidir. Ben de çocukken Mega Man Battle Network 2’yi gerçekten çok seviyordum; o oyun sayesinde İngilizce öğrendim ve programcı oldum. Hâlâ iki fiziksel kartuş kopyam var. Ara sıra IDA ile inceleyip oyunu biraz daha anlamaya çalışıyorum ama gerçek ROM hacking toplulukları kadar becerim ya da vaktim yok
    • Bana göre bunlar sadece kendileri yapmak isteyen ya da ekstra meydan okuma arayan insanlar
    • Bu yıl Game On Expo’da Castlevania: Symphony of the Night decompilation’ı hakkında bir sunum yapmıştım https://github.com/xeeynamo/sotn-decomp. Bu işlere katılanların çoğunda ana motivasyon oyunu çok sevmeleri oluyor. Sonrasında port etme, modlama, öğrenme, koruma isteği gibi başka nedenler geliyor. Benim için kişisel olarak meydan okuma kısmı da çok keyifli (matematik bulmacası çözmeye benziyor). Uzun süre böyle bir işte çalışmak için derleyici geçmişini ve teorisini, ayrıca oyunun yapıldığı dönemdeki iş ve mühendislik baskılarını anlamak gerekiyor. Böylece oyunun bazı kısımlarının neden o şekilde yapıldığını fark ediyorsunuz. Ayrıca SotN üzerinde çalışırken yayın da yapıyorum; sorunuz varsa sohbete beklerim https://m.twitch.tv/madeupofwires/home
  • Harika bir proje! Ama... platformun GitHub olması biraz endişe verici. Yakında kaldırma bildirimi gelir mi diye düşünüyorum
    • Depoya hızlıca baktım; telifli materyal görünmüyor. Yalnızca gerçek decompilation’ı yapan kod var
    • Nintendo oyunlarının decompilation projeleri de GitHub’da açık duruyor; bunun neden özellikle kaldırılması gereksin, anlamıyorum
  • “Bu, Duke Nukem Zero Hour N64 decompilation’ıdır. Not: Bu depoyu kullanmak için oyun kartuşuna sahip olmanız gerekir” uyarısının bulunduğunu vurguluyorum
  • LLM’lerin bu tür reverse engineering işleri için uygun olup olmadığını merak ediyorum
    • LLM ile etiketleme işinin önemli bir kısmı otomatikleştirilebilir. “Binary ile eşleşene kadar tekrar tekrar düzeltme” yaklaşımı da mümkün olabilir ama bunu düzenli biçimde yapan bir örnek görmedim. Bu arada decompai projesi benzer bir yaklaşım izliyor (bu projeyle tam aynı değil). Kendim denedim; elde zaten biraz bağlam varsa değişken adı tahmininde oldukça işe yarıyor. Sayaç ya da geçici değişken adlandırması gibi sıkıcı ve tekrar eden işlerde özellikle faydalı. Algoritma kalıplarına bakarak işlev adlarını da tahmin edebiliyor
    • EFF bu konuda resmî bir tavır aldı mı bilmiyorum ama telif açısından hukuki risk olduğunu düşünüyorum. Decompilation, ortaya yeni bir yaratıcı eser çıktığı için mümkün olabiliyor; LLM ise türetilmiş / yaratıcı olmayan çıktılar ürettiği iddiasına daha kolay açık olabilir. Yapay zeka şirketlerinin eğitim verisi lisanslarına devasa paralar ödemesi de durumu karmaşıklaştırıyor. Ben olsam bu telif riski yüzünden kullanmaktan kaçınırdım. Ama LLM destekli decompilation gerçekten çok kolaylaşırsa, yakında yeni içtihatlar görürüz
    • Bence oldukça işe yarıyor. Mükemmel değil ama ciddi zaman kazandırıyor. Özellikle kütüphane işlevlerini ya da bilinen algoritmaları tanımada, insanın erişemeyeceği kadar isabetli olabiliyor. Kod derleme ve decompilation süreçlerinde bozulmuş olsa bile tanıyabiliyor
    • Ajanlar kullanarak bir oyunu port etmeye çalışıyorum. Kaynak kodu elimde olsa bile çoğu zaman iyi gitmiyor. LLM birçok kütüphaneyi port etmeye yanaşmadığı için tekrar eden işi azaltmaya çalışırken, işin sonu çoğu kez yığınla stub ve varsayımla dolu, karmakarışık bir yapıya çıkıyor
    • Hiç kullanmadım ama değişken/işlev adı değiştirme gibi yerel iyileştirmelerde yardımcı olacağını düşünüyorum
  • “Depoyu kullanmak için oyun kartuşuna sahip olmanız gerekir” uyarısına özellikle dikkat çekiliyor
    • Çin yapımı retro el konsolu kullananların ROM’u kendilerinin çıkarması yasal oluyor. Ama 10 bin oyunluk ucuz bir paket alırsanız nedense bir anda hepsi yasal oluveriyor. Tabii pratikte gerçekten ceza alan neredeyse kimse olmadığı için bu tür uyarılar biraz sevimli geliyor
    • Aslında oyun kartuşu olmadan da gayet kullanılabiliyordu. Bu uyarının yanlış olduğunu düşünüyorum
    • Bu daha çok gerçek uygulanabilir şartlardan ziyade hukuki bir feragat metni
  • Hâlâ Duke Nukem Forever’ı dört gözle bekliyorum. Ne kadar zaman geçtiğini artık hatırlamıyorum bile