1 puan yazan GN⁺ 4 시간 전 | 1 yorum | WhatsApp'ta paylaş
  • 1989 yapımı F-15 Strike Eagle II oyununun özgün ikili dosyaları tersine mühendislikle incelenerek C kaynak kodunun yeniden oluşturulduğu proje, gerçek oynanış testi aşamasına geçti
  • egame, end dahil tüm çalıştırılabilir dosyaların kodu ve verileri C'ye taşındı; yalnızca assembly'e özgü kodların çoğu için C karşılıkları hazırlandı
  • En son sürüm v0.9.1, özgün oyunun 451.03 sürümünde ve Desert Storm genişleme paketinde özgün çalıştırılabilir dosyaların yerine geçerek test edilebiliyor
  • Yeni çalıştırılabilir dosyalar yapılandırma ekranını atlayıp MCGA/VGA, sessiz, joystick'siz bir durumu varsayıyor; ancak görev brifingi, uçuş ve debriefing çalışmalı
  • Hedef, özgün sürümdeki hataları bile koruyan bug-for-bug yeniden oluşturma olduğu için, özgün oyunda da bulunan davranışlar şu an hata raporu kapsamına girmiyor

C yeniden oluşturma projesinde son durum

  • F-15 Strike Eagle II yeniden oluşturması, özgün ikili dosyaları tersine mühendislikle inceleyip 1989 yapımı oyunun C kaynak kodunu yeniden üretmeye yönelik bir hobi projesi
  • Bir aydan biraz daha uzun süre önce ikinci çalıştırılabilir dosya egamei C'ye taşımak için daha birkaç yıl gerekecek gibi görünüyordu ve üçüncü çalıştırılabilir dosya end de hâlâ duruyordu
  • Şu anda şu aşamaya gelindi
    • Tüm çalıştırılabilir dosyalar için C kodu yeniden oluşturma tamamlandı
    • Tüm veriler assembly'den C'ye taşındı
    • Yalnızca assembly'e özgü kodların çoğu için işlevsel olarak eşdeğer C karşılıkları yazıldı
    • Rutinlerin ve veri yapılarının çoğuna anlamlı adlar verildi
    • Yakın zamanda portlama projesi için depo dallandırması değerlendirilecek
  • Yeniden oluşturulan opcode'ların özgün sürüme sadık olup olmadığı araçlarla doğrulanıyor, ancak veri yerleşimi ile ilgili hataların tamamı bu şekilde yakalanamıyor
  • Artık opcode eşleşmesini doğrulamanın ötesine geçilip gerçekten çalışan bir oyunun korunması gerektiğinden dış test ihtiyacı doğdu

Test yöntemi ve bildirilecek sorunlar

  • Test edilecek sürüm en güncel yayın olan v0.9.1
  • Yeni çalıştırılabilir dosyaları, özgün oyunun 451.03 sürümü ve Desert Storm genişleme paketi bulunan oyun klasörüne koyup özgün çalıştırılabilir dosyaların yerine geçirmek yeterli
    • Değiştirmeden önce yedek almak gerekiyor
    • Yeni f15.exe yerine özgün f15.com çalışmasın diye özgün f15.com dosyasını silmek gerekebilir
  • Yeni çalıştırılabilir dosyalar yapılandırma ekranına girmez
    • MCGA/VGA ekran varsayılır
    • Ses yok
    • Joystick yok
  • Test sırasında sorun yaşanırsa GitHub Issues üzerinden bildirim yapılabilir
    • Çökme
    • Grafik bozulmaları
    • Tuş girişinin çalışmaması
    • Gerekirse dosbox'ta Ctrl+F5 ile alınmış ekran görüntüsü ekleme
    • Sorun çıkmadan önce hangi eylemlerin yapıldığını yazmak yeniden üretim ve düzeltme açısından yardımcı olur
  • Bu proje bug-for-bug yeniden oluşturmayı hedeflediği için özgün oyunda da bulunan davranışlar korunmalı
    • Özgün oyunda 3D nesnelerin kaybolması, ters dönmüş durumdayken yakıt bittiğinde uçağın gökyüzüne doğru düşmesi gibi sorunlar var
    • Bildirmeden önce aynı sorunun özgün oyunda da ortaya çıkıp çıkmadığını kontrol etmek iyi olur

