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

0.143u6出た

0.143u6のソース差分がリリースされました。ギャンブルゲームがまた追加され、6000本近くになってます。やってられませんw。ただいまRetrofireにフィルタ機能追加中…。

0.143u5出た

0.143u5のソース差分がリリースされました。Taitoの3D系ゲームの進捗、リッジレーサー2のステート昇格など、濃いリリースです。うちのCPUじゃパワーが足りません。

0.143u4出た

0.143u4の差分が早めにリリースされました。今回は久々に進展らしい進展で、Taito JCが大きく改良されています。

0.143u3出た

0.143u2出た

0.143u2のソース差分がリリースされました。ギャンブルゲームが1600本(画面無し含む)追加って…だからピンボールなんて追加しなきゃよかったのに。

バブルシステムの情報

Charlesさんページにバブルシステムについての解析が載っています。


2007年のことになりますが、私とGuru氏でKonami Bubble Systemの基板についていくつかテストを行いました。ここで、その動作の仕組みについて忘れる前に説明しておきたいと思います。

システムは128KのワークRAMをDRAMとして実装した68000を使用し、最初の4Kは2個の2Kx8 SRAMチップで置き換えてある。SRAMは正体不明のMCU(64ピンSDIP)と共有されていて、必要に応じて読み書きを行っている。このMCUは68000を停止させることが可能で、バブルメモリと直に接続されている。68000がセクタリード/ライトのリクエストを出すために使われる、専用のハードウェアレジスタが$40000にある。MCUは共有RAMの$F00-$F7Fをこのリクエストに対するセクタバッファとして使用している。

パワーアップリセット後、MCUは68000に実行させるベクタテーブルとブートプログラムを共有RAMに書き込む。Guru氏はこのプログラムがゲームプログラムに上書きされる前に取り出すため、SRAMをNVRAMと置き換えた。その結果が次の通りである:

  • 一定時間待つ
  • ウォッチドッグを始動する
  • MCUが取得したデータを14C-D00よりコピーする。これは不良セクタのビットマップで304バイトと思われる。128バイトの各セクタ毎に2432ビット、または合計で304Kである。各セクタは実際には132バイトだが、使えるデータは128バイトである。MCUがRAWセクタをRAMに書き込んだ後、BIOSが不要データを切り取る。
  • オフセット$78000が$5555の場合、$78002に飛ぶ。これは、ドーターボードコネクタに接続した外部EPROMに該当する。おそらくは開発用だろう。
  • バブルメモリのセクタ$001、$001、$801を読み込む。このデータは使用されない。たぶんこの後の本番アクセスに備えたダミーリードと見られる。セクタ番号のビット11が特別な目的を持つかもしれない(例えば、セクタ$001と$801が同じなど)。
  • セクタ$181からRAMの$10000へ8セクタを読み込む。このとき、132バイトのRAWセクタを128バイトセクタにコンバートする。
  • バブルメモリから最初のゲームプログラムを1K読み込んだところで、$10000にジャンプする。これはRAMのなかでMCUと共有されていない箇所。

この時点からゲームが動作し始め、セクタからメモリへの読み込みを継続しながら、ゲーム固有の命令を実行する。ワークRAMの下位4KにはシンプルなBIOSがあり、#0がセクタ読み込み、#1がセクタ書き込みのトラップをする。しかし、ゲームがハイスコアなどをバブルメモリに書き出していたかや、セクタの書き込みがRAWフォーマットかそうでないかなどは不明。

保存とエミュレートという目的から言えば、各ゲームのバブルメモリー内データを全て読み出すことがゴールと言える。これを行うためには、68000でトロイの木馬を実行させ、MCUに対してセクタの読み込みをさせる必要がある。68000のプログラムコード自体もバブルメモリーから読み込んだり、MCUの内部ROMからコピーする必要があるため、独自コードを実行するのは簡単ではない。SRAMをROM(この場合書き込み不可にしたNVRAM)と置き換えると、起動時にMCUがデータの読み込みをしなければいけないため、正常に起動しないと思われる。そのため、ドーターボードのコネクタを使用するのが残された手段のようだ。

シグネチャの確認を行ったり、68000の実行コードを記憶させたカスタム基板をドーターボードに取り付けることができるかもしれない。また、NVRAMやUSBインタフェースなどを追加して、セクタの読み込みに応じて保存させることも考えられる。他には、68000をフルークモジュールと置き換え、起動プログラムがバブルメモリーから読み込まれたプログラムに制御を移したときに一旦ブレークし、そのアドレスをトロイの木馬で上書きする方法もあるだろう。

