OPNをOPNAに換装する話

とても興味深いネタが流れてきた。ネタ元は元ファミコンランド中標津店の中の方で、3年前の札幌のイベントでご一緒させていただいた方である。お久しぶりです!

PC-98×1のFM音源といえば、OPN搭載の26K音源、上位互換OPNA搭載の86音源が有名であるが、この基板で改造すれば26K音源を86音源相当にUpgradeできるらしい。98のソフトにはOPNA対応のものが多いので恩恵はかなりありそう。なにより基板がコンパクトで実装場所の不安が少ないのが良い。問題点は作者の方が書いておられるように元のOPNのIOデコード回路の構成によっては換装できない(または極めて困難な)機種が存在することのようである。また、YMF288は汎用ポートが利用できないが、元々ジョイスティックポートを持たない機種であればデメリットにはならないだろう。

自分もやってみようと手持ちのNOTE ORCHESTRA LITTLE-1を調べてみた。98noteの110pバス対応のFM音源の情報は下記リンクに纏められているが、ほとんどがOPN搭載機のようである。

https://j02.nobody.jp/jto98/n_note_sound/fmu.htm

なお、SNEの音源については下の記事からリンクしているUME-3さんのデータベース(EXCELファイル)が詳しい。

http://ohta.music.coocan.jp/packen/board/sne.htm

件のOPNA化基板で改造できるかどうかはBASICでコマンドを投げれば判別できるとのこと。

IOポートの#188hと#18ChがミラーになっていればOPNA化できるらしい。結果は3,3なのでビンゴ!と思いきや、後に罠が待ち構えているのであった。

ガワを開けてみたところY8950が載るパターンが空いていて、ちょっと笑ってしまった。何故かSNEの音源ボードにはY8950やYM3812(OPL2)が乗っている製品があるが、対応ソフトはほとんど出なかったらしい。98のFM音源界におけるベータマックス的存在だろうか。Y8950が実装されていたら剥がしてMSX-AUDIO製作に使えるのに残念、というか、これだけ隙間があったらYMF288でなくてYM2608が載るのでは?

当方、YM2608はMSX用のカートリッジの製作でノウハウがあり、設計データを流用して基板イメージはサクっと完成。YM2608ならADPCM用のDRAMが搭載できるし、ジョイスティックポートも温存できる。OPAMP電源はジャンパー設定で5V単電源と±12Vに対応。98の5V電源の品質が解らないので、とりあえず単電源で作ってみて、ノイズが多ければDC-DCを積めばいいだろう。

3週間で基板が届いたので実装。ガワ内部にはスピーカーがせり出していて、微妙に高さ制限がある。そこでICソケットに細ピンを直挿しし、この上に基板を載せて高さを抑える手法を採った。実装時に半田がソケットに流入しないようにポリイミドテープで保護している。

OPN用DACのYM3014は引っこ抜いてソケット化、2-6-7pをショートしてメインボード側で不使用となるOPAMPの入力をGNDに接続しておいた。OPNAサウンド出力はR14(L側),R10(R側)を撤去して配線。4MHzのオシレータは邪魔なので撤去。その他干渉する部品は倒したりして適当に処置。

OPNAのアドレスA1については、110pバスのAB021がバッファICを経由してGALの7pに入っているのを確認した。ここがA1取り出しポイントであるが、OPNAの/CSは無加工では駄目で、GALの7pを跳ね上げてGNDに接続する必要があった。

当初の調査で#188hと#18Chの読み取り値が3,3を返したのでミラーイメージと思っていたのだが、実は#18Chはミラーではなくfloatingしている模様。試しに#188h,#18Ah,#18Ch,#18Ehを連続して読むと値は3,0,0,0になり、#18Chの値は直前に読んだ18Ahに引きずられて変化した。このボードでは#18ChはY8950に割り当てられているが、データを返すはずのY8950が実装されていないためそのような挙動を示したものと思われる。

METAL FORCEではSPB(スピークボード)として認識し、ADPCMによる合成音声も発音された。ジョイスティックポートに猫の手リモコンを挿せばワイヤレスサタパでプレイ可能。ただ、内蔵スピーカーの音が劣悪なので、ヘッドフォンか外付けスピーカーは必須だろう。

FMPでもスピークボードとして認識した。

偉人による古の作品を鑑賞。ステレオでPCMも鳴っていて、改造前とは別世界である。自分は当時リアルタイムでは98のFM音源文化を経験していなかったが、2023年現在でもソフトやデータが配布されているのはありがたい限り。ドライバやプレーヤーはVectorで配布されている。

肝心の音質は思ったより低ノイズで、クリアに聞こえていると思う(個人の感想です)。OPAMPは5V単電源でも良さげなので±12VのDC-DCはオミットした。ちなみに上のつべ動画のサウンドは実機からの生録で、冒頭から終端まで無加工のもの。


余談であるが、SNEのFM音源は妙なステレオ出力仕様になっていて、OPN音源のLchがSSG、RchがFMに割り当てられていたりする。これをヘッドフォンで聴いたりすると、左右の耳に全く違う音が入ってきてマトモに聴いていられない。スイッチでアナログモードに変更することもできるが、せっかくなのでステレオ効果を温存しつつ脳がバグらない程度にLRをMIXする改造をしてみた。

 

ザックリ回路を解析するとこんな具合。LとRが完全にSSGとFMで分離しているが、これをSSG:FM比率をLch2:1、Rch1:2くらいに調整する。

上図の赤丸で囲ったところに1k抵抗、3k抵抗を追加してみた。GrounseedのOPで試聴するとこんな感じになる。

更に余談だが、Grounseedは非常に楽曲に力が入っていると思うが、OPN版はOPNA版と違う曲に差し替えられていたりする。OPNA版は劇中BGMも神がかっているので、できればスピークボード(または86音源+ちびおと)で、良い再生環境で聴いてみてほしい。

なお、このLR-mix改造はOPNA換装後は意味をなさないが、SNEの変態ステレオ仕様で困っている方の参考になれば幸いである。

初代PC-6001で似非P6ROM使用時に画面が乱れる件

家電のケンちゃんからリリースしている「似非P6ROM」ですが、「特攻空母BELUGA」を初代PC-6001で起動するとタイトルCGが激しく乱れるとの報告がありました。

この現象は当方のPC-6601SRでは確認できませんでした。動画を撮影されたセイさんによると、乱れるのはタイトルCGだけで、ゲームは普通にプレイできるとのこと。さらに調査を進めると、初代PC-6001で、似非P6ROMに搭載されている8000h-BFFFhのRAMがVRAM領域として使われる時に発生することが分かりました。

試しに似非P6ROMのRAMチェッカーを初代P6で実行すると正常に読み書きできていました。

つまり、8000h-BFFFhはRAMとしてはアクセスできているのにVRAMとしては正しくアクセスできていないことになります。


原因の究明

似非P6ROMは戦士のカートリッジの互換機として設計していますが、西田さんのオリジナルとは微妙に仕様が異なります。本家ではP6のスロットの/RAS2と/EXCAS、/DRD2がL時にカートリッジの8000h-BFFFhにレイアウトされたSRAMからデータを読み出す仕様になっていますが、似非P6ROMでは更にアドレスが8000-BFFFhであること、つまり「A15=Hi,A14=Lo」を条件にしています。MSXではこの条件を入れておかないと4000h-7FFFhアクセスがあった時(システムROMのREAD時など)に似非P6ROMのRAMがデータを吐き出してしまい、バス競合が発生して動作しなくなるからです。どうしてそうなるかはMSXとP6のスロットの信号の違いを眺めていれば理解できると思います。

本家の戦士のカートリッジでは初代機でもタイトルCGは正常に表示されますから、このあたりに不具合の原因がありそうです。

さて、P6ではCPUが管理する16bit幅のアドレス上のメモリの一部をVRAMとして利用していますが、画面描画時にCPUはBUSREQを受けてバスを開放し、VDGと呼ばれるプロセッサ(M5C6847)がVRAMアドレスを発行してRAMにアクセスします。ところが、VDGがハードウエア的に生成しているアドレスはA0-A12の13bit幅しかありません。残りのA13はページアドレスとしてVDGの外で生成されていますが、A14,A15を生成する仕組みは見つけられませんでした。つまり、VDGによるVRAMアクセス時はA14,A15がHiレベルでもLoレベルでもなく、浮いていると考えられます。

