プチコンまとめWiki (初代/mkII)

Toukou/PICデコーダ の変更点

パンくずリスト


#title(投稿プログラム : PICデコーダ)
#contents
/////////////////////////////////
// 投稿年月日は今日の日付を入力してください。
// この日付は、将来的に投稿プログラムを年月日順に整理するさいに使用されます。
// また、適当にタグをつけることができます。半角のコンマ区切りで複数つけられます。
// タグをつけると、同じタグが付いたページを検索することができます。

2011年12月09日投稿
/ 2012年01月08日大幅更新
/ 投稿者 : 名無しさん
/ &tag(投稿プログラム,ツール,画像圧縮);
/ &tag(投稿プログラム,ツール,画像圧縮,初代対応,QRコード);

/////////////////////////////////
// ここに概要とか書きます。
// [#英数字] はページ内リンクに使用できますが、消してもかまいません。
// (自動でランダムな文字列が再付与されます)

* 概要 [#g25211b5]
[[Toukou/PICエンコーダ]]で作成したデータをデコードするプログラムです。

リストでは、PICエンコーダで生成したデータをDATA文にして、
それを復元し、色を付けた文字列で16x16ごとに表示するようになっています。

** 動作確認 [#gba278ce]
SPU0の0番のキャラクタと同じパターンで文字列が表示されれば成功です。
(DATAの入力ミスがあるかもしれないので、PICエンコーダでファンクションキーに出力したDATA文を、@PICD直後に貼り付けて確認するのが良いです)

** 改造など [#j5c980be]
自分のプログラムに組み込んで画像をリスト内に持つようにしてくれて結構です。

使い方としては、CHRED等でキャラクタを編集し、
PICエンコーダ(をベースにしたプログラム)で編集したキャラクタをデコードし、
生成したDATA文を使うような感じになるかと思います。

/////////////////////////////////

//* スクリーンショット・動画 [#e411ab30]
//動作しているところを撮影した写真や動画があれば貼り付けてください。

// ページを作成すると、画像の添付ができるようになります。(作成する前はできません)
// 画像を添付したら、以下の書式でページ内に貼り付けられます。
// #ref(添付ファイル名)

* QR コード [#fa0045b3]
プチコンmkII 向けの QR コードです。

|>|~PRG:PIC_DED|
|~1/2|~2/2|
|&ref(PIC_DED1.png,,200%);|&ref(PIC_DED2.png,,200%);|

// 以下の書式で、YouTube やニコニコ動画を貼り付けられます。
// #youtube(0HWX7kovgY8)
// #nicovideo(sm13684820)

/////////////////////////////////

* プログラムリスト [#c662ffe4]
#basic{{
@PICD
DATA 1,"10800008E00000008402210FEE8DC0000081D0000081C281E220EE800005CE8000000

@MAIN
CLEAR
DIM PICF(256),PICC(256)
DIM POUT$(4)
RESTORE @PICD
 READ PC,PIN$
 FOR I=2 TO PC
  READ PI$
  PIN$=PIN$+PI$
 NEXT
 GOSUB @PICDEC
 FOR Y=0 TO 15
  FOR X=0 TO 15
   C$=MID$(POUT$,Y*PW+X,1)
   COLOR 15-VAL("&H"+C$):?C$;
  NEXT
  ?""
 NEXT
END

@SPLCHR
FOR I=0 TO 3:POUT$(I)="":NEXT
FOR I=0 TO 7
 POUT$(0)=POUT$(0)+MID$(POUT$,I*16,8)
 POUT$(1)=POUT$(1)+MID$(POUT$,I*16+8,8)
 POUT$(2)=POUT$(2)+MID$(POUT$,I*16+128,8)
 POUT$(3)=POUT$(3)+MID$(POUT$,I*16+136,8)
NEXT
RETURN

@PICDEC
_X=0:_Y=0:PH=16:PW=16:PDP=0
POUT$=""
GOSUB @UCP
FOR _Y=0 TO PH-1
 FOR _X=0 TO PW-1
  _POS=_X+_Y*PW
  IF PICF(_POS)==0 THEN @PD0
   _C=PICC(_POS)
  @PD0
  POUT$=POUT$+HEX$(_C)
 NEXT
NEXT
RETURN

@UCP
_UX=0:_UY=0
FOR _I=0 TO PW*PH-1
 PICF(_I)=0
NEXT
PDP=PDP+1
@UCPLP
IF _UX>=PW OR _UY>=PH THEN @UCPLPO
 _UPOS=_UX+_UY*PW
 PICF(_UPOS)=1
 PICC(_UPOS)=VAL("&H"+MID$(PIN$,PDP,1))
 PDP=PDP+1
 GOSUB @UCL
 @UCPL2
  PLEN=VAL("&H"+MID$(PIN$,PDP,1))
  PDP=PDP+1
  GOSUB @ADDLEN
 IF PLEN==0 AND _UY<PH THEN @UCPL2
GOTO @UCPLP
@UCPLPO
RETURN

@ADDLEN
 _PLEN=PLEN
 IF _PLEN==0 THEN _PLEN=15
 _UX=_UX+_PLEN
 @AL0
 IF _UX<PW OR _UY>=PH THEN @ALO
  _UX=_UX-PW
  _UY=_UY+1
 GOTO @AL0
 @ALO
RETURN

@UCL
_CP=PICC(_UPOS):_LY=_UY:_LX=_UX
@UCL0
_I=VAL("&H"+MID$(PIN$,PDP,1))
PDP=PDP+1
IF _I==8 OR PDP>LEN(PIN$) THEN @UCLO
 _I=_I+(_I>7)*-16
 _LY=_LY+1
 _LX=_LX+_I
 _POS=_LX+_LY*PW
 PICF(_POS)=1
 PICC(_POS)=_CP
GOTO @UCL0
@UCLO
RETURN
}}

/////////////////////////////////
// コメントを募集したくないなら、ここから下は削除してください

* CHECKER FLAG (ひとことコメント) [#f43e4a8c]
この作品に対するコメントがあれば一言どうぞ。(作品に直接関係ない質問や雑談は[[掲示板>Board]]へ)
//- ''sou51'' : 42行目、PICC(I)=となっていたのをPICF(I)=に修正しました。 (&new{2011/12/10 (土) 01:26:13};)
//- ''sou51'' : 63行目_PLEN=8としていたのを_PLEN=16に変更しました (&new{2011/12/10 (土) 01:26:47};)
//-- ''sou51'' : 63行目の変更に伴い、DATA文のデータを変更しました (&new{2011/12/10 (土) 01:28:38};)
- ''名無しさん'' : QRコードお願いします (&new{2012/04/08 (日) 11:05:07};)

#comment

// 8X8バージョン
//CLEAR
//DIM PICF(64),PICC(64)
//FOR CC=0 TO 3
// READ PIN$
// GOSUB @PICDEC
// FOR Y=0 TO 7
//  FOR X=0 TO 7
//   C$=MID$(POUT$,Y*PW+X,1)
//   COLOR 15-VAL("&H"+C$):?C$;
//  NEXT
// NEXT
// ?"PUSH ANY KEY"
// @KW
// IF BUTTON()==0 THEN VSYNC 1:GOTO @KW
// VSYNC 1
//NEXT
//END
//
//DATA"103004E0003400035C0031D0031C30"
//DATA"103008E223202136D031C3"
//DATA"10000034E00031C0031D00301C300"
//DATA"1D034EEE310FE34C3000"
//
//@PICDEC
//_X=0:_Y=0:PH=8:PW=8:PDP=0
//POUT$=""
//GOSUB @UCP
//FOR _Y=0 TO PH-1
// FOR _X=0 TO PW-1
//  _POS=_X+_Y*PW
//  IF PICF(_POS)==0 THEN @PD0
//   _C=PICC(_POS)
//  @PD0
//  POUT$=POUT$+HEX$(_C)
// NEXT
//NEXT
//RETURN
//
//@UCP
//_UX=0:_UY=0
//FOR _I=0 TO PW*PH-1
// PICF(_I)=0
//NEXT
//PDP=PDP+1
//@UCPLP
//IF _UX>=PW OR _UY>=PH THEN @UCPLPO
// _UPOS=_UX+_UY*PW
// PICF(_UPOS)=1
// PICC(_UPOS)=VAL("&H"+MID$(PIN$,PDP,1))
// PDP=PDP+1
// GOSUB @UCL
// @UCPL2
//  PLEN=VAL("&H"+MID$(PIN$,PDP,1))
//  PDP=PDP+1
//  GOSUB @ADDLEN
// IF PLEN==0 AND _UY<PH THEN @UCPL2
//GOTO @UCPLP
//@UCPLPO
//RETURN
//
//@ADDLEN
// _PLEN=PLEN
// IF _PLEN==0 THEN _PLEN=16
// _UX=_UX+_PLEN
// @AL0
// IF _UX<PW OR _UY>=PH THEN @ALO
//  _UX=_UX-PW
//  _UY=_UY+1
// GOTO @AL0
// @ALO
//RETURN
//
//@UCL
//_CP=PICC(_UPOS):_LY=_UY:_LX=_UX
//@UCL0
//_I=VAL("&H"+MID$(PIN$,PDP,1))
//PDP=PDP+1
//IF _I==3 OR PDP>LEN(PIN$) THEN @UCLO
// _I=_I+(_I>7)*-16
// _LY=_LY+1
// _LX=_LX+_I
// _POS=_LX+_LY*PW
// PICF(_POS)=1
// PICC(_POS)=_CP
//GOTO @UCL0
//@UCLO
//RETURN

表示モード : [ スマホ・3DS対応表示 | クラシック表示 ]
PukiWiki 1.4.7 Copyright © 2001-2006 PukiWiki Developers Team. License is GPL. Based on "PukiWiki" 1.3 by yu-ji
ページの処理時間 : 0.005 秒 | ログイン
Copyright(C) 2011-2014 プチコンまとめWiki ◆1sxkymI8ji30