ハードウェアをNucleo-H7A3からSTM32H7B3I-DKに変更することに伴い、Doomの実装方法を変更することにしました。
- これまでは音楽(MIDI)の再生にはVS1053bを使っていましたが、これを使わないことにしました。音楽については、WikiにてDigital Music Pack なるものがあることを知ったので、SDカードに保存されたこの音楽データを再生することにしました。具体的にはここからFlacで圧縮されたデータをダウンロードしておき、これをソフトウェアのデコーダで展開します。データ量としては、MP3の方が圧倒的に少ないのですが、繰り返し再生の範囲を指定するLOOPタグをメタデータとして持っているFlacの方がゲームとの相性は良いようです。
- これまでは効果音の再生にもVS1053bのミキサ機能を利用していましたが、これらも全てソフトウェアでの処理に変更。音楽/効果音の再生はDKボード上のコーデックで再生します。
- ゲームのWADファイルは、これまでと同じようにSPIフラッシュ上に書き込むことにします。これまではQSPI Flashでしたが、STM32H7B3I-DKではOCTO SPI Flashになります。
- 前記事で書いたように、Nucleoボードでは、ゲームWADファイルの書き換えにはUSB DFUを使っていたために操作ミスでボードを壊すという痛いめにあいました。そこで今回はゲームデータもSDカード状に置いておき、SDカードからフラッシュにコピーして書き換えを行うことにします。
- USBポートには、ゲームコントローラとしてDualSenceをつなぎます。Nucleo-H7A3ではUSBはFSでしたが、STM32H7B3I-DKではHSで使えるのがちょっとした違いになります。