参考資料:(M5C6847のアドレスバスはDA0からDA12までしかない)

https://en.wikipedia.org/wiki/Motorola_6847

これはP6のスロットに出ている外部DRAM用の信号が、8000h-BFFFhのアドレスデコードを含んでいることを示唆しています。それを裏付けるように、純正のROMRAMカートリッジはスロットのA14,A15には何も繋がっていませんでした。

実際にVDGがVRAMアクセスする時、浮いているA15:A14は論理的には00,01,10,11のいずれかの状態になりますが、似非P6ROMでは「10」の時のみアクセス可能、つまり確率1/4でアクセスに成功することになります。これでノイズの中に部分的にタイトルCGが表示される現象が説明できます。


対策

似非P6ROMのCPLDを改修し、本家戦士のカートリッジ同様に外部DRAM信号を利用したSRAMアクセス時のA14,A15を無視すればVRAMアクセス時の問題は回避できると考えられます。しかしそれをやると似非P6ROMがMSXで動作しなくなってしまいます。

そもそも初代P6がVRAMアクセス時にA14,A15をフローティングにしているのがイレギュラーなので、本体改造してCPUバス開放時の信号をA15=Hi,A14=Loにしてしまえば問題は解決します。例えば以下のような回路になりますが、P6mkII以降はこのような仕組みがカスタムICに入っていると思われます。

しかし、あくまでもVRAMアクセス時にA14,A15が浮いているのは初代P6本体の「仕様」です。よって似非P6ROMの改修で対処するのが正道でしょう。

このように2本の抵抗を使ってA15をプルアップ、A14をプルダウンすると、CPUバス開放時にA15=Hi,A14=Loとなり、似非P6ROMのRAMをVRAMとして正常にアクセスできるようになると思われます。実際にセイさんに検証していただきました。

改修により正しくタイトルCGが表示されるようになりました。このままMSXやPC-6601に挿しても問題なく動作するそうです。デメリットとして、A14、A15の状態遷移がわずかに遅延しますが、通常は問題にならないでしょう。あと、P6のバスバッファ付きの拡張スロットを使うと、末端のカートリッジのプルアップ、プルダウンが無効化されるため画面の乱れが再発します。


結論

今回の不具合は初代PC-6001限定で発動するもので、原因は初代P6の画面描画時にアドレスバスA14,A15が浮いているという「仕様」でした。

初代P6以外で運用する場合は不具合は発生しませんし改修も不要です。画面が乱れる状態で使用を続けていても故障の原因にはなりません。改修する場合も似非P6ROM基板への抵抗2本の取り付けといった比較的簡単な作業で完了します。よって今回の件は「仕様」とさせていただき、当方による改修サービスは行いません。恐れ入りますが、本機をPC-6001初代機でご使用になる方には、抵抗2本の増設による改修を推奨いたします。


補足

後から知ったのですが、P6で様々な検証記事を書かれているMORIYAさんが過去に類似の問題を報告されていました。

http://p6ers.net/mm/pc-6001/dev/flashromcard/32k.html

おそらくこのケースでもROMカートリッジのA14をプルダウン、A15をプルアップすれば問題は解決するだろうと思います。

似非OPMでSFG-05のBIOS ROMが動作しない件

当方からリリースしている似非OPM-ROMですが、FlashROMにSFG-05のBIOS ROMをインストールした際、CALL MUSICでフリーズするという報告がありました。

うっかりしていました。動作テストではSFG-01のBIOS ROMを使っていて、CALL MUSICで不具合が確認できなかったので油断していました。実際にSFG-05のBIOS ROMで確認してみると確かに下画像のような状態でフリーズします。

turboR(Z80モード)では、MSX2と同じ白画面でフリーズしました。本物のSFG-05をスロットアダプタ経由でこれらの機体に挿した場合は問題なくCALL MUSICできました。

ちなみにSFG-05より若いスロットにMSX-MUSICのFMBIOSが存在する場合(松下2+やtR等)はCALL MUSICするとMSX-MUSICの方が有効になってしまうので、SFG-BIOSで動かす場合はCALL MUSICAとか、MUSICの後に適当な文字が必要です。


原因追求

SFG-05のBIOS ROMを逆アセンブルして調べてみたところ、SFG-05のBIOSはZ80の割り込みモード2(IM2)を使っていることが明らかになりました。海外のサイトには以下の情報が出ており、この件については既知だったようです。

http://map.grauw.nl/resources/midi/ym2148.php

本来MSXではIM1しか使われないことになっており、MSXのメインROMもそのような構造になっています。しかし、SFG-05ではCALL MUSICでPage0のシステム領域をゴッソリSFG-05のROMに差し替えて、MSXとは別のシステムで動作しているような状態になっていました。当然MSXのBIOSコールは使えませんが、強引にIM2を使うような手法も採れるというわけです。

Z80のIM2はどのように使われるのか、Z80のデータシートを調べてみました。IM2の状態で割り込みが発生すると、Iレジスタに定義した上位8bitと、割り込みコントローラ(特別に用意されたハードウエアが)が発行する下位8bit(IRQベクタ)が示すテーブルに書かれているアドレスがCALLされるようです。

IRQベクタの下位8bitは、下のチャートが示すように/M1と、/IOREQがLレベルに落ちたタイミングで、割り込みコントローラが出力したデータを取り込むことになっています。

SFG-0xの回路図を見ると/IOREQと/M1がL時に/BUSDIRを立ち下げてコントローラ(YM2148)に入力しています。このタイミングでYM2148がデータバスにIRQベクタの下位8bitを発行していると思われます。

先程のGrauwさんのサイトを参照すると、SFG-0xのIRQベクタを書き込むアドレスはこのように定義されていました。

SFG-0xでは予め3FF3h、3FF4hにIRQベクタ(下位8bit)を書いておくと、割り込みが発生した時にYM2148がこの値をデータバスに出力する仕組みになっていると解釈できます。MIDI割り込みと外部割り込みの2種類がありますが、MIDI割り込みはYM2148自身が発行するものなので、このときは自動的に3FF3hの値を発行して素早く処理に移行しているのでしょう。おそらくMIDI割り込みの精度を高めるためにこのような仕組みにしたものと思われます。

外部割り込みとしてはOPMのタイマー割り込みと、VDPの割り込みがありますが、このときは3FF4hの外部IRQベクタを発行してソフトウエア的に識別しているようです。

似非OPMではMIDI割り込みが発行されることはないので、3FF3hのレジスタは無視して良さそうに見えます。CPLDで再現する場合は新たに3FF4hに8bitのレジスタを設けて、/M1と/IORQがLになったタイミングで/BUSDRをLに落とした上でデータバスに値を出力するように作ればSFG-05のBIOSも動作するかもしれません。


ハードウエア的に検証してみる

CPLDリソースの都合で似非OPMにIRQベクタを発行する機能を付加するのは難しいので、専用の基板を作成して検証してみます。

実験用に適当な試作機の基板から、Z80のアドレスバスとデータバスがすべてCPLDに繋がっているものを選択しました。/M1は適当な未使用ピンに繋げればいいでしょう。CPLDには下記のようなVHDLで書き込みました。

問題はこの基板にも似非OPMと同じ/SLTSLを与える必要があることですが、核スロのCPLDを書き換えて外部スロットをどちらも#X-0になるようにして実験しました。

その結果、似非OPMでもSFG-05のCALL MUSICが立ち上がりました。ただし、このソフトは外付けのミュージックキーボードを必要とするらしく、似非OPMで起動しても特に使い道はなさそうです。MusicCompoer2も起動はするようでした。しかし、MIDI割り込みについては未処理なので何らかの不具合は出るかもしれません。


似非OPMでの根本的な対処は不可能と結論

ということで、フリーズの原因はIM2の使用と断定しました。似非OPMでIM2に対応させるには、MegaROM対応を諦めてCPLDのピンアサインを変更して基板を作り直すレベルの話になりますが、コストやCPLDリソースを考慮すると、ちょっと現実的ではありません。

似非OPMはネットで出回っている楽曲データを生のFM音源で再生したり、OPM音源付きのMegaROMソフトを作れるというコンセプトで設計したものです。SFG-0xの互換性については、MIDIやミュージックキーボードの接続機能を排除していることから分かるように割り切っています。YAMAHAの作曲ソフト群についてはオマケで動けば…くらいに思っていました。

