現在製作中のプロジェクト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のデモをほぼそのままパクっています。
次回の記事では、ハードウェアについて説明する予定です。