○全般的な事項 ・コマンドの解釈 (1)テキストコマンド PanCakeへのコマンドは、必ず"PANCAKE "で始まるものとする(便宜上、これをテキストコマンドヘッダと呼ぶ)。 この後にコマンドを記述し、コマンドの後に引数を記述する。 コマンドと引数の間は、空白(" ")で区切る。 改行文字を受信後、コマンドの実行を開始する。 現状では、テキストコマンドヘッダおよびコマンドは[A-Z][0-9]の文字を使用する。 バイナリ文字(0x00〜0x1F)を受信した場合は改行文字と同じ扱いをするが、タブ(0x09)については空白として扱う。 (2)バイナリコマンド PanCakeへのコマンドは、必ず0x80で始まるものとする (便宜上、これをバイナリコマンドヘッダと呼ぶ)。 続く1バイトがデータ長となり、これはバイナリコマンドヘッダ・データ長・バイナリコマンド及び引数を含めた長さとなる。 データ長は8bit符号なし数値とする。データ長0は総長256バイトとして扱う。 バイナリコマンドヘッダおよびデータ長を受信後、(データ長 - 2)バイトのデータを受信してからコマンドの実行を開始する。 ・引数の解釈(テキストコマンド) PanCakeへのコマンドにおいて、16進数で引数を記述するものについては、以下のような解釈が行われる。 1. [0-9][A-F][a-f]を16進数の文字として扱い、これ以外は区切り文字とする 2. 2桁(8bit単位)での解釈を行う 3. 1桁しか記述されていなかった場合、解釈された値は00〜0F(0〜15)とする。 故に、以下の記述は等価となる。 PANCAKE STAMP1 00 08 02 FF00FF00FF00FF00 PANCAKE STAMP1 000802 FF 00 FF 00 FF 00 FF 0 各コマンドの要求する引数が不足した場合、0を記述したものとして扱う。 各コマンドの要求する引数よりも多くの引数が記述された場合、これは無視する。 ・引数の解釈(バイナリコマンド) 各コマンドの要求する引数が不足した場合、0を記述したものとして扱う。 各コマンドの要求する引数よりも多くの引数が記述された場合、これは無視する。 ・座標系 座標は8bit符号つき数値として扱う。 特段の断りがない限り、指定可能な範囲はX/Y共に00〜7F(0〜127)および 80〜FF(-128〜-1)とする。このうち、実際に描画される範囲はX:00〜4F(0〜79), Y:00〜2C(0〜44)とする。 ・色番号 色番号は8bit符号なし数値として扱う。 特段の断りがない限り、色の指定は下位4bitの内容を使用し、上位4bitの内容は無視する。 ○各コマンドの実装状況 ・CLEAR 実装済み。 色番号の指定については色番号の項目に従う。 スプライトモード有効時においては、このコマンドは無視される。 ・LINE 実装済み。 座標、色番号の指定についてはそれぞれの項目に従う。 スプライトモード有効時においては、このコマンドは無視される。 ・STAMP 実装済み。 座標、色番号の指定についてはそれぞれの項目に従う。 透明色の指定は符号無し8bit数値とするが、00〜0Fの指定とすること。 現状では透明色に10〜FFを指定した場合は透明色は使用しないものとするが、将来への対応を考慮し、透明色無しの場合はFFを指定すること。 スプライトモード有効時においては、このコマンドは無視される。 ・STAMP1 実装済み。 座標、色番号の指定についてはそれぞれの項目に従う。 スプライトモード有効時においては、このコマンドは無視される。 ・IMAGE 実装済み。 画像番号は00〜07のみ有効、これ以外を指定した場合は無視する(何もしない)。 スプライトモード有効時においては、このコマンドは無視される。 ・VIDEO 実装済み。 実機では画面表示offとした際におそらく映像信号の出力を停止するが、エミュレータでは単純に表示を黒一色として代用する。 ・SPRITE START 実装済み。 スプライトモードの有効/無効を切り替える。 スプライトモードを有効にした場合、指定された引数による背景を表示し、この上にSPRITE CREATE/MOVEによって設定された内容でスプライトを表示する。 背景の指定は、00〜07が組み込み画像(IMAGEコマンドと等価)、08〜1Fは単色(CLEARコマンドと等価)とする。 スプライトモードが有効になっている状態でスプライトモードを無効に切り替えた場合、スプライト表示は行わず、背景のみ表示する。この時の背景は、直前(スプライトモードが有効になっていた時点)のSPRITE STARTによって設定されたものとする。 スプライトモードが無効になっている状態でスプライトモードを無効とした場合は、何もしない。 スプライトモードの有効/無効の切り替えに伴い、SPRITE CREATE/MOVEによって指定されたスプライトの内容が変更されることはない。エミュレータ起動時における、全てのスプライトの初期状態は以下の内容とする。 - 組み込みスプライト画像は未定義(何も表示されない) - スプライト表示位置はX/Yともに描画範囲外 ・SPRITE CREATE 実装済み。 仕様に従い、スプライト番号は00〜0F、組み込みスプライト画像番号は00〜AFに対応。 スプライト番号10〜FFを指定した場合は何もしない。 スプライトの表示優先順位は、スプライト番号が大きいものが優先される(スプライト番号0Fが一番上に表示される)。 組み込みスプライト画像番号B0〜FFを指定した場合、未定義(何も表示されない)のスプライトを選択したものとする。 スプライトモード有効時においては、スプライト番号で指定されたスプライトを指定された画像番号に設定し、即座に表示を行う。 スプライトモード無効時においては、スプライト番号で指定されたスプライトを指定された画像番号に設定するが、表示は行わない。 スプライトの透過色にも対応する。 ・SPRITE MOVE 実装済み。 座標の指定については座標系の項目に従う。 スプライト番号10〜FFを指定した場合は何もしない。 スプライトモード有効時においては、スプライト番号で指定されたスプライトを指定された位置に移動し、即座に表示を行う。 スプライトモード無効時においては、スプライト番号で指定されたスプライトを指定された位置に移動するが、表示は行わない。 ・SOUND 未実装。 ・SOUND1 未実装。 ・MUSIC SCORE 未実装。 ・MUSIC PLAY 未実装。 ・RESET 実機ではPanCakeシステムのリセットとするが、エミュレータではエミュレータの動作終了とする。 ・CIRCLE 実装済み。 座標、色番号の指定についてはそれぞれの項目に従う。 半径は8bit符号付き数値とし、負の値は指定しないこと(現状では何も描画されない)。