PanCake の使い方



IchigoJam BASIC 1.1 以降で使用する場合

IchigoJam BASIC 1.1 以降(開発版では 1.0.2 beta 9 以降)より、

IchigoJam BASIC では LOCATE・SCROLL・CLS でコントロールコードを送出する仕様になりました。

これは PanCake 1.0 で考慮されていないため、誤動作を起こす場合があります。

コマンドを受け入れられずに表示がおかしくなったり、最悪固まって以後のコマンドを受け付けなくなります。

PanCake 1.0 は IchigoJam BASIC 1.0 の時に公開されています。

 

PanCake のコマンドを実行する前に予め UART 1 または UART 3 を実行して、コントロールコードを送出しないように設定して下さい。

プログラムでは次のコマンドをプログラムの頭部分で入れておくと良いです。

 

IF VER()>11000 UART 1

 


PanCake と IchigoJam を1画面で使う

PanCake は通常 IchigoJam とは別に専用に映像・音声出力を行います。
そのため、テレビなどが IchigoJam とは別にもう1台必要ですが、ディスプレイが1台しかない場合もあるでしょう。

そのため、PanCake と IchigoJam の画面を切り替えて使用する事もできるようになっています。

 

PanCake プリント基板

映像出力端子近くの J1 ショートピン接続で設定できます。

  • 1-2 ショートにした場合
    PanCake と IchigoJam を別々に出力
    PanCake と IchigoJam それぞれにモニタ等を接続します。
  • 2-3 ショートにした場合
    PanCake と IchigoJam の出力を合わせる
    IchigoJam の映像へモニタを接続するのがおすすめです。
    PanCake 側の場合は IchigoJam の映像が
    おかしくなる場合があります。

PanCake ブレッドボード

PanCake の VIDEO1〜4 を束ねた部分を

IchigoJam の VIDEO2 に入れます。

下画像の黄色いジャンパワイヤです。

ai.cafe

ai.cafe は基板上でこの考慮がされていませんが、

R11 の 100Ω 抵抗を ジャンパ または 0Ω 抵抗にし、

VIDEO 端子を IchigoJam の VIDEO2 に接続する事で

実現できます。

 


PanCake 側のビデオ出力へ接続すると、表示がおかしくなる場合があります。

 

その場合は IchigoJam 側のビデオ出力へ接続してみて下さい。

 

この状態で PanCake と IchigoJam を同時に起動した場合、PanCake は IchigoJam の起動を検出し、

PanCake は映像出力を非表示にするため、IchigoJam の画面が優先表示されます。

PanCake・IchigoJam 共に出力されて画面が乱れる場合は、慌てずに ?"PANCAKE VIDEO 00 と入力して下さい。

PanCake 1.0 以降(PanCakeプチコン3号Edition を含む)では ?"PC VIDEO 00 と省略できます。

 

あとは必要に応じて PanCake と IchigoJam の表示を切り替えます。

  • PanCake を表示する場合: VIDEO 0:?"PANCAKE VIDEO 01" 
  • IchigoJam を表示する場合: VIDEO 1:?"PANCAKE VIDEO 00"

これで1画面で PanCake と IchigoJam を切り替えて表示する事ができるようになります。

 

ただし IchigoJam は VIDEO 0 にすると処理速度が上がるため、

PanCake 側はコマンドを処理しきれなくなり、コマンドを読み落とす可能性があります。

PRINT(?)間に WAIT を入れるなどして調整して下さい。

運営者が実際に使っている感じでは、読み落としは確認していません。

PanCake 1.0 からは対策として BPS コマンドが用意されています。

 

公式サイトで公開している「りんごでさっちゃん」や PCN 発売の ダンブンゲーム は

PanCake 単独のテレビで動作するように作られています。

PanCake プリント基板では J1 を 1-2 接続にして、端子を直接切り替えるのが良いでしょう。

(2-3 接続での動作は WAIT を増やすなど、プログラムの改良が必要です)

 

運営者公開の PanCake+IchigoJam プログラム は1画面に対応しています。代わりに実行時は IchigoJam が非表示になります。


動作方法

電源を入れた段階で、番号 0 の画像が表示されます。

PanCake と PanCakeプチコン3号Edition では画像が異なります。PanCake はこの画面でバージョンが把握できます。

 

PanCake 1.0 (この画面でバージョンが把握できます)

PanCakeプチコン3号Edition


  

「PanCake と IchigoJam を1画面で使う」を行っている場合は IchigoJam の画面が表示される状態で正常です。

