Raspberry Pi で fMSX を動かす

Raspberry Pi で MSXエミュレータである fMSX をビルドして動かしてみます。
このページ(I2Cで制御できる80円のPSG互換チップで遊ぼう)で紹介されている動画の内容をやってみたいな、というのが最終目的ですが、今回はビルドができてエミュレータが動作するところまで。

準備

Raspbian は 2018-11-13-raspbian-stretch-full.img を使用しました

https://fms.komkon.org/fMSX/ からファイルをダウンロード
今の最新は 5.4 なので、fMSX54.zip です。

ビルドする

適当にディレクトリを作成して fMSX54.zip をコピーした後

unzip fMSX54.zip
cd fMSX/Unix
make

ファイルが足りずに怒られたので必要なファイルを追加

sudo apt install xorg-dev
sudo apt install libpulse-dev

再度挑戦

make

できました。
fmsx という実行ファイルが作成されます。

動かす

ROMファイルと同じディレクトリに fmsx をコピーして実行
(fMSX54-Windows-bin.zip を解凍すると必要なファイルは揃いました)

./fmsx

とりあえず、これで fMSX を動かすことができました。

が、音が鳴りません。
LPC810 を接続してそこからだけ音が出れば良いのであればここまでですが、Raspbian上でも音を出したい場合は PulseAudio を追加します。

sudo apt install pulseaudio

これで、音も出るようになりました。

 

DesignSpark Pmod HAT と Pmod I2S

という事で、DesignSpark Pmod HAT と Pmod I2S を使用する時の注意点としては、下記の点でしょうか。

・Pmod HAT に Pmod I2S を直接取り付けると配線がおかしいので動かない
・/boot/config.txt に dtoverlay=hifiberry-dac を追加すれば音は出る

使うの面倒な気がしてきます。
が、何か根本的に間違っているんじゃないかと心配にもなっていたり。

 

※なお、接続先はこんな感じです。

1 MCLK —- 40ピンコネクタの12ピン (Pmod HAT JAの10ピン)
2 LRCLK —- 40ピンコネクタの35ピン (Pmod HAT JAの8ピン)
3 SCK —- GND  (Pmod HAT JAの11ピン)
4 SDIN —- 40ピンコネクタの40ピン (Pmod HAT JAの7ピン)
5 GND —- GND  (Pmod HAT JAの11ピン)
6 VCC —- 3.3V   (Pmod HAT JAの12ピン)

ピン配の変換基板でも作らないと、接続するだけでも大変ですね。

 

 

DesignSpark Pmod HAT を使ってみる(3)

DesignSpark Pmod HAT  と Pmod I2S を接続していろいろやってみても音が出ないので、Pmod HAT か Pmod I2S の不良を疑ってみました。

とりあえず、Pmod I2S と Raspberry Pi を Pmod HAT 無しで接続してみます。

BCK  —-  40ピンコネクタの12ピン
LRCKLRCLK)  —-  40ピンコネクタの35ピン
MCKSCK)  —-  無し
SDATADATA)  —-  40ピンコネクタの40ピン

となるそうなので、Pmod I2S のピンと Raspberry Pi のコネクタをジャンパワイヤーでつなぎます。Pmod I2S の SCKピンは GND につなぎました。

この状態で
/boot/config.txt

dtoverlay=hifiberry-dac
を追記して.wav ファイルを再生したところ、それっぽい音が出るようになりました。音が割れたようになり、ノイズっぽいのが気になりますが、全く音が出なかった状態に比べるとだいぶ前進しています。

と、ここで、あらためてPmod HAT の回路図を見てみると、Pmod HAT の JAコネクタと、Pmod I2S のピンの接続が、一致していないことが分かりました!

・Pmod HAT は 接続されている 40ピンコネクタのピンの番号
・Pmod I2S は 接続されるべき 40ピンコネクタのピンの番号
として並べてみると、下記のようになっていました。
Pmod HAT    Pmod I2S
35    —-    12
40    —-    35
38    —-    GND
12    —-    40
GND    —-    GND
3V    —-    3V

