つぶログ深掘り レトロゲーム

ファミコンの「リセットボタン」は何のためにあった?電源を切るのとは何が違ったのか

ファミコンのリセットボタンは何のため?電源OFFとの違いを仕組みから解説

赤白のレトロゲーム機でRESETボタンを押す様子を描いたイラスト

ファミコン本体には、POWERスイッチのすぐ近くに「RESET」ボタンがありました。

ゲームを最初からやり直したいときに押した記憶はあっても、考えてみると少し不思議です。

最初からやり直すだけなら、一度電源を切って入れ直しても同じなのでは?

それなのに、なぜファミコンにはわざわざRESETボタンが用意されていたのでしょうか。

先に答えを言うと、RESETは「電源を一瞬切るボタン」ではありません。

電源を入れたままCPUをリセットし、ゲームのプログラムを決められた入口からもう一度動かすためのボタンです。

そして面白いことに、ファミコンの内部ではRESETと「電源OFF→ON」は完全に同じ状態にはなりません。RAMにはそれまでの内容が基本的に残り、日本の初代ファミコンでは映像を担当するPPUさえRESETボタンではハードウェア的にリセットされません。

見た目は同じタイトル画面に戻るのに、中で起きていることはかなり違っていたのです。

結論|RESETは電源を切らず、CPUにゲームを最初から実行させるためのボタン

まず、POWERとRESETの違いを大まかに整理するとこうなります。

項目RESETPOWER OFF→ON
本体への電源入ったまま一度切れる
CPURESET状態になり、再スタートする電源投入時の起動処理を行う
CPUが最初に参照する場所RESETベクタRESETベクタ
本体RAM内容は基本的に残る内容は保証されない
PPU(日本の初代ファミコン)RESETボタンではハードRESETされない電源断後に再起動する
カセットへの給電続いている一度切れる
カセットの抜き差ししてはいけないPOWER OFF後に行う

ポイントは、CPUがゲームを始める入口は似ているのに、そこへ到達するまでのハードウェアの状態が違うことです。

任天堂自身はRESETを「誤動作したとき」に使うボタンと説明していた

では、そもそも任天堂はRESETを何のためのボタンとして案内していたのでしょうか。

任天堂が公開しているファミリーコンピュータの公式ハードウェア紹介では、RESETについて次のように説明されています。

誤動作したときに押してください。

さらに、「リセットすると、それまで記録されていた得点等は消去されます」という注意もあります。

つまりユーザー向けには、ゲームが正常に動かなくなったときなどに、電源を落とさずゲームを立ち上げ直すための機能として案内されていました。

もちろん実際には、「もう一度最初から遊びたい」「タイトル画面へ戻りたい」という用途でも普通に使われました。

ただし、RESETボタンを搭載した開発当時の最大の理由が「電源スイッチを保護するためだった」「頻繁な電源ON・OFFから本体を守るためだった」といった説については、裏付けとなる任天堂側の明確な一次資料を確認できません。

そこまで理由を広げず、公式には誤動作からの復帰、ハードウェアとしてはCPUのリセットと考えるのが安全です。

RESETを押すとCPUでは何が起きていた?

ここから少しだけファミコンの中へ入ってみます。

通常のROMカセットを使うファミコンでは、CPUがRESETされると、メモリ上の決められた場所を確認します。

それが「RESETベクタ」です。

アドレスでいうと、$FFFC~$FFFDの2バイトです。

難しそうに見えますが、役割はシンプルです。

そこには、

「RESETされたら、次はゲームプログラムのこの場所から実行してください」

という開始地点が記録されています。

CPUはその住所を読み込み、カセット側に用意された初期化処理へ移ります。

流れを大ざっぱに書けば、

RESETを押す → CPUがRESETされる → RESETベクタを読む → ゲームの初期化処理が動く → タイトル画面などへ戻る

という形です。

ここで重要なのは、RESETボタンそのものに「タイトル画面を表示する」という機能があるわけではないことです。

RESETされたあとに何を表示し、何を初期化するかはゲームプログラム側が決めています。

では、なぜ電源を入れ直しても同じタイトル画面になるのか

RESETと電源OFF→ONが同じように見えた最大の理由がここにあります。

ファミコンのCPUは、電源を入れたときもRESETしたときも、RESETベクタを使ってプログラムの開始位置を決めます。

つまりCPUから見れば、どちらもゲームプログラムの同じ入口へ向かうことができます。

