1ChipMSX PLD v3.8.0 リリース!

 

1ChipMSX PLD v3.8 がリリースされました!


kdlさんが1ChipMSX(略してOCM)を超便利にする改良版ファームウェア(PLDファイル)を配布されています。
過去の修正や機能追加を意欲的に取り込み、既知の問題がほぼ全部取れたバージョンであるv3.8がリリースされました。

なんということでしょう…
あの、高価な置物でしかなかったワンチップMSXが、
改良版PLDを書き込むことで、
お値段以上の動きをするようになりました!!

ワンチップMSXの一つの完成形となります。





ダウンロードはこちら→ Kdl Index!  https://gnogni.altervista.org/



導入方法は1ChipMSX上でPLDLOAD.COMを使って書き換えるのが一番楽です。
(書き換えに失敗して起動しなくなった場合は、Terasic Blaster USBという物を用意してPCとつないで書き換えします)

■ 主な特徴


〇 メガSDをデフォルトで論理1ドライブに設定(※1
MSX2+相当+一部ターボR互換機能
〇 互換性向上
DIPスイッチの割り当ての大幅変更(メガSDがDIP5→DIP8に変更など)
〇 リセットボタン長押しでハードリセットになります
〇 RAMは2MBか4MBを選択可能
〇 VDPのタイミングバグ修正
〇 音質改善
〇 ボリュームフィルタ修正
〇 内蔵DOS2(MEGA SDHCカーネル)のFIELD命令バグ修正
DIPスイッチの他に各種ショートカットキーでも実行時に各種機能を切り替え可能
例)
・【F12】CPU速度切り替え(4KHz/6KHz/8KHz)
・【SHIFT+F12】スロット1動作変更(※2
・【SHIFT+Scroll Lock】スロット2動作変更(※3
・【Page Up/Page Down】:マスター音量
・【F9/SHIFT+F9】:PSG音量
・【F10/SHIFT+F10】:SCC音量
・【F11/SHIFT+F11】:OPLL音量
・【Scroll Lock】:カセットインターフェース有効
・【Pause】:何も機能しない模様→OPLL有効/無効(※ポーズ機能)
〇 ROMイメージを取り込んで、実行できるツール類が揃っている(※4

※1
メガSDはCTRLキー押しながら立ち上げても仮想論理2ドライブをOFFにできず、
フリーエリアが足りなくなって実行できないソフトが多いため、
初期設定で論理1ドライブに変更されました。

・ESET.COMでメガSD(MEGA SCSI)の設定変更が可能です。
(※ただし設定はバックアップされないので電源投入毎にリセットされます。リセット時は引継ぎされます。)

・論理ドライブ数を2に変更する手順
 ESET.COMを起動したらE→C→N→2→S→Y→ESC→Q の順でキーを押し、
 コマンドプロンプトに戻ったらリセットします。

・似非シリーズサポートサイト に各種ツールがあります。
http://www.big.or.jp/~saibara/msx/ese/index-j.html

・ESET.COMへのダイレクトリンク
MEGA-SCSI セットアップツール version 0.04 (eset004.lzh)

(※またメガSD有効時はEP.COMでディスクイメージを読み込んでFDDエミュレーション動作ができます。)

※2
スロット1動作タイプ:
① 端子有効&内蔵無効
② 端子無効&内蔵ESEメガSCC(1MB)
SHIFT+F12を押すと切り替わる。
LEDの右から5番目が変化する。

※3
スロット2動作タイプ:
① 端子有効&内蔵無効
② 端子無効&内蔵ESEメガRAM(アスキー8K 1MB)
③ 端子無効&ESEメガSCC(2MB)
④ 端子無効&ESEメガRAM(アスキー16K 2MB)
SHIFT+SCROLL LOCKを押すと順に切り替わる。
LEDの右から3番目と4番目が変化する。

※4
OCM-PLD Packのmsxtoolsに入っているmegalunchは、
ROMイメージに合わせて自動でスロットの動作を各種ESEメガに切り替えて実行してくれます。(OCMv3はI/Oポートからも機能切り替えができる)


■その他注意点:音声主力端子


赤い右音声端子には、カセット端子に刺した外部音源カートリッジからの音声が出力されません。
(内蔵ESEメガSCCや内蔵OPLLを使う場合は問題ありません)

外部音源カートリッジを使いたい場合は、
白い左音声端子から分岐してステレオ入力につなぐ必要があります。

例えば
SCC音源内蔵のゲーム(グラディウス2、スペースマンボウ、F1スピリット等)をカセット端子に刺して遊ぶ場合、右音声端子からはPSGの音しか聞こえないので注意が必要です。


■ AUTOEXEC.BATの中身


OCM-EXTRA PackやOCM-SDBIOS Pack で作られるAUTOEXEC.BATですが、
・自分の場合、NextorではなくMSXDOS2なんでALIASはコメントアウト

・外付けFDDをつなぐと起動ドライブが変わるので、path指定は起動ドライブをコマンド引数指定
としています。

こんなかんじ。
SET EXPERT=ON
PATH %1\ %1\UTILS
SET SHELL=%1\COMMAND2.COM
REM ALIAS .BAS = "BASIC "
REM ALIAS .ASC = "BASIC "
VER

■ カセットを後挿ししたい場合


従来の実機であればポーズボタンを押して後挿ししていましたが、
OCM v3.x.xではポーズ機能がありません。
(もし自分が見つけてないだけであるとしてもPAUSEキーではポーズできません)
その代わり、スロット端子の機能切り替えショートカットキーが使えます。

元々、ポーズした状態でも通電していて、後挿した瞬間に暴走することがあったので、
スロット端子そのものを動的に無効/有効切り替えできるOCM v3のほうが安全確実です。

〇 スロット1

SHIFT+F12を一回押すとスロット1の端子が無効になります。
この状態であれば通電しませんので、カセットの抜き挿しをしても安全です。

もう一度押すとスロット1の端子が有効になります。
(右から5番目のLEDが消灯時:スロット1:端子有効、内蔵ESE無効)
(右から5番目のLEDが点灯時:スロット1:端子無効、内蔵ESEメガSCC 1MB有効)

〇 スロット2

SHIFT+ScrollLockを一回押すとスロット2の端子が無効になります。
この状態であれば通電しませんので、カセットの抜き挿しをしても安全です。

もう3回押すとスロット2の端子が有効になります。
(右から3番目と4番目のLEDが消灯時:スロット2:端子有効、内蔵ESE無効)
(右から3番目のLEDが点灯時:スロット2:端子無効、内蔵ESEメガRAM アスキー8K 1MB有効)
(右から4番目のLEDが点灯時:スロット2:端子無効、内蔵ESEメガSCC 2MB有効)
(右から3番目と4番目のLEDが点灯時:スロット2:端子無効、内蔵ESEメガRAM アスキー16K 2MB有効)

〇その他

あらかじめカセットを挿した状態で起動しても、MSXロゴ表示中に素早くSHIFT+F12やSHIFT+SCROLL LOCKを押せば、スロット端子を無効にできます。

・※
この際、キーは素早く離します。ロゴが消えるまでSHIFTを押しているとディスクが無効になるので注意が必要です。

・リセットボタンをおした時はスロットの設定がDIP-SWで指定した初期設定に戻るので、その際にもロゴ表示中のショートカットキーによるスロット設定変更を使います。
(長押しリセットや電源を切らない限り、似非メガRAMのデータ自体は保存されています。)


コナミの新10倍カートリッジ:ディスクセーブロード機能によるSDカード破壊

修正(2020/05/03)


結論:
1ChipMSXで、新10倍カートリッジのディスク機能を使う場合、
FDD+SofaROMか、
Nextor+SofaROMになります。


実カートリッジだと難しいため、SofaROMを使用してROMイメージから起動します。

◆ SofaROM向け新10倍カートリッジROMファイルの準備 ◆

新10倍カートリッジを取り込んだロムファイルをSROM.GM2とリネームして、SROM.EXEと同じディレクトリ階層に置くと、/G2オプションを指定した時に新10倍+ゲームが起動できるようになります。

◆ 実FDドライブを使用するケース ◆(一番安全)

スロット1外付けFDDを装着

SofaROM/G2オプションを付けてゲームROMファイルを起動する
(→ スロット2の内蔵ESEメガSCCで、新10倍とゲームの両方が動作する)

例) SROM /G2 ROMS\PARODIUS.ROM

SROMがスロット2だけで新10倍とゲームを動作させてくれるので、
空いてるスロット1でFDDインターフェースが動作させられます。

本来、新10倍+ゲーム+FDDインターフェースで3スロット必要だった事が、SofaROMを利用すると2スロットで実現できるのがポイント

◆ Nextorを使用するケース ◆(まだ実験中)

① kdlさんのSD-BIOS作成ツールでNextorの入ったSD-BIOSを作成 (Kdl Index!  https://gnogni.altervista.org/ → 作り方は後述)

SofaROM/G2オプションを付けてゲームROMファイルを起動する

※ 重要)起動したらSDカードを抜き差ししない事。一度抜くと認識しなくなります。
(実FDDの場合は抜き差しOKです)

Nextorの場合、実カートリッジを刺してリセット起動するとディスクドライブとして認識されないのですが、SofaROMからゲームを実行すればディスクドライブとして認識されます。
(NEXTORのセットアップはROMカートリッジのブートの後なのかな?)

◆ SD-BIOS作成手順

分かる人はSD-BIOSの作成だけを行って手動でSDカードへコピーしてください。

20200116 OCM-SDBIOS Pack v2.9 by KdL\make\make-sdb.cmd を起動するとOCM-BIOS.DATを直接作成できます。
後は手動でSDカードへコピーするだけ。

よく分からない人は、make-sdb.cmd ではなく、new-sdcard.cmd を起動してください。
質問に答えていくことで、「BIOSファイル作成」~「SDフォーマット」~「SDカードへBIOS+OS+UTILSをコピー」までやってくれます。

※ ただし、SDフォーマットを伴うので取り扱いに注意してください。
※ 右クリックから「管理者として実行」をしないとダメかも

(自分でSD-BIOSだけ入れ替える場合、元からあるSD-BIOSを削除してからコピーするか、SDカードをフォーマットした直後の一番最初にコピーすると良いです)

(1ChipMSXは電源投入時に、SDカードの一番最初のファイルをSD-BIOSとして読み込む)

make-sdb.cmd 起動時の画面。

new-sdcard.cmdを起動した場合でもOCM-BIOS.DATがまだ作成されていなければこの画面になります。

(ちなみに、make-sdb.cmd を実行した場合、ファイル名を自分で指定できます。
複数用意しておきたい場合は名前を指定すると良いかもしれません。)

MEGASDHCNextorか聞いてくるところではNextorを選んでください。↓

◆ 以前の間違い↓

コナミの新10倍カートリッジはDOSを使わずにディスクファイル管理領域を自前で直接アクセスしているため、SDカードを壊します。(データの配置が違う)

なので、EP.COMの/Bオプションを使ってディスクイメージファイルをFDDエミュレーションモードでマウントして実行するか、外部FDDを使う必要があります。

EP.COMでディスクイメージのFDDエミュレーションを使う場合は、前述した後挿しテクニックを使うと安全です。

ただ、FDDエミュレーションを使っても、
・画面イメージの読み書きは安定しないことがある
・状態セーブロードもたまに安定しないことがある
SDカードを途中で抜くと入れなおしてもだいたいディスクアクセス時にフリーズする
EP.COMでマウントする時に/Bオプションを忘れるとフリーズすることが多い
やっぱりそれでもおかしくなる。
など、原因は不明ですが、安定とは言い難い部分はありますね。
SDカード壊されるよりはましかな。

■ 間違いの解説 ■

デフォルトのMegaSDHC-DOS2 BIOSの場合、EPコマンドFDDエミュレーションをしても、(ディスクイメージの)ディスクが破壊されるようです。SDそのままならもちろんSDカードのデータが壊れます。

何度か読み書き、もしくは読み込み動作を繰り返すだけでも、ディスクが破壊される事を確認しました。ブートセクタやFAT領域にまで、ファイル一覧情報が書き込まれ、めちゃくちゃになります。
どうやら、MegaSDHCのドライバ部分と新10倍の相性が悪いという事のようです。もしかするとMSXDOS2のBIOSを経由してる時の処理が原因かもしれません。

ちなみに、Nextorの場合、実カートリッジで起動するとドライブとして認識されません。リセットや電源オンから新10倍カートリッジがディスクドライブ初期化を呼び出す段階では、Nextorはディスクドライブとしてセットアップされないみたいですね。(EMUFILEというFDDエミュレーション機能でもリセットがかかるのでやっぱりディスクドライブとして認識されません。)

■ その他:別基板で動かす1ChipMSX

改変版1ChipMSXは
kdlさんのD4公式(当時20,790円)/ZemmixNeo/SM-X用の他に、
caroさんのDE1版や、(税込み28,519円)
uniabisさんのDE0-CV+DEOCM版(税抜き22,500円+税込み8,658円)
などもあります。

DE1やDE0-CV+DEOCMについては、
公式版基板ではロジック数が足りなくて無理だったターボR相当の実装が検討されています。
HRA!さんもこつこつと最近アップデートにチャレンジ中なので静かに応援したい所。
 
基板販売サイト→
DE1 https://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=6DUL-SKKW
こちらについては所有していないので、実際の動作がどんな感じなのかは不明です。

これらの作業は、
One chip MSX improvement project(1CHIPMSX改良プロジェクト)フォーラム
https://msx.org/forum/msx-talk/revival/one-chip-msx-improvement-project
にて、ずっと続けられていますので、興味がある方はご覧ください。
Chromeのページ翻訳機能を使えば割と普通に読めるかと思います。

■ ロゴ書き換え


HRA!さんがかっこいいロゴを作ってくれました!




kdlさんのサイトにあるSDBIOS PACKでもロゴの書き換えは出来ますが、
SDカードからのBIOSブートは起動が遅いので、PLDを書き換えたい。
という事で実験してみました。

ただし、PLD書き換えは失敗するとTerasic Blaster USBが必要になるので危険が伴います。

v3.8の場合、
OCM-BIOS.DATの0x37990~0x37FFFを取り出し、
1バイト毎にビットの上下を反転させた値を
PLDファイルの0x5B990~0x5BFFFへ上書きすることでロゴデータの入れ替えが可能でした。

実験成果として、v3.8 MSX2+ロゴ版PLDを
HRA!さんの1chipMSX改ロゴに書き換えるパッチをwdiffで作ってみました。
OCM-SDBIOS Pack v2.9のk34ockai.yen(これがOCM-BIOS.DAT)からロゴデータを取り出しました。

https://app.box.com/s/do6y1jhxbv6ke6wvnsrlv6jspsirdl0a
起動しなくなるリスクを踏まえたうえで自己責任でご利用ください。


関連記事:

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

uniskie.hatenablog.com


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

uniskie.hatenablog.com