ここはMAMEなどの海外情報の訳を扱っています。
バグ情報は MAME Testers を日本語化したものです。
訳は全て非公式なものです。このページによるトラブルについて、筆者は一切責任を負いませんので予めご了承願います。
Fujix

コラ氏のCPS2解析・その2

Nicola氏のCPS2解説、昨日の続きです:

相補的な特性が重要なのは、テーブルサイズが半分になるからというだけではありません。とはいうものの、この特徴を十分に活用しているわけではないのですが。

ここで、CPS2の暗号化についておさらいしておきましょう。

入力:

  • ROMに保存された16ビットの値
  • 16ビットのアドレス値 (1~17ビットの物理アドレス)
  • ゲーム毎に変わるサイズ不定のキー

出力:

  • 16ビットの復号化された値

ここでは、アドレスAにある値XをキーKとして、関数D(X,A,K)とします。相補的な特徴とは、どんなAについても必ず対応するA1が存在することです。つまり、

D(X,A,K) = D'(X',A1,K)

ということになります。

この発見が重要なのは、暗号化においてAがアルゴリズム的な影響を与えているからです。SegaのFD1094 CPUでは、各アドレスのキーは巨大なテーブルで保持されています。もしCPS2が同じ動作なら、相補的な特性は現われません。

これは特に驚くことではなく、Segaが巨大なキー+シンプルなアルゴリズムを好むのに対し、Capcomは小さなキー+複雑なアルゴリズムを好むことをKabuki CPUで見てきています。

残念ながら、AからA1を導く方法はまだわかっていません。ゲームによって変わるので、キーの関数であるのは間違いありません。

相補特性というのは、強力な暗号でも特別珍しいものではありません。ですから、アルゴリズムの欠点であるとは必ずしも言えません。たとえばDES暗号でも見られ、D(X,K) = D'(X',K') となります。

一般的に、相補特性はXOR演算が起きている兆候ともいわれます。相殺のために補数演算が起こるからです。例を見てみます。代理関数をfとして、次のようなアルゴリズムがある場合、

d = e XOR f(e XOR k)

補集合は

e' XOR f(e' XOR k') = e' XOR f(e XOR k) = (e XOR f(e XOR k))' = d'

とになります。もちろんこれはとてもシンプルな例ですが、この場合はx'が補集合でなくてもよいことに注意してください。たとえば、x' = x XOR 1と定義しても成立します。ですから、CPS2のアルゴリズムはこんなにシンプルでないのは確かです。

もっと現実的な例としてフェイステル構造(DES暗号はフェイステル構造を使っています)を挙げましょう。フェイステル構造を以下のように定義すると、

Li = R i-1
Ri = L i-1 XOR f(Ri-1 XOR Ki-1)

相補性がどのように出てくるかよく簡単にわかるはずです。

CPS2の暗号化がフェイステル構造を使っているという考えは確かに魅力的ではありますが、個人的には違うと思います。なぜならば、前回説明したデータの拡散がもっとよくなるはずだからです。

Nicola's MAME Ramblings

コラ氏のCPS2解析

コラ氏のCPS2解析 変換テーブルがCHDで丸ごと追加されるなど、最近少し動きが出ているCPS2についてNicola氏の続報:

1年前に変換テーブルの相補性を発見してからは、CPS2の暗号化について特にわかったことはないのですが、ここでわずかでもこれまでに判明していることについて解説したいと思います。

よくある勘違いが、解読テーブルは「ランダムデータ」であるというものです。ぱっと見ではそう感じるかもしれませんが、きちんと調べるとそうでないことがわかります。

暗号値と出力値比べたとき、もしランダムなテーブルだとすると出力値の各ビットが変更される確率は50%ですが、以下の表を見るとそうなっていません。ほとんどの値は50%くらいになっていてランダムなようですが、全然違う値もあります。

このように、暗号化アルゴリズムは拡散が不完全なのです。まだ解読はされてませんが、これが突破口になるかもしれません。

特に興味深い4つの値を赤色にしています。ゲーム毎にテーブルは変わるので値は変化しますが、この4つだけは常に同じ値なのです。これは変換アルゴリズムの明らかな特性といえます。で、これは役立つのでしょうか。もしもアルゴリズムがキーに依存したビット置換をしているならば、暗号値のビット3とビット9、また復号値のビット0と14には置換が影響しないといえます。しかしこれとは別に、ビットがいつ反転されるかが正確にわからなければ、この特性から得られることは多くありません。これを見つけ出すことがアルゴリズム解析の大きな進展になるかもしれません。

