Hatena::Groupputikonclub

天郷思音(わぁぃ@)の日記 このページをアンテナに追加 RSSフィード

2018-03-19お久しぶり このエントリーを含むブックマーク

カレンダーを更新しました。

なお、今後はサブアカウント機能で作ったアカウントに変える予定です。切り替えが面倒なので。

2017-11-17PRG:2SC(ver.a2) このエントリーを含むブックマーク

Q&A

  • なにこれ→ScreenShotCamera
  • 使い方→IF BUTTON(2)==#X THEN EXEC "PRG3:2SC"を撮りたい作品のメインループ中に放り込んでください。
  • オプション設定とは→クリップボードに2SC_INFOで始まる呪文を入れると設定を変更できます。BG_MAX=BGレイヤー上限:SP_MAX=SPRITE管理番号上限:GRP_CLR=グラフィック消去の有無
  • 上手く撮れない→諦めるか改良するかの2択でどうぞ。(完成版ではないので)
  • 保存形式教えて→PZG専用。れい氏のLZSSライブラリ使用。
OPTION STRICT
OPTION DEFINT
VAR CSR_CHARS,CSR_XMAX
VAR A,C,H,I,L,S,W,X,Y
VAR CX,CY
VAR OX,OY
VAR SX,SY
VAR _X,_Y
VAR X_FLOOT#,Y_FLOOT#
VAR BG_MAX,SP_MAX,GRP_CLR
VAR CS,CIL,CIP
'Chip size,Chips in a line,Chips in a page
VAR TXT$
VAR PAGE
VAR GRP[0],PZG[0]

IF LEFT$(CLIPBOARD(),8)!="2SC_INFO" THEN
 CLIPBOARD "2SC_INFO:BG_MAX=1:SP_MAX=255:GRP_CLR=1"
ENDIF
KEY 5,"IF BUTTON(2)==#X THEN EXEC "+CHR$(34)+"PRG3:2SC"+CHR$(34)

DEF GCOPYA PG,X,Y,W,PX,PY,A,SCX,SCY
 IF !A && SCX==1 && SCY==1 THEN
  GCOPY PG,X,Y,X+W-1,Y+W-1,_X,_Y,0
  RETURN
 ENDIF
 VAR COL,RX,RY,X2,Y2,ANG=A AND 3
 FOR Y2=0 TO W-1
  FOR X2=0 TO W-1
   RX=X2:RY=Y2
   IF ANG==1 THEN RX=Y2:RY=W-X2-1
   IF ANG==2 THEN RX=W-X2-1:RY=W-Y2-1
   IF ANG==3 THEN RX=W-Y2-1:RY=X2
   IF A AND 4 THEN RX=W-X2-1
   IF A AND 8 THEN RY=W-Y2-1
   GPAGE 0,PG:COL=GSPOIT(RX+X,RY+Y)
   IF !COL THEN CONTINUE
   GPAGE 0,0
   GFILL PX+X2*SCX,PY+Y2*SCY,PX+X2*SCX+SCX-1,PY+Y2*SCY+SCY-1,COL
  NEXT
 NEXT
 GPAGE 0,0
END

DISPLAY 0

'********************************************
'GET OPTION
TXT$=CLIPBOARD()+":"
IF LEFT$(TXT$,8)=="2SC_INFO" THEN
 WHILE 1
  TXT$=RIGHT$(TXT$,LEN(TXT$)-INSTR(TXT$,":")-1)
  IF INSTR(TXT$,"=")<0 THEN BREAK
  VAR(LEFT$(TXT$,INSTR(TXT$,"=")))=VAL(MID$(TXT$,INSTR(TXT$,"=")+1,INSTR(TXT$,":")-INSTR(TXT$,"=")-1))
 WEND
ENDIF
'********************************************

IF GRP_CLR THEN GCLS
FOR I=0 TO 255
 IF SPUSED(I) THEN SPSTOP I
NEXT
GOSUB @BG
GOSUB @SPRITE
GOSUB @CONSOLE

COLOR 15,0:CLS:SPCLR:BGCLR
COLOR 5,2
?"FINISH"
?"PUSH [X] TO SAVE 'PZG' IMAGE"
?"PUSH [Y] TO END"
REPEAT:VSYNC:UNTIL BUTTON(2) AND 192
IF BUTTON(2)<65 THEN GOSUB @PZG_SAVE
END

