6502tinymachines

PLAN: Super Mario Bros. を一面ずつ、実機の上で

ベンチが遊び方を覚えていく様子を、図で残した記録だ。ボタンのバイトの一本の スケジュールを模型の上で探し、電源投入からコンソールで遊ばせる。スケジュールは 伸びるたびに一面多くクリアする。ここにあるどの面も、次の面を計画する前に、命を 一つも失わずに実機の上でクリアした。2026-10-20 にスケジュールはゲームの終わりまで 届いた: 電源投入から姫まで三十二面、一回の走行、命は一つも失わなかった。図は実測だ (マリオの道筋は模型の RAM から、ボタンは実機が遊んだスケジュールから)。表の判定はベンチ自身のログから来ている。 ゲームの絵は一枚も載せていない: 市販のカートリッジをグラバーで取ったフレームは サイトに出さず、これらは数字から描いている。

tools/plan-log.py が、docs/plan-log.json (記録)、exercise/smb-plan.txt (スケジュール)、そしてそのスケジュールを模型の上で再生したものから描いた。 ここで使う言葉は docs/bench-language.md のものだ。

走行の全体: 面ごとの帯、それぞれの面でのマリオの進み、積み上がっていくスケジュールの項目数、そしてヘッドが流し込みを始めたところ

手順

ベンチはゲームに反応できない。ヘッドを通した判断には、フレームを一枚取って ブリッジへ一行送るので、およそ一秒半かかる。そのあいだに Super Mario Bros. は ポーリング九十回ぶん進んでしまう。だからベンチは開ループで遊ぶ: スケジュール、 つまりコンソールがどのポーリングからどのバイトを読むかを言う AT n hh の行を 渡され、仕事はそのスケジュールを見つけることにある。どの面も同じ五つの段を、 この順に通った。そして最後の段が通るまで、次の面は始めなかった。

  1. 模型の上で計画する。 tools/plan.py は nes-console の branch の 例を動かす: 状態を丸ごと保存して読み込めるプロセスとしてのコンソールだ (Console::save_state。読み込みは、止まらずに走った走行とバイト単位で同じ だと証明してある)。実機が最後にクリアしたスケジュールの終わりから、一度に 30 ポーリングの区間を探す。20 の動き (走る、歩く、止まる、戻る、A を押し 続ける、5 ポーリングごとに始まる三つの高さの助走ジャンプ、そして水中では 10 か 16 ポーリングごとに A を叩く) をそれぞれ区間の保存した状態から試し、 その後に三通りの続き (走る、今すぐ跳ぶ、少し後で跳ぶ) をつなげる。動きは、 その続きのどれかが生き残ったときだけ残す。残った動きは、面が終わったか、 次にエリア、次にマリオがどこまで右へ行ったかで順位を付け、一番よいものを 確定する。ある区間の動きがすべて死んだら、探索は一区間戻って次によいものを 取り、一つのポーリングが四回失敗したら、その前の区間も諦める。
  2. 通しで再生する。 スケジュール全体を電源投入から watch に通す (保存した状態も、計画するものも使わない): 始めたときと同じ残り人数で、次の 面の始まりの画面まで行かなければならない。これが、計画するものが信じた スケジュールを二度捕まえた (勝った城を勝ちと認めていなかった。旗竿に届いたのが、 スケジュールに入れ忘れた先読みの中だけだった)。
  3. 数える。 UNO のスケジュールが輪になってから (2026-10-18) これはゲートでは なく覚え書きだ: ヘッドはコンソールがリセットを抜ける前に 480 項目を入れ、 残りはポーリングが過ぎるにつれて流し込む。
  4. 実機で遊ぶ。 ヘッドがベンチの Pi の上で台本を走らせる: 電源、温かい リセットの手順、すべての AT の行。グラバーは選んだポーリングでフレームを 取る (サイトには出さない)。その後、走行の bridge.log、つまりコンソールが ポーリングごとに読んだバイトを、最後のリセットより後の台本と突き合わせる: 抜けたポーリングも、違うポーリングも無いこと。コンソールが次の面の始まりの 画面を見せたら、その面はクリアとして数える。
  5. プッシュする。 アドレスと取り込まれる文書の確認の後、道具と記録を コミットしてプッシュする。

