September 27, 2010

DVD時代に生きるMSX2

KaleさんWIP更新です。この前LD時代の麻雀のシリーズがありすぎねという話をされていましたが、WIPにDVD花札と麻雀が出ています。この世代なのに使っているビデオチップがMSX2のV9958というのが、このゲームの性格をよく表しているような、いないような…。 Kale's MAME WIP: Doing Versatile Damaging
September 19, 2010

0.139u3出た

0.139u3用の差分ソースが出ました。コードのメンテやカジノゲームの大量追加に埋もれてますが、おもしろい更新もいろいろ混ざっています。
0.139u3
-------


MAMETestersの修正バグ
---------------------
- 04030: [その他] All sets in taito_f3.c, taito_z.c, kaneko16.c, konamigq.c, 
         overdriv.c: いろいろな場面で"16-bit EEPROM set with 8-bit data"というメッ
         セージが出る。(Aaron Giles)
- 04034: [クラッシュ/フリーズ] All sets in viper.c: [デバッグ限定] アサート発生。
         (Aaron Giles)
- 01993: [グラフィック] stmblade: 3面の最初で、画面左側にグラフィック不具合が現
         れる。(robiza)
- 04050: [グラフィック] twineag2: 画面切替時のエフェクトがかかっていない。
         (robiza)
- 04044: [グラフィック] batsugun and clones: [バグかもね] 単体VDPでの描画にまだ
         不具合がある。面クリア時の集計画面などで。(David Haywood)
- 00945: [グラフィック] bkraidu: DIP設定で画面反転を有効にすると、テキストレイヤー
         が3つに分割されて表示される。(robiza)
- 00944: [グラフィック] ghox: エンディングシーンでグラフィック不具合あり。
         (robiza)
- 03952: [グラフィック] gaiden, wildfang, raiga: 画面反転を有効にすると、下側に
         32ピクセルずれる。(robiza)
- 04036: [グラフィック] astrowar: [デバッグ限定] グラフィックが化けている。
         (Fabio Priuli)
- 04035: [クラッシュ/フリーズ] All sets in chihiro.c: OK画面の前にアサート発生。
         (Fabio Priuli)


ソースの変更点
--------------
- mc6845.c: カウンタレジスタでミッドフレームでの変更ができるよう書き直し。これに
  より、ドライバが標準のmc6845を使って高度な画面分割やスクロールエフェクトを行え
  ます。[Wilbert Pol]

- MACHINE_DRIVER_*マクロを以下のように変更: [Aaron Giles]

  1. MACHINE_DRIVER_*をオブジェクトの実際の記述名に合わせMACHINE_CONFIG_*に改名。
     接頭辞MDRV_*はいずれ一括更新するかもしれませんが、今のところはまだです

  2. MACHINE_CONFIG_START()が、driver_data_tの派生クラスを第2引数としてとるよう
     になりました。つまり、MDRV_DRIVER_DATA()が不要になったということです。また、
     各"root"マシン設定は、ドライバデータクラス(または、ドライバがまだドライバデー
     タを使うほどまで更新されていないときはdriver_data_t自体)を*確実に*設定しな
     ければいけません
 
  3. 新MACHINE_CONFIG_DERIVED()マクロ追加。これは、他のmachine_configを継承する
     machine_configを定義します。MACHINE_DRIVER_START()/MDRV_IMPORT_FROM()の典型
     的な組み合わせを置き換えます

  4. 新MACHINE_CONFIG_FRAGMENT()マクロ追加。これは他の"root"なmachine_configで
     インクルードすることだけができる部分的なmachine_configを定義します。また、
     デバイスの一部として指定可能なmachine_configsとしても使えます

  5. MDRV_IMPORT_FROM()を、実際の動作を正しく表すMDRV_FRAGMENT_ADD()に改名

  6. 上記3マクロが正しく使われいるかを確実にするためアサートを追加

- 全てのマシンドライバで新マクロを使うように更新。一部の手修正により、99%は検索
  &置換で処理。[Aaron Giles]

- timer.c: イネーブルステートが変更されたときだけタイマを再スケジュール。
  [Christophe Jaillet]

- bfm_dm01の改良: ドットマトリックスディスプレイ用の表示ハックを、より正確なアー
  トワークベースのものに置き換え。BFM_DM01のクロックデータは1度に1バイトずつであ
  り、新型のドットマトリックスレンダオブジェクトは、各バイトによる8ドットを表現
  します。[AGEMAME]

- aristmk4.c:
 * topgear用にCashcadeの対策 [Frasher]
 * メモリハンドラを一部改良 [Palindrome]

- driver_dataオブジェクトをデバイスに変更。driver_data_tクラスを新しく
  driver_deviceクラスに置き換え。これは、全driver_dataオブジェクトの基底オブジェ
  クトとなります。新しいドライバデバイスは、デバイスリストの最初に追加され、
  "root"タグが付けられます;その他のデバイスは、ドライバデバイスの所有となります。
  [Aaron Giles]

- コアコールバック(machine_start/_reset, sound_start/_reset, 
  video_start/_reset/_eof/_update, and palette_init)をこれら新デバイスのデバイス
  設定パラメータに移動。driver_deviceベースクラスがdevice_start()を以下の順でオー
  バーライドし、その他全てのデバイスが開始を確定してから呼び出しを行います:

  1. DRIVER_INIT 関数 - ゲームドライバから
  2. palette_init() - デフォルトでMDRV_PALETTE_INIT関数を呼び出し
  3. driver_start() - 新規
  4. machine_start() - デフォルトで、MDRV_MACHINE_START関数を呼び出し
  5. sound_start() - デフォルトで、MDRV_SOUND_START関数を呼び出し
  6. video_start() - デフォルトで、MDRV_VIDEO_START関数を呼び出し

  同様に、driver_deviceクラスはdevice_reset()をオーバーライドし、その後以下の順
  でメソッドを呼び出します:

   driver_reset() - 新規
   machine_reset() - デフォルトで、MDRV_MACHINE_RESET関数を呼び出し
   sound_reset() - デフォルトで、MDRV_SOUND_RESET関数を呼び出し
   video_reset() - デフォルトで、MDRV_VIDEO_RESET関数を呼び出し

  この変更に伴い、初期化順序を少し変更しています。タイルマップ、ビデオ、サウンド、
  デバッグシステムは、デバイススタートの前に初期化されるようになりました。また、
  DRIVER_INIT、PALETTE_INIT、MACHINE_START、SOUND_START、VIDEO_STARTへのユーザコー
  ルバックは全てバックトゥバックで呼び出されます。ただし、最終的な影響は同じよう
  なものとなるはずです。[Aaron Giles]

- device_t::subtagについて、デバイスが'root'デバイスでない場合接頭辞を付けるだけ
  に変更。これは、既存のタグ検索との互換性を確保するためです。[Aaron Giles]

- デバイスの依存関係が無い場合、スタートアップ側でデバイスの順序付けをするよう変
  更。これにより、スタート関数とリセット関数の呼び出し順序が同じになります。
  [Aaron Giles]

- サウンドデバイス名から、SOUND_の接頭辞を削除。[Atari Ace]

- 以下をdriver_dataにコンバート: [Atari Ace]
  sauro, scotrsht, segald, seicross, senjyo, shangha3, shaolins, shisen, 
  skyraid, solomon, spcforce, speekatk, splash, sprcros2, ssozumo, suna16, suna8

- 複数ソースドライバの残りついて、全てにインクルードファイルを追加。[Atari Ace]

- 頭文字Aまでのドライバの入力重複のチェックと修正。[Tafoid]

- driver_deviceについて、デバイスインタフェース経由でgame_driverのROMを参照でき
  るように変更。これにより、全てのROMがデバイス経由で暴露されているので、ROMの列
  挙処理がシンプルになります。[Aaron Giles]

- machine_configオブジェクトを一時的に割り当てている全てのインスタンスについて、
  単純にスタックとするよう変更。これによりデストラクタがクリーンアップを自動で行
  うことができます。[Aaron Giles]

- machine_configコンストラクタがgame_driverを取るように変更。ここから
  machine_configコンストラクタが取得されます。つまり、machine_configが、
  game_driverを保持するようになりました。[Aaron Giles]

- running_machineコンストラクタがgame_driverを取らないよう変更。game_driverが
  machine_configから取得できるようになったため。[Aaron Giles]

- 新しいテンプレートクラス、optional_device<>とrequired_device<>を追加。クラス内
  でデバイスポインタを宣言するのに使用します。2つの唯一の違いは、デバイスが不明
  の場合に致命的エラーが必要かどうかです。これら新クラスは"パススルー"なので、
  標準的なデバイスポインタが動作するところならどこでも基底ポインタを渡すことが
  できます。[Aaron Giles]

- 旧版のGCC(OS X PowerPCを含む)でのコンパイルを修正。[Aaron Giles]

- 共有メモリ領域でそのサイズをトラックするよう変更。memory_get_shared()関数で
  共有領域へのポインタ、オプションでそのサイズを取得できます。[Aaron Giles]

- pipeline (pipeline.c) [stephh] :
 * DIPスイッチと入力の修正(Z80コード検証による)

- テンプレートrequired_shared_ptr<>とoptional_shared_ptr<>を追加。これらは、
  AM_SHARE("tag")となるアドレス空間からtagによりポインタを取得する場合の、
  required_device<>とoptional_device<>のような動作をします。また、AM_SHARE領域の
  サイズを取得するテンプレート、required_shared_size<>とoptional_shared_size<>も
  追加。[Aaron Giles]

- 新しい汎用NVRAMデバイスを作成。デフォルトで0フィル、1フィル、ランダムフィル、
  カスタムフィルに設定可能。どの場合でも同名のメモリ領域がデフォルトフィルをオー
  バーライドできます。NVRAMがあるアドレス領域は、NVRAMデバイスと同じタグを持つ
  AM_SHARE()領域として判別できます。また、ドライバはnvram_device::set_base()を
  使用し、NVRAM領域の独立した割り当てを明示的に設定できます。[Aaron Giles]

- MDRV_NVRAM_HANDLER(generic_*)の全インスタンスをMDRV_NVRAM_ADD_*("nvram")に置き
  換え。また、AM_BASE_GENERIC/AM_SIZE_GENERIC(nvram)をAM_SHARE("nvram")に置き換
  え。generic.nvramを直接参照している残りのドライバは全て、代わりとしてドライバ
  ステート内にNVRAMに対するrequired_shared_ptr<UINTx>を保持し、それを使用します。
  generic_ptrsよりnvramとnvram_sizeを削除しました。[Aaron Giles]

- デバッガ側ではなく、各デバイスがそれぞれのdevice_debugを生成するように変更。こ
  れにより、デバッガ側の処理をは把握する前でもデバイスを開始できます。私が初期化
  順を入れ替えてから、シンボルテーブルにレジスタ名が正しく登録されていなかった問
  題が修正されます。[Aaron Giles]

- multfish.c: 新しい情報、新セット、新しい海賊版の追加。[MetalliC]

-「Jubilee's Double-Up Poker」用新ドライバ追加。グラフィックと色のデコードは正確。
  正しいTMS9980 CPUを実装、予備的なメモリマップとテクニカルノート追加。
  [Roberto Fresca]

- debugcpu.cにコメントを集約し、debugcmt.cを削除。コードのモダン化と、モダンデバッ
  グクラスで動作するように更新。[Aaron Giles]

- 非モダンアドレスマップ用にAM_DEVREAD_MODERN/AM_DEVWRITE_MODERNなどのマクロを追
  加。メンバ関数移行を進めるため、旧スタイルのリードライトハンドラを使わないよう
  に更新するものです。[Aaron Giles]

- アドレスマップのokim6295_r/okim6295_w参照をモダンメンバの呼び出しに変更。
  [Aaron Giles]