IchigoJam と PanCake が合成されておかしい表示になる場合は ?"PANCAKE VIDEO 00 と入力して下さい。

PanCake 1.0 以降および PanCakeプチコン3号Edition では ?"PC VIDEO 00 と省略できます。

 

また音声出力を接続している場合、起動音が音声出力されます。これで正常に起動できています。

テレビによっては色が薄かったり、白黒だったり、ブレがあったり、最悪何も映らない事もあります。

出力するテレビを変えたり、電源を変えると改善したりします。

PanCake プリント基板 は発色に問題がある場合、C5 のトリマコンデンサを調整してみて下さい。

 

PanCake へはシリアル信号でコマンドを送ります。主に下記2種類の確認方法となるでしょう。

 

IchigoJam と接続する

PanCake プリント基板は IchigoJam U の上に重ねます。

または TXD・GND・VCC・VIDEO2 の各端子を
付属のジャンパワイヤで接続します。
(PanCake ブレッドボード版や ai.cake は RXD を
 IchigoJam の TXD と接続します。他3端子は同じ)

IchigoJam の通信速度は 115200bps にします。

(BPS 0。初期状態なので、変更してなければ問題なし)

 

IchigoJam ファームウェアが 1.1.0 以降の場合(開発版含む)

予め UART 1 を実行してシリアルに
コントロールコードを流さないようにして下さい。

 

PRINT "PANCAKE IMAGE 05

 

として画面が変化すれば正常です。

パソコンから操作する

USB-シリアルモジュール の TXD と

PanCake プリント基板は TXD、他は RXD を接続します。

通信速度は 115200bps で、

その他 IchigoJam と設定は共通です。( PC 接続 参照)

 

ターミナルソフトより行単位で

 

PANCAKE IMAGE 05[Enter]

 

を送信して画面が変化すれば正常です。 



サンプル

「PanCake と IchigoJam を1画面で使う」を行っている場合は

PanCake + IchigoJam プログラム を使用すると便利です。全プログラムで対応しています。

 

直接 PanCake を操作する場合

 

PANCAKE SPRITE CREATE 00 49

PANCAKE SPRITE MOVE 00 25 13

PANCAKE SPRITE START 05

 

IchigoJam 経由で PanCake を操作する場合

 

PRINT "PANCAKE SPRITE CREATE 00 49

PRINT "PANCAKE SPRITE MOVE 00 25 13

PRINT "PANCAKE SPRITE START 05

 

右のように空に風船が飛んだ画像になれば正常です。

ふっ、ふっ、ふうせんぅ〜〜〜 >< ←風船大好き

 

※プチコン3号Edition では背景・スプライトが異なるため、この表示にはなりません。

 プログラム/風船 に対応版を掲載しています。

 

IchigoJam からのサンプルプログラムは
このような感じです。

(IchigoJam BASIC 0.9.8〜、PanCake 0.8〜
 PanCakeプチコン3号対応)

 

10 PRINT "PANCAKE CLEAR 00

20 PRINT "PANCAKE LINE 00 00 ";

30 PRINT HEX$(RND(80),2);" ";

40 PRINT HEX$(RND(45),2);" ";

50 PRINT HEX$(RND(16),2)

60 GOTO 20

 

IchigoJam 0.9.8 で16進数表記に変換する
HEX$ に対応したため、シンプルなプログラムで

PanCake を操作できるようになりました。

 

これは福野さんがブログで紹介していたプログラム
(PanCake 0.5 向けで現在のバージョンでは動作しません)を
最新バージョンで動作するようにしたものです。

 

IchigoJamカラー!サードパーティー製グラボ、PanCake登場! | 福野泰介の一日一創


コマンドと応用

PanCake のコマンドは最小限です。でも工夫次第で、様々な表示や出力を行う事ができます。

 

PanCake 公式サイトPanCakeプチコン3号Edition 公式サイト の REFERENCE や コマンド一覧 と一緒に参照して下さい。


初期状態に戻す(リセット)

?"PANCAKE RESET

 

電源を入れた直後同様、固定画像 0 の表示に戻ります。


通信速度を設定する

?"PANCAKE BPS 0000

 

PanCake 1.0 以降・プチコン3号Edition では
通信速度を指定できます。4 桁 16 進数です。

0000 で 115200bps になります



画面をクリアする・線を描く

?"PANCAKE CLEAR 00

?"PANCAKE LINE 0A 0A 1F 1F 01

 

ここで使われている 2 桁の英数は 0〜9・A〜F の

16 進数表記になります。

16 進数「0A」は 10 進数で 10、

