HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
0822
Mgcopyのバグ?仕様?6解決


M

リンク

2010/8/22(Sun) 11:30:07|NO.34570

gmodeに0以外を指定し、コピーする領域の中にコピー先の座標が入るようにgcopyすると、画像が連続して複写されます。
バグでしょうか、仕様でしょうか。
だいぶ前から存在している現象のようですが、「いずれ修正されるが、とりあえず残っているバグ」なのか、「公表こそされてはいないが、テクニックの一つ」なのか・・・。

同一パターンの埋め尽くし作業が簡単にできるので、これほど有り難いものはないのですが、「バグなので修正されました。もう、その手法は使えません」となると、結構痛手。
なまじ、コンテストの時期だけに、不安なのです。

「バグだから使わないで」なのか、「そういう風に作ってあるんだ。バンバン使ってくれたまえ」なのか、作者サイドからのオフィシャルなコメントが欲しいとです。


gmode 2 ;gmodeが0以外のときに発生する color 255,0,0 circle 0,0,32,32,1 ;●を描く pos 32,0 ;copy先を隣の座標に指定して、 gcopy 0,0,0,640,32 ;copy先の座標が入るようにgcopyすると、●で埋まる pos 0,32 ;同様に、縦方向に向かってgcopyすれば、 gcopy 0,0,0,640,480 ;瞬く間に、画面いっぱい●で埋まる。ありがたや



この記事に返信する


R

リンク

2010/8/22(Sun) 22:30:33|NO.34572

ピンと来なかったけど実際に実行したらなるほど。
コピー元とコピー先が同一だからこそ起こりうるバグなんですかね。

コピー元、コピー先が違えば、コピー元の状態をそっくりそのままコピーできるけど
コピー元、コピー先が同じだと、コピーの最中に画像が描き換わってしまいますよね。
その描き変わった部分もそのままコピーされてタイルのように並んじゃうんでしょう。

gmodeが0だと起こらないのはWindowsのAPIを使っていて処理の仕組みが違うから、ですかね。



木村

リンク

2010/8/29(Sun) 21:28:22|NO.34711

 repeat〜loop構文は確か1個当たり16バイト位はAXファイルの容量を食ったはずです。
 それが無くなるという事はHSPTV部門の容量軽量化に寄与すると言う事ですから、グレー
ゾーンに放置しておくのは惜しい気がします。(x軸y軸双方にコピーするとして32バイトの
削減、命令1個か2個分のサイズに相当)



あり

リンク

2010/8/30(Mon) 12:01:35|NO.34720

面白い現象ですが文法どおりに打ち込んで本来得られるはずの結果が出ないのは
やはり不具合だと思うので新しく指定したパターンで領域を塗り潰す命令or機能を
追加してもらった方が便利ですし安心できますね。



KA

リンク

2010/9/1(Wed) 20:59:27|NO.34781

色を変えたら起こらない???
やっぱりバグ???



おにたま(管理人)

リンク

2010/9/2(Thu) 01:28:02|NO.34788

皆さんの検証とご意見ありがとうございます
今のところコピー元とコピー先の領域がぶつかった場合は、動作保証外と考えています。
gmode 0の場合はWindows API(bitblt)で処理されるため、その仕様に従いますがすべての環境下で同一の処理になるのか、はっきりとはわかりません。
(DirectXなどでも、このあたりはビデオドライバや環境によって変わってくるところだと思います。)
gmode 0以外は、HSPの内部処理になるのでビデオカードや環境に関わらず同一の結果が保証されます。ただし、HSPの将来のバージョンや異なるプラットフォーム(HSPLetなど)では同一の処理になることは保証されません。
ということで、全体として考えると重なった領域のコピーを完全に保証することは難しいと考えています。
もちろん、今の仕様で作成してexeを公開して頂くことは何の問題もありませんが、将来に渡ってより互換性の高いスクリプトを作成するという意味では、このようなテクニックは使わない方が安全です。
まあ、メリット・デメリットありますので、「使うな」ということではなく使う上での参考程度に聞いておいてもらえればと思います。



M

リンク

2010/9/2(Thu) 19:16:22|NO.34796

了解しました!



ONION software Copyright 1997-2021(c) All rights reserved.