トップページgamedev
987コメント370KB

HSP - Hot Soup Processor [14]

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2006/12/09(土) 22:35:08ID:E0eCgjhQ
       (  ,,,)
        .(  ,,)      スクリプト言語 HotSoupProcessor について
        ( ,,).        ゲーム製作の視点から、また〜りと語り合うスレ。
     , -──- 、
    (,;::-──-; )-、
     .|` ̄ ̄ ̄´;;|ヽ l   * 質問する前に検索してみる事
     l;    :::;;;l-' /   * ヲチ、ネタなどはスレ違い
    ,-ヽ───.'-、´..   * 歴代スレ、関連サイトは >>2-4 あたり
    ヽ ──── '

  ONION software (本家)
   http://www.onionsoft.net/
0666名前は開発中のものです。2007/04/08(日) 10:45:14ID:YH0fkqKd
リンク張っていないので
ttp://www.onionsoft.net/hsp/file/hsp31b8.lzh
ttp://www.onionsoft.net/hsp/file/hspsdk31b8.lzh

なんかdgdgね
0667名前は開発中のものです。2007/04/08(日) 11:34:02ID:kbz+IrgG
>>665
note系命令で指定行取得してstrlen
0668名前は開発中のものです。2007/04/08(日) 12:54:56ID:yoJuvkiJ
>>667
thx
0669名前は開発中のものです。2007/04/08(日) 20:17:18ID:5KwOsR6N
新しいヘルプになって最前面に固定できなくなった?
0670名前は開発中のものです。2007/04/09(月) 12:50:06ID:DSUlSx8P
>なんかdgdgね
ディグダグ?
0671名前は開発中のものです。2007/04/09(月) 19:56:01ID:6Hv4syfu
>>670
グダグダ
0672名前は開発中のものです。2007/04/09(月) 22:23:05ID:ntsmkKok
dgdgならディグダグで正解じゃないか?w
0673名前は開発中のものです。2007/04/09(月) 22:44:43ID:xQ5lPNOu
新しい描画プラグインってどうなの?
0674名前は開発中のものです。2007/04/10(火) 01:23:00ID:k7+XauZp
>>673
こんなのが数十行で出来る
http://thelaughingman.net/
0675名前は開発中のものです。2007/04/10(火) 01:59:10ID:E0BpcqA+
描画プラグインに新しいのが出たのか?
0676名前は開発中のものです。2007/04/10(火) 08:57:53ID:k7+XauZp
β晩にhspcvが追加されている
が、サンプルはない
0677名前は開発中のものです。2007/04/10(火) 09:00:39ID:k7+XauZp
haarcascade_frontalface_alt2.xml はぐぐれ
#include "hspcv.as"
cvbuffer ,280, 212
cvloadxml "haarcascade_frontalface_alt2.xml"
cvload "認識させたい画像"
cvfacedetect , 1.0
if 0 == stat {
mes "認識失敗"
}
facearea_num = stat
cvgetimg , 0
dim maskarea, 4
repeat facearea_num
cvgetface facearea(0), facearea(1), facearea(2), facearea(3)
mes ""+facearea(0)+","+facearea(1)+","+facearea(2)+","+facearea(3)
loop
とりあえずこんな感じで認識できるはず
0678名前は開発中のものです。2007/04/10(火) 12:05:36ID:BMeKgnLh
>>677
動いた おもすれー
0679名前は開発中のものです。2007/04/10(火) 19:02:17ID:wiWwQvgv
変数データを直接読み書きできるって事は
セーブ・ロードが簡潔にできるってことなのかな
0680名前は開発中のものです。2007/04/10(火) 21:54:45ID:XIsMa+6t
うん
0681名前は開発中のものです。2007/04/11(水) 05:13:37ID:SKNSOWMH
ノートパッドで切り出しとかやってセーブ・ロードに苦心してた事も
いい思い出に変わるのかな
0682名前は開発中のものです。2007/04/12(木) 21:07:33ID:22vncB1J
初心者用講座とか色々廻ってたけど
電卓作るあたりで挫折した
0683名前は開発中のものです。2007/04/12(木) 21:08:29ID:bCgTq/qC
盛りage
0684名前は開発中のものです。2007/04/12(木) 21:20:14ID:j0G3mdxP
>>677
顔じゃ無い部分が認識された
よく見ると顔みたいに・・・

心霊写真かと思ったよw
0685名前は開発中のものです。2007/04/12(木) 21:20:43ID:00Wev8Rd
電卓で挫折って・・・
0686名前は開発中のものです。2007/04/12(木) 22:32:55ID:cq6R8ing
なんのためにコンピュータ使ってんだろうなw
0687名前は開発中のものです。2007/04/13(金) 02:40:01ID:KoxYsYvL
こんぽじっとぱたーん・・・・??????

デジタル土方レベルのCかBASICしか出来ない香具師でも
力技だけでゲームを作れる言語作ってくれよ!


あ、もうあるか。
0688名前は開発中のものです。2007/04/13(金) 15:33:03ID:kkKSJW2x
10,200,30,60 00 ってテキストに書いておいて、
カンマ区切りで配列にしたいんですが、

notesel fileLoad
noteload "data.txt",0
sdim Fname,32000,999
getstr Fname,fileLoad,0,','
dialog Fname.1
dialog Fname.2

って書いてもダイアログには数字が表示されませんでした。
カンマ区切りのテキストファイルから配列を作るにはどう書けばいいのでしょうか。
0689名前は開発中のものです。2007/04/13(金) 15:59:15ID:a+Uovvd0
>>688
それじゃあ、最初の一つしか配列に渡されないよ
notesel fileLoad
;noteload "data.txt",0
fileLoad="10,200,30,60,00"
sdim Fname,32000,999
index=0
repeat
getstr Fname(cnt),fileLoad,index,','
index+strsize
if ','!stat {break} ;getstrで区切りキャラクタ以外で取り出された
loop
repeat
if Fname(cnt)="" {break}
dialog Fname(cnt)
loop
end

プラグイン hspdaの csvstrと間違えた?
こっちなら一行分なら一回で配列に代入される
(でもhspdaには色々バグがあるから注意)
0690名前は開発中のものです。2007/04/13(金) 18:14:32ID:kkKSJW2x
>>689
ありがとうございます。おかげさまでできました。
助かりました。
0691名前は開発中のものです。2007/04/13(金) 20:07:44ID:I5qoCwtL
>>669
それ必要なの?
0692名前は開発中のものです。2007/04/13(金) 20:30:21ID:fWNR28q6
おれ別人だけど、ヘルプ見ながらスクリプト打ち込みたいとか?
0693名前は開発中のものです。2007/04/14(土) 00:03:39ID:atoydD3j
>691
うん、ヘルプ見ながら打ち込むので俺には必要。
命令のパラメータさえ分かればいいから小さくして右上に出しっぱなしにしてたんだが。
今は画面の3分の2にエディタ開いて残りにヘルプ出してる。
ヘルプブラウザのreadme見ても何も書いてないから抹殺されたんだろうな。
0694名前は開発中のものです。2007/04/14(土) 01:44:52ID:8sg2zORJ
作者のページにBBSもあるんだし
ここで聞くよりも、作者に直接聞いた方がいいと思うんだが
0695名前は開発中のものです。2007/04/14(土) 13:46:00ID:atoydD3j
あるか、ないか、が聞きたかっただけだから。
なけりゃないで、やり方はあるから作者ページに書き込むほどでもないと判断した。
0696名前は開発中のものです。2007/04/14(土) 13:57:51ID:tSlK/VcG
今アイテム数20個毎にページを増やすように作ってるんだけど、
コレを16個毎にして16進数で管理すると簡便化できる?
0697名前は開発中のものです。2007/04/14(土) 14:21:07ID:XHCB7tyo
>>696
\式使えば楽
0698名前は開発中のものです。2007/04/14(土) 20:07:48ID:tSlK/VcG
ありがd
0699名前は開発中のものです。2007/04/15(日) 19:29:31ID:HlbFQmd9
HGIMG3の簡易コリジョン(AABB)は実装されてますけど、
パーツ毎判定みたいのはいつ頃に実装されるのかな?

あんまり実装遅いなら使いたくないけど、ランタイムなのが魅力的なんだよな〜
おにーたまHGIMG3スケージュルも出して欲しい
0700名前は開発中のものです。2007/04/16(月) 03:55:20ID:jNSmnASU
パーツっつーかポリゴン毎のコリジョンか?
かなり重くなると思うんで簡易的にやったほうが良いんじゃないかと思うんだが…。
0701名前は開発中のものです。2007/04/16(月) 10:10:37ID:bENpqRAl
hmm使ってフルスクリーンで動画再生するとキー入力受け付けなくなるんだけど
どうしようもないですか?
0702名前は開発中のものです。2007/04/16(月) 18:25:39ID:9S9SQQvC
256*224の解像度を512*448のウィンドウで2倍表示したいんですが、
directXを使う以外に方法はありませんか?
0703名前は開発中のものです。2007/04/17(火) 01:46:56ID:Zo18qgQY
>>702
>>623-624
07047022007/04/17(火) 07:26:05ID:/o1QDDuz
>>703
どうもッス。ファミコンぽいアクション作ってて、
gzoomだと透過色が使えないので困ってます。
0705名前は開発中のものです。2007/04/17(火) 11:40:10ID:Lf6HAn0k
>>704
読み込んだ後にgzoomで他のバッファにコピーしとけばいいだけじゃん
buffer 1
picload dir_exe+"\\sample\\demo\\jp6girl.bmp"
sx=ginfo(12)
sy=ginfo(13)
buffer 2,sx*2,sy*2
gzoom sx*2,sy*2,1,0,0,sx,sy
screen 0,640,480
gcopy 1,0,0,sx,sy/2
gmode 2
pos sx/2,0
gcopy 2,0,0,sx*2,sy

それか、表示用と違うバッファに画面を完成させてから表示用の画面にgzoom
0706名前は開発中のものです。2007/04/17(火) 17:21:04ID:jur7HrQ+
座標の扱いが違うけどgmode の設定が利くのもある
buffer 1
picload dir_exe+"\\sample\\demo\\jp6girl.bmp"
sx=ginfo(12)
sy=ginfo(13)
gsel 0
gmode 2,sx,sy ;コピー元の画像サイズ
pos 320,240+sy/2 ;画像の中心(gcopy等と違い指定した座標が中心に来る)
grotate 1,0,0,0,sx*2,sy*2

後gsquareってーのもあるけど、大量にコピーするのには向かないかな・・・


07077022007/04/17(火) 18:15:12ID:vZNpL9Pl
>>705 >>706
うお、その発想はなかったわ!
どうもありがとうございます。
0708名前は開発中のものです。2007/04/17(火) 22:14:21ID:bRIENLRO
最近hsp2.6でhspdxのプラグインを使ったSTG作ってるんだけど
壁に自機弾と敵弾があたると、自機弾と敵弾が消えるようにしてるんだけど
稀に弾がすり抜ける時がある。
これって敵弾と自機弾が同時に壁に衝突した時にすり抜けるのかね?
自機弾のタイプ値2
敵弾のタイプ値8
400は壁のスプライト番号
es_find a,10,a
if a=-1:return
es_check b,a,32,1,400,400
こんな感じなんだけど。
すり抜けないよう対処法を教えて欲しい。
0709名前は開発中のものです。2007/04/17(火) 22:19:51ID:2AXbs49U
単に弾の移動量が自機の判定より大きくて抜けちゃってるだけじゃないの?
0710名前は開発中のものです。2007/04/17(火) 23:06:48ID:H8BcVo3o
壁との当たり判定なんてスプライトの判定命令じゃなくて計算でやれ
0711名前は開発中のものです。2007/04/17(火) 23:19:06ID:bRIENLRO
>>709
確かに移動速度も影響あるけど
速度を遅くしてもやっぱり同時に衝突するとすり抜ける。

で、対策を考えたんだけど
単純に衝突のサブルーチンを2つにする事により
2発動時に衝突してもOKになったみたい。
この時点で全くすり抜けなくなった。
サブルーチンを3つにすれば3発同時もOKかな。
0712名前は開発中のものです。2007/04/17(火) 23:32:40ID:I7JDTHxT
>>711
hspdxって使ったことないんだが、そのes_checkって当たってるスプライト1つしか返さないんだな。
自前でやったほうが簡単そうだな
0713名前は開発中のものです。2007/04/17(火) 23:48:03ID:bRIENLRO
es_checkはもし同時に衝突してたらスプライト番号が低いほうが優先される仕組みになってる。
少しでも衝突タイミングが違えば問題ないんだけど。
あと、一度すり抜けたスプライトはすり抜け中に再び衝突判定が得られにくい。
すり抜けてる最中に他のスプライトとの衝突判定が起きるから。
あと俺の使ってるのはhspdxじゃなくてhspfixの間違いでした。
0714名前は開発中のものです。2007/04/17(火) 23:49:00ID:2AXbs49U
>>711
ああすまん、ちゃんと読んでなかった。壁なw

>>712
判定を始めるスプライト番号を指定できるから、ひとつ見つかったら
その番号の後から再検索すれば良い。
07157142007/04/17(火) 23:51:13ID:2AXbs49U
自己レス
>判定を始めるスプライト番号を指定できるから
そんなもん無かったw
勘違い
0716名前は開発中のものです。2007/04/17(火) 23:52:08ID:BKWD+g7L
>>711
つーか一回当たったら判定処理から抜けてるだけじゃねーのか?w

で、使ってるのはhspdxfixだろ?
*sub
es_find a,10,0
if a=-1:return
repeat
es_check a,400,10,1,a
if a=-1:break
消す処理
a++
loop
return

これでいんじゃねーの?
0717名前は開発中のものです。2007/04/17(火) 23:52:31ID:M+5M3LEd
>>708
その3行の前後の処理が分からないけど
出現してる敵・自機弾に、
漏れなく壁接触判定を行き渡らせるのなら
2行目のreturnが実行されるまで、
繰り返し処理をしないといけない。

*hitcheck
es_find a,10,a
if a=-1:return
es_check b,a,32,1,400,400
(bに対する何らかの処理)
goto *hitcheck


つーか、
そのプログラムを組むとしたら

*wallhitcheck
es_check b,a,10,1,400,400
if b<0: return
(bに対する何らかの処理)
goto *wallhitcheck

で済むんじゃないか?

checkのタイプ値32の説明がないから
このままでは不都合あるのかもしれないけど
0718名前は開発中のものです。2007/04/17(火) 23:54:36ID:M+5M3LEd
間違えた。

*wallhitcheck の次の行
es_check b,400,10,1,400,400

だな。
0719名前は開発中のものです。2007/04/17(火) 23:55:01ID:BKWD+g7L
>>713
やっぱりfixかw

>>715
大丈夫fixだから指定できるw
0720名前は開発中のものです。2007/04/17(火) 23:58:44ID:bRIENLRO
1回衝突判定が終ったら弾スプライトに+1してループさせてる。
それでもすり抜ける。
0721名前は開発中のものです。2007/04/18(水) 00:11:22ID:I6KwsLu+
>>720
まぁ何だ。

似たような事をやったことあるけど
問題なくDXFIXで衝突判定できてたぞ。

アルゴリズムが悪いか、
>>713の書き込みから明らかだが
なんか大きな勘違いしてるんだろ。


>es_checkはもし同時に衝突してたらスプライト番号が低いほうが優先される仕組みになってる。
同じフレームで、続きから走査すれば、同時に衝突した
「スプライト番号が高いほう」のスプライトが見つかりますよ

> あと、一度すり抜けたスプライトはすり抜け中に再び衝突判定が得られにくい。
> すり抜けてる最中に他のスプライトとの衝突判定が起きるから。
お前は何を言っているんだ。
0722名前は開発中のものです。2007/04/18(水) 00:16:03ID:7jAYZaBw
スプライト番号が高いのが優先されるかどうかはどうでもいいから適当に書いた。
すまんかった。
後半の文はちょっとわかり辛かったかな。
まあ大した事無い事なので訂正しなかったけど。
まあまだゲーム製作初めたばっかりだから勘違いしてる所は結構あると思うけど。
とりあえずもう少し勉強してみます。
0723名前は開発中のものです。2007/04/18(水) 00:47:39ID:7jAYZaBw
プログラミングよりも日本語や人間としての常識の勉強が必要だったようです。
スレ汚しして申し訳ございませんでした。
0724名前は開発中のものです。2007/04/18(水) 01:04:07ID:0trzgnV6
なんだこの展開w
07257162007/04/18(水) 01:22:55ID:bCYiqmbF
#include "hspdxfix.as"
es_ini :es_screen 640,480,16,0,1,0:es_cls 0,0,0:buffer 1
picload exedir+"\\sample\\hspdx\\TESTCHR.BMP"
es_buffer 1:es_size 64,64,50,0:es_pat 1,64,64,0:es_set 1,mousex,mousey,1:es_type 1,1
es_pat 2,64*2,64,0:es_pat 3,64*3,64,0:es_pat 4,64*4,0,0:es_set 400,320,200,4:es_type 400,32
gsel 0
repeat
es_boxf 0,0,640,480:es_pos 1,mousex-32,mousey-32
stick stk,$ffff:if (stk>0) and ((cnt\10)=0) {es_new newid,2
if (100>newid) and (newid>0) {es_set newid,mousex,mousey,2:es_adir newid,0,-500:es_type newid,2}}
rnd r,3
repeat (r*((cnt\30)=0))
es_new newid,100:if (200>newid) and (newid>0){rnd x,640:rnd y,100:es_set newid,x,y,3
es_aim newid,320,200,100:es_type newid,8}loop
gosub *sub
es_draw:es_sync 1,-10
await 0
loop
*sub
es_find a,10:if a=-1{return}
repeat:es_check a,400,10,1,a:if a=-1{break}:es_kill a:a++:loop:return

hsp2.61で作ってみたけど擦り抜けなんて起きないぞ?
(最初3.0aの方で作って試したけど問題なかった)
使ってる変数の初期化を忘れてるだけじゃねーのか?
0726名前は開発中のものです。2007/04/18(水) 04:34:37ID:zV0payYl
島根県のみなさん、パチンコをするなら、

  優良パチンコ店 エ○トワン     

に行こう! 遠隔(※1)をやっていないパチンコ店は「エイ○ワン」だけ!
違法ロム(※2)を使っていないパチンコ店も「エイト○ン」だけ!
○イトワンでは、遠隔等が可能な設備は入れていません。 ロムも、警察がチェックしやすくしています。

詳しい方はご存知の通り、どんなにパチンコの遊戯人口が変動しても、その市場規模は変わりません(※3)。
要するに、客が減っても、残った客から絞り盗る量を増やして調整しているのです。
しかし、何故それが可能なのか?…ご理解頂けると思いますが、9割以上の店が確実に遠隔等を行ってます。
1万店以上のパチンコ店の中で、遠隔も違法ロムも確実にやってないのは「○イトワン」ただ1店です!

※1…遠隔とは
 「お、あの客は新顔だな。勝たせて味を占めさせるか。遠隔操作で設定変更しよ」
 「客が減ってきたな。ま、設定を絞めて(違法)、1人あたりから搾る量を増やせばいいか」
 「あのオヤジ負け続けてるからそろそろ辞めるかもな。今日は勝たせてやるか」

※2…違法ロムとは
 「うちのアタリ確率は、もちろん他と同じ『○○○分の1』ですよ!(ロムいじってるからウソだけど)」

※3       市場規模   遊戯人口
 平成06年 30兆4,780億円 2,930万人
 平成08年 30兆0,630億円 2,760万人
 平成10年 28兆0,570億円 1,980万人
 平成12年 28兆6,970億円 2,020万人
 平成14年 29兆2,250億円 2,170万人
 平成16年 29兆4,860億円 1,790万人
07277162007/04/19(木) 17:58:35ID:D0ENsgxE
おーい>>723
プラグインのバグなのか
スクリプト側ののバグなのか
環境依存の問題なのか
はっきりさせろよ……

hspdxfixに濡れ衣を着せたかもしれないのに
無視か?
0728名前は開発中のものです。2007/04/21(土) 07:42:36ID:2BG2s3w3
3.1b9公開。圧縮状態で7.5MBか。昔に比べるとずいぶん太った
気がするけど、プログラミング環境としてはまだ全然小さいんだよね。
今ではActiveBasicよりはでかいみたいだけど、使いではHSPが
圧勝だし。
0729名前は開発中のものです。2007/04/21(土) 08:13:40ID:2bdLwNha
沖縄県の方へ(命に関わる注意事項です)

沖縄県での選挙ですが、どうか民主党だけは避けてください。県民の生命に関わる可能性があります。
民主党の最大の公約は一国二制度(※)ですが、一度「一国二制度 沖縄 三千万」等で検索をお願いします。
この際、民主党のHPで調べても良いです。以下の注釈↓と矛盾することは書いてないはずですから…

※一国二制度
 簡単に言えば沖縄を中国と日本の共有物にし、そこに3000万人の中国人を入植させます。
 (つまり沖縄人口の 96% を中国人にして、実質、沖縄を中国人の居住地とします。)
 さらに「自主」の名の下、沖縄で有事が起きても自衛隊は干渉できません。
 3000万人の中国人が、少数派となった130万人の日本人に何をしても、です。
 そして反日教育を受けた中国人の反日感情の強さは、ほとんどの日本人の理解を超えるものです。

今回の選挙で民主党が勝った場合、「自主」「発展」を連呼しつつ段階的に進めていくことになります。
自主と言っても、自主を認めるのが「住人の96%が中国人となった」後だということに気をつけてください。
発展と言っても、新沖縄の少数派となった「少数民族日本人」の発展ではないことに気をつけてください。
0730名前は開発中のものです。2007/04/21(土) 14:09:04ID:LM8tnE4F
>>728
いまどき大きさなんか関係あるか?
0731名前は開発中のものです。2007/04/21(土) 15:30:40ID:gdpZ03+g
昭和から来たんだよ彼はw
0732名前は開発中のものです。2007/04/21(土) 16:59:16ID:laYGd4sA
JAVAみたく500MBとかじゃないからいいよ
HSPはプラグインとサンプル豊富だから助かる

0733名前は開発中のものです。2007/04/22(日) 10:49:51ID:GAHMA1wL
hspでデータ圧縮じゃなくて文字列圧縮できる?
出来れば、可逆でメモリーに保存したいのです

zlib試したけどメモリーだと一時保存に4倍使うからむりだったぽ
0734名前は開発中のものです。2007/04/22(日) 12:54:13ID:JwKt5lan
4倍使うの意味が分からんが、平文を分割してから圧縮すればええんちゃう?
超巨大な文字列を圧縮する時に、必要なmallocがでかいとかそんな意味ならば。
0735名前は開発中のものです。2007/04/22(日) 13:34:52ID:GAHMA1wL
>>734
4倍ってのは圧縮作業の為の展開エラー対策だと思うんだ・・・
圧縮されたデータを復元するにしてもどうやってるのか分からない

zlibはHSPでは使えないのかな
0736名前は開発中のものです。2007/04/22(日) 14:10:18ID:xdLPXb3/
ttp://mia.taillove.jp/
0737名前は開発中のものです。2007/04/22(日) 15:14:13ID:GAHMA1wL
>>736
メモリー内圧縮使ったことありますか?
そこで止まってます。
0738名前は開発中のものです。2007/04/22(日) 15:33:16ID:xdLPXb3/
ボクちゃん、test_mem.as 読める?
0739名前は開発中のものです。2007/04/22(日) 15:36:02ID:JwKt5lan
「メモリー内圧縮」って何か特別な意味(言葉)なん?
分割して圧縮処理じゃダメなんか?
0740名前は開発中のものです。2007/04/22(日) 15:52:31ID:GAHMA1wL
>>738
読めますよ
実行して出来たデータ配列が元より大きいのは圧縮失敗じゃないんですか?
0741名前は開発中のものです。2007/04/22(日) 16:01:02ID:xdLPXb3/
>>740
/* おまえは何を言っているんだ? */
#include "z.as"
#const DATASIZE 3000
#define AHO(%1,%2,%3,%4) color %2,%3,%4:mes %1:color 0,0,0
sdim rdata, DATASIZE
sdim cdata, DATASIZE
sdim udata, DATASIZE
rdata={"hspでデータ圧縮じゃなくて文字列圧縮できる?
出来れば、可逆でメモリーに保存したいのです\n
zlib試したけどメモリーだと一時保存に4倍使うからむりだったぽ"}
rsize=strlen(rdata)
mes ">元データ:":AHO rdata,0,0,255:mes strf(">サイズ:%d",rsize)
/* 圧縮 */
zSetDest cdata, rsize;DATASIZE
zCompress rdata, rsize,3;DATASIZE, 3
csize = stat
mes "\n\n>圧縮データ:":AHO cdata,255,0,0
mes strf(">サイズ %d バイト",csize)+strf("圧縮率 %d",writesize * 100 / rsize)
/* 解凍 */
zSetDest udata, DATASIZE
zUncompress cdata, DATASIZE:usize=stat
mes "\n\n>解凍データ" : AHO udata,0,200,0:erf=0
mes strf(">サイズ %d バイト",usize)
/* 比較 */
mes ">元のデータと比較" : erf=0;:poke udata,12,32
repeat DATASIZE
r=peek(rdata,cnt):u=peek(udata,cnt)
if ( r ! u ) { mes strf(">不一致@ %d文字目:",cnt)+strf("元[%c]",r)+strf(" ! 解凍[%c]",u):erf=1 }
loop
if erf=0 : mes ">相違点はありません"
stop
0742名前は開発中のものです。2007/04/22(日) 16:01:19ID:JwKt5lan
>>740
すでに圧縮されているデータは、それ以上小さくするのはほとんど無理
というかヘッダとかで増えるぞ?

つーか、使い方が間違ってんじゃねーの?
0743名前は開発中のものです。2007/04/22(日) 16:06:52ID:xdLPXb3/
自分には不手際がないと信じて疑わない
身の程知らずなボクちゃんの、挑発的な発言に、
ちょっと血がのぼってミスしちまったぜ。反省。

圧縮率表示のとこ、間違い。
strf("圧縮率 %d",writesize * 100 / rsize)

strf("圧縮率 %d",csize * 100 / rsize)
0744名前は開発中のものです。2007/04/22(日) 16:11:45ID:GAHMA1wL
いや圧縮自体はできるんですが・・・
ややこしいので解決でいいです
0745名前は開発中のものです。2007/04/22(日) 16:18:28ID:JwKt5lan
上手く説明ができなきゃ、上手く理解もできんて。
0746名前は開発中のものです。2007/04/22(日) 16:54:06ID:hYUKyQue
>>740
>stat は圧縮後のサイズです。
>書き込み先のメモリが足りないなどでエラーが発生した場合は、
>stat=0 となります。
なぁ、これをどんな解釈したんだ?
配列は拡張されないからもとより大きくなんてならねーぞ
お前配列サイズを勘違いしてねーか?
dimで確保したのは1要素4バイトだぞ?
どこにも圧縮元より大きい作業領域が必要なんて書いてねーだろ
バッファが足り無きゃstat=0になるって書いてあるだろボケ
0747名前は開発中のものです。2007/04/22(日) 17:07:14ID:xdLPXb3/
元データサイズが小さいから、効果が分かりにくいと思って
741のスクリプトをまた少し変えて
同じ文字列を100個連結させたもの(15000byte)に対する操作を試してみたが。
圧縮したら、297byte(圧縮率 2% 弱)にまでなった。
同じデータの繰り返しだからってのもあるかもしらんが。

いやぁ、zlib初めて使ったけど、けっこう強力だな。^^

(精神衛生上 よろしくないので、ボクちゃんの事を考えるのはやめた。)
0748名前は開発中のものです。2007/04/22(日) 17:44:41ID:rmOxLuM6
サンプルにある
dim cdata, DATASIZE
zSetDest cdata, DATASIZE*4
ってーのを見て、4倍必要とか思い込んだんだろうな
dim cdata, DATASIZEのメモリサイズがDATASIZE*4なのにねぇ

なんで741のを見て分からないんだろう・・・

0749名前は開発中のものです。2007/04/23(月) 00:12:53ID:4Rf7CIdU
HSP2.62とHSPDXFIXEDのプラグインを使ってゲームを作ってるんですけど
たまにキャラや背景の色が反転してしまう時があります。
毎回ではなくてたまになんです。
何か原因があるんでしょうか?
07507492007/04/23(月) 00:25:34ID:4Rf7CIdU
画像ファイルはBMPです。
あとパレットモードで236色にしています。
どうもプログラムが長くなってきてから色がおかしくなる頻度が高くなってきている気がします。
それとawaitの数値が多少影響してるようにも思えるんですけど。
0751名前は開発中のものです。2007/04/23(月) 00:30:08ID:3Fv7BgL3
はっきり言ってそんなんじゃ判らんw
プログラム自体を分割して問題部分の切り分けをすべし。
0752名前は開発中のものです。2007/04/23(月) 00:40:06ID:vbt0vmPJ
>>749
HSP2.62とかHSPDXFIXEDとか、聞きなれない名前なのが気になるが。

「色が反転」という症状を聞いて、最初に思い浮かぶのは
ブレンドファクターに、ESB_NEGATIVEが指定されているんじゃないか?
ということだが。

「D3Dスプライト機能を使ってない」 とか断言してしまうなら、知らん。
0753名前は開発中のものです。2007/04/23(月) 00:41:23ID:gvRd6xEU
BMPのパレットが揃ってないとか
0754名前は開発中のものです。2007/04/23(月) 01:00:19ID:4Rf7CIdU
毎回色がバグるのなら原因究明もラクだと思うんですけど
稀にしか起こらない現象だから原因を探すのが難しいんですよ。
デスクトップの解像度とか関係あるのかな?
あと3Dは使ってないです。
0755名前は開発中のものです。2007/04/23(月) 01:15:33ID:gvRd6xEU
めんどくさいからハイカラーかフルカラーで作れ。
0756名前は開発中のものです。2007/04/23(月) 01:43:12ID:3Fv7BgL3
ああ、そうだな。。
なんでパレットモードなんか使ってんだ。
パレチェンしたいなら別の画像持てば良いじゃない。
0757名前は開発中のものです。2007/04/23(月) 04:04:26ID:I+xnwNF2
流れ切って申し訳ない
モジュールで大きい文字列を返すといきなり落ちるんだけどなぜでしょうか?
2048byteを超えたあたりでエラーになって、それよりはるかに大きいと落ちる。

例えば、

#module
#defcfunc hana str mogera
return mogera
#global
a = "なんかでかい文字列・・・・"
mes hana(a)

↑これである程度大きな文字列で落ちる
でも、

#module
#defcfunc hana str mogera
mes mogera
b = strlen(mogera)
return b
#global
a = "なんかでかい文字列・・・・"
mes hana(a)

これだと落ちない。
なぜなんでしょうか。
0758名前は開発中のものです。2007/04/23(月) 04:38:01ID:nyr50uuI
>>757
hsp3.0aでやったけどエラーも落ちることも無いぞ?
環境書け
0759名前は開発中のものです。2007/04/23(月) 09:47:55ID:HhfYCboy
HSP ver3.1β8です
上の例だと落ちないけど、aの値が大きくなると落ちます。

実際に落ちるスクリプトを書きます。
j=509だと落ちないけど、j=510だと落ちます。
さらに、j=510以上でも return b とするとおちません。

j = 509
#module
#defcfunc hana str mogera
b = strlen(mogera) : return mogera
#global
sdim a,j*4+1
repeat j
b = strf("%04d",cnt) : poke a,i,b : i += strsize
loop
mes str(i) + "\n" + hana(a)


どうやって回避すればいいのでしょうか。
0760名前は開発中のものです。2007/04/23(月) 11:47:41ID:lQ85Pfj4
>759
758じゃないけど、俺のとこでも試してみたらj=510では落ちなかった。
ウチの環境だとj=10000までOK。
0761名前は開発中のものです。2007/04/23(月) 11:52:32ID:lQ85Pfj4
>759
バッファオーバーフローが原因なので、なにか計算間違いがあるのかも。
sdimで指定する値を必要な分だけ大きくすれば大丈夫なのでは?
0762名前は開発中のものです。2007/04/23(月) 15:28:03ID:ExoMwemo
>>760
それはエラーが起きてる場所が違くないか?w

>>759
β版使ってるなら最初に言えよ・・・

ver3.1β8で起きてる問題で3.0aではエラーは出無かった
β8はモジュール関係で色々不具合が出てるみたいだから
3.1b9 を試してみたら?

ダメだったら
●HSPWiKi HSP3バグトラッッキングシステム
にでも挙げとけば修正されるだろう
0763名前は開発中のものです。2007/04/23(月) 15:34:21ID:ExoMwemo
>3.1b9 を試してみたら?
自分で試した方が早そうだから試したらエラー出無かったよ

>struct型の配列終了処理でエラーが発生することがある不具合を修正。(HSPBT#144)
これ関連のバグだったのかな・・・
0764名前は開発中のものです。2007/04/23(月) 20:51:29ID:iPysckQP
β8の不具合ということなので、β9を落としてみた
結果はかわらず。さっぱりわかりません。

試しにHSPのあるフォルダの
hsed3le.exe というのを起動させて>>759をコピペして実行してみると
j = 10001 以上でエラーとなった
「Error20 in line8 バッファオーバーフロー」

そこで、sdim a,j*5+1 、 b = strf("%05d",cnt) とやると
エラーはなくなる。当然・・・なのかな。

同様に hsed3.exe でやってみると j=510 以上でエラー。
でもこちらは「error1 in line11(???) システムエラー」とのこと


一応PCのスペックは
winXP home , Athlon64 3200+ , メモリ1G

もうお手上げだが、エラーは起こらないって人の方が多数なので
びっくりするほどの初歩的ミスを犯していないか心配になってきた
0765名前は開発中のものです。2007/04/23(月) 21:11:10ID:oSeQHQqW
俺がそのトラブルに当たったときは、ああまたHSPのバグかと思って
変数渡しのコードに変更したよ
■ このスレッドは過去ログ倉庫に格納されています