とはいえ、似非OPMは取説でSFG-0xとの互換性を謳っていましたので、優良誤認を誘っていると指摘されたら反論はできません。YAMAHAのソフトで使うことを目的に購入された方には、ご期待に添えずに申し訳ございません。本件を理由に返品をご希望される方がおられましたら応じますので、所有されている似非OPMにご自身のネットネームが書かれている紙片を重ねて写真を撮り、この記事のコメント欄にネットネームとメルアドを記入した上で画像ファイルを添付してください。折り返しメールで返送・返金についてご案内します。記入されたメルアドは管理者のみに通知され、外部には公開されません。勝手ながら期限は5月末日までと設定させていただきます。


似非OPMの活用事例

GrauwさんのVGMPlayやいとけんさんのMAmi-VSIFドライバ等、一般ユーザーが作成しているフリーソフトは、SFG-0xのROMの0080hに存在する識別文字列を読んでいるだけなので、SFG-05のBIOSをインストールした状態でも特に問題なくお使いいただけます。

TINY野郎さんがyoutubeで公開されているゲームミュージックデモは動画の概要欄のリンクからダウンロードできます。

https://www.youtube.com/@tiny_yarou/videos

例えばこういうのです。

海外でMSXゲームのOPMパッチが公開されているものがあり、これらで似非OPMを発音させることもできます。

https://github.com/ToughkidDev/mglOcm/tree/master/ArcadeEnhanced

ただし、これらの中にはOPMを3FF0-3FF1hではなくミラーアドレスの7FF0-7FF1hでアクセスしているものがあります。その場合は似非OPMの基板を取り出してJP1にハンダを盛ってショートしてください。JP1ショートで似非ROMは16kバンクモードになり、OPMは3FF0-3FF1hでも7FF0-7FF1hでもアクセスできるようになります。16kバンクモードではFlashROMの書き込みが正常にできませんので、書き込み時はJP1のハンダを除去して8kバンクに戻してください。


似非OPMの4MHzモードについて

GrauwさんのVGMPlayはOPMを3.58MHzで鳴らすことを前提に周波数を変換しています。変換されるのは常にPSG側であり、FM側は変換されません。例えば原曲が4MHzの曲を3.58MHzのOPMで再生した場合、OPMは周波数変換されず低いキーで再生され、PSGはそれに合わせて低いキーに変換されます。原曲が3.58MHzの場合はどちらも変換されずに原曲通りに鳴ります。

似非OPMには4MHz切り替えスイッチがありますが、VGMPlayではこれを識別できませんし、周波数指定するオプションも存在しません。よって4MHzモードで原曲4MHzの曲を再生すると、OPMは正しいキーで発音される一方で、MSX本体が出力するPSG音声が低いキーに変換されて不協が生じます。

この問題を回避するには、VGMplayにパッチを当ててOPM 4MHz用の実行ファイルを作る必要があります。具体的には下記のように書き換えてください。

■OPM(YM2151) 4MHz化 : VGMPlay msx (ver1.3)
68EAh [99 9E 36] → [00 09 3D]
6928h [99 9E 36] → [00 09 3D]

これで本体PSGと調和するはずです。ちなみに似非OPMではSFG-0xとは異なり、音声信号をMSX本体のスロットに出力しません。PSGとミキシングする場合は、MSX本体の音声出力を似非OPMの入力端子に接続してください。ミキシングバランスは似非OPM背面のVRで調整できます。

以上の件は調和しないという報告がありましたので一旦保留にします。

SG-Mk3 OPLL増設基板 Rev.1b/1c 改修のご案内

ご注意:2023年1月末日をもって改修受け付けは終了していますが、記録として以下の記事を残しています。


2021年9月にリリースしたSG Mk3 FM音源増設キットに若干の不具合があることが判明しました。対象は基板に「Rev.1b」とプリントのあるものです。2022年8月リリースのRev.1c以降ではこの問題は解消されています。

2022.9.16追記)新たにRev.1cにも不具合が判明しましたので、改修対象にいたします。

改修対象のRev.1b 基板

不具合の内容は下記の通りです。

  1. 3倍速クロックアップ動作時にFM音源が異常な発音をすることがある(Rev.1b)
  2. FMサウンドにノイズが混入することがある(Rev.1b)
  3. 一部のソフトでFM音源とDCSG音源が正しく切り替わらない(Rev.1b/1c)

お買い上げ頂いた方にはお詫び申し上げます。


原因と対策

不具合1については3倍速(10.74MHz)動作中のFM音源アクセス時にCPLDで生成していたCPU Waitが不適切であったことが原因でした。通常クロック(3.58MHz)動作中は問題ありません。

解決策はCPLDファームウエアのUpdateです。本記事内で改修版のファームウエア(JEDファイル)を公開しますので、XilinxのCPLD(XC9536XL-VQ44)の書き換え環境をお持ちの方はご自分で書き換えて頂いても結構です。

不具合2については、採用したOPAMP(U7:LM358)の特性によるもので、FM音源の発音時にチリチリとしたノイズが混入することがあります。解決策はOPAMPの交換で、LM358をNJM4580CGに張り替えることでノイズが解消します。

不具合3については、#F2hレジスタの実装の問題でした。過去のSMS実機の解析により、#F2hレジスタのbit1がDCSGのMute制御レジスタだと思っていたのですが、実際にはbit0もDCSGのMute制御に関わっていることが判明しました。改修にはCPLD書き換えが必要です。(2022.9.16追記)

NJM4580CGは2022年8月現在秋月電子さんで5個120円で販売されています。腕に自信のある方はご自分で交換して頂いても結構です。LM358を取り外す際は、パターン損傷を避けるため、半田をタップリ盛って半田ゴテ2刀流で作業されることをオススメします。

CPLD書き換え環境をお持ちでない方や、OPAMPの張替えに自信のない方を対象に、当方で郵送による改修を行います。ご希望される方は下記要領に従ってお申し込みください。


対象製品

2021年9月に家電のKENちゃんで頒布したSG Mk3FM音源増設キット「SG Mk3 FM SOUND BOARD Rev.1b」とプリントのある基板。

2022年8月に家電のKENちゃんで頒布したRev.1cとプリントのある基板も改修対象です。(2022.9.16追記)

改修内容

  • CPLDファームウエアのUpdate(Rev.1b/1c)
  • U7のOPAMP「LM358」を「NJM4580CG」に交換(Rev.1b)

受付期間

2023年1月末日までとさせていただきます。お早めのお申し込みをお願いします。(改修対象拡大に伴い期間延長しました)

改修受付窓口

このblog記事のコメント欄が受付窓口となります。コメント欄が見当たらない時にはこの記事のタイトル「SG-Mk3 OPLL増設基板 Rev.1b/1c 改修のご案内」まで戻り、タイトルをクリックしてください。

コメント投稿時のお名前はネットネームで結構です。

必ずメールアドレス欄にご連絡可能なメルアドを記載してください。メルアドは非公開です。コメントは管理人による承認後に公開されます。投稿後にコメントが表示されなくても再投稿せずに数日お待ち下さい。

対象製品を所有されていることを確認させていただくため、ネットネームが書かれたもの(紙切れで結構です)と対象製品が一緒に写っている画像ファイルを添付してください。フォーマットはJPG,PNG,GIFでファイルサイズは32MB以内です。

以上で受付は終了です。1週間以内に当方より対象製品の送付先をメールでご連絡いたします。メールが届かない場合は、メール受信ソフトにより迷惑メールに分類されていることがありますのでご確認願います


送付の方法

返送先を記載した宛名ラベルを作成してください。郵便番号、住所とお名前を記載した4cm x 7cm程度の白い紙きれで結構です。また、宛名ラベルの裏には申込み時に使われたメルアドを記載してください。メルアドにより申し込み者と現物の紐付けをしますので忘れずに記載してください。

宛名ラベルは製品の返送時に封筒に糊付けしてお返しします。返送先が分からないと製品をお返しできませんの忘れずに添付してください。