いずれ、正確な動作のためにはMCUの腑分けや解析、読み出しが必要になると思われるが、バブルメモリーのゲームは大変希少で高価なため、基板にアクセス可能で、しかもこのような作業に対するリスクを冒す人を探すのは難しい状態である。当座は、バブルメモリーの吸い出しとMCUのシミュレーションで差し支えないだろう。

Charles MacDonald's Home Page

0.143u1出た

0.143u1のソース差分がリリースされました。なんだか安定してません。

MAME 0.143出た

オフィシャルMAMEの0.143がリリースされました。バグ修正とメンテナンスがメインです。コスレッドはチェックが定期リリースに間に合わず、まだ無効化されています。

0.142u6出た

0.142u6の差分ソースがリリースされています。次は0.143の模様です。

0.142u5出た

0.142u5の差分がリリースされました。HLSLの更新の他には、表には出にくい深めの内容です。ESCキーを押したときの終了確認が派生版から取り込まれてます(デフォルトはオフ)。前回のリリースでHLSLのエフェクトに必要なアパーチャマスク用のファイルの配布が忘れられていましたが、今回はこちらからダウンロードできます。っていうか、うちでHLSLをONにするとクラッシュするんですけど…

【更新】HLSLフォルダ内のエフェクト定義も追加・更新されていました。最新の定義ファイルをこちらに上げておきます。

0.142u4出た

0.142u4の差分ソースがリリースされました。今回はDirect3Dのシェーダ機能を使った画面エフェクト機能が試験的に追加されています。いろいろなエフェクトを組み合わせて、古いCRT風の表示を実現しようという試みのようです。有効にするにはDirectX 9(シェーダモデル3.0)をサポートしたGPU、それも比較的処理速度のあるものが必要とされています。コンパイルツールも新たにヘッダ関係が追加され更新されています。ただし、まだテスト段階のため、速度調整やグラフィックカードの違いによる不具合をはじめ、いろいろと問題があるようです。

こちらにお試し用の設定を上げておきますが、スライダーコントロール内でも直接調整できるので、お好みの設定を探してみるのもおもしろいかもしれません。

 hlsl_enable               1
 hlslpath                  hlsl
 shadow_mask_alpha         0.2
 shadow_mask_texture       aperture.png
 shadow_mask_x_count       640
 shadow_mask_y_count       480
 shadow_mask_usize         0.3875
 shadow_mask_vsize         0.3875
 oversample_x              1.0
 oversample_y              1.0
 curvature                 0.05
 screen_scale_top          1.0
 screen_scale_bottom       1.0
 pincushion                0.05
 scanline_alpha            0.7
 scanline_size             1.0
 scanline_bright_scale     1.0
 scanline_bright_offset    0.6
 scanline_jitter           0.2
 defocus_x                 0.4    
 defocus_y                 0.2
 red_converge_x            0.0
 red_converge_y            0.0
 green_converge_x          0.0
 green_converge_y          0.0
 blue_converge_x           0.0
 blue_converge_y           0.0
 red_radial_converge_x     -1.0
 red_radial_converge_y     -1.0
 green_radial_converge_x   2.0
 green_radial_converge_y   2.0
 blue_radial_converge_x    0.0
 blue_radial_converge_y    0.0
 red_from_r                1.0
 red_from_g                0.0
 red_from_b                0.0
 green_from_r              0.0
 green_from_g              1.0
 green_from_b              0.0
 blue_from_r               0.0
 blue_from_g               0.0
 blue_from_b               1.0
 saturation                1.0
 red_offset                0.0
 green_offset              0.0
 blue_offset               0.0
 red_scale                 1.2
 green_scale               1.2
 blue_scale                1.2
 red_power                 1.0
 green_power               1.0
 blue_power                1.0
 red_floor                 0.08
 green_floor               0.08
 blue_floor                0.08
 red_phosphor_life         0.2
 green_phosphor_life       0.3
 blue_phosphor_life        0.5
 yiq_enable                0
 yiq_w                     4.1187867
 yiq_a                     0.5
 yiq_b                     0.5
 yiq_fsc                   1.5
 yiq_fsc_scale             1.0
 yiq_phase_count           2

0.142u3出た

0.142u3の差分ソースがリリースされました。listxmlにsoftlistなどの新項目が追加されています。Retrofireの不具合は修正済みです。

DECOカセットの吸い出し方

少し前の更新になりますが、Charles MacDonaldさんがデコカセのドライブとその吸い出し方について解析されています。


