第三十話:移植
翌朝、母の「忠夫、遅れるわよ!」という甲高い声で目が覚めた。
急いで朝食を流し込み、「いってきます」と短く告げて家を飛び出す。
「はい、いってらっしゃい。車に気をつけてね」
背中に母の声を聴きながら、忠夫は自転車に跨った。
千葉の住宅街を抜ける通学路。朝の空気は少しずつ秋の気配を帯び始め、冷ややかな風が火照った頬を撫でていく。
すれ違う同級生たちは、大詰めを迎えたプロ野球の優勝争いの行方や、昨夜の歌番組で話題になったアイドルの新曲について、無邪気に花を咲かせている。街角には、年末に公開される大作SF映画のポスターが貼られている。
その横を風のように通り過ぎる忠夫の頭の中では、今この瞬間も、昨日までに書き上げたテトリスのソースコードが、6502のニーモニックへと猛スピードで、かつ正確に置換され続けていた。
一時間目、数学の授業。
教壇では年配の教師が、黒板に二次関数のグラフをチョークで描き、放物線の性質について淡々と説いている。クラスメイトの多くが退屈そうにノートを取り、あるいは窓の外を眺めて白昼夢に浸っている中、忠夫の手もまた、ノートの端で激しく動いていた。
しかし、彼が刻んでいるのは二次関数の解法ではない。
(……でもただ移植するだけじゃ芸がない。追加機能を仕込もう。そしてファミコンで作るのであれば二人で遊べるようにした方がいい……‥なら対戦機能だ)
当時のパズルゲームは、画面の片隅で一人、ハイスコアを競い合うだけの孤独な遊びだった。
それを、隣り合う人間同士が火花を散らす「対戦ゲーム」へと進化させる。
その実現には、二つの独立したゲーム画面をミリ秒単位のズレもなく同期させる、極めて高度な並列処理が不可欠だった。
だが、今の忠夫の手元には、村坂と共に作り上げた、複数のタスクを並列で、かつ精密に処理できる「リアルタイムOS」がある。
(このOSのマルチタスク制御を使えば、二つの独立したフィールドを完全に同期させて並列稼働させることなんて、呼吸をするより簡単だ。1Pがラインを消したというイベントをOSがキャッチし、それを2P側のスタックメモリへ『攻撃データ』として転送する。1ライン消去ならゼロ、4ライン同時消去なら一気に4段の穴あきブロックを相手の底からせり上げる……)
忠夫のペン先が走るたびに、教科書の余白が「対戦型テトリス」の複雑なフローチャートで埋まっていく。
割り込み処理のタイミング、描画プライオリティの設定、お邪魔ブロックが発生する際の画面の揺れ。それらすべてが、家庭のリビングで繰り広げられる「熱狂」の予感として、ノートの上に実体化していった。
放課後のチャイムが鳴るや否や、忠夫は誰よりも早く教室を飛び出した。
部活動の喧騒を背後に聞きながら自転車を飛ばし、自宅へと滑り込む。
「ただいま!」
「おかえり。早かったわね、忠夫」
「うん、ちょっとやりたいことがあるんだ」
母の声を背中で聞きながら、二階の自室へと駆け上がる。
カバンを床に放り出し、PCの電源を入れた。
ファンの低い唸り音と共に、緑色のプロンプトが暗い部屋を照らし出す。それは、忠夫にとっての世界への窓であり、未来を構築するための唯一の祭壇だった。
「……さあ、始めよう」
クロスアセンブラを立ち上げ、授業中に練り上げたロジックをコードへと変換していく。
当時の常識を遥かに凌駕する、0.01秒の遅れも許されないプロトコルとタスク管理。
忠夫の指は、まるで鍵盤を叩くピアニストのようにキーボードを滑り、6502のニーモニックを次々とメモリ空間へと流し込んでいった。
それから二週間。
深夜、時計の針が一時を回る。静まり返った室内で、唯一、モニターの明かりだけが忠夫を照らしていた。
「……よし、全モジュールの記述完了」
画面には、クロスアセンブラが吐き出した膨大なバイナリデータが並んでいる。
(頭の中では、完璧に動いている。1Pが消した瞬間、お邪魔ブロックが2Pへ飛ぶロジックも、一クロックの狂いもなく組み上げた……。あとは、ICEで動かすだけだ)
忠夫は、バイナリを記録したカセットテープを取り出し、
満足感と、動作テストへの渇望を抱えながら、眠りについた。




