1 puan yazan GN⁺ 2025-12-16 | 1 yorum | WhatsApp'ta paylaş
  • NES için Top Gun'daki uçak gemisine iniş sistemi tersine mühendislikle analiz edilerek kesin iniş değerlendirme koşulları ortaya çıkarıldı
  • Başarılı iniş için irtifa 100–299, hız 238–337 ve uçak gemisinin tam karşısına hizalanma gerekiyor
  • Oyundaki MFD üzerindeki “Alt. 200 / Speed 288” göstergesinin gerçekte izin verilen aralığın orta değerlerini sunduğu görüldü
  • Hız ve irtifa bellekte BCD (ikili kodlanmış ondalık) biçiminde saklanıyor ve değerlendirme işlevi belirli adreslerde çalışıyor
  • Eski bir oyunun hassas iç mantığının çözümlendiği bir örnek olarak, retro oyun analizi ve hata ayıklama öğrenimi için faydalı

İniş değerlendirmesinin temel koşulları

  • Başarılı iniş için irtifa 100–299, hız 238–337 ve ayrıca uçak gemisine doğru tam yönelim gerekiyor
    • Bu üç koşulun tamamı, iniş sekansı bittiği anda kontrol ediliyor
  • Oyun ekranındaki “Alt. 200 / Speed 288” göstergesi, gerçek izin verilen aralığın orta değerlerini temsil ediyor; bu da oyuncunun hedeflemesi için uygun bir değer
  • İrtifa ve hız, gaz kolu girişi ve pitch açısı ile ayarlanıyor; yön ise ayrı bir gösterge olmadan yalnızca “Right! Right!” uyarısıyla geri bildirim veriyor

Bellek yapısı ve iç değişkenler

  • Temel bellek adresleri ve saklanan içerikler
    • $40–$41: hız (BSD biçimi), izin verilen aralık 238–337
    • $3D–$3E: irtifa (BSD biçimi), izin verilen aralık 100–299
    • $FD: yön (Heading), -32 ~ +32 aralığında; bunun içinden 0–7 inişe uygun
    • $9E: iniş değerlendirme sonucu burada saklanır; değer 0 ise başarı
  • Hız ve irtifa BCD (Binary Coded Decimal) olarak saklanıyor; bu da ekran gösterimini basitleştiriyor
    • Örnek: 1234, 0x1234 (ondalık 4660) biçiminde saklanır

İniş değerlendirme rutini

  • $B6EA adresindeki işlev iniş durumunu kontrol eder ve sonucu $9E adresine yazar
  • Rutin, irtifa·hız·yön değerlerini sırayla karşılaştırır; koşullar dışına çıkılırsa farklı kod değerleri döndürür
    • Örnek: fazla yüksek ya da hızlıysa kod 8, fazla alçak ya da yavaşsa kod 4
  • Tüm koşullar karşılanırsa LDX #00 olarak ayarlanır ve başarı işlenir

Hata ayıklama ve hile kodu

  • Game Genie kodu AEPETA kullanılırsa iniş her zaman başarılı sayılır
  • Bu kod, gerçek değerlendirme rutinini atlayarak sonucu zorla başarılı duruma yazar

Sonuç

  • NES Top Gun'daki iniş sistemi, basit bir kontrol meselesi değil, kesin sayısal değerlere dayalı bir değerlendirme mantığı ile kurulmuş
  • Tersine mühendislik sayesinde retro oyunların iç bellek yapısı ve koşul dallanma biçimi açıkça doğrulanabiliyor
  • Klasik oyunların tasarım hassasiyetini gösteren bir örnek olarak, oyun mantığı analizi ve yeniden kurma çalışmaları için yüksek referans değerine sahip

