やっぱ訳ワカラン(熱、無断転載編)(2006-03/17)
きょーはPSP開発とあんまし関係がない、っていうか管理人のやる気が出ない...
でも、SEGA DRIVEの話。
なんか、
別館の「A21」
少し変えたの「A22とする」
さらに生えたの「A23とする」
さらに逝ったの「A24とする」
えーと、「OutRun」でチェックする限り、
「A21」と「A22」は、違いが良く判らん。(FSKIP2、22050で50fps前後)
「A23」は速度が半分にって、遅くなつた。(FSKIP2、22050で30fps未満!)
「A24」は「A24」に加えて、音がおかしい(注:「Outrun」のみ音が死ぬ。他のゲームでは正常)
なんつーか。「やる気」がなくなつたので、「いいや大局的に見ればA21と大して変わらん」とゆー。
グローバルな太平洋のよーな広い心で、「破棄」しちまえ。そうそう、「都合の悪い事」は「見なかった事に」。
なんて「臭い物にふた」なんだ。まあ、たまにはいいでしょ。つーことで、大局的に見れば、
別にSEGA DRIVE急いで弄んなくても、いいや。昨日DGEN130正規版を落として、ちと遊んでみたが、
あっちのほーが、ずーーーと速いし。それもやる気がなくなつた要因。
取り敢えず保留。遊んでて良し。
ちうわけで、うえぶさあふいん(注:絶滅語)してみた。
http://www.psp-hacks.com/2006/03/
ここは、しんよー出来るのかと思ってたのに、
「March 15, 2006 Sony to Release a PS1 Emulator and games!」
(訳:3月15日にそーにーがPS1の公式えみゅとげーむをはっぴょー、したつ!)
は、明らかなガゼねた。(注:平たくいえば嘘8000)
(注2:管理人1024以上がたくさんの為、800ではちと横幅が狭い)
こういう露骨にフェイクネタって、堂々とやるのが、オシャレ(注:季語、ではない)なんだろか。
なんつーか、日本人と「感覚」が違うな。
...いや、「感覚」同じかもな。2ch感覚かも。だって、その記事にコメント163だぜ。
コメント4くらいなら、納得がいくが。どう考えても悪乗りしてるよーにしか見えん。
大体コメントも「怖いもの見たさ」で覗いてみたが、「あり、ここって2chの翻訳サイトだっけ」と思われる程度の
信頼性&ないよー。えーん、世間は怖いよお。
(2006-03/17、11:05)
(これは一応ガセではないらしい。が、この時点ではガセと判断しても仕方がない根拠があった。そーにー
公式ページで、きちんと説明しろよ。発表するなら義務だろ。「PS3でDL→PSPでPS_EMU」というのが、
真相らしい。だってPS3なんてまだまだだお、青光で、延期になったバッカじゃん。でも、いづれ出るに
決まってるがな。2006-03/30、追記)
■どーでもいいけど、管理人熱が末期症状で、ええとこの「きゃっちくーる(商品?名)」が頭にあてると、
「ほっかいろ(商品?名)」より、ずーーと「熱く」なってしまう気がする。いや、物理的に考えて、「ずーーと」は
アリエナイ。だけど、てを持ち変えると、思わず、「熱いっ」って。何持ってたんだっけ。と覗くと、「中略くーる」。
くーるじゃねえ。(11:30)
■やっぱそおなんだ。
http://ameblo.jp/hue-e/entry-10009670875.html#cbox
ここはアメブロ唯一の開発サイト。(多分)
RUKAさんのコメント。入ってます。(3/3のひなまつり)
無断転載するの気が引けるケド。消えてしまうと、意味が判らなくなるので、無断転載する。
ここから、無断転載。
■速度・・・
SNESコードの最適化でメモリ配置を考慮したコーディングをしています。
PSPはCPUの1次キャッシュ16KB(I,Dそれぞれ8KB)で64Byteライン幅です。
構造体にまとめたり、変数の型サイズを再考するなどをしても効果が出ると思われますよ。
ただ、エミュレータとなるとCPU命令毎に分岐しまくるのでさらにもう一工夫がひつような感じですが。
コンパイル後のasmコードを見てより良いコード出力されるCコードの作り方を調査するのもよいと思われます←これSNES実験で導入してます。
ruka (2006-03-03 02:27:45) 
■補足です
コードを変更する毎に速くなったり遅くなったりする場合があるのはメモリ配置の影響が大と踏んでいます。
キャッシュヒットすれば1クロックでもミスだとかなり(70くらい?)ペナルティ発生じゃなかったかなぁ…
ruka (2006-03-03 02:31:16) 
■無題
自分もある程度、ee-gccのクセは掴んでいるので、そのへんは分かっているつもりです。
NEOPOPに関しては構造上ダメだからだと思ってますw
気が向いたらゴッソリ書き換えるつもりではいるのですが、税金の処理とかしなくてはいけなくなったので、優先度が下がってます。
e (2006-03-03 10:03:37) 
ここまで、無断転載。
やっぱそおいう現状なんだ。EE-GCCでもGCC400でも、似たかよったかだな。
■ええとお風呂入ってきた。いま昼の13:14って所。体調悪くてとても夜には入れないから、仕方ないだろ。
でも、ちっとも気分が良くならない。で、ちと寝たいんだが、髪の毛カワカナイ(注:ドライヤーでは乾かない)
から、寝る訳にイカナイ。仕方なくこれ書いてる。とても、どっか外出できる体調ではない。うう吐き気と眩暈が
熱もある。昨日の日記の完成度がみょーに高いのは、(自分で読んでわたっら、但しマニア受け)熱が高かったからだな。
うえー。はきそー。おひりもぱん1つかじりかけただけなのに。あーしょくじちゅーでしたかすんまへ。(2006-03/17、13:21)
さっき髪の毛かわかんって書いたよーな気がするが、結構乾いてきた。(13:26)熱で。自分の熱で髪の毛が
乾くとは意外。予想外。やはり、人生何が起こるか判らん。(13:27)
ここから、無断転載。
■無題
自分は待ち続けることしかできませんが・・・。
無理をしないで下さいね。
最近、開発環境を整えたのですが、コンパイルするのがやっとというレベルです・・・。
nko (2006-03-11 23:40:43) 
ここまで、無断転載。
ねえ、nko氏。PSP持ってて、開発環境あるんなら、「ruka」さんも「e」さんも管理人も、みーーんな一緒だよ。
「インターネット」使えるんなら、同条件じゃないか。知識の量など、かんけーねーんだよ。用はやる気。
管理人が今使ってるPCなんてPentiumMMX233で、HDDが1G以内だせ(その他の領域は別用途)
他人のコードひきづり回して、速くなつた。遅くなつた。で、良いんだよ。管理人だって基本的にそのレベルだ。
例えば、ソース。まったく一度も使われてないルーチンが大量に埋まってる。これを排除すると、速くなる時も
あれば、それだけの作業で、見るに耐えない程、遅くなる事がある。
PC(DOS/V)では考えられんだろ。が、PSPでは事実だ。それが、具体的に今日無題天才(注:誤植)した、
上の部分。
なにも、「出来ない事を、やれ。」って言ってる訳じゃない。
いっそのこと、他人のPSPで動くエミュ徹底比較サイト。を立ち上げては?
動作チェックは立派な仕事だぜ。だって、他の人はそれをする「時間」がとれねえんだよ。
「税金処理」がどうこうって書いてあるだろ?よく考えれば、「少し忙しい」って書きゃいい所にこう書いてある。
それが不要かどうか選別する時間が、とれねーって事なんだよ。
(13:55)
■管理人が重視するもの。
さらに、無断転載。
ここから、無断転載。
■無題
自分もSNES9xのソースは貰いましたが色々浮気して殆ど未着手ですw
高速化期待しております。
自分は未開の地(未実装部分)を探して色々なエミュを渡り歩こうかと思っていますw
自分はハードウェア依存部を極力減らして、ちょっと移植すれば新しいプラットフォームでサックリ動く。
マルチコンソールエミュレータを夢見ています。
e (2006-03-03 10:15:42) 
ここまで、無断転載。
「e」さん残念。その夢は、日本人もアメリカ人もフランス人もドイツ人も、フィンランド人も、ノルウェー人も、皆見ました。
でもやっぱ夢でした。夢から覚めた「Gens」は完成度が高い。
主要なエミュは全部「夢」を見て作った為、「機種依存部分」は始めの設計時から慎重に取り除かれています。
「取り除かれていない物」が存在するのは、その「夢」に気が付かない人達が、弄ったからです。
(注:反論、「夢」は「夢」だからこそ、価値がある。「夢」であるだけで「価値」はある。)
(が、全体の「価値」の分量は決まってるので、「価値」の取捨選択をせねばならない。お金の量が決まって
れば、取捨選択して、「買えるゲームの量」も決まるだろ。それと同じ事。PSPの上位機種が出て、それで
コードが動かせるようにならん限り、PSPの計算量の絶対値は変わらない。エミュは画像も音も殆ど現実の
負荷を使わないが、それらを作り出す為の計算負荷が、半端じゃない。画像1ドット計算する為に、どれだけ
大量の割り算や不動少数点演算が必要な事か。音を2バイト==1最小サンプル、計算するために、どれだけ
大量の割り算や不動少数点演算が必要な事か。つまりエミュはゲーム自体をプログラムしなくて良い反面。
計算コストは馬鹿高い。計算のみに特化した、非常に特殊なプログラムなんである。
この件は簡単に体感できるぞ。例えばSEGADRIVEで5512kHz再生は、もちろん44100で再生(転送)
してる。しかし、データーの計算を5512分しか計算してないだけで、再生自体は44100固定だ。あれだけ
速度が、違うのはあれだけデーターの計算負荷が違うんだよ。44100で1/60秒あたり、たったの735
サンプルしか計算しない。1サンプルの計算負荷がとてつもなく大きい事にきづくだろ。
注1:だって44100/60は735だぜ。注2:現実にはステレオだから2倍量だか、ステレオのデーター生成は
モノラルと大して変わらん)
管理人はPSPでは始めの始めの段階で、その「夢」は完全に捨て去りました。PCのエミュをいくつか弄った
経験があったからです。未来のPCやPSPを夢見て、「夢」のコードを書くより、現実のPCやPSPで、今日
今すぐ遊べる事。を重視してるからです。
価値観の相違なら、見解の相違なので仕方がありませんがね。
■上記とまったく同じ話。PSPのVSYNC。
管理人は元は2chの開発スレで知ったのですが、
現在「音」に関しては小さな「スレ」(注:プログラム)を別に立ち上げて動かしてます。
(DGEN100以降での具体的な実装。管理人のメガドラえみゅは、これを総て真似した)
「音」でそれが可能なら、「画」でも可能な筈だ。
ええ、もちろん可能です。
で、具体的に「e」さんは試したようです。
ここから、無断転載。
2006-03-09 20:58:10
 