16 進数「1F」は 10 進数で 31 です。
IchigoJam BASIC では HEX$(値,2) で

簡単に出力させる事ができます。

 

PANCAKE CLEAR 色

 

画面を 色 でクリアします。
色の指定は 16進数 00(10 進数 0)〜0F(15) です。

特に記載がないところでは基本的に ?"PANCAKE CLEAR 00

を行っている前提です。

 

PANCAKE LINE 開始横 開始縦 終了横 終了縦 色

 

開始座標から終了座標へ 色 で線を線画します。


背景を固定画像にする

?"PANCAKE IMAGE 03

?"PANCAKE LINE 0A 0A 1F 1F 02

 

CLEAR の代わりに IMAGE を用いると、
PanCake に内蔵された画像を使用する事ができます。

画像の値は 16 進数 00(10進数 0)〜07(7)です。

PanCakeプチコン3号Edition では画像が異なります。

画像にした場合でも線画は同様に行えます


点を描く

?"PANCAKE LINE 0A 0A 0A 0A 01

 

開始座標と終了座標を同じにする事で、点になります。


四角を描く

?"PANCAKE LINE 0A 0A 1F 0A 01

?"PANCAKE LINE 0A 0A 0A 1F 01

?"PANCAKE LINE 1F 0A 1F 1F 01

?"PANCAKE LINE 0A 1F 1F 1F 01

 

単に 4 辺それぞれの辺を LINE を描きます。


塗りつぶした四角を描く

FOR Y=#0A TO #1F

?"PC LINE 0A ";HEX$(Y,2);" 1F ";HEX$(Y,2);" 01

NEXT

 

FOR NEXT を用いて 1 行ずつ線画していきます



円を描く

?"PANCAKE CIRCLE 1A 1A 0F 01

 

CIRCLE コマンドで円を描きます。

 

PANCAKE CIRCLE 中心横 中心縦 半径 色


塗りつぶした円を描く

FOR R=#01 TO #0F

?"PANCAKE CIRCLE 1A 1A ";HEX$(R,2);" 01

?"PANCAKE CIRCLE 1A 1B ";HEX$(R,2);" 01

NEXT

 

指定座標と、中心を 1 ピクセル分ずらした座標で

16 進数 01(10 進数 1)から指定半径まで線画すると

塗りつぶした円を描く事ができます。



8×8 のキャラクターを1色で線画する

?"PANCAKE STAMP1 0A 0A 01 0E1F1F1F0E0810E0

 

1色の線画は STAMP1 を用いて線画できます。

 

PANCAKE STAMP1 横 縦 色 データ

 

座標は左上基点です。
データは上から16進数2桁を8行分空白を入れずに並べます

  8 4 2 1 8 4 2 1 0E  
  8 4 2 1 8 4 2 1 1F  
  8 4 2 1 8 4 2 1 1F  
  8 4 2 1 8 4 2 1 1F  
  8 4 2 1 8 4 2 1 0E  
  8 4 2 1 8 4 2 1 08  
  8 4 2 1 8 4 2 1 10  
  8 4 2 1 8 4 2 1 E0  

上のデータは 0E1F1F1F0E0810E0 となります。


IchigoJam BASIC の文字を線画する

C=ASC("イ")

?"PANCAKE STAMP1 0A 0A 01 ";

FOR I=0 TO 7

? HEX$(PEEK(C*8+I),2);

NEXT

?

 

STAMP1 は 1 色で 8×8 ピクセルの線画を行います。

これを用いて IchigoJam BASIC から PEEK でキャラクタを取り出し、

 

STAMP1 で線画を行う事が可能です。


8×8 のキャラクターを多色で線画する

?"PANCAKE STAMP 0A 0A 00";

?"00002220";

?"00022222";

?"00022222";

?"00022222";

?"00002220";

?"00001000";

?"00010000";

?"11100000"

 

STAMP を用いると、直接色を指定して線画できます。

 

PANCAKE STAMP 横 縦 透明色 データ

 

透明色は 00〜0F で、データにその色が含まれると透過します。

データは 1 文字が 1 ピクセルの色 0〜F です。

上の例では透明色が 0 となっています。



スプライトを線画する

?"PANCAKE SPRITE START 10

?"PANCAKE CREATE 00 49

?"PANCAKE MOVE 00 0F 0F 

 

PANCAKE SPRITE START で
スプライトモードと線画モードを切り替えます。

PANCAKE CREATE でスプライトのキャラクターを指定します。

再度用いてキャラクターの変更も可能です。