'********************************************
@CONSOLE
 CSR_XMAX=(400-80*DISPLAY())/WIDTH()
 CSR_CHARS=CSR_XMAX*240/WIDTH()-1
 S=WIDTH()
 FOR I=0 TO CSR_CHARS
  X=I MOD CSR_XMAX:Y=I DIV CSR_XMAX
 '文字色は手動で設定
 'GFILL X*S,Y*S,X*S+S-1,Y*S+S-1,-1
  GPUTCHR X*S,Y*S,CHKCHR(X,Y),S>>3,S>>3,-1
 NEXT
RETURN
'********************************************
@BG
 CS=16
 CIL=512/CS:CIP=CIL*CIL-1
 PAGE=BGPAGE()
 FOR L=0 TO BG_MAX
  BGOFS L OUT OX,OY
  FOR Y=0 TO 126
   _Y=Y*CS-OY
   IF _Y<0 || _Y>239 THEN CONTINUE
   FOR X=0 TO 126
    _X=X*CS-OX
    IF _X<0 || _X>399 THEN CONTINUE
    C=BGGET(L,X,Y)
    IF !C THEN CONTINUE
    A=C>>12:C=C AND CIP
    CX=C MOD CIL*16:CY=C DIV CIL*16
    GCOPYA PAGE,CX,CY,CS,_X,_Y,A,1,1
   NEXT
  NEXT
 NEXT
