IchigoJamで疑似グラフィックを使った画像の表示
IchigoJamの画面表示解像度は、キャラクタ文字 横32文字×縦24行ですが、
次のキャラクタが用意されており、疑似的に64×48のグラフィック表示が出来ます。
キャラクタコード 0x80(IchigoJamでは #80と表記)~ 0x8Fの16文字が割り当てています。
これを使って、疑似的に64x48ドットの画像を表示してみます。
まずは、表示したい絵をペイントツールで作成します。画面いっぱいに表示する大きさの
64×48ドットで作成します。色はモノクロ(白、黒の2色)を指定します。
作成した画像を保存します(ファイル名はcat.bmp)。
次に、この画像からIcigoJamのキャラクターコードに変換します。
4ドットが1文字(0x80~0x8F)に対応する形で変換します。
手作業でやるのも大変なので、ツールを作成して変換しました。
ツールはこちらからダウンロード(ダウンロード後、IchigoBmpConv.zipを
マウス右ボタンでプロパティを開いてセキュリティブロックを外してから
解凍して下さい)できます。
作成した画像ファイルを指定し、[ソース出力]ボタンをして
IchigoJam BASICのソースを出力します。
Windows上で開くと意味不明の内容です。
これをIchigoJamに転送して実行します。
実行すると、画像が表示されます。340行で無限ループとなっているので
中断する場合は[ESC]キーを押します。
空き領域を調べると52バイトしかありません。
これだと他に何も出来ないですね。
そこでツールでバイナリ出力してEEPROMに格納して
IchigoJamのI2CRコマンドで表示出来るかを試してみました。
IchigoJamにI2CインタフェースのEEPROMを接続します。
プログラム自体は6行だけです。
10 FOR I=0 TO 4
20 POKE #700,I*3,0
30 R=I2CR(#50,#700,2,#900,768)
40 WAIT 30
50 NEXT
60 GOTO 10
5枚の絵を切り替えて表示しています。WAIT命令を入れないといけないくらい
高速で表示出来ました。ちょっとしたアニメーション表示が可能ですね。
こプログラムの内容ですが、
R=I2CR(#50,#700,2,#900,768)
でI2Cアドレスが#50のEEPROMに対して、一画面分の画像768バイトを取得し
IcihoJamの画面表示用のメモリ #900に書き込むことを行っています。
事前のPOKE #700,I*3,0でEEPROMの読出しアドレス2バイトをIcihoJamの
メモリアドレス #700 設定しています。
1画面分768バイトは16進数では#300ですので、Iの値に応じて
#300、#600、#900、・・・ と5枚分の画像の先頭アドレスを指定しています。
I2CRコマンドの使い方については、
IchigoJam 情報サイト 「イチゴジャム レシピ」 http://15jamrecipe.jimdo.com/
のBASIC コマンド一覧のI2CRの解説が分かりやすいです。
IchigoJamでは、内部メモリの情報が公開されおり、
EEROMから読み取ったデータを直接変数領域に格納したりも出来ます。
配列に一気に格納とか、プログラム領域自体も変更できます。
以下は IchigoJamのメモリマップと演算子優先順位よりコピペの内容です。
仮想アドレス 機能
#000-#6FF キャラクターパターン #00〜#DF (読み取り専用)
#700-#7FF 書換可能キャラクターパターン(PCG) #E0〜#FF
#800-#8FF 2byte符号付き整数の変数(配列0〜101、変数A〜Z)
#900-#BFF 画面キャラクターコード(VRAM) 32x24
#C00-#FFF プログラム(行番号(2B)、サイズ(2B)、テキスト)
頑張れば ROM版 アドベンチャーゲームなんかが作れそうです。
« arduinoでPS/2キーボードのエミュレーションを行う その2 | トップページ | Aliexpressでブレッドボード用電源を購入しました »
「IchigoJam」カテゴリの記事
- Ichigojam Rが届きました(2021.02.05)
- β版 IchigoJam Rを予約注文しました(2021.01.23)
- IchigoJamのファームウェア 1.4.1が正式に公開されました(2019.12.10)
- 「ichigoツール」をGithubにて公開しました(2019.11.09)
- ichigojamのファームウェアを1.4b13にアップデートしました(2019.11.06)
« arduinoでPS/2キーボードのエミュレーションを行う その2 | トップページ | Aliexpressでブレッドボード用電源を購入しました »
コメント