1 poin oleh GN⁺ 2025-12-16 | 1 komentar | Bagikan ke WhatsApp
  • Analisis reverse engineering terhadap sistem pendaratan kapal induk di Top Gun untuk NES mengungkap syarat penilaian pendaratan yang akurat
  • Agar pendaratan berhasil, dibutuhkan ketinggian 100~299, kecepatan 238~337, dan membidik lurus ke arah depan kapal induk
  • Tampilan “Alt. 200 / Speed 288” pada MFD di dalam game sebenarnya menunjukkan nilai tengah dari rentang yang diizinkan
  • Kecepatan dan ketinggian disimpan di memori dalam bentuk BCD (binary-coded decimal), dan fungsi penilaian dijalankan pada alamat tertentu
  • Ini merupakan contoh penguraian logika internal yang presisi pada game lama, berguna untuk pembelajaran analisis dan debugging game retro

Syarat Dasar Penilaian Pendaratan

  • Agar pendaratan berhasil, dibutuhkan ketinggian 100~299, kecepatan 238~337, dan arah yang tepat menuju kapal induk
    • Ketiga syarat ini semuanya diperiksa saat urutan pendaratan berakhir
  • Tampilan “Alt. 200 / Speed 288” pada layar game adalah nilai tengah dari rentang yang benar-benar diizinkan, sehingga cocok dijadikan target oleh pemain
  • Ketinggian dan kecepatan disesuaikan melalui input throttle dan sudut pitch, sedangkan arah tidak memiliki indikator terpisah dan hanya diberi umpan balik lewat peringatan “Right! Right!”
Iklan

Struktur Memori dan Variabel Internal

  • Alamat memori utama dan isi yang disimpan
    • $40–$41: kecepatan (format BSD), rentang yang diizinkan 238–337
    • $3D–$3E: ketinggian (format BSD), rentang yang diizinkan 100–299
    • $FD: arah (Heading), dalam rentang -32 ~ +32, dan nilai 0–7 memungkinkan pendaratan
    • $9E: menyimpan hasil penilaian pendaratan, nilai 0 berarti berhasil
  • Kecepatan dan ketinggian disimpan sebagai BCD (Binary Coded Decimal) untuk menyederhanakan tampilan di layar
    • Contoh: 1234 disimpan dalam bentuk 0x1234 (desimal 4660)

Rutin Penilaian Pendaratan

  • Fungsi pada alamat $B6EA memeriksa status pendaratan dan mencatat hasilnya ke $9E
  • Rutin ini membandingkan ketinggian, kecepatan, dan arah secara berurutan; jika keluar dari syarat, ia mengembalikan nilai kode yang berbeda
    • Contoh: jika terlalu tinggi atau terlalu cepat maka kode 8, jika terlalu rendah atau terlalu lambat maka kode 4
    Iklan
  • Jika semua syarat terpenuhi, nilainya disetel ke LDX #00 dan diproses sebagai berhasil

Debugging dan Kode Cheat

  • Dengan kode Game Genie AEPETA, pendaratan selalu dinilai berhasil
  • Kode ini melewati rutin penilaian yang sebenarnya dan memaksa hasil dicatat sebagai status sukses

Kesimpulan

  • Sistem pendaratan di NES Top Gun bukan sekadar kontrol sederhana, melainkan tersusun dari logika penilaian berbasis angka yang akurat
  • Melalui reverse engineering, kita dapat memastikan dengan jelas struktur memori internal dan cara percabangan kondisi pada game retro
  • Sebagai contoh yang menunjukkan presisi desain game klasik, temuan ini sangat bernilai sebagai referensi untuk analisis logika game dan penelitian restorasi

