Mira&Luna's nursery lab

旅乙女と発明娘の子供部屋

Tinyjoypadの新作を3本紹介。ちびっこゲーム機の自作はいかが?

Mira

Tiny joypad」の新作を紹介 (∂. ∂🎀/
🌼Tiny Plaque
🌼Tiny DDug
🌼Tiny Missile

f:id:miraluna:20190624175253j:plain

Tiny joypadというのはこれ ↑。     🎀ちびゲーム機の作り方🎀
5cm × 7cmというとってもちっちゃなゲーム機。このゲームのすごいところは画像左上に見える1cm四方のマイクロコンピュータ(マイクロコントローラ)がゲームプログラムのすべてを制御してるってこと。この子は「ちびやっこ」といってAtmel社の「ATtiny85」というまいこんです。
ゲームプログラムを作ったのはカナダにあるフランス人の町ケベックに住んでいる Daniel Champagneさん。サイトでプログラムを公開されていて、誰でもそれを自由に使っていいようにしてくれているの。詳しくはGPLv3というライセンスに基づくものだから、こちらのリンクを参照してくださいね。こちら→「GPLv3のページへ」
そしてダニエルさんのサイトがこちら ↓
          「Tiny joypad」Merci beaucoup! Monsieur.Daniel Champagne.

🌼Tiny Plaque2020.1.29.公開
f:id:miraluna:20200504100602j:plain
歯磨きのゲームね。
次々に現れるおいしそうな食べ物たちから、上下に並んだ歯を守るの。このシューティングゲームの個性的なところは上下どちらにもショットできるところね。ちなみに自機はお注射じゃなくて歯磨き粉よ。
Atari 2600という古いゲーム機のソフトを再現したみたい。今回紹介する他の2つのゲームもAtariという会社のゲームを再現したもの。一時スティーブ・ジョブズもいた会社なんだって。私 Atariって初めて知りました。ウィキペディアのリンクを貼っておきますね。→「Atari 2600
プレイ動画→
ChibiMiniGame"TinyJoypad". Playing"Tiny Plaque".


🌼Tiny DDug2020.3.7.公開
f:id:miraluna:20200504111804p:plain
こちらの画像はダニエルさんのTiny joypadのページからいただいたもの。どうしてかというと、うまく動作させられなかったから。
ゲームはファミコン3DSXbox 360などいろいろなゲーム機に移植された「ディグダグ」というゲームの再現。私ディグダグってやったことないからやってみたかったな。
どうしてうまくいかなかったのか考えてみました。いろいろやってみたところ「みつは(マイコンのATmega328)」になら書き込めることが分かったの。エラーの種類はどうやらライブラリの「ssd1306xled-master」を使っているときに出るみたい。パソコンのドキュメントフォルダの中のライブラリを置く位置が悪かったり、同じようなライブラリがフォルダ内にあるとうまくいかないことがあるんだって。でも「Tiny Plaque」は同じライブラリを使うけどうまくいったのよね。
もう一つ気になるのが、みつはに書き込んだ時に使うプログラムメモリ容量。使われてるのは8720バイト。ちびやっこのメモリは8kバイト。1kバイトは1024バイトだから8kバイトは8192バイトのはず。628バイト足りないようだけど、ダニエルさんがちびやっこことATtiny85に収まらない造りのまま公開するとは思えないから、きっとこれは気のせいね。
とにもかくにも私はうまく動作させられませんでした。残念......。
2020.5.8. 追記:)動かすことができました! f:id:miraluna:20191015184112j:plain:w50たー!
教えてくださったのは justplatyさん。この記事の下にあるコメント欄に修正方法を書いてくださったの。
修正方法はというと、教えていただいた通り、スケッチに手を加えます。
f:id:miraluna:20200508182416p:plain:w300
スケッチの setupのところ(上の画像で赤く囲んだところね)の37~40行目に pinModeについて書かれています。この38行目以外の3行を無効にします。
私がやったのは37と39、40の行の左端に「/(スラッシュ)」を2つ書く方法。こうするとその行のプログラムはコメント扱いになって、プログラムとして扱われないの。つまりその分のプログラムメモリの使用量を減らすことができるわけね。これでちびやっこにスケッチを書き込むと......。
「ボードへの書き込みが完了しました。」の文字が!
使ったメモリを見てみると(上の画像の黒い部分)、修正前は8720バイト使っていたところ、8138バイトに収まっています。
どうしてこの3行をコメントアウト(コメント扱いにしてプログラムから外すこと)すると600バイト近くも使用量が減るのか私には分からないけど、とにかく無事にスケッチを書き込むことができました。
f:id:miraluna:20200508181553j:plain:w290 f:id:miraluna:20200508181613j:plain:w290
justplatyさん、どうもありがとうございました。

 カタリのプレイ動画→
ATtiny85 Chibi Game「Tiny DDug」

🌼Tiny Missile2020.4.11.公開
f:id:miraluna:20200504100628j:plain
「ミサイルコマンド」というゲームが元になってる。飛んでくるミサイルから町を守るゲーム。
実はこれもちびやっこに書き込むときにエラーが出ちゃった。スケッチ(Arduino用語でプログラムのこと)の「_delay_us(1);」のところ。どうやら「_delay_us」という定型文が定義されていないみたい。delayは「待ち(遅延)」のプログラムで、例文なんかでは「delay(1000);」のように書かれるのが普通。1000はマイクロ秒だから1秒を意味してる。でも今回は「_delay_us」という特別な書き方がされてる。どういう意味だろう?
調べてみたわ。
どうやらこれはAVRマイコン(ATmegaとかATtinyとかAtmel社のマイコン)に備わっている関数で、「_delay_us」はマイクロ秒の遅延、「_delay_ms」はミリ秒の遅延を発生させるもの。私にはちょっと難しいので、詳しく知りたい方はこちらのリンクを見てね→「AVRライブラリ
で、どうしてエラーが出ちゃったかというと、この関数を使うためには <util/delay.h> というライブラリが必要だったの。この本(ライブラリ)をちびやっこに持たせましょう。
修正方法
Arduino IDEで「Tiny Missile」のスケッチを開きます。
.スケッチにはいくつかのシートがあるので、「ELECTROLIB.cpp」のタブ(下の画像のオレンジの丸)をクリック。
.ライブラリの書かれているところに #include <util/delay.h> (画像の黄色い線の部分)を書き込みましょう。
f:id:miraluna:20200504130540p:plain:w300

この方法を見つけるのに参考にさせていただきました。
n602さん
マイコン漬けさん
avr-libcさん
ありがとうございました。


そんなわけで Tiny joypadのゲームソフトに「Tiny Plaque」と「Tiny Missile」が加わりました。「Tiny DDug」も欲しい...。(←手に入った💛)
f:id:miraluna:20200504100614j:plain

 ←カタリのプレイ動画
"Tiny Missile" ATtiny85 ChibiGame console


またね🎀 f:id:miraluna:20180806220931j:plain:w150

       🎀ちびゲーム機の作り方🎀

miraluna.hatenablog.com
       🎀ミラの部屋へ🎀