対象基板の背面に実装されている連結ピンは非常にデリケートです。取り外しの際はピンが曲がらないように、少しずつ慎重にソケットから引き抜いてください。連結ピンは適当なIC保護用のスポンジや発泡スチロールの切れ端等に挿し込み、輸送時にピンが曲がらないように保護してください。梱包の不備に由来する折損があった場合、当方は修復いたしません。対象基板のICソケットに実装されたCPUは取り外してください。CPUは添付不要です。対象基板は適当なクッション材で包み、宛名ラベルと一緒に封筒に入れ、任意の手段で発送してください。参考までに厚さ3cm以下、重量100g以下の定形外郵便の送料は140円です。恐れ入りますが往路の送料はご負担願います。

送料は実際にかかった送料に関わらず、返送時に140円分の切手でお返しします。(2022.9.16変更)

参考:手紙の基本料金(郵便局)

https://www.post.japanpost.jp/send/fee/kokunai/one_two.html

参考:サイズ・重さの対応について(郵便局)

https://www.post.japanpost.jp/service/standard/one_size.html

改修にかかる材料費や手数料は不要です。改修後の製品の返送料は当方で負担します。

製品改修に要する時間

ポスト投函後2週間以内に改修品がお手元に届くように努力しますが、郵便事情や個人的事情によって遅れることもあります。返送は普通郵便で行います。2週間以上経過しても到着しない場合は当blogのコメントかメールでお問い合わせください。

個人情報の取り扱い

お預かりした宛名ラベルに記載された個人情報は当方では複写・記録いたしません。そのまま製品の返送時に郵便物に貼付して返却します。

メルアドは当方サーバーに一時保管されますが、受付期間終了後にblogのコメントと共に消去します。


Xilinx CPLD書き換え環境をお持ちの方へ

下記JEDファイルをCPLDに書き込むことによって改修することもできます。自己責任において行ってください。当方ではCPLD書き換え方法に関するサポートはいたしません。未経験の方は郵送での改修をお申し込みください。

http://niga2.sytes.net/sp/mk3opll_kai_CPLD.zip

http://niga2.sytes.net/sp/mk3opll_kai2_CPLD.zip (2022.9.16 Updateしました)

数量把握のため、書き換えに成功された方はこの記事のコメント欄にご報告いただければ幸いです。

お手数をおかけしますが、以上よろしくお願いいたします。

似非P6ROM製品版

前スレはコチラ。

http://niga2.sytes.net/wordpress/?p=690

1年間塩漬けになっていた似非P6ROMプロジェクトは2021年11月から本腰を入れて開発再開。OPN2の音質は、高音質化改造されたメガドライブ実機と比較して劣らないレベルを目指し、最終的にOPN2のアナログ電源は+12Vからレギュレータで+5Vを生成して分離、OPAMPはアナログ+5Vの単電源とすることで比較的良好な結果が得られた。+12V電源を要するため、断腸の思い(嘘)でCASIOのMSXは対象外へ。

当初は裸基板でリリースするつもりであったが、試作機を剥き身のまま雑に扱っているうちにFlashROMが壊れる事例が発生したため、ケースは必要と判断。P6系の同人ハードで有名なBAKUTENDOさんの作品に倣って、リップルレーザーさんにアクリルパネル製造を依頼してみた。

前面パネルはクリアブルーを選択。製品名やロゴはテプラの裏貼りとした。コストはかかってしまったが、製品として恥ずかしくない仕上りになった。

PC-6601SRのスロットに挿した状態。程よい出っ張り具合。

もちろんT.Matsushima氏による「特攻空母BELUGA」も遊べる。ソフトウエアはFlashROMのバンク0にプリインストールされている。Mr.PCのファミべーキーボードアダプタや、赤外線ワイヤレスな猫の手リモコンシリーズは家電のケンちゃんで不定期で頒布中(売り切れ御免)。

MSXでは8kバンクで1MbitまでのMegaROMゲームを起動できる。コナミバンクやSCC付きのゲームも動作するが、SCC音は鳴らない。

スロットに挿入する際は逆差し防止機構がないので要注意。上面や背面スロットでは間違わないと思うが、セパレートキーボード機の前面スロットではラベル面が下を向く機種がある


音声ケーブルの接続

似非P6ROMには音声入力端子があり、MSX/P6本体からの出力音声とOPN2サウンドをミキシングすることができる。

ミキシング入力はステレオで、入力レベルはRV1/RV2で調整できる。接続には下のようなケーブルを用意する。

これは秋月電子の3.5mmステレオミニプラグオーディオケーブル(90cm)[DCB-AKI09]を切断してRCAプラグをつけた自作品。LRの芯線はまとめてRCAのセンターピンにハンダ付けした。なお、100均のケーブルは芯線にハンダ付けが困難なリッツ線が使われていることがあるのでオススメしない。

この組み合わせでも接続可能。共立エレショップで取り扱いあり。

出力端子からはラインレベルで信号が出るので、適当なアンプやアクティブスピーカーに接続すればOK。

上画像のようにMSXでVGM再生する場合は、プレーヤーのVGMPlay 1.3ににパッチを施し、Makoto(OPNA)の偽装工作を要する(後述)。MSX本体や周辺機器の状態によっては似非P6ROMでVGM再生出来ないので注意。具体的には、多くのSONY機(HB-F1XD/mk2/XDJ/XVなど)や拡張スロットなどで、スロットのデータバスとCPU間にバスバッファが存在する環境ではNG。MSXのスロットでは、IOデバイスのデータ読み取りの際に/BUSDIR信号でバスバッファに入出力方向の明示をすることになっているが、P6では/BUSDIRのピンに/ExCAS信号が割当たっており、戦士のカートリッジの拡張RAM制御に必要である。このため、似非P6ROMでは/BUSDIR出力をオミットした。これはMSX/P6両対応を実現するための「仕様」ということでご理解いただきたい。なお、松下A1シリーズの基本スロットにはバスバッファが存在しないため、この問題は発生しない(拡張スロットを使うとNG)。MSX用のOPN系音源は、いずれきちんと対応したカートリッジをリリースするつもりなので、主にMSXでVGM再生したいユーザーはそれまで待って頂いたほうが良いと思う。


VGMPlay 1.3パッチ情報

VGMPlay for MSXは下記サイトで配布されていて、ソースコードも閲覧できる。

http://www.grauw.nl/projects/vgmplay-msx/

2022年現在のVGMPlay 1.3はOPN2実音源には対応していないが、Makoto(OPNA)には対応している。OPN2のFM音源部はOPNAと互換性があり、似非P6ROMのOPN2のIOアドレスはMakotoと同じ#14-17hに割り当ててある。よって、Makoto(OPNA)に偽装することでOPN2の発音が可能である。

具体的にはVGMPLayのMakoto検出プログラムを書き換え、OPNAが存在するものと認識させればよい。ソースコードを読むと、OPNAの存在はステータスレジスタやADPCMレジスタを読み書きして確認しているようだ。以下にMakoto検出部分を抜粋。なお、Makoto_STATUS1はIOアドレス#16hを指す。

VGMPlay 1.3では、冒頭の IN A,(16h)が59F3hからの2バイト「DB 16」に該当する。ここをSCF ,RETにすればMakotoが存在することになるので「37 C9」に書き換える。これでOPN系のVGMデータが強制的にIOアドレス#14h-17hに流し込めるようになる。

OPN2クロックを変更する場合

似非P6ROMのOPN2クロックはMakotoに合わせて8MHzを選択している。VGMPlay 1.3ではMakotoのクロックが6C79hと6D8Chと725Chからの3バイトに「00 12 7A」と書かれており、10進数に直すと7A1200h=8000000となる。

似非P6ROMではオシレータを追加して8MHz以外のクロックをOPN2に供給することが可能。音源のクロックをメガドラ実機と同じ7.6704MHzにする場合はX1にオシレータ(EPSON SG-8002DC +5Vを推奨)を実装し、左のジャンパーピンを下側ショートにすればよい。VGMPlayの周波数設定は、7670400=750A80hになるので、「00 12 7A」 をサーチして「80 0A 75」と書き換えることになる。ここを直しておかないとPSGとミキシングした際に不協が生じる。

作者のGrawさんがOPN2に対応してくれるまでは、VGMPlayのバージョンが上がっても上記データのサーチ&書き換えで追従できるだろう。


似非P6ROMでVGM再生