- quizpani (quizpani.c) [stephh] :
 * DIPスイッチと入力の修正(M68000コード検証による)

- namcops2のDVDをラベルに合わせて改名。[Guru]

- okim6295_deviceにread_status()とwrite_command()メソッドを追加。リードハンドラ
  やライトハンドラ外の場合に対応(こういうときにフェイクのアドレス空間を渡すのは
  どうもよいやり方ではなかったので)。[Aaron Giles]

- DEVCB_DEVICE_MEMBER()マクロ追加。デバイスコールバックでREAD8_MEMBERか
  WRITE8_MEMBERの指定ができます(動的生成トランポリン経由)。[Aaron Giles]

- okim6295_r/okim6295_wの残り部分もすべて新メソッドへの呼び出しに置き換えて、
  static関数を削除。[Aaron Giles]

- namcops2:「ガンダム連合vs.Z.A.F.T」のドングルダンプ追加。[Guru]

- 頭文字Cまでのドライバの入力重複のチェックと修正。[Tafoid]

- PC Engine VDCエミュレーションのスプライトOVフラグの動作を修正。
  [Angelo Salese, Charles MacDonald]

- 頭文字Gまでのドライバの入力重複のチェックと修正。[Tafoid]

- ASAP CPUコアをレガシーCPUコアからモダンデバイスにコンバート。[Aaron Giles]

- m_icountのデバイス値名とかぶらないよう、device_execute_interface::m_icountを、
  m_icountptrに改名。[Aaron Giles]

- Hu6280 CPUのタイマラッチ分割値読み込みによる偽のバグを修正。[Angelo Salese]

