OBONO’s Diary

へっぽこプログラマの戯言

Tiny Joypad

Tiny Joypad なるものがあるのだが、

とツイートした時点で、実は既にいろいろ通販で発注済みだったりする。ケチな自分は、最近 AliExpress を利用することが多くなった。衝動的にポチっても、商品が届くまでに頭が冷えるので、自分にはこのくらいがちょうどいいのかも。


まず、10月8日に秋月電子通商から基本的な部品が届いたので、とりあえず途中まではんだ付け。
f:id:OBONO:20201008183411j:plain
OLED やジョイスティックは、ソケットを介さずピンヘッダを直接基板にはんだ付けするつもりで、その裏側にも線を通す予定なので、不足している抵抗が届くまでそれらのはんだ付けは後回し。10kΩは大量にあるんだけどなぁ…
f:id:OBONO:20201010160646j:plain
あ、やべ、IC ソケットを上下逆さまに付けてしまった。まぁいいや。


少し間が空いて10月24日、AliExpress から ATtiny85 が届く。意外と早かったな。
f:id:OBONO:20201022161604j:plain
早速、余っている Arduino を利用してファームウェアを書き換えて、ブレッドボード上で回路を組んでみる。おお、画面が出てくれた。これだけの配線で動作するのにはちょっと感動したね。
f:id:OBONO:20201022231955j:plain

その2日後の10月26日には、Amazon から USBasp が届いた。
f:id:OBONO:20201026233501j:plain
ATtiny85 を書き換えるための小基板を作って、
f:id:OBONO:20201027222026j:plain
こんな感じで PC に USB コネクタを挿してファームウェアを書き換えることができるようになった。
f:id:OBONO:20201027222123j:plain
気軽にファームウェアを書き換えられるようになったので、Tiny Joypad の開発環境を本格的に構築し、まずは一発目として Arduboy で人気だった Hollow Seeker の移植を開始。
f:id:OBONO:20201027222216j:plain
Arduboy は ROM 28KB / RAM 2.5KB なのに対し、Tiny Joypad は ROM 8KB / RAM 0.5KB とかなり容量が少ない。特に RAM が少ないので、Arduboy では画面データをまるまるメモリ上に展開できていたのが、Tiny Joypad では同じ方法が通用しない。公式サイトで公開されているゲームのソースコードを参考に描画処理を実装してみたものの、それが利用している ssd1306xled ライブラリでは、画面描画のための I2C 通信に時間を取られてしまって、動作がかなりもっさりしてしまう。
いろいろもがいてみた結果、ssd1306xled よりも高速に描画できるライブラリ "SimpleWire.h" を見つけたので、それをベースにオレオレライブラリを作成。最終的には満足のいく仕上がりになった。なんとかなるもんだな…

気軽にファームウェアを書き換えられるようになったとは言え、さすがに数十回繰り返し抜き差ししてると IC の足がもげてしまいそうなので、今後に備えてエミュレーターを作ることにした。以前、Android 端末上で動く Arduboy エミュレーターを作って公開したことがあったので、それを流用すれば割とすぐに実現できるかな~とか思ってたんだけど、これがまた、いろいろと大変だったんだよね。エミュレーターの開発については、別の日に改めて記事を書く予定。


そんなこんなで、開発したエミュレーター "TJP Emulator"Google Play に登録申請したのと同じ11月16日に、AliExpress からようやく抵抗セットが届く。おお、ナイスタイミング!!
f:id:OBONO:20201116183904j:plain
早速ブレッドボード上で動作確認してみたところ、なんだか動きがおかしい。データシート見ると、どうやら DIP 化キットで付いてきた基板上で抵抗越しに回路が繋がっているっぽい。ここは、5か所あるチップ抵抗を剥がすことで対応。
f:id:OBONO:20201120012035j:plain
改めて動作確認し、ちゃんと動作することが確認できたので、届いたばかりの抵抗と、後回しにしていた OLED やジョイスティックをはんだ付けする。
f:id:OBONO:20201117015005j:plain
f:id:OBONO:20201117021450j:plain
f:id:OBONO:20201117021507j:plain
はんだ面をそのまま露出しておくのは怖いので、以前100円ショップで買ったプラスチック板をカッターで切って、四隅をネジ止めする。ついでに、ピエゾスピーカーをカプトンテープで貼り付ける。
f:id:OBONO:20201117082633j:plain
これにて、Tiny Joypad は完成。やったね。
f:id:OBONO:20201117082901j:plain
エミュレーターである程度動作確認はしていたものの、実機でもちゃんと動作するのを確認できたので、とりあえずテスト用のツールと Hollow Seeker を GitHub 上で公開しておいた


さて、Tiny Joypad に二か月弱時間を費やしてきたわけだが、ここで終わらせてしまうのは何とも忍びない。年内にもう一本ぐらいはゲームを作って公開しようかな…