実際にどのような音が出るのか、メガドライブのThunder ForceIVのVGMデータを使ってサンプリングしてみた。

MSX本体は初代FS-A1改。電源はiPadの純正ACアダプタでUSB化、内部の±12V電源はDC-DCモジュールで生成している。メガドライブのDCSG音はPSGで代理発音されるので、MSX本体の音声出力からケーブルで似非P6ROMのミキシング入力に接続し、音声出力をPCのUSBオーディオ(UA-30)を経由して録音した。

Thunder force IVの3番、4番、7番、11番、33番目の曲を各30秒収録した。fade out処理以外は無加工で、曲間の無音部にノイズが目立つが、ノイズ成分のほとんどは本体PSGサウンドに由来する。

OPN2単体の音質確認のために同じ曲を本体PSGミキシングなしで収録してみた。ホワイトノイズは聞こえるが、本体のデジタル信号由来のノイズはほぼ聞こえないレベルだろう。

そもそも、OPN2はホワイトノイズが多い石のようで、静かな曲を再生すると背後に雨が降っているようなノイズが混入する。特にThunder force IVの7番の中間部で顕著。こちらもPSGミキシングなしで収録。

この傾向は高音質化メガドライブ実機でも同様のようなので、YM2612実音源の特性なのだろう。


制限事項

似非P6ROMは、P6とMSX両対応とするために敢えていくつかの設計上のお約束を無視しており、そのため以下の制限が発生する。

  1. MSXで似非ROM機能とMSX-MUSIC(OPLL)の同時使用は不可
  2. MSXのVGMPlayでOPN2発音ができない環境が存在
  3. OPN2の割り込み機能は使用不可
  4. スロットに+12Vが供給されていない機種ではOPN2発音不可

