es_sync

画面更新とウェイト

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

サンプル逆引き (8)

HSPDX.AS
SSAVER.AS
TEST1.AS
TEST2.AS
TEST3.AS
TEST4.AS
TEST5.AS
TEST6.AS

情報

プラグイン / モジュールhspdx
バージョン0.12
作成日2002/12/01
著作者Sinagawa(original by onitama)
URLhttp://www.onionsoft.net/
備考当プラグインに関する質問、要望などはSinagawaへお願いします。
URL->http://www.diveto.net/zero/
Mail->zero@diveto.net
タイプ拡張命令
グループ拡張画面制御命令
hs ファイルhsphelp\hspdx.hs