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


HSPTV!掲示板


未解決 解決 停止 削除要請

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


たーさん

リンク

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)にしたらエラーがなくなりました。

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

感謝感謝です。



たーさん

リンク

2024/9/15(Sun) 15:33:59|NO.102215

ここで回答してくださった皆さん。

お願いがあります。

pf-xを使っていてキャラクタの定義可能数が少ないので困っています。

例えば、マクロとして"udrl"を使う関係で、アルファベット小文字に
キャラクタ定義ができないようにしているということなので、
そのマクロをアスキー文字の最後のほうの文字"{|}~"に左下右上を割り
当てて、アルファベット小文字にも定義できるようにできないものでしょうか。

頭のよい皆さん、どうかよろしくお願いします。



kinokawa

リンク

2024/9/15(Sun) 21:43:26|NO.102216

ちょっと見た感じだと数値を変えれば出来そうですけど

#deffunc WBYTE int sx,int sy,int cno,str data
の下の

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


id=peek(source,index):wy+=(id=0x7e)-(id=0x7c):wx+=(id=0x7d)-(id=0x7b) id=(id*(id>=0x20&id<=0x7a))-(id<0x20|id>0x7a):WBYTE2 wx,wy,id
に変えてもだめですか。
確認はしていませんが・・・



たーさん

リンク

2024/9/16(Mon) 21:35:17|NO.102220

kinokawaさん。ありがとうございます。
早速試してみます。



たーさん

リンク

2024/9/16(Mon) 21:59:30|NO.102221

試してみたところ上手くいきました。
ありがとうございます_(._.)_



たーさん

リンク

2024/9/16(Mon) 22:15:57|NO.102222

助けてください。
kinokawaさんのありがたい回答にてpf-xを修正し、C-EDIT で作成したデータを下記のように
修正し、アルファベット小文字に定義してみましたが、WBYTE で表示しても表示してくれま
せん。
おかしいことをしているとは思うのですが、理由がわかりません。
誰かお分かりになる方お教えいただけますでしょうか。
お願いします。

             記

RBYTE 0x61,"e020380f3024303000000000070b0f0f00000000070b0f0f" // a
RBYTE 0x62,"000058600000120a24202098e8e8e8f024202098e8e8e8f0" // b
RBYTE 0x63,"31103030341c32260e0f0f0f030300000e0f0f0f03030000" // c
RBYTE 0x64,"0a12020204008000f0e0f0f0e0800000f0e0f0f0e0800000" // d
RBYTE 0x65,"e020380f3027373f00000000070b0f0f0000000007080800" // e



kinokawa

リンク

2024/9/17(Tue) 06:44:04|NO.102226

書き忘れていましたが
最大登録数
 キャラクタ定義できる最大数。
 デフォルトは0x00から0x5fまで登録と言う事で96。

が 0x00から0x7aまで登録と言う事で122ですね

init_PF_X 1,40,30,96,0 が
init_PF_X 1,40,30,122,0 になります

これでうまくいくといいのですが・・・



たーさん

リンク

2024/9/17(Tue) 22:36:10|NO.102231

kinokawaさん。
どうもありがとうございます。

指摘通り変更してみました。

上手くいきました。

ありがとうございます!
ありがとうございます!



記事削除

記事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.