I2S信号である 12ピン、35ピン、40ピンの接続が見事にバラバラです。
これで音がでるはずがありません。専用のモジュールだからピン配は正しいはず、と思い込んでいたため、だいぶ時間を無駄にしてしまいました。

Pmod HAT と Pmod I2S の組み合わせで使用するには、ピンアサインの変換基板を作るか、ジャンパワイヤーでピンを入れ替えて接続する必要があるということになりますので、Pmod HAT を使う利点がなくなってしまいますね。

ノイズっぽい状態は未だ原因分からないし、とりあえず、ラズパイコンテスト用には Pmod I2S は使用しないことにしようと思います。

DesignSpark Pmod HAT を使ってみる(2)

接続するところは分かったので、Pmod I2S を使用して音を出してみようと思います。

DesignSpark Pmod HAT を Raspberry Pi に取り付け、Pmod I2S を Pmod HAT の JA コネクタの下段に取り付けます。ハードウェア的な接続はこれで終わりのはず。

Raspberry Pi で I2S を使う方法を検索してみると、
/boot/config.txt
に、
dtoverlay=
でドライバを使うよう設定すれば、オーディオデバイスとして使えそうなことが分かります。

Pmod I2S で使用している CS4344 というデバイスの使用例が見つからないのが気になりましたが、I2S は 音声信号を送るので違うデバイス用のドライバでも何かしらの音は出るだろう、と
dtoverlay=rpi-dac

dtoverlay=hifiberry-dac
と追記してみたのですが、何も音が出ません。

オシロスコープで Pmod I2S のコネクタを1ピンずつ見てみると、それっぽい信号は出ています。(1ピンずつ、ってのは失敗でした)
とりあえずモジュールの不具合を疑ってみましたが、見た目には問題なさそうなので、指定できるドライバを順番に変更してみたりもしましたが、結局、この日に音が出ることはありませんでした。

DesignSpark Pmod HAT を使ってみる(1)

コンテスト用に無償提供しているものの割りに情報が少ない(足りない?)気がしますね。

みんなのラズパイコンテストのページから「(概要や技術的な使い方はこちら)」とリンクされていたページは物の紹介だけだったりしますし、Python用のライブラリとして公開されている DesignSpark.Pmod は6種類の基板しかサポートしていません。(しかも手持ちの2種類は対象外)

Raspberry Pi での使用例を検索しても良さそうなものは出てこないし、I2Sモジュールについては使っている記事は何も見つからない状態です。

どのコネクタに挿せば良いかも分からなかったので、それぞれの基板の回路図から探してみたりしてしまいました。

結果、接続方法としては
・JSTK2 は JA か JB の上段
・I2S は JA の下段
っぽいことが分かります。(それっぽい信号がつながっていることから判断)

I2S 、この時ちゃんと確認しておけば、そのあとハマらずに済んだかもしれなかったです。

DesignSpark Pmod HAT

DesignSpark Pmod HATは Raspberry Pi 用の拡張基板です。

みんなのラズパイコンテストの無償提供に応募し、送って頂いたもので色々やってみてます。同梱されていた拡張小基板は Pmod JSTK2Pmod I2S の二つ。

「コネクタに挿すだけで接続できて、使うのもライブラリとか提供されて簡単!」

なんて考えていたのですが、全然そんなことはなくて、動かすだけで苦労することになってしまいました。特に I2S は酷いことに。他の人たちは問題無く使えているのかしら。

コンテストに何か応募しないと返却することになるので、どうしたものかと考えているのですが、このモジュールだと厳しいかな、なんて思ってしまってます。が、他のモジュールを購入するのも何とも。そんなに安くないですし。
応募するときには Pmod NAV を希望って書いておいたのになぁ。とりあえずアイデアだけでも考えないと。