DECOカセットドライブ概要

データイーストはかつて、ゲームデータをマイクロカセットからゲームデータを読み込むアーケードシステムを製造していた。これは専用のテープドライブで再生を行う。ドライブのチップセットはMag-Tek社で、この会社は現在も磁気テープ関係の製品を作っている。以前、デコカセシステムの動作方法とゲームの吸いだしや保存が可能かについて尋ねられたため、そのハードの概要と(未テストの)吸いだし回路をお届けしようと思う。

カセットドライブは2x10ピンコネクタで"BIO-8"基板に接続されている:

                    +----------+
     TAPE_SENSE     |A1 <   B1 |    (N.C.)
     (N.C.)         |A2     B2 |    (N.C.)
     RCLOCK         |A3     B3 |    RDATA
     GND            |A4     B4 |    (N.C.)
     REV            |A5     B5 |    FWD
     FAST           |A6     B6 |    (N.C.)
     (N.C.)         |A7     B7 |    (N.C.)
     EOT/BOT        |A8     B8 |    (N.C.)
     +12V           |A9     B9 |    +12V
     GND            |A10    B10|    GND
                    +----------+

ケーブル"E"には、このコネクタをさすための2x10ヘッダがついており、上記のピンA1を示す矢印がモールドされている。ケーブルの反対側は、金色の端子に緑色のコネクタがあり、カセットドライブの基板に接続する。

TAPE_SENSEはスイッチ出力で、カセットが挿入されてフタを閉めたときに5V、カセットが無かったりフタが開いている時は0Vとなる。このスイッチはモーターのそばにあるバネ付きのメタルピンである。

EOT/BOTは、LEDからの光を受けるフォトダイオードの出力で90度ずらして取り付けられている。カセットテープの導入部以外のところは、光を反射するよう裏側がメタル状になっている。不透明な部分は光を遮り、透明な導入部分では光が通過する。テープが導入部(テープが終端か先頭)のときは5Vが流れ、それ以外の、テープが不透明な箇所(データがある)のとき、カセットが無いとき、フタが開いているときは0.40Vが流れる。

FWD、REV、FASTはそれぞれ、カセットのモーター制御中には5V、停止中は0Vとなる。FWDとREVは同時に有効にはできず、BIO-8基板にはそれを防ぐロジックが組み込まれている。通常、FWDとREVのみで適切なカセットの再生速度となり、FASTと同時に指定すると早送りや巻き戻しとなる。

RCLOCKとRDATAはテープにエンコードされたデジタルデータである。クロックシグナルはデータ信号のサンプルが可能になった時を判断するのに使われる。RDATAは、ビット"1"については5V、ビット"0"については0.40Vが出力される。 テープの巻き取りが進むにつれて、ピックアップを通過するテープ速度は上がるため、再生中クロックとデータレートは上昇し続ける。BIO-8基板上のMCUは、このデータレートの上昇に十分対応できるようになっていると思われる。

DECOカセットドライブの吸い出し

今回、信号の引き出しが出来るようにRCLOCKとRDATAをスプライスによりケーブル"E"に接続する回路を設計した。RCLOCKは、灰色のスリーブ付き白色配線、RDATAは黒色スリーブの赤色配線とする。また、グランドとして、ラベル"E"を付けた黒色配線を接合することもできる(回路のA10にあたる)。この回路により、基板の通常動作と平行して、吸い出し用の音声出力も可能となる。

ここでは、PCのサウンドカードのライン入力に合わせてインピーダンスを下げるため、出力レベルを1.25Vに変換している。ただし、ダメージを防ぐため、安いアンプなどを一旦経由し音量を調節することを勧める。回路図にRCAジャックまでしかないのは、この理由による。

回路図

注意: "E"ケーブルには+5Vラインが無いため、DECOボードセットには別途電源を供給する必要がある。このとき、出力の録音には44100 Hz以上を選び、音割れを防ぐため録音レベルに注意するのが重要である。 右チャンネル(クロック)は方形波、また左チャンネルは矩形波のようになる。うちでは、動作するものを1台作成するため、手元のドライブを2台流用する必要があるので、まだテストは行っていない。従って、この回路はあくまで使用者の責任において利用してほしい。とはいうものの、私自身は新しいテープがサポートされることをとても心待ちにしている。

Charles MacDonald's Home Page

0.142u2出た

昨日のニチブツ更新を含んだu2が早速リリースされました。まるであの輝いていた頃のようなリリースペースです。