探索が模型から読むもの。どれも信じる前に実測した: $0770 はモード (1 は遊んで いる、2 は城の斧の後)、$000E はマリオの状態 (08 は操作できる、0B は当たった、 06 は死んだ、04 は旗竿、05 は城へ歩くところ、02 と 03 は土管、07 はゲームが彼を 歩かせて入れるところ)、$006D:$0086 はエリアの中の位置、$00B5 は縦の画面 (1 を越えたら落下)、$075A は残り人数、$0760 はエリア、$075C と $075F は 面とワールド。

面ごとに

面ラッチ項目数計画にかかった時間後戻り実機での走行ポーリング違い教えたこと
1-1480 から 219071測っていない420261017-22413228620貪欲な探索は最初のクリボーに歩いて突っ込み、それを取り消せない: 区間ごとの後戻り。
1-23349 から 48701328.1 分120261017-23551856010敵の群れにはタイミングが要る (5 ラッチごとのジャンプ)。土管はマリオを先読みより長く留め、留められた区間は行き詰まりではない。
1-35683 から 6740172測っていない120261018-01213374230続きが生き残るときだけ動きを残す (緩い規則はマリオを穴へ確定させた)。旗竿を見つけた続きは残す。
1-47470 から 84301977.4 分220261018-02110892310城は旗竿ではなく斧で終わる: $0770 が 2 になり、それから次のワールド。
2-19300 から 1089025813.5 分020261018-023103116220新しいことは無い。
2-212081 から 1447037017.4 分020261018-031731151730泳ぎ (A を叩く。先に実測した)。通った土管は x より上に数える: 2-2 の出口を過ぎると、マリオはより小さな x に降りる。
2-315238 から 167304049.7 分020261018-034339174210新しいことは無い (ベンチの最初の試みは始まりの画面のフレームを取り逃した: グラバーが時間切れになった)。
2-417422 から 184304357.0 分120261018-040301192410新しいことは無い: 斧の規則が持ちこたえた。
3-119300 から 2093049211.1 分020261018-042415 (流し込み)216930ヘッドの持てる量を越えた最初のスケジュール: ラッチ 19990 から流し込んだ。
3-221730 から 2328054812.0 分020261018-044744 (流し込み)240930新しいことは無い。
3-324142 から 2519058727.7 分020261018-061315 (流し込み)258510ビーム探索: 先へ行く道は右ではなく上で、深さ優先ではその道筋を生かしておけなかった。ベンチの最初の試みは、計画ではなく実機の側で失敗した: コンソールが走行の途中で勝手に再起動し、ポーリングのログはきれいなままだった (走行 20261018-060411)。
3-425906 から 2684061810.3 分020261018-145621 (流し込み)276830模型はフレームの終わりではなく、ポーリングの上で止まらなければならない: ポーリングを二つ含むフレームで、二つ目が計画するもののバイトより先に過ぎてしまい、模型はそのジャンプを一ポーリング遅れで遊び、最初の計画は通しの再生で落ちた。
4-127733 から 2924066221.6 分020261018-162219 (流し込み)300720新しいことは無い。ベンチの最初の走行はどのポーリングも正しく遊んだが、始まりのフレームの絵はコンソールの電源が切られたあとに取られていて (台本は取り込みの十ポーリング後に終わっていた)、数に入れずに走らせ直した (走行 20261018-161233)。
4-230502 から 32660730測っていない020261018-234630 (流し込み)335020五つの計画と手による探索: 天井はワープゾーンへ通じ、ビームには高さのための余地が要り、ジャンプは区間をまたいで A を押し続けられなければならず、ワープとは次の面以外のどこかへ面が変わること。最後の高い土管は、模型の上で手で探した道筋で越え、それをビームの階段の上の状態につないだ。
4-333560 から 3476076753.0 分020261019-015500 (流し込み)355010新しいことは無い。ビームはキノコの台とリフトを自分だけで越えた: 生きている位置が六つしかなくなり、そのいちばん良いものも後戻りしていたときが一度あったが、それでも進んだ。
4-435530 から 36850796測っていない020261019-065615 (流し込み)377930城の迷路は、画面がある頁に届いたときに、ゲーム自身の表が望む高さにマリオが立っていなければ、彼を戻してしまう。計画するものはいま、その表をゲームのコードから読み出し、戻されることを死と数え、高さの枠を、先読みが望みの高さに立つ進み方に回す。それで一つ目の関門は自分だけで越えた。二つ目へは、右へ走ると越えてしまう一タイル幅のすき間からしか入れないので、その一区間は手で探してつないだ。
5-137820 から 3911084556.3 分020261019-081032 (流し込み)399510新しいことは無い: ビームはキラーとパックンフラワーの土管を自分だけで越えた。
5-239980 から 4124090274.0 分020261019-094241 (流し込み)421120新しいことは無い: ビームはハンマーブロスを越えるまでずっと地上にいて、水へ降りる土管は一度も選ばなかった。
5-342150 から 4320094446.1 分020261019-104805 (流し込み)440230新しいことは無い: ビームは木の上とリフトとキラーを自分だけで越えた。
5-444060 から 4502097542.9 分020261019-115112 (流し込み)458920新しいことは無い: ビームはワールド 5 の城を、そのファイアバーとバブルごと、自分だけで越えた。
6-145930 から 47070101551.1 分020261019-130306 (流し込み)479710計画するものには新しいことは無い: ビームはジュゲムの夜の面を自分だけで越えた。実機では、最後のリセットのあとの最初の二つのポーリングをヘッドが一度に見て二つ目だけを記録したので、数えるのは 1 からになる。スケジュールはそこで 00 を持ち、1 から先のポーリングはどれも合っている。
6-248010 から 49510110278.7 分020261019-144503 (流し込み)503930新しいことは無い: ビームはパックンフラワーの土管を越えるまでずっと地上にいて、下へ降りる土管は一度も選ばなかった。
6-350420 から 51410113849.7 分020261019-160009 (流し込み)522020新しいことは無い: ビームは天びんリフトとキラーを自分だけで越えた。区間の終わりで生きている位置が八つまで減ったことが一度あった。
6-452230 から 53130116943.2 分020261019-172628 (流し込み)540220プランナーにとって新しいことは無い。ベンチでの一度目 (20261019-170655、54021 回のポーリング、間違いは無し) はどのポーリングも正しく打ったが、画面を一枚も取り込まなかった: 取り込みは始まってから 900 秒で諦め、この回の最初の一枚はそれより後だった。数えずに、制限を上げてもう一度走らせた。
7-154060 から 55200121454.0 分020261019-191128 (流し込み)560610新しいことは無い: ビームはハンマーブロスとキラー砲台を自分だけで越えた。
7-256110 から 593201353測っていない020261019-224836 (流し込み)603020通った土管は通ったままにする。水の面の出口の土管はエリアの番号を変えずにマリオを後ろへ戻すので、土管を抜けた位置は、先読みが土管に入った手前の位置より下に順位付けされ、ビームは二十区間のあいだ土管の口に立っていた。いまはどの位置も、自分の道筋が入った土管の数を持っている。
7-360330 から 61740139372.3 分020261020-002836 (流し込み)625020新しいことは無い: ビームは飛んでくるプクプクの下の橋を自分だけで越えた。
7-462540 から 63800142359.3 分020261020-015615 (流し込み)647220新しいことは無い: 4-4 でゲームから読み出した迷路の関門の表がワールド 7 の六つにもそのまま効き、ビームは一度も戻されずに、どれも自分だけで越えた。
8-164740 から 673801519118.7 分020261020-042403 (流し込み)681020新しいことは無い: ゲームでいちばん長い面を、ビームは 89 区間、およそ 2 時間で自分だけで越えた。
8-268140 から 69550157368.7 分020261020-060340 (流し込み)704130新しいことは無い: ジュゲムとメットと階段の隙間、ビームは自分だけで越えた。
8-370450 から 71800162266.7 分020261020-074156 (流し込み)725730新しいことは無い: 城の壁の上のハンマーブロス、ビームは自分だけで越えた。
8-472620 から 758961752496.7 分020261020-192022 (流し込み)774020ワールド 8 の迷路の関門はマリオが何をしても働き、世界は彼の足もとに残る: そこでの戻りは頁のずれで、関門ごとに一度だけ進みと数え、二度目は死と数える。同じ読み込まれたエリアの中で、入り口より一頁より多く後ろへ出る土管は罠だ。高い土管への登り (隠しブロックを叩き、乗り、跳ぶ) は右へ何も稼がないので、高さで、六ポーリングずつ探してつないだ。

