Carrier Landing in Top Gun for the NES

2025/12/15 23:16

Carrier Landing in Top Gun for the NES

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

Summary

ドキュメントは、ビデオゲームがプレイヤーの着陸が成功したかどうかを確認する方法について説明しています。着陸が成功するのは、シーケンス終了時に以下の3つの条件がすべて満たされたときだけです。

  1. 高度 – BCDで
    $3D–$3E
    に格納され、100 から 299(含む)の範囲である必要があります。
  2. 速度 – BCDで
    $40–$41
    に格納され、238 から 337(含む)の範囲である必要があります。
  3. 進路 – 符号付きバイトとして
    $FD
    に格納されます(-32 → +32 の範囲)。0‑7 のみが許容値です。

チェックルーチンはアドレス

$B6EA
にあります。このルーチンは
CMP #$04
(高速ビット ≥ 4、すなわち 400 以上)や
CMP #$38
(低バイト ≥ 0x38、すなわち 338 以上)などの命令を使って BCD 値を比較します。条件が一つでも失敗すると、ルーチンは
$9E
に特定の失敗コードを書き込みます:

  • LDX #$08
    → 8(“過度に高速または高度が高い”) – 高度が範囲外の場合
  • LDX #$04
    → 4(“遅すぎるまたは低速”) – 速度が範囲外の場合
  • LDX #$02
    または
    LDX #$04
    → 2/4 は進路が 0‑7 の範囲外の場合

約1分間のフライト後、ゲームはカットシーンをトリガーし、着陸が成功したかどうかに関係なく「Mission Accomplished!」で終了します。Game Genie チートコード(

AEPETA
)を使用すると、これらすべてのチェックをバイパスして強制的に着陸を成功させることができます。

本文

“Danger Zone”をループ再生しながら読むのがベスト

多くの人と同じように、NES版 Top Gun で航空母艦に着陸することは絶対的な専門技術かもしれません。しかし、まだこのスキルをマスターしていない少数派に属しているなら朗報です。私はちょっと逆解析を行い、着陸が正確にどう機能するのかを突き止めました。これで次回の練習セッションで本当に狙い通りにできるはずです。風車ハイファイブを温めましょう!

TL;DR:

  • 高度は 100〜299(含む)
  • スピードは 238〜337(含む)
  • シーケンスの最後で横方向に航空母艦を狙っている必要がある

簡単なリマインダー

数十年ぶりに Top Gun をプレイしたことがないなら、ステージの着陸部分は次のようになります。

画面上の MFD に「Alt. 200 / Speed 288」というテキストが表示されるので、その中央を狙うと良いでしょう。高度と速度はスロットル入力とピッチ角で制御されます。オンスクリーンにヘディングインジケーターはありませんが、ゲームは許容範囲外かどうかを「Right ! Right !」という音声で教えてくれます。速度とヘディングの許容範囲はかなり狭いので、これらに集中してください:高度の範囲はそれよりずっと広いです。

約 1 分間飛行した後、ゲームがあなたの状態をチェックし、テキストベースの着陸か高価なファイヤーボールかを示す小さなカットシーンが再生されます。どちらにせよ「Mission Accomplished!」と表示され、次のレベルへ進みます(結局、その飛行機はあなたのものではなく、税金納付者のものですから)。


ちょっとテクノロジー好きな人向け

注目すべきメモリ位置

アドレス内容許容範囲(含む)
$40–$41スピード(BCDで格納)238 – 337
$3D–$3E高度(BCDで格納)100 – 299
$FDヘディング、-32〜+320 – 7
$9E着陸状態チェック結果0; 他の値はクラッシュカットシーン中に飛行機の軌道を変更

スピードと高度はバイナリ符号付き十進数(BCD)で格納されており、画面上テキストの描画を簡素化するためと思われます。例えば 12344660(16 進 0x1234)として保存されます。

$B6EA
の関数が状態チェックを行い、その結果を
$9E
に書き込みます。友達に自慢したいだけで練習時間を割く気がないなら、Game Genie コード AEPETA を使えばマーベリックとグース(スプライヤー:安らかに眠れ)が誇れる着陸を保証できます。


アノテーション付きディスアセンブル

