スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


X68000エミュレータPX68K for PSPの現状報告(8/20)

そんな訳でX68KエミュPX68K for PSPについての進捗報告。

twitterの方ではちょくちょく報告していましたが、SDLで画面描画していたのをGUを使うように変更しました。ソースはGitHubにpush済み。これにより画面いっぱいに出力できるようになりました。画面比率は4:3になるようにしているので、左右に隙間はできますが。

でもまだまだ遅い。ただグラフィック出力のない場面でも遅いこと、同じMPUコアのCPS2PSPはバリバリ動いていることを考えると、何か単純なヘマをやって遅くなっているだけかもしれないなーと楽観的に考えてみたりしますが、甘いかな。
まぁ、性能関連は後回し。基本機能がまだまだなので。

GUを使うことにより、画面の拡大縮小もHW任せにできるので楽ちんなのですが、Human68kやSX-Window等の756x512画面はかなり小さくて見づらくなります。主にゲームで使われるであろう256x256はPSPの480x272への拡大処理になるので問題はないのですが。

SX-Windowはこんな感じ。PSP Goは普通のPSPよりさらに画面が小さいのでより見づらい。
DSC_0142.jpg
Human68kは文字の判別がやっとな感じ。
DSC_0140.jpg

Texture FilterをGU_LINEARからGU_NEARESTに変更してみたら、ドットが抜けてもはや判別不能に。
DSC_0141.jpg

将来的には、NP2 for PSPの様に縮小しない画面モード(画面からはみでる部分はPSPのアナログパッドでスクロールして見ることができる)も必要でしょうか。

とりあえず画面出力は落ち着いたのでjoystickの実装をして、PX68K for PSP Ver.0.01のリリースしようと思ったのですが、PPSSPPだと大丈夫なのに、実機では電源が落ちてしまう不具合を検出。

PPSSPPだとOKで実機だとNGの場合は、おそらくアライメントがらみ。奇数番地からのワードアクセスとか、ロングワードアライメントまたぎのロングワードアクセス等。

早速デバッガで追ってみた。

(gdb) c
Continuing.
[New Thread 68732991]

Program received signal SIGHUP, Hangup.
[Switching to Thread 68732991]
0x08815028 in Grp_DrawLine4 (page=3, opaq=1) at x68k/gvram.c:1217
1217 v = *srcp++;
(gdb) p/x srcp
$1 = 0x8e929fd
(gdb)


うむ、ビンゴですね。srcpはWORD (unsigned short)のポインタなので、奇数番地へのワードアクセスをしています。
x86だと大丈夫ですが、PSPのMIPSやAndroidのARMではアウト。
PPSSPPもJITを使わない設定があるようなので、もしかしたらこの類のエラーも検出できるようになるかもしれませんが未確認。

ということで、このバグ(x86だとokなのでkeropiやxkeropiのバグではないです)を修正したらVer.0.01をリリース予定です。
今日は眠いのでここまで。


Comment

コメントの投稿


管理者にだけ表示を許可する

Trackback

http://hissorii.blog45.fc2.com/tb.php/224-90d11b11

«  | HOME |  »

プロフィール

ひっそりぃ

Author:ひっそりぃ
Twitter:@hissorii_com
GitHub:hissorii


月別アーカイブ


最新記事


カテゴリ



最新コメント


最新トラックバック




RSSリンクの表示


Amazon


QRコード

QRコード

Amazon


ブログランキング

ブログランキング【くつろぐ】
にほんブログ村 ゲームブログ×PlayNCBlogへ

メールフォーム

名前:
メール:
件名:
本文:


カウンタ


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。