1 komentar

 
GN⁺ 2025-12-16
Komentar Hacker News
  • Informasi untuk mendaratkan pesawat dengan benar semuanya ada di manual
    Kecepatan dan ketinggian yang dibutuhkan bukan rahasia, hanya saja kebanyakan anak tidak membaca manual
    Kesulitan sebenarnya dari game ini berasal dari mesin fisika yang setengah realistis. Kakak saya yang waktu itu sekolah penerbangan bisa mendarat dengan mudah lalu mengajarkan caranya kepada saya
    Kecepatan dan ketinggian harus dikendalikan dengan throttle dan sudut pitch, jadi tidak bisa hanya menekan tombol mesin atau air brake begitu saja
    Tips dari kakak saya adalah, saat menukik tajam kecepatan tidak akan berkurang, jadi angkat hidung pesawat sedikit lalu buka air brake untuk mengurangi kecepatan, setelah itu ratakan lagi. Game ini memodelkan hal itu dengan cukup akurat

    • Kebanyakan anak tidak membaca manual? Kalau saya beli game baru, saya baca manualnya berkali-kali di mobil saat perjalanan pulang. Kalau belinya di Toys“R”Us, mungkin sudah saya baca dua belas kali sebelum sampai rumah
    • Pepatah saat mendarat adalah, “atur ketinggian dengan throttle, atur kecepatan dengan pitch.” Kebanyakan orang malah melakukan kebalikannya
    • Saya juga punya manualnya, dan waktu kecil saya memang sangat suka membaca manual. Tapi mendarat di kapal induk adalah salah satu pengalaman gaming tersulit dalam hidup saya. Tingkat keberhasilannya mungkin sekitar 1%, dan saya benar-benar tidak pernah paham apa bedanya berhasil dan gagal
    • Informasinya bukan cuma ada di manual, tapi juga ditampilkan di layar. Hanya saja rentang toleransinya tidak dicantumkan. Akan jauh lebih membantu kalau tahu ada toleransi sekitar ketinggian ±100 dan kecepatan ±50
    • Kalau game-nya pinjam dari teman atau hasil sewa, biasanya tidak ada manual. Pada akhirnya saya tidak ingat bagaimana saya tahu cara mendarat, tapi yang pasti petunjuk pendaratannya justru membingungkan
  • Blog ini dibuat sulit dijelajahi arsipnya
    Tidak ada tautan ke tulisan lain, dan selain postingan ini, aksesnya tertutup
    blag/posts maupun blag menghasilkan error 403, dan halaman root hanya berisi satu foto gunung
    Tidak ada feed RSS juga. Bukan keluhan, kalau memang itu desain yang disengaja ya saya hormati

    • Menurut hasil pencarian Google, hanya tulisan ini dan halaman foto gunung itu yang terindeks. Kemungkinan besar ini adalah postingan pertama situs tersebut
    • Di jaringan kantor saya (ZScaler), situs ini diklasifikasikan sebagai kategori senjata/bom dan diblokir. Saya tidak bisa membuka tautan itu
  • Mendarat di kapal induk tidak terlalu sulit, tapi pengisian bahan bakar di udara benar-benar susah. Saya cuma berhasil beberapa kali
    Video game

    • Musik latar di adegan pengisian bahan bakarnya luar biasa, tapi tidak ada di video yang ditautkan. Versi yang berbeda? Versi ini ada
    • Begitu klik tautannya, kenangan langsung membanjir dan saya menutup tabnya. Mendarat di kapal induk memang bikin kesal, tapi pengisian bahan bakar itu level yang berbeda. Jadi ingat masa-masa main NES semalaman sambil makan pizza di rumah teman
    • Yang menyenangkan, saat isi bahan bakar, misil juga ikut terisi ulang. Sistem yang sangat praktis
    • Tapi tunggu, kecepatan pesawat tanker-nya 1.400 mil per jam, itu hampir Mach 2!
    • Saya juga begitu :) Tetap saja, mengulang percobaan-percobaan seperti ini memang menyenangkan
  • Jadi teringat kalimat legendaris “This business will get out of control…”

    • Selama 12 tahun terakhir saya sudah tak terhitung memakai kutipan ini. Klip YouTube
  • Game ini juga pernah dibahas di video Angry Video Game Nerd
    Video terkait

    • Di lanjutannya, ada adegan AVGN mencoba mendarat. Tekniknya sudah nyaris tingkat pembongkaran total
      Tautan YouTube
  • Saya tidak main Top Gun, tapi dulu sering main Turn and Burn: No Fly Zone di SNES
    Sampai sekarang pun tetap mengejutkan melihat seberapa jauh grafik berkembang setiap kali ganti generasi

    • Untuk lompatan grafik antargenerasi, menurut saya yang paling besar adalah Super Mario 64(N64) dan Resident Evil 4(GameCube)
      Transisi NES→SNES juga mirip skalanya. Dari PS1→PS2→PS3, karena era 3D sudah mapan, perubahan jadi makin bertahap
  • Banyak orang bilang pendaratan Top Gun itu sulit, tapi docking satelit di Captain Skyhawk jauh lebih susah
    Harus docking di tengah ledakan efek demoscene dari RARE

    • Rahasianya cuma satu: saat docking, gerak vertikal saja
  • Sebagai perbandingan, ada yang membagikan contoh kode penentuan pendaratan yang ditulis dalam Python
    Berdasarkan ketinggian, kecepatan, dan arah, kode itu mengembalikan TOO_SLOW_OR_TOO_LOW, TOO_FAST_OR_TOO_HIGH, dan sebagainya

    • Bisa jadi memang bentuknya seperti itu. Jadi penasaran kode ini dibuat dengan LLM yang mana
    • Tapi kalau posisinya terlalu ke kanan, kodenya tetap mengembalikan TOO_SLOW_OR_TOO_LOW. Di disassembly aslinya, itu lompat ke too_far_right
  • Saya suka sekali main-main simulator seperti ini
    Di X‑Plane, bahkan memungkinkan mendaratkan 737 di kapal induk. Caranya: bawa bahan bakar hanya untuk 30 menit, turunkan flap semaksimal mungkin, lalu aktifkan rem parkir tepat sebelum menyentuh landasan

    • Mungkin di dunia nyata juga bisa. Angkatan Laut AS pernah mendaratkan C‑130 di USS Forrestal
      Tentu saja 737 secara spesifikasi resmi butuh landasan yang jauh lebih panjang, tetapi jika kapal induk melaju melawan arah angin, bisa didapat angin sakal lebih dari 40 knot
  • Waktu kecil saya main game ini, tapi tidak pernah sekalipun berhasil mendarat di kapal induk. Itu tugas kakak-kakak

    • Saya juga sama. Saya sangat suka game-nya, tapi saat mendarat selalu jatuh
      Suatu hari di tempat penitipan sepulang sekolah, ada teman yang katanya jago mendarat di game ini, jadi kami menyusun operasi kolaboratif
      Saya menangani pertarungannya, dia menangani pendaratannya, dan bersama-sama kami menamatkan Top Gun dan The Second Mission hanya dalam beberapa jam
      Sampai sekarang itu tetap jadi kenangan indah sebagai salah satu dari sedikit game NES yang berhasil saya tamatkan bersama teman tanpa cheat atau Game Genie