landing_skill_check:
    06:B6EA: LDA $3E          ; 高度の上位十進数をロード
    06:B6EC: BEQ $B724        ; 上位が 0(高度 < 100)なら分岐
    06:B6EE: CMP #$03
    06:B6F0: BCS $B720        ; 上位 >= 3(高度 >= 300)なら分岐
    06%B6F2: LDA $41          ; スピードの上位十進数をロード
    06:B6F4: CMP #$04
    06:B6F6: BCS $B720        ; スピード >= 400 なら分岐
    06:B6F8: CMP #$02
    06:B6FA: BCC $B724        ; スピード < 200 なら分岐
    06:B6FC: BEQ $B706        ; スピードが 200〜299 の場合

speed_300s:
    06:B6FE: LDA $40          ; スピードの下位十進数をロード
    06:B700: CMP #$38
    06:B702: BCS $B720        ; 下位 >= 38(スピード >= 338)なら分岐
    06:B704: BCC $B70C        ; 下位 < 338 なら分岐

speed_200s:
    06:B706: LDA $40
    06:B708: CMP #$38
    06:B70A: BCC $B724        ; 下位 < 238 なら分岐

speed_ok:
    06:B70C: LDA $FD          ; ヘディングをロード
    06:B70E: BMI $B718        ; ヘディングが負(左に偏りすぎ)なら分岐
    06:B710: CMP #$08
    06:B712: BCS $B71C        ; ヘディング >= 8(右に偏りすぎ)なら分岐
    06:B714: LDX #$00          ; スピードとヘディングがOK → 成功 (0)
    06:B716: BEQ $B726

too_far_left:
    06:B718: LDX #$02
    06:B71A: BNE $B726

too_far_right:
    06:B71C: LDX #$04
    06:B71E: BNE $B726

too_fast_or_too_high:
    06:B720: LDX #$08
    06:B722: BNE $B726

too_slow_or_too_low:
    06:B724: LDX #$04

return:
    06:B726: STX $9E          ; 結果を書き込み
    06:B728: RTS

さあ、外に出て第三のワイヤーを手に入れましょう。

2025年12月14日

同じ日のほかのニュース

一覧に戻る →

2025/12/16 6:37

Fix HDMI-CEC weirdness with a Raspberry Pi and a $7 cable

## Japanese Translation: > **概要:** > Samsung S95B TV(論理アドレス 0x00)、Denon AVR‑X1700H(0x05)、Apple TV、PS5、Xbox Series X、Nintendo Switch 2、および `/dev/cec0` をリッスンする Raspberry Pi 4 が含まれるホームシアター構成で、テレビの入力にのみ切り替えるコンソールが原因となるオーディオルーティング問題を著者は解決します。 > Pi(論理アドレス 0x01)から AVR に「System Audio Mode Request」パケット(`15:70:00:00`)を送信することで、受信機は ARC を有効化し、すべてのコンソールオーディオをテレビではなく自身経由でルーティングします。 > 著者は Python スクリプト `cec_auto_audio` でこれを実装しており、長時間稼働する `cec-client -d 8` を起動し、TRAFFIC 行から Active Source イベント(オペコード 0x82)を解析し、以前に Set System Audio Mode(オペコード 0x72)が検出されていない場合に毎回ウェイク時にパケットを送信します。 > スクリプトは systemd サービス `cec_auto_audio.service` としてパッケージ化され、起動時に開始されます。これにより、多層の HomeKit/Eve オートメーションと比べて低レイテンシで軽量な代替手段を提供します。 > トラブルシューティングガイドには、スキャン(`echo "scan" | cec-client -s`)、トラフィック監視(`cec-client -m`)、および欠落オペコード(0x82, 0x84, 0x70, 0x72)の良いケースと悪いケースの比較が含まれます。 > 残るエッジケースとして、コンソールのスタンバイがテレビチューナーを起動させる場合や HomeKit オートメーションがアクティブなソースなしでテレビをオンにする場合などには、追加の状態機械ロジックが必要になる可能性があります。著者はコミュニティメンバーに対し、より広範なトラブルシューティングのために CEC パケットトレースを共有してもらうよう呼びかけています。

2025/12/11 8:54

Nature's many attempts to evolve a Nostr

