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


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
0124
EmilioEmilyパレット指定周辺。11解決


EmilioEmily

リンク

2010/1/24(Sun) 15:31:13|NO.30127

 入門にゲームでも作ってみるか。
 まず手始めに管理方法はさておき、キャラクタを表示させる所から・・・
 とか思っていたのですが、どうも *setup内で思い通りに設定出来ていないみたいです。
 コメントアウトしているcelloadは動作するので、それと同等の指定をさせたいのですが。


#include "hspdef.as" ; キャラ別固有番号 #const JIKI (1) #const ENEMY (2) #const ESHOT (3) #const JSHOT (4) #const STAR (5) *init screen 0 ,640,400 ,screen_palette ;ID=0 size=640x400 screen_palette=1(col=256) cls 4 gosub *setup gsel 0 pos 20,180 : celput JIKI pos 500,100 : celput ENEMY pos 480,112 : celput ESHOT pos 128,196 : celput JSHOT pos 10 ,10 : celput STAR palette 1,255,127,127,1 palcolor 1 mes "tes" redraw 1 stop *setup ; celload ".\\jiki.bmp",JIKI buffer JIKI ,96,48 ,screen_palette gsel JIKI ,1 palette 15 ,255,255,255,1 palcolor 15 boxf ; celload ".\\enemy.bmp",ENEMY buffer ENEMY ,48,48 ,screen_palette gsel ENEMY ,1 palette 14 ,255,255,255,1 palcolor 14 boxf ; celload ".\\eshot.bmp",ESHOT buffer ESHOT ,16,16 ,screen_palette gsel ESHOT ,1 palette 13 ,255,127,127,1 palcolor 13 boxf ; celload ".\\jshot.bmp",JSHOT buffer JSHOT ,16,16 ,screen_palette gsel JSHOT ,1 palette 12 ,255,255,127,1 palcolor 12 boxf ; celload ".\\star.bmp",STAR buffer STAR ,8,8 ,screen_palette gsel STAR ,1 palette 11,255,255,127,1 palcolor 11 boxf return


 ポカミスを指摘して下さると幸いです。



この記事に返信する


lilith

リンク

2010/1/24(Sun) 20:16:46|NO.30130

「思い通り」が何を指しているのかが分からないので見当違いかもしれませんが、

screen_palette
とあるところを

0
に置き換えてあげれば動きます。

↑の方法だとフルカラーモードになりますので、もしパレットモードのままがいいというのであれば、

buffer JIKI ,96,48 ,screen_palette
の前に

buffer JIKI
を挟んで一度バッファを生成してから初期化してあげてください。



KA

リンク

2010/1/24(Sun) 20:40:43|NO.30133

>>コメントアウトしているcelloadは動作するので、それと同等の指定をさせたいのですが。

私の勘違いでなければ、コメントアウトした部分以外に、画像を読み込む命令が
無いようですが?



ORZ

リンク

2010/1/24(Sun) 20:55:28|NO.30134

コピペするだけで動くようにしてくれたんだよ



Ve

リンク

2010/1/24(Sun) 21:30:35|NO.30137

症状を書いてないので、
画像が表示されず困っているという解釈で良いんでしょうか?


バッファにロードした後、
バッファを初期化する意味はあるんでしょうか?



EmilioEmily

リンク

2010/1/24(Sun) 22:59:08|NO.30146

lilith様
>「思い通り」が何を指しているのかが分からないので見当違いかもしれませんが、

 仰る通り、思い込みのまま投稿してしまいました。
 馬鹿ですいません。

 私がやろうとして出来なかったのは、256色モードでバッファ確保と
パレット指定して塗りつぶしても、その通りにならなかった事です。
 最初にcelloadでBMPファイルをウインドウIDに読み込ませて思い通りの結果になったので、
その置換えにバッファ指定してキャラクタサイズを確認しながら・・・と思ったら
白のモノトーンしか表示出来ません。
 メイン側のテキストに同じ指定したらちゃんと出来たので、何か根本的な所で
勘違いしているのかな、と。

 そして256色モードなのは、さほど色数は要らないのと、パレットアニメーションを
前提に考えているからです。


>buffer JIKI ,96,48 ,screen_palette
>の前に
>buffer JIKI
>を挟んで一度バッファを生成してから初期化してあげてください。

 それは、256色モードでは生成と初期化を一緒に出来ないと言う事でしょうか。
 試した所、結果は変わりませんでした。


KA様
>私の勘違いでなければ、コメントアウトした部分以外に、画像を読み込む命令が
>無いようですが?

 はい。
 後々外部でキャラクタを作成して読み込ませるつもりでいますが、まずはキャラクタ
サイズが分かる程度の矩形を表示させて利用するつもりです。
 ですので、まだ必要ないのです。



EmilioEmily

