ボスコニアン(MSX)を改造しよう

「MSX版ボスコニアンを改造して、X68000版ボスコニアンのBGMを鳴らしてみよう」 というページです。

といっても、実行するための環境を揃えるのはなかなか大変なので、とりあえずは、動画を見て楽しんでいただければと思います。

追記(2020.11.29)

追記(2020.12.22)

必要なもの

この改造を楽しむには、以下のものが必要です。

  1. MSX本体(RAM16KB以上)
  2. MSX版ボスコニアンのROMイメージ
  3. YAMAHA FMサウンドシンセサイザーユニット(SFG-01)または FMサウンドシンセサイザーユニットII(SFG-05)
    ※サイドスロットがない機種ではYAMAHAユニットコネクター(UCN-01)が必要
  4. Panasonic MSX-AUDIO(FS-CA1)
  5. MegaFlashROMなどの、ASCII8タイプの4MビットROMを作成できる環境
  6. これら(3. 4. 5.)がすべて入るスロット

いかがでしょうか…。さすがにヘビーすぎますよね…。

MSX-AUDIOの形状の問題もあって、3スロットあっても入らなかったりしますし…。

追記(2020.11.28)

SCC対応ROM版は、以下のものがあれば動作します。

  1. MSX本体(RAM16KB以上)
  2. MSX版ボスコニアンのROMイメージ
  3. MegaFlashROMなどの、KONAMI-SCC タイプの3MビットROMを作成できる環境

追記(2020.12.22)

SCC対応ディスク版は、以下のものがあれば動作します。

  1. MSXturboR本体(RAM256KB以上)
  2. MSX版ボスコニアンのROMイメージ
  3. SCCカートリッジ(またはSCC内蔵のROMカートリッジ)

改造ツールのダウンロード

以下のzipファイルをダウンロードしてください

MakeMusicBosconianMsx.zip 2020.12.22 update

作成方法

  1. ダウンロードしたzipファイルを展開してください。
  2. 展開したフォルダに、MSX版ボスコニアンの ROMイメージBOSCONIA.ROM という名前でコピーしてください。
    ※ファイル名に注意! BOSCONIAN.ROM ではなく BOSCONIA.ROM(8文字.3文字) です!
  3. フォルダ内の MakeMusicBosconianMsx.exe を実行してください。
  4. BOSCONFM.ROM というファイルが作成されれば成功です。 ASCII8タイプ のメガROM として MegaFlashROM などに書き込んでください。

追記(2020.11.28)

    SCC対応ROM版 として BOSCONSC.ROM というファイルも作成されるようになりました。 KONAMI-SCCタイプ のメガROM として MegaFlashROM などに書き込んでください。

追記(2020.12.22)

実行方法

  1. MSX本体に、SFG-01(05)、MSX-AUDIO、ボスコニアン(改)のROMを入れて電源を入れてください。スロットはどこでも構いません。
  2. ゲームをスタートすると、FM音源のBGMが流れるようになります。

追記(2020.11.28)

追記(2020.12.22)

サウンドテスト

 


エミュレータで遊ぼう

実機で楽しむには相当ハードルが高いですが、エミュレータを使うと、比較的簡単にボスコニアン(改)を楽しむことができます。

必要なもの

エミュレータの設定

  1. 以下のサイトから blueMSXの最新版をダウンロードしてください。
    http://bluemsx.msxblue.com/jdownload.html
    ※最もお手軽に楽しむには、インストーラー無しの簡易バージョン blueMSXv282.zip をダウンロードするのがおすすめです。
  2. 一度 blueMSXを起動してみてください。C-BIOS が起動すればOKです。
  3. メニューバーから [ツール] → [マシン構成編集] を選択してください。デフォルトで用意されている「MSX2 - C-BIOS」という仮想の機種の構成ウィンドウが開きます。
  4. この機種をカスタマイズして、サウンドに特化した新しい機種を作成します。[メモリ]タブを開いてください。スロット 3-1 と 3-3 が空いているので、そこに MSX-AUDIO と SFG-01 を搭載することにしましょう。
  5. まずは スロット3-1 に MSX-AUDIO を追加します。[追加] ボタンをクリックして、マシン構成編集ウィンドウを開いてください。
  6. [ファイル]には、本来 MSX-AUDIO の ROMイメージをセットする必要があるのですが、拡張BASIC等を使用しないのであれば実はファイルは適当で構いません。 ダミーファイルを作成するのも面倒なので、例えば C-BIOSのロゴマーク blueMSXv282\Machies\MSX2 C-BIOS\cbios_logo_msx2.rom などを指定しても大丈夫です(笑)
  7. [タイプ] に [MSX Audio]を、[スロット] に [スロット 3-1]を指定してください。
  8. 同様に スロット3-3 に SFG-01 を追加します。[ファイル]には cbios_logo_msx2.rom を、[タイプ] に [Yamaha SFG-01]を、[スロット] に [スロット 3-3]を指定してください。
  9. このような形になればOKです。
  10. 起動するためには、この機種を保存しておく必要があります。[別名保存]をクリックし、適当な名前で保存してください。ここでは [MSX2 C-BIOS(SoundCustom)]という名前にしました。
  11. 完成です。

