ファイル入出力 – はじめるSDL(5)

SDLのファイル入出力がうまくいったのでメモします。

.nesファイルを読み込むことができるようになりました!!ソースファイルは ここ に上げてみました。
このソースファイルはSDL2用のプロジェクトに追加したら実行できます。
なにかおかしなところとか質問とかあったら気兼ねなくコメントしてください
(というかこんなソースファイル見る人自体いない気もしますが・・・)。
追記
上げた直後に気づきましたが、動作ミスではないですが変な書き方のところ多いですね。
①ファイル読み込みなどのwhileループ→forループでいいです。
②whileloopの中の条件文、inesHeader[4]やinesHeader[5]で変化するようにしなければバンク数変わったら動作おかしくなるので
inesヘッダーを読み込むループと、PRG_ROMまたCHR_ROMを読み込むループを分ける。
③マリオのCHR_ROMのバンク数は1です。2って書いてますが間違ってます。

こんな感じですかね。上げなおすのは面倒なのでメモだけ。どうせテスト用のプロジェクトですし。

nesファイルのアドレスを指定する構造体のポインタを使わなくてはならないことが注意点ですかね。
まあ、私がぐだぐだ言うより上のソースファイルを見る方が速いと思います。

上のプロジェクトではnesfile.nes というファイルをバイナリファイルとして読み込んで、
iNesHeader
PRG_ROM
CHR_ROM
の3つに分解して保存しています。その時、標準入出力ストリームで内容をコンソールに出力しています。

メインループでは、数字キーの’1’、’2’、’3’を押すとそれぞれiNesHeader,PRG_ROM,CHR_ROMの内容を確認できます。
また、’0’キーを押すとサンプル画像の表示を行います。
‘P’を押すと、点の描写と長方形の描写を行います。
(ファミコンエミュレータでは点の描写だけでグラフィックを描いていくつもりなので練習のつもりで入れてみました)

とりあえずこれでNESエミュを作り始めることができそうですね。SDLめっちゃ使いやすいです。
次回からは本格的にNESエミュを作り始めようと思います。
製作の流れは、
①CPUの命令デコーダを実装。アドレス空間どうするかも考える。
②PPUの実装。描写をどうやって行うかも考える。
③サウンド再生。
という感じですかね。とりあえず動くものを作りたいですな。

コメント

タイトルとURLをコピーしました