電子趣味の部屋

電子系のガジェットやアプリ開発等の趣味の話題を書いてます

Raspberry pi 400で遊ぶ X68000編

今回は『Raspberry pi 400で遊ぶ MSX編』に続いて、Raspberry pi 400 (日本語キーボード)へX68000の環境を構築しました。




Raspberry Pi OS Lite

今回も最小構成にしたいので、Raspberry Pi OS Liteを使用しました。
最新のBullseyeでは起動時に失敗して何回試してもうまく動作しなかったので、前バージョンのBusterを使用しました。
Raspberry Pi Imagerからは、Raspberry Pi OS (Other) から Raspberry Pi OS Lite (Legacy) を選択してインストールします。

初期設定

作業は一通りユーザ「pi」で進めていきます。

raspi-configで設定

raspi-config起動

sudo raspi-config
Wifi設定

[1 System Options] - [Wireless LAN] からWifiを設定

SSH有効化

[2 Interface Options] - [P2 SSH] から を選択してsshを有効化

キーボード設定 (日本語キーボードの場合)

[5 Location Options] - [L3 Keyboard]-[Generic 105-key PC (intl.)] から [Japanese - Japanese (OADG 109A)] を選択

自動ログイン

[1 System Options] - [Boot/Auto Login] から [B2 Console AutoLogin] を選択して自動ログイン

前準備

SDL 1.2、SDL_gfx 1.2、gitをインストールします

sudo apt install -y libsdl1.2-dev
sudo apt install -y libsdl-gfx1.2-dev
sudo apt install -y git

ファイルの展開のため、unzipとlhasaと7zをインストールします。

sudo apt install -y unzip
sudo apt install -y lhasa
sudo apt install -y p7zip-full

px68kの構築

ここではX68000のエミュレータpx68kの環境を構築する手順を書いていきます。

px68kはpiユーザのホーム以下のpx68kディレクトリ(/home/pi/px68k)へインストールすることを想定して進めます

cd
git clone https://github.com/hissorii/px68k
cd px68k
make

ここでmakeのエラーが発生すると思います。

gcc -o x68k/adpcm.o -m32 -g -O0 -fno-strict-aliasing -DUSE_SDLGFX -DNO_MERCURY -DPX68K_VERSION=0.15 -I./x11 -I./x68k -I./fmgen -I./win32api `sdl-config --cflags` -c x68k/adpcm.c
gcc: error: unrecognized command line option ‘-m32’; did you mean ‘-mbe32’?
make: *** [Makefile:112: x68k/adpcm.o] Error 1

Makeファイルの編集をします。

vi Makefile

編集するコマンドはnanoでも慣れてるもので大丈夫です。

"-m32"と書いてある箇所があるので"-mbe32"に変更します。

        MOPT= -m32

        MOPT= -mbe32

保存して再度makeします。

make

いくつかワーニングが表示されましたが、無事に動作しているようです。

BIOSファイル配置

実行にはiplrom.datとcgrom.datが必要。
色々なサイトを参考にX68000 LIBRARYXM6 Pro-68kから拝借

mkdir ~/.keropi
wget http://www.retropc.net/x68000/software/sharp/x68bios/X68BIOSE.LZH
lhasa x X68BIOSE.LZH iplrom.dat
mv iplrom.dat ~/.keropi/iplrom.dat
chmod 644 ~/.keropi/iplrom.dat
wget https://mijet.eludevisibility.org/XM6%20Pro-68k/XM6%20Pro-68k%20DLL%20Package.7z
7z x "XM6 Pro-68k DLL Package.7z" CGROM.DAT
mv CGROM.DAT ~/.keropi/cgrom.dat
chmod 644 ~/.keropi/cgrom.dat

動作確認

X68000 LIBRARYからHuman68kのディスクイメージを取得して起動してみます。

wget http://www.retropc.net/x68000/software/sharp/human302/HUMN302I.LZH
lhasa x HUMN302I.LZH human302.xdf
chmod 644 human302.xdf
./px68k human302.xdf

MSXの場合と同じように、FullHDのデイスプレイでは写真のように右上だけに表示されてしまいました。

/bootにあるconfig.txtを編集します

sudo vi /boot/config.txt

下の定義の部分のコメント"#"を削除して、設定できる画面モードのなかからなるべく全画面に近い解像度を設定しました。

#hdmi_group=1
#hdmi_mode=1

hdmi_group=2
hdmi_mode=9

詳細な意味は省略しますが、これで800x600表示になります。
設定後はリブート

sudo reboot

再度起動するとこんな感じです。

まだ余白がありますが、これ以上小さい解像度に設定すると、px68kの起動で失敗しました。

自動起動

電源を入れたらpx68kの起動まで自動で行えるようにします。
.bashrcの最後にpx68kの起動コマンドを追加します。