下の図は、どれも一つの面だ: 横から見たマリオの道筋で、横は面の x、縦は彼の高さ。 彼が自分で動いているところは実線、ゲームが彼を留めているところ (土管、歩いて入る ところ、旗竿) は破線で、A を押すたびに点がある (ジャンプ、または水中ではひと掻き)。 その下に、面のポーリングにわたるボタン: Right と Left と B は押している間の棒、 A は押すたびに一本の目盛り。

1-1

ワールド 1-1: マリオの道筋とボタン

最初の版で計画した。それは候補をどれも電源投入から再生し、一つにおよそ十秒 かかった。最初のクリボーに貪欲に歩いて突っ込み、それを取り消せなかった。区間 ごとの後戻りがそれを直し、この面は四回の後戻りとおよそ七十五分かかった。

1-2

ワールド 1-2: マリオの道筋とボタン

保存した状態で計画した最初の面: 候補一つの値段は自分のラッチぶんだけで、およそ 0.6 秒。地下の敵の群れには 5 ポーリングごとのジャンプが要った。出口の土管は マリオを、入るときにおよそ 75 ポーリング、出るときに 96 ポーリング留め、先読み より長い。だから先読みはいま、留められている間も続けて走り、留められた区間は 行き詰まりとしない。

1-3

ワールド 1-3: マリオの道筋とボタン