リンク

2010/1/24(Sun) 23:08:19|NO.30148

 返答に困っている間に返答が付いていましたね。


ORZ様
>コピペするだけで動くようにしてくれたんだよ

 コピペして<pre>タグで囲っただけの考えなし投稿でしたorz


Ve様
>症状を書いてないので、
>画像が表示されず困っているという解釈で良いんでしょうか?

 メインルーチンのmesはちゃんと色指定出来ているのにサブルーチンの方は
指定通りに色が付かないんです・・・。


>バッファにロードした後、
>バッファを初期化する意味はあるんでしょうか?

 上レスに書いた通り、置き換えの為のコメントアウトですので
スルーして下さると幸いです。



Ve

リンク

2010/1/24(Sun) 23:11:54|NO.30149

単にパレットが統一されていないのでは?



ANTARES

リンク

2010/1/25(Mon) 05:38:51|NO.30150

 回答を検討している内に新しい発見がありました。
この質問がなければ、この発見もなかったので、お礼を申し上げます。

>その置換えにバッファ指定してキャラクタサイズを確認しながら・・・と思ったら
>白のモノトーンしか表示出来ません。
 「gosub *setup」を「screen 0,……」の前に置いてください。


 ようやく、palcopyがなくなった理由が理解できましたが、
これでpalcopyが不要とは思えないので、発見前の回答も書いておきます。


>その置換えにバッファ指定してキャラクタサイズを確認しながら・・・と思ったら
>白のモノトーンしか表示出来ません。
buffer 1のパレットを定義しても、screen 0のパレットは変化しません。

 HSP2ならpalcopyを使ってくださいというところですが、
HSP3にはpalcopy命令がありません。
 HSP3では、なぜパレットモードが残っているのか疑問に思うほど
使い勝手が悪くなったので、大したこだわりがないのなら
パレットモードを諦めるのが最も簡単、かつ将来に禍根を残さない解決法です。

 palcopy命令は、指定したscreen/bufferのパレットを現在の
screen/bufferにコピーする命令です。


#module #deffunc getpaltbl_ var v1 mref palet,69 sdim v1,768 memcpy v1,palet,768 return #deffunc palcopy int p1 wid=ginfo_sel gsel p1 getpaltbl_ paltbl gsel wid mref palet,69 memcpy palet,paltbl,768 palette -1,,,,1 return #global screen 0,640,480,1,0,0 buffer 2,32,32,1 palette 13 ,255,127,127,1 palcolor 13 boxf gsel 0,1 palcopy 2 gcopy 2,0,0,32,32



EmilioEmily

リンク

2010/1/25(Mon) 23:42:28|NO.30159

ANTARES様
> 「gosub *setup」を「screen 0,……」の前に置いてください。

 な、なんと位置を変えただけで・・・???
 これはつまり、bufferはscreenに依存しないけれど、
screenはbufferのパレットに依存すると言う事でしょうか?

 その一方で、コピペしたサンプルの*setup部分のpaletteの
更新フラグ(5番目引数)を全てゼロに直すだけでも、想定通りに動くのですよね。
 どう着目すれば良いのか、さっぱりです。


>buffer 1のパレットを定義しても、screen 0のパレットは変化しません。

 つまり、ウインドウIDごとにパレット空間があると言う事でしょうか。
 だとすれば根本的に考え直さないといけませんね・・・。


> HSP3では、なぜパレットモードが残っているのか疑問に思うほど
>使い勝手が悪くなったので、大したこだわりがないのなら
>パレットモードを諦めるのが最も簡単、かつ将来に禍根を残さない解決法です。

 そうなのですか・・・。
 色違いの別キャラや点滅の処理を簡単に実装出来ると思っての事だったのですが。

 ドロドロした所に頭を突っ込んでしまったみたいですね。
 将来使い勝手が向上する事を願って、フルカラーモードを使う事にします。

 わざわざパレットコピーまで実装して頂いたのに、ごめんなさい。
 ありがとうございました。


# 釈然としない事ばかりなのですが、一応の解決なので解決フラグを入れさせて頂きます。



ANTARES

リンク

2010/1/26(Tue) 05:05:17|NO.30164

> これはつまり、bufferはscreenに依存しないけれど、
>screenはbufferのパレットに依存すると言う事でしょうか?
 palette命令実行時にパレットの初期値データを
書き換えているようです。だから、screen 0を後からやると
書き換えられた初期値データで初期化されるわけです。



EmilioEmily

リンク

2010/1/29(Fri) 00:40:02|NO.30217

ANTARES様
 丁寧な解説有難うございます。
 設定をしてから初期化をすると考えれば良いのですね。
 週末しかコードをいじる時間ないので週末に向けてフルカラーで
検討していましたけど・・・パレットモードに未練が(^^;



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