1.についてはOPLLのIOアドレス(#7C-7Dh)と戦士のカートリッジのバンクレジスタ(#70-7Fh)が重複することが原因。MSXでの使用時も#70h-7Fhのバンクレジスタは有効で、ここに値を書いてしまうとアドレス空間4000-5FFFhのバンクが切り替わってしまう。OPLLアクセスで#7C-7Dhに書き込んだときも同様に切り替わるので似非P6ROMのFashROMにOPLLを使うソフトをインストールして運用することはできない。なお、これらのIOレジスタは書き込み専用なのでバス競合は発生しない。MIDI-SAURUSなど同じ理由で同時使用できないデバイスが存在するので、IOマップで確認を。

2.は既に解説しているが、スロットのデータバスとCPU間にバスバッファが存在する環境ではVGMPlayでの似非P6ROMのOPN2の発音ができない。具体的には多くのSONY製のMSXや外付けの拡張スロットが該当する。P6とMSXでスロット10pの役割が異なることが原因。FS-A1シリーズの基本スロットであれば問題なく発音できる。

3.はP6とMSXでスロット8pの役割が異なることが原因。MSXではCPUの/INTが繋がっているが、P6では/NMIが繋がっている。MSXでは音源の/IRQを/INTに接続すれば問題ないが、P6ではNMIが発行されてしまってNG。そのため、音源の割り込み機能はオミットした。P6ではスロットに/INTが存在しないので音源の割り込み機能の実装自体が不可能。

4.は、アナログ電源の生成に+12Vを使用していることが原因。OPN2はDAC内蔵音源であるため電源ノイズがモロに音声信号に現れる。MSXのVcc電源はデジタルノイズで酷く汚染されているため、音源のデジタル・アナログ電源の分離は絶対に必要。Vccに含まれるノイズはフィルター回路では十分な除去ができなかったため、比較的クリーンな+12Vを利用することにした。CASIO機(PV-7やMX-10等)ではスロットに±12Vが出ていないので似非P6ROMの音源は使えない。

バス競合のような致命的なエラーは回避できるように設計したつもりであるが、後から別の問題が出てくる可能性はあるかも…。


似非P6ROMのリリース計画

前スレに書いたように、OPN2音源の入手性には問題があるが、初回リリースのみ発音確認したリファービッシュ品を実装して頒布することにした。IC表面が削られてリマークされているので、見た目が怪しい点はご了解いただきたい。

 

音源部組み立てキット版

以後は音源部をキット化した半完成品を頒布する予定であるが、YM2612は各自調達が必要。音源ガチャでドロップした石を死蔵している方には最適かも? こちらも需要はあまり多くないと思うので少数で終息する予定。

似非P6ROMはどちらかというとP6寄りの設計で、MSXでの使用時に何かと制限があるため、主にP6での使用を想定しているユーザーにお求め頂ければ幸いである。

似非P6ROMの開発

MSXとPC-6001の類似性

MSXとPC-6001のシステムを眺めてみると、後発のMSXはPC-6001のシステムの一部を取り込んで設計されたと思われるような共通点が見えてくる。グラフィックキャラクターの配列が同じだったり、外部スロットの50pカードエッジコネクタのピン配列はVccやGNDの他、アドレス線とデータ線はまったく同じ配列になっている。

双方の50pカードエッジの信号配列は下記リンクで比較すると分かりやすい。

PC-6001 : https://electrelic.com/electrelic/node/517

MSX : https://electrelic.com/electrelic/node/516

表を一部引用させていただき、相違点を赤枠で括ってみた。

P6はカートリッジ上のDRAMが直で繋がるようになっていて、8000h~BFFFhのDRAM制御信号が1,3,5,10pに出ているが、MSXのDRAM関連信号は/RFSHのみ。

/CSxはROM用の信号で、MSXでは16kB単位、P6は8kB単位で区分けされている。いずれも当該アドレスのREADでアクティブになるが、MSXのROMには/SLTSLを絡める必要がある。

なお、初代P6とmkII以降では7,8,16pの役割が異なるようだが、MSXとの互換性を考える上ではあまり影響はなさそうである。

http://sbeach.seesaa.net/article/387861397.html

以上の相違点を理解すれば、MSXとP6のどちらでも使えるROMカートリッジが制作可能と思われた。

なお、MSXの/SLTSL信号 (4p)は、P6では/CS2(4000-5FFFh)になっており、この領域を使うP6のROMカートリッジであれば、特に細工をしなくてもMSXで吸い出しができそうに見える。更に、P6ROMの/CS2(2p)と/CS3(4p)を入れ替えてしまえば6000-7FFFhも吸い出せるだろう。


戦士のカートリッジ

P6用のカートリッジといえば、「TINYゼビウス」の伝説的プログラマ松島徹氏が2008年に新作ゲーム「特攻空母ベルーガ」を発表した際、これをROMカートリッジ化するためのMEGA-SYSTEM 6000 (戦士のカートリッジ)が西田ラヂオ氏によって設計されている。ソースはコチラ。

http://tulip-house.ddo.jp/digital/BELUGA/

回路図を引用:

MEGA SYSTEM 6000では、ROMは4000-5FFFhにマッピングされ、8kBx16バンクで容量は128kB、バンクレジスタはIO#70h(~7Fh)に置かれている。6000-BFFFhには拡張RAMが実装されていて、その内6000-7FFFhはREAD ONLYに設定できる(起動時は書き込み許可)。4000-7FFFhに擬似的なROMを置くことができるので、バンク0に起動メニューと転送プログラム、以後のバンクに既存のROMソフトのイメージを入れておけば、N in 1カートリッジを作ることもできそう。

ROMの/CSにはP6の/CS2が繋がっているが、このピンは都合の良いことにMSXでは/SLTSLにアサインされており、ROM領域だけならMSXからも読み取りできてしまいそう。ひょっとしたらMSXとP6両対応のメガROMカートリッジが作れるのでは?と思ったのが2020年7月の話である。


似非P6ROMの設計と試作

P6では「戦士のカートリッジ」、MSXではASCII 8k bankの「似非ROM」として機能するものができたら面白そうだし、ROMファイル書き込みに既存のソフトが流用できてオトクである。早速CPLDでロジックを錬成して基板を設計してみた。

P6はスロットが深いためこのような基板サイズになるが、スペースが余りまくりである。何か追加できないかと考えていたところ、秋葉原のFM音源ガチャでドロップした石があったことを思い出した。

せっかくなので、このFM音源(YM2612:OPN2)を追加してみることにした。OPN2ならDAC内蔵でお手軽だし、P6ならSRで採用されたYM2203(OPN)の後継チップなので相性もいいだろうと。

とりあえずオーディオ回路をテキトーに追加して2020年10月にできた試作基板がコチラ。IOアドレスはMSXのOPNAカートリッジ(Makoto)と同じ#14-17hに割り当て、VGMPlay for MSX 1.3をパッチしてOPNAを偽装したところ発音が確認できた。

P6実機でBELUGAが動作するか確認をしたかったため、TinyProjectのHashiさんにコンタクトを図ってみたり。その時のツイートがコチラ。

結果、両機種対応のMegaROMシステムとして想定どおりの動作を確認できた。しかし、音源部は無音時のノイズが目立ち、改修が必要。

もう一つの問題としては、OPN2の入手性。2020年の時点でOPN2は入手が難しくなっていて、Aliなんかだとほぼほぼフェイクだという情報が流れていた。試しに中華圏から取り寄せてみたところ、届いたのがコチラ(笑。

左下が音源ガチャのドロップ品でおそらく本物。それ以外は明らかなリマーク品。ただし、パッケージの形状は本物と変わらず、裏面にJAPANの凸モールドも確認できるのでフェイクとは断定し難い。ダメもとで似非P6ROMに挿してデータを流してみたら、なんと普通に鳴る石だった。どうやら本物の中古汚損品をリマークした「リファービッシュ品」と思われる。果たしてこれを製品に実装して頒布してよいものかどうか…。

以上の事情により音源付きでの製品化は困難と思われたのと、2020年は似非SDisk等の先行プロジェクトを優先させたため、似非P6ROMの開発はこのまま1年の塩漬けに…。(次回に続く)

ご注意

 似非P6ROMはP6でもMSXでも動作するように設計していますが、通常の戦士のカートリッジはMSXでは機能しません。それどころかROM/RAMでバスが競合が発生して故障の原因になるのでMSXに挿して電源を投入するのはやめましょう。

 

漢字FlashROM 初期ロット改修について

ご注意:2021年末をもって改修受け付けは終了していますが、記録として以下の記事を残しています。


当方より2021年10月にリリースいたしましたMSX用「漢字FlashROM」に不具合が発覚しました。

第一報(2021.9.30)

その後の調査で、故障の原因となり得るバス競合は発生しないと判明しましたが、動作不良を生じる可能性はありますので対象製品を回収し、CPLDを対策済のファームウエアに書き換えて返送します。詳しい原因や対策については下記文書をお読みください。ご不便をおかけして申し訳有りません。

調査報告書(2021.10.26)


対象製品

2021年9月25日~9月30日に家電のKENちゃんさんの委託販売にて頒布した漢字FlashROM基板と、ケース入り漢字FlashROM。

2021年10月以後の頒布品は改修済み製品になりますので対象になりません。


受付期間

2021年12月末日までとさせていただきます。お早めのお申し込みをお願いします。


改修受付窓口

このblog記事のコメント欄が受付窓口となります。コメント欄が見当たらない時にはこの記事のタイトル「漢字FlashROM初期ロット改修について」まで戻り、タイトルをクリックしてください。

お名前はネットネームで結構です。

必ずメールアドレス欄にご連絡可能なメルアドを記載してください。メルアドは非公開です。コメントは管理人による承認後に公開されます。投稿後にコメントが表示されなくても再投稿せずに数日お待ち下さい。

対象製品を所有されていることを確認させていただくため、ネットネームが書かれたもの(紙切れで結構です)と対象製品とご愛用のMSXの一部が一緒に写っている画像ファイルを添付してください。フォーマットはJPG,PNG,GIFでファイルサイズは32MB以内です。

添付画像例

以上で受付は終了です。1週間以内に当方より対象製品の送付先をメールでご連絡いたします。メールが届かない場合は、メール受信ソフトにより迷惑メールに分類されていることがありますのでご確認願います。


送付の方法

返送先を記載した宛名ラベルを作成してください。郵便番号、住所とお名前を記載した4cm x 7cm程度の白い紙きれで結構です。また、宛名ラベルの裏には申込み時に使われたメルアドを記載してください。メルアドにより申し込み者と現物の紐付けをしますので忘れずに記載してください。

宛名ラベルは製品の返送時に封筒に糊付けしてお返しします。返送先が分からないと製品をお返しできませんの忘れずに添付してください。

ケース付き漢字FlashROM、または本体内蔵のためにICソケットや連結ピンを実装されている場合は、重さが100gを超えないように、厚さが3cmを超えないように適当なクッション材で保護して宛名ラベルと一緒に封筒に入れ、日本郵政の定形外郵便で発送してください。送料は140円かかります。

基板単体の場合は重さが50gを超えないように、厚さが1cmを超えないように宛名ラベルと一緒に封筒に入れ、日本郵政の定形郵便で発送してください。送料は94円かかります。

参考:手紙の基本料金(郵便局)

https://www.post.japanpost.jp/send/fee/kokunai/one_two.html

参考:サイズ・重さの対応について(郵便局)

https://www.post.japanpost.jp/service/standard/one_size.html

いずれも送料は返送時に切手でお返しします。上記以外の手段で送付されても構いませんが、実際にかかった送料に関わらず、お返しするのは上記料金の切手で替えさせていただきます。


製品改修に要する時間

ポスト投函後2週間以内に改修品がお手元に届くように努力しますが、郵便事情によって遅れることもあります。返送は普通郵便で行います。2週間以上経過しても到着しない場合は当blogのコメントかメールでお問い合わせください。


ソフトウエアのUpdate

改修済みの漢字FlashROMに対するFlashROM書き換えソフトはKFLASH.COM ver.0.06 以降が必要になりますので、下記から最新版をダウンロードしてください。

http://niga2.sytes.net/sp

旧バージョンの公開は停止します。初期ロット製品を改修せずに書き換える場合はKFLASH.COM ver.0.06に「/I」オプションを付けて実行してください。


個人情報の取り扱い

お預かりした宛名ラベルに記載された個人情報は当方では複写・記録いたしません。そのまま製品の返送時に郵便物に貼付して返却します。

メルアドは当方サーバーに一時保管されますが、受付期間終了後にblogのコメントと共に消去します。


Xilinx CPLD書き換え環境をお持ちの方へ

下記JEDファイルをCPLDに書き込むことによって改修することもできます。自己責任において行ってください。当方ではCPLD書き換え方法に関するサポートはいたしません。未経験の方は郵送での改修をお申し込みください。

http://niga2.sytes.net/sp/kflash_jed.zip

数量把握のため、書き換えに成功された方はこの記事のコメント欄にご報告いただければ幸いです。

お手数をおかけしますが、以上よろしくお願いいたします。

LowCost版 似非ROM基板

おかげさまで家電のケンちゃんさんからリリースしている似非ROM基板はご好評いただいているようで、現在追加生産を行っているところだが、今回コスト削減を主目的とした新しい似非ROM基板を設計してみた。試作もできていない段階であるが、公開可能な範囲で情報を書いてみたい。

従来品はFlashROMと大容量EPROM両対応にしていたが、今回は割り切って4Mbit以下のFlashROMのみ、実装の難易度を考えてPLCC版を採用した。MX29F040のPLCC版を実装すれば従来品との互換性も保たれるが、MegaROMソフトのリリース目的で使うのであれば39SF040を使ったほうがコストを下げられる。2Mbや1Mbに容量削減できるなら39SF020や39SF010に変更することで更なるコストダウンも可能である。

MX29F040と39SF040はいずれも4MbitのFlashROMであるが、コマンドアドレス長が異なるため、書き換えソフトに互換性がなく、NGLOAD ver1.5xは39SF040に非対応(チェッカーのCKEROM.COMは両対応)。39SF040は専用ソフトでの書き換えが必要となるが、明確に従来の似非ROMと区別することで誤消去が防止できるメリットもある。このような理由から、39SF040版はMegaROMソフトのリリース用途に限定し、専用の書き換えソフトは基板データをライセンスしたサークルにのみ提供する(無償)。

FlashROMはセクタ単位での消去や書き込みができるが、39SF040はセクタサイズが4kBytesと小さいため(MX29F040は64kBytes)、FlashROM上にゲームのデータセーブエリアを設けるにも好都合だろう。書き換え寿命はあるが、データシートには10万サイクル可能と書かれているので気にする必要はなさそう。

基板上のJP1/JP2は8k/16kバンク切り替えと起動しないスイッチ用のものであるが、CPLDロジックのカスタマイズにより無効化することもでき、その際はR1、R2の実装を省略できる。

基板サイズは33×65.5mm。この大きさであれば10x10cmに3枚面付けできるため、基板単価は従来品の2/3に削減される。中華基板なら無電解金メッキで150枚見積もっても1万円でお釣りがくるだろう。

CPLDは従来品と同じXilinxのXC9536XL。3.3V品ゆえにレギュレータが必要になるが、5V版のXC9536がディスコンなので現状これがベストと思われる。現在入手可能な5V版のCPLDとしてATF1502ASLがあるが、マクロセルが少ないのと、単価が上がること、書き換え環境等のノウハウの蓄積がなく、採用するメリットが薄いと判断した。

XC9536XLのIOピンは5VトレラントなのでMSXのバスに直結しても問題なく動作する。ロジックはASCII MegaROMコントローラ互換を基本とするが、コピープロテクト目的でバンクレジスタの仕様を変更したい場合は要望に応じて柔軟に設定できる。また、パスワード式のWrite Protectを設定することも可能。

量産時はCPLDへの書き込み作業が発生する。DigikeyではCPLD購入時に書き込みサービスを受けられるらしいが、個人でもPCとFT2232Dモジュール(秋月電子で1500円くらい)があれば大して難しい作業ではない(と個人的には思っている)。

自作CPLDライター

参考:http://miyako.asablo.jp/blog/2018/03/18/8806391

自分は部品を主にDigikey(米国)、たまにMouser(同)で手配しているが、Digikeyは6000円以上で送料無料、1万円以下は免税なので毎月1万円ギリギリ下回るように発注している。MouserはDigikeyで足りない場合に併用がお勧め。USドルで支払うと税抜きで決済されるが、円払いだと1万円以下でも税込みで決済されてしまうので注意。コチラは50ドル以上で送料無料。

関税についての情報はコチラ。1回1万円以下でも同時期に分散発注したと判断されると課税される可能性があるので注意。

https://www.customs.go.jp/tetsuzuki/c-answer/imtsukan/1006_jr.htm

基板製造データのライセンス条項はコチラに書いているので、本気でMegaROMソフトのリリースを検討している個人やサークルの方は本記事のコメント欄にご連絡を。表のmail フォームはなぜかメールが届かなくなっているためご注意。


2021.2.5追記)実寸プリントで検証

先行して入手していた39SF0x0を基板イメージの実寸プリントに載せてみた。KiCADにはPLCC32pのフットプリントが2種類あり、それぞれ8:8と7:9で縦横比が違うため注意が必要。39SFは7:9のほう。手実装する場合は露出するパッドが小さすぎないかの確認を行い、場合によってはフットプリントを作り直す。現状で半田ごてを挿しこむ隙間はあるようなので問題ないだろう。

Overrich製ケースの場合、ボス穴は下側が適合する。基板が小さいのでスカスカで昔の16kBとかのROMもこんな感じだったが、MegaROMとしては最小かも。


2021.3.19 追記)試作しました