木の上。先読みの中でだけ死ぬ動きは以前は残され、もう落ちかけている穴へマリオを 確定させた。いまは、動きには生き残る続きが要る。そして最初の通しの再生では、 マリオは面の終わりで生きたまま立っていた: 計画するものは先読みの中で旗竿を 見ていて、その続きをスケジュールに入れていなかった。

1-4

ワールド 1-4: マリオの道筋とボタン

最初の城は斧で終わる: 橋とキノピオのために $0770 が 2 になり、次のワールドで 1 に戻る。計画するものは斧まで行っていたのに、勝ちを知らずにそこから引き返して いた。いまはモード 2 を終わりとして数える。ベンチの最初の試みは始まりで止まった (リセットの後にポーリングが一回だけ、それきり)。やり直しはきれいに走ったが、 その始まりのことは今もわかっていない。

2-1

ワールド 2-1: マリオの道筋とボタン

新しいことは無い: 後戻りなしで計画できた。

2-2

ワールド 2-2: マリオの道筋とボタン

水の中。泳ぎは先に実測した (一定の間隔で叩けばマリオは水面近くに留まり、 16 ポーリングごとならゆっくり沈み、叩かなければ底まで沈む)。そして手間の少ない 間隔の動きとして足した。ひと叩きで項目二つを使う。出口の土管を過ぎると、マリオは 同じエリアの中で、土管より小さな x に降りる。だから、通った土管を x より上に 数えるまで、土管の動きはどれも後ろへ下がるものとして採点されていた。

2-3

ワールド 2-3: マリオの道筋とボタン

新しいことは無い。ベンチの最初の試みは正しく遊んだが、最後のフレームが コンソールの電源を切った後になり (グラバー自身の時間の上限)、数えずにもう一度 走らせた。

2-4

ワールド 2-4: マリオの道筋とボタン

二つ目の城: 斧の規則が持ちこたえた。

3-1

ワールド 3-1: マリオの道筋とボタン

ヘッドの持てる 480 項目を越えた最初のスケジュール: ゲームが遊ばれているあいだ、 ヘッドはポーリング 19990 から流し込み、走行のどのポーリングもログにあって、 正しかった。

3-2

ワールド 3-2: マリオの道筋とボタン

新しいことは無い。流し込みで。

3-3

ワールド 3-3: マリオの道筋とボタン

キノコの台の面で、深さ優先ではできなかった最初の面。x がおよそ 950 のところで、 マリオは低いキノコの上に立ち、ノコノコが向かって歩いてきて、その先には、そこから のどの助走ジャンプでも上に届かない高い柱があった: どの動きも落ちるか、当たった。 先へ行く道は上で、真ん中の台に乗ってそこから渡るものだった。それは x を稼がない ので一度も一位にならず、行き止まりが見えるより何区間も前に捨てられていた。小さな 変更を二つ試したが届かなかった (待ってから跳ぶ四つ目の続き、長くした行き詰まりの 窓)。届いたのはビームだ: --beam 4 は区間ごとに、エリアと x と高さで区別される 一番よい位置を四つ残し、そのすべてを広げる。だから高い道筋が低い道筋の横で 生き残る。区間一つあたりおよそ四倍の手間がかかり、この面を三十分足らずで 計画した。上の道筋は、それまでの面が走ったところを登っている。