1 yorum

 
GN⁺ 2025-12-16
Hacker News yorumları
  • Uçağı düzgün şekilde indirmenin bilgisi tamamen kılavuzdaydı
    Gerekli hız ve irtifa gizli değildi, sadece çoğu çocuk kılavuzu okumuyordu
    Oyunun asıl zorluğu yarı gerçekçi fizik motorundan geliyordu. Uçuş okuluna giden ağabeyim kolayca iniş yaptıktan sonra bana da nasıl yapılacağını göstermişti
    Hız ve irtifa gaz kolu ile pitch açısıyla ayarlanmalıydı, yani sadece motor ya da airbrake düğmesine basmak yetmiyordu
    Ağabeyimin verdiği ipucu, dik dalışta hızın düşmediği için burnu biraz kaldırıp airbrake açarak hızı azaltmak, sonra da uçağı tekrar düzlemekti. Oyun bunu epey doğru modellemişti

    • Çoğu çocuk kılavuzu mu okumuyordu? Ben yeni oyun alınca arabada eve dönerken kılavuzu defalarca okurdum. Oyun Toys“R”Us’tan alındıysa eve varmadan on iki kez okumuş bile olabilirim
    • İnişteki temel söz şudur: “İrtifayı gazla, hızı pitch ile kontrol et.” Çoğu kişi tersini yapar
    • Bende de kılavuz vardı ve çocukken kılavuz okumayı gerçekten çok severdim. Ama uçak gemisine iniş hayatımdaki en zor oyun deneyimlerinden biriydi. Başarı oranım herhalde %1 civarındaydı ve başarıyla başarısızlık arasındaki farkı hiç anlayamıyordum
    • Bilgi sadece kılavuzda değil, ekranda da gösteriliyordu. Ama kabul toleransı aralığı eksikti. İrtifa için ±100, hız için ±50 kadar pay olduğunu bilmek çok yardımcı olurdu
    • Oyun arkadaşından ödünç alındıysa ya da kiralandıysa kılavuz olmuyordu. Sonunda inişi nasıl çözdüğümü hatırlamıyorum ama iniş talimatlarının zaten kafa karıştırıcı olduğu kesin
  • Bu blogda arşivde gezinmek zor
    Başka yazılara giden bağlantı yok ve bu gönderi dışında erişim kapalı görünüyor
    blag/posts ya da blag 403 hatası veriyor, kök sayfada ise sadece bir dağ fotoğrafı var
    RSS beslemesi de yok. Şikâyet etmiyorum; kasıtlı bir tasarımsa buna saygı duyarım

    • Google arama sonuçlarına göre dizine eklenmiş sadece bu yazı ile dağ fotoğrafı sayfası var. Muhtemelen sitenin ilk gönderisi bu
    • Şirket ağında (ZScaler) bu site silah/bomba kategorisi altında sınıflandırılıp engelleniyor. Bu bağlantıyı açamadım
  • Uçak gemisine iniş zor değildi ama havada yakıt ikmali gerçekten çok zordu. Sadece birkaç kez başarabilmiştim
    Oyun videosu

    • Yakıt ikmali sahnesindeki arka plan müziği harikaydı, ama bağlantı verilen videoda yok. Acaba başka bir sürüm mü? Bu sürümde var
    • Bağlantıya tıkladığım anda nostalji bastı ve sekmeyi kapattım. Uçak gemisine iniş de sinir bozucuydu ama yakıt ikmali bambaşka bir seviyeydi. Arkadaş evinde bütün gece NES oynayıp pizza yediğimiz günleri hatırlattı
    • Yakıt ikmali yapınca füzelerin de birlikte dolması gerçekten kullanışlı bir sistemdi
    • Ama tanker uçağının hızı saatte 1.400 milse bu neredeyse Mach 2 demek!
    • Ben de öyleydim :) Yine de bu denemeleri tekrar tekrar yapmak keyifliydi
  • “This business will get out of control…” efsane repliğini hatırlattı

    • Son 12 yılda bu repliği sayısız kez kullandım. YouTube klibi
  • Bu oyun Angry Video Game Nerd videosunda da ele alınmıştı
    İlgili video

    • Devam videosunda AVGN’nin iniş yapmaya çalıştığı bir sahne var. Neredeyse söküm seviyesinde bir teknik
      YouTube bağlantısı
  • Ben Top Gun oynamadım ama SNES’te Turn and Burn: No Fly Zone’u çok oynardım
    Nesiller değiştikçe grafiklerin ne kadar ilerlediğine bugün bile şaşırıyorum

    • Nesiller arası grafik sıçramasında Super Mario 64(N64) ile Resident Evil 4(GameCube) arasındaki farkın en büyüklerden biri olduğunu düşünüyorum
      NES→SNES geçişi de benzer ölçekteydi. PS1→PS2→PS3 ile 3D çağı oturdukça değişim giderek daha kademeli hale geldi
  • İnsanlar Top Gun inişinin zor olduğunu söyler ama Captain Skyhawk’taki uyduya kenetlenme çok daha zordur
    RARE’in demoscene efektleri patlarken bir yandan da kenetlenmen gerekir

    • İşin sırrı tek: kenetlenirken sadece yukarı-aşağı hareket etmek
  • Karşılaştırma için Python ile yazılmış bir iniş değerlendirme kodu örneği paylaşılmış
    İrtifa, hız ve yön durumuna göre TOO_SLOW_OR_TOO_LOW, TOO_FAST_OR_TOO_HIGH gibi değerler döndürüyor

    • Gerçekten de böyle görünmüş olabilir. Hangi LLM ile üretilmiş bir kod olduğunu merak ettim
    • Ama kod sağ tarafa fazla kayılmış durumlarda da TOO_SLOW_OR_TOO_LOW döndürüyor. Orijinal disassembly’de ise too_far_right etiketine atlıyor
  • Bu tür simülatör şakalarını çok seviyorum
    X‑Plane’de bir 737’yi uçak gemisine indirmek bile mümkün. Yaklaşık 30 dakikalık yakıt alıp flapleri sonuna kadar indiriyor ve inişten hemen önce park frenini çekiyorsun

    • Gerçekte de mümkün olabilir. ABD Donanması C‑130’u USS Forrestal’a indirmişti
      Elbette 737’nin resmî değerlere göre çok daha uzun piste ihtiyacı var, ama uçak gemisi rüzgâra karşı giderse 40 knot’tan fazla karşı rüzgâr elde edilebilir
  • Bu oyunu çocukken oynadım ama uçak gemisine bir kez bile iniş yapamadım. O iş ağabeylerin göreviydi

    • Bende de durum aynıydı. Oyunu gerçekten çok seviyordum ama inişte hep çakılıyordum
      Bir gün okul sonrası bakım merkezinde bir arkadaşımın bu oyunda çok iyi iniş yaptığını öğrenince bir ortak operasyon planladık
      Ben hava savaşlarını üstleniyordum, o da inişleri yapıyordu; birlikte Top Gun ve The Second Mission’ı birkaç saat içinde bitirdik
      Hile ya da Game Genie olmadan bir arkadaşımla bitirdiğim az sayıdaki NES oyunundan biri olarak hâlâ çok güzel bir anı olarak kaldı