苦悩は続く
テーマ:ブログ
 VSYNCのコールバックと、GPU転送のコールバックを駆使して60fpsを実現しようと工夫をしてみた。
たしかにVSYNCタイミングでFLIPできるんだけど、表示タイミングが相当ずれるのでキー入力の反応が鈍い。
鈍すぎて不快すぎる orz
元に戻そう。
ここまで、無断転載。
これは、試す前から、管理人の直感で、「それは上手くいかんじゃろ」と思っていたんですが、
「上手くいく」かもしんないし、具体的に正しいコードが記述できる程、スキルはありませんから、
静観してました。誰かがやってくれて、「上手くいった」ら、自分のコードに取り込むつもりでした。
(取り込んだ結果、使えなければ、VER戻れば良い)
誰かやってくれると、おもってたら「e」さんがやってくれましたね。(えらい!)
もし、PSPで。うーん、現在のPCのエミュのGBみたいにVSYNC取らないと、速すぎて
何がなんだかワカンナクてゲームにならん。
スタートボタン押すと0.1秒立たないのに、「GAME OVER」の画面だよ!!
(注:PS1のずるい龍はこれに比べりゃむちゃくちゃ簡単でつ。人間の反射神経では、ゲームオーバー前に、
スタートボタンを離す事すら不可能なんですから。ずるい龍はやりこむと弾が見えなくても避けれます。
注2:誰かアレ、一面のボスまで逝った奴いる?もしいたらこのページで大々的に特集組んじゃうよ。
半分グライまでは、逝くんだけど、後半が滅茶苦茶つらい。誰か攻略法編み出せ!世の中広いんだから何とかなるはづ!)
ってくらい速ければ、有望な方法。つまり完全な自作ゲームならば、必要な技術です。
が、エミュでは端から「無理」なんですよ。(多分ワカンナイケド)特に「VSYNC-OFF」でないと重くて遊べない。
という状態のエミュでは、論理的に無理。(かもしんない)
PSPの仕組みは、本質的にPS1やPS2の仕組みと全く同じです。だから、バリバリ別スレ(注:プログラム)
を立ち上げて、処理を分散。特にGPU(やSPUに)に処理を振り分ける。という考え方は、基本的に、
あってます。
が、エミュではそのやり方では駄目。VSYNC自体の考え方も見直さなければいけない。
現状、PSPのメガドラエミュ。DGEN130とPSPGENESIS018と管理人の二つの奴。
FSKIP0で比較してみて下さい。
管理人の二つの奴も良く見ると、不快なノイズがハリバリ出てる。
もちろん、「DGEN130とPSPGENESIS018」の方が速いです。
ハリバリノイズは、速いエミュ程不利。
が、これを(なるべく)押さえ込むべく、実装上の配慮がされてるんです。管理人の二つの奴は。
具体的にVSYNC取らない。そして、(Geの場合)FLIPしない。
FLIPしないの?それって論外じゃないの?
じゃあ、やってみなよ。FLIPありとなし、両方作って比較。知らない人にどっちがきれーか聞いてみれば。
この方法だと、具体的な転送速度が出ない場合は別の話だが、Geまでの転送速度がきちんと取れた場合は、
ハリバリノイズは、(1/60秒)あたり、原理上。最大一本しか出ません。
「うそじゃ俺には、分割ラインが、複数みえるじぇ」
ええ、見えるでしょうね。人間の目には、「残像現象」というのものがありますから、きっと見えるでしょう。
「昆虫の目」なら、そんなものは見えないんですケド。(おまけにPSPの液晶は中間色の残像が酷過ぎる)
■何故FLIPをとると、分割ラインが、増えるのでしょうか?
それは、エミュの本質的な仕組みに関係があります。
まずPSP自体。これは、PSP自体の時間の都合で動いています。「VSYNC」をエミュで取るというのは、
エミュ内の「メガドラ時間」と実機の「PSP時間」では、本質的に「都合」が異なるので、「メガドラ時間」を
全部計算し終わる余裕があるならば、「PSP時間」に合わせる。という事です。
VSYNCを取らない実装。というのはその時点で、たとえPSPのタイマー(割り込みや別スレ)を駆使した
としても、やはり、PSP時間にあわせる。という事です。
PSP時間を基準に考えない事には話しになりません。
しかし、エミュの生命線は「正確な時間管理」です。Gensの優れている所は、実装でも何でもなくて、
(注:実装はたまたまアセンプラですが、そこはエミュの本質的に重要な点ではないです。)
正確な時間管理。作った人の正確な情報収集。ですね。
VDPのレンダーで画面の優先順位が違ってバグっちゃう。こういうのは、実は些細な問題なんです。
該当部分抜いてきてくっ付ければ一応重くなるケド動いちゃいますから。
(なんか疲れたんで9K、15:42)
あーでも、上のコメントの内容は良く読めば「有効」かも、だってキー入力なんてどおでもいいよ。
不満なら、監視個所を複数取って、もしくは別スレすれば、良いだけじゃないの?
大体キー入力の基本的な実装が解かってないだろ。
管理人のSEGADRIVEのメニューみたいな実装では基本的にダメなんだよ。
管理人の弄ったすべてのエミュはキー入力の実装が不満じゃ。
コーディング能力が無いからなんともできんが、キー入力は専用のコールバックに仕立て上げられないかな。
キー入力スレ。中身は全キー監視。全状態確保。状態は具体的に3種類。
今押したのか、今離したのか、これが一つ。(過去のキーを比較したトリガー情報)
今押されてるのか、今離されてるのか、これが一つ。(普通の情報。現在のキー情報)
押した、離した、状態からの経過カウンタ(つまり時間相当。本当に時間では駄目。辻褄が合わなくなる)これが一つ。
アナログキーはアナログ値読むだけで、いいけど、(スレッシュホルドなど自前でやるから大きなお世話)
デジタルキーはこの程度の小さなプログラム作って別スレにした方がいいなあ。
この3種類の情報があれば、本体側で何でも出来るよ。
「ああ、押しっぱなしししたら行き過ぎちゃった」とか、
「ゆっくり隠しコマンド入れたら、受け付けなかった」とか、
そういう事は、ありえない。
MDP022では、具体的に一部原理を実装した。これは本来システム部分が管理すれば良い話なんだが。
これだけの説明じゃ意味ワカンナイ方は、別館から落として具体的に見ろ。
(2006-03/17、16:16、吐き気がする為強制中断)
■neo_pop だってさ。
何の事やら解からんが、ソースが手に入ったから、コンパイルしてみるか。
多分NEOGEO、POKETのエミュじゃろ。管理人ハードもソフトも持ってないし、仮に持ってたとしても、
吸出し方法がわからん。っていうかネオポケは直結吸出し可能の筈だから、「ソフト」(注:インターネットで
なくて実物。倫理上)が手にはいりゃ何とでもなるが、最大の問題は、管理人がネオポケで遊びたいソフトが
ひとつもない。って事。とりあえずソフトはフリーROM(つまり誰かが勝手に作った奴)で何とかしよう。存在
自体、あるのかないのか。調べてやせん。繰り返す。現在ソフト、一本もなし、やりたいソフトも一本もなし。
でも、ソース手に入ったから、ちとコンパイルだけしてみよ?改造したらなんかのベースになるかもしれん。
「あなたは何故コンパイルするのですか?」→「そこにソースがあるから」としか答えようがない。
意味なんて始めからないんじゃよ。
しかし、nko氏管理人より、遥かに情報収集能力は優れてるな。インターネット「nko」で検索するといいかもしれん。
ここから、無断転載。
■資料?
GP2X用のソースですが・・・。
http://elligre.tk/madelman/progs/neopop-gp2x-src.zip
あとは、NeoPocottのサイトにTechDocなるものがありました。
http://neopocott.emuunlim.com/download.html
nko (2006-02-23 01:57:53) 
ここまで、無断転載。
(17:50)
と、思ったんだけど、これだけじゃ足りないのかな?
make all→「neopop.gpe」ってなってるけど、GPEって何?「グラフィックエンジン?」
そもそもGP2Xってなに?ちと調べないと、訳ワカラン
(18:00ぐらい)
HDD容量も気になるが、差し当たり
http://elligre.tk/madelman/progs/
を全部落とすか、訳わからんもんは、全部。初心者の基本でしょ?
ここから、無断転載。
Index of /madelman/progs
 Name                    Last modified       Size  Description
