#4GENFM音源日記さらに遅くなる | //www.旧型、PSP開発幼稚園.game.jp/(本館)

#4GENFM音源日記さらに遅くなる

■さらに遅くなる。(2006-01/20)

昨日はDGENの「FM.C」だけ弄ってた。

(注:このDGENは1.00です。最新のDGENはもっとずっと進んでいます。
スキルがあり、開発をしたい方は開発者に直接コンタクトをとって下さい。
私は開発者とは全く関係のない第三者です。
あくまでこのページの話は実験用途(教育用)です。)

昨日とまったく同じテスト。 昨日
OFF79fps
11025kHz69fps
22050kHz65~66fps
44100kHz56~58fps
今日
OFF77fps
11025kHz67~68fps
22050kHz63fps
44100kHz55~56fps
FM音源しか変えてないのに、露骨に重くなっている。 (あれ?OFFでも重い)
「FM.C」はDGENのというよりも「さとうたつゆき様のをみんながあれこれ弄った奴」と 言った方が正解。 アルゴリズムは変えないで、(管理人如きが変えられる訳がない)コーディングだけ変えた。 いつもと同じである。 PC(DOS/V)のPen2、Pen3マシンでは、(Pen4では実験してない。速過ぎてさ) それなりに実績のある最適化手法を取り入れた。 (DOS/Vは、86CISCしか解釈できないRISCマシン。技術的には特殊な位置付け だと思うが、現実の世の中のマシンは殆どDOS/V) つまり、ずーーーーーーーと前に、管理人が趣味で(3つ程)DOS/V用にメガドラエミュ (ソース公開されてる奴)を、カスタマイズしたり、高速化したりして、遊んでいた奴のうち、1つを。 っていうか3つとも音源部分はほぼ同じソース。参考にして、見ながらカスタマイズした訳。
話は変わるが、エミュを高速化させたい場合、管理人の経験から、一般的には 「メモリアクセス>CPU>レンダーやレンダリング>音源>その他」 である。 だから、音源なんて少しぐらい変えたって、「fpsレベルで効く」とは思わなかった。 FM音源は、「浮動小数点演算のペナルティー」が大きいマシンでは、その辺を改善すれば効くが、 一般的には、劇的に速くなるものでもない。 (場合による。たとえばF3辺りは劇的に改善したPCM/ADPCMだからだ。)
コーディング手法とまったく関係ない話なんだが、YM2612のDAC、最近のソースでは チャンネル5のOP4にわざわざ接続されているけど、これって意味あるの? 昔みたいに、ミキサーに直接出力じゃあ駄目なのかな? (チャンネル5とDACを同時に出力じゃあ駄目なのかな?) それとも、まさかとは思うけど、PCMにFM変調かけられるの?それじゃあまるでOPZだよ。 この辺どおなってるのかな?もう少しソースを精査する必要があるな。
この「OPZ機能」実機にあるとして、エミュでは外しちゃえば、構造的に少し整理ができるよなあ。 っていうか昔のソースに戻るだけなんだけど。
結果をみると、OFFで重くなってるし、単純に 「単にモジュールサイズがでかくなったから、配置が遠くなって重くなった」 のかもしれない。 まさか、ループ展開等という過去の手法を施した訳ではないよ。 そんなことしたら、現在のマシンでは、ずーーーーーと遅くなる。 管理人その程度の常識はあります。(いつもキャッシュを考えている) モジュールサイズがでかくなったのは別の理由です。(テーブル化でもないよ)
いづれにしても、R4000のデーターシート取り寄せて少しお勉強した方がいいかも知れない。 キャッシュのサイズとか、キャッシュフローする条件だとか。
もし、パフォーマンスが上がるのならば、クラス化も検討事項かもしれない。 殆どの変数がprivateでいいし、publicにする変数は、SAVESTATEで使うデーター部分だけ。 SAVE/LOADするたびに、内部形式からデーター変換させる。 (現状内部形式が変わってるので、この話と関係なく、この部分を作る必要があるが、まだ作ってない)。 publicにする関数は、基本的にread,writeだけでしょ(もうちっとあるかも知れないが)。 Cのままならstaticだね。