- [SSV] 表示領域のレジスタを実装; 全ゲームの解像度は最大の表示領域(ブートプロセ
  ス後のレジスタ値)になっています。[Robert Zandona']

- PC EngineエミュレーションでVRAM→VRAM DMAフラグクリアがされていなかったのを
  修正。[Angelo Salese]

- strnskil.c: bandamのMCUダンプ追加。[Pete Ogoun, Andrew Gardner]

- 非スピーカーデバイス用のサウンドルーチンをインタフェースのスタートメソッド後に
  移動。sound_init()がデバイススタートアップの前に移動されたときは、一つのサウン
  ドデバイスから他のサウンドデバイスへのルーティングが壊れていました。
  [Aaron Giles]

- starwarsよりNVRAMの痕跡を削除。現在はx2212デバイスでカバーされています。
  [Aaron Giles]

- CHDMAN: スペックよりbin/cueのサポートを書き直し。より多くのイメージが動作可能。
  [R. Belmont]

- generic.videoramとgeneric.videoram_sizeを削除。これらのgenericはコアではもう使
  用されておらず、ドライバ用の利便のために残ってました。現在はドライバでデバイスを
  持つ必要があるので、データはそこで持つことになります。[Atari Ace]

- Aristocrat MK-5で正しいSRAM処理をするよう更新。[Palindrome]

- Aristocrat MK-5でI2Cを使っていたのを削除。[Angelo Salese]

- 共通基準のベンチマーク用に-bench <emulated-seconds>オプションを追加。
  [Aaron Giles]

- 親デバイスから派生するデバイスの定義をシンプルするためのマクロ、
  DECLARE/DEFINE_TRIVIAL_DERIVED_DEVICEを追加。ただし、違いは名前と引数が一つ。
  [Aaron Giles]

- ADSP21xxコアをモダンCPUデバイスにコンバート。[Aaron Giles]

- Windowsで、デバッガがアタッチされていないとosd_break_into_debugger()はスタック
  クロールをはき出します。つまり、デバッグが容易になるよう、アサートがフルのクロー
  ルになるということです。[Aaron Giles]

- lelandのNVRAM_HANDLERをNVRAMデバイスに置き換え。[Aaron Giles]

- ssv:
 * Yタイルマップオフセットレジスタを実装; (Roberto Zandona')
 * X、Y表示領域レジスタを実装; (Roberto Zandona')
 * mode=0のときタイルマップ描画を停止; (Roberto Zandona')
 *「ツインイーグルII」基板で表示領域レジスタを検証; 
   (Corrado Tomaselli)

- namcos2とNichibutsu麻雀ゲームでの冗長なNVRAMハンドラをNVRAMデバイスに置き換え。
  Atariゲームにも同様の変更をし、ハードコーディングしていたEEPROMデータをついに
  外部ファイルに移動。[Aaron Giles]

- ssgbl.cをmegadrvb.cに統合し、海賊版の入力定義をmegadriv.cから別ファイルに移動。
  [Sonikos]

- mc146818のデバイス化とモダン化。またドライバがマニュアルでセーブ要求しなくても
  いいようにNVRAMインタフェース追加。[Aaron Giles]

- [DECLARE_]READ_LINE_MEMBERと[DECLARE_]WRITE_LINE_MEMBERの定義追加。これにより、
  リード・ライトラインコールバックがメンバ関数として定義可能。[Aaron Giles]

- これらがデバイスコールバックから参照できるよう、スタブと
  DEVCB_DEVICE_LINE_MEMBERを追加。[Aaron Giles]

- 6522 VIAデバイスのモダン化: [Aaron Giles]
 * 新型デバイスタイマメカニズム使用
 * モダンメソッドへの移行のため、旧トランポリン関数をすべて削除

- ssv: スプライトのXオフセット用対策の削除と、7a-7bレジスタの1ビットを実装。
  [Roberto Zandona']

- ssv: [Roberto Zandona']
 * Yスプライト逆CRTレジスタを改良;
 * dynagear用の対策を追加
 * スプライトのXオフセットを得るためのCRTレジスタを使用 

- ssv: initよりオフセット値を削除; オフセットはCRTレジスタ側で処理。
  [Roberto Zandona']

- ssv: 7a-7b CRTレジスタのビット #aを修正。[Roberto Zandona']

- intelfshをデバイスに変換。使用元をすべて更新。[Aaron Giles]

- ssv: 背景無効化条件を修正。[Roberto Zandona']

- 新ビルドツールmakedep.c。src2html.cを元に作成(マジで!)。基本的な依存関係チェッ
  クとエクスクルードパスをサポート。[Aaron Giles]

- MAKEFILEでdepend targetをサポート。src/$(TARGET)でmekedepを走らせ、依存関係を
  形成します。これは、わざとsrc/emuのルートとosdディレクトリを外し、依存ファイルを
  適切なサイズに保ちます。そのため、コアヘッダファイルを変更したときは、クリーン
  アップと全部のビルドが必要です。[Aaron Giles]

- CHDMAN: -extracted bin/cue出力とエラー処理を改良。[R. Belmont]

- intelfshデバイスに、デバッガとスタンダードメモリインタフェースでデータのアクセ
  スと閲覧ができるようなメモリインタフェースを追加。データの直接読み込みと書き込
  みを行う新関数、read_raw()/write_raw()へ移行するため、以前のmemory()メソッドは
  削除。[Aaron Giles]

- CPS3のCDなしセットで、初期化時にintelfshデバイスにより自動でロードされるフラッ
  シュの各部分に分割。また、MACHINE_CONFIGを各ゲームに実際に存在しているSIMMの数
  だけに分割。ドキュメントはファイルの先頭にあり。また、NVRAM_HANDLERをNVRAMデバ
  イスに置き換え。[Aaron Giles]

- CHDMAN: bin/cueイメージで.WAVトラックをサポート。[R. Belmont]

- neogeo.c: 更新いろいろ: [Johnboy]
 * viewpoint - vのROM名を正しいチップラベルに改名
 * ghostlop - ROM名をプロトタイプの命名規則に合うよう改名
 * savagere, kizuna - 正しいc1を追加
 * crsword -  MVS AND AES VERSIONのタグ付け。m1を訂正
 * legendos - 正しいm1追加

-「トリプルパンチ / Knock Out !!」のAY-3-8910クロックが間違っていたので、実機で
  確認して修正。[plgDavid]

-「クイズ チャンネルクエスチョン」のクロックとOKI PINを実機で検証。[plgDavid]

- デバイスタイマにインテグラルなdevice_timer_idを追加。これにより、ポインタより
  も複数タイマの区別が簡潔になります。この値はタイマにも保持されています。一部の
  ドライバでこの機能を使うように更新しました。[Aaron Giles]

- 新関数device_timer_call_after_resynch()追加。これは、ゼロ長のタイマを一時的
  に作成し、指定したdevice_timer_idでデバイスのdevice_timer()からコールバックを
  行います。[Aaron Giles]

- MSM5205の周波数を動的に変更する機能追加。[Angelo Salese]

- CD-DAの音量設定追加。[Angelo Salese]



新規追加、またはNOT_WORKING状態から昇格したゲーム
-------------------------------------------------
Shinobi / FZ-2006 (Korean System 16 bootleg) 
  (ISG Selection Master Type 2006) [Angelo Salese]
Poker Master (Tony-Poker V3.A, hack?)
  [David Haywood, William Ostronic]



新しく追加されたクローンセット
------------------------------
Vigilante (World, set 2) [porchy]
セガラリーチャンピオンシップ (Revision B) [Alex's Blog]
Touchmaster 2000 Plus (v4.63 Standard)
  [Brian Troha, The Dumping Union]
Touchmaster 4000 (v6.01 Standard) [Brian Troha, The Dumping Union]



追加された未動作ゲーム
----------------------
Jubilee Double-Up Poker [Roberto Fresca]
Piccolo Poker [Roberto Fresca, Team Europe & Housi]
クライシスゾーン (CSZO2 Ver. A) [Guru]
ソウルキャリバー2 (SC22 Ver. A) [Guru]
White Tiger [Palindrome]
Swiss Poker ('50 SG-.10', V2.5)
  [Roberto Fresca, Tomasz Slanina, Team Europe & Housi]
Movie Card [Roberto Fresca, Team Europe & Housi]
Maximum Speed [Guru]
mamedev.org
August 31, 2010

0.139u2出た

0.139u2用の差分ソースが出ました。What's New-Jはかなり長いです。
0.139u2
-------


MAMETestersの修正バグ
---------------------
- 02449: [グラフィック] lethalen: タイル用の反転ビットが見つからない(P2のスター
         ト画面、リロード指示)。
- 04026: [グラフィック] combatscb: タイルマップの再ビルド時に表示不具合がいろい
         ろ出る。(robiza)
- 01215: [クラッシュ/フリーズ] combatscb: 3面でクラッシュする。また、キャラ化け
         も頻発している。「Game Over」画面でもクラッシュが起きる。また、デモ画面
         も何回も繰り返していると落ちることがある。
- 00229: [色/パレット] truxton: タイトル画面の背景は緑色でコインを入れると青色に
         なる。MAMEでは青いままになっている。(robiza)
- 00949: [グラフィック] outzone: 6面の中間付近で、背景の一部が黒い四角になってい
         る。(robiza)
- 03203: [その他] All sets in docastle.c and mrdo.c: サービスモードに入ろうとす
         るとエラーやフリーズ、動作不具合などが起こる。(Phil Bennett)
- 04009: [ステート保存/再生] pacland and clones: ステート読み込みを行うとタイト
         ル画面でのリブート、コインが入らない、音が出ないなどの問題が起こる。
         (Phil Bennett)
- 03858: [グラフィック] batsugun, batsuguna, batsugunsp, dogyuun: タイル間、タイ
         ルとスプライト間のプライオリティ問題がある。(David Haywood)
- 03718: [クラッシュ/フリーズ] shdancer: ステージ2-4でフリーズする。
         (Phil Bennett)
- 03881: [クラッシュ/フリーズ] minefld, rescue, aponow: 起動時にMAMEが固まる。
         (Phil Bennett)
- 03961: [クラッシュ/フリーズ] racedriv and clones: キャリブレーション後、ゲーム
         起動中にリセットを繰り返す。(Phil Bennett)
- 04006: [グラフィック] fixeightb: グラフィック全体がおかしい。(David Haywood)
- 03755: [サウンド] soldivid: ステートをロードするとBGMが鳴らない。
         (Phil Bennett)
- 03820: [ステート保存/再生] batlbubl, bangball: -autosaveを使うとサウンドが変に
         なったり、無くなったりする。(Phil Bennett)
- 04004: [グラフィック] pballoon: 画面が左にずれている。(David Haywood)
- 03986: [DIP/入力] All sets in enigma2.c: ほとんどのDIPスイッチ設定が動作してい
         ない。(Phil Bennett)
- 03730: [ステート保存/再生] parodius: -autosaveやセーブステートを使うとフリーズ
         する。(Phil Bennett)
- 04001: [ステート保存/再生] All sets in mappy.c: ステートを読み込むと音関係がお
         かしくなる。(Phil Bennett)
- 03994: [ステート保存/再生] All sets in dcheese.c: ステートをロードすると音が出
         なくなる。(Phil Bennett)
- 03992: [ステート保存/再生] btoads: ステートを読み込むとグラフィックが大きく乱
         れる。(Phil Bennett)
- 03991: [ステート保存/再生] bigevglf : ステートを読み込むと音がおかしくなる。
         (Phil Bennett)
- 03993: [ステート保存/再生] All sets in crshrace.c: ステートをロードすると音が
         出なくなる。(Phil Bennett)
- 03989: [ステート保存/再生] asterix and clones: セーブステートを読み込むと音が
         出なくなる。(Phil Bennett)
- 03998: [ドキュメント] bmiidx3: ゲーム名が間違っている。(M.A.S.H.)
- 03978: [DIP/入力] cyclshtg, bronx: DIPスイッチに間違いがある。(stephh)
- 03988: [ステート保存/再生] ace: ステートをリロードするとグラフィックがおかしく
         なる。(hap)
- 03996: [クラッシュ/フリーズ] All games in taito_x.c: 起動直後にクラッシュする。
         (Atari Ace)



ソースの変更点
--------------
- Signetics S2636のサウンドをサポート(MESSのVC4000サウンドを使用)。「Malzak」
  「Galaxia」「Astro Wars」のサウンド実装。[Mariusz Wojcieszek]

-「ライデンファイターズ2」(Asia, Metrotainment License)セットのROM名を基板写真を
  元に訂正。[Lord Nightmare, Tormod]

- zac2650.cにS2636サウンドを実装。[Mariusz Wojcieszek]

- seibuspi.c: "FIX"グラフィックロードの修正。全てのプラットフォームで動作させる
  には特定のENDIANが必要かも。新しいアジア版2本が動作可能。[Brian Troha]

- seibuspi.c:「ライデンファイターズJET」(US, Single Board)が初回起動時に正しく起
  動するようデフォルトEEPROM追加。[Brian Troha]

- 非constのグローバル変数をコアから削除。[Atari Ace]

- nycaptor, colt, cyclshtg, bronx (nycaptor.c) [stephh] :
 * DIPスイッチと入力の修正(Z80コードの検証による)

-「Golden Poker」ドライバ: 60Hz/50HzモードのDIP選択を利用すると起こるタイルマッ
  プの問題を修正。[Roberto Fresca]

-「Genie」をサポート。これはVideo Fun Games Ltd.製の古い魔法のランプをテーマにし
  たゲームです: [Roberto Fresca]
 * グラフィックと色のデコード
 * 正確な入力系
 * ディスクリートサウンド
 * デフォルトNVRAMのサポート
 Xtal、CPUクロック、ディスクリートコンポーネントの値は実機でのチェックが必要。

-「Noraut Joker Poker」(Prologic HW)の製造元をVideo Fun Games Ltd.に変更。
  [Roberto Fresca]

- K053260サウンドコアでセーブステートをサポート。[Phil Bennett]

- MSM5232サウンドコアでセーブステートをサポート。[Phil Bennett]

- TLC34076をデバイスにコンバート。[Phil Bennett]

- toaplan2ドライバのクリーンアップとdriver_dataを使う形式にコンバート。
  [Atari Ace]

- topshootをmegadrvbドライバに統合(以前はgenesisb)。[Sonikos]

- Aristocrat Mk-5に即席で作ったビデオルーチンを追加。[Angelo Salese]

- Acorn Archimedes / Aristocrat MK-5: Force IRA/FIRQとタイマーチェックの未定義動
  作を実装。これによりPOST中のCPUチェックが修正。[Angelo Salese]

- Acorn Archimedes / Aristocrat MK-5ハードでI2Cアクセスを実装によりSRAMチェックを
  修正。[Angelo Salese]

- I2Cデバイスにクロックリードバックレジスタ追加。[Angelo Salese]

- Acorn Archimedes / Aristocrat MK-5のサウンドDMAを修正。またドライバでサウンドを
  サポート。[Angelo Salese]

- VLM5030ドライバにICピンアウトを追加。依然として、VCU、RST(リセット以外の動作も
  する)、MTEについてまだデータシートの翻訳が必要。[Lord Nightmare]

- Erotictacハードウェアにサウンドを実装。ただし、メモリ管理が実装されていないの
  で音は出ない。[Angelo Salese]

- Aristocrat MK-5ハードウェアに2KHzタイマー追加。[Angelo Salese]

- 報告されているGCC 4.5の問題修正にチャレンジ。[R. Belmont]

- MEMC処理の致命的なバグ修正と、Aristocrat MK-5のマッピング用対策を削除。
  [Angelo Salese]

- Aristocrat MK-5のビデオエミュレーションを改良。最低機能のVIDC DMA転送、タイミ
  ング、8bppモードを追加。[Angelo Salese]

- YMF278Bコアでセーブステートをサポート。[Phil Bennett]

- Accorn Archimedes/Aristocrat MK-5について、I/OデバイスのR/Wアクセスを書き直し。
  [Angelo Salese]

- SH-2コアに不足していたセーブステートレジストリエントリを追加。[Phil Bennett]

- address_spaceをクラスにコンバートし、ほとんどのメンバをアクセサメソッドより背
  後に移動。space->machineとspace->cpuは除く。
 8le/8be/16le/16be/32le/32be/64le/64beへの外部参照を削除。外部アクセスは全て仮
  想関数read_byte()、read_word()などを使って行います。エンディアンとバス幅の違い
  はmemory.cに移動。また、大小のアドレス空間をサポートするため新しいaxisを追加。
  これにより、18bit未満の空間を高速検索が可能。[Aaron Giles]

- 新しいaddress_spaceクラス内のグローバルなメモリ操作用メソッド追加。古いグロー
  バル関数を使ってるところを置き換え。[Aaron Giles]

- 新モジュールdelegate.hを作成。これはMAME用のC++デリゲートを実装します。詳細に
  ついてはオープニングコメント内にあります。デリゲートにより、あるクラスのメンバ
  関数をコールバックとして使用できます。これにより、ほとんどのコールバックで
  driver_dataフィールドのフェッチを無くすことが期待できます。デリゲートをホスト
  する全てのクラスはbindable_objectから派生しなければいけません。現在、全ての
  デバイスとdriver_dataは、暗黙的にそのベースクラスを経由しています。
  [Aaron Giles]

- アドレスマップのもう一つのマクロセットを追加。"emu.h"のインクルード前に
  #define ADDRESS_MAP_MODERNをすると新マクロが使えるようになり、次のようなプロパ
  ティがあります: [Aaron Giles]
 * ADDRESS_MAP_START: 他のマクロが参照するdriver_dataクラス名を4番目にとります
 * AM_READ/AM_WRITE/など: 最初に指定したdriver_dataクラスからメソッド名を取得す
                          ることを前提にしています
 * AM_READ_LEGACY/AM_WRITE_LEGACY: 昔のグローバルなstatic関数を呼び出すためのマ
                                   クロです
 * AM_BASE/AM_SIZE: driver_dataクラスからメンバ名を取得するのを前提にしています
 * AM_BASE_LEGACY/AM_SIZE_LEGACY: グローバル変数への参照用です

- リードライトハンドラ用のデリゲートを定義。この新デリゲートがaddress_spaceの参
  照として、オフセット、データ、マスクと共に常に渡されます。デリゲートは、
  driver_dataクラスとdeviceクラスのどちらのメソッドも参照できます。アドレスマッ
  プでデリゲートを指定するには、emu.hのインクルード前に
  #define ADDRESS_MAP_MODERNとします。これは、AM_READ/AM_WRITEマクロが
  driver_dataクラスへのメンバ関数ポインタを必要するためです。アドレスマップで指
  定されたデリゲートはオブジェクトを持たない原始的なデリゲートで、対応する
  address_spaceが作成されたときにオブジェクトと結びつけられます。[Aaron Giles]

- machine->m_nonspecific_spaceを追加。これは、アドレス空間が与えられていないよう
  なレガシーケースで、新しいリード・ライトメソッドへaddress_spaceを渡すために必
  要です。将来的には廃止できますが、今のところまだ必要です。[Aaron Giles]

- 新しいaddress_spaceクラスに動的にデリゲートを設定するクラスを追加。この方法で
  はデリゲートを事前にオブジェクトに結びつけておく必要があります。[Aaron Giles]

- 新しいデリゲートの使用例として、beatheadのリードライトハンドラをbeathead_state
  のメンバーに移動しました。この例では、static(address_map経由)とdynamic
  (install_handlerコール経由)の両方のマッピングをデリゲートを使って行っています。
  [Aaron Giles]

- DIRECT_UPDATE_CALLBACK系もデリゲートに変更。全てのユーザ側を新しい関数フォーマッ
  トに合わせて更新。また実装部をクリーンするため、通常の方法で引数を設定する
  direct_read_dataのメソッド追加。全ユーザを更新。[Aaron Giles]

- システム全体で"const address_space"を"address_space"に置き換え。以前にconstを
  つけた目的は直接変更を防ぐためでしたが、private/protectedの方がよいためconstが
  じゃまになりました。[Aaron Giles]

- neodrvr.cの更新: [Johnboy]
 * 以下のセットを改名: sengokh -> sengokuh, fatfursa -> fatfurspa,
                       shocktra -> shocktroa kof99 -> kof99h, kof99a -> kof99
 * wh2jを削除(C-ROMの配置違いのみでデータは同じ)
 * sengoku3に正確なm1を追加
 * 以下のROM_REGION "maincpu"を修正: twinspri, ghostlop, aof2, aof2a, fightfev, 
   fightfeva
 * irrmazeに正確なp1 ROMを追加

- GP9001(toaplan VDPデバイス)でDEVICE_SELFを使うように変更。[David Haywood]

-「3 Bags Full - 5VXFC790 (Victorian)」追加。このセットを親に設定。6つのビットプ
  レーンのうち4つがマッチするため、NZセットと吸い出し不良なグラフィックROMを入れ
  替え。[Roberto Fresca]

- calomega.cドライバの改良: [Roberto Fresca]
 *「Game 24.0」(Gaming Draw Poker, hold)を追加。プレイ可能
 * システム903-905に50/60Hz出力周波数セレクタを追加。ただし、物理的にどういうも
   のかは不明(スイッチ/ジャンパ/ブリッジ?)
 * プログラムROMの徹底的な解析とリバースエンジニアリングの結果、スタートとNMIベ
   クターをcomg080(Arcade Black Jack)に追加。ゲームのスタートが可能になり、正し
   いNMIを出力します
 * comg080 (Arcade Black Jack)の入力系を一から作成
 * ベクターチェックプロテクトの一時的な対応
 * システム毎にランプ回路を改良
 * ゲームリストとテクニカルノートを更新
 * comg080 (Arcade Black Jack)を動作可能ステートに昇格
 * system 906IIIをサポート
 * 正しいメモリマップ、CRTC、PIAマッピング
 * PIAの仮サポート(多重化は未実装)
 * 正確なR65C02 CPUを使用した正しいマシンドライバを追加
 * ハードウェアスペックをドキュメント化
 *「Game 51.08」(CEI Video Poker, Jack or Better)を追加。CEI 906IIIハードウェア
   で動作。ゲームは動作不可

- sm8500 CPUコアの修正。[Robbbert]

- CEI 906 IIIシステムの改良: [Roberto Fresca]
 * 906IIIメモリマップのドキュメントを訂正
 * AY8912をマッピング
 * AY8912の正しいインタフェースを追加。SW2をAY8912ポートに結合
 * PIA0のportAを常時ポール。入力システムの動作解析のためデバッグハンドラを結合
 * PIAのR/Wについてノート追加

- Z80 DART割り込みをコンストラクタ時にクリア。[Curt Coder]

- MESSよりHitachi HCD62121 CPUコアをインポート。[Curt Coder]

- crospang, heuksun, bestri (crospang.c) [stephh] :
 * DIPスイッチの改良(M68000コードの検証による)

- Z80-DARTインタフェースについて、将来的にZ80-SIOの機能を実装できるよう拡張: 
  [Curt Coder]
 * チャンネルB用の別クロック入力を追加
 * 両チャンネル用のSYNC入力と出力を追加

- Toaplan2: Quench氏提供の回路を使ってデュアルVDPのミキシングを実装。まだ動作せ
  ず。[David Haywood]

-「ギャングウォーズ」の正しいグラフィックROM追加。海賊版セットをEuro版の親セット
  に設定し、海賊版のグラフィックROMについてのノートを追加。[David Raingeard]

-「帰ってきたチャンピオンベースボール / Super Champion Baseball」の未エミュレー
  トなプロテクトについてドキュメント化。ゲームにGAME_UNEMULATED_PROTECTIONフラグ
  追加。[Angelo Salese]

- segaic16.c: 定義済みのデバイスとメモリに対する未サポートのリードライトアクセス
  について、不成功のメモリマッピングレジスタアクセスではなく、オープンバスリード
  か未マップライトとして扱うよう更新。[Phil Bennett]

- address_spaceにマスク無し版のread_word/read_dword/read_qwordを追加。また、非整
  列値として読み込みできる非整列変数も追加。コアハンドラを全ケースを扱うテンプレー
  トとして書き直し。全てが正しいか確認するシンプルなユニットテストも同時に追加。
  [Aaron Giles]

- 68k、V60、i86、NECの各コアで不正列でリード・ライトするよう更新。[Aaron Giles]

- ga2の復号化におけるメモリ管理を修正。[Aaron Giles]

-「バツグン」についてToaplan2のVDPミキシングを修正。[David Haywood]

- Toaplan2: タイルリミットハックを削除。VDPのミキシングが正しく行われるようになっ
  たので不要です。[David Haywood]

-「Arabian」Atari版のROMラベルを訂正。[The Dumping Union]

- 内部プロファイラのコードを整理。[Aaron Giles]

-「All American Football」セットの更新: [Phil Bennett]
 * aafb: 不明だった03-28008.u93グラフィックROMを追加
 * aafbb: 24015-02.u59を吸い出し不良に設定し、セットをGAME_NOT_WORKINGに格下げ

- driver_Data_tで以下について仮想関数を宣言:
 * machine_start, machine_reset
 * sound_start, sound_reset
 * palette_init, video_start, video_reset, video_update, video_eof

 デフォルトでの実装は以前同様にマシンコンフィグ関数を経由します。しかし、
  driver_data_tがこれらをオーバーライドするときは、代わりにこれが呼び出されます。
  [Aaron Giles]

- pre_save()とpost_load()にも仮想関数を追加。マシンドライバ専用のプリセーブ、プ
  リロード機能を実装するとき、これまでのセーブステートシステムへのレジスタでは
  なくこれらをオーバーライドして使用できます。[Aaron Giles]

- beatheadで、MACHINE_DRIVER内のコールバックを指定する代わりに、この新型仮想関数を
  使用。[Aaron Giles]

- CPS-1の更新 [Team CPS-1]:
 * 実機と合致するwillowjの正しいROMを追加。以前は親セットのものをコピーして使用
 * knightsjの旧リビジョン版を追加。別ROMを使用
 * kodjの旧リビジョン版を追加。別ROMを使用
 *「ストリートファイターII CE」の新セットを追加
 * kodjのラベル修正と、基板情報の確認
 * qadjのラベル修正と、PAL及び基板情報の追加
 * sf2uaのラベル修正と、基板情報追加
 * マイナーなクリーンアップと修正

- fastlane (fastlane.c) [stephh] :
 * DIPスイッチと入力の修正(HD6309コードの検証による)

- AAエミュレーションのいろいろな問題を修正。これにより現状のerticta.cで「Poizone」
  が理論的には動作可能(まだ有効化してません)。[Angelo Salese]

- firetrap, firetrapj, firetrapbl (firetrap.c) [stephh] :
 * DIPスイッチと入力の修正(Z80コードの検証による)
 * コイン入力で"Coin A"と"Coin B"の設定を正しく反映するよう修正
 * "firetrapj"のMCUシミュレーションを修正(初期化のみが異なっていた)で、ゲームが
   プレイ可能

- Z80DARTの変更: [Curt Coder]
 * SIO専用の定数を追加
 * 同期キャラクタ書き込みレジスタ追加

- Z80: リセット時にIFF1とIFF2を0に設定。[Phil Bennett]

- 7474を新型デバイスに更新。[Harmony]

- 6522を新型デバイスに更新。[Harmony]

- 6532 RIOTを新型デバイスに更新。[Harmony]

- 6821 PIAを新型デバイスに更新。[Harmony]

- 74123を新型デバイスに更新。[Harmony]

- toaplan1/2デバイスをdriver_dataを使うようにコンバート。[Atari Ace]

- listxmlの年度出力を修正(以前は'?'を含むとスキップしていた)。[Fabio Priuli]

- karnov, karnovj, wndrplnt, chelnov, chelnovu, chelnovj (karnov.c) [stephh] :
 * DIPスイッチと入力の修正(M68000コードの検証による)
 * コイン入力で"Coin A"と"Coin B"が正しく動作するように修正

- ドキュメントに基づき、T2パルスのカウントモードでもVIA 6522が割り込みを発生する
  よう更新。[Miodrag Milanovic]

- flytiger: 色修正。[Roberto Zandona', Angelo Salese]

-「Acorn Archimedes」「Aristocrat MK-5」「Erotictac」ドライバのタイマーとIRQクリ
  アを修正。[Angelo Salese]

- mikie, mikiej, mikiehs (mikie.c) [stephh] :
 * DIPスイッチと入力の修正(M6809コードの検証による)

- 6526 CIAを新型デバイスに更新。[Harmony]

- M48T02、M48T35、M48T58、MK48T08を新型デバイスに更新。[Harmony]

- 6255via: シフトモード5(T2制御でのシフトアウト)をサポート。[Miodrag Milanovic]

- mrflea (mrflea.c) [stephh] :
 * DIPスイッチと入力の修正(Z80コードの検証による)

- ertictac / poizoneドライバで共有AAデバイスを使うようコンバート。
  [Angelo Salese]

- デバイスを新スタイルにコンバートするのに必要なコピーとペーストの数を最小にする
  ためマクロセットを追加。[Harmony]

- ACIA 6850を新型デバイスに更新。[Harmony]

- PTM6840を新型デバイスに更新。[Harmony]

- naomi.c: Namco MASK B-F2Xカートリッジについての情報を追加。[f205v]

-「Erotictac / Poizone」のサウンドを改良。[Angelo Salese, Phil Bennett]

- 型安全性を確保するため、MACHINE_DRIVERをトークンからコンストラクタ関数へ逆コン
  バート。レガシーデバイスがまだインラインデータを使っている場合は、デバイスの型
  はチェックされません。新型デバイスは汎用のm_inline_dataにはアクセスしなくなり
  ましたが、その代わりに汎用のdevice_configを特定のdevice configにダウンキャスト
  するdevice configクラス内の静的関数へのコールをマッピングしてから、適切な値を
  設定します。コンストラクタのコードがこれ以上増えないように、これはインラインで
  は行われません。使用例はeeprom/7474/i2cmem/okim6295を参照。[Aaron Giles]

- i8237 DMAを新型デバイスに更新。[Harmony]

- 8255 PPIを新型デバイスに更新。[Harmony]

- Chihiro.cの改良:  [Samuele Zannoli]
 * CPUアドレス空間のトップにあるBIOSのマッピングを修正
 * RAMサイズを128MBに更新
 * SMBus処理を追加でBIOSが動作可能
 * PCIバス上のデバイス用にプレイスホルダを追加
 * デバッガに"jamdis StartAddress,Length"コマンド追加。これはハードウェアの基本
   的な初期化を行うためにBIOSが使用する"jam table"命令を逆アセンブリします

- i8257 DMAを新型デバイスに更新。[Harmony]

- Dallas DS1302 RTCを新型デバイスに更新。[Harmony]

- pachifev (pachifev.c) [stephh] :
 * DIPスイッチと入力の修正(TMS9995コードの検証による)

- Dallas DS2404 RTCを新型デバイスに更新。[Harmony]

- Fairchild F3853 SMIを新型デバイスに更新。[Harmony]

- SNKのいろいろなデイバスをdriver_dataを使うように更新。[Atari Ace]

- i8243 Port Expanderを新型デバイスに更新。[Harmony]

- INS 8154 RAM I/Oデバイスを新型に更新。[Harmony]

- PCIバスデバイスが実ハードのようにツリー型に構成されるよう更新。
  [Samuele Zannoli]

- m6800 - フラグレジスタのbit 7と6の初期ステートを修正(ドキュメントより)。
  [Miodrag Milanovic]

- [toaplan1] タイルマップのミックスを改良(rallybikとdemonwld)。outzoneとvimanaの
  バグが修正。[Robert Zandona']

-「Super Poker」のROMマッピングを修正。セルフテストをパスするため、e2 ROMの吸い
  出し不良フラグを削除。[Mariusz Wojcieszek]

- toaplan1: demonwldのカスタムなビデオアップデートを削除。toaplan1と同じになりま
  した。[Robert Zandona']

- K033906 PCIブリッジデバイスを新型に更新。[Harmony] 

- K056230 LANCデバイスを新型デバイスに更新。[Harmony]

- combatscb: オフセットとプライオリティを修正。[Roberto Zandona']

- lethalen: k053244レジスタを実装。[Roberto Zandona']



新規追加、またはNOT_WORKING状態から昇格したゲーム
-------------------------------------------------
ライデンファイターズ (Asia?, Metrotainment license) [anondumper]
Genie [Roberto Fresca, Ogoun]
どきどきアイドル スターシーカー
  [Hurray Banana, cacis, Team Japump, David Haywood, The Dumping Union]
3 Bags Full - 5VXFC790 (Victorian) [Roberto Fresca, Ogoun]
Cal Omega - Game 8.0 (Arcade Black Jack) [Roberto Fresca]
Cal Omega - Game 24.0 (Gaming Draw Poker, hold) [Roberto Fresca]
ファイヤートラップ (Japan) [stephh]
ロイヤルカード (Nichibutsu) [Roberto Fresca, Tomasz Slanina, Ogoun]



新しく追加されたクローンセット
------------------------------
パイオニアバルーン (Rock-Ola license)
  [gamerfan, Smitdogg, The Dumping Union]
Legion (レジェンドの海賊版) [Team Europe]
Eco Fighters / アルティミットエコロジー (Phoenix Edition)
ナイツ・オブ・ザ・ラウンド - 円卓の騎士- (Japan 911127, B-Board 89625B-1)
  [Layne, john666, Ricky74, ranger_lennier, Smitdogg, The Dumping Union]
ザ・キング・オブ・ドラゴンズ (Japan 910805, B-Board 89625B-1)
  [Kevin Eshbach, takearushfan, M. De Pasquale, Smitdogg, 
   The Dumping Union]
ストリートファイターII' -チャンピオンエディション- (World 920513)
  [john666, Smitdogg, The Dumping Union]
ウィロー (Japan, Japanese)
  [Layne, john666, C. Trutmann, Smitdogg, The Dumping Union]
イーアルカンフー (GX361 conversion) [Team Europe]
Super Poker (Version 10.15S) [anondumper]



追加された未動作ゲーム
----------------------
Olympic Hot Stuff [Ogoun]
Cal Omega - Game 51.08 (CEI Video Poker, Jacks or Better)
  [Roberto Fresca, Dave Ormiston]
Savage Quest [TrevEB]
mamedev.org
August 29, 2010

Toaplan2.cの描画順序

Haze氏ページのtoaplan2.cについての解説が興味深いので採り上げておきます。

Toaplan2ドライバ(GP9001 VDPを使うゲーム)、特にそのプライオリティシステムは常に不具合のあるままでした。2つ前のリリースで、私は数多く残るハックを取り除くため、ドライバを書き直そうと決めました。実は書き直し自体はかなり以前からやってましたが、デュアルVDPを使った新しいコードではバツグンとドギューン!がうまく動作せず提出を見送ってたのです。

問題は、古いコードが全てのレイヤーを複数の手順で描画していた(スプライト描画関数を各プライオリティに対して呼び出すなど)ため、スプライト間のプライオリティのような基本的なものが正常に動作しないというものでした。各ゲームが好き勝手な順序でレイヤーを描画していたので、それぞれに調整が必要になっていたからです。

コードの整理により、これまでVDPの場合分けをしていた箇所を一回の呼び出しで全てのグラフィックを正しい順序で描画するようにできました。ただ、これでは各VDPからの出力をインタリーブするハックが内蔵関数によっておかしくなるため、バツグンとドギューン!の表示不具合が出るのです。バツグンはこれまでも正しく動作したことはないのですが、新コードだと一部の面が完全にプレイできないほどにおかしくなります。

もともと私はこの問題を修正してから提出しようと考えていたため、しばらく放置していたのです。その後、誰か別な人がToaplan2ドライバの「修正」を試みようですが、提出されたものはハック以外の何物でもなく(何面が動いているかを調べ、各レイヤーのプライオリティをさらにハックするもの)、控えめに言っても最悪なものだったため、私自身のコードを提出し、代わりにバツグンとドギューン!を動作不可ステータスに格下げすることにしました。新しいコードはこのドライバの他のゲームについても大幅に整理されているので、これが正しい解決策への基礎になっていくだろうと考えていました。数バージョンの間ゲームがプレイできなくても、このステップは無駄ではないのです。

これらをひとつにまとめるためいろいろ試してみましたが、しばらくの間ドライバは動作しないままでした。その一方で私はVDPのレンダリングコードをさらに整理して、新しいC++デバイスを使うよう全てをコンバートしました。さらに、GP9001をデバイスとして独自ファイルに抽出したのに伴い、2つのVDP出力を混合するPALのようなものが基板上にあるに違いないと考え、プライオリティミキシングを再調査することにしたのです。

最大の問題点は、各VDPの出力内容が不明なことでした。そこで、各VDPの出力を別々の画面に出力したところ、予想通りVDP単体のミキシングはそれぞれ正しいことがはっきりしました。しかし、VDPの出力がプライオリティデータを混合したものか、それともだたの色データだけのかが不明だったので、その後の解析でもデュアルミキシングについては進展がみられず、ほとんどあきらめかけていたのです。

このときQuench氏が大変有用な情報を提供してくれました。彼は、バツグン基板の2つのVDP間にあるPALの等価回路を解析してくれたのです。これによりVDPがプライオリティ情報を外部に出力しておらず、ミキシングは完全にパレットインデックスを元に行われているのが判明しました。

私は彼の回路を直接実装してみました。理論的には動くはずだったものの、実際の出力はぐちゃぐちゃで、ピクセルの位置もばらばらでした。原因は不明でした。1週間ほど時間をおいて原因を探り、少し異なった方法で実装してみても結果は同じでした。

回路は直接動作はしなかったものの、ここである情報が得られたため、この段階で全てが失われたわけではありませんでした。これにより、どのビットがPALに入力されているかが完全にわかったのです。つまり、ミキシング順を決定するのに使われる可能性のあるビットがわかったということです。

次にドライバの再構成に伴って、Quench氏が解析したPALへの入力ビットと同じビットを使うという、私独自の解決法を思いつきました。最初の段階では黒いドットがランダムに残っていましたが、そこはもう一つのVDPを表示させるところだとすぐにわかり、コードを修正したところ正しく動作するようになり、ついにゲームを最初から最後までテストしても、これまで分かっていた問題点が全て解決しているのが確認されました。

このミキシングにはもう一つの利点があって、バツグンの1面でゴミグラフィックを隠すために使っていたタイルナンバーハックを削除できるのです。偶然にも背景の裏側に表示されるようにゴミのパレットインデックスが設定されているからです。

ドギューンはまだ問題があり新コードでは動作しませんが、少しテストを行えば単純なミキシングシステムを使ってるのはほぼ間違いないと思われます。

これにより、バツグンが初めてハック無しで描画され、全ての面で正しく表示されることになりました。コード自体にはまだ最適化の余地があります(デバッグ時にはできるだけ冗長にしておくのです)。

バツグンの次の段階は、V30コアの未実装命令と機能、V35+の機能(レジスタ、バンキングなど)を追加することになるでしょう。いまのところこの作業はAWJ氏さんがされていると思いますが、最近は進展がないようです。これがあれば、完全なサウンドエミュレーションが可能になります。

David Haywood's WIP - Getting Your Priorities Right
August 12, 2010

0.139u1出た

0.139u1用の差分ソースが出ました。What's New-Jは次の通り。
0.139u1
-------


MAMETestersの修正バグ
---------------------
- 03969: [クラッシュ/フリーズ] All sets and drivers using OKI audio: セーブステートを
         使うとクラッシュする。(Aaron Giles)
- 03981: [クラッシュ/フリーズ] bosco, xevious and clones: 起動シーケンスで再起動を繰
         り返す。またはスタートを押した後に固まる。(Alex Jackson)
- 03977: [グラフィック] tceptor2: 上下の通路部分に表示される線が多すぎる。
         (Phil Bennett)
- 03964: [ドキュメント] shangonro: リリース年は1992ではなく1987。また、セット名にroと
         付いているがライドオン筐体版?(Smitdogg)


ソースの変更点
--------------
- raiden2.c:「雷電II」に不足していたVOICE2サンプルROMを追加。基板直づけのマスクROM名を
  修正。[Brian Troha]

-「Southern Systems Joker Poker」: マシンドライバにCPU IPマップを追加。ゲームの起動と
  アトラクトモードまで動作可能。[Roberto Fresca]

-「Mini Boy 7」の改良: [Roberto Fresca]
 * 新しい完全セット追加。またそれを親に設定
 * XTAL周波数の訂正
 * PIA MC6821をマッピング
 * カラーPROMのデコードにチャレンジ
 * AY-3-8910をマッピング。ただし、ポートと確認が必要
 * デバッグとテクニカルノートを追加

- Blitz System Inc.製「Mega Dpuble Poker」用の新ドライバ: [Roberto Fresca]
 * 最初のリリース
 * メモリマップはテスト版
 * 両PIAを実装。ただし、解析とオフセットの確認が必要
 * 正確なグラフィックとカラーデコード
 * メイン基板とドーターボードのレイアウト追加
 * CPU/MCU/ROMアドレッシングの部分的なドキュメントとダイアグラム追加
 * デバッグとテクニカルノートを追加

- Subsino製「Magic Train」追加。これはHD647180X0CP6(Subsino - SS9600)とSS9601、
  SS9602(それぞれビデオとI/O用)で動作しているため、近いうちに新しいドライバに移動する
  必要があるかもしれません。テクニカルノートも追加。[Roberto Fresca]

- mpu4drvr.c: ミッドスクリーンのパレット更新を修正。[David Haywood]

- segas16b.c:「ヘビーウェイトチャンプ」のROMボードについて、ゲームIDのドキュメント化
  とROM名の訂正。[Brian Troha]

- システムを再度型安全化。型チェックが失われてしまう完全なトークン化システムから、
  定義生成を行う関数部分へアドレスマップを配置戻し。アドレスマップクラスを実装するた
  めのaddrmap.cモジュールを追加し、型指定されたaddress_mapクラスとaddress_map_entryク
  ラスのメソッドを呼び出すようマクロを変更。同時に、twincobr.c、lordgun.c、galaxold.c
  での間違ったメモリマップエントリを修正。[Aaron Giles]

- APIをさらにクリーンアップ: [Aaron Giles]
 * クラスの拡張に伴い、cputag_clocks_to_attotime()とcputag_attotime_to_clocks()を削除
 * cputag_suspend()とcputag_resume()についても同様

- ブレークポイントを設定したままだとデバッガ終了時にクラッシュするのを修正。
  [Aaron Giles]

- Konami Polygonetハードウェアで、dsp561xx CPUコアが正確な逆アセンブリを生成するよう
  更新(Motorolaのリファレンス逆アセで検証)。[Andrew Gardner, Stiletto]

- イメージデバイスのエラーハンドリングを修正。[ShimaPong, Miodrag Milanovic]

- 新クラスdriver_data_tを定義。これは全てのdriver_dataの継承元になります。全てのクラ
  ス定義部を新クラスからの継承にし、コンストラクタでこれを呼び出すよう更新。また、
  alloc()シグネチャが、void *からdriver_data_tポインタを返すように変更。
  machine->driver_dataをmachine->m_driver_dataに改名して隠蔽。また、新しいテンプレー
  トメソッドmachine->driver_data<class>を追加。これは、ドライバデータを正しくダウンキャ
  ストしたものを返します。全てのコードは次のように更新しました:

  mydriver_state *state = (mydriver_state *)machine->driver_data;

 が、次のようになります:

  mydriver_state *state = machine->driver_data<mydriver_state>();

- 新しい関数ではデバッグビルドで、実際に正しい型にキャストしているかを動的に検証する
  downcast<>を行います。[Aaron Giles]

- atarigen_stateをベースクラスとして、そこから関連するAtari系ドライバステートを継承
  するように変更。[Aaron Giles]

- gaelco、namco、nileサウンドコアからグローバル変数を削除。[Atari Ace]

- seta.c、seta2.c、ssv.cをdriver_dataにコンバート。[Atari Ace]

- ドキュメントを元にSAA5050を12x20キャラクタ形式に更新。malzakドライバをSAA5050の変更
  に合わせて更新。[Miodrag Milanovic]

- taitotz:「バトルギア2」(2.04J)のHDDイメージ追加。[gtbb08, R. Belmont]

- namcoic.c: tceptor2、finallapなどの道路色を修正。[Phil Bennett]

-「サンダーセプター」の道路部透過表示修正。[Phil Bennett]

- Z80 SIO割り込みをコンストラクト時にクリアすることで、Z80のデイジーチェーン動作と、
  存在しないIEO条件でもストールしないよう修正。[Curt Coder]

- Z80 DMAの変更: [Curt Coder]
 - ENABLE DMAコマンドへのステータスアップデートコールを追加することでDMAを修正
 - MESS側でのtrs80m2の都合により、イリーガルモード0のDMA転送命令を許可
 - 各バイトのレディ条件チェック追加によりレディ信号処理を修正

- Toaplan2 VDPをデバイスに変換開始。[David Haywood]

- dsp56k: 新しい実行エンジンを実装。[Andrew Gardner]

- plygonet.c: driver_dataクラスを使うように更新。[Atari Ace]

- Toaplan2 / GP9001 VDPデバイスをさらに改造。[David Haywood]

- CPS-1の更新: [Team CPS-1]
 * video\cps1.cのゲームテーブルを拡張、または更新
 * 3wondersu、varthのB基板番号を確認
 * ghouls、ghoulsuのラベルを実基板に合わせて修正
 * dynwarjの14.binが吸い出し不良のため削除
 * nemojのnm_23.12bを吸い出し不良に設定
 * knightsjaセットを削除(自爆基板で動作するようにROMを分割&ハックしたもの)
 * ROMの親子関係が無かったものを修正
 * 以前の更新で記述が間違っていたのを修正
 * dynwaru -> dynwara、forgottnua -> forgottnu、forgottnu -> forgottnua、
   wofhfb -> wofhfhに改名(実際の名称はHuo Feng Huang)
 * 一部セットの整理
 * マイナーなクリーンアップ
 * sf2ceuaのラベル修正と、基板情報を追加
 * sfceubのラベル修正と、基板情報を追加、不良なROMをひとつ削除してDumping Unionが正確
   にリダンプしたものに置き換え
 * punisher、punisheruのQ-Soundラベル修正と、D基板のPAL追加

- dsp56k.c: dsp56k cpuコアからグローバル変数を削除。[AtariAce]

- cps1.c: CPS1のB基板チップの情報について、Team Japumpの基板写真を元にドキュメントを
  更新。[Brian Troha]

-「Puzzle Star」(Sang Ho Soft)のメモリバンキングを改良。[Mariusz Wojcieszek]

- term2 (rev. LA4)が、サイバーダイン社の面のオープニングで固まるのを修正。
  [Phil Bennett]

- aladbl.cとssfmd.cをgenesisb.cに統合。[Sonikos]

- video/astrocde.c: astrocade_trigger_lightpen()で生成される可能性のあるタイマ数を制
  限。[ranger_lennier]

- cps1.c: リセールキット用のB基板マッパーを正しく設定。これにより「エリア88」(Japan 
  Resale)のグラフィック欠けが修正。[Brian Troha]



新規追加、またはNOT_WORKING状態から昇格したゲーム
-------------------------------------------------
Pacman - 25th Anniversary Edition (V2.0) [Sara S.]
The Last Starfighter (プロトタイプ) [Phil Bennett, Ken Van Mersbergen]
Air Race (プロトタイプ) [Phil Bennett, Ken Van Mersbergen]



新しく追加されたクローンセット
------------------------------
クラッシュロード (Data East license) [Tirino 73]
Quizard v1.2 [Team Europe, The Dumping Union]
Quizard Rainbow 4.2 [Team Europe, The Dumping Union]
Super Megatouch IV Turnier Version (9255-51-50 ROA, Bi-Lingual ENG/GER version)
  [bodger319, Smitdogg, The Dumping Union]
Megatouch 5 Turnier Version (9255-70-50 RON, Bi-Lingual ENG/GER version)
  [bodger319, Smitdogg, The Dumping Union]
ナイツ・オブ・ザ・ラウンド (Japan 911127, 91634B-2 B-Board)
  [Team Japump, The Dumping Union]
エリア88 (Japan Resale Ver.) [Team Japump]
Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.00) [Mark F.]
Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.03) [Sara S.]



追加された未動作ゲーム
----------------------
Mini Boy 7 (set 1) [Roberto Fresca, Siftware]
Mega Double Poker (conversion kit) [Roberto Fresca, ChrisQC, Smitdogg]
Magic Train [Roberto Fresca]
ガンダムSEED 連合 vs. Z.A.F.T. (SED1 Ver. A) [Guru, Smitdogg]
mamedev.org
August 5, 2010

Pugsy's Cheat更新

Pugsyさんのチートコレクションファイルが0.139版に更新されました。通常はcheat.zipファイルのまま解凍せずに本体と同じところに配置するのでご注意を。 Pugsy's Cheats
August 4, 2010

New list pack for M1

新しいM1用リスト集を更新しました。合計で1012本です。更新内容はこちら。投稿いただいたみなさん、ありがとうございます。

New m1 lst pack is available. Thank you for contribution. Please check the list WIP page for update details. Download

m1.xml更新

Tafoidさんが地道にm1.xmlファイルを更新されています。0.139に合わせてセット名変更などされています。 Download
July 30, 2010

MAME 0.139出た

オフィシャルMAME 0.139がリリースされました。What's Newは次の通り。
0.139
-----


MAMETestersの修正バグ
---------------------
- 03898: [クラッシュ/フリーズ] Atomiswave-based games in naomi.c: 起動プロセス中に固
         まる。(Aaron Giles)
- 03957: [ドキュメント] samsh5sp & clones: リリース年度は2003年ではなく2004年。
- 03318: [クラッシュ/フリーズ] ベクターゲームで-burninオプションを使うとクラッシュす
         る。(Atari Ace)
- 03777: [マルチセッション] a51site4: 内部UIでロードするとハングする (マルチセッ
         ション)。(Atari Ace)



ソースの変更点
--------------
- arm.c: LDRBとSTRB命令でビッグエンディアンをサポート。[Wilbert Pol]

- CPS-1の更新: [Team CPS-1]
 * 残りセットに不足しているPALを参考として追加
 * dynwarのTK24B1.1A吸い出しと追加 [Corrado Tomaselli]
 * forgottnのLW-13/1-D ROMのロードを実基板に合わせて修正
 * 多くの基板の判別、確認、ドキュメント化。ROMラベルと位置、B基板、C基板、CPSB ID情報
   の追加と修正 [Stefan Lindberg, Dlfrsilver, MKL]
 * cps1.cとvideo\cps1.cの全セットをリリース日で並べ替え
 * video\cps1.cのゲームテーブル更新とPALテーブルのメモを追加
 * マイナーなクリーンアップ

- djboy.c: Beast MCUの実装とシミュレーションコードの削除。[Phil Bennett]

- arm.c: ビッグエンディアンモードでの非アラインアドレスからのword読み込み修正。
  [Wilbert Pol]

- skyfox.c:「Sky Fox / エクセライザー」のクロックとVsyncを実際のオシレータ計測値をも
  とに訂正。[Corrado Tomaselli]

- arm.c: arm2/3/6 CPUコアにビッグエンディアンモード追加とリトル・ビッグエンディアン処
  理のクリーンアップ。[Wilbert Pol]

- djboy.c: ドライバのトップの記述を元に、DIPスイッチ配置追加とvsyncを57.5Hzに訂正。
  [Brian Troha]

- mediagx.c: driver_dataを使うようにコンバート。[Atari Ace]

- atrocorp.cのスプライト座標を修正。[Luca Elia]

-「Ameri Darts」のオーディオ再生レートを訂正。これは修正されたTMS32010 CPUコアのサイ
  クルタイミングエラーによって起きていたもの。[Quench]

- Soutthern System & Assembly, Ltd社の「Southern System Joker Poker」(1982)を追加。メ
  モリマップを解析。ハードウェアについてのテクニカルノート追加。[Roberto Fresca]

-「ターミネーター2」LA4セットでムービーが固まるバグのアドレスを修正。[stephh]

- emu/info.c: マージROMについては、クローンの全ての親セットを検索。[Atari Ace]

- HD63701 SLPコードを修正。[Sandro Ronco]

- mpu4.c: MPU4ビデオ用のSCN2674でスプリットスクリーンをサポート。[AGEMAME]

- neodrv.cの更新: [Johnboy]
 * さらに何本かがMVS/AES版と判明。ゲーム名にタグを追加
 * 基板情報の更新
 * bakatono: m1は正確なのでBAD_DUMPフラグを削除。ゲーム名を訂正
 * mahretsu: 正確なs1を追加。ゲーム名の訂正
 * strhoop: 正確なv2を追加
 * sdodgeb: 16Mbitのv1/v2をオリジナルカセットにある32Mbitのv1に置き換え
 * Japan J3 BIOSを追加

- neogeo.cの変更:
 * AESモードと1スロット(MVS/AES)設定についてドキュメント化 [Barry Rodewald]
 * MVS 4スロットと6スロット設定のドキュメント化 [Johnboy]
 * デフォルトを6スロットから1スロットに変更 [Johnboy]

Add notification of orientation of all monitors at startup via the
output system. [Laszlo Schulteisz]



新規追加、またはNOT_WORKING状態から昇格したゲーム
-------------------------------------------------
Speed Drop [Brian Troha, Luca Elia, The Dumping Union]



新しく追加されたクローンセット
------------------------------
ミスティックウォリアーズ -怒りの忍者- (ver AAA)
  [J. Wilke, Smitdogg, The Dumping Union]
AmeriDarts (set 3) [Brian Troha, The Dumping Union]
キャプテンコマンドー (Japan 910928)
  [john666, Dr. Spankenstein, Smitdogg, The Dumping Union]
Forgotten Worlds / ロストワールド (USA, 88621B B-Board)
  [Corrado Tomaselli, The Dumping Union]
ギャラクシーフォースII (Japan, Newer) [Team Japump, The Dumping Union]
クイズ キング・オブ・ファイターズ (韓国用リリース)
Real Bout Fatal Fury Special / リアルバウト餓狼伝説スペシャル (韓国用リリース)
クイズ大捜査線 -The Last Countdown (韓国用リリース)



追加された未動作ゲーム
----------------------
Southern Systems Joker Poker [Roberto Fresca, Siftware]
mamedev.org
July 22, 2010

0.138u4出た

0.138u4用の差分ソースが出ました。What's New-Jは次の通り。最近忙しくて更新がサボり気味ですね。
0.138u4
-------


MAMETestersの修正バグ
---------------------
- 02813: [サウンド] amerdart, amerdart2: ROMが未吸い出しのため、サウンドが出ない。
         (Quench)
- 03606: [マルチセッション] altbeast, aliensyn3: シングルセッション内で
         segas16b.cのゲームを連続して起動するとグラフィックがおかしくなる。
         (Atari Ace)
- 03536: [その他] PowerPC core: PowerPCコアのデータバッファ重複。(Atari Ace)
- 03943: [グラフィック] tknight, wildfang: 実機ではキャラクタがジャンプしたり壁
         を抜けるとき、画面全体が揺れる。(hap)
- 00790: [ドキュメント] armwrest: DIPスイッチ情報。(hap)
- 03938: [クラッシュ/フリーズ] torus: 1面クリア後にMAMEがクラッシュする。
         (Fabio Priuli)
- 03928: [クラッシュ/フリーズ] Many sets: -cheatを有効にするとOut of Memoryのエ
         ラーが出て起動できない。(Aaron Giles)


ソースの変更点
--------------
- SH-2インタプリタを修正。[Atari Ace]

- xmcotah/xmcotahr1のROMを修正。[Razoola]

- i2cmemをC++デバイスに変換と、使っていないレガシーデバイスのお掃除。[smf]

- デバイス単位のイメージソフトリストローディングルーチンを追加。
  [Miodrag Milanovic]

- feofをimage_feofに改名(device_image_interface内)。FreeBSDでのコンパイルを通す
  ため。[El Barto]

- devtag_get_device()を削除; machine->device()を代わりに使ってください。
  [Aaron Giles]

- グローバルなクロックアクセサとcpu_*エイリアスを削除: [Aaron Giles]

   cpu_get_clock == device->unscaled_clock
   cpu_set_clock == device->set_unscaled_clock
   cpu_get_clockscale == device->get_clock_scale 
   cpu_set_clockscale == device->set_clock_scale

- -cheatを有効にすると無効なループ条件になるのを修正。[Aaron Giles]

- 他のソフトウェアリストタイプをサポートする機能追加。フロッピー、カセット、
  CD-ROMが使えます。[Miodrag Milanovic]

- MAMEdev kant spel (Ubuntu/Canonical cares about this) [wallyweek]

- MAMEとツールに*IX man pageを追加。[wallyweek]

- GCC用に、ファイル終端が改行で終わっていないものを整理。[wallyweek]

- ad2083に2つめのボタン追加。これはパワーがたまると次の面にハイパージャンプする
  のに使用します。また、音量バランスの改良(AYがボイスに比べて低すぎ)。
  [gravilidavide, Tafoid]

- snowbros.c:「Puzzle King」「Hyper Pacman」「Cookie & Bibi 2」「Cookie & Bibi 3」
  その他にDIP配置追加。「Puzzle Break」のDIP情報追加。[Brian Troha]

- 以下のセットでデキャップしたMCUを読み込み(ただしまだ未使用): [Dr. Decapitator]
 * kyros
 * kyros (alt, オリジナルのMCUダンプ?)
 * arkanoid (サポートしていたMCUは海賊版の模様)
 * blackt96
 * amerdarts
 * cshooter
 * josvolly (ほかにもデキャップが必要なチップあり)
 * invasnab (このMCUが正確かどうかは微妙)
 * pasha2
 * empcity
 * topshoot
 * topbladv (このセットのCPUコアは未エミュレート)
 * officeye (このセットのCPUコアは未エミュレート)
 * revx

-「Magical Odds」にPROM追加。[Smitdogg, The Dumping Union]

- at28c16をC++デバイスに変換。[smf]

- arkanoid.c: 純正ROMセットの基板配置追加とMCU Taito ID番号をドキュメント化。
  [Brian Troha]

-「キックスタート」の古いMCUダンプをデキャップしたものと置き換え。
  [Dr. Decapitator]

-「Pipeline」の古いMCUダンプをデキャップしたものと置き換え。[Dr. Decapitator]

- [cb2001] 新命令追加。[robiza]

- イメージのアンロードと生成を修正。[Sandro Ronco, Miodrag Milanovic]

- cb2001: リールの実装。[David Haywood]

- 'Wheels & Fire'ドライバを書き直し。[Tomasz Slanina]
 * 新レンダリングコード
 * ズーム処理の初期版(ルックアップテーブルをベース)
 * メインCPUとサウンドCPUのコミュニケーション初期版
 * スキャンライン割り込みとスクロール

- segas16b.c: 使わなくなった"USER2 Work space"を2つ削除と、ドライバの整合性をと
  る都合から、残りのUSER2をMCUに変更。[Brian Troha]

- Naomi 171-8346Cカートリッジタイプの情報を追加。[f205v]

- Neo Geoのドキュメントを大幅に更新: [Johnboy]
 * SNK Playmoreのオフィシャルタイトルリストを追加
 * AESシステム用に公式にリリースされていないMVSセットがすべて判明。タグ付け
   (オフィシャルのタイトルリストとNeo-Geo Masterlistによる)
 * 一部セットの種類判明(AES / MVS)と正しくタグ付け
 * MULTI PLAY MODE (未エミュレート)についてドキュメント化; MCUが欠落
 * ゲーム基板情報を更新
 * kof99nをkof99k(韓国版)に改名
 * mlug3のPチップを正しいチップラベルに改名とSMAコメント追加
 * jockygpのROMをオリジナルカートリッジを元に改名、コメント追加
 * vliner/vlineroのROM名をオリジナルカートリッジを元に改名、コメント追加
 * neodrvr.cをクリーンアップ

- MB88xx CPUコアのバグを修正。[Alex Jackson]

- polepos.cの改良: [Alex Jackson]
 * ハンドルを正しい方法で実装。MCUのあるセットの過敏なステアリング入力が修正
 * MCU無しの海賊版セット(topracernとpoplepos2bi)に新しいレイアウト追加
 * クロック周波数をxtal.cからのクリスタル値にコンバート
 * Namco製セット(poleposとpolepos2)のROM名を訂正
 * 使われていないグローバル変数polepos_gear_bitを完全に削除
 * ビット化けが起きていたと思われる海賊版ROMを2つ修正

- 欠落してたmakefileの依存関係を追加。[Atari Ace]

- 非DRC RSPコアがまたビルド出来るよう改良(SH-2コアのように#defineで制御)。
  [Atari Ace]

- segas16b.c: FD1094 317-0120の「ゴールデンアックス」セットのROM名を訂正と、吸い
  出し良好を確認。[Brian Troha]

- lr35902.c: スピードレジスタが再び変更と取得可能なようにレジスタリストに追加。
  [Sandro Ronco]

- mb3773をレガシーデバイスからC++デバイスにコンバート。at28c16のコメントを整理。
  [smf]

- djboy.c: 未検証のBeast MCU内部ROMイメージを追加。
  [Dr Decapitator, Tomasz Slanina, Lord Nightmare, Phil Bennett]

- sfbonus.c: Amcoeの"Classic Edition Compact Format"基板レイアウトを追加。
  [Brian Troha]

- TMS32010コアに派生版のTMS32015とTMS32016 CPUを追加。またLST命令が時々間違って
  内部RAMバンキングをいじってしまう問題を修正。[Quench]

-「Ameri Darts」の内部DSPダンプ追加と、AmeridartドライバでTMS32015をサポート。ま
  た、セーブステートもサポート。[Dr Decapitator, Quench]

- RSP: VCL命令のサイン問題を修正。[angrylion]



新規追加、またはNOT_WORKING状態から昇格したゲーム
-------------------------------------------------
Puzzle Break [David Haywood, Smitdogg, The Dumping Union]



新しく追加されたクローンセット
------------------------------
Mystic Riders / 魔法警備隊ガンホーキ (海賊版?)  [David Raingeard]
Magical Odds (set 2) [W. Herve, Smitdogg, The Dumping Union]
ライデンファイターズJET - 2000 (China) [Brian Troha, Guru]
ワンダーボーイIII モンスターレア (set 6, System 16A, FD1089A 317-xxxx) 
  (better dump?) [Team Europe]
ストリートファイターZERO (Hispanic 950718)
  [Layne, N. Francfort, R. Mucciarelli, Smitdogg, The Dumping Union]
キャプテンコマンド- (World 911202) [Stefan Lindberg, The Dumping Union]
Space Ship [f4brice]
獣王記 (set 5, Japan, FD1094 317-0069, not working)
  [Stefan Lindberg, The Dumping Union]
ワイルドファング [Stefan Lindberg, The Dumping Union]
Fruit Bonus '06 - 10th anniversary (Version 1.3R CGA)
  [Brian Troha, The Dumping Union]
ターミネーター2 -Judgment Day- (rev LA4 08/03/92)
  [Gor, Smitdogg, The Dumping Union]



追加された未動作ゲーム
----------------------
機動戦士ガンダム バトルオペレーティングシミュレーター (GDX-0013)
  [Team Europe, Joerg Hartenberger]
セガゴルフクラブ バージョン2006 ネクストツアーズ (Rev A) (GDX-0018A)
  [Team Europe, Joerg Hartenberger]
オーリーキング (GDX-0007) [Team Europe, Joerg Hartenberger]
Tokio/スクランブルフォーメーション (japanese?, newer)
  [Guru, Roger Coltrane, Smitdogg, The Dumping Union]

mamedev.org
July 7, 2010

0.138u3、チートの不具合

u3でチートをONにしていると200本以上のタイトルで起動できない(OUT OF MEMORYエラーが出る)問題が起きています。まもなくTafoidさんがまとめて報告してくれると思います。

0.138u3出た

0.138u3用の差分ソースが出ました。What's New-Jは次の通り。デキャップによるMCU追加が多数、前回リリースでの速度低下が(ほぼ)解消、前回に続いてさらにC++化などなど。
0.138u3
-------


MAMETestersの修正バグ
---------------------
- 03910: [サウンド] All sets using stereo sound: 左より右チャンネルの方が音量が大きい。
         (hap)
- 03913: [グラフィック] arcadecl: 背景とキャラクタが左側に少しずれている。(hap)
- 03912: [サウンド] kyros, kyrosj: パンチを打つとホワイトノイズが鳴り出して止まらなく
         なる。(hap)
- 02572: [既知事項 /未実装] All Sets in xain.c: 68705 MCUは未吸い出し。動作はパッチ処
         理。(Phil Bennett)
- 02462: [既知事項 /未実装] storming: このセットはMCU無しの海賊版だと思われる。(hap)
- 03899: [サウンド] All sets in cloak.c: 実機よりも音程が高い。(Tafoid)
- 03888: [DIP/ 入力] mstadium: 3つめのボタンが割り当てられていない。(Tafoid)


ソースの変更点
--------------
- staticとconstのqualifierを不足箇所に追加。また、konamiic.cのデッドコードを無効化。
  [Atari Ace]

-「プレミアサッカー」「ゴルフィンググレイツ」の68000クロック速度(16MHz)を周波数計で確
  認。[Fabrizio Vasile]

- expatライブラリを最新リリース版(2.0.1)に更新。[Oliver Stoneberg]

- ナチュラルキーボードの変更時にステータスを保存するよう変更。[Robbbert]

-「ピン桐8」のビデオエミュレーションを改良。[David Haywood]

-「龍雀」「ピン桐8」のDIPスイッチと入力系の実装。[Angelo Salese]

-「ピン桐8」ハードウェアのVRAMアクセスをシンプル化。[David Haywood]

- Philips CD-iベースアーケードシリーズ「Quizard」のスケルトンドライバ追加。[Harmony]

- MESSよりソフトリスト機能を導入: [Miodrag Milanovic]
 * MESSのイメージ関係のUIをコアに導入
 * ファイル名関連のイメージデバイスコールを再実装

- MESSより-listsoftwareコマンドラインオプションを導入。XML出力にsoftlistを追加。
  [Miodrag Milanovic]

- TMS52xxの音生成用に、正しいIP/PC/Subcycleカウントを使用。[Lord Nightmare]

- video/cclimber.c: cclimber/ckongのスプライトをX軸方向に1ピクセル移動。[hap]

-「Little Robin」のビデオエミュレーションでデバイスシステムを使うように書き換え。
  [David Haywood]

-「ダブルドラゴン」のイタリア版海賊版のキャラクタROMを復号化。[Angelo Salese]

-「Super Game III」: MMC1への2連続書き込み処理を追加して「Snow Bros」がプレイ可能。
  [Mariusz Wojcieszek, Fabio Pruli]

- MESSからioprocの実装部を導入。[Miodrag Milanovic]

- カセット音声の再生を修正。[Robbbert]

-「Super Game III」: 「Tom & Jerry」を修正。[Mariusz Wojcieszek]

-「レジェンドオブヒーロー トンマ」(日本版)にi8751H MCUの正しいダンプを追加。
  [Dr. Decapitator]

- デバッガ表示のC++化。各ビュータイプを個々のファイルに分割。呼び出し元の更新。
  [Aaron Giles]

- emuallocで、古いオブジェクトが割り当てたリソースを安全にクリーンアップできるように
  するため、リソースプールの解放を一番古いものから最新のものに変更。[Aaron Giles]

- デバイス名をオーバーライド可能な関数から、device_configコンストラクタに渡される引数
  に変更。コンストラクト時に正しい名前が不明の場合は、一般的な名称を割り当て、設定が
  完了したときにそれをオーバーライドできます。[Aaron Giles]

-「実戦麻将王 加強版 / Real Battle Mahjong King」の89C51 MCUをデキャップ。
  [Dr. Decapitator, Guru]

- metro.c:「パズLET」MCUの内部ROMを追加。Zilog Z8 8-bitファミリMCU用に新しくCPUコアの
  作成が必要。[Dr. Decapitator]

-「Renegade / 熱血硬派くにおくん」の68705 MCUを実装。[Phil Bennett, Dr. Decapitator]

- redufo Artic版を親セットに、海賊版をクローンセットに設定。[hap]

-「ザインドスリーナ / Solar-Warrior」の68705 MCUを実装。
  [Phil Bennett, Dr. Decapitator]

-「大怪獣の逆襲」に68705 MCU実装、及びMCUシミュレーションの削除。
  [Phil Bennett, Dr. Decapitator]

- xain.cにDIP配置追加。[Tafoid]

- aristmk4: 改良いろいろ: [FrasheR, Palindrome]
 * VIAを完全に修正。5010 - 501F
 * プッシュボタン入力を実装
 * PML 2852 U3用ポートを実装
 * コイン入力実装
 * ランプ出力とボタンレイアウト追加
 * NVRAMバックアップ
 * 背景色マップ選択用のSW7を接続
 * LK13追加。3MHzと1.5MHzのCPU速度選択
 * メカニカルメーターパルス用のサウンドサンプル追加
 * MC146818をカスタムRTCコードで置き換え

- naomi.c: 一部のゲーム名とカートリッジ番号を修正。[f205v]

- neodrvr.cの更新: [Johnboy]
 * kof2003hにAES VERSIONのタグ追加
 * 次のゲームにMVSとAES VERSIONタグ追加: aodk, lbowling
 * sengoku3のP1の名称を正しいチップラベルに訂正
 * strhoopのv2をBAD_DUMPに設定
 * flipshotのP1をBAD_DUMPに設定
 * kof98nはAES版と判明したのでkof98hに改名

-「バツグン」のv25ログ出力処理を改良。[David Haywood]

- igs011.cの更新: [Luca Elia]
 * IGS011プロテクトをエミュレート
 * IGS012プロテクトをエミュレート
 * 149 ROMのパッチを削除

-「スラップファイト/Alcon」の68705 MCUを実装。[Phil Bennett, Dr. Decapitator]

-「タフターフ」(US)、「レッスルウォー」のMCUを実装; 「レッスルウォー」のMCUシミュレー
  ションを削除。[Aaron Giles, Dr. Decapitator]

- cps2.c:「エックスメン -チルドレン・オブ・ジ・アトム-」(Hispanic)セットのリリース日を
  訂正。[gregf]

- machine_configをきちんとしたオブジェクトに変更。マシン初期設定後に新しいデバイスを
  追加する場合、複数回呼び出しができるように、detokenizeメソッドを追加。新しい命名規
  則に合わせて、メンバ変数名を更新。[Aaron Giles]

- running_machineのコンストラクタで、他のものと同様に、専用のものをこしらえるのではな
  く、コンストラクト済みのmachine_configオブジェクトを取るように変更。また、
  machine->config->m_total_colorsのショートカットとしてmachine->total_colors()を追加。
  [Aaron Giles]

- firetrap.c: 基板についてのドキュメント追加。ROM名とクロックの訂正。[Guru]

- idsoccer: DIP配置改良、MSM5205クロックの確認。[Kevin Eshbach]

-「ブギーマナー」のタイトル画面色を修正。[Angelo Salese, Stefan Lindberg]

- unidasmコンパイルが通るようにdevice_type定数の定義方法を変更。[Miodrag Milanovic]

- autmoon (aristmk4)のロムロードを正しいCRC/SHAハッシュに変更。既存のROMセットには
  32kbのもの(u87.bin)が含まれていたが、実際には8kのオーバーダンプとみられる。[Tafoid]

- slapfght.c:「スラップファイト」のROM名訂正と手元にあるセットの基板配置図追加。
 「スラップファイト」のDIP配置追加。基板情報をROMセットに合わせて変更。
  [Brian Troha, Guru]

- mame.cをmame.cとmachine.cに分割。後者には、running_machineとその実装部が含まれます。
  [Aaron Giles]

- グローバルなマシンレベル命令とアクセサをrunning_machineクラスのメソッドに移動。以下
  のわずかなケースを除いてドライバには影響しません: [Aaron Giles]

  mame_get_phase() == machine->phase() 
  add_reset_callback() == machine->add_notifier(MACHINE_NOTIFY_RESET, ...) 
  add_exit_callback() == machine->add_notifier(MACHINE_NOTIFY_EXIT, ...)
  mame_get_base_datetime() == machine->base_datetime()
  mame_get_current_datetime() == machine->current_datetime()

- region_infoクラスをクリーンアップ。memory_region()とmemory_region_length()を除くほ
  とんどのグローバルなリージョンアクセサを削除。これもドライバには特に影響しません。
  [Aaron Giles]

- 以前のサンプリングプロファイラを復活させ、使いやすく改良: [Aaron Giles]
 * いつでも使えるようになりました。-profile <n>と指定します
 * コールチェーンの一意な識別を行うスタックウォークをサポート; パラメータ<n>で
   -profileオプションの深度を指定します
 * 速度制限とマルチスレッドは自動でOFFに指定し、プロセッサ数も1に設定します(メインス
   レッドのみをサンプリングするため)
 * 出力には汎用のシンボルルックアップを使用。MSVCビルドではPDB、gccビルドではsymファ
   イルを使用します
 * トップ30のユニークなコールチェーンも出力

- PowerPCゲームのパフォーマンス低下を修正。タイミング処理で、現在は動作の遅い
  cpu_get_total_cycles()を頻繁に使用したのが原因です。そこで、legacy_cpu_deviceの直接
  呼び出し、及び、汎用デバイスから実行インタフェース検出を行うdynamic_castが不要な
  device->total_cycles()を使っています。[Aaron Giles]

- cycles_to_attotime()とattotime_to_cycles()を追加(サイクルは分周/乗算後の内部クロッ
  クなのに対し、クロックは生の入力クロックであるため、attotime_to_cycles()がより使わ
  れる)。[Aaron Giles]

- cpu_get_total_cyclesの他のインスタンスをほとんど削除。[Aaron Giles]

- 以下の関数を削除: [Aaron Giles]
  cpu_get_total_cycles()   == cpudevice->total_cycles()
  cpu_clocks_to_attotime() == cpudevice->cycles_to_attotime()
  cpu_attotime_to_clocks() == cpudevice->attotime_to_cycles()

-「ワールドラリー」のDIP配置順をサービスメニューにあるDIP表示に合わせて訂正。
  [Brian Troha]

- namcos22.c: ridgerac、raveracw、acedrvrwでシフトにDIPスイッチではなくキーを使うよう
  更新。[Fabio Priuli]

- COPXのROMロードが無いものに追加し、仮定が確認されるまでBAD_DUMPを追加。[hap]

- Winmainのクリーンアップ: [Aaron Giles]
 * dynamic_bind<>テンプレートクラス作成。追加サポート関数を動的にバインド処理するため
 * スタックウォークコードをクラスにラッピング
 * シンボルルックアップコードをクラスにラッピング
 * objdump生成のシンボルダンプで非グローバル関数を含むものについてパースをサポート。
   スタックダンプの改良とgccビルドでのプロファイリングのため

- win32ターゲットのmakefileで、SYMBOLSが有効なときは自動的にobjdumpを実行し.symファイ
  ルを作成するように改良。[Aaron Giles]

- チートロード処理でイメージデバイスをサポート(MESSより)。最初に見つかったイメージの
  CRCのみ使用。[Miodrag Milanovic]

- cpu_get_sp()を削除。[Aaron Giles]

- execute、memory、stateインタフェースのフェッチを行うオーバーライド追加。これは、汎
  用のレガシー操作を加速するため、dynamic_cast<>を行いません。[Aaron Giles]

- 全てのCPUについて、新マクロDECLARE_LEGACY_CPU_DEVICEとDEFINE_LEGACY_CPU_DEVICEを使
  用して、CPU専用のデバイス型を作成。これまでCPUは、共通のCPU型に特殊な内部サブ型を追
  加したものでしたが、それぞれ独自のデバイス型に変更しました。この作業の一環として、
  全部大文字のデバイス名から接頭辞CPU_を削除しました。たとえば、CPU_Z80はただのZ80で
  す。このため、8080などの一部名称は最初にアルファベットが来る必要があるため、I8080に
  変更しています。[Aaron Giles]

-「ヘビーバレル」のI8751 MCUを実装。[Bryan McPhail, Dr. Decapitator] 

- [cb2001] 2つの新規命令を追加。[robiza]

-「Gondomania / 魔境戦士」のI8751 MCUを実装。[Bryan McPhail, Dr. Decapitator]

-「迷宮ハンターG」のI8751 MCUを回路図に基づいて再実装。[Bryan McPhail]

- ソフトウェアリストの更新: [Wilbert Pol]
 - ソフトウェアリストXMLファイルは、親子セットがあるかなど全ての情報を含みます
 - 親セットの存在について妥当性チェックを追加

- イメージ関係のツールをMESSから/lib/util/に導入。[Miodrag Milanovic]

- cb2001のビデオエミュレーションを改良。[David Haywood]

- Sega 317-5000の復号化(315-5177と同様)をサポート。復号コード部を再構成。
  [Nicola Salmoria]

- デバッグ用構造体をCPUのみから、全てのデバイスにアタッチ。デバッガは、各デバイス毎に
  構造体を生成します。C++化したデバッガ処理のほとんどをデバッグ用クラス配下に移動し、
  呼び出し元を更新。[Aaron Giles]

- cpu_count、cpu_first、cpu_nextなどが動作しなくなっていたので削除。さらに、
  cpu_is_executing、cpu_is_suspended、cpu_get_local_time、cpu_abort_timesliceも削除。
  [Aaron Giles]

- ソフトウェアリストの改良: [Miodrag Milanovic]
 - ドライバ毎のマルチソフトリストをサポート
 - 互換性のあるソフトウェアリストを追加するためのMDRV_SOFTWARE_LIST_COMPATIBLE_ADDを
   追加(ドキュメント作成用) [Miodrag Milanovic]
 - -listsoftwareオプションはオリジナルのソフトリストのみを返します
 - デバイス毎のソフトウェア項目をマウント可能なようにUIを更新
 - UIの互換ソフトリストを分離



新規追加、またはNOT_WORKING状態から昇格したゲーム
-------------------------------------------------
スラップファイト (set 1) [Phil Bennett, Dr. Decapitator]
Alcon / スラップファイト [Phil Bennett, Dr. Decapitator]



新しく追加されたクローンセット
------------------------------
ザ・キング・オブ・ファイターズ'98 (韓国用基板2) [Johnboy]
Looping (Video Games GMBH) [Andrew Welburn]
Defend the Terra Attack on the Red UFO (Artic) / レッドUFO [The Dumping Union]
クレイジーコング (Falcon?) [Fred O.]
Exciting Animal Land Jr. (USA) / ワイワイアニマルランドJr. 
    [Smitdogg, The Dumping Union]
American Soccer [Kevin Eshbach]
バーチャストライカー2 '99 (Revision B) [Guru]
ファイヤートラップ (Japan) [Guru]
マーヴル VS. カプコン (USA 971222) [Razoola]
雷電DX (UK) [Irongiant]
Boggy'84 / ボギー'83 (original Kaneko) [Klaus Sommer, Team Europe, The Dumping Union]
エクセライザー (Japan) [N. Francfort, blib, Smitdogg, The Dumping Union]



追加された未動作ゲーム
----------------------
Quizard (1.7) [ANY, The Dumping Union, Harmony]
Quizard (2.2) [ANY, The Dumping Union, Harmony]
Quizard (3.2) [ANY, The Dumping Union, Harmony]
Quizard Rainbow (4.1) [ANY, The Dumping Union, Harmony]
Model Racing Shooting Game (タイトル不明)
    [Luigi, Volker Hann, Team Europe]
アウトラン2 (Rev. A) [GDX-0004A]  [Team Europe, The Dumping Union, Alex]
mamedev.org