今回は、最新版のIchigoJam R(執筆時はβ版)で、プログラムを動かしてみます。実際、どのくらい速くなったのか興味あるところです。
ただ、RISC-VにCPUを乗り換えたということで、この段階ではいろいろこなれていないと思われるので、今後のバージョンアップで、より高速化される可能性はあります。実際に初期のIchigoJamのBASIC処理速度と、最新版の処理速度ではかなりの差があります。
IchigoJam Rでプログラムを動かす前に、実際に購入していじってみたいという人向けに、少し補足します。
まず、キーボードがUSBタイプのものを利用できるようになりました。以前のように、接続口はUSBだけどPS/2プロトコルが使えるものでないとだめ、ということはなくなりました。
もっとも、すべてのUSBキーボードが問題なく使えるわけではなく、今後対応していくと思われます。無線LANを利用したキーボードも使用できるようですので、ケーブルから解放され、すっきりするかもしれません。
モニタの出力は、これまで通りのビデオ接続です。今なら、HDMIの方がよいのではと思う人も多いでしょう。でも、確かHDMIは1デバイスごとにライセンスを要求されるので、これだと低価格を実現できません。
1500円なのでイチゴ(15)ジャムというのもあるのですが○、いろいろ価格が上昇してIchigoJam Rは2200円(税込)です。
https://www.weblio.jp/wkpja/content/HDMI_年会費とロイヤリティ
う〜ん、アナログなビデオケーブルで接続か、そう思う人もいるかもしれません。ということで、テレビではなく、コンピューターに直接取り込んで、表示してしまった方が簡単かもしれません。
映像入力はUSBから行うことができます(そういう規格があります)。Macでも以下のデバイスを使えば、QuickTime Playerを利用して表示することができます。ちなみに、以下のものは私が実際に購入し、使っているものです。MacOS X SnowLeopardなど、古いMacでも利用できます。
・WOSOB USB2.0ビデオキャプチャー
https://www.amazon.co.jp/gp/product/B08FSSSPDK/
他にも同様の機器があるので、購入して試してみるのもよいでしょう。Macなら実験台みたいなところがありますが、Windowsならどれでも使えるでしょう。
IchigoJam Rの電源は、これまでと同じマイクロUSBです。特に通信するわけではないので、安い充電用ケーブルを接続すれば十分です。
あと、IchigoJam Rでは大幅にメモリが増えています。しかし、一度に作成できるBASICプログラムエリアは、1KBのままです。FILESコマンドで表示すると、0〜14まで保存できるエリアが表示されます。ひとつ1KBなので、将来的には最大15KBまで、プログラムを作成・実行できる可能性もあります。
おおよそ大きな変更点は、こんなところです。より詳しく知りたい方は、以下のページを参照してください。
https://fukuno.jig.jp/3077
またBASICリファレンス1.5β版は以下のURLにあります。
https://ichigojam.github.io/doc/IchigoJam-1.5.html
ということで、まずはループ処理でどのくらい高速化されたか、見てみましょう。BASICでは割と定番の、1万回ループです。
10 CLT
20 FOR I=0 TO 9999:NEXT
30 ?TICK()
このプログラムを、新旧IchigoJamで実行すると、以下のような結果になります。結果ですが、1=1/60なのでカッコ内に秒数に変換した結果を入れてあります。
旧:763(12.7秒)
新:92(1.5秒)
この結果からすると、763÷92=8.293で、だいたい8倍高速になったことがわかります。
IchigoJamは、ビデオ信号を送出しないと速度を向上できます。この場合の速度も計測してみます。プログラムは、以下のようになります。
10 CLT:VIDEO 0
20 FOR I=0 TO 9999:NEXT
30 ?TICK():VIDEO 1
旧:500(8.33秒)
新:81(1.35秒)
ビデオ信号を送出すると、しない場合と比べて、旧IchigoJamは1.526倍、IchigoJam Rは1.13倍遅くなります。これからすると、IchigoJam Rは高速ゆえに、ビデオ信号を送出しないようにしても、以前のIchigoJamよりも効果が低いようです。
次に、セミグラフィックを使って、ライン描画を行ってみましょう。これも、8bitマシン時代、グラフィック機能搭載マシンで見たことがあるかもしれないプログラムです。
10 CLS:CLT
20 FOR I=0 TO 99
30 FOR X=0 TO 63
40 DRAW X,0,63-X,47,2
50 NEXT
60 FOR Y=0 TO 47
70 DRAW 0,47-Y,63,Y,2
80 NEXT
90 NEXT
100 CLS:?TICK()
旧:3372(56.2秒)
新:406(6.76秒)
これも3372÷406=8.3で、やはり8倍速ほどです。どこか10倍速になった命令があるのかもしれませんが、とりあえず次に、LEDを点滅させるI/O制御命令で計測してみます。
10 CLS:CLT
20 FOR I=0 TO 9999
30 LED 1
40 LED 0
50 NEXT
60 ?TICK()
旧:1165(19.4秒)
新:140 (2.33秒)
これも1165÷140=8.3で、やはり8倍速でした。何かは10倍速なのかもしれませんが、だいたい8倍速以上にはなっていると思ってよさそうです。
ここで問題になるのが、過去に作成したゲームなどです。遅すぎたゲームは、ちゃんと遊べるようになるかもしれません。しかし、旧IchigoJamでちょうどよかった速度のゲームは何らかの対策が必要になりそうです。
WAIT命令を入れればよいのですが、何か処理速度を調整する命令でもあればよいのかもしれません。○
【古籏一浩】openspc@alpha.ocn.ne.jp
http://www.openspc2.org/
IchigoJam Rでよくなった部分が、もうほとつありました。それはビデオ信号の処理です。
旧IchigoJamは、どうしてもうまく画面が表示されないことがありました。NTSC信号をCPUで生成しているためで、処理速度的にうまくいかない部分があったのかもしれません。
IchigoJam Rでは、高速なのでうまく処理できているのか、プログラムのバージョンアップによるものかはわかりませんが……。
あと、このテキストが掲載される日は、私の誕生日です、はい。
・創って学ぼうプログラミング
https://news.mynavi.jp/series/makeprogram
・8K/4K/ハイビジョン映像素材集
http://www.openspc2.org/HDTV/
・クリエイター手抜きプロジェクト
http://www.openspc2.org/projectX/