.bashrc編集

vi ~/.bashrc

最後の行に追加

cd px68k
./px68k

raspi-configの設定で自動ログインも有効化してるので、これで電源オンの後は自動でログインしてpx68kを起動されるようになります。

メニュー

[F12]でメニューを開いてディスクの入れ替えや、リセット、終了を行うことができます。

問題点

現在マウスカーソルが表示されてしまいます。
コンソールだけで扱いたいので、邪魔なのですが非表示にする方法が不明です。

Raspberry pi 400で遊ぶ MSX編

Raspberry pi 400 (日本語キーボード)を手に入れました。

キーボード一体型なので、サーバにしてssh接続で使うにはスペースを取りすぎて無駄なので、普通のデスクトップPCとして使うことにしました。
普段は最新のRaspbberry Pi OSで使用しているんのですが、キーボード一体型と言えばMSXということで、MSX専用環境を作って遊んでみました。

Raspberry Pi OS Lite

MSXに特化して最小構成にしたいので、Raspberry Pi OS Liteを使用しました。
最新のBullseyeでは起動時に失敗して何回試してもうまく動作しなかったので、前バージョンのBusterを使用しました。
Raspberry Pi Imagerからは、Raspberry Pi OS (Other) から Raspberry Pi OS Lite (Legacy) を選択してインストールします。

初期設定

作業は一通りユーザ「pi」で進めていきます。

raspi-configで設定

raspi-config起動
sudo raspi-config
Wifi設定

[1 System Options] - [Wireless LAN] からWifiを設定

SSH有効化

[2 Interface Options] - [P2 SSH] から を選択してsshを有効化

キーボード設定 (日本語キーボードの場合)

[5 Location Options] - [L3 Keyboard]-[Generic 105-key PC (intl.)] から [Japanese - Japanese (OADG 109A)] を選択

自動ログイン

[1 System Options] - [Boot/Auto Login] から [B2 Console AutoLogin] を選択して自動ログイン

OpenMSXをインストール

aptでインストールできました。

sudo apt install openmsx

OpenMSX起動

openmsx

これだけで起動できます。

日本語レイアウトのキーボードでは、メニューキーでOpenMSXのメニューを開くことができます。
ここからOpenMSXを終了させることができます。

ただこの状態では、FullHDのデイスプレイでは写真のように右上だけに表示されてしまいました。

openmsxの設定ではフルスクリーンにできず、Raspberry Piの設定で変更しました。

画面解像度の設定

/bootにあるconfig.txtを編集します

sudo vi /boot/config.txt

編集するコマンドはnanoでも慣れてるもので大丈夫です。

下の定義の部分のコメント"#"を削除します。

#hdmi_group=1
#hdmi_mode=1

hdmi_group=1
hdmi_mode=1

詳細な意味は省略しますが、これでVGA(640x480)表示になります。
設定後はリブート

sudo reboot

これでopenmsxを実行すると画面いっぱいに表示されました。

ここで画面中央に小さく表示される場合は、一旦openmsxを終了し、設定ファイルを修正します。

vi ~/.openMSX/share/settings.xml

下の設定があると思うので、1を2に変更します。

<setting id="scale_factor">1</setting>

<setting id="scale_factor">2</setting>

これで起動するとちょうど良いサイズになります。

自動起動

実機のMSXと同様に電源を入れたらOpenMSXの起動まで自動で行えるようにします。
.bashrcの最後にopenmsxを追加します。

.bashrc編集

vi ~/.bashrc

最後の行に追加

openmsx

raspi-configの設定で自動ログインも有効化してるので、これで電源オンの後は自動でログインしてopenmsxを起動されるようになります。

OpenMSXの各種操作

日本語レイアウトのキーボードでは、メニューキーでOpenMSXのメニューを開くことができます。
ここでROMファイルを開いたりディスクファイル(ディレクトリ)を開いたりできます。
またBIOSを用意すれば特定の機種をエミュレートし、BASICも扱えるようになります。

BIOSファイルは下のディレトリに入れてください。
/home/pi/.openMSX/share/machines

BIOSの吸出し方法はここでは説明しませんが、FS-A1STの場合は http://bluemsx.msxblue.com/resource.html にある Panasonic dump tools で行いました。
何年か前のファイルを使いまわしてるので、手順は覚えてません。


ゲームコントローラ(ゲームパッド)について

ゲームコントローラはPS4用のものをのUSB接続でそのまま使用できました。
他のUSB接続のものなら使用できそうです。

最後に

Raspberry Pi 用のMSXエミュレータは他にも blueberrymsx 等ありますが、XウィンドウではなくSDLライブラリでの場合は、メニューが表示されないので、操作方法がわかりませんでした。
OpenMSXは独自でメニューを表示してキーボードだけで操作できるので、今回はこちらを選択しました。

