Gigamix Online

懐かしの8bitおもちゃPC「MSX」を骨までしゃぶり尽くそう。MSXの最新ニュース、ブログ、自作ソフトの配布など。

令和の時代、MSX用ゲームソフトのセーブデータをどこに作るべきか問題

 2020年?2021年?にMSXパソコン用の新作ゲームソフトをリリースするにあたり、ゲームのセーブデータをどこに保存するかのアンケートがtwitter上で行われていました。その反応が興味深かったので、まとめてみました。

https://p.gigamix.jp/devmsx/cg/savedata.png

 なんでそんなことで悩むんだよ(普通クラウドでオートセーブだろう)と最近の若者は思うでしょう。が、1983年に発売されたMSXを今でも利用する人だからこその悩みがそこにありました。

開発者の思い

アンケート

#MSX のゲームソフト(FD版)で「ゲームのデータを製品FDに書き込むのはやめてほしい」という人の割合が知りたいです。セーブデータの記録方法について、ぜひ皆さんの意見を聞かせてください。 — B-Cat Software (@BCatSoftware) 2020年12月15日

ゲームソフトの前提条件

  • 対応するハードはMSX2以上 → RAM64KB以上の環境が保証されていることが前提(MSX1は考慮しない)
  • 提供するメディアはフロッピーディスクFDD搭載機=DISK ROM BIOSMSX-DOSMSX Disk BASIC 含)の保有機種で動作する前提(FDDを搭載しない機種は考慮しない)
  • 2020年現在フロッピーディスクは生産が終了した → もはや貴重品と化したストレージメディアです。全世界的に品不足の状態

アンケートの結果

アンケートの最終結果が出ました。44%の回答者がPAC/FMPACへの保存を望んでいる事になります。なかなか興味深い結果になりました。 https://t.co/wMFbjXx31d pic.twitter.com/dsyv0o778I — B-Cat Software (@BCatSoftware) 2020年12月22日
 なんと、FMPACへのセーブデータ保存を望む人が一番多い結果に!

開発者の決断

MSXの場合、ゲームソフトのFD書き込みに関する落とし所はこんな感じなのかな。・FDのバックアップを強く推奨・PAC/FMPAC対応・FDへの保存は任意(手動)・可能ならパスワード形式を検討 — MA-X @ B-Cat Software (@max_2608) 2020年12月17日

我ながら汎用的に情報を整理できたと思う。 https://t.co/9nzXfetWYu — MA-X @ B-Cat Software (@max_2608) 2020年12月18日

主な手法とアピールポイント

製品のフロッピーディスクで保存

 昔はわだかまりなく製品のフロッピーディスクにゲームデータを保存したものでした。データ管理が一番簡単です。後述の「バックアップしたのち製品ディスクで保存」も含めると、この意見が多数でした。 昔の自分なら「全部」(ユーザディスク保存も含めて)だけど、どれかひとつなら製品ディスク保存かなあ。破損が怖いけど、作り手としてはゲームは遊んでなんぼで、コレクターのためのものじゃないと思ってるので。 https://t.co/ONsdM7RovL — まかべひろし (@sinpen) 2020年12月17日
ゲームディスクに書き込まれることとディスク入れ替えの手間を負うことどちらか選ぶなら、私は入れ替えくらいは許容しますが、現状ドライブ故障だけでなく、ディスクそのものが入手困難ですからゲームディスクに保存も仕方なしですかね😅 https://t.co/SsHtvcTY2r — HRA! (@thara1129) 2020年12月15日

派生:バックアップしたのち製品のフロッピーディスクで保存

 ヴィンテージ品と化したMSXではソフトウェアに「コレクション」「アーカイブ」の意味が込められるようになり、製品データを極力改変しない(製品にセーブデータを書き込まない)ことを望む人が現れ始めました。 MSXでも68でもそうですが、バックアップ取らずにマスターディスクで遊ぶのが怖いです・・・。68のイースもセーブディスクいらないと書いてるのは、ユーザーディスクの1枚がもったいないからだと思うのですが、さすがにマスターにセーブするのは怖いな。 https://t.co/OiG74kX5lo — redmax.ars (@redmax_ars) 2020年12月16日
