|
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 )
| |