引き続きHaze氏WIP

8日、9日付け連続でHaze氏WIPが更新されています。ひとつはJaleco MegaSystem 32、もう一つはKonami System GXのROZレイヤーについてで、どちらも長く放置されていた問題です。また、テスターでもMegaSystem32の実機情報を募集されています。

Konamiのサッカースーパースターズを調べてみることにした。

これは "タイプ3"のGXゲームで、ROZレイヤーが追加されたものだ。とはいえ、これをドライバに実装するのはいささか悪夢のようだ。とりあえず、既存の(間違った)ROZ処理を削除して、独自のものを追加した。以下のスクリーンショットはROZレイヤーを表示させたものだ。

表示はかなりおかしく、ピッチが回転しても観客席が常に正面を向いている。ところが、これが元々の表示なのだ。私には、このゲームにプロテクトがあるかどうか、スプライトに問題があるのかどうか、果たしてこれらを正しくまとめて動作させることができるかはわからない。

Soccer Superstars

Jaleco Megasystem 32には長い間プライオリティと影表示のバグがあったので、見直してみることにした。

最初に、Charles MacDonald氏のノートを元にメモリマップのクリーンアップを行い、プライオリティRAMを(一部だけ)使用しているテトリスプラス2の描画システムと同じプライオリティシステムを統合した。

テトリスプラス2のプライオリティシステムにより、影部分が隠れて若干プレイしやすくなった。しかし、個人的には影的な描画を実際に残すことで、これが忘れられないようにしておきたかった。

私が見た限り、影部分がプライオリティシステムと関連しているのは明らかだった。個人的な見解では、タイルマップの下にスプライトが配置されている箇所が影使用箇所であるというものだったので、そのまま実装したところ、ゲームパラダイスとテトリス2本は大きく改善した(これら以外では影は使用されていない模様)。

ただし、今のところ完璧な実装は考えておらず、プライオリティRAMの大部分はまだ未使用のままであり、本来は影が無いものまで表示されている可能性がある。とはいえ、全体的にはかなりの改善で、プライオリティRAMの解析が進むことで、いずれ解決されるのではないかと思う。

セカンドアースグラティアには、まだいろいろなプライオリティバグがあり、やはりこれもプライオリティRAMの処理の問題と見られる。いまのところ修正は出来ていない。

この作業を通じ、単体版のテトリスプラス2には影表示はサポートされておらず、Megasystem32版のみに実装されているという結論に至った。単体版を見ると、フェイクの影により、色付きの部分がグレーになってしまっているのがわかる(モードセレクト画面など)。もし、ハードウェア側でネイティブに影表示をサポートしているなら、こうならないはずであり、MS32版では正しい影表示を使用していることから、廉価版のハードウェアではこれを行えないのだろう。

このハードウェア自体、まだ多くの不明な点が残っていて、たとえば明るさの調整などにはいまだに手こずっている。これも恐らくプライオリティと関係しているようだ。他にも、タイルマップの無効化フラグ、ROZレイヤーのラッピング無効化フラグ、タイルマップディメンションの変更フラグ、その他いろいろなものが残っている。

Megasystem 32 revisited