新10倍セーブロードをSDカードで!

 

(1ChipMSX)OCM PLD v3.8.0

uniskie.hatenablog.com


を導入済みの方向けの記事になります。


■ SDカードを壊さずに新10倍カートリッジの状態セーブを使う方法


(公式1ChipMSX / DE0-CV + DEOCM 対応)
(もしかしたら実機 + MegaFlashROM SCC+ も対応?)
(この方法では、外付けFDDでもSDカードでも行けました)


動作確認リスト
OK:新10倍セルフモード
OK:グラディウス
OK:パロディウス
OK:ガリウスの迷宮
NG:グラディウス1(PAUSEをかけた時点で暴走)




クイックセーバーの皆様へ

新10倍カートリッジがあると、
状態を丸ごとディスクにセーブして、
セーブした時の状態から再開できるので便利ですよね。

ゲーム下手にとっては救世主のような機能です。


ところが、1chipMSXだと致命的な問題が発生します。

簡単にまとめると、

■ 問題:絶対ディスク破壊マンになる
■ 解決方法:
①Nextor for MegaSDHCで起動して
コマンドラインからSofaROMで新10倍+ゲームを起動
です。


■ なんかディスクが破壊されるんだけど…

そんな超便利機能「まるごと状態セーブロード」ですが
1ChipMSXでこの機能を使うと、なんと、ディスクを破壊してしまうのです…。
(気づかずに読み書きしていたらいつの間にかSDカードの中身全体が壊れていました)

参考:破壊されたディスクの中身(FDDイメージファイル)
(上)破壊される前。
(下)破壊されたディスク。

ブートセクタも含めて広範囲に壊されます。
読み込むだけで壊されることも。

新10倍カートリッジからのディスクアクセスですが、
新10倍と1ChipMSX内蔵MegaSDHCX(MSXDOS2)の内部処理は相性が悪いようで、
どうやってもディスクをめちゃくちゃに破壊してしまうようです。

・EPコマンドでFDDブートエミュレーションしても破壊
・SDカードの直接アクセスFAT12でもFAT16フォーマットでも破壊
と、どうしようもありません。

一見動作するように見えても、
実際にはほぼ確実にディスクを破壊
してしまうので困ったものです。


そこでMSXDOS2互換拡張版のNextorを使いました



重要なポイントは2つ
Nextorを導入したSD-BIOSで起動する
SofaROMで新10倍+ゲームを実行する

ゲームと新10倍カートリッジを物理カートリッジで起動した場合、
Nextorは(初期化プロセスの違いから)ディスクとして認識されない為、
ディスクが有効な状態からSofaROMゲームを起動します。

ということで、1ChipMSXでのNextorの導入方法と、
SofaROMの使い方を紹介していきたいと思います。


●Nextorの導入



↓Nextorを起動した画面


Nextor
入りのMSX2+ BIOSで起動する方法ですが、
本体のファームウェアを書き換えるわけではありません。
SD-BIOSというものが使えます。

SD-BIOSはSDカードに入れてあるシステムロムセットを電源投入時に読み込んで、
1Chipファームウェア内蔵のものの代わりに動かす機能です。


● SD-BIOSを作成する

MegaSDHC+DOS2カーネルの代わりに、Nextorが入ったSD-BIOSを作成する方法ですが、
今回紹介するSD-BIOSの作り方は2つあります。
どちらでもOKです。

① OCM PLD 3.8.0SD-BIOS作成環境
20200116 OCM-SDBIOS Pack v2.9 by KdL
が、ある人はそちらで作成できます。
https://gnogni.altervista.org/

