最近、ESP32の情報を集めていて、ESP32のプロジェクトにNESのエミュ
レーターがある事に気がついた。
※ESP32の方は、開発環境が、少し特殊なので、少し様子見ではあるのだが・・
NESのエミュレーションは前から興味があり、最終的にはRXマイコンで動かそう
と思っているのだが、その前に、十分コードを検証しておく必要があると考えていた。
そこで、glfwフレームワーク上で十分コードを精査しておこうと思い、必要そう
なコードをプロジェクトに入れてコンパイルしてみた。
NESエンジン部分のコンパイルが通り、OpenGLの描画部分、OpenALの
ストリーム部分、キー入力部分など繋げてみたら、とりあえず動いた!
※現状で、OS-X、Windowsで動作するが、動かないでアプリがクラッシ
ュする、ROMファイル(.NES)もかなりある・・・
音は、ストリームのキューイングがうまくいっていないが、とりあえず鳴る。
音は、Windowsは、普通に鳴るように修正をしたが、OS-Xでは、OpenALの実装が違う
ためか、途切れる・・・
バッファーを多くとれば解消するかもしれないが、遅延が多いのは問題なので、対応
を考えなければならない。
エミュレーター部分はCで書かれているのだが、かなり怪しいコード満載で、かな
り「痛い」コードと言える部類だが、力作ではある、とりあえず、明らかにおかしな
部分は修正を行なって、動作確認などしてあるが、まだまだ動作が怪しい。
※メモリーリークがあり、クラッシュしたり、アサーションを起こす・・・
奇妙な作りの部分が沢山あり、適宜修正して、なるべく多くのROMファイルを動
かそうと思う。
Solstice_J.nes
-----
使い方:
F1:ファイラーの表示 On/Off(NESファイルを選択)
F2:制御パネル On/Off(ステートのロード/セーブ、マスターボリューム)
1:セレクト
2:スタート
Z:Aボタン
X:Bボタン
方向:十字ボタン
F4:ログ表示ターミナル(逆アセンブル、読み出し、書き込みなど)