最適化8
ファミコンのゲームでは全体的な処理のタイミングをvblankで取ってると思います。
今のパソコンのソフトの様に、CPU資源を複数のソフトで分けながら処理したりする必要がないため、vblank待ちはポーリングしてるはずです。つまり、vblankのフラグが立つまで、空ループをグルグル回してるわけです。
エミュレータ上ではこれは無駄でしかありません。vblank待ちのコードを検出して、vblankまでの残りの時間はOSに処理を返せば、CPU資源の節約になります。
トランスレータでもこういう処理を組み込もうと思います。
携帯でまともな速度で動かそうと思ったら、必須といえる最適化だと思います。
携帯Javaの勉強もしとくかと思い、入門書を買ってきたんですが、PC向けJavaと比べると良くも悪くもシンプルですねぇ…
ドット単位でグラフィックを描画するには、SetPixelメソッドを毎回呼ぶしかないんでしょうか?
となると速度的にかなり厳しい感じがします。
携帯JavaのSpriteクラスを使って、ファミコンのスプライトを描画できるような仕組みを考えるしかなさそうです。
BGは、ImageMapクラスで、みたいな。
ファミコンのBGならアトリビュートを変えるだけで、色違いのパターンを作れますが、ImageMapではそういうわけにはいかないと思われます。
そういう機能同士のマッチングしない部分を、どうやってカバーするかを考える必要がありそうです。
描画に関して、差分だけ描画するような仕組みにできたら速度的には最高でしょうね。
なかなか大変そうです。