make\make-sdb.cmd を実行。
出力ファイル名を例えば OCM-NEXT.DATなどとし、
[Firmware Menu] 2 = MSX2+ OCM-PLD v3.4 or later (default)
[Disk-ROM Menu] 3 = Nextor Kernel v2.1.0-RC1 Single SD-slot
[Main-ROM Menu] 1 = MSX2+ FS-A1WSX Fn-mod Yen
[Kanji-ROM Menu] どれでも
[Special-ROM Menu] どれでも
とすると、OCM-NEXT.DATなど指定した名前のファイルができます。
(ファイル名省略時はOCM-BIOS.DAT


② OCM-SDBIOS Pack v2.9が無い方は、
HRAさんのOCM改環境を利用してOCM PLD 3.8.0向けのSD-BIOSを作成する環境
を作りましたので、こちらを利用してください。
bios_image_maker_for_380.7z

ReadMe.txtを参照して準備をしたら、
hra-ocmkai-20200502\tool\bios_image_maker\roms の
make_blue_msx2p_nextor_for_380.bat を実行すると
OCM-BIOS_MSX2P_NEXTOR.DAT ができます。

 


● SDカードにSD-IBOSをセットする

SDカードからSD-BIOSを読み込む機能に必要な事は、
SD-BIOSをSDカードの最初のエントリに配置する」事です。

一番確実なのは、SDカードをフォーマットした後に最初にコピーする。

なので、SDカードを一旦フォーマットしたら、
作成したNextorSD-BIOSを一番最初にSDカードにコピーします。
これでOKです。

あとは、Nextor版SD-BIOSの入ったSDカードを挿して
1ChipMSXの電源を入れるSD-BIOSが読み込まれます。
リセットでは読み込まれません


● SDカードにNEXTOR.SYSなどをコピーする

(※ 先にSD-BIOSを入れておくこと。)

SofaROMはDOS向けツールなので
Nextorのシステムファイルが必要になります。

システムファイル一式はNextorのサイトからダウンロードできます。
バージョンがあっているものが必要になります。

この記事では2.10β2です。

https://www.konamiman.com/msx/msx-e.html

からNexotr.dsk をダウンロードしたら、
ディスクイメージ操作ツール(DiskExplorer など)で開いて、

NEXTOR.SYS、COMMAND2.COM、MSXDOS.SYS、COMMAND.COM

を、SDカードのルートディレクトにコピーします。

次に、残りの、

DELALL.COM、DEVINFO.COM、DRIVERS.COM、DRVINFO.COM、EMUFILE.COM、FASTOUT.COM、LOCK.COM、MAPDRV.COM、NEXBOOT.COM、NSYSVER.COM、RALLOC.COM、Z80MODE.COM

を、UTILSディレクトリにコピーします。

↑自分の環境はこんな感じ。

SDカードをフォーマットしたら
①SD-BIOSをコピー
MSX-DOS2のシステムファイルやツール類をコピー
③Nextorのシステムファイルやツール類をコピー(上書き)
の順番にすると良いかもしれません。

● 準備完了!! 起動確認!!

以上でNextor環境のSDカードインストールが終りましたので、
一度1ChipMSXの電源を切り、SDカードをセットしたら電源を入れます。

電源が入った時点でSDカードのアクセスランプが激しく点滅します。
ここでSDカード内のSD-BIOSが読み込まれます。

次にMSXロゴが出た後に、
Nextor.sys、Command2.comが読み込まれ、
Nexotorコマンドラインが立ち上がります。
MSX-DOS2互換コマンドラインです)


Nextor起動時の画面。(MSX1 RAM64KB以上の場合と、MSX2以降の場合)

こんな感じの画面になればOKです。
これで、Nextorの導入は終わりました。

ただし、1ChipMSXの構成では、
物理カートリッジから直接起動すると、
新10倍はNextorにつながったMegaSDをディスクドライブとして認識してくれません。

そこで、色々試した結果、
Nextorコマンドラインから、新10倍とゲームのROMイメージを読み込み起動することで、
新10倍カートリッジにディスクを認識させる事が出来ました。

そのために使用するROMローダーがSofaROMというツールです。


参考:Nextorよもやま情報

実機MegaFlashROM SCC+SD カートリッジは最初からNextorが入っています。
1ChipMSXにMegaFlashROM SCC+SDを挿せば簡単にできるかもしれません。
(未確認です)

※ 注:「MegaFlashROM SCC+」はSD無しなので要注意です。
BlueMSXNextorを使う場合、SunriseIDEというハードのエミュレーションを使うのですが、その場合は新10倍からのディスクアクセスでフリーズします。