その先でゲーム側がタイトル画面を作れば、プレイヤーから見た結果は同じです。

これだけを見ると、「やっぱり電源を入れ直すのとRESETは同じでは?」と思うかもしれません。

ところが、同じなのはCPUが向かう入口であって、その直前までの本体状態ではありません。

意外な事実|RESETしてもRAMは全部消えていなかった

RESETという言葉から、「本体内部を全部まっさらにする」と想像しやすいですが、実際には違います。

ファミコンのCPUが使う本体内蔵RAMは、RESETボタンを押してもハードウェアによって全部ゼロにされるわけではありません。

RESET後もRAMの内容は基本的にそのまま残ります。

では、なぜゲームをRESETするとスコアやゲーム途中の状態が消えたのでしょうか。

それはRESETボタンがRAMを消したからではなく、RESET後に動き始めたゲームプログラムが、自分で必要なRAM領域を初期化するからです。

たとえばゲーム側が起動時に、

「現在の得点を0にする」

「ステージ番号を最初に戻す」

「敵やプレイヤーの状態を作り直す」

といった処理を行えば、結果としてプレイヤーには「全部消えた」ように見えます。

つまり、任天堂がユーザー向けに説明していた「それまで記録されていた得点等は消去されます」という挙動も、RESETボタンがメモリを物理的に一掃するという意味ではありません。

ゲーム側が残したければ、RESET後にも情報を残せる

RAMがRESETだけでは消えないなら、逆にその性質を利用することもできます。

ゲーム側がRAMの一部を初期化せず、そこに有効なデータが残っていることを確認できれば、RESET前の情報を引き継ぐことが可能です。

ファミコン向けプログラムの初期化でも、RESETをまたいで残したいハイスコアなどの領域は、意図的に消去しない設計ができます。

つまり、

「RESETを押したら得点が消える」

というのはファミコン本体の絶対的なハードウェア仕様ではありません。

ゲームがRESET後のRAMをどう扱うかによって変えられたのです。

さらに意外|初代ファミコンではPPUまでRESETされていなかった

RESETとPOWERの違いをさらに分かりやすくするのが、映像を担当するPPUです。

ファミコン内部では、大まかに言えばCPUがゲームの処理を担当し、PPUが背景やキャラクターなどの画面描画を担当しています。

ところが日本で発売された初代ファミコンでは、本体のRESETボタンを押してもPPUはハードウェア的にはRESETされません。

RESETボタンが直接リセットするのはCPU側です。

それでも画面がめちゃくちゃな状態のまま残らず、普通にタイトル画面へ戻れたのは、RESET後に動き始めたゲームプログラムがPPUを適切な状態へ設定し直していたからです。

開発側からすれば、RESET後には画面描画を止め、PPUの設定を整え、必要な画面データを用意してからゲームを再開する必要がありました。

つまりRESETは、

「本体中のすべての部品を電源投入直後と同じ状態へ戻すボタン」

でもなかったのです。

海外版NESとは挙動が違うので注意

この話を海外サイトで調べると、「RESETするとPPUもリセットされる」という説明が見つかることがあります。

これは必ずしも間違いではありません。

北米などで発売された前面挿入型のNintendo Entertainment System(NES-001)では、RESETボタンによってCPUとPPUの両方がリセットされます。

一方、日本の初代ファミコンや後のトップローダー型NESでは、RESETボタンでリセットされるのはCPU側です。

つまり、日本の「ファミコン」と海外の「NES」を完全に同じ仕様として説明すると食い違いが起きるわけです。

この記事では、日本の初代ファミリーコンピュータを基準にしています。

RESET中もカセットには電気が流れていた

RESETが電源OFFではないことを実感しやすいのが、カセットです。

ファミコンの60ピンカセット端子には本体から+5Vが供給されています。

しかし、このカセット端子には本体RESETボタンをそのままカセットへ渡す専用のRESET端子がありません。

つまりRESETを押したからといって、カセットへの電源供給まで止まるわけではありません。

RESETを押している間も、カセットは本体から給電された状態です。

そのため、

「RESETを押しているなら安全にカセットを抜いていい」

ということにはなりません。

カセットを交換するときは、RESETではなくPOWERをOFFにする必要があります。

ではPOWERを切るとRAMは完全にゼロになる?

RESETではRAMが基本的に残る一方、POWERをOFFにすれば本体RAMへの電力供給は失われます。

