· kaynak Hacker News – Front Page (native)
Resident Evil 4 GameCube debug sürümü bayt bayt özdeş C/C++ koduna tamamen dönüştürüldü
Bir tersine mühendislik projesi, Resident Evil 4'ün GameCube debug sürümünü tamamen C ve C++ ile yeniden inşa etti; ana yürütülebilir dosya ve 114 overlay'in tamamında her object dosyası orijinal baytlara birebir derleniyor.
Bayt bayt doğrulanmış eksiksiz bir yeniden inşa
Bir tersine mühendislik projesi, Nintendo GameCube için Resident Evil 4'ün tam bir C ve C++ yeniden yapımını yayımladı — özellikle iki diskte yayılan, "Nov 25 2004" tarihli G4BE08 debug sürümü. 20 Eylül 2026'da Hacker News ana sayfasına çıkan projenin GitHub deposuna göre, kaynağın yeniden derlenmesi oyunun ana yürütülebilir dosyasını (main.dol) ve 114 REL overlay modülünün tamamını tam olarak yeniden üretiyor. Eşleşmeyi doğrulamak için her derlemede SHA-1 sağlama toplamları otomatik olarak kontrol ediliyor.
Ölçek büyük: 15.641 fonksiyonu kapsayan 1.083 object dosyası (ana yürütülebilir dosyada 675, REL'lerde 408), yaklaşık 555.000 satır C/C++ artı 33.000 satır başlık dosyası olarak yazıldı. Depoya göre ağaçta hiçbir assembly kaynak dosyası bulunmuyor.
Üç orijinal araç zinciri
Baytları tam olarak eşleştirmek genellikle orijinal geliştiricilerin kullandığı derleyicileri gerektirir ve proje bunlardan üçünü yeniden yapılandırdı. Oyun kodu, SN Systems ProDG 3.9.3 — fiilen GCC 2.95.3 — ile derlenmişti; ekip bunu SN Systems'ın GPL kaynak sürümünden yerel olarak derledi. CRI middleware kütüphaneleri (ses ve video) Metrowerks CodeWarrior 2.4.7 kullanıyor; bu derleyicinin CRI'nın kütüphanelerini birlikte gönderdiği derleyici olduğu bildiriliyor. Nintendo SDK bölümleri, dolsdk2004'ten gelen SDK kaynaklarıyla CodeWarrior GC/1.2.5n kullanıyor.
Kusurlu eşleşmeler hakkında açık sözlü bir hesap verme
Belgeler, doğal kaynak kodun orijinal makine kodunu yeniden üretemediği yerler hakkında alışılmadık derecede açık sözlü. Yaklaşık 644 nokta; ölü testler, boş asm() ifadeleri, register sabitlemeleri ve padding gibi yapıları işaretleyen COMPILER-DIFF yorumları taşıyor. Kritik nokta şu: proje, her birimi derleyip bu işaretleyicilerin hiçbirinin gerçek bir talimat üretmediğini doğrulayan bir araç içeriyor. Ağacın önceki bir sürümünde kabaca 100 elle yerleştirilmiş talimat ve yaklaşık 100 register sabitleyen asm bloğu vardı; bunlar Eylül 2026'da düz C olarak yeniden yazıldı ve depo her noktada kullanılan teknikleri belgeliyor.
Assembly yalnızca orijinal yazarların kendi derleyicileri kodu başka türlü ifade edemediği için kendilerinin assembly yazdığı yerlerde varlığını sürdürüyor: oyun kodunda paired-single matematik ve matris çekirdekleri, CRI kütüphanelerinde cache ve DSP ile ilgili çekirdekler ile SDK intrinsic'leri. Sekiz tam birim (crt0, eabi, dört SN Systems kütüphane dosyası ve iki Capcom birimi), fonksiyonları tek üst düzey asm() gövdeleri olan C dosyaları olarak mevcut; çünkü orijinallerde hiçbir derleyici parmak izi görünmüyordu.
Orijinal isimler debug yapıtlarından kurtarıldı
Bu bir debug sürümü olduğu için Bio4.sym dosyaları Capcom'un kendi fonksiyon isimlerini içeriyor — C++ mangled olan isimler; oyun kodunun C++ olması da bu yüzden. Dosya isimleri ve birim sınırları, geliştiricilerin orijinal kaynak yollarına atıfta bulunan, binary'lerde kalan assert dizelerinden kurtarıldı. Struct ve alan isimleri üç kaynaktan geliyor: bir PS2 debug sürümünden çıkarılan ve amaçlı geliştirilmiş bir araçla GameCube düzenleriyle eşleştirilen satıcıya ait tip bilgisi, projenin kullanımdan türettiği isimler ve amacı hâlâ bilinmeyen alanlar için yer tutucular.
Hukuki duruş ve araçlar
Depoda hiçbir oyun varlığı ya da disklerden kopyalanmış bir şey yok. Derlemek isteyenler her iki debug diskinin kendi kalıntılarını sağlamak zorunda ve orijinal dosyalar configure aşamasında bunlardan okunuyor. Yeniden yapılandırılmış kaynak, Capcom, Nintendo ve CRI Middleware'in fikri mülkiyeti olarak kalıyor ve yalnızca araştırma ve koruma amacıyla yayımlanıyor; projenin kendi derleme betikleri, araçları ve belgeleri CC0 ile lisanslandı.
Derleme, Python 3 ve Ninja ile Linux üzerinde çalışıyor ve derleyicileri ile karşılaştırma araçlarını ilk configure çalışmasında indiriyor — yerel SN GCC hariç; o, GPL kaynak paketini gerektiriyor. Decompilation'ın ötesinde proje, hareket verisini oyunun kendi koduyla değerlendiren ve Dolphin'de çalışan oyunla doğrulanan glTF ve BVH'ye bir animasyon dışa aktarıcı, ayrıca motorun nasıl organize edildiğini açıklayan bir genel bakış belgesi sunuyor.
Neden önemli
Bayt özdeş decompilation, oyun tersine mühendisliğinde en yüksek çıtadır. Ne bir port ne de yeniden uygulama: sevk edilen binary'lere derlendiği kanıtlanabilen, okunabilir bir kaynak koddur. Resident Evil 4 kadar karmaşık bir ticari başlık için — binlerce fonksiyon, birden fazla derleyici, üç satıcıdan middleware — bunu başarmak, kapalı bir yapıcıyı; oyunun tek bir baytını dağıtmadan incelenebilen, denetlenebilen, öğretilebilen ve genişletilebilen bir şeye dönüştürüyor. Her derleyici mekanizmasının nasıl yeniden üretildiğini belgeleyen projenin ayrıntılı araştırma günlüğü, onu gelecekteki decompilation çabaları için pratik bir referans da yapıyor. Bu alandaki önceki dönüm noktası projeleri izleyerek, ticari oyunların kaynağa uygun biçimde korunmasının ölçekte başarılabileceği iddiasını güçlendiriyor.
- #reverse-engineering
- #decompilation
- #gamecube
- #game-preservation
- #c-plus-plus