2009.05.27版での変更
・コントローラーをフックしました。しかしボタンは効きにくいでしょう。 これは押した瞬間を判別するためにゲーム側で ON->OFF となるタイミングを見ているからです。押しっぱなしは問題なし。 ・PPUがあまりにひどいコードだったので若干整理しました。 GBの作法通り、きちんとvblankを見るようになったので安全性は上がりましたが速度は落ちました。 ・スプライトは 40 番以降 (40〜63)を処理しません。 見えない敵に当たって死んだりします。 ほとんど、コード整理がメインの修正なので、あまり変わっていません。 PPU_2001の背景色変更を実装したかったのですが、NESエミュでテストしてもよくわからなかったのでコメントアウトしています。 2009.06.04版での変更 ・$2006 のアドレス書き込み順序がリセットされるタイミングが $2007 読み込み時になっていたのを $2002 読み込み時に修正 ・メモリインターフェースを高速化。add/sub $80 を set/res 7,r に変更。多くの命令で 4〜8clockの高速化。 ・PHP命令の動作をG-NESっぽく変更。Bフラグ関連。影響は不明。 ・NESのVBlank 間隔を GB側のn倍設定とするようにした。現状24倍。 動いたり動かなかったりは、ほとんどタイミング関連だと思います。 GBのコードもまだまだ怪しいところがあります。ネームテーブル化けは、おそらくVblank中の書き換えが間に合っていない。 GB側のスプライトのDMA転送をやめて自前でOAM領域に転送するようにすれば、ちらつきアリで64個だせるはず。
NES | GB | |
解像度 | 256*240 | 160*144 |
タイルマップ面数 | 4 | 2 |
タイルマップ解像度 | 32*30 | 32*32 |
キャラクター解像度 | 8*8ドット | 8*8ドット |
キャラパターン数 | 256*2 | 384*2(内256*2) |
1画面あたりの スプライト数 | 64 | 40 |
1スキャンラインあたりの スプライト数制限 | 8 | 10 |
タイルパターン色数 | 背景色含め4色 | 4色 |
スプライト色数 | 透明色除く3色 | 透明色除く3色 |
総色数 | 64色(重複あり) | 16384色 |
パレット数 | 4 | 8 |
色指定単位 | 2*2タイル毎 | 1タイル毎 |