PANCAKE MOVE でスプライトの表示座標を指定します。

再度用いるとスプライトが移動します。

 

PANCAKE SPRITE START パターン

 

パターンは 00〜07 が 固定画像 0〜7、10〜1F が色 0〜F、

FF がスプライトモードを終了して、線画モードへ戻します。

 

PANCAKE CREATE 番号 キャラクタ

 

番号は 16 進数 00(10 進数 0)〜0F(15)です。
番号が大きい程手前に線画されます。(重なると前に表示されます)

キャラクターは 00〜AF です。公式サイトなどをご参照下さい。


スプライトを自作する

?"PANCAKE SPRITE USER FE 00 ";

?"00002220";

?"00022222";

?"00022222";

?"00022222";

?"00002220";

?"00001000";

?"00010000";

?"11100000

?"PANCAKE CREATE 00 FE

?"PANCAKE MOVE 00 0F 0F

 

PanCake 1.0 以降および PanCake プチコン3号Edition では 

スプライトを自作する事が可能です。

 

PANCAKE SPRITE USER 番号 透明色 データ

 

番号は FD または FE の2つ、他は STAMP と同等です。



スプライトを左右反転する

?"PANCAKE SPRITE FLIP 00 01

 

SPRITE FLIP で左右を反転できます。

 

PANCAKE SPRITE FLIP 番号 反転

 

反転を 01 にすると左右反転です。00 で元の状態になります。


スプライトを回転する

?"PANCAKE SPRITE ROTATE 00 01

 

SPRITE ROTATE でスプライトの回転を行います

 

PANCAKE SPRITE ROTATE 番号 回転

 

回転 は 01=時計回り 90 度、02=180 度。

03=半時計回り 90 度、00=0 度 となります。


スプライトを上下反転する

?"PANCAKE SPRITE FLIP 00 01

?"PANCAKE SPRITE ROTATE 00 02

 

上下反転はコマンド上存在しませんが、SPRITE FLIP で左右反転し、

SPRITE ROTATE で 180 度回転する事で上下反転にできます。


※ スプライトの画面に表示されている 風船(キャラクター 49)は

(スプライトを自作するを除き)

PanCakeプチコン3号Edition では異なるキャラクターになります。



音を出す

?"PANCAKE SOUND 04 00 04 FF 04 FF 05 FF

?"PANCAKE SOUND 04 00 04 04 04 FF 05 FF

?"PANCAKE SOUND 04 00 04 04 04 07 05 FF

?"PANCAKE SOUND 04 00 04 04 04 07 05 00

?"PANCAKE SOUND 04 FF 04 FF 04 FF 05 FF

 

最大 4 重で音を出す事ができます。

 

PANCAKE SOUND 0オク 0音 1オク 1音 2オク 2音 3オク 3音

 

0〜3 がチャンネルです。チャンネル毎に指定します。

オクはオクターブで、00〜07、04 が標準となります。

音は 00〜0B・0E・FF です。00 より
ド・ド#・レ・レ#・ミ・ファ・ファ#・ソ・ソ#・ラ・ラ#・シ

です。0E はノイズ音です。オクターブで音程が変わります。

FF は音がでなくなります。(休符)


一つずつ音を出す

?"PANCAKE SOUND1 00 04 00

?"PANCAKE SOUND1 01 04 04

?"PANCAKE SOUND1 02 04 07

?"PANCAKE SOUND1 03 05 00

?"PANCAKE SOUND 04 FF 04 FF 04 FF 05 FF

 

SOUND1 を用いると 1 つのチャンネルで音を指定できます。

 

PANCAKE SOUND1 チャンネル オクターブ

 

チャンネルは 00〜03 です。SOUND の 0〜3 と共通します。



MML で音を出す

?"PANCAKE MUSIC SCORE 00 01 70 CDEFGAB>C

 

MUSIC SCORE で MML 指定によって音を出します。

 

PANCAKE MUSIC SCORE チャンネル 再生 テンポ・音色 MML

再生 は 01 ですぐに再生します。

テンポ・音色は左の 0〜F がテンポです。大きい程遅くなります。

右の 0〜3 が音色です。0=方形波 1=正弦波 2=80's 3=バイオリン

MML は CDEFGAB-+ の音程指定、~ で伸ばす、R で休符です。

N でノイズ音になります。(オクターブで変調指定可)
<> は > →1オクターブ「高」くするです。

先頭に $ を付けると、繰り返し再生にできます。


MML で一斉に音を出す

?"PANCAKE MUSIC SCORE 00 00 70 $C

