BIOS의 PSG 관련 루틴을 패치하여, SCC 사운드를 출력하는 프로그램입니다.
출처 : http://www.tiny-yarou.com/sccplay.html
2015/4/1 update
・付属ツールの NandemoSCC Converterをv2.0にアップデート。スタンドアローンで実行可能なROMイメージファイルを作成できるようにしました。
MSXのサウンドをSCCで鳴らしてみよう
コナミのサウンドチップ「SCC」は、MSXユーザーだった人なら皆さんご存知だと思います。
グラディウス2で初めてSCCサウンドを聴いたときは、本当に感動しました。
最近になり、ネットでSCCの仕様というものを調べてみたところ、
「PSGのサウンドレジスタに渡すデータと、SCCのレジスタに渡すデータは、かなり近い」
ということを知りました。
そこで、以前作ったMSX2版MAPPYを改造してみたのですが、本当に簡単に、SCCの音を鳴らすことができました。
その後も、いくつかの市販ゲームのSCC改造を行ったりして、一人で ニヤニヤ していたのですが、あることに気がつきました。
ほとんどのタイトルは、同じBIOSルーチンを使ってPSGにアクセスしている のです。
直接ポートを叩いたりしている(と思われる)ものはほんのわずかで、それ以外は全て "CALL 0093H" を使っていました。
ということは、これを自動的に検索・置換するようなツールを作れば、片っ端からSCC化できるのではないか?と。
そうすれば、みんなで ニヤニヤ できるのではないか?と。
以前、SG-1000のソフトをMSXで動かすための SG2MSX というツールを作ったのですが、その時に使った方法を応用して、チャレンジしてみることにしました。
※技術的なことには興味ないという人は 「ツールとか」へジャンプ
何でもよいからSCCで鳴らしたい
- (事前)MSX用のソフトをROMイメージファイル化しておく
- SCCカートリッジを初期化する
- 自前のSCC演奏ルーチンを、邪魔にならないどこかのRAMに置いておく
- MSX-DOS上で、ROMイメージファイルを、4000HからのRAMにロードする
- RAMに転送されたプログラムを解析し、0093Hをコールしているところを、3.で配置したSCC演奏ルーチンのアドレスに飛ぶよう書き換える
- 書き換えが終わったRAM上にあるプログラムを実行する
- BIOSを使わずにPSG制御をしている「けっきょく南極大冒険」や、ハードウェアエンベロープを使いまくりの「フラッピー」なんかは、今回のSCC制御ルーチンでは鳴りません。
- ROMじゃないと動作しなかったり、自己書き換えをチェックするようなプロテクトがかかっているタイトルも、起動しません。
- 32KBまでしかRAMには載らないので、メガROMタイトルは全く起動しません。
まずは何でもよいので、MSXの市販ゲームをSCC対応してみることにしました。
BIOSを使用してPSGレジスタにデータを送る場合、WRTPSG(0093H)というBIOSルーチンを使います。
PSGレジスタ番号をAreg、出力データをEregに入れてこのアドレスをコールすれば、PSGにデータを出力してくれる、というものです。
そこで、 0093Hをコールしている箇所 を、全て 自前のSCC制御ルーチンをコールする ように書き換えてみました。
ちなみに、「自前のSCC制御ルーチン」といっても、本当に簡単なもので、 PSG3チャンネル分の「トーンデータ」と「ボリュームデータ」を、該当するSCCのレジスタに出力するだけのプログラムです。
SCCとPSGは、この部分のデータには互換性があるので、アプリケーションから渡ってきたデータを何も考えずにSCCに出力すれば、とりあえず、音は鳴るのです。
また、メモリに常駐させる都合上、プログラムサイズは限界まで小さくしたかったので、ノイズ制御やハードウェアエンベロープのような「SCCにない機能」はあっさりと諦めました。
プログラムの流れは以下のようになります。
2.については、MAPPYのときに作ったものをそのまま流用しました。SCCの仕様については、ひろゆきさんのページを大いに参考にさせていただきました。ありがとうございました。
3.については、コナミ作品のようにRAM8KBで動くソフトであれば C000H-DFFFHは空いているので、デフォルトではSCC演奏ルーチンはD000Hに置くようにしました(変更可)。
4.については、最大で2ページ分、4000H-BFFFHまでの32KBしか使えないので、32KBを超えたり、バンク切り替えを行っているROMには非対応です。
5.については、CALL命令とJP命令、その他ZフラグやCフラグを見てのブランチ命令などを探して、置換するようにしました。
これを自動的に行う簡単なツールを作り、手持ちのROMをコンバートしてみた結果…
かなりのタイトルがSCCで鳴りました!
色々条件はありますが、ナムコット系や初期のコナミのタイトルなどは結構動作するので、これでも十分楽しめました(^_^)
グラディウスをSCCで鳴らしたい
- (事前)MSXの電源を投入後、グラディウスを後差ししておく(自己責任)
- SCCカートリッジを初期化する
- 自前のSCC演奏ルーチンを、邪魔にならないどこかのRAMに置いておく
- MAIN-ROMのページ0(0000H-3FFFH)を、RAMのページ0にコピーする
- コピーしたRAMの0093Hを、自前のSCC演奏ルーチンのアドレスにジャンプするよう書き換える
- ページ0を、MAIN-ROMからコピーしたRAMのスロットに切り替え、MAIN-ROMの存在するスロットを示すワークEXPTBL(0FCC1H)も書き換えて、あたかも改造RAMがMAIN-ROMであるかのように偽装する
- ROM上のグラディウスを普通に実行する
- メガROMを使っている「夢大陸アドベンチャー」「ガリウスの迷宮」や、RAM上では動かなかった「魔城伝説」「ツインビー」なども動きました。
- BIOSを使わずにPSG制御をしている「ハイドライド3」は、今回のSCC制御ルーチンでは鳴りませんでした。
- スロット偽装に引っかからないタイトルもかなりあります。MAIN-ROMがスロット0-0にあることを決め打ちしていたりするとお手上げです。
- SCC演奏ルーチンが置かれている場所を、そのソフトがワークエリアとして使われているとダメです。途中で動かなくなったりすることもあります。
ここまでは比較的あっさりとSCC対応ができたこともあって、ちょっとだけ欲が出てきました。
「グラディウスをSCCで鳴らしたい!」
SCCが初めて搭載されたのは「グラディウス2」だったと思いますが、元祖「グラディウス」もSCCで鳴らしてみたいと。
コナミゲームコレクションのSCC対応版グラディウスはありますが、それはそれとして(^_^;)
グラディウスは、1メガROM(128KB)のカートリッジなので、前の例のようにRAM上にロードして書き換える、というようなことができません。
また、仮にRAMにデータを置くことができたとしても、メガROMのバンク切り替えの処理などをソフトウェアで対応することは難しいです。
つまり、「ソフト側を書き換えずに、なんとかSCCへデータを出力したい」ということになります。
ソフト側が修正不可なら、BIOSを修正してしまえば良いではありませんか。
実は、以前、MSX2のドラスピを作ったときに、0038Hの割り込みフックをどうしても書き換えたくて、
「プログラム起動直後にBIOSを裏RAMに全コピーし、必要な部分を書き換えて、その裏RAMをMAIN-ROMのように偽装する」
という禁断の技(?)を使いました。
そのときの方法を利用して、PSG制御のBIOS(0093H)からの処理を書き換えて、SCC演奏ルーチンに飛ぶようにしてしまおうというわけです。
ゲーム側のプログラムは一切改造しなくても良いですし、そもそも、オリジナルのROMを差した状態で動かすので、1メガROMでも100メガROMでも関係ありません。
ただ、MAIN-ROMの偽装というのはかなり大きな変更なので、「まともに動いたらラッキー」くらいの気持ちでやってみました。
流れとしてはこんな感じになります。
すると…
グラディウスのサウンドがSCCで鳴りました!
MSX2用タイトルもSCCで鳴らしたい
- (事前)対象となるMSX2のソフトを、ROMイメージファイル化しておく
- (事前)ROMイメージファイルの中を見て、0093Hを呼んでいる箇所をすべてSCC演奏ルーチンを呼ぶように書き換える
- (事前)改造したイメージを、似非RAMやMega Flash ROMに焼いておく(あるいはエミュレーターを使用する)
- SCCカートリッジを初期化する
- 自前のSCC演奏ルーチンを、邪魔にならないどこかのRAMに置いておく(2のアドレスと合わせる)
- 改造ROMに実行を移す
MSX2用のタイトルは、メガROMとなっているものがほとんどなので、そもそもRAM上で動かすことができないのですが、何よりも厳しいのは、
64KBのRAMがあることが前提となっている ということです。
つまり、アプリケーション側が64KBのRAMすべてを使う可能性が高いため、改造BIOSを裏RAMに置いておくようなことができないのです。
(ディスク版のタイトルも同様です)
メガROMなのでRAM上で動作させることもできず、BIOSを書き換えることもできないのでは、さすがにSCC対応は厳しいです。
もしやるとすれば、「プログラム自体を書き換えたROMを作る」ということです。
実機でやろうと思うとハードルは高いのですが、blueMSXなどのエミュレーターであれば、比較的簡単に遊ぶことができます。
後ほど、自動的にSCC用改造をするツール「SCCCONV」を載せておきますが、すべてが自動的にうまくいくわけでもないので、あくまでも参考程度だと思ってください。
また、ディスクイメージの改造についてですが、SCCCONV一発でというわけにはなかなかいきませんが、その気になればこんなこともできます。
■イースシリーズをSCCカートリッジに対応させよう
Ys1,Ys2,Ys3をSCC対応にするパッチを作ってみました。SCC制御部分もディスクの空き領域に組み込むことで、スタンドアローンで起動するようにしてみました。(2015/2/11)
MSXturboRは無敵
- (事前)MSXturboRの電源を投入後、なんらかのROMを後差ししておく(自己責任)
- SCCカートリッジを初期化する
- 自前のSCC演奏ルーチンを、邪魔にならないどこかのRAMに置いておく
- MAIN-ROMのページ0(0000H-3FFFH)を、マッパーRAMのDRAMモード用のセグメントにコピーする
- コピーしたRAMの0093Hを、自前のSCC演奏ルーチンのアドレスにジャンプするよう書き換える
- DRAMモードに切り替える
- ROMを普通に実行する
twitterでこのツールを発表したところ、とある方が、こんなツイートをしておりました。
「turboRのDRAMモードでは…(以下略)」
turboRについてはほとんど知らなかった私は、謎の単語「DRAMモード」について色々調べてみました。
どうやら、turboRのみにある、「BIOSをRAMにコピーして、あたかもそれがROMのように振る舞うモード」のようでした。
本来は、BIOSをROMよりも高速なRAMに置くことで、turboRをさらに高速動作させるために用意されたモードなのですが、
「RAMにコピーしたBIOSをこっそり書き換えることも可能」とのこと。
こんな魅力的なモードがあったとは。turboRは手にいれただけで満足してしまって、全然知りませんでした。不覚です。
というわけで、早速やってみました。
これは… これはヤバイです!どんなタイトルも動きまくりです!
まず、改造BIOSは、turboRのマッパーRAMの後半を使うため、アプリケーションが使うオモテの64KBはまったくの無傷です。
また、改造BIOSは完全にROMとして動作するため、アプリケーションからは改造されたことすらわかりません。
MSX2用タイトルでも、メガROMでも、もっというとディスク版タイトルでも、BIOSさえ使っていれば何でもSCC化できるのです。
真の「なんでもSCC」が完成したのです!(…大げさ。そんなに「なんでも」ってわけじゃないです)
turboR、今ならオクでそれなりに見かけます。専用ソフトは少ないですが、ぜひ一台お手元に。
BIOSを使わないタイトルもSCCで鳴らしたい
「MSXturboRは無敵」などと言ったものの、結局、PSG制御用BIOSを乗っ取っているだけなので、BIOSを使っていないタイトルはSCC化することができません。
I/Oポートに直接アクセスしているような、けっきょく南極大冒険はダメです。スーパーレイドックもハイドライド3もダメです。
「無敵」といいながら、実際は敵だらけなのです。
もちろん、プログラム自体を改造すれば鳴らすことはできますが、ディスク版ならすぐに試せても、ROM版のタイトルとなると、ハードルは大幅に上がります。
一番最初の出発点が「みんなで ニヤニヤしたい」ということですし、できるだけ簡単に、誰でもできる方法でSCCを鳴らしたい。
プログラムを改造せずに、なんとかならないものか。
ということで、若干強引ではありますが、「PSGのレジスタを監視し、データをSCCへコピーするルーチン」を作成し、それを割り込みで呼ぶようにしてみました。
すると、
「けっきょく南極大冒険」がSCCで鳴りました!
VBLANKのたびに無駄な処理が走ることになるので、若干重くなっているとは思うのですが、SCC自体はしっかりと鳴ってくれました。遅延もほとんど気になりません。
方針が決まったので、あとはツール側の対応です。BIOS書き換えを使って0038Hの割り込みフックを書き換えてから、ROMを起動するようにしました。
今までは対応できなかったタイトルを試してみたところ、ついに、
「ハイドライド3(MSX2)」がSCCで鳴りました!
ハイドライド3は感動です。turboRのDRAMモード専用ですが、turboRとSCCカートリッジとハイドライド3をお持ちの方はぜひお試しください。
※ページ0をRAMとして使い、自前で0038Hを書き換えているものについては、残念ながら鳴らないです。(ディスク版は多いかも…)
動画
- 以上の方法を使って、片っ端からSCCで鳴らしてみました。
ツールとか
- @0 … 無音
- @1 … ノコギリ波
- @2 … 矩形波
- @3 … 矩形波(デューティー比75%)
- @4 … 正弦波
- @5 … ベース
- @6 … ダブル
- @7 … コ1
- @8 … ナ1
- @9 … ナ2
- ON … SCCと同じタイミングでPSGにもデータが送られます。
- OFF … PSGにはデータを送りません。SCCのみの音になります。ノイズ系はすべて鳴らなくなります。
- NORMAL … 通常のBIOSを使用します。
- CUSTOM(I/O) … BIOSを裏RAMにコピーして、PSG制御用I/Oポートへのデータ出力部分を、SCCへ出力するように書き換えます。PSG制御にBIOS(0093h)を使っているタイトルに有効です。
- CUSTOM(INT) … BIOSを裏RAMにコピーして、0038Hの割り込みフックを書き換え、PSGレジスタを常時監視してその値をSCCへデータをコピーするようなルーチンを呼ぶようにします。PSG制御にBIOSを使っていないタイトルはこちらを試してください。
- CUSTOM[DRAM](I/O)【tR】 … 「CUSTOM(I/O)」のBIOSを、マッパーRAMのDRAMモード用セグメントに配置します。
- CUSTOM[DRAM](INT)【tR】 … 「CUSTOM(INT)」のBIOSを、マッパーRAMのDRAMモード用セグメントに配置します。
※DRAMモードは、アプリケーションからは通常のBIOSにしか見えず、また、メインRAM64KBもフリーとなるため、無敵です。turboRをお持ちの方は、[4][5]だけで大丈夫だと思います。 - RAM(COPY FROM ROM) … スロットに差してあるROMの中身を4000HからのRAMにコピーし、PSG制御用BIOSを呼んでいる部分をSCC演奏ルーチンを呼ぶように書き換えた後、RAM上で起動します。
- RAM(ROMイメージファイル) … 4000HからのRAMをそのままROMデータとみなして、PSG制御用BIOSを呼んでいる部分をSCC演奏ルーチンを呼ぶように書き換えた後、RAM上で起動します。事前にRAM上にROMイメージが置かれていないと、どうなるかわかりません。
※ディスク版NandemoSCCの場合、起動時に「 SCC <ROMイメージファイル> 」とすることで、ROMイメージをRAM上に読みこむことができますが、そのためのものです。
- ROM … スロットに差してあるROMをそのまま起動します。当然、BIOSが「CUSTOM」になっていないとSCC対応されません。
- DISK【tR】…SCC演奏ルーチンやBIOS変更設定等を有効にしたまま、MSXをリブートします。裏RAMはクリアされるので、BIOSが「CUSTOM[DRAM]」以外のときはあまり意味がありません。ディスク版のソフトに使用してください。
- 基本スロットの場合は00H~03H、拡張スロットの場合は80H~8FHで指定してください。
- Z80 … Z80モードで起動します。
- R800【tR】 … 強制的にR800モードで起動します。
- D000 … デフォルトです。RAMが8KBでも動作するタイトルであれば、この設定で動くでしょう。
- E000 …
- F000 …
- F750 … ユーザー関数のパラメータに関するワーク PARM2(F750H) を使用します。RAMが16KB以上必要なタイトルはこの設定を試してください。
- F87F … ファンクションキーの文字列保存エリア FNKSTR(F87FH) を使用します。RAMが16KB以上必要なタイトルはこの設定を試してください。
- 基本スロットの場合は00H~03H、拡張スロットの場合は80H~8FHで指定してください。
- "???"の場合は、開始時に自動的に検索します。
- [1]ROM/USE RAM … MSX1・32KBROMまで・PSG制御にBIOS使用
- [2]MEGAROM/CUSTOM BIOS(I/O) … MSX1・MEGAROM可・PSG制御にBIOS使用
- [3]MEGAROM/CUSTOM BIOS(INT) … MSX1・MEGAROM可・PSG制御にBIOS不使用
- [4]MEGAROM/CUSTOM BIOS[DRAM](I/O)【tR】 … 機種問わず・ROMサイズ問わず・PSG制御にBIOS使用
- [5]MEGAROM/CUSTOM BIOS[DRAM](INT)【tR】 … 機種問わず・ROMサイズ問わず・PSG制御にBIOS不使用
- [6]DISK/CUSTOM BIOS[DRAM](I/O)【tR】 … 機種問わず・ROM,DISK問わず・PSG制御にBIOS使用
NandemoSCC v2.3 / NandemoSCCConverter v2.0
ダウンロードはこちら
NandemoSCC23b_SCCConv2.zip 2015/4/1 update!
「NandemoSCC v2.3」は、今までつらつらと書いてきたことを自動的に行うためのツールです。
・ディスク版とROM版がありますが、ディスク版はROM版のプログラムをRAMに転送して実行するだけなので、中身は一緒です。
・turboR用にいくつかの機能が拡張されました。MSX2+までだと旧バージョンとほとんど変わりません。
・設定がわかりづらいので、代表的な設定をプリセットで用意し、ワンキーで設定できるようにしました。
・PSGのレジスタ7を見て、チャンネルごとのON/OFFに対応しました。(v2.1)
・リアルタイムにPSGのレジスタを見て、同じデータをSCCに送るモードを用意しました。BIOS不使用のタイトルも、これである程度鳴るようになりました。(v2.2)
・メニュー制御にバグがあったのを修正しました。(v2.3)
・SCCカートリッジのスロットをユーザーが指定できるようにしました。(v2.3)
・SCCカートリッジの初期化時にノイズが発生することがあったバグを修正しました。(v2.3)
・SCC演奏ルーチン内でフラグが保護されないバグを修正しましたた。(v2.3b)
起動方法
ディスク版(MSX-DOS版)
- ダウンロードファイルの中の forMSXフォルダにある、NANDEMOSCC.dsk がディスクイメージになります。
ドライブAに入れてMSX-DOSを起動した後、コマンドラインで
SCC
と入力すると起動します。
また、
SCC <ROMイメージファイル>
で、指定したROMイメージファイルをディスクからロードし、RAM上に配置した状態で、ツールを起動することもできます。
ROM版
- 「SCCBOOT.ROM」のみで動作します。エミュレーターでは、このROMイメージをスロット1にセットして起動してください。
(ただし、openMSXはROMイメージのサイズを8KBちょうどにする必要があるので、バイナリーエディタなどでダミーデータを加えてサイズを調整してください)
実機で動作させる場合、Mega Flash ROM SCC などに /K オプションで焼いて、スロット1に入れておいてください。
ちなみに、エミュレーター「blueMSX」「openMSX」では、公式に Mega Flash ROM SCC がサポートされているので、
・blueMSXの場合はスロット1に「特殊カートリッジ」→「Mega Flash ROM SCC」をセット
・openMSXの場合は起動時のExtensionsから「Mega Flash ROM SCC」を選択
この状態でNANDEMOSCC.dskのイメージからMSX-DOSを起動し、コマンドラインから
OPF SCCBOOT.ROM /K
を実行すると、「SCCBOOT.ROM が焼かれたMega Flash ROM SCC」をエミュレートすることができます。
SCCカートリッジについて
- SCCカートリッジは、基本的にはツール側で探すので、どこのスロットに入れておいても構いません。(ユーザーがスロットを指定することもできます)
また、SCCが搭載されているカートリッジであれば、Mega Flash ROM SCC+でも、スナッチャーのSCCカートリッジでも動作しますし、実はグラディウス2やF1スピリットでも動作します(ただし、後差しが必要)。
SCCカートリッジを認識できない場合、すべてのサウンドは通常通りPSGで鳴ります。
各項目について
- 「NandemoSCC」の各項目について説明します。カーソルキーの上下で項目を選択し、左右でパラメーターを変更できます。
パラメーターの設定が終了したら、スペースキーでROMをブートします。
turboR専用機能については【tR】と記述してあります。
SCC chA~chC … SCCのチャンネルの波形を選択します。プリセットで以下の波形が指定できます。デフォルトは @1 のノコギリ波になります。波形の名前についてはあまり詮索しないでください(^_^;)
PSG … SCCを鳴らす際、PSGも同時に鳴らすかどうかの設定です。ただし、BIOSが「CUSTOM(INT)」「CUSTOM[DRAM](INT)」の場合、この設定は無視され、必ずPSGも鳴ります。
BIOS … どのBIOSを使用するかの設定です。
BOOT … ブート時の設定です。
ROM SLOT … BOOTオプションが「ROM」の場合に起動する、ROMのスロットを指定します。
CPU … CPUの設定です。SCCとは関係ありませんが、おまけで付けました。
PRG ADDR … SCC演奏ルーチンを配置するアドレスを指定します。
SCC SLOT … SCCが搭載されたカートリッジが入っているROMのスロットを指定します。
PRESET SETTING … 利用頻度が高い設定をプリセットとして準備しておきました。[1]~[6]までのキーを押すと、それぞれの設定に切り替わります。
ROMイメージの改造
- 前述した通り、MSX2+以前のマシンでMSX2用のタイトルのSCC化をさせようとすると、ほとんどの場合、ROMイメージを改造しなければなりません。
- Normal … メガROM以外(マッパー非搭載)の場合はこれを選択してください。
- Megarom (KONAMI without SCC) … コナミのメガROMタイトルはこれを選択してください。
- Megarom (ASCII8 Mapper) … コナミ以外のメガROMタイトルの多くはこのタイプになります。
- Megarom (ASCII16 Mapper) … 一部のメガROMタイトルで使われています。ASCII8で動作しない場合はこちらを試してみてください。
- Megarom (R-TYPE) … R-TYPEは特殊なマッパーを使用しているので、これを選択してください。
- オリジナルのROMよりも、8KB~16KBサイズが増えます。
- MegaFlashROMに焼く際は、"/K5"オプションをつけてください。
- blueMSXでは、ROMイメージファイルをSLOTにセットする際に、ROMタイプを "Konami SCC"にしてください。
- openMSXでは、[CartA]→[Select cartridge type]で、"Konami with SCC" を選択してください。
バイナリーエディタで置換しても良いのですが、誰でも簡単にできるように、ツールを作ってみました。
NandemoSCC Converter
2015/4/1 update!- ROMイメージファイルを、SCCドライバーを組み込んだROMに変換するツールです。
このツールで変換したROMイメージファイルは、NandemoSCCを経由しなくても、 MegaFlashROMに焼けば単独で実機動作させることができますし、そのままエミュレーターでロードすることもできます。
NandemoSCC をダウンロードして、forPCフォルダにある SCCCONV.exe というツールを起動してください。
実行するとウィンドウが開くので、各種設定をした後、ROMイメージファイルをドラッグ&ドロップしてください。 Replace code
Include SCC-Driver
chA,chB,chC … チャンネルごとのSCCの波形を選択してください。それらの波形データがROMに組み込まれます。 PSG off … PSGを鳴らすかどうかの指定です。これをチェックすると、SCCのみが鳴るようになります。 Original ROM type … 元になるROMの種類を選択してください。 |
ファイル名は、例えば「 DRACULA.ROM 」は、「 DRACULA_SCC.ROM 」になります。変換したときのログファイルが「 DRACULA_SCC.log 」として出力されます。
一度に複数のファイルをコンバートできるので、手持ちのイメージファイルを全部まとめてドラッグ&ドロップなどもできます。
作成されるROMイメージファイルは、コナミのSCC内蔵ROM、いわゆる"Konami5"と呼ばれるマッパーに対応したROMとなります。
強引に変換しているので、動かないROMも多いと思います。すみません。
メガROMのタイプが分からない場合は、nf_banさん の Gigamix Online を参考にされると良いかと思います。
MSX-DOSから
- MSX実機でも、簡単な変換を行うことができます。
ただし、BIOS(0093H)をコールしている部分を書き換えるだけなので、起動させるには別途NandemoSCCが必要になります。
ダウンロードファイルの中の forMSXフォルダに、SCCCONV.COM というMSX-DOS用ツールがあるので、これを使ってください。
例えば、DOS上で
SCCCONV.COM DRACULA.ROM -3
を実行すると、DRACULA.ROM の内容を解析し、 0093H をコールしている部分を F750H をコールするように書き換えて、新たに DRACULA.SCC というファイルで保存します。
(拡張子は必ず .SCC になるので注意してください)
最後の「-3」がアドレス指定オプションで、-0 はD000H、-1 はE000H、-2はF000H、-3はF750H、-4はF87FHになります。指定しない場合は D000H になります。
クイックスタートガイド
- RAM64KB以上で、ディスクが使えるMSXを用意します。
- あらかじめ NANDEMOSCC.dsk をディスク化し、同じディスクに、SCC化したいROMイメージファイル(MSX1用・メガROM以外)を入れておきます。
- スロット1にSCCカートリッジ、ドライブAに↑のディスクを入れて、MSX本体を起動します。
- MSX-DOSが起動するので、コマンドラインで "SCC ROMイメージファイル" と入力します。
- NandemoSCCが起動するので(BOOTオプションが自動的に「RAM」に設定されるはずです)、そのままスペースを押してゲームをスタートします。
- うまく動かない場合、PRG ADDRを変えながら、色々と試してください。
- RAM64KB以上で、ディスクが使える2スロット以上のMSXを用意します。
- あらかじめ NANDEMOSCC.dsk をディスク化しておきます。
- スロット1にSCCカートリッジ、ドライブAに↑のディスクを入れて、MSX本体を起動します。
- 電源を入れたまま、スロット2に市販ゲームのROMを入れます。自己責任で行ってください。
- MSX-DOSのコマンドラインで "SCC" と入力します。
- NandemoSCCが起動するので、[1]を押して、プリセット1を反映させてください。
- スペースを押してゲームを起動してください。
- うまく動かない場合、プリセット2で動く場合もあります。また、PRG ADDRを変えながら、色々と試してください。
- RAM64KB以上で、2スロット以上のMSXを用意します。
- あらかじめ、SCCBOOT.ROMをMFRSCCに焼いておきます(MFRSCCの場合は"OPF SCCBOOT.ROM /K"、MFRSCC+SDの場合は"OPFXSD SCCBOOT.ROM /K5" で焼けると思います)。これで準備は終了です。
- スロット1にMFRSCC、スロット2に市販ゲームのROMを入れて、SHIFTを押しながら MSX本体を起動します。
- 自動的にNandemoSCCが立ち上がるので、[3]を押して、プリセット3を反映させてください。
- スペースを押してゲームを起動してください。
- うまく動かない場合、PRG ADDRを変えながら、色々と試してください。
- あらかじめ、OPF.COM というツールを MFRのサイトからダウンロードしておき、MSXDOS.SYS、COMMAND.COM、SCCBOOT.ROM、OPF.COM を同じディスクイメージに入れておきます。
- blueMSXのスロット1に「特殊カートリッジ」→「Mega Flash ROM SCC」をセットし、ドライブAに↑のディスクイメージをセットして、blueMSXを起動します。
- blueMSX上で、MSX-DOSのコマンドラインから、"OPF SCCBOOT.ROM /K" で MFRSCC に SCCBOOT.ROMを焼きます。これで準備は終了です。
- あとは3)を参考にしてください。
- 4)を参考に、MFRSCCに SCCBOOT.ROMを焼いておいてください。
- また、SCCCONV.exe などを利用して、「SCC化改造したROMイメージ」を作成しておいてください。この時、指定したアドレスを覚えておいてください。
- スロット1にMFRSCC、スロット2にSCC化改造済みROMイメージをセットして、SHIFTを押しながら blueMSXを起動します。
- 自動的にNandemoSCCが立ち上がるので、BIOSオプションを「NORMAL」、BOOTオプションを「ROM」、PRG ADDR を「改造時に指定したアドレス」に設定してください。
- スペースを押してゲームを起動してください。
- うまく動かない場合、PRG ADDRを変えながら、色々と試してください。
- あらかじめ NANDEMOSCC.dsk をディスク化しておきます。
- スロット1にSCCカートリッジ、ドライブAに↑のディスクを入れて、MSXturboR本体を起動します。
- ROM版のゲームをSCC化したい場合、電源を入れたまま、スロット2にROMを入れます。自己責任で行ってください。
- MSX-DOSのコマンドラインで "SCC" と入力します。
- NandemoSCCが起動するので、ROMカートリッジの場合は[4]か[5]、ディスク版ゲームの場合は[6]を押してください。
- スペースを押してゲームを起動してください。ディスク版の場合は、ここでディスクを入れ替えて、再度スペースを押してください。
- うまく動かない場合、PRG ADDRを変えながら、色々と試してください。
- 4)を参考に、MFRSCCに SCCBOOT.ROMを焼いておいてください。
- 【ROM版をSCC化】スロット1にMFRSCC、スロット2に市販ゲームのROMを入れて、SHIFTを押しながら MSXturboR本体を起動します。
- 【ディスク版をSCC化】スロット1にMFRSCCを入れて、MSXturboR本体を起動します。
- NandemoSCCが起動するので、ROMカートリッジの場合は[4]か[5]、ディスク版ゲームの場合は[6]を押してください。
- スペースを押してゲームを起動してください。ディスク版の場合は、ここでディスクを入れ替えて、再度スペースを押してください。
- うまく動かない場合、PRG ADDRを変えながら、色々と試してください。
0)まずは動画を
- 最も簡単で、かつ、皆さんが使えそうな方法を動画にしてみました。
MegaFlashROMSCCやスナッチャーのSCCカートリッジがなくても、SCC搭載のタイトルを1本でも持っていれば遊べます。
1)MSX2+までの実機+ディスク+SCCカートリッジ+ROMイメージファイル(MSX1用・メガROM以外)の場合
2)MSX2+までの実機+ディスク+SCCカートリッジ+市販ゲームROMカートリッジ(MSX1用・メガROM可)の場合
3)MSX2+までの実機+Mega Flash ROM SCC(MFRSCC)+市販ゲームROMカートリッジ(MSX1用・メガROM可)の場合
4)blueMSXの場合
5)blueMSX+SCC化改造済みROMイメージ(MSX2用でもメガROMでもなんでも可)の場合
6)MSXturboR実機+ディスク+SCCカートリッジ+市販ゲーム(ROMカートリッジまたはディスク)の場合
7)MSXturboR実機+Mega Flash ROM SCC(MFRSCC)+市販ゲーム(ROMカートリッジまたはディスク)の場合
環境さえ揃っているのであれば、7)は無敵です。後差しリスクを抜きにすれば、6)も無敵です。とにかくturboRは無敵です。
スロット1にSCCBOOTの入ったMFRSCCを入れておけば、ROM版のゲームもDISK版のゲームも、とにかく片っ端からSCC化してくれます。
また、強制的にR800モードで遊べるのも楽しいです。イースなどは超快適になります。
よく分からなければ、遠慮なく twitterで聞いてください。ID: @tiny_yarou
最後に
- ノリで初めたSCC対応ですが、色々と欲が出てきて、だんだん大げさなことになってしまいました。
結局、PSGの3チャンネルと全く同じデータを SCCの3チャンネルに出しているだけなので、SCC専用に作られたサウンドと比べたら当然クオリティー的には遠く及びませんが、古いタイトルがSCCで鳴ったりするのはちょっと感動しました。
特にナムコット系は相性が良いですね(^_^)
皆さんも、お手持ちの古いタイトルを、SCCで鳴らしてみてはいかがでしょうか。
「片っ端から再生した動画」では、波形はすべてノコギリ波を使っていますが( @1, @1, @1 )、チャンネルごとにきちんと変えて鳴らすと、もっと良くなります。
ドラクエなんかは、かなりファミコンっぽくなったりして、面白かったです。
ちなみに、SCCBOOT.ROM の最後の320バイトは波形データです。
MUSICAでエディットできるものと同じフォーマットです。
32バイトずつ、@0~@9まで並んでいるので、ここを書き換えればオリジナルの波形で鳴らすこともできます。
あと、Mega Flash ROM SCC+ は、持ってると色々遊べるので、とても楽しいですよ!
【2/9 追記】
turboRのDRAMモードを使ってみました。turboRをお持ちの方は、ぜひお試しください。マジで無敵です。
댓글