まずは初期設定

まず、HspでDirectXを使うのに必要なものを用意しましょう。
  1. Hspの標準セット(当たり前ですね^^;)
  2. DirectX3以上(DirectX5以上が推奨です)
  3. hspdx.dll(拡張dll本体)
  4. hspdx.as(ヘッダファイル)
これ以外にWindows95以上を搭載したパソコンも必要です。っつーかこれが無ければHsp標準命令でプログラミングすることさえできませんが^^;

hspdx.dllhspdx.ashsed2.exehsp2.exe等と同じフォルダに入れておきましょう。これ以外には、プログラム中に描写するBMPファイルなども同じフォルダに置いておく必要があります。まぁこのへんはHsp標準命令と同様です。

HspでDirectXを扱うのに、様々な命令が用意されています。それで何ができるか?ということを整理しておきましょう。大雑把に分類するとこんな感じです。
  • HspでDirectXを扱う為の準備系命令(es_iniやes_bufferなど)
  • 直接画面に描写をする命令(es_boxfやes_mesなど)
  • バッファから画像を転送する為の命令(es_copyやes_zoomなど)
  • スプライト関係の命令(es_newやes_setなど)
実はこれらの中で一番多いのはスプライト関係の命令だったりします。色々なことが制御できるので、やっぱり命令も色々あるわけです。

では最初にHspでDirectXを扱う為のおまじないをしましょう。これはスクリプトの先頭に記述する必要があります。


	#include "hspdx.as"

これによって、hspdx.dllで扱うことができる諸命令が追加されます。お次に初期設定を行いましょう。


;■ DirectX 初期化&チェック
	es_ini
	es_screen 640,480,8,0
	if stat=1 : goto *dxerr1
	if stat=2 : goto *dxerr2
goto *gamestart

*dxerr1
	dialog "DirectXの初期化に失敗しました。",1    : end
*dxerr2
	dialog "スクリーンの初期化に失敗しました。",1 : end
*dxerr3
	es_bye : wait 100
	dialog "VRAMの容量が不足しています。",1       : end

まずes_iniでシステムの初期化を行います。スプライト数の上限(定義なしで512個)やキャラクタ定義数の上限(定義なしで1024個)を変更することもできます。

次にes_screenで画面解像度などの指定を行います。VRAMの容量に左右されるようですが、320x240、640x480、800x600の3つのサイズが対応してるようです。実はプレステなどの家庭用ゲームでは320x240の解像度が限界なので、あれよりもっときめの細かい画面表現が可能ということになります。ただ、その分絵を描くのは大変ですし、容量も食います。自分が目指すクオリティによって解像度を決めましょう。

お次に初期化の成否チェックを行います。でも実はhspdx.dllのバグで、もし初期化に失敗してもこのダイアログは表示されません。何がいけないんだぁ〜(T-T)と泣き叫びながらデバッグを行うことになります。なので「はじめに」でも書きましたが、Sinagawaさんによってデバッグされたhspdxfix.dllを使うことを強くお勧めします。その場合ウィンドウモードで起動して、Hspのデバッグウィンドウを随時参照するようにしましょう。ただ、ウィンドウモードではDirectXの強みである画面描写がものすごく遅くなるので、デバッグする時以外はフルスクリーンモードに戻しましょう。es_screenの第4パラメータに3を指定するとウィンドウモードです。


;■ DirectX 初期化&チェック
;■ hspdxfix.dllでウィンドウモード起動する場合
	es_ini ,,-1 : es_screen 640,480,8,3
	if stat=1 : goto *dxerr1
	if stat=2 : goto *dxerr2
goto *gamestart

*dxerr1
	dialog "DirectXの初期化に失敗しました。",1    : end
*dxerr2
	dialog "スクリーンの初期化に失敗しました。",1 : end
*dxerr3
	es_bye : wait 100
	dialog "VRAMの容量が不足しています。",1       : end

2箇所変更点がありますね。hspdx.dllの2つ目のバグで、パレット番号0が強制的に透明色となる。その上パレット番号0が#000000の黒以外の場合は透過しないというものがあります。私の場合、hspdx.dllを使う前からパレット番号0は黒にしていた為このバグには気がつきませんでした。非常にラッキーだったと言えます。もしパレット番号0に黒以外を指定してしまってた場合、パレットを変更するか、hspdxfix.dllを使い上記のようにes_iniで初期化する時に第3パラメータに-1を入れておきましょう。これで解決。

「はじめに」を読む 改造記メニューへ戻る 次へ進む