1981年(約年前)のNECのパソコン、PC-6001のお話。
コンピューターランド北海道(その後、フラッピーで有名なデービーソフトという社名に変更)のビルディングホッパーをご紹介したい。
任天堂のドンキーコングに似ていて、上から落ちてくるボールをジャンプしてよけて最上段に向かうというゲーム。
このゲーム、単純故にかなり面白くて当時は何回も遊んだが、テープで起動するゲームだったため、ゲームをしたいときは読み込みに5分ぐらい待たされた。
それが嫌で、PC-6001の後継機種である、PC-6601SRを買うやいなやこのゲームをフロッピーディスクに入れた。
ところが、不思議なバグに遭遇した。
ミスをすると
なぜか2面に突入する。(偶数面はエイリアンが出てくる。2面以降は床に穴が開く)
さらにミスすると
3面に突入してしまう。(ちなみに、このゲームは面が進む度に床に穴が開く)
これでは面白くも何ともない!と思った高校生akkyだったが、原因がわからない。
ただ違うのは、私が使っているPCが初代PC-6001ではなく、後継機種のPC-6601SRであること。
このPC-6601SRは初代PC-6001も内蔵しているのだが、互換性が100%ではないらしく、ごくまれに互換性問題が発生する(実際にBIOS ROMを見るとかなり書き換わっているのを確認済み)。このゲームがそれに該当したらしいのだ。
そこで私はいろいろ研究した結果、「新しい PC-6601SR の上で初代 PC-6001をエミュレートすればいいじゃないか!!」・・・という謎の境地に達した。
※ここから先はちょっとマニアックみたいです
基本的にPC-6001mk2SR や PC-6601SR はRAMが64KB・・・だと理解してるのだが(左図)
電源を投入して、PC-6001モードを選ぶと本体のメインメモリ64KBに対し(左図)、PC-6001のBASIC ROM(中央図)をバンク切り替えしてあてがったり各種メモリ設定などをして、右図のように「P6モードを再現している」と理解している。
わかりにくいので、すごく簡単に言えば、
PC-6001mk2SR /PC-6601SRのN60-BASIC ROMの裏には、通常は使えない書き込み可能のRAMが隠れている、…といえばいいのだろうか。
で、問題なのは、
この中央図のN60-BASICROM。初代PC-6001と初代以外のPC-6001モードで若干の違いがあるのだ。この部分の新旧の違いから今回の互換性問題が発生した可能性がある。
では、「PC-6601SR上で元祖PC-6001をエミュレート!」を敢行しよう。
あまりにも起動方法が特殊なので、
1)ビルディングホッパー専用のローダー(←ソフトを読み込むツール)を自作する。
あら、行番号を表示しないテクニックを使っておるな笑。
「わたや」というのは、当時私が小学生の頃、このゲームを展示していたお店の名前。
building hopperなんて英語が読めなかった頃なので、呼び名はもっぱら「わたや」だった。
ちなみに、60行目の「BLOAD"P6ROM",0」の部分で、初代PC-6001のROMデータを読み込んでいる。スタートアドレスは当然0000h。
ここにも書いてあるように、バンク切り替えしてやればいいはず、と書いてある。
2)「START RAM」というツールを読み込んでおく。このツールが2つのN60-BASICを一気にバンク切り替えするのだ。
3)パソコンをリセットしてもBASICが復活するツールを読み込んでおく。
4)ビルディングホッパーのマシン語とBASICリストを読み込む。
で、呪文その1の「exec &Hf000」と打ち込むことで、2つのBASIC ROMが入れ替わるはずだ。
さて、やってみると…
じゃーーーーん。 これが元祖PC-6001の起動画面!
・・・といいたいところだが、本当にそうなのだろうか。
よく見ると、
先ほどの画面(斜め上)はコンソール部分が小文字なのに、今の画面はコンソール部分が大文字だ。
初代のN60-BASICは大文字だったんだよね。これで、初代PC-6001が見事起動したことが判明。
で、ここでリストを見てみると、
当然だが何も出ない。
BASICROMを起動する、ということはPCを初期状態にする、というのと同じ意味だからだ。でも、電源を消したわけではないので、メモリの中にはしっかりとデータは残っている。
そこで、さっき仕掛けておいた「BASIC復活」のツールを使ってみよう。2番目の呪文「exec&Hf100」だ。
とりあえず何も変化がない。
でも、listを見てみると
復活してるじゃないか!
で、早速起動させると…
起動したー。
よし、プレイしてみよう。
バグが出ることなくちゃんと最上段に到達できた。
これぞ、PC-6601SR(通称 Mr.PC)を使った、初代PC-6001エミュレートによるビルディングホッパーの完成っ(^^)
※この記事は2006/05/15にflash動画としてアップしておりましたが、flashが終了したので再アップです。