0.128u7 ------- お知らせ: このリリースにはメジャーな変更点が2箇所あります。今回のuサイクルでの "大規模な"変更はこれで最後になります。 一番大きな変更点は、長年MAMEの重要な要素だったグローバルなMachineポインタの廃止です。 正直なところ、これほど早い時期に廃止できるとは思っていませんでした。これを成し遂げる ために、最終段階まで尽力して頂いたAtari Ace氏に感謝します。この変更により、新年には2 つのmachineを完全に同時実行するドライバが書けることになるはずです。 2つめの変更点は、CPUが完全なデバイスになり、他のデバイス同様にシステムを構成できるよ うになったことです。これは、内部的な構成の変更がメインですが、同時に余分なコードや動 作を削除することもできました。将来的なuサイクルでは、サウンドコアでも同様のことを行う 予定です。 今後は、残っている問題点の解決に焦点を移して、新年早々には0.129をリリースする予定です。 バグなどを見つけた場合は、MAMETestersへ報告お願いします。 MAMETestersの修正バグ --------------------- - 02745: [Crash/Freeze] autosaveを使うセット: autosaveを使うと起動時にエラーが起こる。(Aaron Giles) - 02750: [Sound] equites.c全セット: BGMが鳴らない。(Aaron Giles) - 02757: [Documentation] sengoku3: 製造元は正しくは"Noise Factory / SNK" (Phil Bennett) - 02753: [Crash/Freeze] gradius4: hardware error -1が起こる。(Aaron Giles) - 02755: [Crash/Freeze] metro.c全セット: Access Violationでクラッシュする。(Aaron Giles) - 02756: [Crash/Freeze] hyprduel, hyprdelj: タイトル画面の色がおかしい。その後Access Violationでクラッシュする。(Mamesick) ソースの変更点 -------------- - 以前のcherrymドライバを削除(前回消したつもりでした)。[Aaron Giles] - Funworld.cの改良: [Roberto Fresca] - 新セット追加: Jolly Card (italian, encrypted bootleg). コイン入力不可。クレジットの削除だけ可能。nvramの初期化後、Payout DIPスイッチを manualにするとクレジット削除モードが動作します - jolycdibの入力をゼロから作成 - テクニカルノートを更新 - CPUを正式なデバイスに更新。他のデバイス同様に、machine設定部でCPUを追加できます。ま た、通常のCPU設定は、インライン設定マクロを使って行います。[Aaron Giles] - cpu_typeをデバイスの動作と同様に、ポインタの列挙からCPUのget_info関数に変更。全ての ドライバで参照するCPUに必要なヘッダを#includeするよう更新。[Aaron Giles, Atari Ace] - CPU型を返す関数、cpu_get_type()を追加。[Aaron Giles] - 一部のcpu_*関数を同等のdevice_*に切り替え。具体的には、get info、set info、resetに ついて。[Aaron Giles] - デバイスシステムについて、指定した型、クラスに対する全デバイスの反復処理を高速化す るため、型とクラスを元にデバイスのリストを並列に管理するよう変更。[Aaron Giles] - machine->cpu配列を使ってCPUをループするコードについて、型ベースのデバイスリストを使 用するようにクリーンアップ。[Aaron Giles] - device_configからstart/stop/reset/nvram関数を削除。必要に応じて取得するため。 [Aaron Giles] - 汎用のinterrupt_enableコードについて、CPU番号からCPUデバイスで動作するように更新。 [Aaron Giles] - devtag_*関数を、並列実装から、マクロを使ったdevice_*関数のマッピングに変更。 [Aaron Giles] - cpuintrf_init()が不要になったので削除。[Aaron Giles] - システムのAPIの多くで、running_machine、address_space、または、device_config型を受 けられるように変更。これによりglobal Machine変数を直接参照するものはなくなり、この 変数を削除しました。[Atari Ace, Aaron Giles] - デバイス"オーナー"のコンセプトを導入。他のデバイスに保有されているデバイス用。 [Aaron Giles] - レーザーディスクプレーヤについて、グローバルデバイスステートをオーナを通じて逆引き するように変更。これまでは、最初のインスタンスを探してそれを正しいものとしていまし た。[Aaron Giles] -「ファイナライザー」の更新: [poUzVdb90] - タイルマップにコンバート - 画面反転追加n - サウンドチップ名をSN76496からSN76489Aに変更 - クロックをデバイスネイティブにするコンセプトを導入。クロックはデバイスの追加時に指 定され、device_configのdevice->clockで直接利用できます。クロックを持つ全デバイスを デバイス追加時に指定するように更新しました。この作業に伴い、設定を簡単にするために デバイス専用の_ADDマクロと_REMOVEマクロを追加しました。[Aaron Giles] - 汎用のデバイス実行関数コールバックを定義。ただしまだ未使用です。計画では、実行コー ルバックを持つデバイスはCPUと一緒にスケジューリングする予定です。CPUはデバイスになっ たので、そのスケジューリングもこのロジックにいずれ移行していきます。[Aaron Giles] - 様々なNVRAMデバイスについて、デフォルトのメモリ領域を設定で指定するのから、 device->regionより取得するように変更。[Aaron Giles] - デバイスの起動をDRIVER_INITの呼び出し*前*に移動。これにより、正しく割り当て済みのデ バイスをDRIVER_INITで設定可能です。いまのところの悪影響は出ていませんが、もしかした ら何かがおかしくなってるかもしれないので注意して下さい。[Aaron Giles] - デバイスの反復処理ロジックについて、指定した型やクラスのデバイス全体をより効率良く 処理するため、typenextフィールドと新しく追加したclassnextフィールドを使うように書き 直し。[Aaron Giles] - stream_update_funcコールバックの引数を変更。この作業のひとつとして、全てのコールバッ クをSTREAM_UPDATEにマクロ化して、サウンドデバイスを引数に追加。[Atari Ace] - i86/i286/i386/nec/v30mzヘッダのクリーンアップ: [Aaron Giles] * i86.hをi86priv.hに改名 * i86intrf.hをi86.hに改名 * i88intrf.h、i186intf.h、i188intf.hなどをi86.hに統合 - その他多くのCPUヘッダでも、メモリリード、ライトマクロを外部へ移動してクリーンアップ。 これらは、CPUコアに対してプライベートとした方がよいです。[Aaron Giles] - CPU_INIT関数から、indexとclock引数を削除。[Aaron Giles] - PIC8259の更新: [Wilbert Pol] - エッジトリガな割り込み操作を修正 - IRQが確認されているときはINT出力ラインをクリア - 基本的なOCW3機能を実装 - boobhackのPROMを修正。[robiza] -「Virtual Combat」ドライバのグラフィックを一部デコードとRAMのセットアップ。  [Andrew Gardner] - 文字列を扱うときのデバイスとサウンドのインターフェイスを、CPUインターフェイスに合わ せてクリーンアップ。これは、get_info関数がconst char *を割り当てる代わりに、一時文 字列を割り当て、対象のデバイスがその文字列を対象にコピーするものです。全てのデバイ スとサウンドコアでこの方法を使って操作するよう更新しました。[Aaron Giles] - cpu_state_tableのコンセプトを導入。これはCPUコアによって提供され、デバッガやその他 のサブシステムからアクセスできる全てのレジスタステートを保持します。テーブルのフォー マットは、表示用の共通フォーマットを含めて、CPUとの関わりをこれ以上必要とせず、メモ リからシンプルに取得できる形です。これはカスタム表示や、より複雑な内部変数へのデー タ出力や入力などの拡張ができます。ADSP21xx、TMS340x0、i86、Z80、Z180、8085でこれを 使うように更新しました。[Aaron Giles] - デバッガの古いレジスタリストを削除。結局使用されませんでした。これは、 cpu_state_tableからのオーダリングに置き換えています。[Aaron Giles] - REG_PCをREG_GENPCに、REG_SPをREG_GENSPに、REG_PREVIOUSPCをREG_GENPCBASEにそれぞれ改 名。これらを直接使用していた箇所を更新。これらの定義場所をレジスタエリアの終わりに 移動。[Aaron Giles] - 更にクリーンアップ。バス幅用のアドレス空間専用定数と、シフトCPUインターフェイス定数を 追加。全てのコアで使用するよう更新。[Aaron Giles] - ADSP21xxコアについて、set_infoを使ってシリアルポート用コールバックを指定する方法か ら、設定構造体を使えるように変更。ADSP21xxの情報取得、設定部をかなりシンプル化。チッ プの派生版を一部削除。これらは完全サポートか、完全未サポートのどちらかになりました。 [Aaron Giles] - メモリビューの修正: [Aaron Giles] * アドレス空間がフル32ビットのとき、合計サイズが間違って計算されていたのを修正 * *sのつく未マップメモリ表示を改良 * ディスクとゼロ長領域を列挙しないように設定 - arkgcblにPAL追加。[robiza] -「雀豪」ドライバに「カントリーガール」追加。音付きで動作: [David Haywood, Angelo Salese] -「雀豪」ドライバの透過ペンを修正(GAME_IMPERFECT_GRAPHICSを削除); [Angelo Salese] -「雀豪レディ」RNGにハック追加。いずれ動作するかも。[Angelo Salese] - Amigaコードにrunning_machineコールバック追加。[Nathan Woods] - sscope2のROMを新しい物に更新。[robiza] - f3853コールバックにrunning_machine引数追加。[Wilbert Pol] - SIDインターフェイスのコールバックにrunning_machine引数追加。[Wilbert Pol] - MDRV_INTERLEAVE(x)を削除。これは最小の動作スケジュール間隔をフレーム単位で指定する ためのものでした(現在はマルチスクリーンやリフレッシュレートが変更できるのであいまい な方法です)。新しく、MDRV_QUANTUM_TIME(x)で置き換えました。これは、最小スケジュール 間隔を時間で指定します。時間は、HZ(x)、NSEC(x)、USEC(x)などで指定できます。全ての ドライバでフレームレートを60としてこの関数に切り替えました(この数値は完全ではありま せんが、ほとんどのケースで動作します)。[Aaron Giles] - MDRV_WATCHDOG_INIT_TIME(x)で、引数の先頭に自動でUINT64_ATTOTIME_IN_を付けるように変 更。これにより、マクロの間違った使い方を無くし、MDRV_QUANTUM_TIME()と同じやり方に合 わせます。呼び出し元を全て更新。[Aaron Giles] - 新しくMDRV_QUANTUM_PERFECT_CPU(x)を追加。これは、指定したCPUが単一の命令の完了に必 要十分な最低量を指定するもので、共有メモリを持つマルチCPUドライバで、"完全な"同期が 必要であること明示するために使用します。今のところテストとしてarknoid2で有効にして います(ただし、このドライバでは既に完璧に近いインターリーブが設定されています)。 [Aaron Giles] - goldstar.cドライバでの色の問題を修正。[David Haywood] - goldstarとlucky8ドライバを統合。[David Haywood] - ddragon3/shadfrce/wwfsstar/wwfwfestの改良: [Mamesick] - タイマを使用した完全スキャンラインベースにドライバをコンバート - ドライバを新型ビデオ画面RAWパラメータに更新 - 割り込みの実装 (ddragon3、wwfwfest) -「アグレス」のタイトル画面修正。[David VanVoorhis] - dsp56kとpolygonetのupdate_handlerを修正。[Andrew Gardner] - dmndrby.cドライバを改良。[Mike Green] - Motorola DSP56k CPUコアの書き直し中。[Andrew Gardner] * 多くの命令でのフラグ演算と符号拡張を修正 * rnd、mpysuuu、dmac命令を修正 * エンプティループをスキップするようにループ動作を修正 * スタックアンダーフロー例外処理を追加 - skylncr.cドライバの改良: [Roberto Fresca, David Haywood] - リールサポートをゼロから追加 - 完全な入力、出力、DIPスイッチを追加 - 新しいゲーム追加 - テクニカルノート、ゲーム情報を更新 - 8080/8085の割り込み処理をつじつまが合うように書き直し。configでコールバックを指定す るように変更。コアをcpu_state_tableにコンバート。両コアに対してひとつのHAS_808X定義 に変更。変な方法で8080/8085割り込みを使っていたドライバを修正。[Aaron Giles] - warpwarpドライバで、RAWビデオパラメータを取るようにコンバート。[Aaron Giles] - デバッガで、シフトしたアドレス空間を持つCPUを処理するときの'run to cursor'と 'toggle breakpoint'操作を修正。[Andrew Gardner] - goldstar.cドライバを改良: [Roberto Fresca] - chryigldとnbc3にPPI 8255デバイスを3つ実装 - chryigldとncb3の入力をPPI 8255の接続をベースにして再構成 - chryigldとncb3に未実装だったPSGサウンドを追加 - machineドライバの更新 - クリーンアップ少々 新規サポート、またはNOT_WORKINGが取れたゲーム --------------------------------------------- Country Girl [David Haywood, Angelo Salese] 4人打ち麻雀 ジャントツ [David Haywood, Angelo Salese] Three Ds - Three Dealers Casino House [David Haywood, Angelo Salese] Sky Lancer (Bordun, ver.U450C) [Roberto Fresca, David Haywood] Butterfly Video Game (ver.U350C) [Roberto Fresca, David Haywood] Mad Zoo (ver.U450C) [Roberto Fresca, David Haywood] Casino Winner [Chris Hardy, Angelo Salese] Cherry I Gold (bootleg of Golden Star) [Roberto Fresca] 新規クローンセット ------------------ Jolly Card (italian, encrypted bootleg) [Roberto Fresca] ダブルドラゴン3 - ザ・ロゼッタストーン (プロトタイプ) [Guru] 追加された未動作ゲーム ---------------------- Grand Prix 98 [David Haywood] Leader [Roberto Fresca, David Haywood] Parent Jack [David Haywood] Janshi [David Haywood] Cherry Master I (v1.01) [Roberto Fresca, David Haywood]