ゲームのデバッグとかで使えるかな
#ifndef __module_fpstool__
#define __module_fpstool__
//
// ****************************************************
// FPS操作モジュール
// ****************************************************
//
// HSPの定義ヘッダ
#include "llmod3/llmod3.hsp"
#include "llmod3/trackbox.hsp"
//
#module module_fpstool
// 定数
#const _SCREEN_WIDTH_ 300
#const _SCREEN_HEIGHT_ 50
//
// ---   ---   ---
// リセット
// ---   ---   ---
//
#deffunc fps_reset int time, local winid, local px, local py
	// 操作先ID
	winid = ginfo( 3 )
	// 配置すべき座標を取得
	px = ginfo( 4 ) + ginfo( 10 )
	py = ginfo( 5 )
	// 初期化確認
	if ( _INIT_ == 1 ) {
		// 解放
		_cls
		// 利用解除にする
		_INIT_ = 0
	}
	// 初期化確認
	if ( _INIT_ == 0 ) {
		// 利用中にする
		_INIT_ = 1
		// 待機時間を保存
		_TIME_ = limit( time, 1, 300 )
		// 制御画面
		_SCREEN_ = ginfo( 25 )
		screen _SCREEN_, _SCREEN_WIDTH_, _SCREEN_HEIGHT_, 4 + 8, px, py
		title "FPS操作"
		// ボタン設定
		objmode 2, 0
		objsize _SCREEN_HEIGHT_, _SCREEN_HEIGHT_
		// ブレークポイント用
		_BREAKPOINT_ = 1
		// フォント切り替え
		font "Webdings", 20
		// ボタン
		pos 0, 0
		button gosub "", *breakpoint : _BUTTON_ = stat
		// ボタンを再生にする
		gosub *breakpoint
		// フォント設定
		font msgothic, 15, 17
		// トラックボックス
		pos _SCREEN_HEIGHT_, 0
		trackbox _SCREEN_WIDTH_ - _SCREEN_HEIGHT_, _SCREEN_HEIGHT_, 1 + 8 + $100 : _TRACKBOX_ = stat
		// 範囲設定 /  つまみ位置移動
		sel_trackbox _TRACKBOX_
		trackrng 1, 300, 0
		trackpos _TIME_, 0
		// 最前面に
		gsel _SCREEN_, 2
	}
	// 元に戻す
	gsel winid
return
//
// ---   ---   ---
// 同期
// ---   ---   ---
//
#defcfunc fps_sync local winid
	// 操作先ID
	winid = ginfo( 3 )
	// 最前面に
	gsel _SCREEN_
	// つまみ位置取得
	trackpos 0, 1
	// 元に戻す
	gsel winid
	// 待機時間とする
return stat
//
// ---   ---   ---
// ブレークポイント関連
// ---   ---   ---
//
// ユーザー向けブレークポイント
#deffunc fps_breakpoint
	// ユーザー用にわかりやすくする
	fps_breakpoint_stop
return
// 切り替え
*breakpoint
	// 一時停止
	if ( _BREAKPOINT_ == 0 ) {fps_breakpoint_stop}
	// 再生
	if ( _BREAKPOINT_ == 1 ) {fps_breakpoint_play}
return
// 一時停止
#deffunc fps_breakpoint_stop local winid
	// 操作先ID
	winid = ginfo( 3 )
	// 制御画面
	gsel _SCREEN_
	// ブレークポイント切り替え
	_BREAKPOINT_ = 1
	// ボタンを再生に記号に
	objprm 0, "4"
	// 元に戻す
	gsel winid
	// ループ待機
	repeat
		// 待機
		await 30
		// もしポーズ解除されたら抜ける
		if ( _BREAKPOINT_ == 0 ) {break}
	loop
return
// 再生
#deffunc fps_breakpoint_play local winid
	// 操作先ID
	winid = ginfo( 3 )
	// 制御画面
	gsel _SCREEN_
	// ブレークポイント切り替え
	_BREAKPOINT_ = 0
	// ボタンを再生に記号に
	objprm 0, ";"
	// 元に戻す
	gsel winid
	// ループ待機
	repeat
		// 待機
		await 30
		// もしポーズ解除されたら抜ける
		if ( _BREAKPOINT_ == 0 ) {break}
	loop
return
#global
#endif
/////////////////////////////////////////////////////////
// サンプルスクリプト
/////////////////////////////////////////////////////////
	// 初期化
	fps_reset 16
*main
	redraw 0
		color 255, 255, 255 : boxf
		// ★を描画
		gosub *drawstar
	redraw 1
	// 時間調整
	await fps_sync()
goto *main
//
// ★を描画
//
*drawstar
	// 大量にランダムな描画
	repeat rnd( 9 ) * rnd( 99 )
		color rnd( 256 ), rnd( 256 ), rnd( 256 )
		pos rnd( 640 ), rnd( 480 )
		mes "★"
	loop
return