Nicola's MAME Ramblings

Ville氏WIP更新

Ville Linde氏の個人WIPが更新。Taito JCシステムの3Dシステムの解析状況が出ています。今のところ、ポリゴンフォーマットとテクスチャマッピングが解読されてきているそうで、サイドバイサイド2の道路部分などが表示されるようになったとのことです。

Ville's Development Log

MAME 0.111出た

オフィシャルMAME v0.111がリリースされました。what's new-Jはこちら。u5からの変更はわずかです。

windowsJ.txt更新

本体付属の設定解説ファイル、windows.txtの日本語訳をv0.111版に更新しました。ダウンロードはこちら。前のv0.107からの追加オプションは-fontpathと-multithreading、削除されたのは-hiscore_directory、-artwork、-keyboard_leds、-led_modeです。

0.110u5出た

0.110u5のソース差分がリリースされました。what's new-Jはこちら。LD表示サポート向けの更新、サーカスチャーリー修正、マウスホイールサポート、その他いろいろ。

MameDev.com - Latest Release

0.110u4出た

0.110u4のソース差分がリリースされました。what's new-Jはこちら。引き続きCPS2のXOR関係の更新、またVista環境でのコンパイルなどなど。

MameDev.com - Latest Release

0.110u3出た

0.110u2出た

MAME OS X出た

intel Mac用のMAME OS Xがアナウンスされています。サイトによると

これまでIntel版のOS X用MAMEというのはありませんでした。MacMAMEプロジェクトはこの1年は休止状態で、しかもPowerPC専用です。SDLMAMEプロジェクトは動作しますが、あくまでクロスプラットフォームプロジェクトなので、やはりOS X専用にすればもっと良くなる部分があります。というわけで、OS X用MAMEを自分で移植してみようと決めたわけです。作業は2ヶ月ほどかかりましたがようやく準備ができたので、ここに公式にMAME OS Xプロジェクトを公開します。

まだ若干作業が必要なところがあるそうですが、エミュレーション自体は動作しているようです。サウンドはCore Audio、表示はCore Video、Core Image、OpenGLを使ってパフォーマンスが最適化されており、さらにおまけでCore Imageを使ったフィルタリングもできるとのこと。Intel Macな方はぜひ。

Dave Dribin's blog

0.110u1出た

MAME 0.110出た

0.109u5出た

0.109u4出た

mameworld.info停止中

2、3日前よりmameworld.infoドメイン以下にアクセスできなくなっています。mameworldの掲示板(Testers掲示板を含む)の他、R.Belmont氏やHaze氏などの個人WIPページも停止中で、なにやら植物が表示されています。【更新】復旧しました。

www.mameworld.info

アーケードTVゲームリスト

というわけで、話題の「アーケードTVゲームリスト 国内・海外編」が届きました。今回も期待を裏切らず、ビニールがクマちゃんシールで止めてあって、得点が高いです。ほとんどのゲームの発売時期が年月まで掘り下げてあって、開発元と発売元も詳細にカバーしてあります。大量のデータで強力な資料といえるでしょう。ただ、紙媒体じゃなくて、デジタル化されていれば資料としての価値はもっと高くなるでしょうね。うーむ。

0.109u3出た

0.109u2出た

0.109u1出た

Dox氏WIP

Dox氏WIPが更新、引き続きダイナミックシュート競争のスクリーンショットが出ています。カマードーマ。

slanina

MAME 0.109出た

SDLMAME Win用差し替えファイル

RB氏のSDLMAME 0.108u5のWin32コンパイル用差し替えファイルが出ています。うちではまだ試してませんが、ページによるとOpenGLの速度アップのおかげで、普通のMAMEをd3dで動作させたときよりも「かなり」速いそうです。興味があったらドーゾとのこと。

Arbee's WIP Emporium

Dox氏WIP

Dox氏WIPが更新、なんとどきどきペンギンランド。渋いところです。

slanina

0.108u5出た

0.108u5のソース差分がリリースされました。what's new-Jはこちら。-listxmlがエラーで中途までしか出力されないバグが報告されています。stephh氏がすでにfixを出したそうです。

MameDev.com - Latest Release