- 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
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
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
Uçak gemisine iniş zor değildi ama havada yakıt ikmali gerçekten çok zordu. Sadece birkaç kez başarabilmiştim
Oyun videosu
“This business will get out of control…” efsane repliğini hatırlattı
Bu oyun Angry Video Game Nerd videosunda da ele alınmıştı
İlgili video
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
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
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
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
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
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ı