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


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0801
RUN*2+ルーhgimg 画面がおかしくなる9解決


RUN*2+ルー

リンク

2008/8/1(Fri) 21:45:58|NO.17810

#include "hgimg3.as"
hgini hgview 0,0,600,385 clscolor $80 hgdraw 1 hgsync 10
このスクリプトを実行すると、
画面の一部がファミコンがバクったみたいに
なるんですけど、スクリプトが変なのでしょうか?
ご教授よろしくおねがいします。



この記事に返信する


RUN*2+ルー

リンク

2008/8/1(Fri) 21:46:52|NO.17811

タイトル間違えました
hgimg ×
hgimg3○



RUN*2+ルー

リンク

2008/8/1(Fri) 22:04:16|NO.17812

訂正です。
すいません。

#include "hgimg3.as"
hgini

#include "hgimg3.as"
screen 0,600 hgini



GENKI

リンク

2008/8/1(Fri) 23:12:08|NO.17814

とりあえず落ち着きましょう。(^ ^;

HSPのデフォルトのウィンドウサイズは640*480です。
hgviewの前にginfo_winyでウィンドウサイズを確認してみてください。

hgview命令はウィンドウサイズの変更は行いません。
screen命令でYのサイズも変更が必要です。



RUN*2+ルー

リンク

2008/8/2(Sat) 00:41:26|NO.17817

#include "hgimg3.as"
screen 0,600,480,20 hgini hgview 0,0,600,385 clscolor $80 hgdraw 1 hgsync 10
実行してもバグりませんか?



GENKI

リンク

2008/8/2(Sat) 02:32:04|NO.17820

一応確認します。(すみません、最初にすべきでした。)

> 画面の一部がファミコンがバクったみたいに

とは、「ウィンドウ内の色は紺色だが、下の方に黒い帯のようなものが出てしまう」
ということでいいんですよね?
私はファミコン持ってないんで質問の例えは分かりませんが、スクリプトの実行結果
からこういうことだと理解していました。


作成したスクリプトの意味をひとつずつマニュアルを見ながらよく確認してみてください。
提示されたスクリプトは短いので大変な作業ではないと思います。
まず、作成したウィンドウのサイズは600*480です。
hgviewで描画領域として設定している範囲は、(0,0)〜(600,385)です。
残り(0,386)〜(600,480)は何も設定されていません。


質問とは別の話ですがついでに…、
> clscolor $80

clscolor $000080

と書いたほうがあとあと分かりやすいと思いますよ。



M

リンク

2008/8/2(Sat) 02:40:52|NO.17821

描画範囲の外が、まったく手付かずだからだと思います。

hgview 0,0,600,385 を実行すると、描画する範囲が(0,0)-(600,385)になります。
hgdraw 1 を実行することで、先に指定した範囲内に絵が描かれます。

screen命令で画面の縦を480ドットに指定しているのに対し、描画範囲の縦は385のままなので、
その外側、手付かずになっている386から480の部分は、謎データが出てきてしまうのです。

回避案を、いくつか紹介します。

その1
hgview 0,0,600,385の前に、hgdraw 2を入れる。
「なにも描画しない画面」を描画することで、386〜480の間がきれいに背景色で塗りつぶされます。
(ただし、この方法だとスプライト等が表示されないという欠点があります)
例)

hgdraw 2 ;いったん、「何も描画しない」で全体を描いてしまう。 hgview 0,0,600,385 ;範囲を指定して、 hgdraw 1 ;描く。

その2
まず、カメラのnearとfarの値を0にして全体を描く。次に、領域内を描く。
例)

getefx HGOBJ_CAMERA,fov,near,far ;現在のカメラ情報を記憶しておく setefx HGOBJ_CAMERA,fov,0,0 ;far,nearを0にしたカメラにして hgdraw ;全体を描く。 setefx HGOBJ_CAMERA,fov,near,far ;もとのカメラに戻して hgview 0,0,600,385 ;範囲を指定し、 hgdraw 1 ;範囲内を描く。
この方法だと、範囲外にあるスプライト等も、きちんと表示されます。



run×2+ル〜

リンク

2008/8/3(Sun) 15:42:46|NO.17861

Mさん、GENKIさん、ありがとうございます。
不安でずっと、ゲーム作りを進められなかったのでありがたいです。



run×2+ル〜

リンク

2008/8/3(Sun) 15:42:58|NO.17862

解決



エレキ掃除機

リンク

2008/8/3(Sun) 18:10:14|NO.17869

もう解決してますが、
Mimuraさんに聞いてみたところ、どうやらグラフィックエンジンの問題だそうです。
Aeroを有効にするとちゃんと動くそうです。



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