セガサターンのエミュをみんなで作るスレ
■ このスレッドは過去ログ倉庫に格納されています
0417AZUCO
03/03/20 10:31ID:PgWcsZ8Oまーちょっと俺もBCB入れて、いじってみるわー。
んじゃぁ、ちょっと各自、BCBさわれる程度にしておいてちょ。
次の議題は、メモリのエミュレーションをどういうやり方でやるかって事を決めましょ。
メモリのエミュレーションは、x86とSH2ではエンディアンが違うので、絶対になんらかの
中間処理がいるのと、
広大なアドレスをどう実際のマシンに割り当てるか?って部分が問題になってくると思う。
後者はAS1では、32bitのアドレスのうち、上位16bitをインデックスとして使い、実際のメモリ
に振り分けている。具体的にはメモリアロケーションテーブルとかいう(安直な名前だな:w)
配列に、メモリのポインタをぶっこんで、メモリを読みに逝くようにしている。
もしこのとき、ポインタがあるマジックだった場合には、メモリは割り当てられてないと判断し
デバイスの振り分けルーチンに飛んでいる。
他にはMAMEのようなリスト型振り分け(ソース見た限りではそうだと思うけど・・・・・)という
のがある。この方式は、振り分け区画が自由に決めれて(1バイト単位でもOK)振り分け
先が少ない場合は、テーブル方式よりも、高いキャッシュヒット率が望める。
また、より先進的な方法を取るなら、アクセス頻度によって、リストの順番を入れ替える等も
可能だろう(より速度が上がると思う)
ちなみにAS3ではダイナミックキャストを使って、メモリとデバイスを同じレベルのクラスと
して扱って、一発でアドレス振り分けが可能なようにしている。
ただしこのやり方は、Vtableを使うので、本当に速いのかは疑問。つーか遅いと思う。
という論点で、各自最適と思われる方法を提示せよ。締め切りは23日中まで。
■ このスレッドは過去ログ倉庫に格納されています