RISC-V対応 IchigoJam BASIC と、有機ELディスプレイを使った「いかジャンプGAME」です。これまで、有機ELディスプレイでゲームを作るには、(一部に)マシン語が必要でした。RISC-Vプロセッサを搭載したIchigoJamを使えば、BASICだけでもスムーズ※に動かすことが出来るようになります。(※スムーズ=筆者の主観です。)
目次
ゲームの内容
IchigoJam用マイコンボード上のボタンSW2を押すと、イカがジャンプします。障害物をジャンプでよけてください。
ハードウェアの製作方法
ハードウェアは、IchigoJam R (β版)のCN5に有機EL(OLED)ディスプレイを接続して製作します。有機ELディスプレイは、SSD1306搭載品かつ、端子配列がGND、VDD、SCL(SCK)、SDAの順になっているものを使用し、ピン名がIchigoJam側と合うように接続してください。
IchigoJam R (β版):
【β版】IchigoJam 組み立て済完成品 R (販売者=PCN)
有機ELディスプレイの市販例:
0.96インチ 128×64ドット有機ELディスプレイ(OLED): ディスプレイ・表示器 秋月電子通商-電子部品・ネット通販 (akizukidenshi.com)
ご注意:RISC-Vは、従来のIchigoJam 初代、U、T、Sとは異なる新しいIchigoJam Rに搭載されているプロセッサです。
BASIC言語で書いたプログラム
ソフトウェアは、IchigoJam BASICで作成しました。行番号800以降が有機EL(OLED)ディスプレイ用のドライバ部です(後述)。
1 cls:?"イカ ジャンプ by クニノ / PCGキャラ フクノ サン"; 2 clv:let[0],#3810,#FE7C,#3838,#5428,0,0,#7C10,#54FE:copy#700,#800,16:gsb800 3 Y=14:lc0,15:forI=0to7:?CHR$(RND(4)+1);:next 100 'MAIN 110 IF Y=14 && BTN() B=1:BEEP 120 IF B A=A+1 ELSE A=A-1 130 IF !BTN() B=0 140 IF !RND(8) LC 8,14:?"."; 150 LC 1,Y:?" "; 160 LC 8,15:?CHR$(RND(4)+1); 170 SCROLL 3:Y=Y-A 180 IF Y>14 Y=14:A=0:BEEP 3 190 IF SCR(1,Y)=46 GOTO 300 200 LC 1,Y:? CHR$(224+B) 210 GSB 900:GOTO 100 300 'END 310 LC 1,Y:?"X";:GSB 900 320 BEEP 2,20:WAIT 120 330 IF !BTN() GOTO 330 340 RUN 800 let[85],#4000,33,#227F,#700,#D5AE,#8D80,#2014,#DA00,#8112,#D9CF,#DBF1,#A440,#AFA6 810 W=i2cw(60,#8AA,1,#8B2,18) 900 W=i2cw(60,#8AA,1,#8AC,6):for[98]=0to7:for[99]=0to15:copy#8A2,vpeek(7-[98],[99])*8,8:W=i2cw(60,#8AB,1,#8A2,8):next:next:rtnキャラクタのイカ(PCG)は、IchigoJamの開発者である福野さんのブログ(https://fukuno.jig.jp/1062)のものを使用しました。
プログラム更新:2021/1/30 PM1:50
(描画初期位置追加,障害物座標修正,床面変更)
OLED用ドライバ
下記は、有機EL(OLED)ディスプレイ用のドライバ部です。配列変数の[84]以降を使用します。行番号800をGSB(GOSUB)命令で実行するとディスプレイの初期化を行い、行番号900をGSB命令で実行するとテレビ画面に表示中のテキスト文字を有機ELディスプレイに表示します。
' OLED ドライバ CN5 ヨウ 800 let[85],#4000,33,#227F,#700,#D5AE,#8D80,#2014,#DA00,#8112,#D9CF,#DBF1,#A440,#AFA6 810 ifi2cw(60,#8AA,1,#8B2,18)?"E 900 ifi2cw(60,#8AA,1,#8AC,6)?"E 910 for[98]=0to7:for[99]=0to15:copy#8A2,vpeek(7-[98],[99])*8,8:ifi2cw(60,#8AB,1,#8A2,8)?"E 920 next:next:rtn
180°回転表示用ドライバ
IchigoJam R (β版)では、14ピンのCN3に取り付けることも出来るようになりました。こちらも、IchigoJam側とピン名が合うように接続してください。
ドライバ部は、下記の180°回転表示対応版を使用してください。
' OLED ドライバ CN3 ヨウ 180゚ カイテン バン 800 let[84],#4000,33,#227F,#700,#D5AE,#8D80,#2014,#A100,#DAC8,#8112,#D9CF,#DBF1,#A440,#AFA6 810 ifi2cw(60,#8A8,1,#8B0,20)?"E 900 ifi2cw(60,#8A8,1,#8AA,6)?"E 910 for[98]=0to7:for[99]=0to15:copy#8A0,vpeek(7-[98],[99])*8,8:ifi2cw(60,#8A9,1,#8A0,8)?"E 920 next:next:rtn
有機ELディスプレイの詳しい使い方
より詳しい有機ELディスプレイの使い方や、従来のIchigoJamを使ったゲームの作り方は、以下のサイトで紹介しています。
ボクにもわかる IchigoJam用 I2C 有機ELディスプレイ OLED の接続方法 (bokunimo.net)
以下は、IchigoJam U基板の裏面にRISC-Vマイコンボードを接続する製作例です。
ボクのIchigoJam用RISC-Vマイコンボード
表面は、一見すると従来のIchigoJamですが、裏面には、RISC-Vプロセッサを搭載した Seeed Studio (中国)製のマイコンボードWio Lite RISC-V(GD32VF103)を貼り付け、配線しました。
本来、Wio Lite RISC-Vに搭載されているWi-Fiモジュールと、マイクロSDカードスロットは取り外しました。また、IchigoJam基板側のパターンと接触しないよう、耐熱性のあるポリイミドテープを基板の裏面に貼り、強力両面テープで取り付けました。
配線は、上図の通り、Wio Lite RISC-Vの両脇の端子から行いました。ただし、一部(VIDEO 1端子と、KBD1、KBD2、OUT 1、4)については、(基板の表側に端子がないので)マイコンの端子やチップ部品の端子などから配線しました。キーボード用のPS/2端子部にはUSB端子を取り付けます。もともとのKBD1端子にKBD2が来るように接続すると、極性が合います。
まるで本物のIchigoJamように見えるマイコンボードの完成です。
おわりに
製作のきっかけは、ピン配列を見て、多くのピンが近いことに気づいたことでした。類似の製作品も登場する中、比較的、容易に作れると思って取り組んでみました。
しかし、実際に配線してみると、のべ製作時間4時間程度(構想や情報収集を含めると8時間以上)と、それなりの労力が必要でした。
正直な感想は「買った方が早い」ですが、今回、得た自分だけの作品と、製作を通して得た知識は、お金では買えない貴重な財産です。