とわ君に独り言2(痛)

MSXやエレキギターが好きなおっさんの戯言。妻が白血病で亡くなり、3人の子供達と暮らしてます。昔のブログ→id:TOWA0104

■MSX-FAN 一画面プログラムの切ない思い出■

■昔々、あるところにMSX-FANという雑誌の投稿プログラム紹介ページがあったそうな。
その中で一画面プログラムという横縦40×24内の字詰めで完結させるBASICのコーナーがあってじゃな、
わしも投稿しようとせっせと色々創っておったんじゃ。
しっかし、面倒臭くて一度も応募せんじゃった…■

ってことで、昔のFDがいくつか生きていたので、記念にココにおもひでを記しておきます。
残念ながら、処女作のエスケープシーケンスを使ったレースもどきや、横スクジャンプゲーや、マシン語で2重スクロールさせた壁をビットバイパー(ドットバイパーではない)が避けるゲーム等々複数データがご臨終してましたが、いくつかはここで成仏させてあげたいと思います。
(毎回課題を作り、何か1つ他の人と違う要素を盛り込むつもりで創ってました。)


●ディスマシンブラ機能付き簡易マシン語モニタ「よるのおともに」●
(「に」はVer2の意)

・後述するシューティングゲームもどきを創っていた時に、ハンドアセンブルに疲れ切り、
アセンブラ創ったろかー!」っと、
無謀なことを考えたものの簡単に創れる訳もなく、
たまたま何処か(確かマイコンBASICマガジンだったと…)でディスアセンブラをBASICで創った人がいるのを見掛け、
ディスアセンブラなら創れるのではないかと思ったのですが、
普通に創っても面白くないので、何かアグレッシヴな方法がないかなぁと、
ニーモニックやら何やらの表を死ぬほど見ていた時に、
コード表にある程度の規則性があると気付き、巧く活用すれば面白くなるかなと始めてみたところ、
ニーモニックに対応する必要バイト数のデータを、予想以上に短いプログラムでデータベース化出来たので、
であればマシン語モニタ(既に創っていた短いプログラムの「よるのおとも」)と合体させた一画面プログラムが出来るんでないかと色々苦しんで完成(していない…)させました。
マシン語モニタとしては必要最低限位の機能ですが、指定したアドレスの命令の必要バイト分を横に並べて表示させる(だけの)その名も「ディスマシンブラ機能!!!」を内蔵させています!
(ディスアセンブラ一歩手前の状態と言ったら良いのでしょうか?コード表片手に解析するのが少し楽になります)
今更解析するのもめんどいので、覚えている範囲で簡単に説明すると、

・アドレス指定。
・指定済みアドレスから実行。
・指定済みアドレスに直接入力。
・指定済みアドレスから8バイトダンプし、アドレス値をプラス8する。
・指定済みのアドレスの命令に必要なバイト数分のデータを横に並べ表示し、アドレス値に必要バイト分プラスする。
(各機能はカーソルキーの組み合わせで発動)

と、いう感じの機能があったような気がするようなしないような…です…汗



画面内に、ダンプやら直接入力やらディスマシンブラやらを共存して表示出来るので、デバッグするのに重宝した覚えがあります。
※何十回と必要命令バイト数データを見直してはいますが、どこか微妙に間違っている 可能性もあると思います。


↑これがディスマシンブラ機能です。

個人的には最高傑作でしたが、今創ればもちっとマシになるかと思いますが、今更なんの役にも立たないプログラムですから…。
おそらくですが、後で問題を修正しようとして一画面+1行位になったままのようで、そこで力尽きたようです。
(その後ディスアセンブラは創りませんでしたとさ…トホホ)



マシン語超最低限シューティングゲーム「KIHON(仮)」●

マシン語の一画面シューティングゲームが掲載されていた(確か450バイト位のマシン語だった)のを見て、
もっと少ないバイト数でシューティングゲームとしてギリッギリ成り立つのかを課題にして、必死に考えて挑戦したプログラムです。
(完成したら一画面に納まる程度でバージョンアップするつもりだったけど…)


↑最初の2列は、あえて切れたままの画像で…(どうせ16進データの羅列だしね)
開始アドレスがD000でないのは、プログラムを縮めるためのジャンプ命令の(JRだったかな?)関係で後からサブルーチンを前に移動したからか、データを前に置いたからだと思います。

8方向でなく左右2方向のみ移動に限定した(左右はSTICK値の0と1〜5と6〜8で分岐)り、玉は一発しか出ない自動連射だったり、乱数使わずRレジスタ(だったっけかな)を使ったり、
紙に書いたプログラムとコード表を穴が開く程見返して、更に短くする方法を閃く度ハンドアセンブルを繰り返し、200バイト近くまで減らせたと思います。
(その割にキーボードでもジョイパッドでも遊べるようにはしてます。)
敵は4機で自機に向かって来るので、一発ずつしか出ない弾で交戦して何点まで行けるかだけのゲームです。
(一応ライフ制、1000点ごとに敵の縦移動ドット数が増えて行き、音は「パンッ」という破裂音だけ出してます。)
途中から「よるのおともに」を使ってデバッグが楽になりました。

これも今ならもちっと短くもっとアグレッシヴにゲーム性を上げて創れるのではないかと思います。
(何かウェイト部分とか短く出来そうとかすぐに浮かぶし)
悲しいかな、背景枠の色設定するの忘れて、後からBASIC内で設定してたり、
REM文にせず16進データだったり、色々力尽きた感満載です。

友達や子供達には比較的好評でした。

■まとめ■
他に、MSX-FANに掲載された一画面キャラエディタに対抗心メラメラで、
機能増やした一画面プログラムの8×8や16×16のエディタも創りました…。
無いものは自分で創るDIY精神が、
MSXユーザーには根付いていましたね。

可愛いプログラム達は、これで成仏出来たかな。

■第二弾■→https://onl.bz/5Eciv4U
■番外編■→https://onl.bz/HajP4nR


◆予告なく加筆修正します。◆