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


HSPTV!掲示板


未解決 解決 停止 削除要請

2024
0621
たーさんPCG使いたい5解決


たーさん

リンク

2024/6/21(Fri) 20:23:09|NO.101836

 初めて投稿します。
 昔のPCの機能でPCGを使いたくて、ネットで検索すると、この掲示板でよい投稿があり
早速使ってみたのですがなぜか32行目で「Error3 line in 32 パラメータの値が異常で
す」と出ます。
 お分かりになる方、教えていただけますでしょうか。
 ちなみに、HSP3.6で実行しました。
 よろしくお願いいたします。

以下、投稿されていた内容です。

2008/3/10(Mon) 22:55:38NO.14050

昔々、パソコンといえばNECと富士通とSHARPだった時代。
あるマシンにはPCGという、手軽にキャラクタを作る機能があったとさ。

ファイル名を"pf-x.as"とでもして保存してほしい。



#ifndef PF-XAS_
#define PF-XAS_
#module "PF_X"
#defcfunc hex str OneByte
d="00"+OneByte:d=strmid(d,-1,2)
hh=peek(d,0)-'0':hh-=((hh>9)*7)+((hh>24)<<5):hh=hh*((hh>0)and(hh<16))
hl=peek(d,1)-'0':hl-=((hl>9)*7)+((hl>24)<<5):hl=hl*((hl>0)and(hl<16))
return (hh<<4)+hl
#defcfunc VramAddress int x , int y
return ((PCGScreenHeight-1-y)*(((PCGScreenWidth*3)+3)&0xfffffffc))+(x*3)
#deffunc writeCHRLine int sID,int plane,int sLine,int sData
x=sID<<3:y=sLine:s=sData:for o,0,8:dat=0xff:if(s&tbit(o))=0:dat=0
poke VRAM,VramAddress(x+7-o,y)+RGBPLANE(plane),dat:next:return
#deffunc RBYTE int sID , str sData
if sID<0|PCGMax<=sID{return}:PCGData=sData:for i,0,24
writeCHRline sID,i/8,i\8,hex(strmid(PCGData,i<<1,2)):next:return
#deffunc WBYTE2 int sx,int sy,int sID
if PCGMax<0|PCGMax<=sID{return}:PF_X_STATUS(sx,sy)=sID
pos sx<<4,sy<<4:gzoom 16,16,PCGID,sID<<3,0,8,8:return
#deffunc WBYTE int sx,int sy,int cno,str data
wx=sx:wy=sy:source=data:len=strlen(source):index=0:while(index<len)
id=peek(source,index):wy+=(id=0x64)-(id=0x75):wx+=(id=0x72)-(id=0x6c)
id=(id*(id>=0x20&id<=0x5f))-(id<0x20|id>0x5f):WBYTE2 wx,wy,id
wx+=(id>0):index++:wend:return
#defcfunc STATUS int sx,int sy
return PF_X_STATUS(sx,sy)
#deffunc STATUSCLS
for i,0,40:for o,0,30:PF_X_STATUS(i,o)=-1:next:next:return
#deffunc init_PF_X int mId,int wi,int hi,int sMax,int RGBFLG
PCGID=mID:PCGMax=sMax:PCGScreenWidth=sMAX<<3:PCGScreenHeight=8
baseID=ginfo(2):buffer PCGID,PCGScreenWidth,PCGScreenHeight,0
color:boxf:mref VRAM,66:gsel baseID
if RGBFLG=0{RGBPLANE(0)=0:RGBPLANE(1)=2:RGBPLANE(2)=1}
else {RGBPLANE(0)=2:RGBPLANE(1)=1:RGBPLANE(2)=0}
dim PF_X_STATUS,wi,hi:tbit=1,2,4,8,16,32,64,128:return
#global
init_PF_X 1,40,30,96,0
#endif

引越しをする事になり、古い本を整理していてPF-Xの原本を見つけた。
以前から記憶だけで作っていたが、せっかくなので仕様にあわせて修正した。

使い方

キャラクタ登録
RBYTE int asciiコード, str キャラクタ定義文字列

キャラクタ描画
WBYTE int x,int y , int c(未使用) , str 表示用文字列

画面削除
STATUSCLS

画面に書いたキャラ番号取得
int = STATUS( int x,int y )



この記事に返信する


さか2

リンク

2024/6/21(Fri) 20:36:09|NO.101838

PCGとは懐かしいですね。自分はsharp派でした。
hsp3.7ではエラーとならないですが、32行目であれば、colorかなと思います。
color 0,0,0としてみたらどうでしょう。
もしcolorでなければその行の命令を他の行へ移動して命令の特定をしてみてください。



沢渡

リンク

2024/6/22(Sat) 00:43:37|NO.101839

当方の環境ではエラーになったので、確かめてみたら一つ前の行の「ginfo(2)」が不味いようです。
(HSP付属のエディタを使っている場合はエラーにならないが、
そうでない場合は『HSP以外のウィンドウがアクティブになっている』という理由でエラーになる?)
これをginfo(3)としたらどうでしょうか? これで制作者の意図通りの動作になるかどうかはわかりかねますが。



沢渡

リンク

2024/6/22(Sat) 00:49:57|NO.101840

PCGで検索してみたらこのスレですか。
文体からしてfさんかなと思ったら案の定。
http://hsp.tv/play/pforum.php?mode=pastwch&num=14050



たーさん

リンク

2024/6/22(Sat) 01:00:35|NO.101841

早速返信ありがとうございます。

HSP3.7bata8で実行してみましたが、やはり同じエラーが出ました。
「color 0,0,0」としてみましたが、エラー解消しませんでした。
 
32行目のどの命令がエラーになるのか試したところ、「gsel baseID」が原因でした。

さか2さんの環境ではエラーが出ないとのことですが、何が原因なのでしょうか???

さっぱりわかりません。baseID の値を確認したくてもデバッグウインドウに、変数名が
出ていないので値が分かりません。

値の確認するのによい方法はないでしょうか?

初心者の質問ですいません。

よろしくお願いします。



たーさん

リンク

2024/6/22(Sat) 01:05:25|NO.101842

ginfo(3)にしたらエラーがなくなりました。

沢渡さんありがとうございます。

感謝感謝です。



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.101836への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

解決したら質問者本人がここをチェックしてください。

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

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