0.112u1がリリースされました。what's new-Jはこちら。ソースツリーの大規模な変更のため、diffを取るとサイズがオリジナルの倍くらいになるので、フルセットのソースでリリースされています。このバージョンでは、例のNamco 54xxサウンドチップが実装され、ギャラガ、ボスコニアンからサンプルが削除されています。また、hootチームからのコアサウンド更新、CPS2のキー追加、Z80の変更で壊れていたドライバの修正、などてんこ盛りです。
バグ情報は MAME Testers を日本語化したものです。
訳は全て非公式なものです。このページによるトラブルについて、筆者は一切責任を負いませんので予めご了承願います。
0.112u1出た
M1 v0.7.7u3出た
M1の修正版が出ています。u2からの変更点は次の通り。
- C352チップを使うNamco製ゲームの大幅改良 (hoot development team)
- RF5c400チップを使うKonami製ゲームの大幅改良 (hoot development team)
- 初期のDCSピンボール(「Indiana Jones」など)を修正 (RB)
- サポート追加 (RB, Knurek, Tafoid, others)
- NeoGeoの復号タイプを全てサポート (RB)
- XMLファイルの修正 (RB, Logiqx)
日本語のゲーム名ファイルはこちら(lists\jp\に配置)。
BridgeM1 WIP版
M1用フロントエンド、BridgeM1を現在あちこち修正中ですが、とりあえずメインウィンドウの描画を完全に入れ替えたのでテスト用として上げておきます。テーマの切り替えは一時的に無効にしています。
A WIP version of BridgeM1 is available for testing. I have updated main window drawing from scratch. Please note that the theme switching function is disabled temporarily.
MAME10周年 & 0.112出た
MAMEが今日で10周年を迎えました。同時に記念リリース0.112が出ています。what's new-Jはこちら。mame.devサイトもリニューアル、全リリースのソースとバイナリ、Wikiを使った開発者による未動作ドライバの情報ページも新設されました。さらに、R.Belmont氏が10周年記念復刻版 MAME 0.1も作成しています。pdf版の開発グラフはこちら。
M1 v0.7.7u2出た
M1のクイックフィクス版が出ました。u1からの変更点は次の通り。
- モノラル出力を左からセンター出力に変更
- m1.xmlのエラーを修正
- tnzsを削除。tnzsjが内容的に同じできちんと動作するため
- 最新のNeoGeoサンプル暗号化に対応。kof2003、mslug5、svcpcb、samsho5、samsh5spに対応
- 動作していないテスト用ドライバのゲームを削除
- pacapp2追加
- c74.binのCRCを修正
Linux用のPPC版はプレステ3でも動く模様。日本語のゲーム名ファイルはこちら。
M1 v0.7.7u1出た
アーケードサウンドエミュレータM1の新版が出ました。外部ファイルで全てのゲームの定義を行うように変更、またTaito F3の改良(曲番号が変更されています)、チャンネル毎の音量操作が可能になりました。BridgeM1はそのまま動作しますが、チャンネル毎の音量調整には後ほど対応予定です。日本語のゲーム名ファイルはこちら。解凍してlists\jp\に配置します。
0.111u6出た
0.111u6のソース差分がリリースされました。what's new-Jはこちら。
0.111u5出た
0.111u5のソース差分がリリースされました。what's new-Jはこちら。CPS2は3本(spf2t、spf2xj、spf2ta)を除いて全てXORが外されました。これまでXORが無かったものもかなり動作可能になっています。また、BDFの読み込み時間対策としてキャッシュ保存機能が追加されています。
アレック64 WIP
Ville氏ページが更新、アレック64の進捗状況が出ています。MAME内での64エミュレーション自体はほとんどできあがっているので、少しの作業で対応できたそうです。スターソルジャーとビビッドドールズのスクリーンショットが出ています。
0.111u4出た
0.111u4のソース差分がリリースされました。what's new-Jはこちら。UIでUTF-8として文字描画をするようになったため、英字以外を表示するには「ユニコード対応のbdfフォント」が必要です。いいのを募集中。
【更新】24x24ドットのフォントでテストしたところ、起動に3分以上かかりました。いまのところ実用的ではない感じです。
とりあえずフォント
UIがUnicode対応になりましたが、普通の日本語フォントでは読み込みに時間がかかりすぎるため、必要な文字だけを追加してみました。といっても「上、下、右、左、軸、矢印、ボタン」だけです。とりあえずこれで表示は問題ないと思います。使い方は解凍してMAME本体と同じところに置くだけです。足りない文字を発見されましたら掲示板へお知らせを。
【更新】「無、変、換」を追加。
【1/24更新】MAMEのUIでは使わない記号や文字を削除(約1500字)。読み込みがかなり早くなります。「テ・キ・ー」を追加。
CPS2との戦いは続く
ということで、ニコラさんがXORでサポートされている既存のCPS2ゲームのチェックしたそうで、あるアドレスに7つ以上の(E,D)ペアがあれば数時間のアタックでキーが見つけられる模様。11本でアタックがうまくいかず、そのうち3本ではペアが2つしかないので別なアプローチが必要とのこと。ペアが4つのものについては裏技を使ってなんとかアタックできる見込みとのこと。
Haze氏WIP更新
Haze氏の個人WIPにマジカルキャットアドベンチャーの更新が出ています。Testersで出ていたラインスクロールを実装しています。
アーロンさんのクリーンアップ計画
去年一年間はドライバのクリーンアップを進めたAaron氏ですが、他の開発者にも役立つように作業予定のチェックリストを公開しています。
タイミング・割り込み:
- 基板の全てのクリスタルを#defineで記述
- 全てのCPUとサウンドクロックを#defineの周波数から生成
- 割り込みの発生タイミングと、発生元を再確認
- 割り込みのACK実装
- 正確なウォッチドッグ有効時間の追加
メモリ:
- リード・ライトメモリマップの統合化
- 完全なアドレス空間のマッピング。可能ならば回路図から
- 適切な場所ではAM_SHAREを使う
- メモリバンキングを新システム(memory_configure_bank)に変換する
グラフィック:
- レイアウトで可能なところでは決め打ちした値にあけてRGN_FRACを使う
- 共通のレイアウトは共有する(vidhrdw/generic.c)
- hblank・vblank・表示領域を正確にする。可能なら回路図から
- ディスプレイ情報を旧マクロから新マクロに変換
- 水平・垂直位置用により正確なタイミングルーチンを使う
- 適用できるところはタイルマップに変換する
- パレット生成にレジスタを使うよう変更する
- わかっているものについてはスプライト表示の最大数(スキャンライン毎にいくつかなど)を追加する
入力:
- 全入力ポートのタグ付け
- コード内のポート参照を全てタグを使うようにする
- 非DIP設定をconfigに変換する
- 適切な場所ではメモリオーバーライドに代えて、PORT_CUSTOMを使う
- コインカウンタを正確にする
- 基板出力を新出力システム経由で接続する
- DIPLOCATIONSを追加する
- DIPスイッチと入力の検証
ROM:
- メモリ領域を必要最低限にする
- ROM名が妥当・正確か調べる
- 未エミュレートのクローン版がないか調べる
その他:
- ソースファイルの整理: header, includes, constants, typedefs, macros, globals, inlines, code
- ドライバファイルを次の順に統一: address maps, input ports, graphics definitions, sound configs, machine driver, ROMs, driver init code, drivers
- セーブステートサポート
- グローバル変数を全てdriver_dataの後ろに移動
- ぐちゃぐちゃのコードをわかりやすくする
64bit MAMEベンチマーク
Aaronさんが64bitビルドを中心にパフォーマンスの徹底比較されています。VC対GCC、VCの最適化あり対なし、-mtオプション、32bit対64bitなどなど。特に、デュアルコア環境での-mtはタイトルによっては約3倍、平均でも41%もスピードアップしているのが目立ちます。GCCとVCでは、リッジレーサーとスターウォーズ以外は5%程度の向上、64bitでは3Dゲームで大きく向上しています。
0.111u3出た
0.111u3のソース差分がリリースされました。what's new-Jはこちら。Unicode関係のトラブルの修正、CPS2更新、その他OSDの大幅変更が入っています。
CPS2 coming to MAME
ということで、ニコラさんが4GBのCHDを192bitのキーに置き換えるためのコードをDevに提出されました。サイトからもコードをダウンロードできます。まだSボックスの動作について不明な点が多く、キーもオリジナルとは異なるとのこと。腑分けしたCPS2チップの写真からSボックスの内容がつかめるかもしれないそうです。この次は、XORしかないゲームからのキーの割り出しにチャレンジする模様です。
「CPS2基本動作解明」
との書き出しで、ニコラさんまたまた更新。動作の基本的な部分が判明、96bitのキーx2にまでたどり着いた模様。アルゴリズムは1)16bitのアドレスと96bitのキーで最初のフェイステル構造を通して16bitのサブキーを生成、2)16bitの暗号文、16bitのサブキー、もう一つの96bitのキーで2回目のフェイステル構造を通し、16bitの平文を生成するとあります。だだし、喜ぶのはまだ早いそうで、1回目のフェイステル用Sボックスの完全な割り出しが必要で、これができて初めて、8GBの完全なテーブルがあるタイトルについてはキーを求められるそうです。
一方で完全なテーブルが無いものは、キーがもっと小さかったり、ビットの再利用の可能性があるものの、それがどれくらいかはわからないので、最大で192bitのキーとして対応しなけらばいけないそうで、このサイズでは総当たりは問題外、XORの情報があったとしても差分攻撃ができる類ではないだろうとのこと。
【訂正】96bitが2つに訂正。
「CPS2はそんなに甘くない」
との書き出しで、ニコラさんの更新。4GBのサイズだったテーブルは128kBまで小さくなったものの、ハードウェアの実際の動作が解明されたわけではなく、オリジナルの8GBテーブルが無いゲームについては、まだキーを生成できない状態とのこと。
0.111u2出た
0.111u2のソース差分がリリースされました。what's new-Jはこちら。今回よりUnicodeファイルのサポートが追加されましたが不具合が出ているようです。まず、-cheatを有効にすると起動時に固まるバグがあります。また-ccでutf-8のmame.iniを出力するようになりましたが読み込めないので、Shift-JISなどに戻す必要があります。
CPS2でブレイクスルーか
スペインのAndyさんがCPS2の解析で進展があった模様です。にこらさんも合わせて更新しています。えーと、手短に言うと「今4GBあるテーブルファイルのサイズが768kBになるかもしれない」ということだそうです。
恭喜新年發大財!
あけましておめでとうございます。みなさんにとってよい一年になることを心よりお祈りしております。今年もよろしくお願いします。
Ville氏WIP更新
Ville氏のWIPがクリスマス更新。Taito 3Dハードがかなり進んできています。サイトによると、
Taito 3Dハードウェアの一番の特徴といえば、演算コプロセッサがカスタムチップの一つに統合されていることです。このコプロセッサは2つの役目があります。ひとつは、3D座標の2Dへの透視変換で、DSPの逆アセから簡単に割り出せます。もう一つは、かなりの難題だったのですが、ポリゴンとビューポートの交差座標の演算に使われていることがわかりました。
もう一つの演算ユニットが必要な理由が最初の頃はわからなかったのですが、演算処理を調べているうちに、どうやら何かの除算をしているのがわかってきました。さらにデータシートによればTMS320C51には除算ユニットが全く無いことも判明しました。
これらのTMS320C51のバグ修正により、3D描画はほぼ完全になっています。
0.111u1出た
0.111u1のソース差分がリリースされました。what's new-Jはこちら。