ベンチでの最初の走行は失敗したが、計画のせいではなかった: そのポーリングのログは 完璧だった (どのバイトも台本どおりで、抜けも無い) のに、絵はアトラクトモードの ワールド 1-1 を、それからタイトルを映していた。コンソールが途中で勝手に再起動 したのだ。コンソールが自分から振る舞いを乱したのはこれで三度目で (その前に始まりの 失敗が二度)、疑わしいのはカートリッジのコネクタだ。接触が悪いと、ロックアウトの チップがコンソールをリセットさせる。何も変えずに走らせた次の走行が、この面を クリアした。

3-4

ワールド 3-4: マリオの道筋とボタン

三つ目の城で、通しの再生が探索ではなく模型の欠陥のために拒んだ最初の計画。 計画するものは、各区間の前のポーリングの終わりでコンソールを止め、保存し、そこから 区間のボタンを渡す。だが模型の RUN は、そのポーリングが入っているフレームの 終わりで止まっていて、ポーリング 26030 のあたりで、一つのフレームがポーリングを 二つ含んでいた。二つ目はバイトが渡されるより先に過ぎてしまったので、模型はその ジャンプを一ポーリング遅れで遊び、通しの再生と実機は時間どおりに遊んだ: 数ピクセル の違いで、再生ではマリオはポーリング 26101 で、ファイアバーのあいだで当たった。 計画するものが、彼が通り抜けるのを見た場所だ。いま RUN はポーリングそのものの上で 止まり、もう過ぎたポーリングへの AT は、ブリッジが拒むのと同じように拒まれる。 同じ始まりからもう一度計画すると、この面は後戻りなしで通り、実機の上で一度目で クリアした。

4-1

ワールド 4-1: マリオの道筋とボタン

ジュゲムの面で、これまででいちばん長い: 後戻りなしの 51 区間、およそ二十分。 計画するものにとって新しいことは無い。ベンチでの最初の走行はどのポーリングも 正しく遊び、旗竿まで着いたが、最後のフレームはキャプチャカードの空の画面だった: 台本は取り込みを頼んだ十ポーリング後にコンソールの電源を切り、取り込みはそのあとに 着いた。数に入れず、いつもの余裕をとって走らせ直した。

4-2

ワールド 4-2: マリオの道筋とボタン

これまででいちばん難しい面で、計画するものが自分だけでは終えられなかった最初の面。 五つの計画が失敗し、それぞれが何かを教えた:

  1. 深さ優先は最初のパックンフラワーの土管の下で止まった: 先へ行く道はレンガの 棚の上へ登ることで、x は少しも増えない。
  2. ビームは天井の上へ出る道を見つけ、その上を走ってワープゾーンへ入った。そこの 土管はワールド 4 を飛ばしてしまう。いまは一番上の列に立つことを死と数え (--no-ceiling)、ワープも死と数える。ワープとは、面が次の面以外のどこかへ 変わることだ。(ワープの規則の最初の版はゲームのワープの旗 $06D6 を読んでいて、 それは間違いだった: 本当の道筋でも、最後の土管のそばで 1 になる。)
  3. ビームは最後の高い土管で、その横に押しつけられたまま止まった: x だけで順位を つけたので、階段の上を捨てていた。その土管へのジャンプが始まるのは、そこだけだ。 いまはビームの余地の一部が、マリオが立って届いたいちばん高い位置に回される (--beam-high)。
  4. それでも止まり、模型の上で手で探してみてわけがわかった: 階段の上から、12 ポーリング走って A を 30 押し続けると土管に乗るが、それはパックンフラワーが 下がっている間だけで (およそ 36 から 138 ポーリングの待ち)、ジャンプは区間の 終わりをまたぐ。先読みの中のどの進み方もその境目で A を離していたので、 計画するものはそれを短いジャンプと判断した。いまは五つ目の進み方が A を押し 続ける。
  5. ビームはそれから土管の上に着き、またそれを失った。

そこで、その一区間だけは模型の上で手で探した: 階段の上にあるビーム自身の保存した 状態から、上の道筋 (待ち、走り、ジャンプ、それから出口の土管への二度目のジャンプ) を、どの待ちでも、二つの走る長さで試し、生き残る一つをつないだ。計画するものは そこから、出口の土管の外から旗竿まで三分足らずで進んだ (--resume はいま、保存した ビームの状態と、そこへ届いたスケジュールから始める)。電源投入からの通しの再生は スケジュール全体で「WORLD 4-3」まで行き、実機も一度目で同じだった。

