#11UpDateOneを纏めてみた。
#11UpDateOneを纏めてみた。 「UpDateOne」のlengthループは同じ長さなんだから、 76496とFMをまとめてしまえ。 というのが趣旨。
何でこんな事をするのか、ソースが汚くなるし、解りにくくなるだけではないのか? 計算量は変わらないではないか。
と思うだろう。が、これは、確かに「ソースが汚くなる/さとうさまの新版が出た場合に、移植が大変」 というデメリットがあるが、ここで気にしているのは、計算量ではなく。バス転送速度だ。 PSPは333もあれば計算は、速い。しかし、バスは...私は詳細を知らないんだが、 66とか100とか133とかセイゼイその辺だろう。 で、「BF03チェック」の結果。(テスト自体が悪いという説もある。 だが音源とミキサー負荷のチェックはこれが妥当だと思う。但し、DACは使ってない)
2日前(MUSASI2.XX/GCC4.0.0)「A12」
| OFF | 83fps |
| 5512kHz | 75~76fps |
| 11025kHz | 73fps |
| 22050kHz | 68~69fps |
| 44100kHz | 60fps |
今日(MUSASI2.XX/GCC4.0.0)「A16」実験中」
| OFF | 84fps | +1 |
| 5512kHz | 79fps | +3 |
| 11025kHz | 76fps | +3 |
| 22050kHz | 70fps | +1 |
| 44100kHz | 60fps | = |
「A13FM」(参考)(A12からDACと76496を外した奴。==ミキサーの理想値) FM以外外す実験(MUSASI2.XX/GCC4.0.0)「A13実験中」(速くなるに決まってる)
| OFF | 84~85fps |
| 5512kHz | 79fps |
| 11025kHz | 77fps |
| 22050kHz | 72~73fps |
| 44100kHz | 63~64fps |
殆ど変わらない。が、計算負荷は変わってないのに、増加してる。 予想と違って、低周波の方が伸びてる。 微妙な結果だな。
戻してもいいけど、戻す必要もないだろう。 先に進もう。
ちなみに、現在DACは別にミキシングしている。 現在の状況: 1.UpDateOneで76496とFMをレンダー。 2.DACキャッシュから、DACをレンダーし、ミキシング。
ちょっとまって、「A12」から「A15」へはREADの効率あげて、0.5fpsぐらい伸びた。 って言ってた話は? これは0.5+0.5は1ではなくて、 0.5+0.5は0.5だった。という事。 速くしても、他との兼ねあいで、相殺されてしまう。が、もっと速くすれば、じわじわ効くので。 でも、理屈上、こういうジレンマはこの先加速度的に多くなる筈。 (例えば、今回の実験はバスの負荷を減らしているだけ、なので。バスに負荷がなければ パフォーマンスが上がる訳がない)
プログラムを速くする(パフォーマンスを上げる)には、 アルゴリスムを整理したり、(不要な考えを整理、削除もしくは置換) コーディングを工夫する以外の(不要なコードを削除もしくは置換) 第3の道として、現状のシステムを把握して、得意な方法に切り替える。 という方法がある。今回はその方法論にもとずいて展開している実験だ。
■コードについて補足。 DACについて気になったので、MAME104の最新版ソースと比較してみたが、 DACのキャッシュは現在の最新版のコードに含まれていない。 この為、UpDateOneをラスターごと更新方式に切り替えても、 DACは取りこぼす。 この為DACはキャッシュしている。このキャッシュは、もしラスター更新方式なら、高々3サンプルだ。 だが、現在ラスター更新は重くなったので(これは、関数呼び出しのオーバーヘッド。 だって計算量は変わらないもん。)止めることにした。(3日ぐらい前にこれの記事がある筈) ================================================ A16フューチャーズ: ■ミキサーをもう少し軽くしました。 5512と11025しか伸びないようです。 (FSKIP0、VsyncOFF、音、5512kHz、Geフル画面) バーニングフォース1面が、やっと遊べるようになってきた。(52fps前後。(秒間52枚)まだ少し重い) ゲーマーなら違いがわかる筈。音は悪いですけど、魅惑のFSKIP0をお験し下さい。 このゲームはFSKIP1だと違うゲームになっちゃうんだよね。 メガドラはFSKIP1にしてしまうと、画は出るけど、全然違うゲームになってしまう ゲームが多い。もちろん問題なく遊べるゲームもあるんだけど、普通のゲーム機と違って FSKIPをかけても、問題なく遊べるゲーム(PRG等)は少数派。 特殊なゲーム機です。 ================================================ A14フューチャーズ: ■ミキサーを少し軽くしました。 が、+0.5fpsぐらいしか伸びなかったかも。 でもゲームはやりやすくなったと思います。 44100、FSKIP1の設定は、前の奴は、非現実的でしたが、 今度のは重いの我慢すれば、遊べる奴もあります。(40fps(秒間20枚)程度で良ければ) もっとずっと速くしないと駄目ですが、管理人の私事情により 長くは付き合えないかもしれません。(ちょっと雲行きが変わってきた) もし、そうなったらごめんなさい。
■以下は妄想記事です。メガドラとは全く関係ないです。 現在管理人の「A17」を弄ってたら、画面がバグって、変な画面になった。(つまりエンバグした) が、これは面白いから別館にUPね。(DGE_A17BUG.zip、BINのみ) バグってるから30fps(秒間30枚)しか出ない。(だってmd_run();が2つもあるし、つまり強制FSKIP1状態か) 変な期待はしないように。 レースゲームとかなら、こういう演出もありかと。 別に、ここはメガドラ移植ページではない。 面白い事があるなら、何でも実験してみようって実験ページ。
タイトーZシステム辺りを強引に移植してみようか、 その為には、管理人版お魚さんにサウンドが、出るまでがんぱって貰わないと。 それかこれに強引に乗せるか。 68000+Z80なら、なんとかなる。(画面周りはMAME見てすべて作り直し) ZってどんなCPU使ってたっけ。(覚えてない) まあ、仮に頑張っても管理人技術じゃ30fps(秒間30枚)グライしかでないけど。 しかも何ヶ月もかかる。(ひょっとしたら年単位) つまり「ライトストリームシステム初移植」ってネタ。GeOBJで飛ばす。 あ、それかコナミの「あれ」使って、「3Dグラス不要のコンチ初移植」ってのは? ハンドル(ステアリング)操作は、当然アナログ対応で。 LRがバラフライシフト。ボタンがアクセルとブレーキと「あれ」とコイン。 シフトとアクセルブレーキは、ボタン配置入れ替えた方が使いやすいかも。 解からない人には全く判らない狭いネタだな。
やったーカウンタが333だ。ついにPSP。真のクロック達成!
■とにかく(念願の)FSKIP0動作が出来るようになったので、(まだ重いです) こちらの「A17」で、DARIUSⅡで遊んでみた。 (FSKIP0、5512、VSYNC-OFF、Geフル画面(これは外せん)) 45fps(秒間45枚)ぐらいだが、遊べる。
シューティングゲーム全般にいえる事だが、 FSKIP0にしないと、自機が消えたり、当ってるのか当ってないのか判らなかったりして、 やられても「ずるい」としか思えない。つまり、どんなに画が本物っぽくても、音が綺麗でも、 現実のゲームとして遊ぶのが不可能だ。
コットンなんてFSKIP0にしないと、オプション画面のカーソルすら表示されない。 本当にみんなあんな状態でメガドラ動いたなんて、満足してるのか? ちゃんとゲームで遊んでみたか? 動作はするけど、とても遊べない状態ではないのか?
管理人、技術も無いのに大口叩いても仕方ないけど、 PSPDGENも PSPGENESISも その他(もちろん管理人の実験版はもっとずーーーと低レベル) も残念ながら、現状ゲームは動作するが。まだ遊べるレベルではない。
とにかく、DARIUSⅡだ。音楽5512kHzという、明らかにずるしてるんだけど。 45fps(秒間45枚)はとろすぎなんだけど、 でも遊べる事を発見。 DARIUSⅡの特殊事情だ。弾の速度が非常にゆっくりお子様バージョン。 面の長さが長くてタルい。 でも、キャラクタのスピードは、あれ?これぐらいでもいいじゃん。って感じ。(だから遊べる) 但し、長ーーーいから、2~3面で飽きる。
それから、レンダーにバグがある事も発見。やはりDGENのコアは古いので、 一生懸命バグ抜きしないと、駄目だ。(まだ何もコアは手をつけてない) 面選択画面でBG(CHR)チップの上下の判定に失敗している。 これは上下反転機能が(一部しか)実装されていない可能性がある。(っていうか、そのとおりだろう) ソースは見てないが、おそらくこれの対応は、難しいか処理速度が落ちる。
他のゲームもFSKIP0で遊べるのがないか、試してみよ。 OutRunをFSKIP0で試してみた。 とてもじゃないが、ゲームにならん。 35~37fpsぐらい。(秒間35枚) 最低でも45fps(秒間45枚)は超えないと、ゲームにならん。 音楽はラクダの歩くようなスピードで、気が抜けて、タコミス連続。 なのにタイムは余りまくる。 一面の最後の少し速度を緩めるポイントは、全く緩める必要なし。 実はアーケードでも、めちゃくちゃ反射神経が発達した人は、神業のハンドリングで フルアクセルで抜けてたが、一般人が真似すると事故り、 必ずチェックポイントに引っかかって100円損する。一面は一度でも事故ると、 二面に行くのがつらい設定になっている。 メガドラ版はそんなには難しくは無いのだけれど。 駄目だ、子供だましにもならん。(っていうかOutRunなら素直にFSKIP入れて遊べよ) よい子は真似をしないでね。FSKIP1、11025なら52fpsぐらい(つまり秒間26枚)で遊べます。
スラップファイト、は動作しなかった。やっぱコアが古いからな。他ので遊んでくれ。 PSPGENESISではきちんと動くぞ。fpsは不明だが(設定すらない)40ぐらいは出てそうだし(憶測) まさか、60なんて出てるわけない。ちらつきで判るぞ。 ただ、あれはDGENよりさらに古いコアがベースみたい。ちょっと調査不足だが。 と思ったら、コアGeneratorじゃん。(0.15のソースDLした)こいつはドイツ出身だったよな。確か。 Mekaってマスターシステム/セガマークⅢエミュレーターを作ってる所出身の奴。確か。 まだコンパイルすらやってない(もう疲れた)が、今度やってみるか。 Generatorは少し癖のあるコアなんだよな。でも68000とか入ってるし、入れ替えて遊んでみようか。 GeneratorはUpDateOne、ラスター毎更新の筈だから、フレーム毎にしたら、少し軽くなるかも知れないし。 FSKIPをきちんと対応させたら、どの程度のパフォーマンスを出すのかも興味ぶかい。
ソース眺めてみたら、「libYumePSP.a」というものが添付されていて、これをリンクさせる必要があるらしい。 (こいつのソースは添付されてない) PSP_NesterJで、この件は懲りてる(過去日記参照)ので、バイナリでアーカイブを覗いてみた。 GCC400を使ってるらしいから、上手くリンクできるかも知れない。あとSETJMP.Sってアセンプラの プログラムがある。
よく判らんが、コンパイルしてみるか。でも妙にたくさんMakefileがあって。コンパイル大変そう。 ちっともMakeのありがたみが判ってなさそう。こんなに沢山あるんなら、メインのMakeから 一括インクルードとか、共通部分は別にしてインクルードとかなんとかしといてよ。訳わからんし、 その時点でエンバグしちゃうよ。DGENみたいに位置変えただけで’-lc’のせいでコンパイルできるけど、 起動失敗するのもあるんだからさ。と思ったけど、まずはコツコツやってみるよ。(仕方がない) (2006-02/11、16:37)
と思って、インターネットあさってみた。このファイルアーカイブは、何時何処から持ってきたのか覚えてないが、 VER0.05のソースらしい。 現在は古いのがVER0.11で、 新しいのがVER0.15のソースを配布してるらしい。 オフィシャルサイトに行って登録してみたが(登録しないとDL出来ない仕組みになってる) 登録自体が撥ねられてできない、(ボッツ対策?)。のでDLできなかった。 めんどくさいから、この0.05を無理やりコンパイルしてみるか。参考になるPSPのメガドラエミュのソース 二つもあるんだし、でも、もちっと、調べてみよ。 (あ、そおいえばSETJMPは本質的には不要なんだけど、ライブラリが使ってそうじゃん)
とりあえず0.05を少し調べてみた。 Z80は「Portable Z80 emulator V2.7」。これは平たく言えば、MAME標準。ちなみにお魚さんの Z80は「Portable Z80 emulator V2.8」。ほぼ同じ物だ。 あんまりソース眺めてたら、Z80のお勉強になりました。 そうか、メガドラはZ80のポートなんて使ってないよな。使ってたっけ? (管理人の知識の範囲では使ってないと断定できる。DGENは使ってない。 ここはGensを調べる必要があるな。) あれ全部Z80コアから外しちゃえば多少は軽くなるかもな。
なんだぁ。PSPMAMEのソースとってこれるじゃん。ドイツの科学力は世界一ですな。 ドイツのどっかttp://www.psparchive.de/にいって、 「MAME」で検索すれば、いいんだぉ。 Downloading pspmame04_src.zip (767.1 KB) だよ。
PSPMAME r0.4 source TMK PSPMAMEのソースです。 オリジナルからの変更があったソースのみ収録しています。 MAME0.97 がベースになっています。 src/pspフォルダがPSP用コードでmsdos用のコードを参考にPSP向けに作成してあります。 (機種依存コードのが多くがここに含まれています。)
だそうな。さっそくMAME0.97をDLしなくっちゃ。 と思いオフィシャルに行っては見たものの 0.69までしか過去ソースはない。まあ、0.69も、0.97も、現在の1.04もどおせ対した違いは 無いと思うけど、なんとかしなくちゃな。(17:47)
今HDDの開きが367MBこの前CD焼いた時。800MB以上あったから、500MB以上ゴミが溜まってきた って事だ。この前みたいにきつきつになってから焼くと凄く苦労するから、そろそろ焼いとくか。 焼くのはいいんだけど、後で自分が検索できないんだよね。まあ、いっか過去にはこだわらないって事で。 MAMEのソースも2001年ぐらいまでは必要だったから落としたけど、残りの2003年までの分をせっせと 落としてCDに焼くか、ゴミ達と一緒に。今日はその作業かな。あーDLと焼き。めんどくせ。 ドイツのここで、「SRC」で検索すると、21個。 主なソース一式ある事が判った。UAEってやつはAmigaだから、参考になるかもしれん。 RINとかは持ってるし、yoyofrはなにもオフィシャルのうざいサイト行かなくてもここで手に入るじゃん。 全体的に古めだけど、そこがまた良い。一度はいってみるのがお勧め。 バイナリは要らん。ソースだけくれ。(2006-02/11、19:12、夕食後)
uo_Snes9x_002y9src.zipもありやんの。(DGENもRINもこれ真似してたみたいだけど、手に入んなかった からお魚さんのGPU対応は、適当にやっつけたんだよね。あのお魚さんのGPU対応は、カット&ペーストで ただ貼り付けたんじゃなくて、それなりに考えたから、RINやDGENとは違うタイプなんだ。別にGPU使うん なら無理にフレームスワップする必要ないってのが管理人の見解。別にちらつかないだろ。きっとあれで いいんだよ。所詮ポリゴン1枚だ) 多分現時点では、過去ソース。世界一品揃えがいいな。 他いって、ちんたら探しても、どおせリンク切れだよ。PSP開発もめんどくさい時代にはいって、 上記DCEMUみたいに登録必須とか、DLぐらいさせろよ。GPLなら、わけ判らん。
reflectionsrc.zip (42.1 KB) こいつは、 某ブログでやったよって報告あったけど、古すぎてソースリンク切れだったから、ふーん。で、 終わった奴だな。かなり前のネタだ。本当になんでもあるな。ここ。 そうそう。これは簡単なキューブを回すポリゴンのサンプルだ。これはそのうち面白そうだからトライしてみよう。 まだZIP開けてもないけどな。
DLめんどくせ、RINとかあるから全くいらんが、DLの都合上全部落とす事にした。あとでCD 引っ張り出してきて、同じのはその時点で消せばよい。めんどくさ。 こういういちいち「accsept」とか押させるちまちましたDL。嫌いなんだよ。
pspchess_src031.zip (2.69 MB) チェス好きだったらすまんが、タイトル見るだけでくだらなそうだな。このアーカイブは一生開けないかもしれん。 が、なんで圧縮して2.5MBもあるんだろ。最低でも3倍には膨れるだろから、画像か音だな。
Name: TerrainSrc2.zip (92KB) これはなんだろ、3dの特殊な使い方かなんかかな?気になるなあ。 こういうサンプルソースは小さいほど、役に立つんだ。92kbだから先のチェスデモより200倍は役に立つ。 と思う。面白そうだな。
よし、21個全部DLした。ここに「libYumePSP.a」のソースなんて、ないから、きっと世界中捜しても、何処にも ない。つまり公開されてない。管理人はそんな怪しげなライブラリ使うのやだよ。どんなに性能が良くったって。 大体、yoyofrはソース公開しないって言うジャン。別にそれは個人の意見だから公開しないって言う意見は、 尊重するし、人にはそれぞれ独自の考え方がある。 でもね、その理由は気に食わない。正式版が公開されるまで、ひとつ前のソースしか公開しない。 これはバージョン管理をしたいからです。この理由はごもっともです。訳わからんのが次の理由。 勝手に必要のないプログラムをつけて公開する人がいるからです。これっていわゆるトロイの木馬とか くっつけて蒔く人がいるからってことでしょ?だったら、ユーザーの立場としては、いくら最新版で速いって、 言われても、ソースも公開されない怪しげなエミュレーター使う気にはなれんよ。もしかしたら偽物の可能性が あって、偽物ならば、一生PSP起動しなくなるんだよ。 管理人差しあたって困ってないから、どおでもいいんだけど。NEOGEO実物(でかいぞ)あるけど ROM(すごくでかいぞ)吸い出してまで遊びたいゲームないし。(使う必要もないし) やろうと思えば吸い出すのは簡単。メガドラ吸い出してるんだから、メガドラと殆ど同じでいい筈だもん。 っていうかまったく同じ回路で吸いだせる筈。(ただしKOFなんとかVER忘れた、は除く。プロテクト入り まあ持ってないし)
みんなそういう事、チョビットでも思った人はいないのかね。 私はyoyofrの最新版はそういうわけで使う気になれないし、一生使わんと思うよ。 そんな腐った考え方は時代遅れだって事に早く気がついておくれ。 まあ確かに「NEOGEOに関しては、特殊な歴史があって、過去に何度かウイルス入れて蒔くという事件が 発生し、エミュのプロジェクトが空中分解してしまった有名な事件」がある。(これはPCのエミュの話) 管理人。それくらいは(インターネットやってなくったって)知ってるよ。あれは、有名な事件だもん。 でもね。やっぱり特別神経質になりすぎだよ。かえって逆効果だって事が、...判らんのだろうなあ。 (2006-02/11、20:15)
+1
+3