1イントの福音スマートフォン用の表示で見る1イントの福音この広告は、90日以上更新していないブログに表示しています。これを機会に、ぴゅう太のプログラミングに興味を持った方々に向けて、元ユーザーの立場から、ささやかながらアドバイスさせていただきたく。※実機が手元にないので、もし間違っていたらごめんなさいぴゅう太のグラフィックスについてぴゅう太のVDPはテキサス・インスツルメンツ社のTMS9918である。色数は少ないながらも、少ないメモリ(16KByte)でシステムを構成できることから、当時MSX、ソードM5、セガSGシリーズ等にも採用された。太のグラフィックは、MSXでいうところのスクリーン2に相当する。8×8ドットのPCG(ぴゅう太では「セル」と呼称)を32×24、計768個が並べられ、全てのセルに対し個別にドットパターンを設定可能。スプライト(ぴゅう太では「アニメ」と呼称)は32個あるが、BASICで制御可能なのは4つのみ。倍角固定であるため、サイズ的には32×32ドットである。太のアーキテクチャとして特徴的かつ一番のアドバンテージであった点として、標準でグラフィックエディタを内蔵していた点が挙げられる。グラフィックエディタで画像を作成し、その画像に対しBASICによりプログラミングで操作する。これは当時としては画期的かつユニークなアーキテクチャであった。当時の多くのパソコンでは、グラフィックの描画を行うために、LINEやPAINTといったBASICのコマンドを駆使し、苦労の割に中途半端な表現しかできなかったのに対し、ぴゅう太ならばグラフィックエディタで時間をかければかけるほど凝ったグラフィックを作ることが出来た。太のBASICコマンドについて前述のグラフィックモードで絵を描き終わり、これ以上編集する必要はないと覚悟を決めた時点で初めて、BASICコマンドを入力するモードに移行することが出来る。(ぴゅう太ではメモリの制約上、一度BASICモードに移行した場合、再度グラフィックエディタに戻るとそれまで打ち込んだプログラムは消去されてしまうため)グラフィックモードからG-BASICの入力モードに移行するには、MODキーから呼び出せるシステムコマンドモードから「GBAS」と入力する。コマンドの正式名称は「GBASIC」であるが、ぴゅう太のコマンドは全て最大4文字で構成されているため、「GBAS」のみ入力すれば良い。゙ツコ」のみ入力すれば良い。太のBASICコマンドは、当時の一般的なBASICを日本語に変換したものにほぼ準ずるが、より簡略になっている。・変数への代入「シキ(LET相当。カンカク<変数への加算値。使用できない(仮に2プレイヤーでの対戦ゲームを実装する場合、同じプログラムを2重に書かなければならない)等の厳しい制約がある。限られたメモリでプログラミングするために、相応のテクニックが必要(後述)。太でのみ使用可能なユニークな機能として、1/100秒単位で計測可能なタイマー割り込みを最大7つまで使用できる機能があった。具体的には、自機と弾を異なる速度で制御しつつ、1秒ごとにタイマーをカウントダウンするといったような処理を簡単に記述することが出来た。太の計算能力ぴゅう太で使用可能な数値はMSXと同様16ビットであるが、MSXが-32768~32767までの範囲を表現できたのに対し、ぴゅう太では「-32768~32767」と「0~65535」との2種類の解釈が可能であった。この矛盾した解釈による弊害として、マイナスの値の掛け算の結果が正常に取得できないという「仕様」が存在した(一見バグっぽいが、理由も含めてマニュアルに表記されていたため、仕様と解釈するのが妥当であろう)。CPUのTMS9995には乗除算命令もあり、加算しか無かった当時の主な8ビットCPUよりは優れていると思われる。実装次第ではワイヤーフレーム程度の3D表現ならば可能であったのではないかと推測される。現代のゲームにおいては、地形コリジョン(当たり判定)を処理するために、表示とは別に専用のデータを持つことが一般的である。メモリが貴重だった時代においては、VRAMに描画されたグラフィックを直接読み込んで判定するというテクニックは一般的であった。太に付属されていたマニュアルには、VRAMを直接読み込む方法は解説されていなかったが、後にユーザーによって発見された。私自身も、当時のマイコンBASICマガジンの余白に掲載されていた投稿「画面を読み取る方法を発見した」を見て、独学でやっとその方法を発見した。この機能が使えるのと使えないのとでは、ゲームデザインに大きな違いが生じる。床や壁を判定できるというだけでも、作れるゲームの選択肢は大幅に広がる。方法自体はさほど難しくなく、<変数名>=セル(<セル番号>)を実行する事により、セルのビットマップパターンを変数に代入することが出来るため、IF(モシ)文による比較が可能となる。当時はこの変数に何が代入されるのか分からなかったのだが、どうやらセルの上位2ライン(上部の16ドット分)のビットパターンが代入されるようである。よって、正しく判定させるためにはグラフィックモードでのデザインを工夫する必要がある。パックマンのようなドットイートタイプのゲームを作る場合、セルの中央にエサのドットパターンを描くようなデザインでは、空白パターンとの区別がつかない。太のプログラミング容量BASICで入力可能な容量は、本体付属のマニュアルには「最大100ステップ前後」と記述されていた。これはプログラムの書式により異なり、ワーストケースでは80行程度で上限に達することもあった。゚ンク」と表示され、それまで入力していたプログラムが化けてしまう。(私の経験では、英字だった変数などがカタカナに化けてしまった。その後リカバリ出来るかどうかは不明)限りあるプログラム容量を有効活用するテクニックとして、「よく使うリテラルを変数として定義しておき、可能な限り変数を参照する」というものがある。10ニイケというように記述するというものである。S0の出現頻度が多いほど、効果は高くなると思われる。手元に実機がないので確認はしていないのだが、当時メーカーから発売されていたBASICのプログラムでこのテクニックが使用されていることから、メモリ節約の効果があると推測される。モトローラ68系や日立SH系のアセンブラでプログラムを書いたことがある人ならば何となく予想できると思うが、16ビットのリテラルを直接表記するよりも、変数を8ビットのインデックスで指定したほうがメモリ消費が少なくて済むとか、おそらくそういうアーキテクチャだったのだろうと推測する。以上をふまえた上で、ぴゅう太のプログラミングを楽しんでいただきたい。読者になるはてなブログをはじめよう!nicomongerさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。