0.139u2用の差分ソースが出ました。What's New-Jはかなり長いです。
バグ情報は MAME Testers を日本語化したものです。
訳は全て非公式なものです。このページによるトラブルについて、筆者は一切責任を負いませんので予めご了承願います。
0.139u2出た
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氏さんがされていると思いますが、最近は進展がないようです。これがあれば、完全なサウンドエミュレーションが可能になります。
0.139u1出た
0.139u1用の差分ソースが出ました。What's New-Jは次の通り。
Pugsy's Cheat更新
Pugsyさんのチートコレクションファイルが0.139版に更新されました。通常はcheat.zipファイルのまま解凍せずに本体と同じところに配置するのでご注意を。
m1.xml更新
Tafoidさんが地道にm1.xmlファイルを更新されています。0.139に合わせてセット名変更などされています。
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.
MAME 0.139出た
オフィシャルMAME 0.139がリリースされました。What's Newは次の通り。
0.138u4出た
0.138u4用の差分ソースが出ました。What's New-Jは次の通り。最近忙しくて更新がサボり気味ですね。
0.138u3、チートの不具合
u3でチートをONにしていると200本以上のタイトルで起動できない(OUT OF MEMORYエラーが出る)問題が起きています。まもなくTafoidさんがまとめて報告してくれると思います。
0.138u3出た
0.138u3用の差分ソースが出ました。What's New-Jは次の通り。デキャップによるMCU追加が多数、前回リリースでの速度低下が(ほぼ)解消、前回に続いてさらにC++化などなど。
0.138u2出た
0.138u2用の差分ソースが出ました。What's New訳は次の通り。これまでのなんちゃってオブジェクト指向から、C++のちゃんとしたオブジェクト指向へ大きな変更がされています。その他には、bin+cue形式のイメージサポートなど。
0.138u1出た
0.138u1用の差分ソースが出ております。What'sNew訳は次の通り。バツグンの修正はHazeがだいぶん前に挑戦してとりあえずここまで、というものです。
MAME 0.138出た
オフィシャルMAME 0.138がリリースされました。What's Newは次の通り。
0.137u4出た
0.137u4用の差分ソースが出ていました。What'sNew訳は次の通りです。
海釣り
最近唯一まともに更新されているKaleさんWIPの続報です。
セガマリンフィッシングを調べています。やっかいだったNaomiのI/Oエラー(0xc0279beにRAMチェックのプログラムフローがある)をバイパスする方法は以前わかっていましたが、これを使うと面白いことにMAMEのレンダラが一部のエレメントに対してアホになります(特に"レイマン"風な釣り人キャラとか、フォグエフェクトが多分無いこと)。
もちろんKaleさん以外にも動きはいろいろありますが、表には出てこない、ということです。
0.137u3出た
0.137u3用の差分ソースがリリースされました。What's New日本語訳は次の通り。ファミコンベースのゲームの色修正、TMS52XX系の改良、Naomiの改良などけっこう盛りだくさんです。
Super NESドライバ進捗
KaleさんのWIP、次はNaomiだそうです。
またNaomiの作業してます。CRTCレジスタとHBLANKのIRQ発生を修正しました。たぶん後者の作業で仁義ストームが直ってます(実はテクスチャ追加前に起動しようとしていたので壊れていた)。あと、タイピング・オブ・ザ・デッドもチェックしましたが、以前表示されてなかったテキストが出るようになってます。ミラーリングも追加して、次のような感じになってます。
0.137u2出た
0.137u2用の差分ソースがリリースされました。What's New日本語訳はイカの通り。
Super NESドライバ進捗
KaleさんWIPにSNESベースドライバの改良状況とスクリーンショットが多数出ています。
Super NESドライバの改良をまたやってます。今やってるのは大きなもので、マスタサイクルの"流用"を実装しています。これはハードウェア上のデバイスが行っている動作です。いちばんシンプルなもの(DMA)から始めてますが、きちんと結果が出てきていて、The Smufs、マリオペイント、パチ夫くんスペシャル2、スーパーカップサッカーが全て起動、リブルラブル、メジャータイトル、スーパーテトリス2+ボンブリスの入力系が動作しています。たぶん、逆に不具合が出ているものもあるかもしれませんが、一応全部実装してから調べたいと思っています…
タイムクライシス2 WIP
前回同様RBページにありますがOGさんとNaiboさんのWIPです。システム23のMAME上でのスクリーンショットが多数出ています。
週刊レトロゲームコレクション創刊
デアゴステーニ・ジャパンは4月1日、往年の名作アーケードゲームをテーマとした新パートワークシリーズ「週刊レトロゲームコレクション」を創刊する。
毎号、ゲームプログラムが収納されたROMチップと、ゲームの攻略法、開発秘話、アーケードヒストリーなどをまとめた小冊子が付属する。
創刊号は「パックマン(日本版, set 2)」と「クレイジーオットー」のROM、豪華ケースとバインダー付きで特別価格490円(税込)。
0.137u1出た
0.137u1用の差分ソースがリリースされました。What's New日本語訳は次のとおり。
タイムクライシス2 WIP
RBさんページにOGさんお手製のタイムクライシス2用OpenGLビューアのショットが出ています。まだMAMEでの動作ではないですが、データフォーマットは既に判明している模様です。
m1.xml更新
Tafoidさんが管理のM1用のゲーム定義ファイルm1.xmlが変更されています。0.137とのシンクロ、ガンメンウォーズの追加、ジェットウェーブのセット名変更などです。