4-3

ワールド 4-3: マリオの道筋とボタン

キノコの台と、マリオが乗ると落ちるリフトの面。4-2 のビーム (四つの位置、そのうち 一つは高さのために残す) が自分だけで越えた: 41 区間、およそ 53 分、手で探したところは 無い。始まりの近くで、生きている位置が六つしかなく、そのいちばん良いものも後戻り していたが、ビームはそこから進んだ。電源投入からの通しの再生はスケジュールを 「WORLD 4-4」まで運び、実機も一度目で同じだった。

4-4

ワールド 4-4: マリオの道筋とボタン

最初の迷路。間違った道では、ゲームはマリオを輪の始まりへ戻し、それを二つの場所で 決める: 画面が頁 5 に届くとき、マリオは高いところ、y $40 に立っていなければ ならず、頁 9 に届くときは床の上、y $B0 にいなければならない。この数はゲーム 自身のもので、そのコードが比べる三つの表に入っている。計画するものはいま、それを その比較を通してゲームから読み出す。

  1. 最初の計画は 500 ポーリングのあいだどこへも進まなかった。戻されるとき、 マリオの x は一瞬、頁 $FF を読み、x で順位をつけると、それがこれまでで いちばん先だった。いまは、マリオ自身の操作のもとで一頁より大きく跳ぶことを、 ワープと同じく死と数える。それより前の十五面の再生では、この規則は一度も 働かない。
  2. ビームはそれから下の通路を一つ目の関門まで走り、そこで止まった: 下の通路は 上の通路と同じだけ右にある。高さの枠は、始まりの棚の上にあった。マリオが どこででも立つ、いちばん高い場所だ。
  3. 迷路ではいま、高さの枠は、先読みが次の関門の望む高さでいちばん先まで立つ 進み方に回される。区間の終わりで順位をつけると、上の帯へのジャンプはまだ 宙にあって負けた。先読みで順位をつけると勝ち、ビームは一つ目の関門を自分だけで 越えた。
  4. 二つ目の関門で、ビームはいちばん上の棚で止まった。床の通路へは、ぶら下がった レンガの下にある、真ん中の床の一タイル幅のすき間からしか入れず、右へ走ると その上を越えてしまう。どの先読みも右へ走る。

そこで、その一区間は模型の上で手で探した。棚の上にあるビーム自身の保存した状態から: 真ん中の床へ降り、マリオがすき間の上で止まって落ちるまで 80 ポーリング左へ歩いて 戻り、それから走る。それをつなぐと、計画するものは床の通路から斧まで進んだ。 電源投入からの通しの再生はスケジュールを「WORLD 5-1」まで運び、実機も一度目で 同じだった。

5-1

ワールド 5-1: マリオの道筋とボタン

ワールド 5 はまた外で始まり、キラーとパックンフラワーの土管がある。ビームは自分 だけで越えた: 44 区間、およそ 56 分、手で探したところは無い。電源投入からの通しの 再生はスケジュールを「WORLD 5-2」まで運び、実機も一度目で同じだった。

5-2

ワールド 5-2: マリオの道筋とボタン

地上にはハンマーブロスとパタパタ、下には水へ降りる土管がある。水の中の動き (--swim) も選べるようにしてあったが、ビームはずっと地上にいて、自分だけで越えた: 43 区間、およそ 74 分、手で探したところは無い。電源投入からの通しの再生は スケジュールを「WORLD 5-3」まで運び、実機も一度目で同じだった。

5-3

ワールド 5-3: マリオの道筋とボタン

1-3 と同じ木の上の面に、キラーとパタパタが加わった。ビームは自分だけで越えた: 36 区間、およそ 46 分、手で探したところは無い。電源投入からの通しの再生は スケジュールを「WORLD 5-4」まで運び、実機も一度目で同じだった。

5-4

ワールド 5-4: マリオの道筋とボタン

ワールド 5 の城: ファイアバー、溶岩から跳ねるバブル、そして橋のクッパ。迷路では ないので、ゲームの関門はかかわらない。ビームは自分だけで越えた: 33 区間、およそ 43 分、手で探したところは無い。電源投入からの通しの再生はスケジュールを 「WORLD 6-1」まで運び、実機も一度目で同じだった。