MSXDOS2+MegaSDHC:NG
Nextor+MegaSDHC : OK
Nextor+SunriseIDE : NG

NextorMegaFlashROM SCC+SDドライバやファイル操作処理と新10倍相性が良いという事なのかもしれません。

●Nextorのバージョンによる問題

Nextor v2.1.0RC1だとMSXDOS1でフリーズするようです。
Nextorは安定版のv2.1.0 beta 2を使用してください。

1ChipMSXはMegaSDタイプなので、
Nextor-2.1.0-beta2.MegaFlashSDSCC.1-slot.ROM
20200116 OCM-SDBIOS Pack v2.9 by KdL\make\roms
または hra-ocmkai-20200502\tool\bios_image_maker\roms\nextor
に、 nextsdxr.rom
とリネームして置き換えます。
(古いファイルは名前を変えてバックアップしておくとよいと思います)

HRAさんのOCM改環境を利用してOCM PLD 3.8.0向けのSDBIOSを作成する環境を使用する場合は、そのまま使っても大丈夫でした。
20200116 OCM-SDBIOS Pack v2.9 by KdL を使用する場合は問題が発生しますので、v2.1.0 beta2に置き換えた方が良いかもしれません。

Nextorの安定版や最新版、使用方法などについては、Nextorを作成されているKonamimanさんのサイト https://www.konamiman.com/msx/msx-e.html#nextor を参照ください。(Chromeのページ翻訳機能とか便利です)

 


●SofaROMの導入


Nextor/MSXDOS2/MSXDOS1コマンドラインからゲームのROMを実行するためのツール
SofaROMの導入方法です。

SofaROMはこちらからダウンロードできます。
https://www.louthrax.net/mgr/

sofarom.zipをダウンロードしたら、解凍し、
SROM.COM
SROM.INI
を、SDカードにコピーします。

Nextorコマンドラインからパスの通るディレクトリに置くと便利です。
(AUTOEXEC.BATでSET PATHをしている場合)(ルートやUTILS等)

自分はAUTOEXEC.BATの中で
SET PATH=%1 %1\UTILS
と書いています。
(この%1は起動ドライブ名に自動で置き換わります)
こうしておくと、
Aドライブとして起動した場合は、
A:\ と A:\UTILSに置いたファイルはパスを省略してもアクセスできます。

新10倍カートリッジMGSAVE.COM等で取り込んでROMファイルを作ったら、
SROM.GE2 というファイル名して、
SROM.COMと同じディレクトリに置きます。
/G2 オプションを付けて、新10倍+ゲームで動作させるために必要です)

SROM.COM
SROM.INI
SROM.GE2
と、3つ揃えばOKです。

これで、準備が整いました。

参考:ROMイメージの取り込み方

電源が入った状態でカートリッジを後刺しすると、ショートしたりフリーズしたりする可能性があるので、

SHIFT+F12を押してスロット1端子を無効化する。
(内蔵ESE RAM SCCに切り替わり外部端子が無効化される)
②スロット1に新10倍カートリッジを挿す。
③(必ず)もう一回SHIFT+F12を押してスロット2の端子を有効化する。④MGSAVE SROM.GE2 /s1⏎と入力する

すると SROM.GE2として新10倍カートリッジのROMイメージが取り込めます。

注意点:

SHIFT+F12を押すと本体のLEDが一つ切り替わるのが確認できると思います。
そのLEDが点灯状態だとスロット1外部端子が無効
(内蔵ESE MegaRAM SCCが有効)な状態です。

MGSAVEする前にLEDが点灯していないことを確認してください。
点灯状態だとスロット1に挿した新10倍カートリッジではなく、
ESE Mega SCCの内容が保存されてしまいます。

 


■ SofaROMを使って「新10倍+ゲーム」を動かす。

自分は
GM ディレクトリに新10倍セーブファイル
・ROMS ディレクトリにROMファイル
・PATHの通ったディレクトリにSROM一式
と配置しています。

ゲーム起動時はカレントディレクトリのファイルを参照しますので、
あらかじめ
>CD GM
としてカレントディレクトリをGMディレクトリへ移動しておいてから
>SROM /G2 A:\ROMS\GARIOUS.ROM⏎
で、新10倍+ゲームを起動しています。