通常の作業用RAMは揮発性なので、電源を切ったあとまで内容が保証されるものではありません。

ただし、ここでも「スイッチをOFFにした瞬間、全ビットが同時に完全な0になる」と考えるのは少し単純すぎます。

実際の電子回路では電圧が低下するまでに時間がかかり、ごく短時間で再び電源を入れた場合などは、完全なコールドスタートと同じ状態にならないことがあります。

したがって比較するときは、

RESET:RAM内容は基本的に維持される

POWER OFF:RAM内容の維持は保証されない

と考えるのが一番正確です。

バッテリーで保存したセーブデータはRESETすると消える?

ここで気になるのが、『ドラゴンクエストIII』などで使われたバッテリーバックアップ式のセーブです。

これもRESETしただけで自動的に消えるわけではありません。

バッテリーバックアップ対応カセットには、本体の電源を切ったあともカセット内部の電池によって内容を保持するためのSRAMが使われていました。

そのため通常のRESETは、セーブデータを消去するための操作ではありません。

「ゲーム中の一時的な状態」と「電池で保持しているセーブデータ」は分けて考える必要があります。

では「RESETを押しながら電源を切る」のは何だったのか

ファミコン世代なら、ここで別のRESET操作を思い出すかもしれません。

「RESETボタンを押しながら電源を切ってください」

バッテリーバックアップ対応ゲームの一部で使われていた、あの独特な操作です。

これは今回説明している「ゲームを再スタートするためのRESET」とは、RESET機能の使い方が少し違います。

電源を切る前にCPUをRESET状態へ置き、電圧が不安定になる瞬間にセーブ用SRAMへ意図しない書き込みが起きる危険を減らす意味がありました。

つまり、RESETするとカセットへの電気が止まるから安全だったわけではありません。

CPUを先に通常のプログラム実行から外してからPOWERを切ることに意味がありました。

この仕組みについては、別記事の「リセットを押しながら電源を切ってください」はなぜ必要だった?ファミコンのセーブデータが消えた本当の理由で、セーブ用SRAMと電源断時の挙動まで詳しく検証しています。

なぜPOWERだけでなくRESETまで必要だったのか

ここまで仕組みを見ると、2つの操作にはきちんと役割の違いがあったことが分かります。

POWERは、ファミコンそのものを使い始めたり終了したりするためのスイッチです。

RESETは、本体への電力供給を維持したまま、CPUにゲームの起動処理をやり直させるためのボタンです。

ゲームが誤動作した。

タイトルへ戻したい。

最初からやり直したい。

そんなとき、本体の電源を完全に落とさなくてもCPUだけを再スタートさせられます。

任天堂自身もRESETを「誤動作したときに押してください」と案内していたので、少なくともユーザーにとってはゲームを正常な開始状態へ戻すための独立した操作だったと考えてよいでしょう。

一方で、「電源スイッチの寿命を延ばすためRESETを付けた」といった開発理由については、確認できる一次資料がありません。

RESETが便利だったことと、その理由で任天堂が搭載したと断定することは別の話です。

RESETとPOWER OFFは、見た目以上に違っていた

最後に、両者の違いをもう一度整理します。

RESETでも、電源を入れ直しても、多くのゲームでは同じタイトル画面へ戻ります。

CPUがどちらの場合もRESETベクタを参照して、ゲームの起動処理へ入るからです。

しかし、その時点の本体内部は同じではありません。

RESETでは電源が維持され、RAMの内容は基本的に残っています。

日本の初代ファミコンなら、PPUも本体RESETボタンではハードウェア的にリセットされません。

カセットへの給電も続いています。

それらをゲームプログラム自身が必要に応じて初期化することで、プレイヤーには「電源を入れ直したのと同じように」見えていました。

つまり、ファミコンのRESETボタンを一言で表すなら、

「電源を切らずに、CPUへゲームのスタート地点からやり直させるためのボタン」

です。

そして実際の仕組みを知ると、あの小さなボタンは思っていた以上に面白い存在でした。

RESETしてもRAMは消えていない。

映像側まで全部リセットされるわけでもない。

それでもゲームは何事もなかったようにタイトル画面へ戻る。

子どものころ何気なく押していたあのボタンの裏では、ハードウェアとゲームプログラムが役割を分けながら「最初から」を作り直していたのです。

-つぶログ深掘り, レトロゲーム
-, , , ,