電子趣味の部屋

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

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]でメニューを開いてディスクの入れ替えや、リセット、終了を行うことができます。

問題点

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