1ChipMSXをMSX1として(疑似)動作させてみよう!

 

はじめに

この記事は(1ChipMSX)OCM PLD v3.8.0
 

uniskie.hatenablog.com

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


2020/06/13 追記 問題発見。

bios_image_maker_for_380.7z
の、MSX1PAL_IPLROM\380k_m1p.pld
に変更した場合、MSX2ソフトの一部でゴミが出ます
例えばアシュギーネ復讐の炎のタイトルデモなど。

VDP#8の初期値は関係なく、ロゴ変更時にBIOSのロゴ描画処理で問題が出るようです。
(BlueMSXでは発生しないので、1chipMSXの問題かもしれない)
標準ロゴでは問題が出なかったので、
bios_image_maker_for_380.7z に、
MSX1PAL_IPLROM\380_m1p.pld (380の後にkがついていない方)
を追加しました。
こちらを使っていただければと思います。

 


1ChipMSXをMSX1として動作させるSD-BIOSの作成 + 修正版PLD



1ChipMSXをMSX1 BIOSで動かしてみよう!




twitterを見ていたら、
パレットだけではなく、BIOSそのものをMSX1にして動かせばいい。
と気づき、実際にその効果と問題点などを検証・対策してみたので、
そのまとめになります。



1ChipMSXは電源投入時に、SDカードからBIOS一式を読み込んで起動する機能があり、
これを利用し、MSX1 BIOSで動かしてしまおう。という趣旨です。



■MSX1 BIOSで動かすメリット

・CASIO スキーコマンドがバグらない
・CASIO ゲームランドがバグらない
R-TYPEMSX1の色の方が綺麗MSX2時はパレット変更されるけど、その色がエグイ。
(※感想には個人差があります)
新10倍カートリッジのMSX1用画面がみられる
・起動が速い
などなど



MSX2以降で動かないMSX1用ソフトは、スロット構成が問題などといわれますが、
実際にはスロット構成はそのままにMSX1ROMで動作させれば動くものもあるようです。

■MSX1BIOSで動かすデメリット

ローマ字入力がない。(ローマ字かな入力機能がついたのはMSX2以降です)
MSX2以上向けのソフトが動かない。(当たり前)
・ハード的にはMSX2+なので、MSX2以降の機能を直接I/O等で操作しているものは動く。

■ 注意点 と 対策

1ChipMSXはMSX1用に設計されていない為、問題が2つあります。
対処方法は記事の後半にあります。

①起動時にスプライト非表示で初期化されるため、スプライトが表示されない。
②カラーパレットがMSX2以降のものなので色が違う

他にも潜在的な問題点はあるかもしれません。




■ MSX1-BIOS仕様のSD-BIOS作成

MSX1では1ChipMSXデフォルトのMegaSDHC(MSX-DOS2)BIOSでは動かないので、
Nextor+MSX1ROMという構成になります。



HRAさんのOCM改環境を利用してOCM PLD 3.8.0向けのSD-BIOSを作成する環境
を作りましたので、こちらを利用してみてください。
(kdlさんの環境を弄れる方はそちらを弄るのも良いかもしれません。)

bios_image_maker_for_380.7z をダウンロードしたら、
ReadMe.txtに従って準備をしてください。

HRAさんのOCM改セットをダウンロードして解凍
② batファイルを所定の場所(tool\bios_image_maker\roms\)にコピー
BlueMSXがインストールされていない場合はインストール
④ BlueMSXがインストールされた状態で copy_bluemsx.bat を実行
(※ BlueMSXのインストールパスが違う場合は copy_bluemsx.batを修正して下さい。)

copy_bluemsx.batが成功すると、
tool\bios_image_maker\roms\BlueMsxRomsフォルダが作成され、
BlueMSXのSharedROMがコピーされます。

準備が終ったら、
make_blue_msx1_nextor_for_380.bat
を実行してください。

すると、
OCM-BIOS_MSX1_NEXTOR.DAT
というSD-BIOSファイルが出来ます。
ファイルサイズが512KBなら成功です。

こちらをSDカードの最初のエントリとしてコピーしてください。
(SDカードフォーマット/全消し後最初にコピーする等)

