昨日の続き。
ファミベ入手してからは、ひたすらプログラムを作り棄てていました。
作り棄てる、って変な言い方だし、当時は作り溜めていたつもりなのだけど、一度作ったゲームはセーブされ、2度とロードされない感じ。
ファミリーベーシックは、2Kbyte しかメモリがありませんでした。
この中で、作りたい内容を詰め込むと、1日でだいたいメモリいっぱいまで使ってしまう。
中学では部活はやらず、パソコン仲間とゲームを見せ合ったりしていました。
誰とも遊ばない日はゲーム作成。
だから、大体プログラム時間は3~4時間くらい。これでメモリ限界に達するほどメモリが小さい。
あのゲームみたいなの作りたいな、って思ったら、そのゲームの何が面白いのか、自分なりに考えてみる。
大きなプログラムは作れないから、作りたいゲームの中でも特定箇所に絞って真似してみる。
ファミベーはキャラクタは ROM で書き変えられないから、見た目は真似できない。動きをどう似せるか考える。
動きも BASIC で遅いから真似できないなら、遅くても実現できる方法を考える。
「考える」のはいつでもできるので、それこそ1日中。プログラム作業は上に書いたように3~4時間。
これで、ゲーム1本出来上がり。
出来が悪くても良くても、メモリ限界でそれ以上の改良はできません。
もう、毎日すごく小さな目標を立てて、それを実現してみる、というそれだけです。
作ったものは、ゲームのつもりだけどゲームになっていなかったりする。
毎日毎日作っているから、同じような処理もひたすら書き続けます。
写経みたいなもので、毎日書いているとより良い処理方法がわかってくる。
以前作ったゲームは大切に置いてあるのだけど、今日のプログラムより出来が悪いとわかっている。
だからロードして遊ぶことは無い。メモリ限界なので改良だってできないし。
自分でも覚えている、できの悪いゲームを書いておきます。
「夢幻の心臓」をみて、へー、こういうの RPG っていうのか、と作ってみた。
内部的には大きなマップがあって、一部を表示してスクロールする…まぁ、後のドラクエと同じです。
(この時点ではドラクエ発売前)
時々敵が出てきて、戦ったり戦わなかったりする。
でも、この部分の処理がよくわからない。
なんか、敵と戦って自分が強くなったりするんだけど、適当にパラメータ決める。
敵も適当。戦いも、パラメータを元に乱数で「勝った」「負けた」って決める。
友達に遊ばしたら「おめー、RPG ってのはそうじゃねーよ」と。
マップの表示の仕方とか、見た目は真似しているのだけど、重要な部分が全然判って無い。
また別の物。
ロードランナーみたいな「アクションパズル」を作りたい。
でも、パズルって作るの難しい。じゃぁ、良く知られている名作パズルをアクションにしてみよう。
ペグソリティアをアクションゲームにしました。
ペグソリティアって、単純なルールなのだけどパズルとして非常に難しい「名作」ね。
そんな難しいものを、敵から逃げ回ったりしながら解かなくちゃならない。
自分は解き方をわかっていて遊ぶから面クリアできるけど、他の人は誰もクリアできない。
パズルをアクションゲームにすればアクションパズルなのではない、と知りました。
ゼビウスもどきの流行していた時期。自分も似たの作りたいと思いました。
でも、あんなスクロール BASIC じゃできない。
「サイオン」というゲームがありました。
このゲーム、スクロールするのだけど、1画面しかないのね。画面下に消えたものが、すぐ上から出てくる。
これなら作れるんじゃないか。真似します。
BASIC でスクロールはできないけど、一番下の行に何か書けば、1行上にスクロールする。
一番上の行を一番下にコピーすれば、1画面がループスクロールする…
進行方向は本物の逆なのだけど、そんなことは些細な問題だ!
「サイオン」は、画面内の地上物(攻撃してこない)を全部撃つと面クリア。
この部分まで作りましたが、空中物を出す余裕がなくなった。
シューティングゲームなのだけど、地上物しかいません。敵の攻撃もない。
…ロクでもないゲームばっかだな。
それでも、ここら辺のゲームは1日ではできず、2~3日かかった「出来の良いゲーム」のはず。
じゃなきゃ、覚えているわけがない。
とにかく、作ることが楽しかった。出来上がったゲームの質なんて、どうでもよかった。
ベーマガは毎月買って、熟読していたように思います。
欄外の読者投稿欄、OFコーナーも読んでましたし、スーパーソフトマガジン(後にコーナーになる)も読んでた。
他機種のプログラムでも良く読んで、どうすればどんなことができるのか、研究していました。
ある日、FM-7 を持っている友人の家に行ったら、友達がベーマガのゲームを打ち込んでいたんです。
でも、動きがおかしい。エラーが出て止まるならその行に誤りがあるのだろうけど、何が悪いのかわからない。
僕は FM-7 は持ってなかったのですが、リストは読めました。
「おかしな動作」からどこら辺のプログラムが関連していそうかアタリを付け、その付近のリストをよく読みます。
それで、このあたりの変数が間違ってんじゃないかな…と、FM-7 に入っているプログラムと見比べます。
たしか、変数名の 1 と I が間違ってる、とか、すごくわかりにくい間違いだったともう。
持ってもいない機種のプログラムを読んで、バグ修正したので友達に驚かれた覚えがあります。
他に、Beep! も読んでいましたが、お小遣いの都合でこちらは「面白そうな号」のみを購入。後は好きなコーナーだけ立ち読み。
プログラムポシェットも注目していましたが、こちらはほぼ立ち読みのみ。
バックアップ活用テクニックも、ファミコン解析特集の号とかは買いました。今でも置いてあります。
いろんなプログラムを読んで、些細なテクニックに感心する。
それを繰り返して、技術を覚えていきました。
ある時、ファミリーベーシックに「V3」カートリッジが発売されます。
ベーシックは初期型の V1、いつの間にか更新された V2 があって、V3 は別売りだった。
テレビCMでは、V3 でマイク入力を使ったゲームをやっているのね。
すげー、そんなことできるんだ。お店でチラシを貰います。
ところが、チラシにあった命令一覧を見ても「マイク入力」を検知する命令は載っていない。
その、マイク入力プログラムの画面写真が載っていて、ちらっとプログラムも出ていました。
その中に、PEEK(&H4016) という一文があった。これなんだ?
PEEK は、メモリの内容を読み出す命令です。怪しすぎる。もしかしたら…
プログラムを作って実験したら、V2 でもマイク入力が読み取れることがわかりました。
CMを真似たゲームを作って、友達に見せて驚かせます。
プログラムポシェットのある号に、「マシンごっこ」というプログラムが載っていました。
BASIC からメモリに特定の値を書き込み、そこを実行している。名前の通りマシン語プログラムです。
このプログラム、なんと画面が滑らかにスクロールする、というもの。
「マシン語だからこんなことができる」と書かれていたように思います。
すごく気になった。この号に他に欲しい情報はなく、欲しいのは10byte 程度のマシン語の内容のみ。
メモ用紙に鉛筆で書き留めて、家に帰って解析しました。
#今考えると情報万引きです (^^; 当時その意識はなかったのだけど、真似してはなりませぬ。
当時はまだ、マシン語がわかったわけではありません。
でも、ベーマガの Dr.D のマシン語寺子屋に、6502 の主要命令など出ていたと思う。
バッ活の解析記事も参考にしたかもしれない。
結局このプログラム、単に POKE 命令(PEEK の逆)をやっているだけだと判明します。
BASIC で書けるのだけど、この機能の投稿者が、詳細不明のまま人を驚かせようとしてわかりにくい表現をしただけ。
こちらも、「マシン語だから出来る」に対し、BASIC で同じことをやってみせて友達を驚かせます。
とにかく、ファミベーでもそうでなくても、人のプログラムをよく読んだ。
そして、面白くもなんともないプログラムを良く書き散らかした。
プログラム上達のコツは、とにかくたくさんのプログラムを書くことだと思います。
大抵のプログラマーが、上達のコツを聞かれて同じように答えますけどね。
綺麗に書こうと悩むより、汚くても書いて動かしてしまう。
動いたら、もうそれは終わり。綺麗に書きなおそうとかし始めると、疲れるだけだからやらない。
より良い機能を作るより、新しい機能を作る。
1からくみ上げるのは楽しいのだけど、最後の仕上げをするのって疲れるから、楽しいところだけどんどんやっていく。
プログラムって、8割完成で止めておくのがいいです。
仕事だとそうも言ってられないのだけどね。
ファミリーベーシックはメモリが少なかったため、望まずにこれが実現できていたことになります。
当時はもっとメモリが欲しい、と思っていたのだけど、メモリが多かったら同じプログラムばかりいじり続けていて、プログラム上達しなかったかもしれません。
同じテーマの日記(最近の一覧)
関連ページ
ファミリーベーシック V3(1985) ディスクシステム(1986)の発売日【日記 19/02/21】
別年同日の日記
申し訳ありませんが、現在意見投稿をできない状態にしています。 |