ぴゅう太でグラディウスっぽいものを作りたかったが

 ぴゅう太の新作ソフト(カセットテープ)が発売され、しかも完売し、なおかつ週刊アスキーの記事にまでなってしまう。今年は本当に2018年なんだろうか。

かつてぴゅう太でゲームを制作していた私としてもつい触発されてしまい、久しぶりにG-BASICでプログラムを書いてみたのだけれど…感想としては、想像以上に辛かった。

・配列変数が使えない。※ただし、代替手段はある(後述)

・論理演算が出来ない(ジョイパッド入力判定が辛い)

・16ビットの数値の扱いが、0~65535と-32768~32767の2通りの解釈があるせいか、マイナスの値の判定が想定通りに行かない

・スプライトの移動がXY逆だ→ぴゅう太のスプライトはY、Xの順に指定するんだった

など、想定外のことが色々と起きてなかなか動かなかったのだが、試行錯誤の挙句何とか動くようにはなった。

まず、BASICを入力するにあたり、あらかじめ下書きをテキストエディタに書いた。普段の仕事ではそんな事はせず、頭のなかでロジックを組み立てたら直接書き始めるけど、ぴゅう太の場合はテキストエディタが2行分しか表示されないので、さすがに下書きなしだと厳しい。

1 su1=1
10 x=su1
20 y=80
30 inx=su1
50 spd=8
60 ofs=14
70 len=32
100 for 130 i=1 to 31 step 2
110 cell(i)=x
120 cell(i+su1)=y
130 next
150 if time 1=1 then 200
160 goto 150
200 key 1 j,k
201 x0=x
202 y0=y
210 if j<>1 then 230
220 y=y-spd
230 if j<>3 then 250
240 x=x+spd
250 if j<>5 then 270
260 y=y+spd
270 if j<>7 then 250
280 x=x-spd
290 if x<>x0 then 500
300 if y=y0 then 1000
500 cell(inx)=x
510 cell(inx+su1)=y
530 inx=inx+2
540 if inx<=len then 1000
550 inx = su1
1000 anim 3 = post(y,x)
1010 anim 4 = post(y,x)
1020 a=inx
1021 if a>ofs then 1040
1030 a=a+len
1040 a=a-ofs
1050 x1=cell(a)
1060 y1=cell(a+su1)
1070 anim 1 = post(y1,x1)
1080 if a>ofs then 1100
1090 a=a+len
1100 a=a-ofs
1110 x2=cell(a)
1120 y2=cell(a+su1)
1130 anim 2 = post(y2,x2)
1140 goto 150
9999 end

ちなみに、日本語ではなく英語なのは、後期のBASICで書いたから。

アルゴリズム自体はオーソドックスで、自分の座標をリングバッファ(16個)に保存し、オプションの座標を自身の過去の座標に設定するというもの。ちなみに、この座標更新処理を自機が動いたときだけ実行するとグラディウスのオプション、毎フレーム実行するとツインビーの分身が実装出来る。

ただし、ぴゅう太では配列変数が使えないため、BG画面の上一列に数値を書き込むことによって、配列変数の代わりとしている(上段がノイズっぽく表示されてるのはその副作用)。

久々に触ってみた感想としては、かつて自分は、こんな厳しい環境でよくゲームを作っていたなぁと。

当時は、あらかじめノートに紙でプログラムを書き、実際に打ち込むまで何度も何度も書き直していた。しかも、パソコン専用のモニタがなく、家に1台しかないTVを使う必要があったため、実際にプログラミングできるのは土曜の午後に家族が外出している時ぐらい。それまでに、入力すべきものをあらかじめ精査しておく必要があった。

今とは比べ物にならないほど、制約が大きい環境ではあったけれど、逆にそういう環境で創意工夫していたおかげで、それが今の自分の血肉になっているという確かな実感がある。