1981年(約年前)のNECのパソコン、PC-6001のお話。
ASCII出版社が出していたAX-5の中の「QUEST」という3次元立体迷路ゲームが秀逸だった。
PC-6001マニアなら誰でも知っている名作である。
東大マイコンクラブの三橋さんの作品。彼がASCIIでバイトをしていたのがきっかけで作った作品だという。
このゲームは、右の地図を頼りに立体迷路の中をさまよっている透明のモンスターに近づいてやっつけるゲーム。敵が見えない分、近づいてきたときの緊張感がたまらない。
見えない敵を見つけ、矢を放ってやっつけると
このように姿を現し、鍵を残して消え去っていく。その鍵を持って地図の右上にたどり着けば1面クリア。
今のパソコンに比べて10000倍以上遅いPC-6001でも快適に動くこの3Dゲームに大興奮したものだ。当時の私達はこのゲームが楽しくて仕方がなかった。
ところが、この頃のゲームは記録媒体がテープだった。特にこのゲームは大作だったこともあり、テープから読み取るのに15分弱もかかった。1つのゲームに15分待ちはちょっと長すぎる。
そこで、このゲームをディスクで起動できたら楽チンだよなあ、と、当時高校生のakkyは思ったのだ。
そこで確認しておきたいのが、PC-6001というマシンのメモリ内部。
PC-6001というPCは8ビットパソコン。使用できるプログラムエリアは標準で16キロバイト、最大で32キロバイトに拡張できた。
プログラムエリアが32キロバイトに拡張できるといっても、実際に使えるエリアは30キロバイト程度。でも、当時はこれが少ないとは思わなかった。
ちなみに、フロッピーディスクを使う場合は拡張BASICというモードで立ち上げる。その際、F900HからF9FFHまでの256バイトがディスクエリアとして使用される。
このディスクエリアはたったの256バイトなのだが、ここをヘタに触るとディスクが止まり、マシンがハングアップしてしまう。 DISKエリアは我々がディスクを使う限り、決して触れてはいけない禁断の場所なのである。
今回話にあがったQUESTというゲームはPC-6001のゲームの中でも大作のうちの1つ。テープからデータを読み込むのに15分かかるというのは先ほど述べた通り。
なぜそんなに長いのかというと
プログラムエリアの8400HからF9FFHまでのすべてを使い切った作品だったからだ。
ところが、ここで問題が発生した。
QUESTはもともとテープで起動するゲーム。8400HからF9FFHまでをフルに使っていた。だから、DISKが使える拡張BASICのときにロードすると
テープの読み込みがディスクエリアであるF900Hに入った瞬間にマシンがハングアップするのである。これではQUEST本体をロードできないため、ディスクに保存できない。
これは困った。とにかくロードが完了しないことには、データをディスクに保存できないのだ。
当然、いろいろ対策を考えた。
プログラムをロードし、ハングアップした後にマシンを通常通りに立ち上げて、メモリの中に残っているデータを復活させるという案。
でも、それでは完全に復旧することが難しい。
ゲームをロード中、ハングアップする直前にstopボタンを押して、そこまでのデータをセーブするという方法も考えた。しかし、stopを押すタイミングがわからず断念。
ある日、神さまからのお告げのようにひらめいた。
「PC-6601モード」を使えばいいじゃないか!
※私が所有していたPC-6601SRはPC-6001モード、PC-6601モード、PC-6601SRモードがあり、事実上3機種分が1台に入っていた。
PC-6001は8400Hからプログラムを読み取るのだが、PC-6601は8000Hからプログラムを読むため、少なくとも1024バイト余裕が出来る。
そう、PC-6001用のこのゲーム、PC-6601モードで読み込んで、プログラムを削ればいいじゃないか!
早速PC-6601モードでプログラムを読むと、一発でロード完了! やったね!
ロードが完了したので、1000バイトぐらいデータを削って、プログラムをフロッピーディスクにセーブ。このままではPC-6601モードなので、いったんPCをリセットし、PC-6001の拡張BASICモードで再起動する。
先ほどセーブしたデータをDISKを読み出し、QUESTを起動すると
できたー!!
本来なら地球の絵になるところの画像が乱れている。そこのデータを削ったからだね。
どうやら、このゲームがやたらに大きいのはこの地球の絵までロードしているかららしい。
テープからフロッピーディスクに移行したおかげでゲームの読み込み時間が15分から15秒に短縮された。
よかったよかった。(^-^)
※この記事は2006/05/15にflash動画としてアップしておりましたが、flashが終了したので再アップです。