Windows上でJWASM(フリーのMASM6互換アセンブラ)と98エミュを使ってのプログラム作成に関するエトセトラ。また、PC-98プログラミング関係の書籍紹介とか自作ソフトの進捗とかも。

FM音源ボード自作とs98について

※昨今FM音源をマイコンで動かす系のものが流行っていますが、それをPC98でやれるかな、という思考実験とPC98用s98プレイヤーの自作について簡単な報告です。
もうちょっとまともなものを作ったら再度更新して公開等したいですが・・・

今回の記事の目的

古めのPC雑誌や周辺機器本等では、PC98用自作FM音源ボードの記事が載っていることがあります。
しかし、OPN系以外はドライバや曲データがほぼないため、作っても無意味に近いという問題点がありました。
そこで最近出てきたs98データなら再生ソフトはほぼ共通でOKで、曲データも一般的なチップなら変換やサンプル等である程度は入手可能なので試作しやすいのでは?というのが今回の主張です。
EMS使えばファイル容量はほぼ無制限ですので、そういう点も使いやすいのではないかなと。
さらに、OPN系以外の対応についてもONPLなら一部の私家版NP2で対応済みなため、再生ソフト開発はwindows上でほぼ可能なので楽ではないかと思います。

なお、電気系でも情報系でもない専門外の人間ですので、迂遠な方法等をとっている可能性が高いですのであしからず。

音源の入手や基板の入手についてメモ

以下の項は2018/10〜11現在の私調べです。
実名等は出す気ありませんが、単語を変えたりして探せば何とかなると思います。
私はGoogle系以外のマニアックな検索エンジンを使ったりして探したりもしました。

一番大事なFM音源チップ、DACは秋葉原の某有名ガチャガチャの店、某有名ネットオークション等で入手可能です。
値段は基本的に前者の方が安いですが、単品でのネット通販は打ち切ったっぽいのがネックです。
オークションでもまれに安いこともあります。

OPNA用の7.987MHzのクリスタルは(普通の検索ではなかなかでないですが)ネット通販で在庫があるところもありますし、プログラマブルなものを注文すれば普通に入手可能です。
大須の某電子部品屋でも発振子は売っていました。
他は大抵4MhzとかでOKなので、さほど問題ではないでしょう。
こだわらなければOPNAも8MhzでOKじゃん、という話もあります。

一番のネックなPC98用拡張基板の入手もネット通販で可能です。
ただし、当時の基板の在庫ありのお店は1枚3000円くらいの値段はつけてます。(定価がそれくらいではありますが)
とりあえずすぐ入手できるので、お金があれば(&検索で探せれば)こちらがお勧めです。
オークションは基本安いですが、年に数枚でる程度で滅多にないです。
今なら拡張基板のサイズを調べてユニバーサル基板を発注するのも可能だと思いますが、いくらくらいになるんでしょうかね。

他は手持ちの本の記事やFM音源プレイヤーの回路図等を見る限りでは、特殊な部品はないと思います。

試作したs98プレイヤーの大まかな概要

とりあえずOPNA対応の最低限のものは数日で作成できましたので、初歩的なものなら結構簡単に作れると思います。
それのIOアドレスや送信待ちを変えれば他のチップや複数チップの対応も十分可能ですので、ボードの設計前準備としてはほぼ十分だと思います。
FM音源二枚刺しは私家版Np2で対応しているものがありますので、複数音源でもwindows上である程度のデバッグも可能なはずです。

作ったプレイヤーの概要ですが、s98(V3)の仕様書を読めばおしまいっちゃおしまいです。
1命令で1syncではなく、FFやFE動詞間が1sync、というのだけ理解すれば他は読み込んで読みだして待つだけですし・・・。
本当は1sync=10m秒固定ではなくタイマーのIOを自力で管理して作成すべきなのですが、とりあえずそこまでの必要はないだろうということでタイマ割り込みで適当に作っています。

EMS初期化等

ファイル読み込み

割り込み初期化

1sync分出力

sync待ちループ(フラグを監視しつづけ、フラグが立っていたらすぐに割り込み初期化して出力へ戻る)

割り込み部分はフラグを立てるだけにすれば、sync周期からほぼズレないので実用上問題ないと思います。


注意すべきはADPCMがある場合は1Syncでの出力が64KBを超えてしまい、EMSの範囲を超えることがある点です。
なので、データ送信時にチェックをして、必要ならバンクの切り替えをしておく必要があります。
馬鹿でかいデータは読まない、と割り切ってメインメモリに確保したほうが楽ですので、そうしてもいいでしょう。

基板の作成について

古い本や最近のs98プレイヤーの回路図などを参考にすれば何とかなりそうです。
私の手元でも理論上作れるデータは十分にそろっており大まかな回路も決まったので、そろそろオペアンプやゲートICなどの部品も購入しようと思っています。
とりあえずOPNAで作ってみる予定ですが、音が出たらOPMやOPL系を積み込んでやってみる予定。

あ、作成には古い本に載っていた作成方法を参考にワイヤラッピングを使うつもりで、ツールやピンヘッダ等購入済みです。
単品だとこれが一番高かった気もします。

記事は作りましたが・・・

s98プレイヤーやEMS周り以外は特に問題なく作れると思いますし、私の作ったものはまだ決まったファイル名のs98(データを色々差し替えてテストしました)を再生できるだけですので、コードや現物は載せられる状況ではないです。
iniで設定できるようにとか、フォルダ再生とか、もうちょっと作り込んだら公開してみる予定。

回路の方は回路図を描けないので挙げる予定はないですが、まあs98プレイヤーの作例をみればなんとかなるのではないでしょうか。

Menu

管理人/副管理人のみ編集できます