#include "hspdx.as" ;------------------------------------------------------------------------------- ; ;・hspdx.dllを使ったスクリーンセーバーのサンプル ; ;このソーススクリプトをもとに、packfileにstart.ax, hspdx.bmp ;を指定してスクリーンセーバーを作ってみてください。 ;DirectXを使ったスクリーンセーバーを作る上での注意点は、 ; ;1.プレビューや設定の画面はDirectXを使わないこと。es_iniなどの ; 初期化もしないように。 ;2.スクリーンセーバーは、scrファイルと、hspdx.dllも忘れずに ; \windows\systemのディレクトリに置くこと。 ;3.es_syncの後には、await 0を入れること。これがないと、マウスや ; キーボードの入力があってもスクリーンセーバーから復帰しません。 ; ;です。 ;このサンプルで何か不具合があればお知らせください。 ;------------------------------------------------------------------------------- ; ; スクリーンセーバースタートアップ ; スクリーンセーバー開始時は、以下のスイッチがコマンドライン ; に指定されているので、それによりプログラム処理を振り分ける。 ; /P プレビュー(小さな画面に表示されるモード) ; /S フルスクリーン(実際のスクリーンセーバー画面を実行) ; /C コンフィグ(設定画面を表示) ; s=cmdline:peek a,s,1 ; コマンドラインの2文字目を取り出す if a='p' : goto *sspre ; プレビュー if a='s' : goto *ssproc ; フルスクリーン if a='c' : goto *sscfg ; コンフィグ ; ; コマンドラインがどれでもない時はエラーを表示。 ; HSPスクリプトエディタでためしに実行してみる場合には、 ; HSPメニュー「起動オプション」を選んで、「/s」や「/p」などの ; スイッチを指定してコンパイル+実行をしてください。 ; mes "Unknown switch ["+cmdline+"]" stop *sscfg ; コンフィグ(設定画面) ; このスクリプトでは単にタイトルを表示しています。 ; 実際は、スクリーンセーバーの状態やモードなどを設定します。 ; その場合は、設定を保存しておくファイルを作ってbload,bsave命令 ; などで管理しておくといいでしょう。 ; tt="スクリーンセーバー" title tt gsel 0 width 320,200 cls:pos 4,8 mes tt mes "(HSP screen saver sample version)" mes "copyright 1998 / onitama" pos 220,140:button "OK",*ssend stop *ssend end *sspre ; プレビュー画面 ; ここでは、スクリーンセーバーを選択した時に見える、小さな ; 画面内でのプレビューの処理をしています。 ; プレビューモードでは、HSPのメイン画面(ウインドゥID0)が、 ; プレビュー画面に合わせて小さくなっていますので、まず ; winx,winyのシステム変数で画面のサイズを取得してから、その ; 中に描画するようにしてください。 ; ここでは、単に画像を表示しているだけですが、フルスクリーン ; のスクリーンセーバーがどんな大きさの画面にも対応していれば、 ; winx,winyの値をもとに実際のスクリーンセーバー処理を行なう ; のがいいでしょう。 ; cls 4 color 255,255,255 mes "DirectX saver" stop *ssproc ; フルスクリーン ; ここは、実際に実行されるスクリーンセーバー本体の処理です。 ; ここで描画された内容が、そのままスクリーンセーバーの実行画面 ; となります。スクリーンセーバーからの復帰チェックは行なう必要 ; はありません。スクリーンセーバーの実行中にマウスを動かすと、 ; 自動的に中断され復帰するようになっています。 ; スクリプトエディタから実行された時は、マウスを動かしても復帰 ; しませんので、[ESC]を押して実行を終了させてください。 ; ;------------------------------------------------------------------ ; ; HSPDX.DLL sample2 ; フルサイズの画像を表示。 ; [ESC]キーで終了 ; es_ini ; system初期化 es_debug 1000 ; 初期化時のウェイト(1sec) es_screen 640,480,8 ; スクリーン初期化 if stat=1 : goto *dderr1 if stat=2 : goto *dderr2 bgscr 2,640,480,1,0,0 gsel 0 goto *start ; 正常に完了 *dderr1 dialog {"DirectXの初期化に失敗しました。 "},1 end *dderr2 dialog {"スクリーンの初期化に失敗しました。 "},1 end *dderr3 es_bye wait 100 dialog {"VRAMの容量が不足しています。 "},1 end ;------------------------------------------------------------------ *start buffer 3,,,1 picload "hspdx.bmp" es_buffer 0,2 if stat : goto *dderr3 gsel 0 *sudden stick b,15 ; カーソルキーの情報を取得 if b : goto *owari es_cls gmode 0,640,480:pos 0,0:es_copy 0,0,0 es_sync : await 0 goto *sudden *owari end