?"PANCAKE MUSIC SCORE 01 00 70 $E

?"PANCAKE MUSIC SCORE 02 00 70 $G

?"PANCAKE MUSIC SCORE 03 00 70 $>C

?"PANCAKE MUSIC PLAY 01

?"PANCAKE MUSIC PLAY 00

 

MUSIC SCORE の 再生 を 00 にしておく事で

すぐに再生せず、MML を貯めた状態になります。

これで各チャンネルの MML を登録した後、

MUSIC PLAY 01 で再生する事ができます。 

MUSIC PLAY 00 で停止できます。



OUT ポートの状態を変更する

?"PANCAKE OUT FF

 

PanCake 固有の OUT1〜8 の出力状態を変更します。

PanCake プリント基板の場合は CN3 へ接続します。

PanCake ブレッドボードや ai.cake は CPU の該当端子です。

 

PANCAKE OUT 状態

 

状態は OUT1〜8 が 16進数 01 02 04 08 10 20 40 80

(10進数 1 2 4 8 16 32 64 128)となります。

これらを加算した値で設定します。




バイナリーコマンド

通常 PanCake では

 

?"PANCAKE CLEAR 00

?"PC CLEAR 00 (PanCake 1.0〜・PanCake プチコン3号Edition で有効)

 

と記載しますが、代わりにバイナリーコマンドを使用する事で、プログラムを短くできます。

 

?CHR$(#80,#04,#00,#00)

?CHR$(128,4,0,0)

 

プログラムからバイナリーコマンドを解析しやすいよう、コマンド ID の順番で一覧にしてみました。
バイナリーコマンド1コマンド最大の長さは96バイトです。MUSIC SCORE は特にご注意下さい。

  • 開始 = 開始コード。128(#80)で PanCake はバイナリーコマンドの開始を判断します。
  • 無さ = コマンドの長さ。開始コードからのバイト数です。
  • ID = コマンド ID。コマンド毎に割り当てられています。
  • 値 = コマンド毎に入れる場合。多くは長さが決まっていますが、MUSIC SCORE は可変です。

コマンド部分は コマンド一覧 内の各コマンドにリンクしています。

 

PDF 形式による印刷版を用意しています。

 

ツール/PanCake バイナリーコマンド

 

コマンド 開始 長さ ID 値 1 値 2 値 3 値 4 値 5 値 6 値 7

値 8

0 #00

CLEAR

128

#80

4

#04

0

#00

色番号

             

1 #01

LINE

128

#80

8

#08

1

#01

開始

横座標

開始

縦座標

終了

横座標

終了

縦座標

色番号

     

2 #02

STAMP

128

#80

38

#26

2

#02

横座標

縦座標

透明色

データ

32バイト

3 #03

STAMP1

128

#80

14

#0E

3

#03

横座標

縦座標

透明色

データ

8バイト

4 #04

IMAGE

128

#80

4

#04

4

#04

画像

番号

             

5 #05

VIDEO

128

#80

4

#04

5

#05

表示

非表示

             

6 #06

SPRITE START

128

#80

4

#04

6

#06

画像

色番号

             

7 #07

SPRITE CREATE

128

#80

5

#05

7

#07

番号 パターン            

8 #08

SPRITE MOVE

128

#80

6

#06

8

#08

番号

横座標

縦座標

         

9 #09

SOUND

128

#80

11

#0B

9

#09

0 オクターブ

0

音程

オクターブ

1

音程

オクターブ

2

音程

オクターブ

3

音程

10 #0A

SOUND1

128

#80

6

#06

10

#0A

チャンネル オクターブ 音程          

11 #0B

MUSIC SCORE

128

#80

可変

11

#0B

チャンネル

再生

方法

速さ
音色

MML 可変

(255 #FF を最後に)

12 #0C

MUSIC PLAY

128

#80 

4

#04

12

#0C

再生

停止

             

13 #0D

RESET

128

#80

3

#03

13

#0D

               

14 #0E

CIRCLE

128

#80

7

#07

14

#0E

中心

横座標

中心

縦座標

半径

色番号

       

15 #0F

OUT

128

#80

4

#04

15

#0F

出力値

             

16 #10

SPRITE FLIP

128

#80

5

#05

16

#10

番号 反転            

17 #11

SPRITE ROTATE

128

#80

5

#05

17

#11

番号

角度

           

18 #12

SPRITE USER

128

#80

37

#25

18

#12

パターン

透明色

データ
32バイト

19 #13

BPS

128

#80

5
#05

19

#13

通信速度

0=115200bps