ふる君 が QRコードをSCREEN 3で表示したらどうなるか なんて書くから、ちょっといろいろ試してみたくなっちゃったじゃないですか!
QRコード(二次元コード)とは
今やどんな商品にも付いている(と思われる)「バーコード」を縦方向へ拡張し、より多くの情報を少ない面積で実装した、バーコードの新しい規格です(QRコードについての詳しくは QRコードドットコム さんをご覧下さい)。
最近NTTドコモが「ケータイ・デ・ピッ!と」というTVCMを流し始めて、やっと一般にも認知され始めた感がありますが、つい先日 印刷画像に見えないデータを埋め込む技術 が開発されちゃったりして、さっそく先行きが不安な技術ではあります。しかしQRコードは、この デジタル感丸出し なガジェットだからこそ、ひょっとするとMSXにも応用が利くかも?という淡い期待感が(僕の中で)膨らんでしまいます。
MSXのコンテンツはQRコードで十分に配れる!
QRコードの仕様によると、最もデータ容量の大きいコード(バージョン40=177×177pixels&誤り訂正レベルが最低)を用いると、英数字が4296文字、バイナリでも 2953文字 を入れることができます。QRコード一つで約3000文字を入れられるということは、3KBくらいのBASICゲームなら QRコード1個でそのまま配れる 計算になります。
MSX BASICは、マイクロソフト系の旧BASICの中でも末期に開発された言語でしたので、BASIC自体の性能が優れていました。低価格でゲーム寄りなハードウェアだったことも、多くのBASICプログラマが輩出される結果に繋がりました。MSX・FANの「ファンダム」「AVフォーラム」や、MSXマガジン、マイコンBASICマガジンなど、過去に発表された数多くの投稿プログラムの質(の高さ)を考えれば、3KBというメモリ容量は 世間的にはゴミ同然でもMSX的にはかなりの表現力を持つ ことは、こんな偏狭のサイトをご覧になっている方ならご存知でしょう。
ちなみにQRコードはデータの分割と結合が可能なので、容量の大きいデータをQRコードで配りたいときは、QRコードを2個3個…と複数に分割して出力するだけで対応できます。なので、実はメモリ最大容量3KBという制限にこだわる必要もありませんが、MマガのMSXショートプログラムコンテスト でも3画面(2880文字)の制限であれだけの表現力が備わっていたわけですから、MSXならQRコードが1個でも十分に遊べるはず…と考えました。
ケータイWebサイトのURLをQRコードで配るサービスはどこでもやってますが、ゲームコンテンツをまるごと配れるとしたら…どうでしょう。ちょっと楽しくなってきませんか!?夢が溢れてきやしないですか!?少なくとも僕は楽しいです(えー
MSXとケータイ&QRコードは相性が良いはずだ!
現在、MSXエミュレータのケータイへの移植が各方面で行われています。海外ではSymbian OS向けケータイの fMSX for Series 60 が、国内ではFOMAのiアプリ上で作っているらしいという話は聞いています。今後そのうちケータイ用のMSXエミュレータが完成したとき、MSXのコンテンツをどうやってケータイへ持ってゆくか?が問題になります。
MSXのコンテンツを最終的にケータイへ転送する方法は現在でもいくつかあります。
- MSX → 2DDフロッピー → Windows PC → Eメール → ケータイ
- MSX → 2DDフロッピー → Windows PC → USB接続 → ケータイ
- MSX → 2DDフロッピー → Windows PC → Bluetooth接続 → ケータイ
- MSXのSunrise CF ATA-IDE(ConpactFlashカートリッジ) → MiniSD → ケータイ
- MSXの通信カートリッジ → Eメール → ケータイ
これらの手法は手間がかかります。特にMSX実機だけでなんとかしようと思った場合、かなり頑張らないと実現できません。そこで、
MSX → QRコードを画面に表示 → ケータイのカメラで取り込み
とするだけで、(少なくともMSX→ケータイ間の)データ転送の手間が大幅に改善できるはずです。しかも今ある技術だけで実現できます。良い時代になったものです。
【補足】ちなみに、MSX実機でQRコードを読み出したり書き出したりするという案件に関しては、今回は触れません。(^_^; 誰かツール作って!!(えー
MSXのSCREEN 3でQRコードを表示してみる
ふる君からのお題に準じて、とりあえず「SCREEN 3」という制限を付けて考えてみます。(画像をクリックすると拡大表示します)
まず、MSXのSCREEN 3(64×48pixels)の範囲内でQRコードを構成できる最大面積は45×45pixelsです。仕様的にはQRコードの四方に余白が4pixels以上必要ですが、これはMSXの周辺色をCOLOR 15(白)にして誤魔化します。そうやって作るQRコードは、バイナリモードで154文字を入れることができます…って、154バイトしか無いの!?(^_^;
仕方が無いので154バイト以内で頑張ってゲームを作ってみよう…ということで、BASIC言語のサンプルゲームとしてよく用いられる「数当てゲーム」を紹介します。1から100までのランダムな数字を少ない手数で当てるというものです。
このゲームのBASICプログラムリストは↓のものです。
このBASICプログラムをアスキーセーブして QRCode.jp にてQRコードへ変換すると、左のようになりました。半角カナが混ざると急にデータ容量が増えて焦りましたが、なんとかSCREEN 3の範囲内にQRコードが収まるコードが完成しました!
このQRコードを BMP to MSX でSCREEN 3へ変換して、MSX用のBSAVE画像データを作成。※このBSAVE画像が欲しい奇特な方は → ダウンロード
完成したBSAVE画像を、MSXのモニタ画面に表示してみると…
うわ!QRコードがデカい!しかも なんとなくウソ臭い!(^_^; しかしボーダフォンの V601N でQRコードを認識してみたら…
読めた!なんかよく分からないけど、とりあえず嬉しい!後半(MSXの実機上でQRコードを生成する)へ続く。
↓ 続きはこちら ↓