今回は特に行わなかったですが、必要のないサービスは起動しないようにし、電源を入れてからのMSX起動までの高速化も行いたいと思います。

Raspberry Pi Pico で MicroPython

Raspberry Pi Picoを入手したので、MicroPythonで遊んでみました。
C/C++で開発してネイティブで動作させることもできるのですが、MicroPythonの方が手軽に遊べるのでRaspberry Pi PicoはMicroPythonで遊ぶことにします。

この手物のはインタプリタは遅くてコンパイルされたネイティブなバイナリコードを直接動作させるイメージがあるのですが、それは一般的に組み込み用のCPUがPCと比較して非力で動作が遅いというのが原因だと思います。
その点Raspberry Pi PicoはARMベースで動作クロックも133MHzもあるので、使用してみると思ったより快適で十分だと思います。まだそんなに高度なことはしていないので、ArduinoでC/C++で動作させるのと感覚的に同等で速度的にも気にならなさそうです。
PHPやJavaScriptからプログラミングを始めた人はわかりませんが、昔のPCでBASICから始めた人はコンパイル言語は憧れでどうしてもC/C++の速度に頼りがちになりますが、十分な速度で動作する場合はインタプリタの方が手軽で良いですね。
Raspberry Pi PicoでMicroPythonを動作させると、0.23W前後で動作しています。

開発環境はThonnyを使用します。
Thonny, Python IDE for beginners
個別にMicroPythonのファームウェアを書き込んでシリアル通信でソースを転送して実行という使い方もできると思いますが、Thonnyだとファームウェアの書き込みからソースの編集、実行まで簡単に出来るので便利です。

ソースファイルはRaspberry Pi Pico内のフラッシュROMに書き込まれます。ファイル単位なので、複数管理できます。
ファイル名を"main.py"とすると、電源投入時に実行されます。

Pythonシェルも使用できるので、リアルタイムにピンや接続したモジュールの値も確認出来て便利です。
例としてGP16にタクトスイッチを接続したとして、

sw1 = machine.Pin(16, machine.Pin.IN, machine.Pin.PULL_DOWN)
sw1.value()

で押下状態を確認できます。

参考にThonnyでMicroPythonを書き込むまでの手順です

Thonnyを起動してから、Raspberry Pi PicoのBOOTSELボタンを押しながらUSBを接続してください。
メニューの[ツール]-[Options...]を選択して開いたダイアログで[インタプリタ]タブを選択してください。
ここで"MicroPython (Raspberry Pi Pico)"を選択すると、MicroPythonのインストールダイアログが開いてインストールできます。

Raspberry Pi Pico

Raspberry Pi Pico

  • メディア: エレクトロニクス

Raspberry Pi で X68000 (RetroPie不使用)

Raspberry Pi用のX68000型ケースを前から持ってたのですが、ずっと放置していました。

やっと前からやりたかったX68000のエミュレータ専用環境を作ったので、手順をメモとして置いておきます。

RetroPieへインストールする記事はよく見ますが、今回は最小限の環境を作りたかったので、Raspberry Pi 3 Model BへRaspbian Buster Liteをインストールした環境で構築しました。

Raspbian Buster Liteの場所

Raspberry Pi OS – Raspberry Pi

環境構築

ここではX68000のエミュレータpx68kの環境を構築する手順を書いていきます。OSのインストールやネットワーク等のOS環境の手順は省略します。
ユーザは'pi'でログインしていることを前提で進めます。

前準備

SDL 1.2、SDL_gfx 1.2、gitをインストールします

sudo apt-get install -y libsdl1.2-dev
sudo apt-get install -y libsdl-gfx1.2-dev
sudo apt-get install -y git

ZIP形式とLHA形式ファイルの展開のため、unzipとlhasaをインストールします。

sudo apt-get install -y unzip
sudo apt-get install -y lhasa
sudo apt-get install -y p7zip-full

px68kの構築

px68kはpiユーザのホーム以下のpx68kディレクトリ(/home/pi/px68k)へインストールすることを想定して進めます

cd
git clone https://github.com/hissorii/px68k
cd px68k
make

いくつかワーニングが表示されましたが、無事に動作しているようです。

BIOSファイル配置

実行にはiplrom.datとcgrom.datが必要。
色々なサイトを参考にX68000 LIBRARYXM6 Pro-68kから拝借

mkdir ~/.keropi
wget http://www.retropc.net/x68000/software/sharp/x68bios/X68BIOSE.LZH
lhasa x X68BIOSE.LZH iplrom.dat
mv iplrom.dat ~/.keropi/iplrom.dat
chmod 644 ~/.keropi/iplrom.dat
wget https://mijet.eludevisibility.org/XM6%20Pro-68k/XM6%20Pro-68k%20DLL%20Package.7z
7z x "XM6 Pro-68k DLL Package.7z" CGROM.DAT
mv CGROM.DAT ~/.keropi/cgrom.dat
chmod 644 ~/.keropi/cgrom.dat