1 yorum

 
GN⁺ 4 시간 전
Hacker News yorumları
  • Oynanabilir bir DOS sürümü var
    İlk aşama her şeyi assembly olarak tersine mühendislikle çözmekti; ikinci aşama ise assembly’yi derlenmiş C koduyla ikili düzeyde aynı olacak şekilde değiştirmekti. Bu çalışma, assembly kodu kalmayana kadar DOS üzerinde sürecek, ardından Linux ve Windows portlarına başlanacak
    Tersine mühendislik yeni hataları davet etmeye çok yatkın ve bu kadar eski tersine mühendislik kodunda tüm hataları bulmak kolay değil, ama şu ana kadar her şey çalışıyor gibi görünüyor
    Elinizde F-15 451.03 sürümü ve Dosbox ya da gerçek DOS varsa, açık hataları bulmaya çalışın
    En güncel DOS sürümü buradan alınabilir: https://github.com/neuviemeporte/f15se2-re/releases
    f15_se2-*.zip dosyaları DOS oyunu için alternatif çalıştırılabilir dosyayı içeriyor
    Air Force needs YOU!

    • Ben bir USAF gazisiyim. F-15 Strike Eagle II oynayarak büyüdüm ve ne yazık ki benim kopyam yıllar önce bozuldu. Bu projeyi görmek beni gerçekten mutlu etti
      Ama diğer kuvvetlerin benim sandalyeyi ne kadar sevdiğimi dillendirmesine yol açacak çok küçük ve kişisel bir takılacak nokta var
      Air Force iki kelimedir
    • Güzel iş çıkarmışsınız
      Linux portu konusunda kendinize fazla yüklenmenize gerek yok gibi. Emülatör desteği çok iyi ve yaygın kullanılıyor; orada çalışıyorsa bunu fazlasıyla başarı sayabilirsiniz
      Ben kullanım kolaylığı için Lutris(https://lutris.net/) kullanıyorum
      Ama düşük seviye işleri seven biri gibi görünüyorsunuz; bu da harika retro oyunları oynamaktan ziyade başlı başına bir görev olabilir
    • Ben de şu sıralar birkaç oyunu tersine mühendislikle çözüyorum. Bugünlerde AI sayesinde epey kolaylaştı
      Yalnız bunun genel olarak hukuken ne kadar sorun çıkarmayacağını merak ediyorum. Bu konuda düşüncelerinizi duymak isterim
  • Acemi bir soru. Olumsuz algılanmasını istemem
    Eski oyunları çalışır halde tutmak için zaman harcamak harika ama DOSbox gibi şeylerle emüle edilebilen oyunları neden decompile ettiğinizi merak ediyorum. Bu kadar eski oyunlar zaten çok düşük özellikli donanımlarda gayet iyi çalışmıyor mu?

    • Mesele oyunu çalıştırmak değil, onu değiştirilebilir hale getirmek için açmak. İkili biçimdeki bir oyunu yamamak inanılmaz derecede zor ve basit hata düzeltmelerinin ötesine geçmek neredeyse imkânsız
      Kaynak kodunuz olduğunda tüm özellikler ekleyebilir, Windows 10’a port edebilir, 4K HDR, texture’lar, yeni modeller, yeni görevler yapabilirsiniz. Sınırlar fiilen ortadan kalkar
      Ayrıca sabit kodlanmış veri ofsetleri içeren assembly talimatlarına bakarak bir oyunu analiz etmek gerçekten çok zordur. C kodunda ise davranışı doğrudan okuyabilir ya da anlamak için enstrümantasyon ve debug kodu ekleyebilirsiniz
    • Birkaç yıl önce DOS dönemi oyunlarından birini tersine mühendislikle çözmeyi denediğimde bunun birkaç nedeni vardı
      Dosya biçimlerini belgelemek, verileri inceleyip kullanılmamış medyayı bulmak, ciddi hataları tespit edip düzeltmek, modlama araçları yapmak ve çocukluğumdan aklımda kalan bir şeyin hangi tekniklerle yapıldığını anlamak istiyordum
      Modern sistemlerde çalıştırma sürtünmesini azaltmak, ayrıca daha yüksek çözünürlük veya texture değiştirme gibi isteğe bağlı iyileştirmeleri de mümkün kılmak istiyordum
      Sonunda bitirecek kadar sabrım olmadı ama bugün denesem belki başarabilirdim diye düşünüyorum
    • Disket tabanlı birçok oyunda, o dönemin disk sürücülerinin belgelenmemiş davranışlarından yararlanan disk kopya koruma desenleri vardır. Bu yüzden Greaseweazle gibi araçlar, arşivlenmiş disketlerin tam manyetik akı haritasını çıkarmak için gerekli olabiliyor
      Ayrıca bu oyunlar çoğu zaman çok çeşitli grafik ve ses donanımlarında çalışacak şekilde yapıldığından, sürücüler fiilen oyunun içine derlenmiş durumda oluyor
      [0] https://github.com/keirf/greaseweazle
  • Çocukken çok oynadığım bir oyun. F-19 Stealth Fighter ve F-117A Nighthawk Stealth Fighter da oynardım; bu ikisinin bu oyunun hemen öncesi ve sonrasında çıktığını bugün ilk kez öğrendim. F-14 Tomcat’i de biraz oynamıştım
    Doğru anladıysam bunu çalıştırmak için orijinal oyun dosyaları gerekiyor. Bu yüzden bu uçağı yeniden kullanmaktan çok geliştirme günlüğünü okuyacağım gibi duruyor

    • F-19 harika bir oyun ve benim en sevdiğim Sid Meier oyunlarından biri
      1980’lerin sonunda Electronics Boutique’ten alıp evdeki Packard Bell 286’da oynadığımı hatırlıyorum. Kopya koruması, kılavuzdan uçağı bulup tanımlamanızı istiyordu; bunun sonucu olarak oyundaki bütün uçakları ezberlemiştim
      Oyun için bir Gravis Analog joystick de almıştım, klavye overlay’i hâlâ duruyor
      Bu oyunun modern bir reboot’unu gerçekten görmek isterim
    • Bu, bir arkadaşla ön koltuk/arka koltuk rolleriyle co-op oynanabilen oyun muydu, yoksa III müydü?
      Modem ayarlarını tutturmak için arkadaşımla sabit telefondan uzun uzun konuşur, sonra tekrar aramasını ister, oyunu başlatır, bağlantı yine kopar, bu kez ne olduğunu anlamak için tekrar konuşurduk
      En sonunda çalıştığında o kadar durmaksızın oynadık ki arkadaşımın annesi saatlerce tek telefon hattını meşgul ettiğimiz için modemle oynamayı yasakladı
      Diğer uçuş simülatörlerinde ya da uzay simülatörlerinde de benzer çok oyunculu deneyimler bulmak ve bu oyunu da yeniden çalıştırıp arkadaşıma nostalji tuzağı kurmak isterim
    • Geliştirme blogu, retro tersine mühendislik günlükleri arasında en iyilerden biri. Okuması çok keyifli olacaktır
    • Bu isimler ticari marka olarak tescilli değil mi? Lockheed ek gelir için hakları lisanslıyor olabilir
  • Bugünlerde oyun portlamak inanılmaz derecede kolaylaştı
    https://robin.tooclever.org için API zamanı bazında bir günden az sürdü

    • Harika. Böyle port edilen oyunlar ya da açık kaynak portlar için ayrı bir dizin var mı?
  • Sembol isimleri olmadan decompile edilmiş bir projenin yapısını çıkarsamada AI’ın ne kadar uygun olduğunu merak ediyorum
    Benim alanım değil ama source map olmayan JavaScript yapılarının amacını AI’ın oldukça iyi kavradığını görünce şaşırdım

    • AI, assembly okumakta ve anlamakta insanüstü seviyede iyi. Decompile edilmiş olmasına ya da sembollerin bulunmasına çok takılmıyor; yoklarsa sadece biraz yavaşlıyor
      Bazı durumlarda, araç kullanmadan bile ağır biçimde obfuscate edilmiş control flow’u doğrudan anlayabiliyor
    • Evet, çok yardımcı oluyor
  • Bu konu şimdi YouTube’a da çıktı: https://youtu.be/aIPKkOpIiF8

    • Video güzel ama AI anlatımı rahatsız edici
  • F15 kullanmış bir arkadaşım var, bunu ona gönderdim

  • Bu tür eski oyun toplulukları, sevdikleri oyunlarda dört özgürlüğü güvence altına almak için inanılmaz işler başarıyor ve gerçekten ilham veriyor

  • Bunu hiç oynamadım ama Jane's F/A-18’i oynadım, harika bir oyundu

    • Ve Jane's USAF de vardı!
  • Uçuş sırasında Doppler haritası oluşturup bunu SLAM fırlatmalarında kullanmak için çok zaman harcadım
    Digital Integrations’ın Tornado’su ile birlikte harika bir simülatördü ve Tornado gerçekten bir reboot’u hak ediyor