--------------------------------------------------------------------------------
 Parent Directory        08-Aug-2005 06:13      -  
 WordLeaker.zip          19-Apr-2005 11:03   125k  
 blogjetit.zip           19-Apr-2005 11:03     3k  
 bochs-gp2x-0.2.zip      30-Jan-2006 11:43   745k  
 bochs-gp2x-src.zip      30-Jan-2006 11:43    25k  
 bochs-gp2x.zip          24-Jan-2006 15:13   698k  
 cygne-gp2x-0.1.zip      05-Jan-2006 13:57   376k  
 cygne-gp2x-src.zip      06-Jan-2006 06:16    75k  
 neopop-gp2x-0.1.zip     22-Dec-2005 04:07   468k  
 neopop-gp2x-0.2.zip     22-Dec-2005 11:37   488k  
 neopop-gp2x-0.5.zip     28-Dec-2005 04:32   343k  
 neopop-gp2x-src.zip     28-Dec-2005 04:34   185k  
 phamicom-gp2x-0.1.zip   07-Jan-2006 12:30   563k  
 phamicom-gp2x-0.2.zip   12-Jan-2006 13:51   511k  
 phamicom-gp2x-0.3.zip   17-Jan-2006 09:07   510k  
--------------------------------------------------------------------------------
Apache/1.3.34 Server at www.elligre.tk Port 80
ここまで、無断転載。
ほい、とりあえず、全部落とした。全部で5MBしかない。HDDにやさしい。展開したスパⅡと同量しかない。
名前から想像するに、「cygne」はワンダースワン、「neopop」はネオポケ、「phamicom」はファミコンじゃろ。
「bochs」ってのは何だかワカンナイ。
■突然ですが、今日のあらすじ。
ここから、無断転載。
2006-02-20 23:26:33
■ネオジオポケットの資料ないかなぁ
NEOPOPをいじってるんだけど、どうも激しく遅いんだよなぁ
原因はどうもタイマー周りが微妙な実装になってるからみたいなんだけども、どこを探しても資料が見つからない。
あったのはNEOPOPにあるメモリーマップくらいかな。
どなたかご存知なら資料のありかをおしらせください。
出て40fps位しかでておりませぬ。
ここまで、無断転載。
「e」氏、「NEOPOP」速くなんねー。出ても40fps。(注:(2006-02-20 23:26:33) )
→
「e」氏、それは構造がダメじゃからじゃろ、が、今忙しくてかまっとられん。(注:今は、(2006-03-03 10:03:37) )
→
なんかよくワカンナイが、試してみよ。(03/17、18:17)
ああ、何となく判ったよ。つまりこれは、PSP用じゃなくてPC用のソースな訳だ。残念。それなら、興味ないから、
いいよ。(全部今は要らん、残念。現在そこに、興味が伸びる時期ではない。いずれは要るかも知れんが、
明日の事は明日考えれば良い。現在の管理人には不向きな仕事だな。)
それだったらMAMEにチャレンジした方が良いもん。まだ管理人、そんなレベルじゃないや。
節操はないんだけど、自分のレベルの低さもわきまえないとね。残念。
(18:29)
■さてNEOPOP、消しちゃえば良いんだけど、Z80が入ってるから入れ替えて遊んでみるか。多分重くなると、
踏んでるが、やってみない事にはなんともいえんしなあ。世界のZ80は、元を辿れば大抵MAMEに行き着く
んだが、(もちろんrazeとか行き着かないのもある)これも、顔から判断して、
「新ニュー社員でつ。MAME地方から派遣されてきますた」
って感じ。
ええと、管理人何事も遊んでみるタイプなもんで。意味が無くても遊びだからイイジャン。
(2006-03/17、18:45)
■ええと、おはやうございます。起きますた。(21:26)で、ちっと上の方読んだら、やっぱ
「VSYNCのコールバックと、GPU転送のコールバック」というものがあるのなら、活用するべきです。
管理人の考える。「GPUコマンド」とはどう折り合いが付くんでしょう?別の技術なんですか?
大体「GPU転送」自体の負荷なんてないってば。管理人の場合。
ローカル変数GEcmd[]にGeのコマンドを入れといて、
A. sceKernelDcacheWritebackAll();//←やりかけの奴はかたづけんとあかんよ
B. qid = sceGeListEnQueue(&GEcmd[0], &GEcmd[14], -1, NULL);//←VDPコマンドをGeのキューに転送。
C. sceGeListSync(qid, 1);//←じゃお願いね。
って、(1/60)あたり、たったのこれだけしか無い。しかも、転送に特化したGeコマンドって、
static unsigned int GEcmd[15];で足りるんですよ。たったの15ロングワード!!
(A.)はGeに今度のコマンドくるから前の奴かたずけちゃってよ。って言ってる訳だから、ウェイトが
入る可能性はあります。もし入るのならば(時間けちけちコーディング)従って、(A.)から(B.)までの間。
何か他の処理をしても良い。
(B.)の転送量64バイトなんですから、(どんなにタコでも)それの転送がかかるわけない。あ、64バイトって
ちょーど、PSP一次キャッシュのライン幅と同サイズですね。ああそうか、それでSNES、TYLは、ここの
ALIGN合わせてあるのか。管理人今ソース見たら、合わせてない。がここは重要だからあわせとこ。
(C.)、B.の奴は、管理人良く知らないんですが、実はコールバックなんじゃあないでしょうか。だって、PSPの
アーキテクチャーじゃ、何でも「コールバック」しか要らないでしょ?だから、(B.)でコールバック用の関数登録
して、(C.)で具体的なコールバックと。(B.)のやつをSCEの関数使わないで、自前で用意した関数使えば、
それが、GPU転送のコールバックなんでしょうか?でも転送量64バイトだよ。SCEのライブラリが、仮に多少
タコだったとしても、そんな所で差が付くんでしょうか?rinさんだって、GBのソースで転送「ガンガッテ」書いて
おられるけど、それは価値のある作業ですけど。アセンブラレベルで配慮した転送。結局パフォーマンス伸び
なかったでしょ?PSPはALIGN合わせや、キャッシュなど、とても重要だけど、
(キャッシュミスで70くらいペナルティ発生ですか、最近のPC、DOSVも結構凄い事ですが、
最低でも「二次キャッシュ」と、「三次キャッシュ相当」があるからな。PSPはバスに降りるまでに、
何次キャッシュまであるんでしょうかね。もしかして、一段少ないんじゃ?)
結局ALIGNさえ合ってれば、Cで軟弱に書いたコードでも、アセンブラで「ガンガッテ」書いたコードでも、
違いはない。
大体64バイトじゃそんな論議を持ち出す事自体不毛。っていうかこれは余興話なんすけど。
うちのGeは現状こんな感じ、負荷がかかるとはとても思えない。見直す可能性があるのは、
ユーザーコールバック化か、(A.)と(B.)の隙間を活用すべきかどおか。それ以外は、別にこれで
いいんじゃないでしょうか?素人なんで、判りかねますが、正直言ってこれ以上Geで悩む点というのが、
そもそも良く判らない。これ以上シンプルな実装ってどんな実装なんでしょう?誰かコーディングしてくれない
かな?管理人の目がハッと覚めるような奴。そしたら、前言撤回して、5秒で真似するんだケド。
(22:07)
■管理人、基本的な考え方が、間違えたみたい。
CPPのクラスライブラリ破壊しないほうが、良いです。やっぱパフォーマンスチェックは正しい。
つまり、A17グライの時代に比べると、大幅に「遅く」はなってるんです。でも、絶対に戻らんもんね。
ゲームを遊びやすくする地道な工夫。それは「速度」に出ないけど、積み重ねてありますから、
別にCPPのクラスから出したのが悪いのなら、またクラスに戻してやれば良いだけの話で、難しくも何とも
ありませんから、ワカンナカッタら別館から落としてきて、真似すりゃいいダケのはなし。
現実にクラスを破壊し尽くすと、OutRunが半分の速度(遅くなる)になってしまう訳ですから、
やはり、やってはNGです。現実にDGEN100を弄り出した初期の初期でも、やはりクラスの配置で
泣かされました思い出があります。ぐすん。
クラスライブラリから出してはいけない理由は(もちろん想像ですが)こうです。
(だってPSPのアセンブラ一片もワカンナイんだも~ん)
A.  PSPのアセンブラに「アドレスレジスタ間接」に当たるリスクコードがある。
B.  クラスに関数が、入ってれば(変数も)、「アドレスレジスタ間接」がフル活用される。
C.  「アドレスレジスタ間接」にあたる。アセンブラコードは、もしかしたら短い。
(つまり、仮に「アドレスレジスタ間接」にならなくても「相対アドレス参照系」のコードになる)
という仮説です。なごーー(ねこ語訳:だってPSPのアセンブラ一片もワカンナイんだも~ん)
(23:03、寝たら少し熱が引いてきたっぽい。峠は超えたかも?)
■結言:DGENのCPPって意味がないかと、今の今まで思ってたけど、実はPSPではCPPである事に意味がある。
つまり、速度的なメリットがある。理由は前項の「想像」。それ以外の理由はワカラン。
じゃあ、起きたバッカだけど、寝るか。おやすみなさ~い。
アシタから無断転載は止めて、もちっと「良い子」にナルヨ、タブン。(悪魔の言う事だから当てにはならんが、23:20)