画面更新とウェイト
es_sync p1
p1=ウェイト時間(ms) p2=V-BLANK待ちフラグ(0=待つ、1=待たない)
(プラグイン / モジュール : hspdx)
描画された画面を更新するとともに、以前のes_sync命令実行時から経過した 時間を測定して、システム変数statに返します。 p1で、最低でも何msのウェイトを取るかを指定することができます。 p1を省略するか、0を指定した場合は最低ウェイト時間はなくなります。 es_sync命令は、垂直帰線(V-BLANK)を待って画面を更新します。 つまり、最低でも以前es_sync命令が呼ばれてから、1フレーム分の時間はウェ イトが取られます。 1フレーム分の時間は、モニタに出力されている映像周波数にもよりますが、 多くの場合1/60秒程度になっています。これは、多くのビデオゲームや家庭用 ゲーム機が画面更新しているサイクルと同じです。 通常は、es_sync命令のみでウェイトの指定をしなくても、約1/60秒ごとの ウェイトとなります。プログラムの処理が多かったり、画面の書き換えに要する 時間が多くなると、更新が1フレームごとに行なわれなくなる時が出てきて、 動きがガタガタとしたぎこちない、いわゆる「処理落ち」の状態になります。 このような時は、最低ウェイト時間を入れて、画面の更新を2フレームごとに するなどして対処することができます。 また、p1にマイナスの値を入れることで前回の実行で取りすぎたウェイトを できるだけ取り戻すようにすることもできます。 FPSが安定しない場合は こちらを使うことで改善されるかもしれません。 先述の通り、es_sync命令はV-BLANKを待ってウェイトを取りますが、p2に1を 指定するとV-BLANKを待たずに画面を更新することができます。これにより リフレッシュレート以上の速度でウェイトを取ることができますが、画面が ブレたりちらつきが発生しますので、普段は指定する必要はありません。 なお、ウィンドウモードでは基本的にV-BLANKは待ちませんので、ウィンドウ モードで動かすときは必ずウェイトを設定して下さい。 es_sync命令を実行した後には、システム変数statに経過時間が代入されて います。これはプログラムの実行にかかっている時間を計測する最も簡単な 手段です。この数値がそのままベンチマークとなります。
*gmain stick ky,$1f ; キーの情報を取得 if ky&$80 : goto *owari ; [ESC]中断チェック es_cls ; 画面クリア es_draw ; スプライト描画 es_sync ; 画面の更新 await 0 ; Systemアイドル goto *gmain
プラグイン / モジュール | hspdx |
バージョン | 0.12 |
作成日 | 2002/12/01 |
著作者 | Sinagawa(original by onitama) |
URL | http://www.onionsoft.net/ |
備考 | 当プラグインに関する質問、要望などはSinagawaへお願いします。
URL->http://www.diveto.net/zero/ Mail->zero@diveto.net |
タイプ | 拡張命令 |
グループ | 拡張画面制御命令 |
hs ファイル | hsphelp\hspdx.hs |