このSDカードを1ChipMSXにセットしてあれば、
電源投入時に OCM-BIOS_MSX1_NEXTOR.DAT が読み込まれ、
MSX1として起動します。
(※ リセットでは読み込まれません)

NEXTOR.SYSCOMMAND2.COMも入れてあれば
MSX1起動画面→Nextor画面になります。
(なければBASICで起動すると思います。)

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

MSXDOS/DOS2向けツールを色々使うので
Nextorの各種システムファイルやユーティリティーをコピーしておくと便利です。
(無いと不便です)

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

システムファイル一式は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のシステムファイルやツール類をコピー(上書き)
の順番にすると良いかもしれません。

 


■ スプライトが表示されない! 色がMSX1ぽくない!

現在の1ChipMSXはIPLで、VDP#8のスプライト非表示をONにして起動するようです。
これはMSX2からの機能なので、MSX1BIOSからは操作されません。
そのため、スプライトが表示されないという問題が発生します。

また、カラーパレットもV9938の色なので、MSX1の色とかなり違います。


(゜ω゜≡゜ω゜)<なにぃ!? ポポロンがいない!?

・スプライト問題は直接I/OからVDPにアクセスすることで対処します。
・カラー問題はMSXのカラーパレットを弄ることで対処します。
(色についてはパレットのビット精度の問題で、どうしても少し違和感は残ります。)

具体的な対処方法はとしては、
① 安全策
ファームウェア書き換え
の2つの方法があります。

↓ 対策後の様子。

(*´ω`*)<おかえり……ポポロン


① 安全策


bios_image_maker_for_380.7z

の、
tool_for_msx\MSX1FAKE.COM
をNextor上から実行してみてください。

スプライト非表示フラグをリセット+MSX1風パレットに変更するコマンドです。
(AUTOEXEC.BATから呼び出すようにすると楽です)

物理カートリッジやディスクから直接ゲームを起動する時には使えませんが、
SROM(SofaROM)SRI(SofaRunIt)からゲームを起動するようにすれば、
スプライト表示あり+MSX1風パレットで動かせます。




ファームウェア更新

(※USB Blaster等がある人以外は、
失敗すると1ChipMSXが動かなくなるのでご注意下さい。)


bios_image_maker_for_380.7z
の、
MSX1PAL_IPLROM\380k_m1p.pld (←一部ソフトで問題発生)
MSX1PAL_IPLROM\380_m1p.pld (←標準ロゴなら問題なし)

で1ChipMSXのファームウェアを変更してみてください。
(PLDFLASH等を使う)

ファームウェア仕様
OCM PLD 3.8.0 (MSX2+/MegaSDHC MSX-DOS2/日本語)ベースで
・1ChipMSX改ロゴに変更
・ 起動時のスプライト非表示フラグをセット状態からリセット状態に変更
・ MAINROMを呼び出す前のIPLがセットするカラーパレットを、MSX1風カラーパレットに変更。

このファームウェアに更新した場合、
MSX1 SD-BIOSの入ったSDカードを入れてあれば、
電源をいれてそのまま物理カートリッジやディスクでゲームを動かしても大丈夫です。
MSX1FAKE.COMを呼び出す必要がなくなります。

ファームウェアを書き換えてあっても 通常のMSX2+ BIOSが実行されれば、
パレットもスプライト非表示フラグもBIOS側でMSX2+仕様の状態に初期化されます。
MSXロゴが出る前のタイミングで一瞬だけMSX1っポイ青になります)


ファームウェアを変更するのが怖い場合は、
毎回実行する必要はありますが、MSX1FAKE.COMを使う方法でやってみてください。




海外のクラシカルPCもFPGA化が進んでいて
TMS9918Aを使った他のワンチップPCも気になるところです。

それでは良き1ChipMSXライフを



画像貼りすぎた

 


関連記事:

uniskie.hatenablog.com


↑SDカードで新10倍カートリッジを使うため、Nextorを導入しています。

関連記事:

uniskie.hatenablog.com


↑ より正確なMSX1カラー再現ならこちら。