2008年10月12日
Androidでファミコンエミュレータ作った
Androidでファミコンエミュレータ作った。
作ったと言うか移植しただけだけど。

エミュレータ本体はJava製エミュレータのvNESを使用。
元はJavaアプレットなので、Swingに依存している部分を書き換えAndroidで動くようにした。
が、エミュレータの上でエミュレータを動かしている状態なので壮絶に遅く、実用性は無し。このままでは実機でも厳しそうな気はする。
なんだかvNESの仕組みがいまいちわかっていないので壮絶にちらつく。NES上での描画途中の画面をガンガン描画してしまうので画面がまともに見えることが少ないw あとなんか色も変だ。まぁ半日程度で作った物なのでこの辺で勘弁と言うことで。
AndroidでNESエミュレータはすでに作ってる人がいて、Androidでスーパーマリオ(ファミコン/NES)が動いた。なんかがある。これはこの人が以前作ったiMode版を移植したとのこと。この辺の記述からすると、もしかするとそのiMode版はvNESの移植とかかも。
上でリンクした丸山先生第5回Android勉強会によると、iMode版エミュレータ公開したら任天堂から家に訴状が届いたとのことなので、このエミュレータも公開の予定は無し。しかしvNESのページ行ったらブラウザ上でROMファイルも自動ダウンロードでゲームが出来るがこれは良いのか?w
ファミコンエミュレータのソースコード初めて読んだけど意外とシンプルな内容。
CPUのエミュレーター部分は1500行ほどのクラスファイル1個だけだった。それもコメントが多いので実際のコードはさらに少なそうだ。
当たり前だけどROMファイルから読み込んだ命令をswitch文で処理を分け、int変数をレジスタと見立てて処理を進めている。このあたりもなかなか面白そう。
"Androidでファミコンエミュレータ作った"へのコメントはまだありません。