そうすると
新10倍やゲーム側では GM ディレクトリの中のファイルを操作するので、
ファイルが散らからず、管理が楽になります。
ゲームごとにディレクトリを変えても良いかもしれません。

↓SofaROMを実行したところ。


新10倍カートリッジは海外だと「GameMaster2」と言うそうです。
"Loading Game Master 2"で SROM.GE2(新10倍ROMイメージ)を読み込み、
"Loading ROM”で ゲームのROMファイル(ここではGARIOUS.ROM)を読み込んでいます。

これはESE MegaRAM SCC ひとつだけで、新10倍+ゲームを実行する凄い機能で、
1ChipMSXのスロット2内蔵のESE MegaRAM SCC(大容量の方)を使用し、
スロット1は通常スロットのままになります。
(スロット2は内部のEse MegaRAM SCCに切り替わるので使えません。)

ですので、SofaROMを使うと2スロット機でも外付けFDDが使えます。
FDDカートリッジを空いているスロット1に挿します。)

新10倍ROMとゲームROMのロードが無事完了すると、実行して良いか聞いてきます。
ここで、ReturnキーかAボタンを押すと新10倍+ゲームが起動します。
ロードがうまくいっていないようならここでキャンセルもできます。

※ その他の詳しいSofaROMの使い方は、SROM.TXT や SROM を実行した時に表示されるヘルプを参照してください。JoyMEGAにも対応したJoyToKey機能なども使えます。(ほかにも複数ROMを1スロットで動かす機能があるっぽい?)

起動(Launch ROM)すると、まず新10倍が動きます。
(物理カートリッジでと同じですね)



新10倍からゲームまで進んでセーブロードできるか試してみてください。
最初は、壊れても良いSDカードで実行することをお勧めします。

注意:ゲームが起動したらSDカードを抜かない事。
認識しなくなったり、フリーズしたりすることがあります。
NextorがDOS1モードでない場合、ディスクイジェクトを検出すると、カレントディレクトリがリセットされるなど、内部的に処理が実行されますが、そこでおかしくなるようです。

新10倍機能が有効な時、
STOPキー(1ChipMSXはENDキー)を押すと、新10倍機能の「ポーズ」になります。
STOPキー(1ChipMSXはENDキー)をもう一度押すとポーズが解除されます。

ポーズ状態でCTRLキーを押すと、DISKメニューが出ます。




DISK SAVE
SCREEN DATA
GAME DATA
DISK LOAD
GAME DATA

END
を選択すると戻ります。

ディスクメニューから抜けてポーズに戻ったら、
STOPキー(1ChipMSXはENDキー)を押してポーズを解除します。

(※ 新10倍機能では、操作はキーボードのみを受け付けます。ジョイスティックは不可

GAME DATAはゲーム中に状態をまるごとSAVE/LOAD出来ます。(ステートセーブ機能)
SCREEN DATAは新10倍のSELFからLOAD出来ます。(スクリーンショット機能)



SCREEN DATAの表示確認

SCREEN DATAをセーブしたら
リセットして、再びSROMで新10倍+ゲームを起動します。
(表示確認だけなら新10倍だけでも良いです。)

新10倍が起動したら「SELF」→「LOAD SCREEN DATA」を選びます。


表示できました。

デフォルトのMegaSDHC MSXDOS2だと、
この画面の前(スクリーンデータのロード時点)でフリーズしますが、
MegaSD Nextorにすることで正常に動作します。

(※ デフォルトのMegaSDHC MSXDOS2だと、
実は、ファイル一覧を表示した時点でもうディスクが壊れ始めています。)


ここ数日遊んでいますが、今のところ問題は無さそうです。

(※ Nextorバージョンが変わったらどうなるか分かりません



SDカードを読み書きするので、FDDを使うよりも圧倒的に速いですね。

新10倍カートリッジのまるごとセーブロード機能は、
本体が変わるとデータに互換性が無い場合があるのでご注意を。

 


関連記事:

uniskie.hatenablog.com


↑Nextor導入のついでで、1ChipMSXをMSX1 BIOSで動作させた記事