基板がようやく到着した。今回は春節の影響でやたら時間が掛かった気がする。いつものFuisionPCBで、送料が比較的安いJapanDirectを選択。ここは国内入りするまで発送ステータスが確認ができず若干不安になるが、佐川急便に引き渡されると佐川のサイトから追跡できる。3月3日発送ー3月17日到着なので2週間を要した。

基板は面付け+Vカット無料を利用して縦10センチに3枚レイアウト、表面処理は無電解金メッキとした。Vカットは手でパキっと分割可能。断面は適当にダイヤモンドヤスリで仕上げる。カードエッジの断端と接点の間に0.7mmのクリアランスを取っているので、30度傾けて紙やすりで擦れば「Gold finger beveling」の面取りも可能になっている。

LC版似非ROMと、ゲームソフトリリース用MegaROMの2種を実装してみた。違いはFlashROMで、MX29F040実装基板が従来の4Mbit版似非ROMとの互換品である。CPLDのピンアサイン等の変更をしたため、VHDLは書き直した。PLCC版のFlashROMも手半田で難なく実装できた。

ゲームソフトリリース用ROMには39SF040を実装し、テスト機の裸族XVに挿してみた。高さ33mmなのでやたら小さい。チェッカーCKEROM.COMがエラーなく通ったので、似非SDiskからMegaROMファイルのインストールを行ってみた。

39SFシリーズ用FlashROMライター(非公開)での書き込みもOK。既存のMegaROMゲームは問題なく起動できた。MA-Xさんのゲームソフト「CELIA for MSX2」の製品化に向けて一歩前進といったところ。

 

cocopar 13.3インチ LCDの改造

昨今のテレビはコンポーネントやS端子といった高画質アナログ系の入力端子が削除され、レトロ系デバイスを直に接続できるのがコンポジットビデオ信号くらいになってしまった。コンポジのボケボケ画面で我慢できるのは初代ファミコンくらいのもので、MSXでは文字の判読も困難である。

一部のPC用LCDでは正式に対応を謳っていなくても水平同期15kHzのアナログRGBを4:3表示できるものがあり、CenturyのLCD-8000Vや、cocoparの13.3インチIPS液晶が密かに15kHzに対応しているらしい。手に入る内に買っておこうとcocoparのものを2020年2月に楽天で入手した。残念ながら2020年6月現在はどこも品切れのようだ。

この製品、MENU長押しでファームウエアのバージョンを確認できる。ネットでは「Para V007」でないと縦横比が変更できないという情報があるが、入手した個体のファームはPara V007に該当。他のバージョンがあるかどうかは不明。

PC-6601SRに適当に繫いで表示テストしてみたところ、確かに15kHzの信号に対応しており、画面比4:3に設定可能のようだが、入力端子がいわゆるVGAコネクタ(3列Dsub15p)で、水平・垂直同期信号(HSYNC、VSYNC)にしか対応していないのがMSXユーザーとしては不満である。正攻法で行くなら外付けアダプタを作成し、ビデオシンクセパレータLM1881で同期分離することになるが、MSXのRGB端子にはLM1881をドライブできる電源出力がないので、別途ACアダプタが必要になってしまう。できればシンプルに直結したい…ということで、cocopar内部にLM1881を増設し、直接MSXの複合同期信号(CSYNC)を流し込めるように改造することにした。


この記事の情報を元に改造した結果、LCDモニタを壊してしまったり、身体や財産に不利益を及ぼしたとしても当方は責任を負えないので十分な知識とスキルを身に付けた上で自己責任にて行ってください。改造するとメーカー保証期間内であってもアフターサービスは受けられなくなります。記事の内容についてメーカーその他に問い合わせるのはご遠慮ください。


LM1881は、2pにコンポジットビデオ信号を入力し、1pにCSYNC、3pにVSYNCを出力するように設計されているが、経験的に2pにCSYNCを入力しても問題ない。1pから出力されるのはCSYNCであって、HSYNCではない点に注意。6pのコンデンサと抵抗は定数になっているので何も考えずにこのまま接続する。

手始めにブレッドボード上でLM1881のコンポジビデオ入力にMSXのCSYNCを入れ、1pと3pをcocoparのHSYNC、VSYNCに接続したところバッチリ映った。試しにVSYNCを外してみたところまったく問題なく同期した。実はこのモニタ、HSYNCにCSYNCを流し込めばVSYNCに信号を入れなくても映るっぽい。しかし、MSXのCSYNCを直にHSYNCに接続しても表示されない。問題は信号レベルで、通常CSYNCは0.3~1.0Vppであるのに対し、HSYNCはTTLレベル(4~5Vpp)である。CSYNCもTTLレベルが要求されるということのようだ。

MSX RGB出力端子のCSYNC出力(2V/DIV)

確認のためMSX(FS-A1FX)のCSYNCをオシロで測定したところ、1Vppになっていた。このままcocoparのHSYNCに接続すると振幅が足りないが、LM1881を通すことでTTLレベルに変換される(過去記事でも似たようなトラブルを経験をしている)。cocoparを改造するならば、HSYNCに入った信号を強制的にTTLレベルに変換してしまえばOKだろう。ここで、LM1881のデータシートを紐解くと、絶対定格として下記のように書かれている。

