今日の作業
5:39
ダブルバッファリングも完成。うーん、ティアリングが無いってのはいいもんですなぁ。testspriteが少しおかしくなったけど、他のtestやznesterでは再現しないから放置。
これでSDLは終了かな。bvdd-0.3.1からかなりインターフェースを変更したので、MPlayerのほうも追随させないと。
6:13
ためしにPrBoomを動かしてみる。うわぁ、気持ち悪いぐらいヌルヌル動くなぁ。ていうか酔う。
よく考えたら、ザウルスってDoomが出た当時のAT互換機より速いんだよね。そりゃヌルヌル動いて当然だ。
8:40
んんん? アセンブラにバグがあるような? iWMMXtのWLDR/WSTRはARMのLDR/STRと同じようにwstrd wr0, [r0], r1
などのレジスタによるプリ/ポストインデックスやアドレッシングが使えるはずなんだけど、即値しか受け付けてくれない。うーむ、修正できるかなぁ……。
9:30
binutilsのソースを調べてみたところ、ARMのLDRとiWMMXtのLDRのパーザの行数が全然違う。どうもサポートされていないっぽい。
rotate blitterは1サイクル削るだけで(RL_XQの場合は)秒単位で速度が変わってくるから、あの豊富なアドレッシングモードが使えないのは痛い。頑張って修正するか。
ちなみに、rotate blitterをこんなふうに数行いじっただけで……
$ mplayer-1.0.3 BENCHMARKs: VC: 58.095s VO: 0.099s A: 0.000s Sys: 0.771s = 58.965s $ mplayer-trunk BENCHMARKs: VC: 55.260s VO: 0.100s A: 0.000s Sys: 0.771s = 56.131s
こんなに変わったりする。こりゃあ動き補償のほうも見直さないといかんな。