メガドラ開発:サウンド(SGDK)

 メガドラ向けゲーム開発の壁はやはりサウンド関連でしょう。まず前提として、この世代のゲーム機ではサウンドを制御するプログラム(サウンドドライバ)が標準で提供されていないため、ゲームごとにサウンドドライバを用意する必要がありました。ゲームプログラムとサウンドプログラムは全く畑が違いますので、さぁゲームを作ろうと思い立った人にとって突然サウンドの専門用語と向き合えと言われても戸惑ってしまいます。ポルタメントとか言われてもお菓子の名前かと思ってしまいます。思いました。そんなわけでSGDKでは標準でXGMによるサウンドドライバが提供されています。

XGMって何?

 詳しい話をするととても長くなりそうですし、私も正確には理解していないので掻い摘んで説明すると、まずVGMというフォーマットが90年代初頭に、主に古いゲーム機の楽曲データを保存する目的として作られました。先に説明した通り、この時代ではゲームごとにサウンドドライバが異なることが多く、音楽データをただダンプしただけでは再生できません。そこでVGMではログデータ(レジスタの状態を毎フレーム(?)保存)することで、幅広いゲームの曲データを保存できるようになりました。
 XGMは主にセガ系のサウンド環境に向けて、より高度な再生環境を目指して開発されたサウンドフォーマット・サウンドドライバです。特にPCM複数同時再生機能は強力で、非常に表現力が高いサウンドフォーマットとして注目されています。
 VGMとXGMは直接的には関係ない別のフォーマットですが、昨今のレトロゲーム機向けのサウンドシーンではどちらも重要なフォーマットですので、併せて紹介しました。

SGDKのXGMについて

 SGDKではXGM1とXGM2という2種類のドライバが存在します。まずXGM1ですが、基本は曲部分をVGMからコンバート(PSG+FM+PCM1音)し、PCMによるSEを3チャンネルまでゲーム上でミキシングする、というXGMの応用的な使い方をしているようです(ちょっと推測入ってるかもしれません)。そのためこのサウンドドライバでは、ゲーム中のSEはすべてPCMであることを前提としています。表現力自体は非常に高いのですが、問題は容量をバカ食いするところです。大きめの曲ともなると数百KByteを超えることもあります。SEもPCMのみですので、必要なSEを用意したら簡単に1MByteを超えてしまうでしょう。
 現世代のゲームでは数GByteは普通ですので、数百KByteがどの程度の価値かわかりにくいかもしれません。参考までに、ジノーグ、アフターバーナー2、スタークルーザー、ソニックザヘッジホッグ、ザ・スーパー忍、この辺りのゲームはすべて512KByte(4Mbit)で作られています。現在とは容量に対する価値観が異なるので、曲データが大きいことを否定的に考える必要はないのですが、ゲームに収まらないことには困ってしまいます。一応、楽曲データとSEデータはバンクに入れることができますので、うまくバンク内を整理して使えばゲームの内容次第では十分といえます。

XGM2とはどんなフォーマットか?

 XGM2は2024年1月にSGDKに実装された新しいフォーマットで、問題となっていた楽曲サイズの軽減、XGM1ではできなかったフェードIN/OUTなど新たな機能が追加されました。ただしSEで使用できるチャンネルは1つ減ってしまいました。基本的にはXGM1と同じように、VGMからコンバートされた曲データと、PCMによるSEの組み合わせを想定したサウンド環境です。まだ実験的な部分も多いためバグが多いようですが、今後に期待されています。
 ただ、XGM1/XGM2どちらにも言える欠点として、複数の曲間でPCMを流用できない、という問題があります。これはSGDKでは曲ごとにリソースとして登録している都合上どうにもならないところがあります。特にPCMは容量に直接影響する部分ですので、なかなか難しいところです。この辺を解決しているサウンドドライバとしてMDSDRVが注目されています。

MDSDRVについて

MDSDRVはIan Karlsson氏が開発しているサウンド環境です。MMLで記述した楽曲(とSE)をコンパイルしてひとまとめにしたうえでゲームへ実装する流れ(SGDKのXGMドライバは曲単位で実装)となっており、そのうえでXGMのような多重PCM再生が可能な先進的なサウンド環境です。SGDK上でも動作するため、より高度なメガドラゲームの開発を目指す人に注目されています。

SGDKへの実装も容易で、動作も軽量です。また、サウンドファイルがBGM、SEともに一つのファイルにまとめられるため、同じPCMを複数の曲で使用されている場合でも自動的に流用してくれます。容量面の問題は悩みのタネですが、MDSDRVはMMLからコンパイルするため容量も小さくなります(SGDKのXGMはVGMからの変換するため大きくなりがちです)。もちろん、PCMを多用すればその限りではありませんが、状況に応じた柔軟な開発が可能であることは、開発者にとって大事なことです。SEもMMLで作成できるのが嬉しいですね(FM/PSG/PCM)。PCMはSE側では最大3チャンネルまで同時に再生可能です(ただし、1つめのチャンネルはBGMと共有)。後日、SGDKへの実装方法についての記事も書きたいと思います。


この記事が気に入ったらサポートをしてみませんか?