過去ログ

[500]レス
Sinagawa 2005/02/08 00:28:17>あおぽんさん
考えられる原因としては突然タイマー精度が落ちるか、あるいは気づかないうちに無駄な処理が
大量に実行されているかじゃないかと思うのですが、ちょっとよく分からないです。
>たかのんさん
現状ですとes_boxfは画面モードに色を合わせるために行われる、一般に劇遅といわれるVRAMへの
読み込みに時間を取られるのですが、es_fillだとそれが無くなるため確実に速くなります。

[499]es_fillはどうなんでしょう?
たかのん 2005/02/07 23:58:23そういうことであれば大人しく0.16が出るまで待ちますか・・・。
ちなみにマニュアルを改めて読んだらes_fillは速度的に優位とありましたが
実際のところはどうなんでしょうか?

[498]FPSについて
あおぽん 2005/02/07 22:25:24大体30程度を保っているのが、
突如14に落ち込んで、処理が遅くなります。

[497]es_cls
Sinagawa 2005/02/07 01:09:54ベンチマークを取ってみたところ、フルスクリーンでは大差ないですがウィンドウモードだと
それだけで1〜2ms時間を取られてしまうようです。
なので、es_clsは初期化後のサーフェスクリアに2回実行して、後は状況に応じて使い分けるのが
よいと思います。
ただ、次のバージョンではes_boxf共々高速化されるので特に気にしなくてもよくなるはずです。
#参考までに、Direct3Dスプライト描画の見直しを含め約2倍(当社比)高速に動作しています。

[496]ガーン、es_clsって遅かったのか・・・
たかのん 2005/02/06 15:08:21画面クリアのためにメインルーチン内で毎回es_clsしてました・・・ぁぅ。
黒(≠0,0,0)でベタ塗りした画像をes_copyのがいいってことですかね?

[495]Re:処理速度
Sinagawa 2005/02/06 01:21:58>特に処理速度の遅い命令はありますか?
HSPDXFIXの話だと思いますが、頻繁に実行されるような部分で使わない方がよいのは
es_boxf命令と、内部でes_boxfを呼び出しているes_cls、es_mes&fmes命令、それからes_xfer命令で
Direct3Dバッファとやりとりする場合当たりでしょうか、挙げるとすれば。
>あとFPSが安定しないのですが、
処理自体は間に合っていると仮定して、もしawaitでタイミングを取っているのなら
es_syncでタイミングを取るようにした方がウェイトは安定します。

[494]処理速度
あおぽん 2005/02/03 18:30:05特に処理速度の遅い命令はありますか?
あとFPSが安定しないのですが、
非常に抽象的ですみません

[493](無題)
水砂 2005/02/03 14:08:37遅レスですが
一度新しいDLLのほうを使用して、スクリプトも重要な部分だけ
動作チェックで不具合が出ないように構文しなおしてみます
ダメだったら0.15でやってみますね
忙しい中、色々とありがとうございました

[492]レス
Sinagawa 2005/02/02 15:16:47>書き忘れてしまった要望なんですが、
>es_find命令にもes_exnewのように検索開始、終了値
>増分を指定できるようにできないでしょうか?
(そろそろできるうちにやっておかないと忘れそうなので)実装しました。
次のバージョンでサポートされます。

[491]Re:Re:報告
O2K 2005/02/01 20:24:18レスありがとうございました。
書き忘れてしまった要望なんですが、
es_find命令にもes_exnewのように検索開始、終了値
増分を指定できるようにできないでしょうか?

[490]Re:報告
Sinagawa 2005/02/01 10:02:45>es_fill、es_boxf命令において初期化した画面サイズを
>超える範囲で描画を行うと命令が反映されません。
>例えば640×480で初期化した場合、es_boxf 0,0,640,480
>とすると画面に反映されません。
es_fillとes_boxfはクリッピングがないことと、Ver 0.15beta5以前ではそのように
指定すると(0,0)-(639,479)に描画されていたのを(0,0)-(640,480)に描画するように
変更したために起きたものです。
次のバージョンでクリッピングするようにしておきます。
>es_size命令でヒットチェック領域を設定すると画像の左上
>から領域が設定されます。
>例えばサイズ100×100、チェック領域50%とすると
>(0,0)-(50,50)という範囲の当たり判定になってしまいます。
回転を考慮しない場合の当たり判定の計算式に誤りがありました。
次のバージョンで修正しておきます。
>es_syncの第2引数を1にしても環境によっては反映されない
>ことがあるようです。
Ver 0.14まではVSYNCを待たない場合、es_xferに相当する方法で画像を転送していましたが、
beta1以降はFlipにVSYNCを待たないようにパラメータを渡して行っています。
この方法だとグラフィックボードによっては正常に動作しないようです。
以前の方法と選択できるようにしておきます。

[489]報告
O2K 2005/02/01 00:09:27はじめまして。
hspdxfix重宝させていただいています。
いくつかバグ?らしきものがあったので報告させていただきます。
es_fill、es_boxf命令において初期化した画面サイズを
超える範囲で描画を行うと命令が反映されません。
例えば640×480で初期化した場合、es_boxf 0,0,640,480
とすると画面に反映されません。beta3までは正常に動作
していましたが、beta5(beta4では試していません)から
このような状態になってます。
es_size命令でヒットチェック領域を設定すると画像の左上
から領域が設定されます。
例えばサイズ100×100、チェック領域50%とすると
(0,0)-(50,50)という範囲の当たり判定になってしまいます。
これもbeta5からでして、beta3ではこのようにすれば
(25,25)-(75,75)という範囲になっていたと思います。
これは以前[469]で取り上げられていたのと関係するのですが
es_syncの第2引数を1にしても環境によっては反映されない
ことがあるようです。(hsp2.66に同梱されていたhspdxでは
このようなことはありませんでした。)
[469]でes_sync 17,1でfpsが61になることがあるというのは
第2引数が反映されず且つモニターのリフレッシュレートが
60Hzになってるためと思われます。
長文失礼しました。

[488]Re: レス
hira 2005/01/30 17:40:43>> ・es_buffer命令の第三引数(透明色の指定)
> 既知問題となっています。
失礼しました…。
>> ・HSPDX.HSを入れたら、helpman.exeで強制終了
> mkindexでインデックスの再作成をしないといけません
申し訳ありません。再作成していませんでした…
再作成したところ、HSP HELP Browserで正常に使えました。
>> es_xfer XXX,-1が動かない
> 多くのグラフィックボードが画面バッファからオフスクリーンバッファへの
> 透過コピーをサポートしていないようです。
おっしゃる通り、「gmode 0」を入れてみたところ、動作しました。
色々と失礼しました。

[487]レス(2/2)
Sinagawa 2005/01/30 13:22:40(続き)
>そして要望なのですが、es_draw命令で、描画先IDを指定できるようには
>なりませんでしょうか。
少し調べてみますが、現状ではDirect3Dが描画先を変更できないためにほぼ
意味をなさないため、サポートする予定はありません。
es_xferが動かない件は、自分もK-sさんのレスを見るまで忘れていたのですが、
多くのグラフィックボードが画面バッファからオフスクリーンバッファへの
透過コピーをサポートしていないようです。そのため、「gmode 0」を入れれば
動作するようになるかと思います。
(これまでes_xfer関係の質問に対しグラフィックボード依存の問題と決めつけて
いましたが、こちらの確認漏れでした。すみません。それから、情報提供ありがとう
ございます>K-sさん)
なお、これについては次のバージョンで指定しなくてもよいように変更する
つもりです。
>まいざーさん
Ver 0.15に同梱のサンプルや#481で掲示したスクリプトと比べて明らかに
動作が遅いため、最初HELで動いているのではないかと思ったのですが、調べた
ところVRAMに取られたバッファに画像が格納されていることからそうではない
ようで、なぜこのスクリプトに限ってそのような現象が起こるのか現在のところ
はっきりとした原因は分かっていません。