6-1

ワールド 6-1: マリオの道筋とボタン

またジュゲム、今度は夜で、4-1 の階段もある。ビームは自分だけで越えた: 39 区間、 およそ 51 分、手で探したところは無い。電源投入からの通しの再生はスケジュールを 「WORLD 6-2」まで運び、実機も一度目で同じだった。最後のリセットの直後、ヘッドは 最初の二つのポーリングを一度に見て二つ目だけを記録したので、照らし合わせは ポーリング 1 から始まる。スケジュールはポーリング 200 まで 00 を持ち、記録された ポーリングはどれも合っている。

6-2

ワールド 6-2: マリオの道筋とボタン

これまででいちばん長い面: パックンフラワーの土管が並ぶ夜で、そのいくつかの下には 水とボーナスの部屋がある。水の中の動き (--swim) も選べるようにしてあったが、 ビームは地上にいて、自分だけで越えた: 51 区間、およそ 79 分、手で探したところは 無い。電源投入からの通しの再生はスケジュールを「WORLD 6-3」まで運び、実機も 一度目で同じだった。

6-3

ワールド 6-3: マリオの道筋とボタン

夜の灰色の木の上、天びんリフトとキラー。区間の終わりで生きている位置が八つしか 残らなかったことが一度あったが、ビームはそこから先へ進み、自分だけで越えた: 34 区間、およそ 50 分、手で探したところは無い。電源投入からの通しの再生は スケジュールを「WORLD 6-4」まで運び、実機も一度目で同じだった。

6-4

ワールド 6-4: マリオの道筋とボタン

ワールド 6 の城で、迷路ではない。ビームは自分だけで越えた: 31 区間、およそ 43 分、 手で探したところは無い。ベンチでの一度目はどのポーリングも正しく打ったが、画面を 一枚も取り込まなかった: 取り込みは始まってから決まった時間で諦めるので、 スケジュールがここまで長いと最初の一枚はその後になる。制限を上げてもう一度走らせ、 「WORLD 7-1」まで着いた。

7-1

ワールド 7-1: マリオの道筋とボタン

段の上のハンマーブロスとキラー砲台。ビームは自分だけで越えた: 39 区間、 およそ 54 分、手で探したところは無い。電源投入からの通しの再生はスケジュールを 「WORLD 7-2」まで運び、実機も一度目で同じだった。

7-2

ワールド 7-2: マリオの道筋とボタン

2-2 と同じく水の中で、ゲッソーとプクプクがいる。ビームは自分だけで泳ぎ、一区間で およそ 45 ドット進み、それから出口の土管の口に、入らないまま二十区間立っていた。

わけは土管にある。そこを通ってもエリアの番号は変わらず (2-2 の出口は変わった)、 マリオは 138 ドット後ろへ戻される。そして計画するものは、土管を x より上に数えるのを 先読みの中にあるあいだだけにしていた。だから、もう土管を抜けた位置は、手前にいて 先読みが土管に入ったどの位置よりも下に順位付けされ、ビームは口を選び続けた。 いまはどの位置も、自分の道筋が入った土管の数を持ち、その数はエリアと並んで順位に 入る: 通った土管は通ったままにする。土管の手前でビーム自身が残した状態からこの 決まりで再開すると、四区間で抜け、八区間で旗に着いた。手で探したところは無い。 電源投入からの通しの再生はスケジュールを「WORLD 7-3」まで運び、実機も一度目で 同じだった。

7-3

ワールド 7-3: マリオの道筋とボタン

ふたたび 2-3 の橋で、飛んでくるプクプクの下、そのあいだにパタパタがいる。 ビームは自分だけで越えた: 48 区間、およそ 72 分、手で探したところは無い。 電源投入からの通しの再生はスケジュールを「WORLD 7-4」まで運び、実機も一度目で 同じだった。

7-4

ワールド 7-4: マリオの道筋とボタン

ワールド 7 の城で、二つ目の迷路、そして長いほう: 道を間違えるとマリオが戻される ところが、4-4 の二つに対して六つある。計画するものは 4-4 のときと同じように六つとも ゲームから読み出し、ビームはどれも自分だけで越えた: 一度も戻されず、43 区間、 およそ 1 時間、手で探したところは無い。電源投入からの通しの再生はスケジュールを 斧の先の「WORLD 8-1」まで運び、実機も一度目で同じだった。