Nichibutsu続報

Kaleさんのニチブツドライバの更新ですが、ビデオ付きで追加されています。


アームドFドライバのスプライト色サイクルエフェクトを見つけたので実装しました。RAMベースのカラーテーブルでスプライトdefのバイト経由でルックアップします。このビデオにあるように、爆発やボーナスなどのかっちょいいエフェクトに使われています。まずはテラフォースから。

… 子連れ狼ではさらに活用されていて、赤忍者と普通忍者の爆発の違いを出すのにも使われています。 …

… アームドFではスプライトがとてもにぎやかになります。

Kale's MAME WIP

「コドゥレ」か「子連れ」か

KaleさんWIPにテラフォースと子連れ狼で使われているプロテクトチップ、1414M4の作業内容が出ています。テキスト表示に使われているもので、これまで欠けていたテキストが無事に出るようになりました。この辺の解析力の高さ、センス的なものはさすが。あと文字通りにローマ字化すれば「Kodure」ではありますが、どうも気持ち悪いのでKozureでと伝えておきました。

Way of the Lone Force

0.142u1出た

新管理人Kaleさんの初リリースです。Aaronさんは後始末のためまだまだがんばってます。

Aaron氏からKale氏へ

先日MAMEの管理人がKale氏に引き継がれましたが、その件についてオフィシャルサイトにAaron氏からのメッセージが出ています。

MAMEのまとめ役を6年つとめまして、日常的な管理については別な方に譲る時がきました。プロジェクトをこれほどまで長い期間に渡って導くことができたのはひとえに名誉なことでした。通常リリースやトップレベルの判断には今後関わりませんが、コアのモダン化には協力していきたいと考えていますので、中途半端にすることはありません。

今回の「政権交代」で、Angelo Salese氏(別名Kale氏)にプロジェクトの舵取りを引き受けて頂き、大変満足しています。Angelo氏は長年にかけて多くのドライバ改良を行い、その功績は高いものがあります。彼がプロジェクトリーダーとしてすばらしい仕事をしてくれると確信しています。

mamedev.org

MAME 0.142出た

オフィシャルMAMEの0.142がリリースされました。今回でアーロンさんは管理人を退き、Kaleさんが引き継ぎ予定です。長い間たいへんお疲れ様でした。

0.141u4出た

0.141u4用の差分ソースが出ました。What's Newをようやく訳し終えました。量の多さにも関わらず、ぱっと見で違いのわかる項目が少ないのがつらいところです。

0.141u3出た

0.141u3用の差分ソースが出ています。細かいですが修正がかなり入っています。

0.141u2出た

0.141u2用の差分ソースがリリースされました。What's Newは以下の通り。

0.141u1出た

0.141u1用の差分ソースが出ました。今回よりMESSとの統合が進んでいます。なぜ動かないピンボールゲームを追加するのかは全く謎。Retrofireで不具合が出ますが、後ほど修正予定です。

ドギューン!、V-V、ナックルバッシュの音出る

先日のバツグンのサウンドサポートに続いて、RobizaさんがドギューンやV-Vなどのサウンドも追加しました。ページはイタリア語なのでHazeが訳してあります。今回はさらにそれを日本語にしようというわけです。

バツグンは暗号化されていなかったので、AWJさんがCPUコアの必要機能を追加するとすぐに動きだしましたが、ナックルバッシュ、ドギューン、V-V、フィグゼイトはすべて暗号化されているのでさらに作業が必要でした。

Robizaさんによると、ナックルバッシュのサウンドCPUプログラムはバツグンのものに比べて、暗号化されていることをのぞけばとても似ていたため、まずその解読から取り掛かりました。これはすぐに見つかり、ドギューンとV-Vでも復号化テーブルが全く同じなのがわかったそうです。

このおかげで3タイトル同時に作業ができるようになり、起動時にサウンドCPUもブートさせるようにしました(サウンドCPUはメインCPUとハンドシェイクして、ゲームの起動前にDIPスイッチ情報を渡します)。

初期の段階では、復号化テーブルの命令が一部間違っていたため音に不具合がありましたが、これはすでに解決しています。

フィグゼイトのCPU用復号化テーブルは違うものを使っていましたが、Robizaさんがサウンドプログラム自体はドギューンのものとかなり近いことに気づき、現在約6割まで解読されたようです。ただし、今のところまだ起動しません。フィグゼイトではDIPスイッチではなくEEPROMを使っていて、背景データもプロテクトされています。

Haze WIP - Who Let the Dogyuun Out?