動作確認

X68000 LIBRARYからHuman68kのディスクイメージを取得して起動してみます。

wget http://www.retropc.net/x68000/software/sharp/human302/HUMN302I.LZH
lhasa x HUMN302I.LZH human302.xdf
chmod 644 human302.xdf
./px68k human302.xdf

これで起動出来たら、ひとまず構築成功です。


自動起動

X68000のエミュレータ専用環境が目的なので、電源ONしたら自動的にpiユーザでログインしてpx68kの起動までできるようにしたいです。

今回はRaspbian Buster Liteが前提なのでCUIログインです。
CUIログイン時にpiユーザで自動ログインするように設定します。

/etc/systemd/system/getty.target.wants/getty@tty1.serviceファイルを編集する。

sudo vi /etc/systemd/system/getty.target.wants/getty@tty1.service

編集内容(ExecStartの定義を書き換える)

ExecStart=-/sbin/agetty --autologin pi --noclear %I $TERM

自動起動は普通に.bashrcの最後に追記しました

vi ~/.bashrc

追加コマンド

cd px68k
./px68k

これで電源を入れたらRaspbian起動後、自動的にpiユーザでログインしてpx68kが実行されます。

[F12]でメニューを開いてディスクの入れ替えや、リセット、終了を行うことができます。

Unicorn pHATで遊ぶまでのメモ

Unicorn pHATを入手したので、Raspberry Pi Zero W で遊んでみました。
動作させるまでのメモを残します。
GPIOは同じなので、他のRaspberry Pi(ZERO以外でも)でも同じ手順で操作します。

GitHub(ソース)

https://github.com/pimoroni/unicorn-hat
基本的にここのREADME.mdの通りにセットアップすれば、簡単デモを動かすことができるます。

以下、作業ディレクトリを /home/pi と想定。

/boot/config.txtを編集
hdmi_force_hotplug=1
一連のファイルをセットアップ

以下のコマンドを実行

curl -sS https://get.pimoroni.com/unicornhat | bash
デモファイルを動かしてみる。

サンプルのソースファイルが、~/Pimoroni/unicornhat/examples/ にあるので、ここにある demo.py を実行してみる。

cd ~/Pimoroni/unicornhat/examples/
sudo python ./demo.py


Raspberry Pi Zero W Starter Kit

Raspberry Pi Zero W Starter Kit

NES風Raspberry Piケース

ebayで面白いものを見つけたので遊んでみました。

NES風のNESRaspberry Piケースです

3Dプリンタで出力したものが出品されてたので買ってみました。
送料合わせて3000円ほどです。

また、NES風USBコントローラもあったので、こちらも買ってみました。
送料込みで250円です。
コントローラはそれなりの作りです。
十字キーに山がないので、よく斜めを押したことになってしまいます。
今回は遊びのためなので、これで良いですが、それなりのメーカーが販売している数千円のものもあるので、普通に使いたい人はそちらを選びましょう。

ケースの形状データはネットを探せばあるようで、複数の人が様々な色で出力してた多数出品されています。
こういうのを見ると3Dプリンタがほしくなります。

Raspberry Pi 3 MODEL B 【RS正規流通品】

Raspberry Pi 3 MODEL B 【RS正規流通品】

Raspberry Pi をメディアプレイヤーにする方法

Raspberry Piを発売前から予約して入手したのですが、今まで何も手を付けずにいました。
そこで何か面白い方法は無いかと探してたところ、メディアプレイヤーにする事を思いつきました。
オープンソースクロスプラットフォーム・メディアプレイヤー「XBMC」というものがあるのですが、これをRaspberry Pi向けに移植したRaspbmcというものをインストールしました。

インストールはOSXからしました
参考:http://www.raspbmc.com/wiki/user/os-x-linux-installation/

入手方法

curl -O http://svn.stmlabs.com/svn/raspbmc/release/installers/python/install.py
chmod +x install.py

インストール

install.pyを実行する

sudo python install.py

インストール先のディスクを選択するメッセージが表示されるので、SDカードを選択する。
書き込みできない場合は、SDフォーマッター4.0(https://www.sdcard.org/jp/downloads/formatter_4/)を使ってSDカードをフォーマットしてみる。

これで作ったSDカードをRaspberry Piにセットして電源を入れると無事に起動しました。
iOSandroidにXBMCリモコンアプリがいくつかあるので、これを使えばキーボードやマウスを接続しなくても操作できます。

Raspberry Pi Type B 512MB

Raspberry Pi Type B 512MB