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

1 month ago 7

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

Read Entire Article