# 탑건 NES 항공모함 착륙의 비밀

> Clean Markdown view of GeekNews topic #25108. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=25108](https://news.hada.io/topic?id=25108)
- GeekNews Markdown: [https://news.hada.io/topic/25108.md](https://news.hada.io/topic/25108.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2025-12-16T10:05:52+09:00
- Updated: 2025-12-16T10:05:52+09:00
- Original source: [relaxing.run](https://relaxing.run/blag/posts/top-gun-landing/)
- Points: 1
- Comments: 1

## Topic Body

- NES용 **Top Gun**의 항공모함 착륙 시스템을 역공학으로 분석해 **정확한 착륙 판정 조건**을 공개  
- 착륙 성공을 위해서는 **고도 100~299**, **속도 238~337**, **항모 정면 조준**이 필요  
- 게임 내 MFD의 “Alt. 200 / Speed 288” 표시가 실제로 **허용 범위의 중앙값**을 제시  
- 속도와 고도는 **BCD(이진화 십진수)** 형태로 메모리에 저장되며, 특정 주소에서 판정 함수가 수행  
- 오래된 게임의 **정밀한 내부 로직을 해독한 사례**로, 레트로 게임 분석과 디버깅 학습에 유용  

---
### 착륙 판정의 기본 조건
- 착륙 성공을 위해서는 **고도 100~299**, **속도 238~337**, 그리고 **항모를 향한 정확한 방향**이 필요  
  - 이 세 조건은 모두 착륙 시퀀스 종료 시점에 검사됨  
- 게임 화면의 “Alt. 200 / Speed 288” 표시는 실제 허용 범위의 중앙값으로, 플레이어가 목표로 삼기 적절한 수치  
- 고도와 속도는 **스로틀 입력과 피치 각도**로 조정되며, 방향은 별도 표시 없이 “Right! Right!” 경고로만 피드백됨  

### 메모리 구조와 내부 변수
- 주요 메모리 주소와 저장 내용  
  - **$40–$41:** 속도(BSD 형식), 허용 범위 238–337  
  - **$3D–$3E:** 고도(BSD 형식), 허용 범위 100–299  
  - **$FD:** 방향(Heading), -32 ~ +32 범위 중 0–7이 착륙 가능  
  - **$9E:** 착륙 판정 결과 저장, 값 0이면 성공  
- 속도와 고도는 **BCD(Binary Coded Decimal)** 로 저장되어 화면 표시를 단순화  
  - 예: 1234는 0x1234(10진 4660) 형태로 저장  

### 착륙 판정 루틴
- **$B6EA** 주소의 함수가 착륙 상태를 검사하고 결과를 **$9E**에 기록  
- 루틴은 고도·속도·방향을 순차적으로 비교하며, 조건을 벗어나면 각기 다른 코드값을 반환  
  - 예: 너무 높거나 빠르면 코드 8, 너무 낮거나 느리면 코드 4  
- 모든 조건을 만족하면 **LDX #00**으로 설정되어 성공 처리  

### 디버깅 및 치트 코드
- **Game Genie 코드 AEPETA**를 사용하면 항상 성공 착륙으로 판정  
- 이 코드는 실제 판정 루틴을 우회해 결과를 강제로 성공 상태로 기록  

### 결론
- NES Top Gun의 착륙 시스템은 단순한 조작이 아닌 **정확한 수치 기반 판정 로직**으로 구성  
- 역공학을 통해 **레트로 게임의 내부 메모리 구조와 조건 분기 방식**을 명확히 확인할 수 있음  
- 고전 게임의 설계 정밀도를 보여주는 사례로, **게임 로직 분석 및 복원 연구**에 참고 가치가 높음

## Comments



### Comment 47813

- Author: neo
- Created: 2025-12-16T10:05:52+09:00
- Points: 1

###### [Hacker News 의견들](https://news.ycombinator.com/item?id=46274822) 
- 비행기를 제대로 착륙시키는 **정보는 매뉴얼에 다 있음**  
  필요한 속도와 고도는 비밀이 아니었는데, 대부분 아이들이 매뉴얼을 안 읽었음  
  게임의 진짜 어려움은 **반쯤 현실적인 물리엔진** 때문이었음. 비행학교 다니던 형이 쉽게 착륙하더니 나에게도 방법을 알려줬음  
  속도와 고도는 스로틀과 피치 각도로 조절해야 해서, 단순히 엔진이나 에어브레이크 버튼만 눌러서는 안 됨  
  형이 알려준 팁은, 급강하 중에는 속도가 줄지 않으니 코를 살짝 들고 에어브레이크를 열어 속도를 줄인 뒤 수평을 맞추는 것임. 게임이 이걸 꽤 정확히 모델링했음
  - 대부분 아이들이 매뉴얼을 안 읽었다고? 나는 새 게임을 사면 **차 안에서 집에 가는 동안** 매뉴얼을 여러 번 읽었음. Toys“R”Us에서 산 게임이라면 집에 도착하기 전까지 열두 번은 읽었을지도 모름
  - 착륙할 때의 격언은 “스로틀로 고도를, 피치로 속도를 조절하라”임. 대부분은 그 반대로 함
  - 나도 매뉴얼을 가지고 있었고, 어릴 때는 매뉴얼 읽는 걸 정말 좋아했음. 하지만 **항공모함 착륙**은 인생에서 가장 어려운 게임 경험 중 하나였음. 성공률이 1%쯤이었고, 성공과 실패의 차이를 도무지 몰랐음
  - 매뉴얼뿐 아니라 화면에도 정보가 표시되어 있었음. 다만 허용 오차 범위가 빠져 있었음. 고도 ±100, 속도 ±50 정도의 여유가 있다는 걸 알면 훨씬 도움이 됨
  - 친구에게 빌리거나 대여한 경우엔 매뉴얼이 없었음. 결국 착륙법을 어떻게 알아냈는지는 기억이 안 나지만, **착륙 지침이 오히려 헷갈리게** 되어 있었던 건 확실함

- 이 블로그는 **아카이브 탐색이 어렵게** 되어 있음  
  다른 글로 가는 링크가 없고, [이 게시물](https://relaxing.run/blag/posts/top-gun-landing/) 외엔 접근이 막혀 있음  
  [blag/posts](https://relaxing.run/blag/posts/)나 [blag](https://relaxing.run/blag/)는 403 에러, 루트 페이지는 산 사진 한 장뿐임  
  RSS 피드도 없음. 불만은 아니고, 의도된 디자인이라면 존중함
  - [Google 검색 결과](https://www.google.com/search?q=site%3Arelaxing.run)에 따르면 이 글과 산 사진 페이지 두 개만 색인되어 있음. 아마 **사이트의 첫 게시물**일 가능성이 높음
  - 회사 네트워크(ZScaler)에서는 이 사이트가 **무기/폭탄 카테고리**로 분류되어 차단됨. [해당 링크](https://relaxing.run/blag/posts/top-gun-landing/)를 열 수 없었음

- 항공모함 착륙은 어렵지 않았는데, **공중 급유**는 정말 힘들었음. 몇 번밖에 성공 못 했음  
  [게임 영상](https://www.youtube.com/watch?v=vetEg8J-wcw)
  - 급유 장면의 **배경음악이 최고**였는데, 링크된 영상엔 없네. 다른 버전인가? [이 버전](https://www.youtube.com/watch?v=TfUZix8jVBY&t=187s)에는 있음
  - 링크를 클릭하자마자 추억이 몰려와서 탭을 닫았음. 항공모함 착륙도 짜증났지만 급유는 차원이 달랐음. 친구 집에서 밤새 NES로 피자 먹으며 놀던 시절이 생각남
  - 급유를 하면 미사일도 함께 보충되는 게 참 **편리한 시스템**이었음
  - 그런데 급유기 속도가 시속 1,400마일이라니, 거의 **마하 2** 수준임!
  - 나도 그랬음 :) 그래도 이런 시도들을 반복하는 게 즐거웠음

- “This business will get out of control…”이라는 **명대사**가 떠오름
  - 지난 12년 동안 이 대사를 수도 없이 써먹었음. [유튜브 클립](https://www.youtube.com/watch?v=hnRdPZjoMKM)

- 이 게임은 **Angry Video Game Nerd** 영상에서도 다뤄졌음  
  [관련 영상](https://www.youtube.com/watch?v=fuZTUX1bwJ0)
  - 후속편에서는 AVGN이 **착륙을 시도하는 장면**이 나옴. 거의 해체 수준의 테크닉임  
    [유튜브 링크](https://youtu.be/MYDuy7wM8Gk?si=VE22_o6tfQ5jvrL1&t=512)

- 나는 Top Gun은 안 했지만, SNES의 **Turn and Burn: No Fly Zone**을 즐겨 했음  
  세대가 바뀔 때마다 그래픽이 얼마나 발전했는지 지금 봐도 놀라움
  - 세대 간 그래픽 격차로는 **Super Mario 64(N64)** 와 **Resident Evil 4(GameCube)** 의 차이가 가장 크다고 생각함  
    NES→SNES 전환도 비슷한 수준이었음. PS1→PS2→PS3로 갈수록 3D 시대가 정착돼서 변화가 점점 **점진적**이 되었음

- Top Gun 착륙이 어렵다고들 하지만, **Captain Skyhawk의 위성 도킹**은 훨씬 더 어려움  
  RARE의 데모씬 효과가 폭발하는 가운데 도킹해야 함
  - 비결은 단 하나, 도킹할 때 **상하 이동만** 하는 것임

- 비교를 위해 Python으로 작성한 **착륙 판정 코드 예시**를 공유함  
  고도, 속도, 방향에 따라 TOO_SLOW_OR_TOO_LOW, TOO_FAST_OR_TOO_HIGH 등을 반환함
  - 진짜 이렇게 생겼을 수도 있겠네. 어떤 **LLM**으로 생성한 코드인지 궁금함
  - 하지만 코드가 오른쪽으로 너무 치우친 경우에도 TOO_SLOW_OR_TOO_LOW를 반환함. 원문 디스어셈블리에서는 **too_far_right**로 점프함

- 이런 **시뮬레이터 장난**이 너무 좋음  
  X‑Plane에서는 737을 항공모함에 착륙시키는 것도 가능함. 연료를 30분치만 싣고, 플랩을 최대한 내리고, 착륙 직전에 주차 브레이크를 걸면 됨
  - 실제로도 가능할지도 모름. 미 해군은 C‑130을 USS Forrestal에 착륙시킨 적이 있음  
    물론 737은 공식 수치상 활주로가 훨씬 길어야 하지만, 항모가 바람을 맞받아 항해하면 **40노트 이상의 역풍**을 얻을 수 있음

- 어릴 때 이 게임을 했는데, 항공모함에 착륙한 적은 한 번도 없음. 그건 **형들의 역할**이었음
  - 나도 마찬가지였음. 게임은 정말 좋아했지만, 착륙에서 항상 추락했음  
    어느 날 방과 후 보육원에서 친구가 이 게임을 잘 착륙시킨다고 해서 **협업 작전**을 세웠음  
    나는 전투를, 그는 착륙을 맡았고, 함께 Top Gun과 The Second Mission을 몇 시간 만에 클리어했음  
    치트나 Game Genie 없이 친구와 함께 깬 몇 안 되는 NES 게임으로 지금도 좋은 추억으로 남아 있음