エミュレータでの実行方法

  1. blueMSXを起動し、[ツール] → [マシン構成編集] で、先ほど作成した [MSX2 C-BIOS(SoundCustom)] に切り替えてください。
  2. [SLOT] をクリックし、ボスコニアン(改)のROMイメージ BOSCONFM.ROM を選択します。この時、ROMタイプが ASCII 8 になっているか確認してください。
  3. ゲームをプレイして、FM音源とPCMが鳴ってくれれば成功です。うまくいったでしょうか?

機種によってタイトル画面の一部が色化けする原因

ここからは興味のある方だけ読んでいただければと思います。

ボスコニアンを起動したとき、タイトル画面の一部が色化けしていることに気づいた人もいるかもしれません。

ボスコニアンは、タイトル画面もゲーム画面も、 MSX の SCREEN1 を使用しています。

SCREEN1 は、画面全体で 256パターン単色のキャラクター しか使用できないのですが、それらのキャラクターは 8文字ごとに色を指定することができます。

(ナムコのタイトルはグラフィックに優れた SCREEN2 ではなく SCREEN1 を使用しているものが多いです)

タイトル画面のキャラクターデータを覗いてみると、このような感じになっていました。

8文字ごとに色が指定されていますが、問題は最上段の黄色で囲んだ部分です。

(C)の右にある3文字が「BOSCONIAN」のロゴを形成するために使用されているキャラクターで、それ以外の5文字はスコア表示などに使われるフォントになっています。

当然、「ロゴは赤、フォントは白」で表示したいところなのですが、SCREEN1 では 8文字ごとにしか色が指定できないため、普通は「8文字すべてが赤」か「8文字すべてが白」のどちらかでしか表示することができません。

ナムコの開発陣は、これを以下のような方法で解決しました。

1)垂直同期割り込み(1/60秒ごとに画面の描画が終わった瞬間に発生する割り込み)からの時間を、マシン語の各命令の処理時間から予測し、上から2行目のスコア表示が終わった辺りのタイミングで、黄枠の8文字の色を「赤」に変更する。
2)さらに処理時間を計測し、「BOSCONIAN」のロゴの描画が終わった辺りのタイミングを狙って、8文字の色を「白」に変更する。

つまり、画面描画を行う1/60秒の間で2度の色変更を行うことによって、『スコアのフォントは白、「BOSCONIAN」のロゴは赤、著作権表示は白』 ということを実現しています。

テクニカルではあるものの、比較的知られている方法ではあるのですが、ここでMSXならではの問題が発生します。

機種によって BIOSが違うため、処理時間が異なる ということです。

アプリケーション側のプログラムの処理時間は正確に計測できますが、BIOSルーチンについてはMSXの機種ごとにプログラムが異なるため、処理時間も微妙に違ってきてしまうのです。

例えば、MSX2はMSX1に比べて画面描画周りの処理が複雑になっているため、BIOSルーチンを使ってのVDPアクセスは若干遅いです。

エミュレータ上で、どのラインを描画中に8文字の色変更が行われるのか調べてみました。

一般的なMSX1では黄色のライン、一般的なMSX2では緑色のラインの描画中に、色変更が行われていました。

MSX2では問題がないのに、多くのMSX1で実行すると微妙に色化けが起こるのは、このタイミングのズレが原因だと思われます。

「開発に使用していたMSXのBIOSがたまたま遅かった」「デバッガーやデバッグコードを実行した状態で計測していた」「発表前のMSX2を使用していたため気づかなかった」 などなど、理由を勝手に想像することはできますが、真実は開発に関わった方のみぞ知る、ということで。

以上、勝手な推測のコーナーでした。

ちなみに、色化けを修正する方法ですが、471AH(ROMイメージの先頭から0x071Aバイト)が調整用のタイマー値になっているので、 元の値の 11H を 12H などに増やすことで MSX1でも色化けしなくなります。


戻る