2020年5月4日から2020年5月1日までの日記を表示中

2020年 5月 4日 (月)

PC

先に注文しておいたDDR4のメモリだけ着荷w。とりあえず16GBです。それなりのブランドでちょっと高性能なやつだとは思うんですが、何故かこれより下のクラスの製品よりもちょっとお安かったり。

メモリが着荷

基板

MAME上のデバッガでCPS3のタイトルの命令を追っていたら、NOPでない2ByteのデータがなぜかNOPとして表示されていることに気が付きました。不思議に思ってソースを調べてみたら、どうも命令を判別する処理の実装が色々と怪しい感じ。NOPは本来「0009h」なんですが、実装を見ると、2Byteの命令の最上位4bitが「0000b」のときは下位6bitが「001001b」だったら無条件でNOPと判断されるようになっていました。つまり「0000_XXXX_XX00_1001b」なら何でもNOPになってしまうということ。なので、たとえば「03C9h」みたいな全然違うやつもNOPになってしまいます。

自前のツールで使っているライブラリも、元々MAMEの逆アセンブラから切り出して作ったものなので、当然同じ問題を抱えています。そしてこれを許してしまうと、既存の解析済みのプログラムをチェックする際に不正な命令を再エンコードしてしまいっている箇所を見逃してしまうことになり、非常によろしくない感じ。

というわけで、自作のツールの方でこの辺の雑な判定を修正してみたところ、先日は特に問題の見つからなかったストIII 3rd初期版の解析済みのプログラムにおいても、本来命令にはならないはずのバイナリ列 ($4858) が命令として再エンコードされてしまっているところが見つかりました (MAMEの逆アセンブラだと「SHLL8 R8」と解釈される)。

ちなみに、気になってMAMEのCPUエミュレータの実装の方も見てみたところ、こちらも逆アセンブラと同様にバイナリ列を緩く判定して処理していました。うーん、もしかして実機でもこういう風に判定しているのかな。プログラムがバグって暴走した時の挙動を正確に再現するためにこういう実装になっているみたいな・・・。

あと、MAMEの逆アセンブラのコードを検索しても何故か STC GBR,Rn が見つからず、不思議に思って調べてみたら、間違って STS GBR,Rn が割り当てられていました。CPUの方は流石に大丈夫でしたが、こっちは純粋に逆アセンブラのバグっぽいですな。

2020年 5月 3日 (日)

基板

CPS3の解析、今度は既存の解析結果で「データ」として認識されているところに有効な命令列が埋もれていないかを探すプログラムを書いてみたりしているんですが、初代ジョジョとかで試してみたところ、埋もれたサブルーチンが結構な数出てきました。もちろんたまたま命令として解釈できるようなものも多く混ざっていたりするんですが、明らかに関数の形になっているものも結構あり・・・。まあ、どこからも呼ばれることのない関数なんだろうとは思いますが。

しかし、こうやって静的に解析するのにも限界を感じますね。どこまでやったら完璧と言えるのか全然わかりません。というか、そもそも、ストIII 2nd以外のタイトルについては、CPUが素のSH-2なら、デコード後に命令部分だけを抽出して再エンコードしたバイナリを用意する必要もないんですよね(機械的に全部デコードするだけで良い)。・・・ああ、そうか、MAMEのソースのスゴイBIOSにcps3bootとcps3bootaの2種類があるのはそういう理由かー。

トワイライトプリンセスHD

ゴーストの魂を求めてさまよっていたら、いつの間にかシリーズ恒例の試練系のダンジョンに突入。何の準備もせずに入った割には粘れたんですが、最後だと思ったフロアにまだ続きがあって、そこで力尽きました。後で調べたら力尽きたのが49Fで、これが本当の最後のフロアだった模様。惜しい・・・

2020年 5月 2日 (土)

散髪

髪が限界に近かったので切ってきました。本当に久々に街中に出た感じw

PC

WindowsデスクトップPC更新用のRyzenマシンのPCパーツを注文しました。今のWindowsデスクトップPCのマザーボードやCPUを買ったのは2011年なので、実に9年ぶりの更新ということになります。よく考えると、9年前のPC + 最新OSでもあまりストレスなく使えていたのは凄い話ですね・・・。途中で主記憶をどかっと増設したのと、二次記憶をSSDに置き換えたお陰かな。

2020年 5月1日 (金)

基板

CPS3の解析済みのプログラムに変な箇所がないかチェックする自作のツールを、ストIII 3rdの初期版と後期版の既存の解析済みのプログラムに適用してみました。初期版についてはエラーなしでしたが、後期版では何と2箇所ほどエラーを発見。うーん、この辺も実行・参照されることがない箇所なのかな・・・。

CPicS2

CPicS2の袋詰め作業実施中。去年はこの時期、袋詰めしまくってたなぁ。

CPicS2袋詰め

REGZA

タブレットからYouTubeのライブ配信動画をREGZA Z700Xに飛ばして流しっぱなしにしていたら、REGZA側で「メモリ不足のため、コンテンツを表示できません。」なるメッセージが出て再生が切れました。メモリリークでもしてるんですかね・・・。

2020年5月4日から2020年5月1日までの日記を表示中

中の人情報

名前:
nosuke (のすけ)
メール:
sasugaanijaのgmail.com
「の」は「@」みたいな
関連リンク:

カレンダー

2020年5月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            

<<先月分

翌月分>>

最新の10件のエントリ

最近の10件のコメント

過去ログ