FAQ ~EZ-BASIC編~

Q1 マルチステートメント(特定の区切り記号を入れることで一行に複数の命令を持たせること)はできますか?
A1 マルチステートメントはできない仕様となっています。
Q2 マルチタップには対応していますか?
A2 マルチタップへの対応はしておりません。EZ-BASICで仕様可能なコントローラ端子は1と2のみです。(PS2についているコントローラ端子のみ)
Q3 i-Linkでの通信対戦はできますか?
A3 i-Linkは非対応となっています。
Q4 対応している周辺機器は何がありますか?
A4 対応している周辺機器は次の物があります
・USBマウス
・USBキーボード
・popegg
・"PlayStation 2"専用メモリーカード(8MB)

対応していないのはこちらです。
・popegg以外のプリンター
・携帯電話通信ケーブル
・i-Linkによる通信対戦
・マルチタップ
・DUALSHOCK(PlayStation用)
・ハードディスクドライブ
・USBハブ
・PS用マウス
・その他PlayStation用の周辺機器
Q5 プログラムを書いて、RENUMBERを行なったときにプログラム中に書かれているGOTO文で指定された行番号が新しい行番号に対応していません。
A5 RENUMBERで変更される行番号にはGOTO文の行番号指定は含まれておりません。お手数とは思いますが、GOTO文の行番号を手動で修正していただくか、ラベルをお使いください。
Q6 当たり判定を8つまで設定することができるのですが、それぞれの当たり判定にEZ-BASIC側で違いを設けることができますか?
A6 8つあるあたり判定それぞれに違いを設けることはできません。BASICでは設定されているすべての当たり判定をひとまとめにした状態で、判定されます。

例:当たり判定1を「|」の形で、当たり判定2を「-」の形で作成すると、BASIC側では「+」の形でまとめて当たり判定として認識されます。
Q7 小数点以下の数値をFOR NEXT文などで何度も足していくと徐々に誤差が出るのですが…?
A7 数値はすべて32Bit2進の浮動小数点で扱われるため、10進では精度が6桁程度になります。また、小数点以下の値は精度が悪くなります。このため、このような現象が発生してしまいます。
この現象を回避するためには、加算を行なうときに整数で扱い、最終的な値にするときに除算で小数値にするとよいでしょう
Q8 入門マンガに習ってINPUT文を使ったプログラムを打ち込みましたが、実行した後に、ほかの命令を入れると「入力データが正しくありません。データを再入力してください。」といわれてしまいます。
A8 INPUT文は実行すると、データの入力待ち状態となります。この時、特にカーソルに変化はないため、通常の命令入力待ち状態と区別がつきにくくなっています。この時、INPUT文で指定したデータの形式にそぐわないデータが入力されるとこのような現象が発生します。
例えば、数値の入力を指定したのに文字列(アルファベットなど)を入れるとこのようなエラーが発生します。この場合は、INPUT文による数値入力待ち状態を命令入力待ち状態と間違えてしまったようです。 そのため、命令を入力したときに文字列が入力されたと判断され、エラーが帰ってきたのです。
Q9 EFFECT命令にZ値の設定があるのですが、どのような効果があるのか分かりません。
A9 EFFECT命令は、1フレーム前に表示していた画面をそっくりそのまま一つのスプライトのようなものとして指定した画面の位置とZ値で表示していると考えてください。
このため、EFFECTで設定したZ値よりZ値の大きいモデルやプリミティブがあると、すでに手前に表示されている物があると判断されてその部分は残像が書き込まれません。
Q10 ALTESTの使い方が良く分かりません。
A10 1つのモデルでZバッファ問題が起きている場合など対処法として「ALTEST」命令を使うと言うのがあります。「ALTEST」命令は設定した値よりα値が低いプリミティブやモデルが画面に書き込まれた際にZ値を上書きしません。

【例】
ALTESTが100で設定されているとします。このときZ値=1000のオブジェクトAが描かれているピクセルに新しくZ値=2000、α値=64のオブジェクトBが書かれようとした場合を考えてみます。
まずは通常通り、z値の比較を行い、どちらが手前にあるかの判定を行われます。この場合はオブジェクトBがオブジェクトAより手前にあるため、画像が上書きされることになります。さらにALTESTが設定されていなければ、上書きされたピクセルにはオブジェクトBのZ値である2000が上書きされ、それ以後に書き込みが行われるオブジェクトのZ値との比較に使用されます。
しかし、この場合はALTESTで設定されている100よりα値が低いため、Z値は1000のままとなります。よって、次にZ値が1500のオブジェクトCが書き込まれようとした場合、通常であればオブジェクトBに隠れてしまうのですが、Z値の更新が行われていないため、オブジェクトCが上書きされるようになります。
このように極端な場合ですと前後関係のおかしい表示になってしまうのですが、半透明の板ポリゴンを十字にクロスさせているモデル(CARNAGE HEATのレーザーなど)等をうまく表示する場合に重宝します。
Q11 隠し関数のTEXPAGEの仕様を教えてください。
A11 リファレンスマニュアルの書式にあわせると、このような関数となります。
◆命令
TEXPAGE テクスチャーページが16色か256色かを調べる関数。
◆書式
TEXPAGE(n)
n:テクスチャーページ番号
1<=n<=16

◆返り値
0 nで指定したテクスチャーページが16色である
1 nで指定したテクスチャーページが256色である
Q12 TEXPAGEはどのように使うのですか?
A12 現在メモリ上にあるテクスチャーページで使用している色数が解らないときに使用します。
ユーザー側でしっかりとテクスチャーページの管理をしている場合は使用する機会が無いかもしれません。
Q13 Scroll Lockキーを押すとEFFECTが消えてしまうのですが…
A13 Scroll Lockによるスクリーンは、ユーザーが設定できるz値よりも大きいz値が設定されています。
さらに、EFFECT命令による描画はスクリーンを表示するよりも後に行われます。
よって、スクリーンが表示されている場合は、z値の関係により、EFFECT命令による描画はキャンセルされます。
しかし、透明度を0にするとスクリーンの描画自体がされないため、EFFECTによる描画はキャンセルされずに表示され、残像が発生します。

また、ALTESTを使用して、BSCOLで設定したα値よりも高い値を設定して見てください。
ALTESTにより、z値の更新がキャンセルされ、残像が発生するようになっているはずです。