firefox (+拡張機能 ublock origin)
google chrome
なんにも見えん
同条件で比較してないからずるい?いや、ずるくない。そもそもandroidのchromeにublockを入れられないのが悪い。
firefoxにも色々問題はあるが、広告で何も見えないことに比べたら全て無視できる。
なんにも見えん
同条件で比較してないからずるい?いや、ずるくない。そもそもandroidのchromeにublockを入れられないのが悪い。
firefoxにも色々問題はあるが、広告で何も見えないことに比べたら全て無視できる。
以下のあたりの続き
https://tthhfugapiyo.blogspot.com/2025/04/5linuxanbernic-353ps.html
https://tthhfugapiyo.blogspot.com/2025/04/cfor.html
sega saturnのエミュレータでGRANDIAのムービーが遅い原因がSCUのエミュレーションにあるということまで突き止めたが、どうにもならんという結論になっていた。 30FPSくらいまでしか出ず、スロー再生になる。
今ならAIがめんどくさいこともやってくれるんじゃないかという気がして再チャレンジ。
とりあえず無料枠内でclaudeやらgithub copilotやらに指示を出しまくって改善をやらせた。「mednafenみたいに関数ポインタで分岐なくしてみて」とかやらせてみようとしたが、改造が大規模すぎるということで拒否される。多分無料枠内だと無理。(これをやらせたかったんだが。)
GRANDIA特化でSCUコードを埋め込ませたりして無理やり時間を縮めてみたが、45FPSくらいが限界そう。というかよく計算したらSCUの処理時間が0になってようやく60FPSが達成できるので、そもそも無理があった。
SCUとCPU(SH2)は結構密接に絡んでいるらしく、それぞれ数サイクルずつ順番に処理していく動作となっている。これをSCUが遅いからと言ってそのままSCUを別スレッドにしてCPUと同期を取りながら進めると同期のコストで逆に激しく遅くなる。
もうシミュレーション精度はある程度切り捨て、完全に元コードの通り同期させるのは諦めて、ある程度のサイクル数まとめてスレッドで動かすようにした。(グランディアはそれである程度動くっぽい。)
1 フレーム分をまとめてしまうと、CPUがなにかSCUを待っているらしく、かなり遅くなってしまったので、適当に40000サイクルずつくらいSCUを動かすという感じ。もうめんどくさくなって動けばいいやという動きになっている。
スレッド間の排他とか何もやってないが、結構動いている。 もともとスレッド前提で書かれていたのか、たまたま奇跡的に動いているのか。
AIをしばき回してチリツモで稼いだ時間と、スレッド化によってムービーが60FPSくらいで動くようになった。(https://github.com/tthogehoge/yabause/releases/tag/grandia)
苦節1年、なんとか遊べるようになった気がする。ただ、オープニングムービーとちょっとした戦闘くらいしかテストしてない。色々変えたので動かない箇所が出てくるかもしれない。コードの整理もできてないが、もはや疲れたのでおしまい。 めでたしめでたし。