携帯Javaで最適化

携帯で動かした場合に、6502の1フレーム分の処理が、10msまで縮まりました。最初に携帯Javaに移植したときは35msぐらいかかってたのでだいぶ速くなりました。
1フレームは16.6msなので、他の処理にまわせる余力があと6msぐらいあります。
PPUとAPUの処理を合わせて6msで処理できるようになるとは思えないので、あと倍か3倍ぐらい6502コアを速くしたい感じですね…

でも6502コアの最適化は、けっこうネタ切れ寸前な感じなんですけどね…
後は、最適化によってAという処理は速くなるけど、Bという処理は遅くなるが、AとBを比べるとAの方が多いから、トータルでは速くなる、みたいな最適化を地道にやってく感じになりそうです。

大きいのでまだ残ってるのは、vblank待ちのボーリングをカットする最適化がまだでした。これは実装が難しいんですけど、効果は大きいはずです。
でもまだどうやって実装するか考えてないです。
LDA $2005
BPL
のパターンにパッチを当てようかと思うんですがうまくいくでしょうか。この命令列を適当な未定義命令に置き換えておき、その未定義命令を実行したら、内部的にvblank発生のタイミングまでクロックを一気にに進めてしまえば良さそうです。