いつもありがとうございます
SMD工房です
2019年のGWも終わりですね。
これまでの活動内容を報告していきたいです。
■編集履歴
20190506 23:00 動画のリンクを貼りました
■作ったもの: Real Tiny Arcade (Space Invader) V1.0
<作成のきっかけ>
Tiny Arcade (Space Invader)をAmazonで購入したところ、昔のイメージと違う箇所があり、リアルではないと感じました。値段が値段だけに仕方のないことではあります。
だったら、自分で作りましょう!
LET'S MAKE!
<違和感1:液晶の黒浮き問題>
Tiny Arcadeは液晶で作られているため、"黒浮きが酷い"と感じました。
黒が灰色になっている画面は許せないです。液晶だから仕方ないんですけど・・・
昔のゲームセンターにあったSpace Invaderは”ブラウン管”で作られていたため、黒浮きは発生せず、黒は"真っ黒"だったのです
<違和感2:インベーダーのサイズ問題>
画面に対してインベーダーのサイズが大きすぎます。
液晶の解像度が低い為、リアルサイズだとインベーダーが潰れてしまうことから、苦肉の策でインベーダーのサイズを大きくしたのだと理解はできるのですが、何せ、違和感があります。
Space Invaderの雰囲気は出ているのですが、どうしても本物と違い過ぎると思ってしまいます。
Tiny Arcade(Space Invader)は、タイトーのライセンスを取得して製作しているのですが、コストダウンには勝てないということですね・・・
<黒浮き対策>有機EL(OLED)を使用します
液晶を使う限り、黒浮きから逃れられません。
そこでOLEDを使う事にしました。黒は"真っ黒"になります!
<解像度対策>本来の解像度(256×224を超えるもの)のOLEDを使用します
Dot by Dotで表示できれば本物と同じサイズにできます
<作成方針>
・基板サイズ: Tiny Arcadeのケースを使用するため、ケースに入る基板を起こしました
・基板の形: ディスプレイの台座に合わせ基板の形を決めました
・使用するマイコン: MIPI I/F搭載のマイコン
高解像度OLEDはMIPI I/Fを使用するものが殆ど(DualSPI I/Fのものもありますが解像度が240×240と微妙に足りません)
FPGAを使用することも考えましたがVRAMは外付けになってしまうため、全体として大きくなってしまいます。
従って、今回はMIPI I/F搭載のマイコン(STM32)を使うことにしました
↓
入手できるLQFPサイズで可能な限り小さいSTM32を選定したところ
-F4 : 入手できないため不可です
-F7 : 176pinが最小のため、基板に載りません。不可です
-L4+: 100pinでRAMが640KBあり、VRAM確保には十分なサイズです
ということでSTM32L4+にしたのですが、Clock 120MHzでキャッシュも無いのでパフォーマンス的に若干の懸念もあります
<主な部品のコスト>
・OLED : 約5000円
・CPU : 約2000円
とても高額な材料費となりました。これだけでTiny Arcadeが3つくらい買えてしまいます
<失敗談>
OLEDを1枚割りました・・・・
<感想>
・初STMでした。STM32CubeMXのソース生成は便利ですが、サンプルソースとの整合性が十分でないソースが生成されるので、混乱の元となりました。(とは言えR社の開発環境よりは実装が簡単に済みます)
・CPUが高性能で、DMAが半分転送終わった時に割り込みが入るなど、痒い所に手が届く機能が満載です
・とても素直な動きをするCPUと思いました。エラッタはあるようですが、今回は致命的な問題はありませんでした。(M社のCPUはエラッタなのかバグなのか解析に多大な時間を費やします)
<その他>
OLEDはダイヤモンド配列のため、実はDot by Dotが完全には表示できていません。解像度は320×320あるのですが、若干潰れて表示されるため、完璧とは言えないものの、雰囲気は本物そっくりになりました
<変更後: OLEDの画面>
背景が黒いです。インベーダのサイズもオリジナルサイズです
<Tiny Arcadeのディスプレイの台座>
<作成した基板(裏)>上記Tiny Arcadeのディスプレイの台座の形を基に作りました
<作成した基板(表)>
<部品を実装した基板>手はんだです
<デバッグ中の画面1>
<デバッグ中の画面2>
<OLED割りました(涙)>高いのに・・・
<OLED ダイヤモンド配列 >Dot by Dotが完全には表示できていませんが、雰囲気は本物そっくりになりました
<Real Tiny Arcade 動画>