個人的には、どちらかというと「製作者側の都合」で、極力FDにセーブ(書き込み前提の仕様で出荷)はしたく(させたく)ないですね。経験上、想定外な使い方をするユーザーが出てきて、本当は無関係なのに「バグでFATが壊れる?」というような状況に陥ると、サポートで体力を奪われますので・・・ https://t.co/zwo6ONv6zI — EXCEED. (@TransAmGTA92) 2020年12月16日
デュプリケートディスクを作るウィザードリィ方式が最強。(シングルドライブだって言ってんだろ!) https://t.co/KbE3NlG2mP — yasi001 (@yasi001) 2020年12月15日
書き込み許容派だけど可能ならノンプロテクトで自力バックアップが出来ると安心。違法コピー対策もあって難しいかもしれないけど…。セーブロード時にディスク入れ替えてアクセスするユーザーディスク方式という手も。まあユーザーディスク用の空きディスクの用意が厳しいけど…。 https://t.co/VTQbb5k1sT — ごりぽん (@goripon_tw) 2020年12月15日
バックアップが取れるのなら.dskで運用しちゃいますよね。するとゲームディスクに保存がデータの所在がバラけず一番確実かな^^; — ひぽぽ(ファミコンGimmick!👍 (@koichironakaza1) 2020年12月15日
基本的に製品のディスクにセーブは書き込まないで欲しいよね。>RT ゲームの保存やっててほんと悩ましいところ。セーブデータ解析してオリジナルに戻すことは不可能ではないかもだけどオリジナル性は喪失されてるって感じるよ。 — めーちゃん (@rikyou_moe) 2020年12月15日
ディスクのバックアップ(コピー)が取れるのなら、ゲームディスクに書き込むのが手間いらずなんですけどねぇ・・・ — イノウマ (@inouma1) 2020年12月15日
バックアップを取ってバックアップディスクでプレイするので、データを書き込んでも問題なしと考えてます! — み(ゲーム・将棋・MSX) (@marumi) 2020年12月15日

 バックアップが取りやすい=複製しやすい。つまり、製品をリリースしてもコピーされ、インターネットに流出しやすくなります。開発側がそれを望まない・懸念を感じるのは至極当然のことです。 私も、コストや工期を考えるとメディアはFDで購入者にバックアップを促すよう取説に記載しようと思っています。コピーそのものよりもネットにディスクイメージを流される方が痛いですね。既にCELIA for X68000で被害に遭いましたので。 — MA-X @ B-Cat Software (@max_2608) 2020年12月17日

自分で用意したブランクディスク

 新しいブランクディスクにセーブすると、製品自体にデータ改変は起きませんがディスクの交換作業が発生します。 製品FDじゃなくてブランクFDに書き込むやつがよかった(過去形) https://t.co/upcfYJuQXl — やまかわ aka やんま ま (@yamma_ma) 2020年12月15日
製品ディスクは故障が怖いしディスクの差し替えは不便だし、PACは持ってないし、パスワードは間違える。テープは巻き戻さにゃならん。今考えと恐ろしく不便だが、楽しかった。ありがとう。 — げーにん (@geinin) 2020年12月16日
ああ、MSXって1ドライブの機種が殆どだもんなあ。個人的にはゲームディスクはライトプロテクトしときたい。ブート機能の無いゲームディスク作成する方式がいいかな。ただ、これは複数ディスクゲーがダメ。 https://t.co/oWAO4SMzuf — ゆっち(偽) via NNK (@nnk_osn) 2020年12月16日
フロッピーディスクを買ったら「すぐ全部フォーマットしておく」というMSXしぐさがあります。これはアプリ内からフォーマットが(ほぼ)できないというMSXの作りに関係しています。事前フォーマットしてないと、ゲーム等でユーザーディスクがなくなってセーブできなくて詰むのです…。 — MSX研究所長 (@yoshimatsuTUQ) 2020年12月13日

 MSXは基本的に1ドライブでの運用が前提なので、ディスクの交換作業回数は他の機種より多めです。これによって古くなったFDDで経年劣化による部材の故障や破損のリスクが発生します。 そういう作りだったんですけど、それはMSXの部材が市場に出回っていた時代だからこそ実現できた酷使っぷりで、2020年の今はディスク入れ替えを多用すると経年劣化で部材が壊れて使用不能になるリスクが高まっちゃうんですよね…つらい。 — Takashi Kobayashi (@nf_ban) 2020年12月17日

派生:ユーザーディスクを作成、ゲーム起動後はそのディスクで保存

 製品とデータの分離を考慮した折衷案。ゲーム起動は製品ディスクで行い、以後ユーザーディスクでプレイしデータ保存する手法。ディスク交換は1回で済みます。 ユーザーディスクを用意するタイプが安心かも。 — 反動 (@FF14_hando) 2020年12月15日
そのアンケ、初回にユーザーディスク作成でいいのになぁ…と思ってみてました。新規ゲームを選択するとブランクディスクにゲームデータをコピーしてセーブもそれに書く方式。起動時だけ製品ディスク(プロテクトあり)入れて、ユーザーディスクに入れ替えたらもう入れ替えは不要。 — EmiCharLounge (@EmiCharLounge) 2020年12月18日

 初回のディスク作成に時間を要するのがネック。ティル・ナ・ノーグより速いとは思うけど…

PAC(Pana Amusement Cartridge)/FMPAC

 PACは松下電器が発売した汎用のバッテリーバックアップカートリッジで、FM音源付きのFMPACは当時のログイン誌(パソコン業界の雑誌)の売上トップ10にもランクインされるなど販売数が多かった製品です。 次回作はPACのセーブ方式を検討しておこう。 https://t.co/09NLPHmzr6 — むらかたとうじ/村方凍二 (@ipheion78) 2020年12月17日
フロッピーディスクのゲームでPAC必須というのはない(ありえない)。ROMのゲームでセーブ先がPACかテープか、というのはいくつかあるが、だいたいのゲームはセーブ用SRAMを内蔵していて、PAC要求タイトルは非常に少ない。ほぼ唯一がハイドライド3なのだ。(あとキャビンADVのROMもあるにはある) — MSX研究所長 (@yoshimatsuTUQ) 2020年12月17日
必須とまでは言いませんが、テクノソフトのフィードバックは PAC があると進んだステージが随時保存されてゲームオーバーになってもコンティニュー可ですが、無いと最初からやり直しなので2周クリアするのが大変でした — tyr105店員 (@tyr105) 2020年12月17日
MSX版ハイドライドⅡはSRAM内蔵だったがハイドライド3はPAC or テープセーブでSRAM非搭載の理由として考えられるのは・4MbitROMを採用してコスト高・PanasonicとT&ESOFTの付き合いからPACを採用したあたりかな https://t.co/fy93DBb0CO — 610 (@shimako_610) 2020年12月17日

 MSX・FANの投稿プログラム「LAST WAR」もPACに対応できる程度に、実装は難しくない様子。 「拡張カートリッジSRAMへのセーブ」普通のMSXには二次記憶装置がないためプログラムやゲームデータの保存にはカセットテープが使われたが、松下が発売していたPAC/FM-PACには1KB×8の記憶領域があり、投稿プラグラムでこれを使うハックが流行りかけていた。一瞬でセーブ/ロードができるので便利なのだ pic.twitter.com/qKBlRVzhPo — 草薙 昭彦 (@nagix) 2019年2月24日

 ただ、PACのデータ管理は杜撰なイメージがあります。規格なんだけど自由、みたいな。セキュリティのセの字も無い。 MSXのPACって管理領域がなくて、何をセーブしてるんだか全く分からないのが痛い。FM-PACでバックアップは取れるけど、意味のあるデータが入ってるかどうかすら全く分からない。キャビンのゲーム間では判別してくれたりするが…(幻影都市からXakとか) — MSX研究所長 (@yoshimatsuTUQ) 2020年12月17日

 PACをアクセスできるアプリはいくつか存在します。

 拙作DMシステム2でもPACへのアクセス機能があります。

パスワード出力(ふっかつのじゅもんメソッド)

 昔は苦行だった写経作業も、今はスマートフォンという便利なアイテムがあるので書き写しミスが解消されます!入力が面倒なだけ! パスワード記録が簡単な時代になって良かった https://t.co/IDJBL3wnBc — りあるあるぱか (@giw) 2020年12月17日
超絶長い復活のじゅも・・・ — 焦がしエクレア (@SearEclair) 2020年12月16日
保存は今ならケータイのカメラがあるので書き写し間違いは無さそう。 — 超兄貴〜MSX2021〜 (@SuperAniki_MSX) 2020年12月16日
すべてのユーザーがPAC / FM-PACを所有しているわけではありません。 それに加えて、フロッピーディスクドライブは多くの場合壊れています。 パスワードが最も便利な方法だと思います。 — MSX Resource Center (@msxorg_es) 2020年12月15日

カセットテープ(データレコーダー)

 カセットテープ自体はまだメディアとして現存していますが、CMTケーブルの所有者が今は少なめということが課題。また、turbo Rでは廃止された機能です(PCMのマイク入力はありますが…)。 MSXのセーブ媒体はテープ一択やろ(嘘 — きんのじ (@v9938) 2020年12月15日
MSX側にマイクが標準だったら、マイクとスピーカでデータレコーダーも良かった — りあるあるぱか (@giw) 2020年12月17日
やはり今もも手に入る、いにしえのカセットテープ最強説(笑)(turboRは無理ですが)まとまった数を作るならマッパメモリ付きNextorSDカートリッジが1万で何とかなるのかも。 — 超兄貴〜MSX2021〜 (@SuperAniki_MSX) 2020年12月17日
ハイドライド3もテープにセーブできますよね?(補足説明書が無いとやり方がまず分からないけど)。VSハイドライド3はFDソフトでありながらPACが絶対必要ですが(汗)。 — けものびと (@jyu_jin) 2020年12月17日
turboRはMSX1より売れなかったことからも明白!まさかテープのほうが入手性が良いといわれる時代がくるとは思わないよね・・・データレコーダ本体のほうがアレだけど。ラジカセ使うならケーブルもか — しんさん (@shinsan68k) 2020年12月18日

 カセットテープのピーガー音をスマートフォンで録音・再生するソリューションは存在します。MSX2CAS です。 play.google.com

QRコード

 スマホの併用が前提なら、パスワードよりもQRコードのほうが出力できるデータ量は増えます。 いっそQRコードで表示(笑)。 — ごりぽん (@goripon_tw) 2020年12月16日

 MSX実機上でQRコードを生成するプログラムコードは、実在します。 gigamix.hatenablog.com

 でも、QRで出力したゲームデータをどうやってゲーム本体に戻すのか。 いや、セーブデータ。ゲームに戻すときにMSX側にカメラが必要だ!カメラカートリッジ(デジタイザとも言う)の製造を急ぎましょう! — Takashi Kobayashi (@nf_ban) 2020年12月17日

複数対応・全対応

 遊ぶ側からしてみれば、そりゃあできることなら複数に対応していただくのが有り難いのです。 贅沢を言えば、PAC, ディスク, パスワードの選択式なら安心私はPAC/FMPAC持ってるのでPACのが楽ですが、持ってない人も多いでしょうから。スマホでスクリーンショットとるのも容易な時代なのでパスワードも昔ほど不便じゃないですよね。 — HRA! (@thara1129) 2020年12月15日
ベストは選択式かも知れません。PACもどのセーブスロットを使うのかという問題があってちょっと大変な側面はありそうですね。ただ、ディスクセーブの場合でも個人的には困らなかったりします。昔から(可能なソフトは)起動してからバックアップに入れ替えて遊んでいました。CanCanバニーとか。 — うにスキー (@uniskie) 2020年12月15日
どれにするか迷ったら「全部」w — 後藤 浩昭 / GORRY (@gorry5) 2020年12月16日
 開発側のやる気次第なところは、あります。

その他

 コナミの10倍カートリッジで保存しよう案 「コナミの新10倍カートリッジ」のSRAMって、仕様公開されてないんだっけ? — チョンタロー (@Chontaroh) 2020年12月16日

 新しいデバイスをつけちゃおう案 msxのセーブ媒体ならコントローラー端子にsdカード直結でええんではもしくはシリアルケーブル — applesorce (@applesorce) 2020年12月16日

 ダウンロード販売のみに割り切ろう案 TLで見かけたMSXにおけるセーブ問題実ディスへの書き込みが嫌なのって凄くわかりますかといって、私はPACを使ったセーブもあまり好きじゃないMSXはエミュレーターにおける何処でもセーブが一番好きかな — Retokatsu☆usagi(裏垢ですw) (@retrokatsudou) 2020年12月17日

反則技:RTCの未使用領域

RTCのバックアップ領域に保存… — NAONORI (@naonori_msx) 2020年12月17日
RTCのバックアップ領域はファイヤーホークのセーブデータがあるのでダメ♪・・・前にステージセレクトとエネルギーマックスを書き換えるRTCセーブデータエディタ作った♪ — 焦がしエクレア (@SearEclair) 2020年12月17日
ちなみに、MSXのゲームデータのセーブ先で一番謎なのがリアルタイムクロックの空きビット(確か)で、ファイヤーホークだけが採用しています。エミュレータ開発の時に混乱を巻き起こしました。 https://t.co/lWiXMQpBcf — MSX研究所長 (@yoshimatsuTUQ) 2020年12月18日
 ファイヤーホークはクロックICの未使用領域にセーブデータを書き込むようです。ダメ!ゼッタイ!

確かペンギンくんwarsもだよ~ https://t.co/WoTIENjdTK — せいみまさみ (@masa_seimi) 2020年12月23日
 ぺんぎんくんwarsも、らしい。えっ、ぺんぎんくんwars2じゃなくて!?

こういうハードがあれば解決するのに…

 ここから先は未来の話。フロッピーディスクでの供給には限界があることは皆が認識していて、ではこの先どうしよう、という。

ハードウェアを拡張するカートリッジ

ファミコンDOOMに倣って、RaspberryPi載せますか!(笑) — HRA! (@thara1129) 2020年12月17日
マイコン載せるならPIC32MXでも相当なことが出来そう・・・。 — 焦がしエクレア (@SearEclair) 2020年12月17日
マッパタイプ切り替え機能付きNextorカートリッジ・・・自分用に何個か設計した♪ — 焦がしエクレア (@SearEclair) 2020年12月17日

PACの互換カートリッジ

クラウドSofarunみたいな感じの斜め上多機能カートリッジでお願いします!(無謀) PAC互換で考えたときに、そういや似非RAMはあるけど似非PACって無いですね。 — Takashi Kobayashi (@nf_ban) 2020年12月17日
SRAM有効化レジスタの実装が複雑なので汎用ロジックでは作りづらいんですよねPAC…。CPLD使うと単体カートリッジとしては大げさすぎるし。 — ごりぽん (@goripon_tw) 2020年12月17日

実装されるのはROMだけどディスク駆動のように見えるソリューション

 MSXなのでROMでのソフト供給に切り替えるのが今風であり、未来志向。そこで、フロッピーディスクでの動作環境をROM上でエミュレートすれば良いのでは?というアイデア(そこまで作るなら、ゲームの方をSRAM付きメガROMにする方が早い、、なんて口が裂けても言えない)Oo。😊 — HRA! (@thara1129) 2020年12月17日
ROM+SRAM混成の似非ディスク(RAMでもROMでもない(笑))カートリッジが出来たら…。 — ごりぽん (@goripon_tw) 2020年12月17日

 ここは解説が必要です。

カートリッジを開けるとICとmicroSDが付いてる構造はどう?と思うものの。カートリッジ内部でディスク起動するにはDisk ROM BIOSが必要でFDD非搭載機にBIOSが無いからBIOSの代替品も用意する必要があって、Nextorは無料で入手できるけどマッパRAMが搭載されていないと起動しないのか。そりゃ無茶だ! — Takashi Kobayashi (@nf_ban) 2020年12月17日
 1990年代当時は全然気にしていませんでしたが、90年代当時フロッピーディスク供給のMSX用市販ソフトや同人ソフトが数多くリリースされたのは、当時のMSX市場はFDD搭載機種で占められており、それイコールMSXシステムのスロットにDISK ROM BIOSが接続されている状態、ゆえにMSX-DOSやDisk BASICが利用可能でソフト開発が容易だったことが挙げられます。

Sony HBD-F1 from msx.org
 MSXではFDD非搭載機種へFDDを接続する際にはカートリッジで拡張していました。このカートリッジにはDISK ROM BIOSが含まれていました。

 令和の時代に入るとフロッピーディスクの供給が止まりFDDの劣化が目立つ始めたため、ROMカートリッジがMSXのコンテンツ配信メディアとして改めて見直されてきました。海外ではROMカートリッジでの新作ソフトが相次いでいます。そうなると、初代MSX(MSX1)やFDD非搭載機も対応機種の視野に入ってきます。

 似非RAMディスクの手法で「メガROMカートリッジなんだけど実態は外付けストレージ(似非ROMディスク)」というものを作ることは既に実現可能な技術なのですが、FDD非搭載機種(=DISK ROM BIOSを搭載しない機種)ではファイルをロードすることができません。ROMカートリッジ内にDISK ROM BIOSの働きをする機能を追加すればFDD非搭載機種でもファイルをロードできます。が、DISK ROM BIOSはメーカー各社の著作物であり、無断で転用できません。

 そこで、NextorというMSX-DOS2上位互換の新しいOSが選択肢に入ります。

www.msx.org

 NextorはOSの起動ファイルはもとよりDISK ROM BIOSの代替品となるカーネルプログラムも無料で入手できます。しかし、Nextorは多機能ゆえにマッパーRAM 128KB以上のRAM容量を必要とします。(RAMを128KB以上搭載していればMSX1でも起動できるのが強みです)

 Nextor上で起動する「メガROMカートリッジなんだけど実態は外付けストレージ」というものを作ると、128KB以上のマッパーRAM+Nextor+似非ROM(コンテンツストレージ)+ゲームセーブ用の書き換えできるストレージが必要となり、もはや本末転倒なレベルです。そういったカートリッジがもの凄く格安で開発できるようになったら採用を検討できるんでしょうけどね…。

PICマイコンとSRAMとSDカードスロットが載っていて起動時にマイコンがSDを読んでSRAMにROMイメージを書き込んでからシステム起動とか。書き込み終わるまでMSX本体側はWAIT信号で停止(笑)。— ごりぽん (@goripon_tw) 2020年12月17日
4メガ8メガROMの光栄ソフトがそんな動きっぽい(笑)実は内部はほぼFDイメージ説 — 超兄貴〜MSX2021〜 (@SuperAniki_MSX) 2020年12月17日
DISK2ROMのよう♪ — 焦がしエクレア (@SearEclair) 2020年12月17日

 Nextorは現実的ではないので、光栄のメガROMゲームのような「ROMの一部をディスクのファイルストレージっぽく振る舞うシステム」が開発されればROMカートリッジでもいけるかもしれないですね。例えば4000h以降にBASICの拡張命令を定義して、ファイルのロードは拡張BASIC(CALL LOADとかCALL RUNとか)だけで行うような…

 BASICプログラムをROMイメージ化するソリューションは存在します。DISK2ROM です。 www.msx.org  プログラム以外のコンテンツを付属できないっぽいんですよね。

ハンバーガー・ショップ for MSX2 キミは慌てず確実にハンバーガーを作れるか?

 当クラブ(というか俺)は昔にこういうゲームを作っていました。

タイトル画面

https://p.gigamix.jp/humberger/cg/screenshot_humberger_1.png

ゲーム画面

https://p.gigamix.jp/humberger/cg/screenshot_humberger_2.png https://p.gigamix.jp/humberger/cg/screenshot_humberger_3.png https://p.gigamix.jp/humberger/cg/screenshot_humberger_5.png

ゲーム内容

 思わず食べたくなっちゃうゲーム。客の注文どおりに材料をのせて、ハンバーガーを作りまくりましょう。電波新聞社・刊「マイコンBASICマガジン」1990年1月号掲載作品。

ルール

  • 客が注文する5種類の食材(バーガー・チーズ・ハム・野菜・パン)を間違えないようにひたすら積んでゆくアクションゲームです。
  • それぞれの食材はキーが割り当てられています。客の指示どおりに食材のキーを押してください。
  • キーを押すのが遅いと”遅い”と文句がでます。まちがえて押すと“違う”と文句がでます。3回文句が出るとクビ(ゲームオーバー)になります。
  • 閉じるためのパンを乗せたらステージクリア。ハンバーガーを作るごとにスピードが速くなっていきます。とくにパンをのせるのが速くないと速攻でクビになります。
  • 給料(スコア)は、材料の重ねる数とスピードで計算されます。スピードが上がるたびに給料があがりますが、むずかしくなります。

遊びかた

 タイトル画面のときに、スペース・バーかジョイスティックのボタンを押してください。以後、押したデバイスでゲームをします。

 カーソル・キーまたはジョイスティックの4方向にハンバーガーの4種の材料が割り当てられています。画面左上に表示される客の注文どおりにボタンを押してください。

  • バーガー…「↑」(カーソル上 または スティック上)
  • チーズ…「→」(カーソル右 または スティック右)
  • ハム…「↓」(カーソル下 または スティック下)
  • 野菜…「←」(カーソル上 または スティック左)

 最後のパンはスペース・キーまたはトリガ1を使います。

今すぐ遊ぶ

 以下のURLをクリックしてください。PC・スマートフォンWebブラウザ上で遊べます。

https://webmsx.org/?MACHINE=MSX2J&DISK=https://www.gigamix.jp/humberger/HUM110P.DSK&P=KANJI

ダウンロード

ソフト名ハンバーガー・ショップ for MSX2
ハードMSX2(VRAM 128KB)、MSX2+MSX turbo R
要・JIS第一水準・第二水準漢字ROM
対応OSMSX-BASIC ver.2.0 以降
作者nf_ban(Gigamix)
リソース 原版(LZH) HUM110P.LZH 2020.12.15, 7211 Bytes
再配布版(ZIP) HUM110P.ZIP 2020.12.15, 7302 Bytes
ディスクイメージ HUM110P.DSK 2020.12.15, 737280 Bytes

Webアプリ版もあります

 HTML5で制作されたWebアプリ版はこちら www.minagi.jp

こぼれ話

 原作はマイコンBASICマガジン1983年5月号掲載のNEC PC-6001版「ハンバーガー・ショップ」

https://p.gigamix.jp/humberger/cg/photo_humberger_bm198305_1.jpg

 時は1983年、投稿プログラム雑誌「マイコンBASICマガジン」に掲載されたNEC PC-6001用の「ハンバーガーショップ」というゲームソフトがたいへん面白いゲームでしたので、これをMSX2パソコンへアレンジ移植し同誌へ投稿したところ、1990年1月号にてめでたく採用されました(掲載当時は「msxban」というペンネームで活動していました)。

https://p.gigamix.jp/humberger/cg/photo_humberger_bm199001_1.jpg https://p.gigamix.jp/humberger/cg/photo_humberger_bm199001_2.jpg

 しかし2003年4月をもって「ベーマガ」は残念ながら休刊を決定してしまいました。

 今でも十分面白いとゲームと思いますし、ベーマガに掲載された作品については、ネット上での作者による無料公開は自由ということが公式ホームページ上で述べられていましたので、休刊を惜しみつつ、記念に皆さんに遊んでいただきたく今頃になって同誌プログラム投稿規程(その他の項目5)に基づきインターネットにて配布することにしました。

 マイコンBASICマガジン プログラム投稿規程 http://www.basicmagazine.net/bm/entry/ptoukou.htm

【注】その後2015年になって電波新聞社の「電子工作マガジン」内に「マイコンBASICマガジン」が復活することになろうとは思わなんだ… denkomagazine.net

製品情報

  • 初出:1989年(1996年にWeb公開開始)
  • 対応ハードウェア:MSX2(VRAM 128KB)、MSX2+MSX turbo R
  • コピーライト表記:© 1983 PINEAPPLE SOFT/Y.Matsuki, © 1989 1996 Gigamix, All rights reserved.

クイズ!あたっちゃって25% MSXで8人同時に楽しめる、テレビ番組風クイズゲーム

 当クラブは昔にこういうゲームを作っていました。

タイトル画面

https://p.gigamix.jp/ds2/cg/screenshot_atch_1.png

ゲーム画面

https://p.gigamix.jp/ds2/cg/screenshot_atch_3.png https://p.gigamix.jp/ds2/cg/screenshot_atch_3.png https://p.gigamix.jp/ds2/cg/screenshot_atch_3.png

ゲーム内容

  • 最大5人(または8人)まで同時に参加できる、MSXパソコン向け対戦クイズゲームソフトです。
  • コンピュータAIを含めた全200人でTVのクイズ番組に参加する体で、早押し勝ち抜きクイズに挑戦します。難問・珍問の約800問があなたの頭脳を刺激します。
  • 「ピリオド」と呼ばれるクイズのジャンル単位ごとにチャンピオンを一人決めます。ピリオド毎に問題数がランダムに決められ、最終問題で一番速く正答した人 または 一人で勝ち残った人 がチャンピオンです。
  • クイズは1問ごとに全員同時に10秒以内で回答してゆきます。誤答または時間切れしたプレイヤーは失格となり、そのピリオド内では回答権がなくなります(ピリオドが変わると回答権が復活します)。さらに、クイズに正解しても回答時間が一番遅かった人は強制的に失格です。
  • 全員失格するケースも有り得なくはないのですが、全員失格した場合はチャンピオンなしで次のピリオドへ進みます

ここが見どころ

  • MSX2で、PCMによるテレビ番組風実況アナウンスが行われます!司会がひたすら喋り続けます。
  • AIと言っても簡易的な思考ルーチンではありますがCOMプレイヤーは人間っぽさが出る思考と回答を目指しました。AI一人ひとりに得意不得意のパラメータを与えています。優しい問題は正答に集中し、難しい問題ほど4択がバラけて遅く回答するようなセッティングになっています。
  • サークルPCCMの同人マルチタップ「忍者タップ」に対応しています。忍者タップを2個接続することで、最大8人プレイが可能です。
  • 回答時間が一番遅かった人が同タイムで複数人居る場合は、複数人まとめて失格します!滅多に起こらないレアケースですが、頑張って実装しました。

ミドルウェア

 当クラブのBASICプログラム開発支援ツール「DMシステム2」を採用しました。

 MSX2における漢字テキスト表示、PCM再生、BGM再生(MuSICA)、忍者タップのデバイスドライバ対応、パレットアニメーションの演出、画像データ圧縮等の各種処理をBASIC環境上で構築しています。

 DMシステム2はどなたでもご自由にソフトに組み込んでお使いいただけますので、こちらもどうぞよろしくお願いします。https://gigamix.jp/ds2/

こぼれ話

 MSXの市場が冷えていった1990年代後半はパソコン通信やインターネットを通じてMSXの愛好家同士が直接会うコミュニティが全国各地で発生していました。そういったイベント会場で盛り上がれるパーティーゲームはそもそもMSXでは数が少なかったため、「あたちゃ」それなりに好評をいただけました。

 開発の経緯、および90年代後半のMSXシーンについては「マジカルラビリンスRemix」でも振り返っていますので、そちらも合わせてご覧ください。

gigamix.hatenablog.com

製品情報

  • 初出:1997年(1998年・2000年にアップデート実施)
  • 対応ハードウェア:MSX2(VRAM 128KB)、MSX2+MSX turbo R
  • メディア:2DDフロッピーディスク 1枚
  • コピーライト表記:© Gigamix/ATCH Project 1997-1998

MGSDRV:仕様?バグ?未確認情報まとめ

随時更新中

 MGSDRVに関する既知のバグ情報、バグなのか仕様なのか分からないような未確認情報をまとめました。ご迷惑をおかけします。

 バグ情報・不具合情報をお待ちしております。当チーム @nf_ban(主宰) または @goripon_tw(プログラム担当) までお寄せください。

https://p.gigamix.jp/mgsdrv/cg/buglist.png

ちなみにMGSDRVの概要・ダウンロードは、こちらのリンクからどうぞ。 www.gigamix.jp

未解決・未調査の情報

kf→koの切り替え前後に共通したリズム楽器が指定されている場合、そのリズム楽器が発声されない?

kf→koの切り替え前後に共通したリズム楽器が指定されている場合、そのリズム楽器が発声されない。(y14,32を間に記入することで回避できます。) https://f.msxplay.com/?id=d92848c3 #MGSDRV https://t.co/BrQnU2GnlW?amp=1 — Pt.Macumba (@Pt_Macumba) 2021年2月23日

 詳細不明ですが、回避策はあります。

vbの相対指定を使用すると他のリズム楽器も巻き込まれて音量が変化する?

vbの相対指定を使用すると他のリズム楽器も巻き込まれて音量が変化する。(vの相対指定と同じ動作をする。) https://f.msxplay.com/?id=9180ce68 #MGSDRV https://t.co/0o47EgjZDx?amp=1 — Pt.Macumba (@Pt_Macumba) 2021年2月23日

 詳細不明です。

opll_tuneで指定した値によっては音程が意図しない高さになる?

opll_tuneで指定した値によっては音程が意図しない高さになることがある。トラック1(音階指定,opll_tune使用)→トラック2(opll_tuneで指定した値と同じ値をyコマンドで書き込み)→トラック1&2同時再生 https://f.msxplay.com/?id=02a58331 #MGSDRV https://t.co/1tDPCaykZP?amp=1 — Pt.Macumba (@Pt_Macumba) 2021年2月23日
opll_tuneの指定値が171以下の場合にこの仕様が発動する。F-Numberの値は344-(171-opll_tune指定値)になり、Blockが-1される。(o1の場合はオーバーフローします。) — Pt.Macumba (@Pt_Macumba) 2021年2月23日

 詳細不明ですが、回避策はあります。

machine_id の使い方が不明?違いはあるのか?問題

研究いただいてありがとうございます。m(_ _)mmachine_idについて、既存データにmachine_idを付加するツールを使った事があるのですけど、私も違いが分かりませんでした^^;MSXメーカーや機種毎にカートリッジスロット部の抵抗値に違いがありますが、抵抗値を変更するしか特効薬は無い様ですね。 — ひぽぽ(ファミコンGimmick!👍 (@koichironakaza1) 2020年7月23日
machine_idの違いがわからないのは自分だけではないということで安心しました(おぃ 機種毎の音量違いはMMLのボリューム値を変えただけではなかなか対処できないのでほんとに厄介です。なので今作っているグラディウスの曲は機種による音の違いが出ないようSCCのみで作っているのですが・・・ — ぱるぷ (@parupu_x_nagae) 2020年7月23日
machine_idの挙動について昔ain氏に聞いたことがあるんですが、MGSCでは単純にIDの記録をしているだけで、実際の音量の調整はMGSELで再生時に行っていると聞いた記憶があります。動作は3音源の最大音量を下げて調整だったかと。なのでMGSDRV単体でのプレイでは反映されない…はず(記憶あやふやです — たかを (@takawo_n) 2020年12月31日
MSXplayのチップ毎の音量バランスは実機が基準ではありません。計算が軽いバランスになっています(確かvgmplayと同じにしたはず)。ただ、FS-A1STの実機で作ったデータを再生した際に、極端に違和感がないようなバランスにはなっているはずです。 — DSA (@ym2413) 2021年1月1日
 私(nf_ban)も調査を進めていますが、今のところ machine_id に対応するアプリは MGSEL のみ、machine_id の違いを定義する仕様書の類も存在しない、という状況です。

バグではなく仕様の情報

SCCI(スナッチャー付属サウンドカートリッジ)に対応している?

 コナミの各種ゲームカートリッジに内蔵されていたSCC音源はチャンネル4とチャンネル5を共通の波形でしか利用することができないハードウェア仕様でしたが、「スナッチャー」の付属サウンドカートリッジ(通称:「SCCI」「SCC-I」「SCC+」)はチャンネル4とチャンネル5を独立して利用できるハードウェア仕様となっています。

 ですが、MGSDRVではSCC-Iに現状非対応です(SCCと同じ振る舞いを行います)。SCCIのチャンネル4とチャンネル5は共通の波形で動作します。今後対応できるかもしれませんが、開発機材=実物(カートリッジ)の確保が急務。

あれ?mgsdrvってSCC+の4/5チャンネルの独立音色モードって対応ってしてたっけ。なんか昔対応してない、という話になったような記憶が...。— DSA (@ym2413) January 21, 2020
MGSDRVバージョンアップするとして。MSX1を想定した件の修正と、可能ならSCC+対応(4/5チャンネルの個別音色指定)はやりたいな。あとはバグ修正だけど…ややこしいのばっかりだからなー。むぐぐ。 — ごりぽん (@goripon_tw) 2020年9月15日

 SCC-I対応を行うにはドライバの新設計が必要との見解です。現状はペンディングです。

SCC+対応、そういえば似非SCCはSCC+相当で動作してるんだっけか…。うへぇ。判定できるのかな? — ごりぽん (@goripon_tw) 2020年9月15日
4チャンネルの波形メモリに書き込んで5チャンネルの波形メモリを読んで変化があれば似非とかなら判定できるかなと考えてますが…。 — ごりぽん (@goripon_tw) 2020年9月25日
mgsフォーマット自体にフラグを持たせて、mgscに#scc_type みたいなコマンドを拡張する感じではないでしょうか。既存のデータでも誤って4/5チャンネルに別音色を指定してしまっているものがありそうな気がするので、自動判定は難しそうな気がします。 — DSA (@ym2413) 2020年9月25日

音ずれが発生する

MGSDRVのバグで1つ思い出したのは、(発生条件が判らないのですが)「1音目の発音音階が化ける(別の音になる)」というやつです。 なので、今でもMGSDRVのデータは、全chでv0のダミー発音データを入れてます。 MSXplayの「Arabiyaan」にも入ってるw https://t.co/hbhre3y9G0 https://t.co/jtIlJiiwo1 pic.twitter.com/of5MZ7JkI7 — Wiz.@「ペンゴ!オンライン」2曲「キャラバンブーマー」1曲作編曲担当 (@WizardOfPSG) November 17, 2019
あー…想像以上にずれてますね。 流石にこれはMGSDRVのバグっぽいですね。 他にもいくつかバグがあったような。 https://t.co/zWQFTcM8a1 — Wiz.@「ペンゴ!オンライン」2曲「キャラバンブーマー」1曲作編曲担当 (@WizardOfPSG) November 17, 2019
いやぁ…どうでしょう?w 拙者は音を敷き詰めて曲を作るタイプなので、メロだけ浮かせて静かな音色でモーフィング掛けると目立つ…のかもしれません。 もしかすると、MGSDRVの作者の方が、何等かの対処をしてそうな気もしますが。 https://t.co/pcwrvxh9UC — Wiz.@「ペンゴ!オンライン」2曲「キャラバンブーマー」1曲作編曲担当 (@WizardOfPSG) November 23, 2019
Webの「MML Editor」に読み込ませた.MUSの演奏時間を拡張するコマンドがあったのか!MGSCの取説に載ってなかったような?やり方は、.MUSの冒頭に「;[duration=600s]」を書き込んでコンパイルすると、演奏時間が600秒に拡張される。コマンド内の「600s」の値を変更すれば、任意の演奏時間に変更可。 https://t.co/mznphNGJNh — ぎゃぶねこ (@gyabuneko) December 4, 2019

E+ と E が同じ音階になる

 一般的にMML表記の「E+」は「F」の音階または相当の音階になるようですが、MGSDRV(MGSC)では「E」になります。方言となりますのでご注意ください。

ぎゃー24行目に打込みミス発見・・!CDE [[BAEF+4E+4B] [AG+F+D4F+G+A]] [BAEF+4E+4BAG+F+D4F+G+A] 「E+4」の部分がそれです。幸い、音自体は「E」の音で鳴ってくれてました。てっきり「F」音が鳴るものと・・焦った~ — K.H.(焼飯太郎)@モーメントに作品まとめてます (@Yakimeshi_Taroh) October 15, 2020
厳密に言うとMGSDRVではなく、MGSCの仕様と思います。基本的には E+ = E で扱われることはないと思います。E+ = F で演奏するか、E+ と F を微妙に違う周波数で演奏するかは、調律や楽器によるかなと思います。 — DSA (@ym2413) October 16, 2020

@eエンベロープで音色を切り替えると音がおかしくなる現象

 MGSDRVの @e コマンドは「現在の音色にエンベロープをコピー」という意味です。 @ コマンドで一度も音色を指定していない状態で @ e コマンドを使うと、音が出なかったり変な音が出たりします。

 特に曲の冒頭で音がおかしくなる場合が目立つのは、キーオンから @e が適用されるまで一瞬だけ別の音色が適用されているから。バグとも言えるかもしれませんが、ver.3シリーズにおいては仕様となります。

MGSDRV、@ e エンベロープで音色を切り替えると特に曲の冒頭で音がおかしくなることが多いですが、これはキーオンから @ e が適用されるまで一瞬だけ別の音色が適用されているからです。 — DSA (@ym2413) February 18, 2020
英語では何度かツイートしましたが、MGSDRVの @ e コマンドは「現在の音色にエンベロープをコピー」という意味です。 @ コマンドで一度も音色を指定していない状態で @ e コマンドを使うと、音が出なかったり変な音が出たりします。 — DSA (@ym2413) February 18, 2020

@コマンドで一度も音色を指定せずに音を鳴らすと最初の1音だけ「ビ〜〜ッ」っという謎の音が入り、以降の音は鳴らなくなる現象

 エレキベースの音が一瞬鳴った後、空のユーザー定義音色(すべての音色パラメータが0)に切り替わったことによって出る異音、とのこと。発音前に音色指定を必ず行ってください。

@コマンドを指定せずに @eコマンドを利用すると演奏結果が不定になる

これは @ コマンドを指定せずに @e コマンドを使うと、演奏結果が不定になる(環境によってどんな音が出るか分からない)という現象ですね。MGSDRVの仕様です。この曲のイントロについては353行目から360行目の @e コマンドの前に @ コマンド(例えば11番あたり)を入れてやると直ると思います。 - DSA (@ym2413) 2021年3月2日

「9音リズムモード」でHチャンネルの音量が全く反映されない

試行錯誤して、9音リズムモード (FGHチャンネルにリズム使用) で、Hチャンネルに音量が全く反映されていない事に気づいた。多分、ハードウェア的な仕様だよなぁ。でもなぜかソフトエンベロープ(@e)指定だと、固定の音量に下がる挙動になる不思議。多分、v と@eで内部処理が違うんだろうな。#MGSDRV — たかを (@takawo_n) 2021年2月23日

 本来設定できない「9音リズムモード」。特殊な環境なのでバグなのか仕様なのか分かりにくいのですが、OPLLの仕様のようです。

レジスタ構成の関係でHチャンネルはvがシンバルの音量、音色番号がタムの音量(14,13,12...,0,15の順で音が大きくなります)になります。例えば H y14,32 q8 v8@14 c4 でシンバルが音量8、タムが音量0で鳴ります。G チャンネルだとvがスネアの音量、音色番号がハットの音量になります。 — DSA (@ym2413) 2021年2月23日
作る側の夢としては、9音リズムモードなる opll_mode 2 を用意してもらって、そのモードではFGHチャンネルのリズム音源に指定したMMLが思い通りに音に反映される動作…という感じになるのでしょうか — たかを (@takawo_n) 2021年2月23日

 こちらは新バージョンへの要望。

半角スペースの入れ方に注意

ちょいと所用でMGSDRVをいじってるんですが、「音階と音長の間」の半角スペースは無視されるけど、「マクロ種別と数値の間に半角スペースを入れるとエラーになる」のね…知らなかった。例)〇a8〇a 8〇*b8×*b 8…って、こんな書き方しようとしてるのは拙者だけかもしれませんがw — Wiz.@「ペンゴ!オンライン」2曲「キャラバンブーマー」1曲作編曲担当 (@WizardOfPSG) 2020年12月6日
MGSDRV自体はコンパイルされたバイナリデータを再生するので、どちらかというとMGSCの仕様ですね。MGSCもソースが失われていて復旧もされていないので手を加えられないのですよ。 https://t.co/PnLQ1eFXX1 — ごりぽん (@goripon_tw) 2020年12月7日
 twitter@Wiz.さんの報告。「音階と音長の間」の半角スペースは無視される、マクロ種別と数値の間に半角スペースを入れるとエラーになる。バグとも言えるかもしれませんが、ver.3シリーズにおいては仕様となります。

MGSCNV: ver.2→ver.3への変換の違いについて

ver2をver3にツールで自動変換した.mgsファイルを、MSXplayの逆コンパイル機能で変換したMMLを解析してみたのですが、違いがあったのは・・・・データの冒頭で「machine_id」と「alloc」が追加されている・テンポが1/2になっていて、MMLの音長も1/2にされている続きます — ぱるぷ (@parupu_x_nagae) 2020年7月23日
検証に使用したファイルも自前のレンタル鯖に置いておきますね。ver2のBASICファイルhttps://t.co/TCWPNj2dcrver2をver3に自動変換して、MSXplayで逆コンパイルしたテキストhttps://t.co/l1CJ99vwbY — ぱるぷ (@parupu_x_nagae) 2020年7月23日
 変換後のテンポと音調が1/2になるのはバグとも言えるかもしれませんが、ver.3シリーズにおいては仕様となります。

プライマリのマッパーRAMへしか常駐できない?

MGSDRV ですが、PrimaryMemoryMapper にしかインストールできないみたいですね。プライマリを消費し尽くしてから常駐させて、MGSPから曲を読み込んだら、漢字RAMのときと同じ理由で死ぬかなと、テストを試みたのですが、そもそも MGSDRV がプライマリしかダメでした (^^;#MSX #MGSDRV — HRA! (@thara1129) October 19, 2020
常駐部分の簡略化とスロット切替のコストを嫌ってのことですね。基本的にDOS2でマッパ使って常駐するものには要プライマリマッパってのが多いような? https://t.co/YWxDBHOJIo — ごりぽん (@goripon_tw) October 19, 2020
 各種拡張メモリカートリッジをスロットに差すような「マッパーRAMが複数ある状態」の場合でも、MGSDRVではプライマリのマッパーRAMでしか常駐できません。turboR規格の場合は本体内蔵RAMが自動的にプライマリになります(A1ST 256KB、A1GT 512KB)。

任意のアドレスへ移動(リロケート)ができない?

制作しているメガROMゲームにMGSDRV実装案もありまして、自己書き換えやっているのでRAMのどこに置いたらいいかと、PAGE1ですかねぇ・・・? — むらかたとうじ/村方凍二 (@ipheion78) 2020年12月7日
mgsdrv.com を丸ごとROMにおいて、+0010h~(だったかな?)を RAMのpage1の 6000h~ にコピーして使えばよいと思います。そこにおかれる前提でアドレスが設定されてるので。 — HRA! (@thara1129) 2020年12月7日
元々がPage1(確か6000h~)で動作しているのでリロケートしないと他には置けないですね。ドライバのサイズは8KB上限と定められていたかと思いますが…ワークRAM込みだったかな?やっぱりROM組み込める版が必要か…。 — ごりぽん (@goripon_tw) 2020年12月7日
仕様書を見ると、一時期 MGSDRV.REL というものが公開されていて、それは L80. COM でアドレス再配置できたようですが、いまはCOMしか見あたらないので 残念ながら6000h固定ですね😅4000h~5fffhは自由に使って良いようです。 — HRA! (@thara1129) 2020年12月7日
以前はMGSDRV.RELが公開されてたのか。まさにMGSDRV.REL公開できないかなと考えてたところなので…仕様書読んでみるかー。 — ごりぽん (@goripon_tw) 2020年12月7日
 MGSDRV本体はリロケータブルではありません。ただし過去にMGSDRV.RELというファイルがパソコン通信ネットで流通していて、MSX-L80を用いて再構成することで任意のアドレスへ移動が可能だったようです。

 当クラブではMGSDRV.RELを入手および管理していません。もし今でも関連ファイル・アーカイブをお持ちの方がいらっしゃいましたらぜひご連絡ください。

管理者は見ている

2桁年ぶりにMGSDRVをバージョンアップするかもと言う話になってるんだけども。最新版って3.20で合ってるよね?(汗)(苦笑)何せ2桁年経ってると手元の物が最新かどうかも微妙なうえ、もうちょっとバージョンが上がってたような気もするので…。 — ごりぽん (@goripon_tw) September 14, 2020

MGSDRVのトップページ → https://www.gigamix.jp/mgsdrv/

しくじり先生:ファームウェア更新に失敗したCarnivore2の復旧と更新を目指すブログ(完結編)

2021年1月20日更新

https://p.gigamix.jp/carnivore2/cg/20201023164750.jpg

 およそ一ヶ月前の2020.9.23頃、自分の無知・無能が原因でCarnivore2のファームウェアを壊し、ブートメニューすら起動しなくなりました。既にあとに引けない状況なため、PCからCarnivore2のFPGAファームウェアを書き込む正式な方法で復旧することを目指します。

 これまでの人生経験の中で電子工作という作業を殆どして来なかった自分がどこまでできるのかを、恥を晒しながら記録に残します。

 そして2020.10.23、Carnivore2のファームウェア並びに各種BIOSが復旧し、再び利用できるようになりました。

事前準備

Carnivore2ユーザーガイドを正しく知る

 マニュアルは正しく読みましょう。

sysadminmosaic.ru

 そもそもの失敗は、ブートメニュー=ファームウェアだと勘違いをしていました。マニュアルの「How to upload the firmware」の項を読み飛ばした(「How to enable the cartridge and install BIOS ROMs」を先に読んでしまった)ために、ブートメニューの更新はPCを利用せずMSXの実機でも可能と勘違いし、その後の事の重大さに気付きませんでした。

本体更新について正しく知る

 もうひとつの失敗は、ファームウェアはブートメニューや各種BIOS等も内包するものだと勘違いをしていました。実際は「FPGA」と「FlashROM」の分離構造になっていて、Carnivore2における「本体を書き換える」シーンが2種類存在していました。書き換えの影響範囲が違いますので、何を更新したい場合は何をすべきなのかは正しく知っておきましょう。

FPGA

 ファームウェアについては、FPGAを書き換えます。FPGAは1MB増設RAM、内部スロット拡張、SCC互換音源、MSX-MUSIC互換音源等の物理ハードウェア部分が含まれています。一方、ブートメニュー、IDE BIOS、FMPAC BIOSファームウェアに含まれていません

 FPGAの書き換えに必要なハードウェアは…

  • Windows PC
  • 「USB Blaster」と呼ばれるFPGA書き換え用USBデバイス
  • 「ASコネクタ」と呼ばれる、基板とUSB Blasterを接続するためのコネクタ
  • カートリッジ基板への電源供給用USBケーブル
  • OSはWindows 10(「USB Blaster」の中華製ジェネリック品を利用する場合はWindows 7が便利らしいが玄人向きなので割愛)

 FPGAの書き換えに必要なソフトウェアは…

  • 「Quartus」と呼ばれるFPGA開発ツール
  • 場合によってはQuartusに含まれているUSB Blaster用デバイスドライバの手動インストールが必要

 FPGAの書き換え用バイナリーデータは、メーカー・RBSCの公式GitHubからダウンロードできます(Firmwareディレクトリ、拡張子は .pof)。

github.com

FlashROM

 ブートメニュー、IDE BIOS、FMPAC BIOSの3点については、FlashROMを書き換えます。

 FlashROMの書き換えに必要なハードウェアは…

  • MSXの実機。turboR規格の場合、Z80モードに切り替えての運用をメーカーは推奨しているようです。
  • OSはMSX-DOS2またはNextor

 FlashROMの書き換えに必要なソフトウェアは、C2MAN、C2BACKUP等です。RBSCのGitHubからダウンロードできます(Utilディレクトリ、拡張子は .COM)。

 それぞれのFlashROMの書き換え用バイナリーデータは、RBSCのGitHubから3ファイルをダウンロードできます(BIOSesとBootMenuディレクトリ、拡張子は .BIN)。これらはバイナリーデータの先頭2バイトが「AB」となっていて「起動できるROMイメージ」の体になっています。それぞれのBIOSは個別に書き換えできます。3つまとめて更新する必要はありません。

 なお、これらのデータはファームウェアに含まれませんファームウェアを最新版に書き換えたからと言ってブートメニューが最新になるわけではありません。私はここを勘違いしていました。

物理的に必要なもの

 マニュアルを読むと、以下のパーツが必要な様子。

  • 「USB Blaster Programmer」と呼ばれるFPGAを書き換えるためのケーブルセット
  • カートリッジへ5Vを供給するための簡単なUSBケーブル
  • ASカートリッジのコネクターに挿入するための2列のピンヘッダー

カートリッジへ5Vを供給するための簡単なUSBケーブル

https://sysadminmosaic.ru/_media/msx/carnivore2/usb_blaster_5v_01.png?w=350&tok=0f303a

 ケーブルの目的は理解できるものの、ケーブルの呼称がさっぱり分からない。検索キーワードが思いつかない。「電源供給」「USB」「FPGA」などの語句でネット検索してみても該当するケーブルが見つけられない状態。

 そもそも売り物なのか、自作する必要があるのか。構造は簡単かもしれんけど、電子工作経験がほぼ無い人間がこれを用意することができるのか…!?と考えていたら、識者の皆さんから商品を教えていただきました。

給電用USBケーブル(市販品)

電源のケーブルは私はこれを使いました。https://t.co/QwplUuZpx9 ASのコネクタはたまたまあった(GR8NETに同梱されていた…?)のでそれが使えて助かりました。 — kansaizine (@kansaizine) 2020年9月29日
 既製品・マザーボード接続用のUSBケーブルを転用する方法。不要なものを取り除けば完成。

www.sanwa.co.jp  「USBケーブル USB Aコネクタメス-バラ4P メス」これを分解して作れそう。端子が分離されている状態を「バラ」と呼ぶのか。オスのケーブルも一見良さそうに見えるのだがバラ側がピンになっているので、メスのケーブルのほうが加工が楽そう。

 上のケーブルに1個250円くらいの「USB オス-オス変換アダプタ」を付ければ給電できるはず。

Carnivore2のファームウェア復旧キット第1弾が着荷しました。 pic.twitter.com/zVj6VteRgW — Takashi Kobayashi (@nf_ban) 2020年10月2日
 これは超手軽。工作不要!

Carnivore2の出荷時期によって違うかもしれませんが、私のは基盤側にピンがついてなかったので、ピンをハンダ付けしてこのケーブルをそのまま使いました。 — kansaizine (@kansaizine) 2020年9月29日
 これは重要な指摘。Carnivore2は販売元が複数あり、それぞれの販路で基板構成が違います。ものによっては電源ピンが出ていない基板があるそうです。基板のロット違いも存在しているかもしれません。自分のカートリッジの場合はどうなのか、を知る必要があります。

信頼できるUSB Blaster

 まずはAmazonで購入。IchigoJamの福野さんのサイトでこれが紹介されていました。FPGA更新用のASコネクタケーブルと給電用のminiUSBケーブルが付属されていました。

ところがUSB Blasterが認識しないトラブルが発生。

互換品だといろいろめんどくさそうです…https://t.co/yVq5sSSpbv — Narita Kuniaki (@narikuni) 2020年10月11日

うちの環境だと、Quartusをインストールしてから接続すると、自動的にドライバがインストールされたような気がします…。ちなみにQuartus Prime 18.1です。ただ、この手の中華USB Blaster互換機は、中身がけっこうまちまちで、まともに動かないやつがあるとも聞きますね…。 — きょろ㌠ (@tme205) 2020年10月7日
 今回調達した中華製のUSB Blasterがいわゆる「ジェネリック品」であることがFPGA書き込み不能の原因である可能性が強まる。しかもモノは複数入り乱れているらしい。

2個目のUSB Blasterが届きました。左が1個目、右が2個目。寸法は同じだけどラベルが微妙に違う! pic.twitter.com/XwPOLCierE — Takashi Kobayashi (@nf_ban) 2020年10月12日
 別の業者から2個目のUSB Blasterを調達。2個目には「ALTERA」の文字が入っていたりして、ラベルの表記が微妙に違っている。

信頼できるminiUSBケーブル(あれば便利)

 USB Blasterの購入時に給電用のminiUSBケーブルが付属されていましたが、FPGAに書き込めない原因の一つ(USB Blasterへ正しく給電しない可能性)を未然に防ぐために、信頼できるケーブルがあれば安心です。

ありゃま残念です。いちおう USB デバイスとしては認識されてるようなので、手持ちの他の USB ケーブルで試してダメなら初期不良っぽいですね。 — Narita Kuniaki (@narikuni) 2020年10月11日

だめなときはUSBケーブルが問題だった場合ぐらいで… — applesorce (@applesorce) 2020年10月11日

mini USBケーブルを買いました。 pic.twitter.com/YF11cr5HNl — Takashi Kobayashi (@nf_ban) 2020年10月12日
 USB Blasterに付属するmini USBケーブルが不良である可能性を除去するため、念のため新品のケーブルを調達。

FPGA書き込みアプリ「Quartus」

 Windows PCからUSB Blasterを通してFPGAを書き換えるためのアプリです。

インテルFPGAのアカウントを作り、PCにQuartus IIをインストールした。Quartus IIの最新バージョンは20.3なのだがCarnivore2のユーザーガイドでは15.0で解説されていたから俺もとりあえずユーザーガイドに倣って15.0を採用した。Carnivore2のファームウェア復旧まであと少し、だと思いたい… pic.twitter.com/XMmIk5qP05 — Takashi Kobayashi (@nf_ban) 2020年10月7日
 Quartusのダウンロードは無料で可能ですが、Intel FPGAプログラムへのアカウント登録(無料)が必要。けっこう個人情報を入力させられる…

んー。Quartus II ProgrammerツールにてCurrently selected hardwareが「No Hardware」になってしまうなー。USB Blasterが選択肢に出てこないのが気になる。繋ぎ方が悪くてPCからFPGAが見えていないのか?ASコネクタをもっと斜めに倒さないと接点が付かないのか?何かインストールが足りていないのか? pic.twitter.com/4SHkYYyWLw — Takashi Kobayashi (@nf_ban) 2020年10月7日
 が、USB Blaster(1個目)が認識しないトラブル発生。

あっ、USB Blasterのドライバが動いてない!ドライバは自動インストールではないのか。そういやCarnivore2のユーザーガイドにはドライバに関する記述は無かったな。ドライバ入れないと… pic.twitter.com/egemQNUm9I — Takashi Kobayashi (@nf_ban) 2020年10月7日
 USB Blasterのドライバがインストールされていないことを確認。Quartusと同時にドライバがインストールされるかと思ったら実際はドライバはインストールされない様子。手動でのドライバインストールが必要。ここもハマりポイントでした。

https://t.co/50ah9UB5sf を読むとQuartus IIのインストールディレクトリのどこかにドライバがありそうな感じではあるのだが当方で使用するバージョンは15.0で古いんだよな…んー、どこだろう? — Takashi Kobayashi (@nf_ban) 2020年10月7日
 QuartusのインストールフォルダにUSB Blasterのドライバが付属されているが…

Quartus IIの中からそれっぽいドライバが見つかった!と思ったらインストールできなかった件。んんー pic.twitter.com/Y0gEO7VJ58 — Takashi Kobayashi (@nf_ban) 2020年10月7日
 しかしドライバはインストールできなかった。原因は不明。

 中華のUSB Blaster用署名なしドライバというものがインターネット上に存在する(インストール方法も特殊な)のですが、このドライバをインストールしてもQuartus II 15.0、Quartus Prime 20.1 LiteのどちらでもUSB Blasterを認識しませんでした。頭がこんがらがったのでUSB Blasterのドライバをいったん削除してみることに。

Quartus II 15.0 Web editionと付属ドライバをインストール(署名はアルテラになってる)して、1個目のUSB Blasterを付けてQuartusを起動したらご覧の有様… pic.twitter.com/VS5sfEwudZ — Takashi Kobayashi (@nf_ban) 2020年10月12日
 その後Quartus II 15.0 Web editionに付属するUSB Blasterのドライバがインストールできたものの、USB Blasterを付けてQuartusを起動したらブルースクリーンでフリーズするトラブル発生。何度試しても同じ症状。ドライバと本体が合っていないのでは…?ハードウェア側のトラブルの疑いを持つ。

まずはバージョン周り…。 pic.twitter.com/TKHnYcIMmV — kansaizine (@kansaizine) 2020年10月11日
書き込み直前の状態までは正常にいけました。 pic.twitter.com/0W5xTLZle0 — kansaizine (@kansaizine) 2020年10月11日
USB Blaster のドライババージョンは、Altera 15.0.0.145 Web Editionに付属のものみたいです。多分私の時は、ドライバを入れる前にUSB Blasterを挿したらうまくいかなくて、最終的にドライバを消して付属のものを入れたんだったかな…。あと何かハマった気がするんだけど…。 — kansaizine (@kansaizine) 2020年10月11日
 kansaizineさんの事例に合わせることを目指すことに。Quartusのバージョンは15.0(Quartus II Web Edition)、USB BlasterのバージョンはAltera 15.0.0.145(Web Editionに付属のもの)。

2個目のUSB BlasterならブルースクリーンにならずQuartusで認識してるっぽい!これ、もしかしていけるんとちゃうか!? pic.twitter.com/UhGBTC3sZ2 — Takashi Kobayashi (@nf_ban) 2020年10月12日
 2個目のUSB Blasterは、Quartusで認識できました。USB BlasterのドライバはQuartus II 15.0 Web editionに付属したものを継続使用。

ファームウェアの流し込み

 QuartusでUSB Blasterを正しく認識できたなら、FPGAを書き換えましょう。FPGA流し込み用のファームウェアは、Carnivore2のGithub→Firewareにあります。拡張子は *.pof です。

ファームウェアデータ(拡張子.pof)の流し込み指定は、右クリック→Edit→Change Fileでいいのかな? pic.twitter.com/jnopRiGpn3 — Takashi Kobayashi (@nf_ban) 2020年10月12日
3つのオプションにチェック付けるのを忘れずに。この状態でASコネクタを固定しながらStartボタンを押せば、FPGAに書き込めるんじゃないかな…? pic.twitter.com/aaMDhcd26o — Takashi Kobayashi (@nf_ban) 2020年10月12日
 ファームウェアデータの流し込み設定。

あと、ASコネクタはまさにこうやりました。ホールに対してピンが細いので、指で押して斜めにしてやらないと導通しないという。やってみて初めてこの写真の意味が分かりました。 pic.twitter.com/2pyCZVm1Rz — kansaizine (@kansaizine) 2020年10月1日

 Carnivore2のユーザーガイドでASコネクタを斜めにする写真が上がっていた理由を、ここで理解する。半田付けしないでピンへの接点を確実に行うために、コネクタを斜めに固定することが必要だったのです。

ASコネクタの設置はこう。ピンクの線が正面から左側を向くように。また、ピンの接点が増えるようにだいぶ傾けている。コネクタが動かないよう念のためコネクタをセロハンテープで固定している。Takashi Kobayashi (@nf_ban) 2020年10月21日

おっ、Progressが100%までいったぞ。書き込み成功したんじゃない? pic.twitter.com/3XTYKzldMq — Takashi Kobayashi (@nf_ban) 2020年10月12日
 FPGAへの流し込みが完了した?のか!?

あかーん!Carnivore2の初期画面すら出ない。FDDを読みに行ってしまう。ファームウェア書き込みに失敗したのか、まだ何か足りないのか、BIOSROMも書き込まないとダメなのか…?🤔 pic.twitter.com/kKFQmipwCP — Takashi Kobayashi (@nf_ban) 2020年10月12日
 しかしMSXの実機ではCarnivore2がまったく認識しないまま。本当に書き込みできたのか!?ファームウェアだけではダメなのか。他にも何か作業が必要なのか?→その後、認識しない原因はFlashROMの流し込みミスであったことが判明しました。

FPGA書き込み成功・失敗の判断材料

EPCS4はFPGAの左上の8本足ICのコンフィグレーションROMですね。EPCS4で良いとは思うのですが。 — KK6 (@6am6oo) 2020年10月12日
 Quartusで指定するFPGAの種類は「EPCS4」です。

何かでやむを得ずやった覚えがあるんですが、経験上スルーホールにピンを押し当てるやり方は非常に不安定です。書き込み中はずっと接点に確実に触れるように軽く手で押し当てておくか、はんだ付けしてしまう(外すのは手間ですが確実)のがいいと思います。それでもダメだと、どれかが壊れてるかと…。 — sdhizumi / S.Kudo (@sdhizumi) 2020年10月21日

 今回はFPGAの書き込みに成功しましたが、本来はASコネクタのピンの接点を固定して(場合によってはハンダ付けもしながら)確実に通電させることが正しい接続方法です(後述)。

 RBSCサポートからの情報によると、FPGAの書き込みに成功した・失敗したの判断は、本体メモリが1MB増設されたか否かが一つの判断材料だそうです。起動時にメモリが1MB増設されている場合は「FPGA自体は正常動作している=書き込みに成功している」ことが確定しています。本体が起動しない・増設されない場合はFPGAの書き込み手順に問題があります。

VERIFYが通っているのでFPGA自体は正常という前提で、書き換え以外の要因を探ってみるとすれば、(あてずっぽうで的外れも多いかもしれませんが)・違うファームウェア・違うスロット・違う本体・カートリッジ掃除・CFカードを外すを試すとかでしょうか…… — うにスキー (@uniskie) 2020年10月21日
あと、FPGAのファーム(U4:EPCS4)は書き込み失敗ならさすがにベリファイでエラー起こりそうなので書けているのではないかなと想像してます。再起動が必要なのが解せませんが、マッパを認識している=FPGA内でスロット拡張が動作している、ということかと思いますので。 — ゆたぽん (@piyota99) 2020年10月22日
 Quartusの処理にてVERIFYに成功している=FPGAの書き込みには成功している、と判断して概ね良いかと思います。Carnivore2の動作不良について、FPGAの書き込みには成功していてもFlashROMの書き込みが正しいかは全く別の問題です。

ファームウェア更新の手順(タイムライン)

子供の寝かし付けに成功したので、Carnivore2のファームウェア書き換え工程をもう一度見直して再チャレンジしようと思います。 pic.twitter.com/ApMERwPVxG — Takashi Kobayashi (@nf_ban) 2020年10月21日

 RBSCサポートに診ていただきましたが、私が作業した上記twitterスレッドのタイムラインは正しい手順、と判断していただきました。

FlashROMの流し込み

 ファームウェアとFlashROMは別物ですので、ファームウェアを書き換えて動作しない場合は、FlashROMに記録されている各BIOS(3種類)も書き換える必要があります。これはMSXの実機が必要です。メンテナンスツール「C2MAN」を用います。FlashROM流し込み用のBIOSは、Carnivore2のGithub→BIOSesにあります。拡張子は *.BIN です。

 FlashROMを流し込んではみたものの、当初は正常に動作しませんでした。

誤動作1:FlashROMのダウンロードミス→異常なBIOSが流し込まれていた

C2MANでそのエラーが出るの、Boot MenuのROMがおかしいからじゃないでしょうか?ソース見ると対象スロットの4010hに’CMFCCFRC’という文字列(BOOTCMFC.BINの10hにあるやつ)があるかチェックしているようです。 — ゆたぽん (@piyota99) 2020年10月22日
あ!原因が分かったかも?ダンプデータをバイナリで見ると4000h辺りからHTMLのようなテキストが読めるの絶対おかしい。念のためBoot MenuやIDE BIOS等のBINデータを再ダウンロードしたら容量が全然違う。容量の小さいほうが正しいデータではないだろうか。もう一度FlashROMに書き込んでみよう… pic.twitter.com/ujMeUKd2SI — Takashi Kobayashi (@nf_ban) 2020年10月22日
Carnivore2がなぜ起動しなくなったかを振り返ると、おそらく、ファームウェアを更新しようとして公式サイトから3つのBINデータをダウンロードしたものの、何らかの理由で壊れていたBINデータをFlashROMに書き込んだため、と思われる。ちなみに昨日の復旧までの手順に間違いは無かった(メーカー判断)。 — Takashi Kobayashi (@nf_ban) 2020年10月22日
 前述の先頭2バイト「AB」に繋がる話ですが、簡潔に書くと私のBIOSデータのダウンロード方法にミスがあり、ダウンロードに失敗した各BIOSのBINファイルをCarnivore2のFlashROMへ書き込んだことが原因で私のCarnivore2が起動しなくなったことが判明しました。

お恥ずかしいことですがダウンロードデータの化けは再現性があって、GitHubってファイル名のリンクを右クリックのコンテンツ保存すると実データではなく次に遷移するWebページのHTMLをそのファイル名で保存される仕様に気付きませんでした…Downloadボタンを押さないと実データが入手できない、と。 pic.twitter.com/5BM8Q0vuUu — Takashi Kobayashi (@nf_ban) 2020年10月23日
 GitHubからバイナリーデータを取得したつもりが実際は正しく取得しておらず、しかもダウンロードしたファイルのファイルネームはBINファイルそのものに見えるため、BIOSの内訳をダンプで確認するまでダウンロードミスに気付けませんでした。ここが、私的には一番大きなハマりポイントでした

誤動作2:IDE BIOSの相性問題でCFカードが利用不能→Nextor起動不能

FlashROMの書き換え完了して電源再投入。来たよ!!!久方ぶりのCarnivore2ブートメニュー。Firmware v2.40、BootMenu v2.40。FPGAちゃんと書き込めてた! pic.twitter.com/iigqtbhL0R — Takashi Kobayashi (@nf_ban) 2020年10月22日
と思ったらNextorが起動しねぇ!なんで!?😰 Sunrise IDE Driverのバージョンが変わったことが原因なのか。 pic.twitter.com/UP3f6FXMF0 — Takashi Kobayashi (@nf_ban) 2020年10月22日
 各種BIOSもv2.40提供のものに書き換えたら、ブートメニューやFMPAC BIOSは正常動作しているものの、Nextorの起動に不具合が生じるようになってしまいました。

 RBSCサポートからの情報によると、IDE BIOS(BIDECMFC.BIN)はデバイスドライバ「Sunrise IDE Driver v0.1.5」が含まれていますが、このBIOSは一部のCFカード・SDカードとの相性問題があるそうで、Nextorの起動に問題が出る場合はIDE BIOSを「Alternate版と呼ばれるバイナリーデータ(BIDECMFC.ALT)」に差し替えてください(ファイルネームを「BIDECMFC.BIN」にリネームしてC2MANからインストールしてください)、とのことです。ここもハマりポイントです。

 Alternate版はデバイスドライバ「Sunrise compatible IDE Driver v0.1.7」が含まれています。私の環境下ではv0.1.5ではNextorの起動に不具合が生じましたので、v0.1.7で利用しています。

Firmware v2.40、BootMenu v2.30のCarnivore2。Sunrise IDE driverのバージョンがやっぱり上がってる。そのおかげなのか分からないけどNextorが正常に起動、CFカードが読めるようになった!なんだか解せないけどとりあえず復旧と見なす。ヨシ!! pic.twitter.com/TRx5zM9eGD — Takashi Kobayashi (@nf_ban) 2020年10月22日
 IDE BIOSをv2.30提供のAlternate版(v0.1.7)でFlashROMを書き換えたら、Nextorが正常に起動しました!

 その後、v2.40のAlternate版(v0.1.7)で更新しても、Nextorが正常に起動しました。めでたく復旧!!

補足:FMPAC BIOSのライセンスについて

 Carnivore2の公式が配布するFMPACのBIOS松下電器産業(現:パナソニック)製の製品から無許可でBIOSを抜き出して英訳したものであり、著作権を侵害しています

https://t.co/YM1JPafyRv 「The RBCS was not involved in creation of these BIOS ROM files.」とか書いてありますね。232, Max Iwamoto and GDX が英訳したと書いてあるので、日本語版のROMに英訳パッチを当てたもののようですね・・。 — HRA! (@thara1129) 2020年11月11日
The copyright of the FMPAC ROM is owned by Panasonic, and Carnivore2 contains an illegal copy. — ごりぽん (@goripon_tw) 2020年11月14日

ライセンスが気になる&1chipMSXの実物をお持ちの方への回避策

FMPAC は、32KB の ROM なんでしょうかね?後半 16KB の方に CALL FMPAC で表示されるメッセージの類いが入ってるように見えます。前半半分は、OCM の FM-BIOS とかなり一致していますね。ARPLOPLL を PACHOPLL とかに換えて書き込んでみましょうかね。後半16KBは全部ダミーに置き換える。 — HRA! (@thara1129) 2020年11月11日

 HRA!さんの「Carnivore2内蔵 FMPAC用 BIOS生成ツール」を用いることで、実物からのBIOSデータを作成することができます。→http://hraroom.s602.xrea.com/msx/

できた!(*´▽`*) pic.twitter.com/vvHqBeXM3E — HRA! (@thara1129) 2020年11月12日

ライセンスが気になる&FMPACの実物をお持ちの方への回避策

すみません。適当な記憶でMGSAVEと言ってしまいました。FMPACのバンク選択レジスタは7FF7h。SUPER-Xの他、汎用のツールなどが使えます。https://t.co/nYzYEda2UD SAVEROM FMPAC.ROM⏎ Select Type: Custom Switch Address: 7FF7 Save Address: 4000 Block Size: 4000 First Block: 0 Last Block: 3 — うにスキー (@uniskie) 2020年11月16日

 Sean Youngさんの「SAVEROM.COM」を用いることで、実物からのBIOSデータを作成することができます。→http://bifi.msxnet.org/msxnet/utils/saverom

SAVEROMで吸い出したFMPACのROMイメージでCarnivore2へインストラクターできました!FMPACを差さない状態でスロット1-3で認識していますし、CALL FMPACで日本語メニューが出ているのでインストールに成功しているんじゃないかと思います。情報ありがとうございます。 pic.twitter.com/dsTwOXreGf — Takashi Kobayashi (@nf_ban) 2020年11月16日

 なお、作成した代替データは「FMPCCMFC.BIN」というファイルネームに変更してからC2MANよりインストールします。

補足:IDE BIOS(Sunrise IDE 互換カーネル)について

 IDE BIOSについてはCarnivore2のGithub→BIOSesで入手できるデータよりもNextor開発者のkonamimanさんが提供するデータのほうが最新版(安定版)である可能性があります。

https://t.co/C9S62XsrGm Sunrise IDE版をダウンロードしてきて、BIDECMFC.BIN に改名。これをCFカードに書き込んで、C2MAN起動。サービスメニュー9 から 5-Write IDE ROM BIOS (bidecmfc.bin) を選択すると更新されます。 pic.twitter.com/LZNX7O7AdK — HRA! (@thara1129) 2021年1月18日

 2021年1月19日現在、Carnivore2の「BIDECMFC.ALT」はNextor kernel version 2.1.0 beta 2、Konamimanさんの「Nextor-2.1.0.SunriseIDE.ROM」はNextor kernel version 2.1.0(安定版)でした。

 なお、どちらのBIOSも「BIDECMFC.BIN」というファイルネームに変更してからC2MANよりインストールします。

検討した結果とりやめた作業

給電用USBケーブルの工作

電源供給用のこの基板を作るには・USBオス to DIP https://t.co/fYxdz15IWG ・ジャンパワイヤ2本(メス-メス) https://t.co/yRORnOgWGE があれば作れると思います。お持ちでなければピンヘッダも。ストレート https://t.co/yhxytfAWHc L字 https://t.co/nYHZ4P1gOa — sdhizumi / S.Kudo (@sdhizumi) 2020年9月29日
 ケーブルを構成するパーツの最小構成を集めて自作する方法。いわゆる電子工作。のちに市販のUSBケーブルで代用できることが分かり、工作する必要がなくなりました。

www.aitendo.com  この端子部分は「USBコネクタwith基板」という名称でした。

www.aitendo.com  このケーブルは「ジャンパワイヤ」という名称でした。

USBコネクタ側は基板の穴にはめるだけなのね。簡単だ!逆側はピンを出さないといけないから、ピンヘッダを2個切り離してはんだ付けか。必要なピンの長さはちょっとよく分からないから、まぁ長めに付けてあとで調整するか… pic.twitter.com/FVFwpboVRy — Takashi Kobayashi (@nf_ban) 2020年10月5日
 こんな感じになるらしい。USBコネクタ側ははめ込むだけでOKだが、ピン側はハンダ付けが必要。ピンの長さをどの程度出すべきなのかはよく分からないので、長めに付けてから切ることを考える。

ASカートリッジのコネクターに挿入するための2列のピンヘッダーの工作

https://sysadminmosaic.ru/_media/msx/carnivore2/usb_blaster_as_02.png?cache=&w=900&h=484&tok=67e771

 PLD 2×5、2.54 mm。プログラマケーブルのコネクタをこの形に変形しないとケーブル接続できない。

www.aitendo.com  必要なぶんだけ折って切り離せるらしい。便利!

注意点としては、USBコネクタのGNDは外装全体も含むので、外装の耳とGNDピンをはんだ付けができる温度に上げるためには結構温度が必要です。コテ側の出力もそれなりに大きい or 大きくできるものがあると楽です。 — sdhizumi / S.Kudo (@sdhizumi) 2020年9月29日

おっと!こういうのは使わなくても4ピン付けてしまった方が取り付け作業も転用時も楽です。ピンの長さは短い側をはんだ付けすればジャストな感じになると思います。 https://t.co/YuCiG44Wmw — sdhizumi / S.Kudo (@sdhizumi) 2020年10月7日
 私は勘違いをしていました。ピンヘッダーは「L字」という商品があったのを忘れて「ストレート」を買ってしまいました。ストレートだと折らないといけないので半田付けが面倒臭い。

ボックスヘッダの工作

 本来はボックスヘッダを基板に固定したうえでASコネクタを接続させるべきなのですが、ボックスヘッダを基板に固定してしまうとカートリッジケースに収まらなくなることが判明し、ASコネクタを斜めに当てて手を抑えながらFPGAを更新することにしました。

それでもってASコネクターに繋ぐためのピンは、基板側のデザインを見るに、これの10ピン(2x5)を想定しているようですね。もちろん普通の2.54mmピッチのヘッダピンでも大丈夫です。(ケースとどのくらい干渉するかは未確認)ケーブルはライターに付属するようですね。https://t.co/pLcMyXFLMC — sdhizumi / S.Kudo (@sdhizumi) 2020年9月29日

www.aitendo.com  この部品は「ボックスヘッダ」という名称らしい。aitendoの商品の場合サムネイル写真はピン数が多く見えるものの、6ピンから40ピンまで種類が豊富にある。今回の場合は「10ピン」が該当。

ASコネクタはピンを10本はんだ付けするだけなので、手間や難度自体は温度が必要なUSBコネクタよりは簡単かな、と思います。繰り返しですが、ASコネクタにピンヘッダを付けた際にどれくらいカートリッジシェルと干渉するのかは分からないので、作業後に取り外しになるかもしれません…。 — sdhizumi / S.Kudo (@sdhizumi) 2020年9月29日

USB Blasterケーブルのほうはボックスヘッダがこんな感じで付くのかな。10ピンはそのまま差さるけど少しぐらつくから、はんだ付けしたほうがいいんだろうね。とは言え裏側にピンが1.5mmくらいしか出ないからはんだ付けしないでテープで固定するだけじゃダメだろうか(横着者 pic.twitter.com/0QjLJXgG6r — Takashi Kobayashi (@nf_ban) 2020年10月5日

USB Blasterケーブルの続き。Carnivore2のユーザーガイドで紹介されている取り付け写真と、俺の所有するケーブルが上下逆になっているらしく、写真を見てもその通りにならなくて違和感があった。基板の正面から見てケーブルの左側にピンクの線が入っている状態が正しい配線なのだと理解している。 pic.twitter.com/F4sfylDgA2 — Takashi Kobayashi (@nf_ban) 2020年10月6日
 こんな感じでつなげるらしい。10ピンの部分はそのまま差さるけど、裏側は1.5mm程度しかピンが出ないので、できればハンダ付けをやらないで済ませたい…

コンタクトピン(あれば便利)

 コンタクトピンと呼ばれる部品で半田付けなしに手軽に固定できるらしいことを教えていただきました。

これはコンタクトピン(バネで引っかかる)で繋ぐといいのかも — applesorce (@applesorce) 2020年10月1日

逆作用バネみたいになってて半田付けするまでもない時に使う感じっすな。 — applesorce (@applesorce) 2020年10月1日

秋月で売ってるこんなやつでどうでしょうか。 https://t.co/iJ5Y3sNXX3 — おまんじゅう・エポキシ(epoxy) (@drepoxy) 2020年10月1日

失敗までの顛末

 ファームウェア2.30のCarnivore2を所有していますが、デュアルスロット設定の新機能が備わっている最新版の2.40の情報を知り、自分のCarnivore2も2.40へ更新したくなりました。開発元・RBSCのGithubにはBIOSやブートメニュー等のリポジトリが登録されていました。

 前述の通りブートメニュー=ファームウェアだと勘違いをしていたため、必要な3つのBINファイル(BOOTCMFC.BIN、BIDECMFC.BIN、FMPCCMFC.BIN)をCarnivore2のメンテナンスツール「C2MAN」で更新すればファームウェアが更新される?と考え、ユーザーズマニュアルの「How to enable the cartridge and install BIOS ROMs」の手順でFlashROMの書き換えを実行したわけです。

 一度はブートメニューが2.40に更新されたCarnivore2が起動していましたが、Nextorが起動しないような不安定さでした。

またヘルペス発症である。最近身体の具合が悪いことばかりだ。今日はゆっくりのんびり休むことにした。悪いことは重なる。Carnivore2のファームウェアを実機でアップデートしたらブートメニューは変わったけどNextorが起動しなくなった。つらい。とりあえず今は寝る… pic.twitter.com/uBzVzKzDAP — Takashi Kobayashi (@nf_ban) 2020年9月29日

 工場出荷時のFlashROMの内容はCarnivore2のFlashROMバックアップツール「C2BACKUP」でバックアップしていました。バックアップデータは8MB強のファイルサイズになっていました。

 そこで、Carnivore2のFlashROMを工場出荷時の内容へ「C2BACKUP」で書き戻し、復旧しました(2.30へ戻る)。

Carnivore2、復旧。工場出荷時のFlashROMをバックアップしていたので、C2BACKUPというツールでFlashROMを戻した。8MBというFlashROMの容量はMSXではなかなかキツい。俺はMegaSCSIを持ってたから8MBのデータファイルをSCSIのストレージに置けたけど、Carnivore2しか持たない人はどう復旧するのか。 pic.twitter.com/2AreGpDR4T — Takashi Kobayashi (@nf_ban) 2020年9月29日

 再度2.40への更新を目指し、最新のリポジトリから上記3ファイルをダウンロードし「C2MAN」でFlashROMへ書き換えた(2回目)ところ、1回目とは違って以後まったく起動しなくなりました。スルーされています。

 「C2BACKUP」で戻そうとしましたが、1回目とは違い2回目は以下のようなメッセージを表示してアプリが終了するようになってしまいました。

WARNING!
Uninitalized cartridge or wrong version of Caanivore cartridge found!
Only Carnivore2 cartridge is supported. The program will now exit.

(要約)
初期化されていないカートリッジまたは間違ったバージョンのCarnivoreカートリッジが見つかりました!
Carnivore2カートリッジのみがサポートされています。 プログラムは終了します。

 「C2MAN」も2回目以降は警告を発するようになりました。

Uninitalized cartridge or wrong version of Caanivore cartridge found!
Using this utility with the wrong cartridge version may damage data on it!
Proceed only if you have an unitialized Carnivore2 cartridge. Continue? (y/n)

(要約)
初期化されていないカートリッジまたは間違ったバージョンのCarnivoreカートリッジが見つかりました!
間違ったカートリッジバージョンでこのユーティリティを使用すると、データが破損する可能性があります。
初期化されていないCarnivore2カートリッジがある場合にのみ続行してください。 続けますか?(y/n)

 後々分かったことですが、GitHubからダウンロードしたBIOS3ファイルのダウンロード方法をミスしていたにも関わらず「C2MAN」でFlashROMへ更新してしまったことで「C2BACKUP」ではメンテナンスできない状態にしてしまいました。「C2BACKUP」でいつでも工場出荷時の設定に戻せると思っていた考えは、浅はかだったわけです。

 俺みたいになるな!!

謝辞

 貴重な情報を提供していただいた皆様に感謝します。メーカー・RBSCサポートチーム、twitter @applesorce @goripon_tw @kansaizine @narikuni @piyota99 @sdhizumi @tme205 @thara1129 @uniskie @6am6oo 識者の方々…本当にありがとうございました。