## Japanese Translation: **要約** 人気のあるアプリケーションの普遍的な設計は、ユーザーのデータと暗号鍵を所有する単一クラウドサーバーに集中しています(「あなたの鍵がないなら、あなたのデータではない」)。この中央集権化は封建制や寡占構造を生み出します。サーバーは橋を上げてユーザーを切り離す城のような存在です。フェデレーション(例:Mastodon、Matrix)はサーバー間で通信できるようにしますが、鍵とデータは依然としてサーバーの管理下にあり、ネットワーク理論はそのようなフェデレートシステムがスケールフリー分布へ収束し、支配的なハブを生み出すと予測しています。これはGmail/ProtonMail のメール寡占や Facebook Threads の ActivityPub ノードが Fediverse を支配する現象として観察されています。 セルフホスティングは居住IPの禁止やインフラコストにより多くのユーザーが個人サーバーから離れるため、非実用的になります。ピアツーピアネットワークはユーザー所有鍵を提供しますが、拡張性、信頼できないノード、スーパーpeer の中央集権化、複雑な最終的一致メカニズム、および長い多ホップルーティング遅延に悩まされます。 Nostr プロトコルは「リレーモデル」を提案します。単純で信頼できないリレーは署名されたメッセージを転送するだけで、相互通信しません。これにより \(N^2\) スケーリング問題を回避します。ユーザーは数個(通常 2–10)のリレーユーザーに購読し、自分のデータと鍵を完全に制御でき、リレーが失敗または停止した場合でも信頼性高く離脱できます。広く採用されれば、これはユーザーに真の所有権と単一点障害への耐久性を与え、中央集権サーバーに依存する企業に対し、よりユーザー中心で分散型アーキテクチャとの競争を強いるでしょう。これにより、ソーシャルメディアやメッセージングは真の分散モデルへと再構築される可能性があります。

2025/12/12 15:47

“Are you the one?” is free money

## 日本語訳: --- ## 要約 この記事は、番組「Are You the One?」の参加者が数学モデルを用いて、最終エピソード前にほぼ確実に全ての正しいカップルを推測できる方法を説明しています。戦略的にトゥルーブースとエピソード終了時のマッチアップデータを活用することで達成されます。 - **ゲーム設定**:10人の男性と10人の女性が、色でのみ明らかになる10組の完璧なペアに分けられます。参加者はすべてのペアを正しく推測し、100万ドルを獲得します。 - **情報源**: - *トゥルーブース* は特定のペアが成立しているかどうか(バイナリ結果)を確認します。 - *エピソードマッチアップ* はそのラウンドで正しいペアの総数のみを明らかにします。 「ブラックアウト」エピソード(0件マッチ)は、そのラウンド内のすべてのペアについて否定的な情報を提供し、複数のトゥルーブースと同等の効果があります。 - **モデル**:著者は OR‑Tools の最適化フレームワークを構築し、シーズン開始時に約400万件の有効マッチング(≈4 百万)を追跡し、各イベント後に更新します。シーズン1ではエピソード8でモデルが「解読」されました。 - **情報理論**:各イベントは約1〜1.6ビットの情報量を提供します。シミュレーションでは ~1.23 bits/イベント、実際の番組データでは ~1.39 bits/イベント、最適戦略で最大 1.59 bits/イベントが得られます。全検索空間は約22ビット(10!)を必要とするため、完璧な戦略には平均して約1.1 bits/イベントが十分です。 - **結果**: - ランダムペアリングでは、カップル数に関係なく平均正解スコアは約1になります。 - 100シーズンのランダムシミュレーションでモデルを使用した成功率は74%でしたが、情報理論戦略では98%に上昇します。 - 実際の番組データ(7シーズン)では71%の成功率と約1.39 bits/イベントとなり、純粋なランダムよりわずかに優れていますが、理論的最適値にはまだ届きません。 - **今後の作業**:著者はインタラクティブなウェブツールを開発予定で、ユーザーが異なる戦略を試し、必要な情報ビット数を確認し、実際のデータとパフォーマンスを比較できるようにします。 **影響** 本研究は参加者やプロデューサーに対して効率的な質問設計のための具体的なアルゴリズムフレームワークを提供し、エンターテインメントにおける組合せ最適化とベイズ推論の実用例を示すとともに、研究者にリアルワールドケーススタディとしてさらなる探求の機会を与えます。

Carrier Landing in Top Gun for the NES | そっか~ニュース