8-1

ワールド 8-1: マリオの道筋とボタン

ゲームでいちばん長い面: およそ六千ドットのノコノコとメットと穴が、短いタイマーの もとに続く。ビームは自分だけで越えた: 89 区間、およそ 2 時間、手で探したところは 無い。電源投入からの通しの再生はスケジュールを「WORLD 8-2」まで運び、実機も 一度目で同じだった。

8-2

ワールド 8-2: マリオの道筋とボタン

階段の上にジュゲム、下にメットとキラー、階段のブロックのあいだには隙間。ビームは 自分だけで越えた: 48 区間、およそ 69 分、手で探したところは無い。電源投入からの 通しの再生はスケジュールを「WORLD 8-3」まで運び、実機も一度目で同じだった。

8-3

ワールド 8-3: マリオの道筋とボタン

面いっぱいに並ぶ城の壁、そのどれにもハンマーブロスが乗り、あいだにはキラー。ビームは 自分だけで越えた: 46 区間、およそ 67 分、手で探したところは無い。電源投入からの 通しの再生はスケジュールを「WORLD 8-4」まで運び、実機も一度目で同じだった。

8-4

ワールド 8-4: マリオの道筋とボタン

最後の城、そしてビームが自分だけでは越えられなかった唯一の面。ワールド 8 の三つの 迷路の関門はマリオが決して持たない高さを望むので、彼が何をしても、画面がその頁に 届くたびに働く: ゲームは頁の番号を四頁戻すが、世界は彼の足もとに残したままで、 彼はその中を歩き続け、関門の列を過ぎた土管に入る。4-4 のために書いた迷路の規則は この戻りを死と呼び、ビームは二度の走行で一つ目の関門に止まった。ゲームのコードを 読み、模型の上で測って、こうした世界での戻りは頁のずれになり、関門ごとに一度だけ 進みと数える。毎回数えると、ビームは二つ目の区画を四回まわった。その出口が高い 土管で、隠しブロックを叩き、乗り、跳ぶという、右へ何も稼がない三つの動きが要る からだ。その登りと、溶岩のあとの水の土管へのジャンプは、高さで順位をつける 六ポーリングのビーム tools/plan-climb.py が見つけ、4-4 のすき間と同じように ビームの保存した状態につないだ。間違った土管からは、規則がさらに二つ出た: 同じ エリアの中で入り口より一頁より多く後ろへ出る土管は罠だ (ここの間違った土管は どれも頁 1 へ出る)。そしてエリアとは読み込まれているもので、土管がすでに持っている ポインタではない。計画の走行は六回、最終の道筋は 97 区間、計画にかかった時間は およそ八時間。電源投入からの通しの再生は始めたときの残機のまま斧に届き、実機も 一度目で同じだった: クッパは落ち、文字が出た。

ゲーム全体

三十二面、1,752 項目の一本のスケジュールを、走行 20261020-192022 で電源投入から 実機の上で遊んだ: 最後のリセットのあと 77,402 ポーリングをスクリプトと照らし、 間違いは無く、欠けも無く、タイトル画面から姫まで命は一つも失わなかった。それを 見つけた計画するものは、面ごとに学んだことの和で、順に: 動きが死んだら区間ごとに 戻る (1-1)。敵の群れは先読みで間を測り、留められたマリオは行き詰まりではない (1-2)。 先へ行く道が生きているときだけ動きを残す (1-3)。A を叩いて泳ぎ、入った土管は x より 上に数える (2-2)。先へ行く道が上にあるときはビームで探す (3-3)。ビームに高さの枠を 与え、区間をまたいで A を押し続け、ワープは死と呼ぶ (4-2)。城の迷路の関門はゲームの コードから読み出す (4-4)。通った土管は通ったままにする (7-2)。そしてワールド 8 の 城では、戻りは頁のずれで関門ごとに一度、マリオを後ろへ送る土管は罠、登りは高さで 探してつなぐ (8-4)。5-1 から 8-3 まではすべてビームが自分だけで越えた。三十二面の うち三か所を模型の上で手で探してつないだ: 4-2 の最後の高い土管、4-4 の一タイルの すき間、そして 8-4 の二つの登りだ。図はどれも区別して印をつけていない。実機は一本の スクリプトから、開ループで、同じように遊んだからだ。