[486]レス(1/2)
Sinagawa 2005/01/30 13:22:14>水砂さん
検証結果の報告ありがとうございます。
パラメータの違う部分についてはいずれも内部では使用されていない部分ですので、
これについては動作に影響を及ぼしている可能性は低いと思われます。
ダンプされたパラメータは正常に表示されているスプライトNo.0(レーザー)の
もので、スクリーンショットで確認できるサイズや角度の間違ったスプライトの
パラメータは(確認をとるのは大変手間がかかりますが)おそらく正常な値を保持
していないと思います。
>本日別PCで製作中のものを動作確認してきました。
>グラフィックオンボードPCでの動作:正常動作確認
>RADEONシリーズPCでの動作:正常動作確認
>でした
>この結果から、私のPC環境依存の可能性が出てきました
以前にも特定の環境下でes_draw実行時に強制終了する旨の報告を頂いたことが
あるのですが(参照:#409〜413)、どうもHSP2.61+HSPDXFIX0.15beta3以降の組み
合わせはメモリ周りがシビアになる傾向にあるのかもしれません。
>hiraさん
>・es_buffer命令の第三引数(透明色の指定)で、ウィンドウモードの時のみ
> $RRGGBBではなく$BBGGRRの順で指定しないと上手くいかない。
> (フルスクリーンモードでは$RRGGBB指定で上手くいく。)
> また、環境によってはウィンドウモードで$BBGGRRと指定しても上手くいかない
> こともあるようです。
24bit以上の時にピクセルフォーマットの違いを無視しているせいで、
es_bufferには言及していませんが一応既知問題となっています。
>・HSPDXFIX_beta5同梱のHSPDX.HSを入れたら、helpman.exeで強制終了されるように
> なってしまいました。
こちらでは正常に使えていますので、原因は分かりません。基本的にヘルプを
差し替えたときはmkindexでインデックスの再作成をしないといけませんが、
そちらは行っていますでしょうか。
ただ、かなり前からhs_write.exeを使って編集しようとすると強制終了したので、
ひょっとしたら壊れているのかもしれませんが。
参考までに、こちらではHSP HELP MANAGER FX(http://sprocket.babyblue.jp/
注:現在はHSP HELP Browserに変わっている模様)を使っています。
(容量制限に引っかかったので残りは次に)

[485]es_xferの件について
K-s 2005/01/29 20:33:34あれからいろいろ実験してみたところ、
「"gmode 0"で、コピーサイズ384x384以下」で正常に動作しました。
お騒がせしてすいませんでした。

[484]Direct3D描画で
まいざー 2005/01/29 20:12:16某匿名掲示板とのマルチポストですがどうかお許しください。
DirectX系のHSPプラグインでどれを選ぼうかと検証しておりまして、
複数のプラグインで同じような処理をさせて、速度を計ってみたのですが
HSPDXFIXに関して「Direct3D使用時だけ」落ち込みが極端に激しく、
(DirectDrawは非常に高速でした)3Dに強いビデオカードを使用した
環境でも、著しく速度が落ちてしまいました。
個人的には、機能が揃っていて使いやすいHSPDXFIXを使いたいと
思っているので、単純にスクリプトに問題があるのか、若しくは設定
しだいで普通に動くかもと思い、こちらに投稿させて頂きました。
以下がスクリプトです。「hspdxfix3D.as」が該当ファイルです。
描画面積にかかわらずスプライトが増えると極端に遅くなるので
何か私の間違いな気がします。
http://pegmyzer.hp.infoseek.co.jp/dxtest.zip

[483]バグ?&要望
hira 2005/01/29 19:53:35こんにちは。いつもお世話になっています。
今回はバグのようなものを2つと、要望を1つ、書き込ませていただきます。
・es_buffer命令の第三引数(透明色の指定)で、ウィンドウモードの時のみ
$RRGGBBではなく$BBGGRRの順で指定しないと上手くいかない。
(フルスクリーンモードでは$RRGGBB指定で上手くいく。)
また、環境によってはウィンドウモードで$BBGGRRと指定しても上手くいかない
こともあるようです。
・HSPDXFIX_beta5同梱のHSPDX.HSを入れたら、helpman.exeで強制終了されるように
なってしまいました。
そして要望なのですが、es_draw命令で、描画先IDを指定できるようには
なりませんでしょうか。
描画先IDが指定できない現状ですと例えば、スプライトを描画する320*240の
画面を2倍に引き伸ばして640*480で表示する、ということをするには、
es_xfer -1,XXX を使ってオフスクリーンに移した後、es_zoomで2倍にして戻す、
とするしかないようですが、es_xfer -1,XXX が環境によって使用できない場合が
あるということで(私の環境でも使用できません)、これが実現できません。
それでは、もしお時間があれば、是非検討していただきたいと思います。
長文失礼しました。

[482]検証結果
水砂 2005/01/28 20:41:33検証結果報告します
本日別PCで製作中のものを動作確認してきました。
グラフィックオンボードPCでの動作:正常動作確認
RADEONシリーズPCでの動作:正常動作確認
でした
この結果から、私のPC環境依存の可能性が出てきました
>大部分が表示されていないのが気になるものの、表示されている画像についてはサイズや角度のみが異常で
>位置は正常に見えるところからパラメータが壊れているのではないかと思います。
es_iniの周の精度をいじると、見えていなかった部分の画像がやはり歪んで出てきました
表示はちゃんとされているようです
たしかに角度が異常のようですね…
わざわざ検証用にサンプルを出していただきありがとうございます
クリッピングあり、なしの検証の結果
>実行すると青い機体(自機)と赤い機体2機が表示され、1機はレーザーを出しながら反時計回りに回転、
>もう1機が自機の方向を向いて時計回りに回転しながら弾をばらまく様子が表示されれば正常です。
の通りに動作しました。
しかし、スクリーンショットを見るとわかりますが、弾が崩れていたり
クリッピングなしの状態時赤透過の場所に自機を持っていっても透過されていません
また、いくつかのパラメータが違っているようです
http://qurival.hp.infoseek.co.jp/pc/kensyo.jpg(クリッピングあり
http://qurival.hp.infoseek.co.jp/pc/kensyo2.jpg(クリッピングなし

[481]レス
Sinagawa (http://www.diveto.net/zero/junk/rolltest.lzh) 2005/01/28 13:04:15>水砂さん
スクリーンショットを拝見しました。
大部分が表示されていないのが気になるものの、表示されている画像についてはサイズや角度のみが異常で
位置は正常に見えるところからパラメータが壊れているのではないかと思います。
でもこれだけでは確証が取れないので、beta4配布時に同梱したサンプルに少し手を加えたものを
用意しました(上記リンク)。
実行すると青い機体(自機)と赤い機体2機が表示され、1機はレーザーを出しながら反時計回りに回転、
もう1機が自機の方向を向いて時計回りに回転しながら弾をばらまく様子が表示されれば正常です。
このサンプルでは文字以外の画像すべてをDirect3Dで描画しています。
正常に動いている状態のスクリーンショットはこちらです。
http://www.diveto.net/zero/junk/rolltest_clipped.jpg (クリッピングあり)
http://www.diveto.net/zero/junk/rolltest_unclipped.jpg (クリッピングなし)
また、画面の左右にはスプライトパラメータのダンプが表示されていますが、このうち常に変動するのは
11,12,29の3つのみで、その他のパラメータについてはスクリーンショットと同じ値が出るはずです。
試しにこれを実行してみて、結果を教えてください。
本当は過去バージョンのHSPDXFIXもあるとよかったのですが、あいにく手元にはありませんし、
Webアーカイブには放置期間中のサイトしか保存されていなかったので・・・。
>ふと思ったのですが、回転等の機能を使う場合は縦横サイズを同じにしなければならないといった制約はあるのでしょうか
上記サンプルでは縦長の画像を回転していますし、過去のバージョンで同梱したサンプルについても
HSP本体に同梱のhspdx.bmp(640×480)を使用し、問題が発生していませんのでそのような
制約はないはずです。

[480]レスどうもです
水砂 2005/01/28 04:15:46>ビューポートの設定に失敗するのはクリッピング領域(es_windowやes_clip)が画面外に及んでいるのが
>主な原因ですが、その当たりは問題ないでしょうか。
当方0.15のヘルプだったためes_clipを見落としていたようです、というわけで実験。
es_windowの次にes_clipを追加してみました
es_window 0,0,640,480:es_clip 0,0,640,480
最初はこれでやってみましたが、記述の無かった時と動作が同じでした
そこで気付いたのが0ピクセルからということ…orz↓を試しにやってみました
es_window 0,0,639,479:es_clip 0,0,639,479
実行してみると、背景として登録してあるスプライトが正常に動作しました
デバッグのビューポートの問題もきれいさっぱりなくなっていました
しかし、それ以外のスプライトはまだひしゃげたり、回転していたりと様々です
ふと思ったのですが、回転等の機能を使う場合は縦横サイズを同じにしなければならないといった制約はあるのでしょうか
もしそうだとしたらひしゃげているものは当てはまります、縦横サイズは同じではありません
ただ、今の所そういった機能はほとんど使用してないため(使っても半透明合成)使用されている部分は少ないです
>できればで結構ですので、参考のためにスクリーンショットを見せていただけるとありがたいです。
SSのURLはここに置いておきます
http://qurival.hp.infoseek.co.jp/pc/ijou.jpg(beta5,beta6でも同様でした)
http://qurival.hp.infoseek.co.jp/pc/seijou.jpg(0.15)
なにかトンチンカンなことをしてそうで怖いのでビシっと言ってやってくださると助かります
使用されている命令はes_clip以外は0.15の命令のみです
ちなみにグラフィックがGforceなので既知の問題もちゃんと発現しております
長文失礼しました

[479]レス
Sinagawa 2005/01/27 23:17:09>水砂さん
レス遅れてすみません。
ビューポートの設定に失敗するのはクリッピング領域(es_windowやes_clip)が画面外に及んでいるのが
主な原因ですが、その当たりは問題ないでしょうか。
その他の不具合に関してですが、何かまずいことになっているのは確かなようですが
原因などはちょっと分かりかねます。
できればで結構ですので、参考のためにスクリーンショットを見せていただけるとありがたいです。

[478](無題)
水砂 2005/01/25 20:36:14お初です。
現在hspdxfixを使わせてもらっています。
そこで相談なんですが、バージョン0.15でRPGを製作中
新機能を試そうとbeta5を導入し、実行してみたのですが
それまでに配置されていたスプライトがバラバラに表示されてしまいました。
具体的に言うと、一つ一つが様々な方向(一定方向?)に回転してしまい
描画のされていない真っ黒な背景が見える状態になるということです。
beta5までに更新された追加部分で、なにか設定方法が変わって
このような状態になっているのかもしれないのですが
原因がわからないためお知恵を貸していただきたいです。
Direct3D描画を使用しています。
debug.txtで目立った部分ですが
DDSetViewPort : ビューポートの設定に失敗
という文章が何十行も出ています。
時間が経つとHSPが強制終了します。
現在は問題なく動作する0.15で作業を進めていますが
回転関係の機能が少々必要になるかもしれないため書き込みしました。
結局はそのまま作ってしまうか、最初から作り直せばいいのでしょうけどね…
それでは、どうかよろしくお願いします。

[477]レス
Sinagawa 2005/01/24 00:11:58>>-2は各種描画命令の描画対象になる方のバッファを指します。
>このバッファをこちら側から指定して、オフスクリーンバッファにコピーするというこはできないのでしょうか。
あくまでもes_xfer命令はDirectX専用に用意されたバッファ同士で画像をやりとりするための
ものですので、例えばHSPのバッファなどとやりとりしたい場合はes_getbuf命令とes_buffer命令を
組み合わせるしかないです。

[476]Re:レス
K-s 2005/01/23 21:00:59レスありがとうございます。
グラフィックボード固有の問題は辛いですが、別の方法を探ってみようと思います。
>-2は各種描画命令の描画対象になる方のバッファを指します。
このバッファをこちら側から指定して、オフスクリーンバッファにコピーするというこはできないのでしょうか。

[475]レス
Sinagawa 2005/01/22 21:42:36>HSPDXFIX0.15beta5のes_expat命令を、一箇所だけ既存のex_pat命令と
>置き換えて試してみたのですが、実行時に
>「問題が発生したため、hsp2.exeを終了します。この問題をMicrosoftに〜」の
>エラーが出てしまい、正常に使用することができません。
すみません。パラメータを正しく渡していなかったために正常に動作していませんでした。
HSPDXFIX.ASの最終行を
#define es_expat(%1,%2,%3,%4,%5) es_pat %1,%3,%4,%5,%2
に変更すると正しく動くようになります。
>また、プログラムを実行すると"DEBUG.TXT"というファイルが出力されるのは
>仕様でしょうか。
ベータリリース限定でおおざっぱな実行ログをはき出すようにしていますが、もはやベータリリースを
続ける意味がなくなったため、次のバージョン当たりでベータそのものを廃止するつもりです。

[474]es_expat命令でエラー
hira 2005/01/22 19:33:41HSPDXFIX0.15beta5のes_expat命令を、一箇所だけ既存のex_pat命令と
置き換えて試してみたのですが、実行時に
「問題が発生したため、hsp2.exeを終了します。この問題をMicrosoftに〜」の
エラーが出てしまい、正常に使用することができません。
パラメータの順序と、省略をしていないことは確認しました。
何か、この命令を使用する上での注意事項などがありますでしょうか。
また、プログラムを実行すると"DEBUG.TXT"というファイルが出力されるのは
仕様でしょうか。

[473]レス
Sinagawa 2005/01/21 02:40:17>そにっくさん
>HSPDXFIXのウィンドウモードで、es_sync 17,1とした時、
>処理落ちなしで58FPSになるPCと61FPSになるPCの二つに分かれます。
>調べたPC7台のうち2台が61FPSになりました。
>この現象はどういう理由が考えられるでしょうか。
1000(ms)÷61(FPS)≒16.3934(ms)ですので、なぜか16msのウェイトが発生しているフレームが
存在することになります。ただ、いくらSleepの精度が環境によってまちまちだからといって
本来の値を下回ることがあるのかはわかりませんが。
>ゆうきさん
Direct3Dのクリッピングにバグがあり、表示エリアやクリッピング領域を画面中央からずらして
設定すると、カメラ位置が固定されているために表示ずれが生じるようです。
次のバージョンで修正しておきます。

[472](無題)
そにっく 2005/01/20 20:26:47横レス失礼します。
ゆうきさんのまとめられたページにあるソースを実行して試したんですが、
es_windowのほうに原因があるようです。es_offsetを外してもずれたままでした。
es_windowで指定するエリアを画面内でセンタリングするとズレないようです。
ちょっとよく分かりませんが。

[471]スプライトずれる現象
ゆうき (http://ww22.tiki.ne.jp/~y-shirakawa/) 2005/01/20 13:09:38報告です。
オフセットを設定した場合3DエフェクトをONにしたスプライトが
何故か左にズレてしまいます。
DirectDrawだと問題ないです。
ここにまとめました。
http://ww22.tiki.ne.jp/~y-shirakawa/hspdx/

[470]Re:スプライトの描画順序
hira 2005/01/20 10:06:38> 自分でやってみずに言うのもなんですが、スプライトの重なり方は描画順序に
> よるのですか?私は、スプライト番号のみによるのだと思っていました。
> すみません。HSPが使える環境に行き次第、試してみたいと思います。
やってみました。スプライトの重なり方は、描画順序によるのですね…
ということは、スプライト番号が重なり方に影響するのは、スプライトを
一気に描画したときのみということですね。
失礼いたしました。

[469]es_sync
そにっく 2005/01/20 01:57:20HSPDXFIXのウィンドウモードで、es_sync 17,1とした時、
処理落ちなしで58FPSになるPCと61FPSになるPCの二つに分かれます。
調べたPC7台のうち2台が61FPSになりました。
この現象はどういう理由が考えられるでしょうか。
61FPSになったほうのPCは2台とも若干古いんですが
(AthlonTB1Ghz/Windows2000/GeForce2MXとCeleron750MHz/WindowsXPhome/SiS630)
基本的には構成はバラバラで共通点は殆どありません。

[468]Re:レス
hira 2005/01/19 18:15:07>現状で無理矢理優先順位の変更をしたい場合、スプライトをすべて一気に描画せずに
>優先順位の低いものから順番に単体で描画していく方法があります。
自分でやってみずに言うのもなんですが、スプライトの重なり方は描画順序に
よるのですか?私は、スプライト番号のみによるのだと思っていました。
すみません。HSPが使える環境に行き次第、試してみたいと思います。

[467]レス
Sinagawa 2005/01/19 15:33:33>HSPDXFIXを使って2DのRPG(ツクール風の画面)を作ろうとした時、
>重なり合ったスプライトのうち、手前のスプライトを手前に表示する手段は、
>・毎フレーム、各スプライトのY座標を降順にソートし、
> その順番に従ってes_setでスプライト番号を設定し直す。
>という方法しかありませんよね?(あまり自身がないのですが…)
現状で無理矢理優先順位の変更をしたい場合、スプライトをすべて一気に描画せずに優先順位の
低いものから順番に単体で描画していく方法があります。
スプライトの優先順位の実装自体は難しくないです。クイックソートならそれほど速度低下も気に
ならないはずなので一度実装してみます。

[466]要望
hira 2005/01/18 16:52:16HSPDXFIXを使って2DのRPG(ツクール風の画面)を作ろうとした時、
重なり合ったスプライトのうち、手前のスプライトを手前に表示する手段は、
・毎フレーム、各スプライトのY座標を降順にソートし、
その順番に従ってes_setでスプライト番号を設定し直す。
という方法しかありませんよね?(あまり自身がないのですが…)
これを実際にやってみたのですが↓、
ttp://www015.upp.so-net.ne.jp/hira/comsen/software/ARPGmaker_test.zip
es_set時にスプライトのアニメーションが止まってしまう等の問題があり、
あまり上手くありません。
そこで、HSPDXFIXに、自動で手前のスプライトを手前に表示してくれる
機能が追加されると、非常に有用なのではないかなぁと思いました。
(ちなみにDelphiの何かの機能では、これを"Zレイヤ機能"と呼ぶそうです。)
もし可能でしたら、是非とも検討してみていただきたいと思います。

[465]レス
Sinagawa 2005/01/18 10:49:14>K-sさん
>最近になって初めてes_xferという命令を使ってみたのですが、
>第2パラメータ(転送元ID)に-1か-2を指定して実行すると「解釈できないHSPコードです」と怒られてしまいます。
es_xfer命令はDirectDrawが吐いたエラーをそのままHSPへエラーとして返していますので、
グラフィックボードが画面イメージからの転送をサポートしていないとそのようなエラーが出ます。
>あと、-1は表示中、-2は描画中の画面イメージとのことですが、違いがよく分かりません。
画面イメージとはDirectXが作成した専用のバッファのことで、HSPDXFIXでは画面のちらつきを
防止するためにそれを2つ用意します。-1はそのうちモニタに表示されている方、-2は各種描画命令の
描画対象になる方のバッファを指します。
>Jinさん
http://quasiquote.org/hspwiki/HSPHelp:dd_accept より、
>D&Dされたファイル名は"\n"で区切られています(D&Dされたファイルが1つの場合でも)。 1つのファイル名を取り出したいときはノートパッド命令を使うと便利です。
とありますので、メモリノートパッドを使ってファイル名を取り出しましょう。
strlenとstrmidを使って末尾の改行を取り除くという手もありますが、複数のファイルを
D&Dされるとバグの元になるのでやめた方がよいです。

[464]dd_acceptについて
Jin 2005/01/16 23:55:08前回はどうもお世話になりました。
またまたド素人な疑問で申し訳ないのですが、
dd_acceptでファイルのパスを取得したのとき、
パスの最後が改行されていて、このままショートカットを作成しようとすると
うまくいかないのですが、何かいい解決法はないでしょうか?
よろしくお願いします。

[463]es_xferについて
K-s 2005/01/16 21:54:59はじめまして。DirectXを使ったSTGを作りたくて半年程前からHSPDXFIXを使わせてもらっています。
最近になって初めてes_xferという命令を使ってみたのですが、
第2パラメータ(転送元ID)に-1か-2を指定して実行すると「解釈できないHSPコードです」と怒られてしまいます。
第1には-1、-2ともに大丈夫でしたし、第2も0以上なら問題なく実行できたのですが。
ver0.14と0.15beta4で確認しました。HSPは2.61です。
あと、-1は表示中、-2は描画中の画面イメージとのことですが、違いがよく分かりません。
半透明や回転などのエフェクトが可能になったので、
なんとかスクリーン上のイメージをバッファにコピーしていろいろしたいのですが。

[462]Re:最新版info number
そにっく 2005/01/15 14:24:58info numberありがとうございました。
使わせていただきます。

[461]Re:DirectX版gsel
hira 2005/01/15 13:22:44ご回答、ありがとうございます。そのような事情があったのですね。
バッファIDを指定することができると、ある形式の画像素材から
必要な部分のみオフスクリーンに切り出しておき、後からスプライト登録を
一括して行う、というようなことができるので、ありがたいです。
それでは、後はよろしくお願いいたします。
>調べてみましたが、以前はパラメータ数に制限があったためにこのような制限を
>設けてあったのだと思います。
>バッファIDを指定するように拡張するのは簡単にできますので、
>es_patにパラメータを追加する形で対応させていただきます。

[460]Re:DirectX版gsel
Sinagawa 2005/01/15 12:33:29>HSPDXFIXにはgsel命令にあたるものが無く、画像読み込みと
>キャラクタパターン登録の処理を分けたい場合に不便を感じて
>います。画像読み込みとパターン登録は常に同時におこなう
>べきだということなのでしょうか。
調べてみましたが、以前はパラメータ数に制限があったためにこのような制限を
設けてあったのだと思います。
バッファIDを指定するように拡張するのは簡単にできますので、es_patにパラメータを追加する形で対応させていただきます。

[459]DirectX版gsel
hira 2005/01/14 17:23:16はじめまして。日頃よりHSPDXFIXをありがたく使わせていただいています。
今回は、ひとつ質問させていただきたいと思います。
es_pat命令でキャラクタパターンを登録する際には、
直前にes_bufferで確保したオフスクリーンバッファから
画像を切り取ってくる、という仕様になっているようですが、
これを任意のオフスクリーンバッファから取ってくることは
できませんでしょうか。
HSPDXFIXにはgsel命令にあたるものが無く、画像読み込みと
キャラクタパターン登録の処理を分けたい場合に不便を感じて
います。画像読み込みとパターン登録は常に同時におこなう
べきだということなのでしょうか。

[458]最新版info number
Sinagawa 2005/01/12 00:22:06次バージョンのマニュアルに書くのでわざわざここに書かなくてもいいかもしれませんが、
一応調査結果を貼っておきます。
0 = flag値
3 = スプライトのX座標
5 = スプライトのY座標
7 = 1フレームに移動する距離X
9 = 1フレームに移動する距離Y
. 10 = プログレスカウント値(未使用)
. 11 = アニメーションカウント値
. 12 = キャラクタNo.
. 13 = type値
14,15 = 特殊動作情報(未使用)
. 16 = 自由落下加速度X
. 17 = 自由落下加速度Y
. 18 = 弾みやすさ
. 19 = バウンドフラグ
. 20 = 点滅フラグ
22,23 = 点滅カウント値
. 24 = Direct3D使用フラグ
. 25 = 表示Xサイズ
. 26 = 表示Yサイズ
. 27 = X軸回転角
. 28 = Y軸回転角
. 29 = Z軸回転角
. 30 = ブレンドファクター
. 31 = α値
. 32 = 点滅用スプライト表示フラグ
34,35 = ライト値
補足かつ蛇足:これらは符号付き16bit(-32768〜32767)で返ってくるため、
32bitパラメータを取得する際はそのまま使うとえらいことになりますので注意。
フラグ、点滅カウント、ライトがこれに当たります。

[457](無題)
そにっく 2005/01/08 03:38:06>Sinagawaさん
>マニュアルには記載されていませんが取得可能です。時間があるときに確認しておきますが、
>23〜24あたりに情報が格納されているはずです。
分かりました、ありがとうございます。とりあえず自分でも探してみます。
>これに関して自ら問題に遭遇したこともあり導入の手間を省く意味で今後しばらくはVC++6で
>コンパイルしたものを提供する予定です。よって、必要なしになります。
わかりました。即レスありがとうございました。
>ゆうきさん
>スプライトをセットするときに、配列か何かにキャラクタのサイズを記憶してみてはいかがでしょうか?私はそうしています。
実は現状私もそうやっています。HSPでいたずらに変数を増やしたくないなと思ったので
私のわがままで書いてしまいました。でも既にあるようなので試してみたいと思います。

[456]レス
Sinagawa 2005/01/08 00:18:58>そにっくさん
>es_getでスプライトに定義されているキャラクタのx,yサイズが取得できるように
>なりませんでしょうか。もしくはそれを取得できる命令というのは可能でしょうか。
es_get命令は単にスプライト情報用のメモリを抜き出しているだけなので、スプライトの表示サイズでよければ
マニュアルには記載されていませんが取得可能です。時間があるときに確認しておきますが、
23〜24あたりに情報が格納されているはずです。
>ところで今後のバージョンアップ版もMSVCR71.DLLが必要になるのでしょうか。
今回はいろいろあってVC.netでコンパイルしたものをそのままアップしましたが、
これに関して自ら問題に遭遇したこともあり導入の手間を省く意味で今後しばらくはVC++6で
コンパイルしたものを提供する予定です。よって、必要なしになります。

[455](無題)
ゆうき (http://ww22.tiki.ne.jp/~y-shirakawa/) 2005/01/07 23:08:21>そにっくさん
スプライトをセットするときに、配列か何かにキャラクタのサイズを記憶してみてはいかがでしょうか?私はそうしています。
>ユウマさん
こちらも、セットするときに初期移動量を保持しておくと可能です。
思い切ってスプライトの数だけいろいろな配列を
用意しておくのが手っ取り早いと思います。

[454]es_getで
そにっく 2005/01/07 17:16:09es_getでスプライトに定義されているキャラクタのx,yサイズが取得できるように
なりませんでしょうか。もしくはそれを取得できる命令というのは可能でしょうか。
スプライト表示時のオフセット量を算出するのに使用したいと思うのですが。
ところで今後のバージョンアップ版もMSVCR71.DLLが必要になるのでしょうか。
できれば無くても動くほうが嬉しいのですが…。

[453]スプライト移動再開
ユウマ 2005/01/07 16:38:41スプライト移動停止
は何とかできましたが、また移動再開がうまくできません。
一度停止してしまうと、昔の移動量がわからなくなるので、、、
es_getとes_aposを組み合わせても、、、

[452]スプライト移動停止
ユウマ 2005/01/07 15:58:10移動しているスプライトの停止。
es_get mx,MySp,3
es_get my,MySp,5
es_pos MySp,mx,my
ですとうまくいきません。どうすればよいですか

[451]バッファの初期化
ゆうき (http://ww22.tiki.ne.jp/~y-shirakawa/) 2005/01/07 00:09:22>管理人様
グラフィックボードの問題ですか・・・。
コンフィグで色々設定できるように設計したいと思います。
回答ありがとうございました。

[450]スプライトの非表示
ひろっち 2005/01/05 07:04:09透明色のキャラクタで非表示にできました。
ありがとうございました。

[449]レス
Sinagawa 2005/01/05 03:51:55最近のHSPDXFIXって「gsel 0」なくても普通に動くんですね。
>aaaさん
前にも書きましたが仕様の見直し時には考えさせていただきますが、申し訳ないですけど
現状では実装予定なしということで。
>MSHYさん
beta4はVC.netでコンパイルしたものをアップしましたので、フレームワークが必要となります。
もしHSPは動くけどHSPDXFIXは使えないという場合はWINDOWS\SYSTEM32ディレクトリにMSVCR71.DLLが
入っているか確かめてみてください。
#余談ですが、以前Win98SE上でVC.net版HSPDXFIXが動かないと書いたことがあるのですが、これが原因でした。
>ひろっちさん
すでにレスがありますが、見た目だけ消したいのであればes_flagやes_blinkの点滅カウントを利用するか
全透明のキャラクタに変更することで実現できます。
ちなみに、以前#413でも書いたのですがes_flagの8bit目($100)は現状ではスプライト生存確認用の
フラグとしてしか機能していませんのでご注意を。
>ゆうきさん
es_sync後に両バッファの内容をスクリーンショットとして保存してみましたが問題ありませんでした。
例によってグラフィックボード固有の問題だと思います。

[448]遅れましたが
ゆうき (http://ww22.tiki.ne.jp/~y-shirakawa/) 2005/01/05 00:14:39>管理人様
個人的な意見にも関わらず、es_move命令の実装をしてくれてありがとうございます。
ところで、質問があります。
es_syncを行うと、表示用オフスクリーンバッファの内容が破壊(初期化?)されるのは仕様でしょうか?
バッファ間画像コピー(例えばsync後にes_xfer -2,-1,0,0,640,480)で代用は出来ますが、負担の問題もありまして・・・。
出来ればバッファの内容を保持してほしいと思っています。
(実はes_move実装をお願いした理由と関連した要望なのです・・・)
>ひろっちさん
「スプライトの非表示」というのが、どういうものなのか良く分かりませんが、
完全にスプライトを削除するのであればes_kill命令です。
一時的に画面から見えないようにするという意味のものであれば、es_flagの8bit目で設定できると思います。
もしくは、透過色のパターンのキャラクタに変える等の、多少強引な考え方もあります。
>aaaさん
毎フレーム座標を調べて指定した座標に到達したら、es_apos 0,0,0
で問題ないと思いますが・・・。

[447]スプライト非表示
ひろっち 2005/01/04 20:58:42今グラディウスのオプションを作っていますが
スプライトを非表示はできないんでしょうか?

[446]MSVCR71.dll
MSHY 2005/01/03 23:23:04HSPDXFIX Ver0.15beta4を使用しようとしたのですが
MSVCR71.dllが見つかりませんと表示されてしまいます。
以前のバージョンでもこのdllって必須でしたでしょうか?

[445]Re:es_aim
aaa 2005/01/03 11:51:53とまるようにするのは難しいですか。

[444]Re:es_aim
Sinagawa 2005/01/03 00:37:22>目的地に行っても動き続けるものなのですか?
はい。方向を決めるための目的点を指定するものですので。

[443]es_aim
aaa 2005/01/02 13:39:00目的地に行っても動き続けるものなのですか?

[442]レス
Sinagawa 2004/12/31 23:03:48>あとはHSPDX.ASをcommonにいれればいいんですよね?
はい。圧縮ファイルの中に入っているのは「HSPDXFIX.AS」ですので、まちがえて
「HSPDX.HS(ヘルプ)」をcommonディレクトリに入れないようにしてください。

[441](無題)
MAN 2004/12/31 20:09:53解凍したファイルの中にはHSPDX.DLLはありませんでしたが
HSPDXFIX.DLLというのはありました。
あとはHSPDX.ASをcommonにいれればいいんですよね?

[440]レス
葦田ひろかず 2004/12/30 19:14:38>MANさん
おそらく全てのファイル表示を行っていないからだと思います。
マイコンピュータ、もしくはエクスプローラを立ち上げたら
メニューの「ツール」-「フォルダオプション」-「表示」で
「ファイルとフォルダの表示」-「すべてのファイルとフォルダを表示する」に
チェックを入れます。
もうひとつ、「登録されているファイルの拡張子は表示しない」にチェックが入っていたら、
チェックを外します。
これで見えるはずです。
どのフォルダにどのファイルを入れるのかは、解凍したファイル「HSPDXFIX.TXT」を
読めば分かります。

[439](無題)
MAN 2004/12/30 14:06:10HSPDXFIXをこちらのページから落したんですが、
導入の仕方がわかりません。
落したのを解凍したんですが、HSPDX.DLLというのが見つかりませんでした。
このファイルをここにいれるなど詳しく教えていただけないでしょうか?

[438]Re:レス
ととむ 2004/12/28 20:23:38返信ありがとうございました。

[437]わかりました
そにっく 2004/12/25 07:32:23他のPCで試したところ確かに問題ありませんでした。
理由はわかりませんが私の環境だけのようです。
お騒がせしました。

[436]なるほど。
TKS 2004/12/23 16:22:11>環境依存の問題なのかもしれません。
なるほど了解です。
ありがとうございました!

[435]レス
Sinagawa (http://www.diveto.net/zero/junk/skingrad.png) 2004/12/23 12:24:28>TKSさん
実際に指定された条件で画像を表示してみたのですが、元画像通りに表示されました(上記リンク参照)。
ここではes_copyを使いましたが、根本的な部分は同じなのでスプライトだとどうということはないはずですし、
es_excopyを使った場合も問題はありませんでした。
24bit以上の時はいっさいの減色を行わずそのまま転送されますので、環境依存の問題なのかもしれません。
>そにっくさん
HSPDXFIX同梱のTEST5D3D.ASで確認しましたが、こちらもうちの環境では問題ありませんでした。

[434]拡大縮小について
そにっく 2004/12/23 04:43:34わかりました。すばやい返答ありがとうございました。
ところでもうひとつ質問なのですが、こちらの環境でDirect3Dを使用した
スプライトを表示したとき、最初の表示のときだけ一瞬処理落ちしたように
なるのですが、これはうちの環境だけでしょうか?
こちらの環境は
WinXP PRO、RADEON9600XT、DirectX9.0cです。

[433]マウス操作について
Jin 2004/12/23 02:22:51回答どうもありがとうございます!!
llmod.asとinput.asのインクルードをしていなかったためのエラーでした。
無事解決することが出来ました。
初歩的な質問に丁寧にお答えいただき大変ありがとうございました。

[432]色のこと
TKS 2004/12/23 01:19:09こんばんは。HSPDXFIX Ver 0.15beta3を使わせてもらっているTKSです。
es_screenで32bitの画面モードを使い、es_clsは微妙な色変化が見られるのですが、
スプライトについては、es_clsのような微妙な色変化が見られませんでした。
・スプライトで肌色→白のグラデーションの画像を描画させてみると、ほとんど白っぽい感じでした。
・ちなみに肌色はHSVで30,64,255です。
VRAMイメージ転送時に減色されているのでしょうか?

[431]レス
Sinagawa 2004/12/22 11:53:29>フルスクリーンモード使用時にbgscrやscreenを使うことはできませんか?
>使うことができないなら、その理由は画面出力方式が違うから、ですか?
はい。フルスクリーンモード時はDirectXが画面をすべて占拠しますので、その状態でウィンドウなどを
作っても表示させることはできません。

[430]DirectXについて
ととむ 2004/12/21 19:04:38Sinagawaさんのサンプルスクリプトを参考にフルスクリーンモードでbgscrを使ったり、gselを使って切り替えようとしましたが上手くいきません。
次の疑問点にご指導をお願いします。
質問@
フルスクリーンモード使用時にbgscrやscreenを使うことはできませんか?
使うことができないなら、その理由は画面出力方式が違うから、ですか?

[429]レス
Sinagawa 2004/12/21 12:46:25>Jinさん
すいません、書き込み見落としてました。
どこでエラーが出てうまく動かないのかよくわからないのであれですが、llmod.asとinput.asは
インクルードしてますでしょうか。この2つをインクルードしないとmouse_eventは使えないようですが。
>そにっくさん
現段階では旧バージョンとの兼ね合いもあって座標と表示サイズを元に表示座標を補正するしか方法はないです。
ただ、今後のバージョンアップで仕様の見直しを検討しようと思っていますのでその当たり視野に入れておきます。

[428]拡大縮小について
そにっく 2004/12/21 06:17:38はじめまして、そにっくと申します。
HSPDXFIXを使わせていただいています。
大変役に立っております。
ちょっと気になったことがあるのですが、スプライトの拡大縮小を
行うとき、左上の原点を基準に行われる仕様になっているようですが、
回転しながら拡大といったことをしたい場合、回転はスプライトの中央を
基準に行われるようなので、大きさを変えるごとに座標をオフセット
したりして、少々ややこしくなっています。
拡大縮小もスプライト座標の中心を基準に出来ないものでしょうか。

[427]Re:Re:DirectX使用時について
ととむ 2004/12/20 23:58:24>一応参考までにこのやり方で作った簡単なサンプルをおいておきます。
サンプルスクリプトまでありがとうございます。今からすぐに組み込んでみます。
Sinagawaさんのサンプルスクリプトを見てから、胸のドキドキが止まりません。
どうしてなのかうまく言えません。でも、
自分が表現したいもの、やりたいことを形にしたいという抑えきれない衝動に駆られています。
言葉が見つからないから、今夜はこの辺で。

[426]Re:DirectX使用時について
Sinagawa (http://www.diveto.net/zero/junk/message.as) 2004/12/20 17:31:13>質問@
>DirectX使用時(ループ処理もしています)にinput命令は使えますか?
一応使えなくはないですが、パレットモードだと色化けが発生したり、es_syncを実行すると
メッセージボックスが消えたりしますので、フルスクリーンモードだと扱いが難しいです。
また、正式に対応しているわけはないので、使えないと思った方がよいでしょう。
>質問A
>DirectX使用時に、自分で入力した文字を画面に表示するために何か方法はありませんか?
もっとも簡単な方法はHSPDXをウィンドウモードで動作させ、別IDのウィンドウにメッセージボックスを表示して
そこからの入力を拾ってDirectX側のウィンドウに反映させることですが、このやり方では
日本語入力で問題が起こったりするのであまりいい方法ではありません。
一応参考までにこのやり方で作った簡単なサンプルをおいておきます。

[425]DirectX使用時について
ととむ 2004/12/19 18:02:11HSP板の過去ログを読んでいたら、DirectXについてはSinagawaさんに聞け、という格言を見つけてしまいました。
そこで、DirectXのいろいろな問題のご指導をお願いします。
質問@
DirectX使用時(ループ処理もしています)にinput命令は使えますか?
質問A
DirectX使用時に、自分で入力した文字を画面に表示するために何か方法はありませんか?

[424]質問です
Jin 2004/12/19 17:07:12初めまして!!
つい最近プログラミングに興味を持ちHSPを始めてみたんですが、
なぜかマウス操作(mouse_event)を使うとエラーがでてしまってうまくいきません;;
具体的には、
ボタンを押す→マウス移動→マウスクリック
という流れのものを作りたいのですが・・・。
ものすごく初級な質問なんですが、何かアドバイスをいただければ幸いです。
よろしくお願いします。

[423]レス
Sinagawa 2004/12/17 23:48:23>マニュアルにある、一つのバッファにDirectDrawとDirect3Dで使用する画像を共存させない方が
>速度面で有利になります。は、たとえばes_copyとes_excopyのバッファは同じNoではない方が良い、
>で解釈は正しいですか?
はいそうです。厳密にいうと、同じにしない方がよいというより完全に分けるべきですが。

[422]6周年おめでとうございます
ととむ 2004/12/17 20:51:57あれからずっとプログラムを弄っていて、ついさっき、ようやくsinagawaさんのレスの内容が理解できるようになりました。ご指導ありがとうございます。
マニュアルにある、一つのバッファにDirectDrawとDirect3Dで使用する画像を共存させない方が速度面で有利になります。は、たとえばes_copyとes_excopyのバッファは同じNoではない方が良い、で解釈は正しいですか?

[421]レス
Sinagawa (http://www.diveto.net/zero/junk/offset.lzh) 2004/12/15 23:34:16またまたレス遅れましてすいませんでした。
>症状は、表示される矩形のY座標が常に-1されているようになり、さらに
>グラフィック矩形のX座標指定が>0の時だけ、表示される矩形の座標も-1される
>という物です。
テストスクリプトを作って(上記リンク)確認したところ、Direct3D描画を使っている場合X,Y座標が
負の数になるとテクスチャが崩れるバグがあることがわかりました。
こちらは自分の環境で再現したので修正しましたが、表示位置、表示されるテクスチャともに
問題が生じなかったため、位置ずれに関しては確認できませんでした。

[420]追記
KRN☆ 2004/12/13 13:19:35この症状はes_putで描画したときは現れずに
以下のようにスプライトとして設定して描画したときに起こります。

[419]キャラクタのグラフィックについて
KRN☆ 2004/12/13 13:16:05シューティングゲームを作ろうとソースを組んで見たのですが、
キャラクタの画像を指定したところ実際にはずれて表示されてしまいます。
<これ以上はDirectX設定>
*start
hmminit 5
buffer 0,256,256 : picload "player.bmp",1 : es_buffer 0,2,0,0,1
es_size 36,48 : es_pat 0,36,0 : es_size 12,48 : es_pat 1,0,48 : es_size 16,16 : es_pat 2,180,0
ply.0 =220 : ply.1 =220
es_set 0,ply.0,ply.1,0
repeat
<描画命令>
loop
<これ以下はサブルーチン>
バッファが2の乗数で無いからかと思って一応そっちもやっては見ましたが、
同じようにグラフィックがずれて表示されます。
症状は、表示される矩形のY座標が常に-1されているようになり、さらに
グラフィック矩形のX座標指定が>0の時だけ、表示される矩形の座標も-1される
という物です。
現在はグラフィックの矩形を指定する時に1を加算した値で指定していますが、
これは私のミスなのでしょうか? それともバグなのでしょうか?

[418]6周年おめでとうございます
たかのん 2004/12/12 13:01:49うちのサイトとほとんど同じ時期に開設だったんですね。
今後とも宜しくお願い致しますです。

[417]了解致しました
葦田ひろかず 2004/12/10 17:12:58 レスを頂きました件について、了解いたしました。
それでは、今後とも宜しくお願い致します。

[416]補足
Sinagawa 2004/12/10 12:15:48>次に二点目、スプライトのアニメーションはes_drawを実行した時点で行われます。
「〜実行した時点で"自動的に"行われる」ということで、つまりスプライトを一度設定したら
あとはそのままes_drawを実行すれば勝手にアニメーションが行われると言うことです。

[415]Re:HSPDXFIXの画像処理にいて
Sinagawa 2004/12/10 12:10:20>質問@
>下のようなプログラムを組みましたが、キャラクタ・アニメーションの方法が良く分かりません。どこが間違っていますか?
>質問A
>下のプログラムは間違いながらも描写できている、という感じがしています。コマンドの書き方や使い方がおかしいところはありませんか?
まず一点目として、es_set命令を実行するとアニメーションなどの状態は初期化されます。
次に二点目、スプライトのアニメーションはes_drawを実行した時点で行われます。
以上のことから、
;スプライト設定
es_set 6,440,140,6 : es_effect 6,80,80,0,0,0,ESB_ADD,128
*main
stick ky,$1f
if ky&$80 :end
es_cls
es_draw
es_sync ;画面更新
await 128
goto *main
↑このようにすればうまくいきます。また、実行順序は画面消去→計算→描画→ウェイトとした方が
表示と処理が一致するのでよいです。
>質問B
>HSPDXFIXの説明書に、一つのバッファにDirectDrawとDirect3Dで使用する画像を共存させない方が速度面で有利になります、とありますが、
>DirectXを使い始めたばかりなので、Drawと3Dの区別がうまく付きません。
>また、パレットモードの意味もよく分かりません。何か良い具体例はありませんか?
Direct3D描画=es_excopy命令での画像コピー、es_set命令でp5に1を指定した状態でのスプライト描画。
DirectDraw描画=es_copy、es_zoom命令での画像コピー、es_set命令でp5に0を指定した状態でのスプライト描画。
要するに、半透明などのエフェクトが使える描画=Direct3D、使えない描画=DirectDrawです。
また、パレットモードは、es_screen命令で8bitモードに初期化(p3=8)した状態のことです。
ウィンドウモードだと話がまた少しややこしくなるのですがとりあえず省略。

[414]HSPDXFIXの画像処理にいて
ととむ 2004/12/09 22:17:07初めまして。
HSP掲示板でDirectX使用時の半透明処理ができるとのことで、早速DLさせていただきました。
特にスプライト関係が豊富で、できなかったことがいろいろなことができそうです。
これからも開発を頑張ってください。
ところで、HSPDXFIXを使用していて、いくつか使い方が分からない点があるため、ご指導をお願いします。
質問@
下のようなプログラムを組みましたが、キャラクタ・アニメーションの方法が良く分かりません。どこが間違っていますか?
質問A
下のプログラムは間違いながらも描写できている、という感じがしています。コマンドの書き方や使い方がおかしいところはありませんか?
質問B
HSPDXFIXの説明書に、一つのバッファにDirectDrawとDirect3Dで使用する画像を共存させない方が速度面で有利になります、とありますが、DirectXを使い始めたばかりなので、Drawと3Dの区別がうまく付きません。また、パレットモードの意味もよく分かりません。何か良い具体例はありませんか?
<プログラム>
#include "hspdxfix.as"
;systemとスクリーンの初期化
es_ini
if stat=1 : goto *dderr1
es_screen 640,480,32,1,0,1
if stat=1 : goto *dderr1
if stat=2 : goto *dderr2
goto *start ; 正常に完了
*dderr1
dialog "DirectXの初期化に失敗しました。",1 :end
*dderr2
dialog "スクリーンの初期化に失敗しました。",1 :end
*dderr3
es_bye : dialog "VRAMの容量が不足しています。",1 :end
*start
buffer 6,,,1 : picload "***.bmp" : es_buffer 6,2,0,0,1 ;***の画像読み込み
if stat=1 : goto *dderr3 ;VRAMの容量が不足している場合
es_size 80,80 : es_pat 6,0,0,1 : es_pat 7,80,0,1 : es_pat 8,160,0,1
es_pat 9,240,0,1 : es_pat 10,320,0,1 : es_link 10,6
gsel 0 ;ウインドウをアクティブに
*main
stick ky,$1f
if ky&$80 :end
es_cls
es_draw
es_set 6,440,140,6 : es_effect 6,80,80,0,0,0,ESB_ADD,128
es_sync ;画面更新
await 128
goto *main

[413]レス
Sinagawa 2004/12/09 12:25:22すみません、レス遅れました。
> その後、色々と試してみましたが、やはりノートPCだけ問題が発生します。
>しかも、HSP2.61とHSPDXFIX Ver0.15beta3という特定の条件下のみで発生します。
再現性がない以上断定はできませんが、メモリ回りなどハードウェアよりの問題を含め
複数の要因が絡んで発生しているのかもしれませんし、ひょっとしたら今後のバージョンアップで
直ったり再発したりするかもしれません(コンパイラの最適化でバグが発生することがあるらしいので)。
> それと、別件ですが、es_flag命令で、beta3では$500、$400どちらを指定しても
>スプライト表示ONで自由落下してしまいます。
>flag値の仕様とは違う動作ですが、これは前バージョンとの兼ね合いで
>そういった動作にしているのでしょうか?
おそらくフラグ変更を一切行っていない状態のスプライトの生存を示すためのフラグとして
用意されたもので、現状ではこのフラグをOFFにしたときにスプライトを表示しないようにしても
他の何かしらのフラグと併用しないとスプライトが消滅してしまうのでそのままにしてあります。

[412]その後
葦田ひろかず 2004/12/06 12:08:18 その後、色々と試してみましたが、やはりノートPCだけ問題が発生します。
しかも、HSP2.61とHSPDXFIX Ver0.15beta3という特定の条件下のみで発生します。
■ノートPCでの動作
HSP2.61とHSPDXFIX Ver0.15 ・・・ 問題無し
HSP2.61とHSPDXFIX Ver0.15beta3 ・・・ 強制終了
HSP2.6とHSPDXFIX Ver0.15 ・・・ 問題無し
HSP2.6とHSPDXFIX Ver0.15beta3 ・・・ 問題無し
■デスクトップPC2台
まったく問題無し
原因が分からないので少々気味が悪いですが、HSP2.6では問題が発生しないので、
HSP2.6を使用していきたいと思います。
それと、別件ですが、es_flag命令で、beta3では$500、$400どちらを指定しても
スプライト表示ONで自由落下してしまいます。
flag値の仕様とは違う動作ですが、これは前バージョンとの兼ね合いで
そういった動作にしているのでしょうか?

[411]機種依存のような気がします
葦田ひろかず 2004/12/03 09:52:56 すみません、返信が遅れました。
他のPCで試したところ、問題無く動作しました。
今のところ、デスクトップPC2台は問題無く動作し、ノートPC1台で問題が発生しています。
ノートPCは、COMPAQ evo n150、Win2000SP4、DirectX9.0cです。
ノートPCでは、Ver0.15は問題なく動作していました。
また、beta3でもHSP2.6では問題なく動作し、HSP2.61のみ問題が発生するようです。
もう少し、色々と調べてみます。また、ご報告いたします。

[410]Re:es_drawで落ちます
Sinagawa 2004/12/01 02:03:23>beta3を使用してみたのですが、es_drawで強制終了されてしまいます。
>使用解像度は800x600 256色、Direct3Dは使用していません。
>また、es_ini 512,1024,256、es_drawはパラメータ指定無しで使用しています。
> 強制終了は、起動直後に発生する訳では無く、数秒間正常に動作した後、
>突然、強制終了となります。
とりあえずDirect3Dを使っていないHSPのサンプルで試してみましたが問題なく動作しました。
どのようなスプライトを表示させているか、どのタイミングで落ちるかなど具体的な状況や、
以前のバージョンで発生していたかどうかなどわかりますでしょうか。

[409]es_drawで落ちます
葦田ひろかず 2004/11/30 11:24:13 こんにちは。早速ですが質問があります。
beta3を使用してみたのですが、es_drawで強制終了されてしまいます。
使用解像度は800x600 256色、Direct3Dは使用していません。
また、es_ini 512,1024,256、es_drawはパラメータ指定無しで使用しています。
強制終了は、起動直後に発生する訳では無く、数秒間正常に動作した後、
突然、強制終了となります。
原因等、分かりますでしょうか?
よろしくお願いいたします。

[408]有り難うございます
葦田ひろかず 2004/11/25 09:30:45 有り難うございます。修正を宜しくお願い致します。
自由落下移動の件についても、了解いたしました。
今後ともよろしくお願いいたします。

[407]Re:β版でうまく動作しません
Sinagawa 2004/11/24 09:34:28>HSPDXFIX Ver0.15beta2を使用してみたのですが、強制終了されてしまいます。
>どうやらes_screenで落ちているようなのですが、原因は分かりますでしょうか?
es_d3dopt実装時の副作用でDirect3Dを使用しないと落ちてしまうようです。
次のバージョンで直しておきます。
>スプライトの自由落下移動で、画面端で跳ね返らない設定というのは出来ますでしょうか?
想定していなかったのでヘルプには書かれていませんが、es_bound命令で第3パラメータに
0を指定することで落ちっぱなしにすることができます。

[406]β版でうまく動作しません
葦田ひろかず 2004/11/23 13:51:57 こんにちは。早速ですが質問がございます。
HSPDXFIX Ver0.15beta2を使用してみたのですが、強制終了されてしまいます。
どうやらes_screenで落ちているようなのですが、原因は分かりますでしょうか?
HSPDXFIX Ver0.15では問題なく動作します。
今作成しているものでは、es_screen 800,600,8,0,0,0
としています。
この場合、実行して一旦画面が真っ黒になった後、プログラムが終了し
何事も無くWindow画面に戻ってしまいます。
もう一つ、要望があるのですが、
スプライトの自由落下移動で、画面端で跳ね返らない設定というのは出来ますでしょうか?
画面端で跳ね返らず、そのまま画面外に消えていくような動作も欲しいのですが、
もし、機能追加が難しくないようであれば、実装して頂けると大変有り難いです。
以上、よろしくお願いいたします。

[405]Re:黄色が表示されない
Sinagawa 2004/11/23 11:07:49>どうやっても黄色近くの色が表示されません(黒色っぽい色になってしまいます)。
もしパレットモードで使用しているのであればパレットに黄色があるか確認してください。
es_bufferはデフォルトだとバッファに画像を登録した後パレットを更新しますので、その時に
黄色がない画像を転送しているかもしれません。
>あと、解像度を320*240でやっているのですが、
>この解像度だとフルカラーにしようとするとなぜかスクリーンの初期化に失敗します。
>ちなみに解像度は320*240でも大丈夫でしょうか?
お使いのグラフィックボードは320*240で16bit以上のカラーモードをサポートしていますでしょうか。
コントロールパネルからDirectXのプロパティを開き、「DirectDraw」タブをクリックすると
「Supported Modes」という項目がありますので、その中に「320x240x16」などの表示がなければ
サポートしていない画面モードに変更しようとしてエラーが出ていることになります。

[404]黄色が表示されない
トル 2004/11/22 18:39:24はじめまして、トルと申します。
最近HSPDXを使ってゲームを作り始めたのですが、
どうやっても黄色近くの色が表示されません(黒色っぽい色になってしまいます)。
あと、解像度を320*240でやっているのですが、
この解像度だとフルカラーにしようとするとなぜかスクリーンの初期化に失敗します。
ちなみに解像度は320*240でも大丈夫でしょうか?

[403]HSP3.0のβ版がリリースされましたが
Sinagawa 2004/11/17 10:46:11タイプ$202を使用したプラグインとの互換性がない(というか$202に対応していない)ために
現状ではHSPDXFIXをHSP3.0上で使用することができません。
もともとHSP2が小さな基盤をゴテゴテと拡張して育っていったものだと考えると
そのくらいは仕方ないかなという感じではありますが、いろいろ不明な点などがあることも含めて
いきなりシフトするのは得策ではないと判断しましたので、とりあえずこちらとしては
HSP3.0が正式リリースするかおにたまさんからアナウンスがあるか、周りの状況が変化するまでは
2.6対応でいこうと思います。というか、場合によっては存在意義を持たせるための大幅な
路線変更すら必要になる可能性もありますので・・・。

[402]レス
Sinagawa 2004/11/11 12:30:13>es_size命令で、縦長或いは横長のスプライトを作成すると、
>表示は正常ですが当たり判定がおかしくなるようです。
確認したところ、当たり判定の計算式に誤りがありました。
次のバージョンで修正しておきます。

[401](無題)
ma 2004/11/10 18:53:23追記です。
今まで長いスプライトにtype値を設定し、別のスプライトのNoからes_checkで衝突判定を行っていましたが
これを逆に、長いスプライトのNoから別のスプライトのtype値を検索するように衝突判定すると正常になります。
一応解決方法は見つかりましたが、これはどうなんでしょう・・・

[400]es_sizeについて
ma 2004/11/10 18:36:04失礼致します。es_size命令で、縦長或いは横長のスプライトを作成すると、
表示は正常ですが当たり判定がおかしくなるようです。
64*64では正常なのですが、128*32にしてみるとそうなりました。
ソースを見ても、問題は無いようなのですが・・・。

[399]ありがとうございます
Y+Y=M.H (http://www.h2.dion.ne.jp/~pk_pc) 2004/10/26 08:48:12さっそくの返信、ありがとうございます!
es_gdi、試してみます!

[398]解決いたしました。
唯趣 漂 2004/10/24 20:24:11すみません。
完全にこちらのミスでした。むしろ、なぜ今まで動いていたのかが分からないぐらいでした。
命令の引数が中途半端なところで終わっていたための、なんとも初歩的なミスで、よくよく確認もせずに書き込んだことを深くお詫び申し上げます。

[397]HSPDXとHSPDXFIXの相違について
唯趣 漂 2004/10/23 22:36:44
はじめまして。唯趣と申します。
この度は、半透明処理と、スプライトの回転処理などに惹かれて、HSPDXからHSPDXFIXに乗り換えさせていただきました。
その際、インクルードファイル名を"hspdxfix.as"に変更し、es_screenの引数を追加してそのままコンパイルしました。
それを実行してみたところ、途中までは正常に動作していたのですが、あるタイミングで強制終了されてしまいます。(HSPDXでは正常動作)
その辺りのプログラムを見直してみたところ、特に原因となるようなものが見つけられません。
es_check命令がそのタイミングで初めて実行されている他は、強制終了がされる前に一度は実行されています。(ひょっとしたら見落としがあるかもしれませんが・・・)
何か、原因となるような事があれば、教えていただけないでしょうか?

[396]う〜む・・・
AS 2004/10/23 19:18:47謎ですねぇ・・・見つからないというのが。
HSP自体の.NETで開発されたDLLに対しての処理がおかしいのかなぁって思ったんですが、よくわかりませんね・・・(汗
家にもVS.NETがあれば・・・って古いのMeしかないのでこちらで調べるのも無理です・・・一応、いろいろこちらでも調べてみます。

[395]レス
Sinagawa 2004/10/22 12:23:50>ASさん
アドバイスありがとうございます。
.NET Frameworkはインストールしてあるのですが、それでも動作しません(hspdxfix.dllが見つかりませんとエラーが出る)。
VS.NET2003でコンパイルされているHSP自体は動くので、その当たりは問題ないはずなのですが。
ただ、SP1を当ててあるにもかかわらずバージョン番号が古いままなのが気になります。
まあ差し当たりVS.NETでコンパイルしないといけないような状況でもないので、じっくりと調べていこうと思います。
>Y+Y=M.Hさん
HSPが作成したウィンドウをDirectXが横取りするような形になりますので、基本的にHSPDXFIXを使用した時点で
パレットモード云々に関係なく標準描画命令は使えなくなると思ってください。
一応、使用するにあたっていろいろ制約があっても良いのならes_gdi命令を使って標準描画命令を
使用することはできますが。

[394]HSPDXFIXのパレットモードについて
Y+Y=M.H (http://www.h2.dion.ne.jp/~pk_pc) 2004/10/22 11:02:02HSPDXFIXを使ってフルスクリーンにしたときに、フルカラーならgcopy等標準命令が使えますが、パレットモードならやっぱり標準命令は使えないんでしょうか?

[393]VS.NETでコンパイル
AS 2004/10/21 14:20:21したものは.NET Frameworkが必要では?
もし、.NET Frameworkを98SEにいれてないのでしたら.NET Frameworkをいれてもう一度動作確認してみてはいかかでしょうか?

[392]レス
Sinagawa 2004/10/11 12:05:03>どのような状態なのか文章で説明するのが難しいので、
>メールで写真を送らせていただいてよろしいでしょうか?
はい、お願いします。

[391]es_move(仮)
ゆうき (http://ww22.tiki.ne.jp/~y-shirakawa/) 2004/10/10 23:34:57>命令追加+フラグ追加で実装しようと思います。
個人的なリクエストにも関わらず、すぐに取り入れてくれて本当に感謝です。
更新、楽しみに待ってます^^

[390]レスありがとうございます
TOSHI 2004/10/10 13:12:24やっぱりこちらの環境が問題ですか。
どのような状態なのか文章で説明するのが難しいので、
メールで写真を送らせていただいてよろしいでしょうか?

[389]レス
Sinagawa 2004/10/10 12:27:20>Direct3Dを使ってスプライトを表示するとなぜか縦長になり、
>es_sizeで指定した以上の大きさが表示されます。
おそらく環境依存の問題だと思います。こちらでは問題なく表示できているので原因はわかりません。
ところで、これは縦に拡大されたようになっている、ということでよろしいでしょうか?

[388]質問させてください
TOSHI 2004/10/10 09:31:07はじめまして、HSPDXFIXを使わせていただいておりますTOSHIと申します。
HSPDXFIXを使うと非常にプログラムが楽になり、感謝の限りです。
ただどうしてもわからない事がありまして、質問させてください。
Direct3Dを使ってスプライトを表示するとなぜか縦長になり、
es_sizeで指定した以上の大きさが表示されます。
またDirect3Dを使用しなければ、一切問題はありません。
サンプルソースの「TEST5D3D」でも同じことが起こっておりました。
これはどのようにしたら解決するのでしょうか?
もしくはこちらの環境が原因なのでしょうか?
いろいろと試したのですが、どうしてもうまくいきませんでして、
教えてくださいますようお願い致します。

[387]有難うございます
葦田ひろかず 2004/10/09 16:56:49>>1.スプライトの自由落下移動がうまくいきません。
>内部処理でフラグ値の解釈を間違えていました。次のバージョンで直しておきます。
対応、有難うございます。修正をよろしくお願いいたします。
>>2.添付のHSPDXFIX.TXTにあるes_bound命令ですが、p3の記述が抜けています。
>ワンキーヘルプに記述があるにもかかわらず、なぜかテキストの方にはパラメータの説明だけ抜け落ちていました。
説明、有難うございます。ワンキーヘルプの方は見ていませんでした。済みません。
>>3.スプライト表示エリア設定(es_window)についてですが、以前と仕様が変更に
>>なったのでしょうか?
>スプライトの表示領域を変更する命令でオフセットまで変わるのは不自然だと思ったので、
>Ver 0.14beta4で仕様を変更しました。
仕様変更の件、了解致しました。
仕様変更による不都合は、特に無いと思います。
今作っているのも、スクリプトを若干書き換えるだけで対応できると思いますので。
それでは、今後ともよろしくお願いいたします。

[386]レス
Sinagawa 2004/10/08 11:59:00>葦田ひろかずさん
>1.スプライトの自由落下移動がうまくいきません。
内部処理でフラグ値の解釈を間違えていました。次のバージョンで直しておきます。
とりあえず、現バージョンでは$400を指定すればうまくいきます。
>2.添付のHSPDXFIX.TXTにあるes_bound命令ですが、p3の記述が抜けています。
ワンキーヘルプに記述があるにもかかわらず、なぜかテキストの方にはパラメータの説明だけ抜け落ちていました。
p3は画面端でバウンドを行うフラグで、1がX方向のみ、2がY方向のみ、3が両方となって
います。
このパラメータは特に必要がない限り指定する必要がないため、デフォルト値を設定するようにしておきます。
>3.スプライト表示エリア設定(es_window)についてですが、以前と仕様が変更になった
のでしょうか?
スプライトの表示領域を変更する命令でオフセットまで変わるのは不自然だと思ったので、
Ver 0.14beta4で仕様を変更しました。
更新履歴には修正と書いてありますが、この更新は独断で行ったことで、そもそもそれが実際に
不具合なのかはわかりませんので、もし不都合などありましたら以前の仕様に戻そうと思います。
こちらの不手際により、余計な混乱を招く結果となってしまったようで申し訳ございませんでした。
>ゆうきさん
>その方法ですが、個人的には汎用的な設計が出来る様、完全に分離して欲しいと思って
います。
>
>>es_draw命令に描画するだけのフラグをつけて、新たにes_move(仮)命令を実装
>そうなれば最高です^^
では、命令追加+フラグ追加で実装しようと思います。

[385]es_move(仮)
ゆうき (http://ww22.tiki.ne.jp/~y-shirakawa/) 2004/10/08 00:39:00要望を聞いてくれて有難うございます。
その方法ですが、個人的には汎用的な設計が出来る様、完全に分離して欲しいと思っています。
>es_draw命令に描画するだけのフラグをつけて、新たにes_move(仮)命令を実装
そうなれば最高です^^
あとフラグ追加、0(両方) 1(移動のみ) 2(描画のみ)
みたいなのも、いいと思います。

[384]スプライト表示エリア設定について
葦田ひろかず 2004/10/07 15:00:31 すみません。追加の質問です。
3.スプライト表示エリア設定(es_window)についてですが、以前と仕様が変更になった
のでしょうか?
以前は、スプライト表示基点X座標、スプライト表示基点Y座標が
スプライトの表示座標0,0になっていたのですが・・・
以上、よろしくお願いいたします。

[383]自由落下移動について
葦田ひろかず 2004/10/07 14:30:06 はじめまして。HSPDXFIXのバージョンアップに大変感謝しております。
質問が2点あります。
1.スプライトの自由落下移動がうまくいきません。
es_flagのp2に$500を入れているのですが、一瞬でスプライトが消えてしまいます。
何か設定が間違っているのでしょうか?
2.添付のHSPDXFIX.TXTにあるes_bound命令ですが、p3の記述が抜けています。
その為、p3にどういう数値を入れたら良いのか分かりません。
以上、お手数をお掛けしますが、ご確認をよろしくお願いいたします。

[382]レス
Sinagawa 2004/10/06 12:51:15>たかのんさん
後で知ったんですが、いろんな意味で機能していなかったようです>うちのリンクページ
>ゆうきさん
>ところで要望なんですが、現時点ではes_aposやse_adir等でスプライトを自動的に動かすタイミングは
>es_drawの時だったと思います。しかし、スプライトを動かさずに描画のみしたい場合や、
>フレームスキップの設計がしたい場合、このままではやや難しい状態にあります。
>そこで、スプライトを描画する処理と、自動的に動かす処理を、どうにか分離できないかと思っています。
es_draw命令に描画するだけのフラグをつけて、新たにes_move(仮)命令を実装、と言う風でいいですかねえ?
es_draw命令にパラメータ付け足すのならスキップするフレーム数を指定するようにした方が
何となくスマートな気もしますが、どちらがよいでしょうか(一応第三者の意見歓迎)。
処理の分離自体は容易にできるはずですので、やってみようと思います。
>講座のDirectXを使おうの巻・その2についてですが。
>4【キャラクタ登録】の es_pat 命令のp2,p3は、キャラクタのサイズを
>指定するのではなくて、キャラクタパターンの左上X、Y座標を指定する
>んだったような気がします…。
確認しました。修正しておきます。

[381]こんにちわ
ゆうき (http://ww22.tiki.ne.jp/~y-shirakawa/) 2004/10/06 00:01:24サイトの運営再開を嬉しく思ってる者の一人です。
HSPDXFIXの使い勝手が良すぎるので、次作の弾幕ゲーの描画ライブラリとして使用させていただきたいと思っています。
ところで要望なんですが、現時点ではes_aposやse_adir等でスプライトを自動的に動かすタイミングはes_drawの時だったと思います。しかし、スプライトを動かさずに描画のみしたい場合や、フレームスキップの設計がしたい場合、このままではやや難しい状態にあります。
そこで、スプライトを描画する処理と、自動的に動かす処理を、どうにか分離できないかと思っています。
・報告
講座のDirectXを使おうの巻・その2についてですが。
4【キャラクタ登録】の es_pat 命令のp2,p3は、キャラクタのサイズを
指定するのではなくて、キャラクタパターンの左上X、Y座標を指定する
んだったような気がします…。

[380]うおっ
たかのん (http://homepage1.nifty.com/takanon/) 2004/10/05 22:38:44リンクがトップページにきてるっ
ありがたやありがたや・・・。

[379]ありがとうございます
ひろっち 2004/09/20 12:54:36他の場所でループして、弾とマップ判定をして改善されました。
製作続けます!

[378]有り難う御座います。
x68k (http://www.zeroqoo.com/) 2004/09/17 19:39:57>了解しました。次回の更新でリンクを張ります。
有り難う御座います。
こちらからは、リンク完了しました!
これからも、どうぞ宜しくお願い致します。

[377]ありがとうございます
ふじもと 2004/09/17 00:15:10>次のバージョンで直しておきます。
ありがとうございます。
ゲームとかは作りませんが(作れない人(^^;)、HSPDXFIXって便利ですね!

[376]レス
Sinagawa 2004/09/16 14:38:05>x68kさん
了解しました。次回の更新でリンクを張ります。
>ふじもとさん
es_effectの回転角はes_iniに依存しますが、バグで(es_iniで指定した精度/4096)周しか
回転しないようになっていました。次のバージョンで直しておきます。

[375]↓
ふじもと 2004/09/16 00:29:46『回転角は一周4096度で固定』について・・・です。
誤ってEnter押してしまいました(^^;

[374]『回転角は一周4096度で固定』ni
ふじもと 2004/09/16 00:26:16es_iniで、周の精度を4096以下にすると、スプライトが回転しないみたいです。
長くてすみませんm(_ _)m
;ここから▽
#include "hspdxfix.as"
;
es_ini 5,5,64;es_ini 5,5,4096
es_screen 640,480,32,0,0,1
if stat=1{end}:if stat=2{end}
;キャラクタの用意
buffer 3,320,128,0:picload "TESTCHR.BMP"
es_buffer 0,0,0,0,1:es_size 64,64,100,1:es_pat 0,0,64,0
;
gsel 0:es_cls:es_sync:es_set 0,2,20,0
;ループ
repeat
ct++
es_effect 0,64,64,0,0,ct,-1,255
stick ky,$1f:if ky&$80{end}
es_cls:es_draw:es_sync:await
loop
;ここまで△

[373]HSPDXFIX V0.15
x68k (http://www.zeroqoo.com/) 2004/09/15 18:59:49初めまして、
先ほど、Ver0.15をダウンロードさせて頂きました。
有り難う御座います。
あと、相互リンクして頂くことって出来ますでしょうか?

[372]レス2
Sinagawa 2004/09/14 12:30:41今ひろっちさんのソースを読み返してたら、どうもマップチップ一つずつに対して全ての弾の
当たり判定を調べているようですが、これを弾の座標にあるマップチップを調べて判定を
取るようにすれば、ループ回数がかなり減るので改善されるんじゃないかと思います。

[371]レス
Sinagawa 2004/09/14 12:21:30昔自分が作ったゲームで、当たり判定をrepeatとes_findで回しているところがあったので
比較してみたところ、es_findでスプライトNo.を取得するための変数と検索開始No.の変数を
別に用意していました。
4年前に作ったもので、動作確認していないので意味があってそうしたのか不明ですが、
それでうまくいくか試してみてください。

[370](無題)
ひろっち 2004/09/13 19:41:42ミサイルは2連射 レーザーは多めです。
オプションも使うので、×4になります。
ソースはこんな感じですが・・・。
http://sak2-2.tok2.com/home/hirottig/fasu.txt

[369]レス
Sinagawa 2004/09/13 11:29:08>マップ判定でミサイルとレーザー、自機の弾と当たり判定したんですが
>処理落ちが出ます。マップチップと自機の弾との判定ですが。
>どうもショットするだけで、プログラム速度が遅いんです。
グラディウス風STGと言うことで、ショットは3〜4発程度と考えるとよほどマシンスペックが
低くない限りはその程度の処理でスローがかかると言うことはまずないはずです。
考えられる原因として、当たり判定を調べる際に何らかのミスで必要以上、それも
かなりの量のループが発生しているか、たとえばバッファがメインメモリに置かれるなどして
ハードウェアエミュレーションで動作しているせいで描画回りが重くなっていて、
たまたまショットを撃った時にスペックの限界に来てしまったか、そのあたりじゃないかと思います。

[368]始めまして。
ひろっち 2004/09/12 19:51:29HSPDXFIXを使って、シューティングゲーム(グラディウスネタ)「フォース」を作っています。
マップ判定でミサイルとレーザー、自機の弾と当たり判定したんですが
処理落ちが出ます。マップチップと自機の弾との判定ですが。
どうもショットするだけで、プログラム速度が遅いんです。

[367]v0.15
たかのん (http://homepage1.nifty.com/takanon/) 2004/09/12 14:13:34まずはv0.15正式版リリースお疲れ様でした。
先ほどダウンロードさせて頂きリファレンスを読んでいます。
今作っているソフトの絵が8bitで網羅されてしまっているため
ひとまずは低スペック対応版としてDirect3Dの機能は使わず
完成させる予定です・・・(涙)
4年経って完成してないですからね。
いい加減どこかでケリつけないと>自分

[366]ありがとうございました
だりそう 2004/08/23 16:29:10お陰様で解決できました。ありがとうございました。

[365]ありがとうございました
Y+Y=M.H (http://www.h2.dion.ne.jp/~pk_pc) 2004/08/20 10:10:55さっそくの返信、ありがとうございました
う〜ん、残念です(*o*)

[364]レス
Sinagawa 2004/08/20 00:34:08>Y+Y=M.Hさん
>REPTOOLで調べたところ、アルファ成分をサポートしていないとなったのですが、
>コレの関係で半透明処理が使えないのでしょうか?
そうです。残念ですが、お使いのハードウェアではアルファ値が固定になるために、
ブレンドファクターによっては透過はされても透明度を変更できない状態になります。
>だりそうさん
>質問なのですが、es_adirやes_aposを使うと、
>画像描画やスプライトを使っていないのに、
>オフスクリーンバッファID0の座標0,0の32x32サイズの
>画面が表示されてしまうのですが、どうすればよいのか、教えてください。
es_bufferを実行した後に「gsel 0」が入っているかどうか確認してください。
もし、ほかの描画命令などが問題なく動いているのであれば、その現象が発生する
スクリプトを見てみないとわからないです。

[363]es_adirとes_aposについての質問
だりそう (http://www31.ocn.ne.jp/~darisou) 2004/08/19 20:55:43はじめまして。いつもhspdxを使わせて頂いています。
質問なのですが、es_adirやes_aposを使うと、
画像描画やスプライトを使っていないのに、
オフスクリーンバッファID0の座標0,0の32x32サイズの
画面が表示されてしまうのですが、どうすればよいのか、教えてください。
adirだと、勝手にその32x32のデータが指定した速度で動いてしまいます。
hspdxfixでも試してみたのですが、うまくいかないようなんです。

[362]REPTOOLで【アルファ成分をサポートしていない】
Y+Y=M.H (http://www.h2.dion.ne.jp/~pk_pc) 2004/08/19 15:03:48HSPDXFIX使わせてもらってます!
ありがとうございますm(_ _)m
とうとうHSPDXFIXでも半透明処理が使えるように・・・
と思っていたら私のパソコンじゃどうにもうまくいきません
REPTOOLで調べたところ、アルファ成分をサポートしていないとなったのですが、
コレの関係で半透明処理が使えないのでしょうか?
すみませんが、教えてください

[361]ありがとうございますー!
イナダ (http://yamagin.hp.infoseek.co.jp/jugo3.lzh) 2004/08/14 23:58:30>次のバージョンで直しておきます。
ありがとうございますー!
HSPDXは、本当に手軽にゲーム製作が出来るので、
キャラクターの管理とか適当にしていたので・・・。
ちなみにリンク先は、今製作中のものです。

[360]レス
Sinagawa 2004/08/13 10:24:17>ところでes_flagでカウントダウンタイマーを設定したスプライトを消滅前にes_killで消去した場合
>再度es_newで同じナンバーのスプライトを呼び出した場合タイマーがリセットされないのですが・・・。
es_blink命令を作った時に拡張したカウンターをリセットしてませんでした。
次のバージョンで直しておきます。

[359]わー!
イナダ (http://yamagin.hp.infoseek.co.jp/) 2004/08/13 00:52:19beta5になって、ウチのパソコンでもテクスチャーが見えるようになりました。
これからの進化にも期待しています!
ところでes_flagでカウントダウンタイマーを設定したスプライトを消滅前にes_killで消去した場合
再度es_newで同じナンバーのスプライトを呼び出した場合タイマーがリセットされないのですが・・・。

[358](無題)
TKS 2004/08/12 15:54:59>その当たりの実装も視野に入れておこうと思います。
本当ですかっ!ありがとうございますっ!

[357]Re:es_copy...es_boxf...es_line...?
Sinagawa 2004/08/12 09:59:55>それで、はじめましてなのに申し訳ないのですが
>es_lineという直線を描画する命令を追加してほしいのです。
>es_boxfで斜線を表現する時に何度もes_boxfを使うと処理落ちするみたいなのです。
たぶんGDIベースでの描画(HSP標準命令とほぼ同じ)になるのでどのくらいの速度が出せるかわかりませんが
その当たりの実装も視野に入れておこうと思います。
ちなみに、es_boxfはDirectDraw描画の場合、内部でサーフェスロックしてVRAMを読みに行く(*)ため、
es_fillやes_copyに比べて処理が遅く、速度が要求される場面での使用には向いていません。
(*)簡単に言うと、ソフトウェアでVRAMを読もうとすると重い処理を行う必要があるって事です。

[356]es_copy...es_boxf...es_line...?
TKS 2004/08/11 15:45:56はじめまして。
「おお、出来たっ!」などと色々感動しながらHSPDX使わせてもらってますー。
それで、はじめましてなのに申し訳ないのですが
es_lineという直線を描画する命令を追加してほしいのです。
es_boxfで斜線を表現する時に何度もes_boxfを使うと処理落ちするみたいなのです。
あ、使いたい理由はシューティングゲームの背景をサイバーチックなものにしたいという情けない理由なのですが(汗)
もしよろしければお願いいたします。

[355]Re:はじめまして。
Sinagawa 2004/08/11 12:45:12>僕これからHSPをはじめようと思ってる初心者なんですが、
>OSがwindows Me(millenium edition)なんです。
>それでwindows MEでもHSPって使えますか?
WindowsMeは持っていませんが、readme.txtに「Windows95以降(98/Meなど)で動作します」
と書いてあるので問題なく動くはずです。

[354](無題)
誰でしょう 2004/08/11 12:43:38たぶんできるかな〜?
わからん
わからんくてごめん

[353]はじめまして。
ポンタ 2004/08/11 02:22:26僕これからHSPをはじめようと思ってる初心者なんですが、
OSがwindows Me(millenium edition)なんです。
それでwindows MEでもHSPって使えますか?
ダウンロードしようとしたら、Meの名前が入ってなかったのでどうしたもんかという
状況なんです。分かる人いたらお願いします。

[352]ありがとうございました(es_chrについて)
13th_Death 2004/08/11 00:40:17ご指摘の通りでes_linkの指定を間違っていました。
こちらの確認ミスで質問してしまい申し訳ございませんでした。
ありがとうございました。
これからもがりがり且色々と使用させて頂きます。

[351]みなさんへ
誰でしょう 2004/08/09 20:48:29そのほかこまったら
メルしてくれ

[350](無題)
誰でしょう (http://www.geocities.co.jp/NeverLand/7193/) 2004/08/09 20:46:24>374へ
それでは、当たり判定に
変数加えてgcopyのやつをかえてみれば
いいんじゃないかな?

[349]こんにちは♪
誰でしょう (http://www.geocities.co.jp/NeverLand/7193/) 2004/08/09 19:26:49高浜中学校の???です。
この学校ではHSPを使った
ゲームがあるんで
ダウンロードしてくだせぇ
m(。。)m

[348]Re:初めまして+es_chrについて
Sinagawa 2004/08/09 18:10:06>es_chr命令でアニメーションしているスプライトを別のキャラクタに差し替えると
>(es_put命令で表示フレームを1以上に設定していても)アニメーションが止まってしまうのは仕様なのでしょうか?
こちらで確認した感じではes_chrでキャラクタを変更してもしっかりアニメーションが
行われていましたし、内部処理でもアニメーションを止めるようにはなっていません。
es_patやes_linkの設定に問題がないか確認してみて下さい。

[347]初めまして+es_chrについて
13th_Death 2004/08/09 04:18:33初めまして+復帰おめでとうございます。
HSPでちまっとしたのから盛大なものまでゲーム作る際に非常に簡単便利で
感謝感激雨霰って感じで作成を楽しんでおります。
そこで1つ質問です。
シューティングを作っていてダメージで見た目が変わる
(別のキャラクタアニメーションに切り替える)様にしようとしているのですが、
es_chr命令でアニメーションしているスプライトを別のキャラクタに差し替えると
(es_put命令で表示フレームを1以上に設定していても)アニメーションが止まってしまうのは仕様なのでしょうか?
マニュアル読み落としてたらすみませんが御教示下さい。お願いします。

[346]Re:es_copyについて
Sinagawa 2004/08/06 00:06:58>今シューティングゲームを作っていて、背景をスクロール
>させたいんですけど、pos命令で指定したところではなく、
>常に(0,0)の座標にコピーされてしまいます。
es_bufferとか使うために別のウィンドウをアクティブにしてそのままにしてあると
そうなることがあります。スクリプト中に「gsel 0」があるかどうか確認してください。

[345]es_copyについて
att 2004/08/05 13:37:47es_copyについて質問があります。
es_copyはpos命令で指定した座標を左上として
コピーするんですよね?
今シューティングゲームを作っていて、背景をスクロール
させたいんですけど、pos命令で指定したところではなく、
常に(0,0)の座標にコピーされてしまいます。
どうしたらいいですかね?

[344]バージョン数
Sinagawa 2004/08/04 00:46:17>hspdxfix.dllの最新の『正式版』は2002/01/05のv0.14ですよね?
>今アップデートされているものが最新の正式版になったら、
>それはv0.15になるんでしょうか?
たぶんそうなると思います。別にベータリリースの分だけ跳ね上げてもいいんですけど、
あまりバージョン数にはこだわってないんで「正式リリース一回ごとに0.01アップ」でいいかなと。

[343]b4
たかのん (http://homepage1.nifty.com/takanon/) 2004/08/03 22:01:05バージョンアップご苦労様です。
es_dist実装ありがとうございます。
(angに続く2つ目ですね^^;)
ところで気になってることが1つ。
hspdxfix.dllの最新の『正式版』は2002/01/05のv0.14ですよね?
今アップデートされているものが最新の正式版になったら、
それはv0.15になるんでしょうか?

[342]ありがとうございました!
スッケ 2004/07/28 23:24:59なるほど!
おかげで続きが作れます
ありがとうございましたm(_ _)m

[341]Re:モジュールについて
Sinagawa 2004/07/28 22:26:29>モジュールでes_boxfやes_copyを使うと『文法が違います』というエラーがでてしまいます
>モジュールでは、これらの命令は使えないのでしょうか?
モジュール内でプラグインを使う場合、その中でヘッダファイルをインクルードする必要が
あります。
#module"hoge"
#include"hspdxfix.as"
:
:
#global

[340]モジュールについて
スッケ 2004/07/28 16:20:35はじめまして。
ゲーム作りにhspdxfixを使わせてもらってます。
モジュールでes_boxfやes_copyを使うと『文法が違います』というエラーがでてしまいます
モジュールでは、これらの命令は使えないのでしょうか?
ご教示お願いします

[339]あと3つほど増やしてもいいですか(笑)
Sinagawa 2004/07/27 05:03:02>ところで全然別方面の機能追加要望なんですが、
>2点間の距離(ピクセル数)を計測する命令って可能でしょうか?
実装自体は簡単にできますので、次のバージョンで入れようと思います。
別に戻り値は整数でも問題ないですよね? っていうかピクセルだから小数いらないか。

[338]12パラメータって何かすごい
たかのん (http://homepage1.nifty.com/takanon/) 2004/07/27 00:31:13beta3のデモ拝見しました。
回転してるー
半透明になるー
加算合成してるー
減算合成してるー
すげーすげー
次はスプライトに適応ですか?
くー楽しみ
ところで全然別方面の機能追加要望なんですが、
2点間の距離(ピクセル数)を計測する命令って可能でしょうか?
sin・cosとangがあるので非常に便利ではあるのですが・・・。

[337]HSPDXFIX0.14beta3のサンプルプログラム
Sinagawa 2004/07/26 23:35:35実行してみて「クソ遅ぇー」と感じた人は51行目を
es_buffer 0,2,0,0,0
に変えてみてください。なんでこんなスクリプトで200fps切ってるんだろうと思ったら
こちらのミスで第5パラメータが抜けてました。

[336]はじめまして
イナダ (http://yamagin.hp.infoseek.co.jp/) 2004/07/23 23:59:12HSPDXを使って、ゲーム製作を楽しんでいます。
プログラムの知識がほとんど無くても高度な処理が使えて
本当にありがたいです。
これからの展開も期待しております。

[335]レス
Sinagawa 2004/07/22 16:39:08>えーっと確認ですが、第3パラメーターで指定した数値が
>そのままes_adirやes_aimで使われるという理解でよろしいでしょうか?
はいそうです。
ちなみに、es_excopyの回転表示はこのパラメータに関係なく一周4096度で行こうと思ってます。

[334]な、なんだってーー?!(AA略
たかのん (http://homepage1.nifty.com/takanon/) 2004/07/22 01:27:17>Ver0.14で一周4096度まで使えるように対応しています。
全然気づいてませんでした^^;
えーっと確認ですが、第3パラメーターで指定した数値が
そのままes_adirやes_aimで使われるという理解でよろしいでしょうか?
es_ini ,,4096であれば、真上方向にあたるのは2048と。
2年前に実装されてたんですね・・・音速遅っ(苦笑)

[333]レス
Sinagawa 2004/07/22 01:04:08トップページ更新後にさらに進展、ポリゴンがまともに表示されるようになりました。
次はテクスチャー。
>現在移動系の命令は64方向しか対応していません。
>ぶっちゃけ大まか過ぎるので、256方向対応の命令を追加して頂きたいです。
Ver0.14で一周4096度まで使えるように対応しています。
(es_iniの第3パラメータにある、「周の精度」なる造語っぽいやつがそうです)
現在のHSPに同梱されているHSPDXはこちらの不手際により古いバージョンのままですので、
もしそちらを使っているのであれば最新版をダウンロードして確認してください。

[332]復帰おめでとうございます!!
たかのん (http://homepage1.nifty.com/takanon/) 2004/07/21 23:32:16おおおおおおSinagawaさんが復活してらっしゃる!
再開おめでとうございます。
私のほうも半分眠ったような状態で、当時開発中だったものが
未だに開発中という体たらくでございまして^^;
まぁマイペースでぼちぼちいきましょう。
一つ私からの要望です。
現在移動系の命令は64方向しか対応していません。
ぶっちゃけ大まか過ぎるので、256方向対応の命令を追加して頂きたいです。
メインはes_adirとes_angですが、どうもes_aposとes_aimも強制的に64方向に変更されてるっぽく・・・。
新バージョンへの実装をご検討頂ければ幸い。
半透明・加算減算合成・回転などのDirect3D系の実装も期待しております。
それではノシ

[331]α合成についてのレス
TAK 2004/07/17 01:29:44α合成が使えないのが唯一の不満点だったので実装予定がある様で安心しました
これからの開発にも期待していますので無理せず頑張って下さい
他の案としてはes_copy es_setの前にgmodeの様な命令で透明度、回転等を指定しておく方法もありますがSinagawaさんの方法の方が直感的に分かりやすくて良いと思います

[330]レス
Sinagawa 2004/07/17 00:48:13皆様ご声援ありがとうございます。
>1つ質問があるのですがα合成の実装予定はないのでしょうか?
半透明処理の要望はかなり前からありますので、いい加減実装させなければと
思っていながらもまだ着手されていない状況です。ただ、内部処理が完成しても
仕様をどうするかが決まっていないため、実際に使えるようになるまでまだまだ
時間がかかると思います。
一応自分の案としては、
・半透明処理の使用はes_screenのパラメータを拡張して指定する。
(Direct3Dでの初期化が必要なため必須)
・コピーにはes_excopy(仮)という命令を作成し、伸縮回転半透明全て一括で指定できるようにする。
・スプライトについても同様に一括指定できる命令を用意する。
というのを考えてみましたが、もし他にいい方法などありましたらご意見を下さい。

[329]初めまして
TAK 2004/07/16 22:31:20復帰おめでとうございます
HSPDXはゲームの作成に必要なスプライトの使用や角度の計算等が簡単にでき非常に助かっています
1つ質問があるのですがα合成の実装予定はないのでしょうか?
α合成を使えばかなりエフェクトの完成度を上げられるのですが
プライグインの性質上他のプライグインを使うこともできず困っています

[328]復帰おめでとうございます
たけあ (http://f26.aaacafe.ne.jp/~takea/index.html) 2004/07/09 00:44:57初めまして、たけあと申します。
この度は、復帰おめでとうございます。
HSPDXFIXにはとてもお世話になっております。
本当にどうもありがとうございます。
去年初めて使用したのですが、HSPであんなに
早く描画できる事にとても驚きました。
また、動作がとても安定しており、とても信頼できるdllです。
一言お礼が言いたくて、初めて書き込み致しました。
これからのご活躍を楽しみにしております。

[327]私も
くろ 2004/07/07 16:57:01復帰おめでとうございます。
私もDelphiなどでアプリ系のソフトを作っていたのですが
今度ゲーム製作をすることになりHSPに戻ってきました。
やっぱりHSPは楽ですし、DirectXもHSPDXで簡単に使えるので
助かります。(DelphiのDirectXで泣きそうになりました)
以前はフルカラーが使用できなかったので、少し不満があったのですが
そこも修正されたようで安心しました。
それでは、これからも頑張ってください。応援しています。

[326]復帰しました
Sinagawa 2004/06/23 02:33:26トップページにも書きましたが、本日よりボチボチとではありますが活動を再開いたします。
長らく放置状態にあったため、ここに書き込んだりメールいただいた方には何の返信もできなくて
大変ご迷惑をおかけいたしました。
正直な話、放置期間中はプログラミングから離れていたため、HSPに関する質問をしても
極力対処しますがレスは期待できないかもしれませんので申し訳ございませんが
そのあたり了承いただきますようお願いします。

[325]sdimについて質問
土屋 2004/04/23 10:51:45 sdim buf,1,8000
bload "filename",buf
:
:
dat=buf.0 - >バッハオーバーフローになってしまう。

[324]HSPの....
*** 2004/04/03 12:26:17http://0bbs.jp/hspbbs/
↑HSPの掲示板です。

[323]HSPDXFIXを使った処理について
SE 2004/03/02 20:59:31初めまして、恐れ多くもプラグインの使用に関して
質問をさせていただきます。
スプライトの表示順を変えるためには、どんな使い方を
すればいいのでしょうか?
ちょっと漠然とした質問で申し訳ないのですが、
結構悩んでたりしてどうしても分からなくて…。
スプライトの登録、表示までは理解しているつもりなので
もしよろしければご教示くださいませー

[322]こんちは
タイピング同盟 2004/01/29 20:22:23http://www.geocities.jp/kuroneko_0525/index.htm
タイピング同盟って知ってますか?
最近自分も入ったんですけど、参加者が少なくて・・・
興味のある方一緒に頑張りませんか?

[321](無題)
電子少年 (http://www.geocities.jp/ciu22540/) 2003/12/20 00:00:20my home pageは間違いです。

[320]>>水卓さん
電子少年 (http://www.geocities.jp/ciu22540/) 2003/12/19 23:59:23私も探しておりましたが見つけました。
これは、start.axファイルの情報をJavaアプレットが読み込んでネットワーク上で実行するというものです。
下にリンクを残しますのでこのページからダウンロードしてください。
HSP Letです。
http://www.rinku.zaq.ne.jp/ultimate/
my home page

[319]教えて下さい、お願いします
水卓祐二 2003/12/18 18:50:53初めまして、水卓と申します。
今回はお尋ねで書き込ませていただきます。
HSPでプログラムを作ったのですが、それをIEで動作させる方法が判らないのです。
HTMLに組み込みたいと思っているのですが、それはどのようにすればいいのでしょうか?
大変お手数ですが、メールでご回答願いますか?
どうぞよろしくです。

[318]↓はじめまして
電子少年 (http://www.geocities.jp/ciu22540/) 2003/12/07 18:58:42はじめまして
質問に答えたあとに質問してなんだか変ですが・・・
オブジェクト経由で元に戻す、切り取り、コピー、
貼り付け、削除、すべて選択を行いたいのですが、
objsend命令でメッセージボックスに送るコマン
ドを教えてください。

[317]>>はじめましてです
電子少年 (http://www.geocities.jp/ciu22540/) 2003/12/07 18:51:17>>斬撃さん
メニューバーを表示するにはプラグインを使います。
私が知っている中では「Exforce.dll」と「Srexhsp.dll」
私としては、「Exforce」のほうが使いやすいと思います。
「Exforce」は現在シェアウェアですが(有料)、以前のバー
ジョンがミラーで配布されています。
あと、プラグインを使うときは、dllをhspのフォルダに、
ヘッダーファイルをcommonディレクトリに入れてください。
リンク
force's home page
http://hp.vector.co.jp/authors/VA015266/
前バージョン「Exforce.dll」配布先
http://www3.tky.3w