MAME - What's New-J 0.93.txt
0.93 ---- このリリースは、Aaron氏による大幅なサウンドシステムの更新がメインです。 というわけで、ドライバによってはサウンドのバグやクラッシュなどが起こる可能性が高 いです。Aaron氏、Derrick氏、R.Belmont氏により、0.93リリース前にかなりの量の問題 は修正されていますが、新たに見つかれば修正していきます。今回のリリースは大幅な チェックをお願いします。 ---- - サウンドシステムの更新。[Aaron Giles] (変更点は以下を参照) サウンドシステムの更新: ------------------------ コアの変更 ----------- common.c: * auto_malloc()で、失敗を絶対的(osd_dieを呼び出す)にしました; auto_mallocは常に 成功するものとしてNULLを返さないとしてもよいです。 * サンプルロードコードを全て削除; sound/samples.cになりました。 config.c: * userintrf.cの新ミキサーへアップデートしてみましたが、未テストなのでぶっ壊れて るかもです。 driver.h: * driver->sound_attributesは削除; ステレオかどうかのチェックはスピーカー数をカ ウントしてください。 mame.h: * Machine->samplesは過去のものになりました (イェイ!) timer.c: * intの代わりに、コールバック引数のポインタを持つ新タイマータイプを作成しました。 他のものは影響を受けていません。これによりサウンドコアが大幅にオブジェクト指向 になりクリーンアップされています。 usrintrf.c:ミキサー(廃止済み)からではなくサウンドコアからミキシング音量を回収し ました。ミキシング音量は2.0までオーバードライブ出来るようになりました(将来的にさ らに増やすかも)。 マシンドライバの変更点 ---------------------- * MDRV_SPEAKER_ADD は新規のスピーカーを作成します。名称とプレイヤーの頭部に対す る方向の3Dベクトルを指定してください。 * MDRV_SPEAKER_REMOVE と MDRV_SPEAKER_REPLACE は名称通りのものです。 * MDRV_SPEAKER_STANDARD_MONO("name") はユーザーの正面に位置する単一のモノラルス ピーカーを指定します。 * MDRV_SPEAKER_STANDARD_STEREO("leftname","rightname") は、ユーザーに対して左右 に位置するステレオスピーカーを指定します。 * MDRV_SOUND_ADD の引数はインターフェースポインタに代わり'clock'をとります。 各チップのクロックはインターフェースではなくここで指定します。サウンドインター フェースストラクチャからクロック関係のパラメータは全部削除しました。 * MDRV_SOUND_CONFIG でインターフェースを指定します。これはMDRV_CPU_CONFIGのミ ラーです。configの指定はしなくてもいいので注意してください;この場合はNULLで、 許されます。大抵のサウンドチップで必要なのはクロックと音量(これもインターフェ ース構造体から削除済み)の情報だけです。 * MDRV_SOUND_ROUTE はサウンドチップのデータ出力方法をコントロールします。第1引数 は出力インデックスを指定するか、全出力をチップの同じ所に送る場合はALL_OUTPUTS を指定します。第2引数はスピーカー名、もしくは他のタグ付けされたサウンドチップ の名称を指定します。第3引数は浮動小数点のゲイン指定です:1.0が基準です。 * 必要な数だけのサウンドルートを指定可能です; 同一の出力に対して複数のルートを指 定すれば、サウンドが分割されます。例えば、OKIM6295のモノラル出力を左右のステレ オスピーカーにルーティングすることもできます。 サウンドコアインターフェースの変更: ------------------------------------ mixer.c/.h: * このファイルはきれいに無くなりました。全てストリームまたはsndintrf.cで直接扱い ます。最終的なミキシングを行うストリームを生成するsndintrf.cのコードによりミキ シングが行われます。 sndintrf.h: * サウンドコアのヘッダはもう#includeしません。ドライバ内でインクルードしてくださ い。 sndintrf.c: * サウンドコアの実装方法がかなりCPUコアに似た形になりました。コアがそれぞれ get_info関数を一つ持っています; その他の関数全部とデータはこれ経由で取得します。 * CPUコアと同じく、sndtype_xxx()を呼び出してサウンドチップタイプの値の取得・設定 が可能です; また、sndnum_xxx()でMachine->drv->sound配列のサウンドチップイン デックスを取得・設定できます; 最後に、sndti_xxx()はn番目のサウンドチップインス タンスタイプの値を取得・設定します。(sndti = sound type + index) * 全てのサウンドコアとフィルタはスタートアップ時に生成されます。次にスピーカーが 生成され、最後にそれぞれが接続されます。新規の一貫性チェックを導入して、ひどい 間違いが起きないようにしています。 * sndintrf.cがOSDレイヤーをコールするようになりました。またステレオ出力が常時必 要です。またこれは、いろいろなスピーカーストリームをスピーカーのX軸をベースに した左右のストリームに最終的なダウンミックスを行います。 sound/streams.c: * sound/streams.hに新typeの定義追加: stream_sample_tはストリームシステムで使用す るサンプルをリクエストするのに使います。INT32にtypedefしてます。 * stream_sample_tのサイズに関わらず、全てのストリームは16bitが最大として生成され ます。追加のビットは万が一必要な場合に備えてのゆとりです。 * 全ストリームは、複数の入出力をサポートする同一フォーマットのコールバックを持ち ます。 * 各ストリームはサンプルレートを持ちます; 入力されたストリームは、このレートに合 わせてダウンまたはアップサンプルされます; 出力も同様に次のストリームやスピー カーラインの必要に応じてリサンプリングされます。 * ストリームへの入力はそれぞれ増幅率を持ちます。出力も同様です。この増幅率はラン タイム時に各々コントロール可能です。 * 動作できることとシンプルさに重点を置いたので最適化はあまりしてません。全部落ち 着いたら最適化を考えるかもしれません。 サウンドコア作者向けの注意事項: -------------------------------- * サウンドコアを全てMAMEチームのコピーライトに設定しました;自身のクレジットが必 要な場合は、自由にアップデートを送ってください。 * インターフェースから全ての音量とクロックスピードを削除しました; 指定は別途行う ようになってます。 * サウンドチップのインターフェースは必要ない場合が多いのでオプションにしました。 * 多くのサウンドコアでグローバル変数を使い、インスタンスが一つと仮定していました ので、全て修正しました。 * グローバルな参照テーブルを削除して、サウンドインターフェースに入れてしまったも のがいくつかあります。いずれ修正できるようになりますが、私はあんまりやりたくな いです。 * stream_initとstream_init_multiは削除しました; stream_createのみになってます。 * ストリームには自動で名前が付けられるので、stream_createに名前を渡す必要はあり ません。音量も自分でいじる必要はなくなりましたので、stream_createに音量を渡す 必要はありません。 * get_info関数は、set_info()、start()、stop()、reset()へのポインタを返します。 update()関数の考え方はもうありません。アップデートはストリーム経由で処理されま す。 * start()関数には3つのものが渡されます: 'sound index'は、チップのインスタンスを 指定します(例:0は1番目、1は2番目が作成される); 'clock'は、ドライバ内で指定 されます(インターフェースにクロックは置かないで!); 'config'は、そのチップの インターフェースへのポインタです(NULLでもよいが注意)。 * start()関数は、データ構造体のメモリ割り当てと、成功時はそのポインタを返すよう になってます。失敗時はNULLを返します。 * start()関数が返すポインタは、stop()とreset()関数に渡されます。 * n番目のチップにリード・ライトハンドラを与える場合はたくさんあるので、 sndti_token(chip_type, index)を呼び出してもstart()関数からポインタを取得できる ようにしました。 * 内部のクリッピングを行わない非デジタルチップを使ってる場合は、多分クリッピング コードを削除してしまって、最終的にミキサーにクリップさせることができるはずです。 * 解像度を上げるため、セカンドバッファを使って独自にミキシングをする場合、スト リームバッファに直接ミックスすると最適化ができると思います。 * サウンドコアを全部修正する際、動作させるためにかなりの力業でやっています。の で、もしあなたのサウンドコアでまずい部分があれば、自由に直してください。 サウンドコア限定の変更点: -------------------------- * ADPCM -- これは完全に削除しました。使っているドライバにはダミーのMSM5205を設定 しています; 再度作業と修正が必要です。 * AY8910 -- YMチップからアクセスするインターフェースをクリーンアップしました。 * Custom -- 多くのドライバで使っている"Custom"ドライバはハードコードしたサンプル を(今は亡き)ミキサーで再生するものでした。これは"Custom"じゃなくて"サンプル"な ので、サンプルにコンバートしました。 * フィルタ(音量) -- これはとてもシンプルな新規のフィルタです。音量の追加操作が必 要な場合に使用します。 * フィルタ(RC) -- ストリームコード内にあった古いRCフィルタを置き換えるための新規 フィルタです。いずれシンプルなディスクリートロジックと置き換えるかもしれません。 * IremGA20 -- Acho cod...(通信断絶) * NES APU -- アップデート関数の代わりにストリームを正しく使うように動作方法を変 更。 * Samples -- 独自のカスタムサンプルが必要な場合はstart関数で対応できるようになり ました。これにより、一部の場合ではCustomドライバをSamplesで置き換えることがで きています。INI16データのポインタからのraw sampleを再生する新関数 sample_start_raw()が追加されています。 * Votrax -- 使われなくなったVortraxコアがハードコンパイルされる状態でした。これ は取り出して正しいサウンドタイプにしました(現在は含まれてません)。 * VRender0 -- クリッピングバグ修正(マイナスのクリップがプラスに丸められていた -- 32bitでわかりやすかった) * YM2151 -- もう一つのは削除してJarek氏のものだけにしました。二つあるのは問題の 元です。 * YM2203/2608/2610 -- これらのチップは、グローバルポインタに頼るのではなく、 AY8910互換ルーチンの全ポインタと一緒に関数セットをFMコアに渡すようにしました。 * YMZ280B -- このコードは、私が最初に書いた時にくらべて酷くなっちゃってます :( ---- 0.93のそのほかの変更: ---------------------- - パッチいろいろ。[Nathan Woods] src/debug/debugcpu.c: - memory_get_read_ptr()のインターフェースをmemory_get_op_ptr()に変更 src/cpu/g65816/g65816ds.h: src/cpu/g65816/g65816ds.c: src/cpu/g65816/g65816.c: - G65816逆アセンブラの変更; program_read_byte()は逆アセンブリングには 使わないようにしました -「ハイパークラッシュ」の操作修正(スタートするにはフリープレーにする必要有り)。 [Angelo Salese] -「ビッグストライカー」でPROMを使うように変更。[Pierpaolo Prazzoli] - .mapファイルの生成法を変更。[smf] - SPIのビッグエンディアンの修正。[R.Belmont] - Namco 54xxフィルタのポートAとCを入れ替え。[Derrick Renaud] (「ゼビウス」のサウンド修正) - C89の修正。[Lawrence Gold] - 全SPIゲームのグラフィックを復号化。[Nicola Salmoria] - WCBowling 1.2のクラッシュ修正。[Derrick Renaud] - FD1089のアップデート。(317-0028追加) [Nicola Salmoria] -「四川省II」の復号テーブルに命令コード追加。[Pierpaolo Prazzoli] ゲーム*ほぼ*正確に動作。エラー一部あり - MACsドライバのアップデート。[Tomasz Slanina] yujanが起動。プレイはまだ - ddcrew (2 player)のサウンドロード修正。[David Haywood] -「エイリアンシンドローム」のROM名修正。[Shinobiz] - racheroのデバッグボタン削除。真ん中のレーンで動けなくなる問題のため。 [David Haywood] 新規サポートまたはGAME_NOT_WORKINGが取れたゲーム: -------------------------------------------------- UFO戦士ようこちゃん [Pierpaolo Prazzoli, Nicola Salmoria] 戦球 / Battle Balls [Nicola Salmoria, Ville Linde] ライデンファイターズ [Nicola Salmoria, Ville Linde] ライデンファイターズ 2 [Nicola Salmoria, Ville Linde] ライデンファイターズ Jet [Nicola Salmoria, Ville Linde] バイパーフェイズ1 [Nicola Salmoria, Ville Linde] E雀 ハイスクール [Nicola Salmoria, Ville Linde] SPIのサウンドは不完全。アルファブレンディングは未実装 新規追加クローンセット: ------------------------ スーパークロス (Japan set 2) [Pierpaolo Prazzoli] Alpha Mission / ASO [Dave Widel] エイリアンズ (World set 3, Japan set 2) [MAN] Defense [Torsten] (オリジナル基板のプログラムROMは不良、パッチ必要) High Impact Football Proto v8.6 [Brian Troha] サプライズアタック (Asia Ver L.) [Andreas Thorsé] G-ダライアス (Ver 2.02A) 新規追加のGAME_NOT_WORKINGゲーム: ---------------------------------- MoonQuake [Mariusz Wojcieszek] Tuts Tomb Ghost Hunter 銃未実装 0.92u2000 --------- 雰囲気的に出す価値があるようなので出します ;-). ---- - Seibu SPI復号化の改良。[Nicola Salmoria] 全ゲームでのタイルグラフィックの復号化 「ライデンファイターズ2000」のスプライト復号化 -「タンク8」にディスクリートサウンド追加。[Hans Andersson] -「Championship Bowling」にトラックボール追加。[Pierpaolo Prazzoli] -「Super Trio」のサウンド周波数修正。[Pierpaolo Prazzoli] - コンパイラ用の修正。[R.Belmont] - FD1089のアップデート。[Nicola Salmoria, Charles MacDonald] 317-0033(「エイリアンシンドローム」)と317-0034(「スーパーハングオン」) の完全なテーブル追加 - 麻雀ドライバで新デフォルト操作を使うように更新。[James Wallace] - Gladiatorドライバのアップデート。[Nicola Salmoria] - 回路図を元に検証(ただし、回路図が読みにくいため怪しい部分有り) - タイルマップにコンバート、スクロール修正 - タイルマップデコードをシンプルに - 画面反転サポート - スプライトRAMサイズを修正(gladiatr36rc2greを修正) - スプライトデュアルバッファサポート(スプライトが遅れるのを修正) - 低音が聞こえるようにYM2203ミックスレベル調整(オーディオのミックスはプ ログラムでコントロールされているが未サポート) - ppkingとマージ、drivers/ppking.cは不要 - fgレイヤーを正しくブレンド(アルファブレンディングでなくパレットエフェ クト) -「XFiles」のビデオエミュレーション改良。[Tomasz Slanina] 新規サポートまたはGAME_NOT_WORKINGが取れたゲーム: -------------------------------------------------- ライデンファイターズ 2: 2000 [Nicola Salmoria, Ville Linde] サウンドはまだ不完全。表示エフェクトは一部未実装 新規追加クローンセット: ------------------------ Little Hero (快傑ヤンチャ丸 / KidNikiの海賊版) [Pierpaolo Prazzoli] Astro Combat (アストロブラスターの海賊版) [Pierpaolo Prazzoli] Super Missile Attack (encrypted set) [Mowerman, Dave Widel] 新規追加のGAME_NOT_WORKINGゲーム: ---------------------------------- TurboSub [Tomasz Slanina] 基本ドライバのみ。グラフィックROMのビットマップビューア機能のみ