マイコン工作実験日記

Microcontroller を用いての工作、実験記録

Doom Player

2022-01-30 16:39:08 | DoomPlayer

 現在製作中のプロジェクトDoom Playerの概要を示すための動画をアップロードしました。

Doomは改めて紹介する必要もない有名なレトロゲームですが、昨今では各種マイコンに移植されていることでもよく知られています。STM32も例外ではなく、STM32F4, STM32F7のボードで動くコードや動画が公開されています。つい先日は、AdafruitがESP32ベースのボードを紹介していました。

ESP32のボードはちいさくても、多くの場合4MBとか8MBのPSRAMを搭載しているために、比較的簡単にDoomを動かすことができるようです。また、最近のマイコンでは、QSPIフラッシュをメモリ空間にマップする機能を有しているものが増えており、STM32H7A3もOCTOSPI を使ってメモリ空間にフラッシュをマップすることができます。この機能を使うことで、QSPIフラッシュ上に書き込んであるDOOMのWADファイルを直接参照することが可能となり、SDカードのような外部メディアが不要となるだけでなく、使用するメモリを削減することができます。そのあたりの事情は、Nordicブログのこの記事が参考になりました。

このようにDoomをマイコンで動かすことは、ちっとも珍しいことではないのですが、効果音はサポートしていてもゲーム音楽の再生まではNRF-DoomやESP32のDoomでも対応していないようです。わたしは、ゲームのプレイ操作そのものが苦手な方なので、ゲームで遊ぶよりはデモ画面を眺めていたり、音楽を聴いていることが好きという人間なので、音楽と効果音を再生する機能を持たせてみました。これらの再生には、VS1053bを使用しています。一昔前に、MP3プレーヤの自作で一世を風靡したあのデバイスです。

LCDには何年も前に買ってあった、3.5インチ、480x320ドットの8ビットパラレル接続のものを使っています。元々のDoomは、320x200ドットの表示なのですが、小さな画面は老眼の身には辛いので大きめ画面を採用。画面を拡大表示するためにメモリも消費しますが、見やすさが最優先!

GUI画面には、以前から使ってみたいと思っていた、Lvglを使っています。Music画面は、lvglのデモをほぼそのままパクっています。

次回の記事では、ハードウェアについて説明する予定です。

 

 


Nucleo-H7A3ZI

2022-01-22 18:31:05 | Weblog

ここ何年か、諸般の事情であまりというか、ほとんど工作実験ができないでいたのですが、色々とひと段落ついたこともあり、ボチボチと活動を再開しています。しかしながら、コロナの影響もありマイコンや電子部品はことごとく入手困難となってしまったご時世です。幸いなことに、昨年夏頃には Nucleo-H7A3ZIは何の問題もなく購入できたので、こいつをベースに作業を進めています。

STM32H7A3ZIはRAM容量が大きいことが一番の特徴です。フラッシュも2MBあるので、基本的なフォントデータをフラッシュに内蔵することもでき、GUIソフトを使うにも十分な容量があります。そこで、何年か前に購入したまま積み残したままになっていたLCDボードをつないでの製作を始めていました。当初、思い描いていた機能の8割がたはほぼ実装できたので、次回以降の記事で製作物の概要の説明を書いていこうと思います。