RETURN
'********************************************
@SPRITE
 PAGE=SPPAGE()
 FOR I=0 TO 255
  IF SPUSED(I) THEN
   SPCHR I OUT X,Y,W,H,A'?X,Y,W,H
   IF A AND 1 THEN
    IF SPLINK(I)+1 THEN
     SPOFS SPLINK(I) OUT CX,CY
    ELSE
     CX=0:CY=0
    ENDIF
    SPSCALE I OUT SX,SY
    SPHOME I OUT _X,_Y
    CX=CX-SX*_X:CY=CY-SY*_Y
    SPOFS I OUT X_FLOOT#,Y_FLOOT#
    _X=ROUND(X_FLOOT#)+CX
    _Y=ROUND(Y_FLOOT#)+CY
    GCOPYA PAGE,X,Y,W,_X,_Y,A>>1,SX,SY
   ENDIF
  ENDIF
 NEXT
RETURN
'********************************************
@PZG_SAVE
 W=400-DISPLAY()*80:H=240
 GSAVE 0,0,0,W,H,GRP,1
 LZIMAGE GRP,PZG,W,H,1
 SAVE FORMAT$("DAT:SS%02D.PZG",RND(99)),PZG
RETURN

DEF LZIMAGE IN%[],OUT%[],W%,H%,PROG%
 VAR WLB%=10,MLB%=5,MM%=3
 DIM P%[0]
 VAR I%,V%,DD%
 WHILE LEN(OUT%)>0:DD%=POP(OUT%):WEND
 PUSH OUT%,&H505A473A'PZG:
 PUSH OUT%,1'VERSION1
 PUSH OUT%,(W%<<16) OR H%'WIDTH&HEIGHT
 PUSH OUT%,WLB% OR (MLB%<<8)'LZ PARAM
 LZ IN%,OUT%,WLB%,MLB%,MM%,16,PROG%
END

DEF LZ IN%[],OUT%[],WLB%,MLB%,MM%,BIT%,PROG%
 WLB%=MIN(MAX(WLB%,7),16)
 MLB%=MIN(MAX(MLB%,3),8)
 MM%=MIN(MAX(MM%,3),10)
 
 VAR WL%=(1<<WLB%)
 VAR WLM%=WL%-1
 VAR ML%=(1<<MLB%)-1
 VAR PH%,PL%,Q%,P%,P2%,OL%,O%
 VAR MD%,MP%,MLL%,D%,L%,B%,I%,DD%
 VAR LEN_IN% =LEN(IN%)
 VAR LEN_OUT%=LEN(IN%)*BIT%/8+ML%
 DIM BB%[WL%+ML%+1]
 DIM HS%[256],HL%[WL%]
 VAR H1%,H2%,HLI%=0
 VAR HS1%,HS2%,HS3%
 VAR CNT%=0,PRG1%

 FILL HS%,-1
 PH%=0:PL%=0
 IF PH%<LEN_IN% THEN Q%=IN%[PH%] ELSE Q%=0
 P%=ML%
 FOR I%=0 TO ML%
  BB%[WL%+I%]=(Q%>>PL%) AND 255
  INC PL%,8:IF PL%>=BIT% THEN
   INC PH%:PL%=0
   IF PH%<LEN_IN% THEN Q%=IN%[PH%] ELSE Q%=0
  ENDIF
 NEXT
 HS1%=BB%[WL%]
 HS2%=BB%[WL%+1]
 HS3%=BB%[WL%+2]
 H1%=HS1% XOR HS2% XOR HS3%
 
 IF PROG% THEN
  PRG1%=P%*40/LEN_OUT%
  PRINT "*"*PRG1%+"-"*(40-PRG1%)
 ENDIF
 
 WHILE P%<LEN_OUT%
  IF PROG% THEN
   INC CNT%
   IF CNT%>16 THEN
    CNT%=0
    PRG1%=P%*40/LEN_OUT%
    LOCATE 0,CSRY-1
    PRINT "*"*PRG1%+"-"*(40-PRG1%)
   ENDIF
  ENDIF
  
  MLL%=-1
  H2%=HS%[H1%]
  WHILE H2%>=0
   D%=(P%-ML%)-H2%
   IF D%>WL% THEN BREAK
   L%=1:P2%=WL%-D%
   WHILE P%+L%<LEN_OUT%
    IF BB%[P2%+L%]!=BB%[WL%+L%] THEN BREAK
    INC L%
    IF L%>ML% THEN MD%=D%:MLL%=L%:GOTO @LZ1
   WEND
   IF L%>MLL% THEN MD%=D%:MLL%=L%
   DEC H2%,HL%[H2% AND WLM%]
  WEND
  
  @LZ1
  IF MLL%<MM% THEN
   MLL%=1
   INC OL%
   IF OL%>=32 THEN
    PUSH OUT%,O%:O%=0:OL%=0
   ENDIF
   B%=HS1%
   O%=O% OR (B%<<OL%)
   INC OL%,8
   IF OL%>=32 THEN
    PUSH OUT%,O%:DEC OL%,32
    O%=B%>>(8-OL%)
   ENDIF
  ELSE
   O%=O% OR (1<<OL%)
   INC OL%
   IF OL%>=32 THEN
    PUSH OUT%,O%:O%=0:OL%=0
   ENDIF
   B%=MD%-1
   O%=O% OR (B%<<OL%)
   INC OL%,WLB%
   IF OL%>=32 THEN
    PUSH OUT%,O%:DEC OL%,32
    O%=B%>>(WLB%-OL%)
   ENDIF
   B%=MLL%-1
   O%=O% OR (B%<<OL%)
   INC OL%,MLB%
   IF OL%>=32 THEN
    PUSH OUT%,O%:DEC OL%,32
    O%=B%>>(MLB%-OL%)
   ENDIF
  ENDIF
  I%=0
  REPEAT
   H2%=HS%[H1%]
   HS%[H1%]=P%-ML%
   HL%[HLI% AND WLM%]=HLI%-H2%
   INC HLI%
   B%=(Q%>>PL%) AND 255
   PUSH BB%,B%:B%=SHIFT(BB%)
   HS1%=HS2%:HS2%=HS3%
   HS3%=BB%[WL%+2]
   H1%=HS1% XOR HS2% XOR HS3%
   INC P%
   INC PL%,8:IF PL%>=BIT% THEN
    INC PH%:PL%=0
    IF PH%<LEN_IN% THEN Q%=IN%[PH%] ELSE Q%=0
   ENDIF
   INC I%
  UNTIL I%>=MLL%
 WEND
 IF OL%>0 THEN PUSH OUT%,O%
 IF PROG% THEN LOCATE 0,CSRY-1:PRINT "*"*40
END

2017-11-11PRG:2SC このエントリーを含むブックマーク

OPTION STRICT
OPTION DEFINT
VAR CSR_CHARS,CSR_XMAX
VAR A,C,H,I,L,S,W,X,Y
VAR CX,CY
VAR OX,OY
VAR _X,_Y
VAR BG_MAX=VAL(DIALOG("","BG_MAX(0-3)",3))
VAR CS'CHIP_SIZE
VAR PAGE

DEF GCOPYA PG,X,Y,W,PX,PY,A
 IF !A THEN
  GCOPY PG,X,Y,X+W-1,Y+W-1,_X,_Y,0
  RETURN
 ENDIF
 VAR COL,RX,RY,X2,Y2,ANG=A AND 3
 FOR Y2=0 TO W-1
  FOR X2=0 TO W-1
   RX=X2:RY=Y2
   IF ANG==1 THEN RX=Y2:RY=W-X2-1
   IF ANG==2 THEN RX=W-X2-1:RY=W-Y2-1
   IF ANG==3 THEN RX=W-Y2-1:RY=X2
   IF A AND 4 THEN RX=W-X2-1
   IF A AND 8 THEN RY=W-Y2-1
   GPAGE 0,PG:COL=GSPOIT(RX+X,RY+Y)
   IF !COL THEN CONTINUE
   GPAGE 0,0:GPSET PX+X2,PY+Y2,COL
  NEXT
 NEXT
 GPAGE 0,0
END

DISPLAY 0
GCLS

CSR_CHARS=(96000-19200*DISPLAY())/WIDTH()/WIDTH()
CSR_XMAX=(400-DISPLAY()*80)/WIDTH()
FOR I=0 TO CSR_CHARS-1
 X=I MOD CSR_XMAX
 Y=I DIV CSR_XMAX
 S=WIDTH()
 GPUTCHR X*S,Y*S,CHKCHR(X,Y),S>>3,S>>3
NEXT
'********************************************
PAGE=BGPAGE()
CS=16
'FOR L=3 TO 0 STEP -1
FOR L=0 TO BG_MAX
 BGOFS L OUT OX,OY
 FOR Y=0 TO 126
  FOR X=0 TO 126
   _X=X*CS-OX:_Y=Y*CS-OY
   IF _X<0 || _X>399 THEN CONTINUE
   IF _Y<0 || _Y>239 THEN BREAK
   A=BGGET(L,X,Y)>>12
   C=BGGET(L,X,Y) AND 1023
   CX=C MOD 32*CS:CY=C DIV 32*CS
   GCOPYA PAGE,CX,CY,CS,_X,_Y,A
  NEXT
 NEXT
NEXT
'********************************************
PAGE=SPPAGE()
FOR I=0 TO 127
 IF SPUSED(I) THEN
  SPCHR I OUT X,Y,W,H,A'?X,Y,W,H
  IF A AND 1 THEN
   IF SPLINK(I)+1 THEN
    SPOFS SPLINK(I) OUT CX,CY
   ELSE
    CX=0:CY=0
   ENDIF
   SPOFS I OUT _X,_Y
   _X=_X+CX
   _Y=_Y+CY
   GCOPYA PAGE,X,Y,W,_X,_Y,A>>1
  ENDIF
 ENDIF
NEXT

CLS:SPCLR:BGCLR
?"FINISH"
?"PUSH (X) TO END"
REPEAT:VSYNC:UNTIL BUTTON(2) AND #X
END

2017-10-09UIを考える このエントリーを含むブックマーク

最近の自分が内容が無いような日記ばかりだったww

市販のソフトだと当たり前なのにプチコン作品だとあんまりできてない機能っていうのがあって

「タッチとボタンの両対応」ね。


そんなわけで、MiniRPGはタッチでメッセージを送れます。

ポケモンサンをやって気づいたんだけどね。

2017-10-02こうしん このエントリーを含むブックマーク

プチコンが値下がった。(遅い情報)

ミーバース終了が決まったため値下げたそうです。

2017-08-21 このエントリーを含むブックマーク

会員制って荒れないから良いわぁ~

とつくづく思うこの頃。

どちらかというと、書き込みが無さ過ぎるんだけど(苦笑)

2017-08-17 このエントリーを含むブックマーク

リンク集がno titleと思ったら

4月1日にすでになっていたらしいww


久しぶりに新しい人が入ってきたから更新。