LM1881はVccが5Vの場合、入力信号は3Vppまでしか許容されないが、Vccを8V以上にすれば6Vppまで可。入力端子には0.3~5Vppの信号を接続することが想定されるので、3Vppしか許容できないのはマズイ。よって、LM1881は12Vでドライブすることにした。その時出力されるCSYNCのレベルをオシロで測定したところ、約10Vppになっていた。ちなみにVcc=5VだとTTLレベルの出力である。Vccが大きくなると出力信号の振幅も大きくなる点には注意が必要だろう。

LM1881 Vcc12VでのCSYNC出力(5V/DIV)

このレベルのままcocoparに突っ込むのは問題がありそうなので、LM1881で上げたレベルを再度落とすことになる。当初ツェナーダイオードで5Vに整形しようとしたがエッジが鈍って表示が横にズレたのでNG。シンプルに抵抗で分圧したところ良好な結果が得られた。諸々検証して書き上げた回路図がコチラ。

R93とR98が元からcocoparの制御基板に載っている抵抗。R93の手前で切り離し、スイッチでLM1881を経由できるようにした。CSYNC出力は手持ちの2.2kΩと4.7kΩを組み合わせて分圧したが、GND側並列の合成抵抗は1.5kなので1本に置き換えてしまっても構わない。これによりHSYNCの信号レベルは約4Vppになる。

制御ICにSYNC信号を流し込むポイントがコチラ。R93の100Ωチップ抵抗を取り外してパッドにジュンフロン線を接続した。R98は温存。パターンカットは不要。

外したR93は細かすぎて紛失したので(笑)裏面にリードタイプ100Ωをハックルーで貼り付けた。その他回路図通りに実装。なお、部品増設面の上にLCDパネルが載ることになるので、十分な隙間があるか確認しておいたほうが良い。極端に隙間が少ないとパネルにストレスが掛かった際に割れる危険性がある

MSXを直結できるケーブルも作成した。市販のVGAケーブルをぶった切ってDIN8pコネクタを取り付けただけである。DINの4p(CSYNC)はDsubコネクタの13p(HSYNC)に接続する。Dsubの14p(VSYNC)はNC。RGBとGNDはそのまま配線。

LM1881を経由した状態で実際に動作させてみたところ、CSYNC 1VppのMSXでもHSYNC 5VppのPC-6601SRでもPCのVGA信号でも問題なく同期した。VGA信号はダメかなと思っていたが、意外とLM1881は高解像度の信号にも追従する模様。信号スルー用のスイッチは無くても良かったのかも。

なお、今回はナショナルセミコンダクタ社のLM1881Nを使ったが、想定外の使い方をしているので互換チップではうまく行かないかも知れない。中華製互換ICのAT1881で試してみたが、発振してダメだった。同様の改造をする際は、実装前にブレッドボードなどで実験しておくことをお勧めする。


外部音声入力端子の増設

 

cocoparはスピーカー内蔵だが、音が出るのはHDMI接続時に限られる。ステレオ対応なのにスピーカーが縦に配列されていたり、薄いプラ筐体がスリットでスカスカなこともあって音質はよろしくないが、RGB接続時に使えないのは面白くない。ということで外部音声入力端子を増設する。

制御基板に搭載されているのはデジタルアンプIC「PAM8003」である(データシートはコチラ)。7pと10pが入力端子になっていて、cocoparでは制御ICからコンデンサ(C6,C7)と1kΩ(R12,R13)を介して接続されている。PAMの内部ではオペアンプに接続されているようなので、ここに0.47uFと1kΩを介して並列に外部入力を繫いだらミキシングされて音声が出せるかも、と思って試してみた。

データシートの図に追記するとこんな具合。PAM8003のINLとINRにカップリングコンデンサと入力抵抗を介して外部音声入力端子EXL,EXRを接続する。

1kΩのチップ抵抗をR12とR13の根元に付け足して、適当なチップコンを経由してワイヤーを接続した。画像だと大きく見えるが実際は結構細かい。GNDの黒ワイヤーは右下のコンデンサに接続。ワイヤーを引っ張ると部品がもげるのでハックルーで固定した。

片ChにMSXの音声出力を接続したところ、RGB表示時にスピーカーから音声が出るようになった。cocoparの操作ボタンで音量コントロールも可能。RGBケーブルを引っこ抜くと表示が消えると共に音声もミュートされたので、非表示時はアンプもシャットダウンモードに制御されているようだ。

HSYNCスルースイッチと音声入力端子はサイドのプレートに固定した。なお、HDMI接続時はこれまで通り発音されるが、同時に外部入力に信号を入れると音声がミキシングされて出てくる。HDMI側のスピーカー出力はヘッドフォン接続でミュートされるが、外部入力側はミュートされず、ヘッドフォンからも音声は出なかった。このあたりは割り切って使うしかないだろう。

ちなみにこのモニタ、一応VESAマウント対応らしいが筐体の成型が悪く、ネジ穴が樹脂で埋まっていた。一応中にネジは埋まっていたので適当に掘り起こして引っ掛け用の金具をネジ止めした。これで邪魔にならずに運用できそう。

ゲームトレジャー2に出展してみた

9月1日に札幌で開催された「ゲームトレジャー2」に行って来きた。第1回目は昨年12月に1回目が開催されていたそうで(知らなかった)、今回が2回目。北海道でこのジャンルのイベントが開催されるのは珍しく、猫の手リモコンなど自前の同人ハードの手応えを得る良い機会だったので出展を申し込んだ次第。

ウチの頒布品は猫の手リモコンシリーズのうち、1号(レトロPC受信機)、3号b(SFC改造PAD)、虎の手3号(SS改造PAD)、4号(FC受信機)と、電子工作マガジン掲載のデジタルアンプ基板、新作の猫の手モータードライバ基板。

前日にテーブルの大きさを想定して予行演習していたので、当日は無難に設営完了。画像では見えないが、MSXはカシオMX-10をモニターの裏側に設置している。MSXには猫の手1号を2本挿しにして沙羅曼蛇の1P+2Pのシンクロプレイを体験できるようにした。

猫の手リモコンは実機で応答性能を体験して頂くのが重要と考えていたので、少しでも興味のありそうな方にはお試しプレイをお勧めした。操作感覚は概ね好評で、ゲームでの遅延や通信途絶が起こらないことをご理解頂けたと思う。PADの電源に単4電池を使うことのメリット(交換が容易で長持ち)も重要なアピールポイントだった。

改造済みPADは家電のケンちゃんさんでは委託販売できない(商標権の問題を懸念)ため、今回のイベントで初めて完成品を頒布。ジャンク箱をイメージしたダンボール箱から好きなPADを選び、実際にボタンの反応などの動作チェックしてからお買い上げいただくスタイル。SFC型とSS型と同数用意したが、やはりというかサタパの方が人気。ゲームイベントだったので受信機の方はFC版の方が若干売れ行きが良かった。

ついでに頒布したデジタルアンプ基板も数名の方にお買い上げ頂いた。うっかり作りすぎた基板(のみ)は無料配布。一応アフターフォローとして、簡易説明書とPICマイコンのファームウエアを貼っておく。電源はアップル純正充電器をオススメ。

ちなみに、隣の隣のブースのM.K Workshopさんは以前にウチのサイトでドリキャスのスピンドルモーターを共同購入された方と判明。PC-8001シリーズのPCG互換ボードを作っていたり、QD(クィックディスク)システムを弄り倒していたりとハイレベルで、会場内の数少ない同人ハードウエア系の出展者として仲間意識が芽生えたり(笑。

反対側の隣の隣のブースはゲームショップ1983さんで、店長はMSXサークルSYNTAX代表のいまむら氏。奇しくも会場はかつてSYNTAX主催のMSXユーザーの集いが開催されていた場所と同じ(建物はリニューアルされているが)で感慨深いものが。店長さんとスタッフさんには猫の手リモコンをお買い上げいただいた(ありがとうございました)。

一般参加のお客さんにも昔ウチのサイトを見ていた方がおられたり、これまでの活動も無駄ではなかったと思った次第。お客さんには代わる代わる猫の手リモコンの体験プレイをして頂き、充実した4時間であった。もっとハードウエア系の出展が増えればいいなと思いつつ、機会があったらまた出展するかも。