Raspberry Pi ZeroでPC-9801を遊ぶ!
どうも僕です。
以前、Windows10でPC9801エミュ「Neko Project II」を遊んでみました。
ふと、
Raspberry Pi Zeroでも
PC9801エミュが遊べないかな~って思いまして・・・。
ネットを探したところ、やっぱり記事がありました。
ただ、如何せん記事の内容が古い(2017年の6年前)です。
きっと、リンク切れやライブラリなどが淘汰されているだろうなぁっと。
ただ、上手くいくのかはわからないけど、
Raspberry Pi ZeroでPC9801を動かしてみたい!
Raspberry Pi Zeroに
PC9801エミュ「Neko Project II(NP2)For Raspberry Pi」の
インストールを挑戦してみよう!
Raspberry Pi OS Liteの構築
Raspberry Pi OS Liteのインストール
PI Imager*をダウンロードしよう。
*SDカードにOSイメージを展開するツールです
今回使うライブラリ「SDL12-kms-dispmanx」は、
Raspberry Pi OSの中でも
2世代前の古いバージョン「buster」にしか対応していない。
だから、
古いバージョンのOSイメージを以下からダウンロードしよう。
ファイルは「2023-05-03-raspios-buster-armhf-lite.img.xz」です。
ダウンロードできたら、
Pi Imagerを起動します。
RaspberryPiデバイスは「RASPBERRY PI ZERO」を選択し、
さらにOSは「カスタムイメージを使う」を選択して
イメージを選ぶでは上記でダウンロードしたOSイメージ「2023-05-03-raspios-buster-armhf-lite.img.xz」を選択しよう。
ストレージはMicroSDカードをPCに挿して*、
*自分はMicroSDカードをUSB変換するアダプタでPCに認識させてます
Pi Imagerのストレージでは上記のUSB変換アダプタを指定します。
*自分の場合はUSBメモリとしてPCは認識してます
「次へ」を押すと
カスタマイズ設定する?って聞いてくるので「いいえ」で。
「はい」を押す。
しばらく待つと、
SDカードへの書き込みが終わるので「続ける」ボタンを押す。
SDカードをRaspberry Pi Zeroに挿して
Raspberry Pi Zeroを起動しよう。
*PI OS LiteのOSユーザは「pi」、パスワードは「raspberry」
Raspberry Pi OS Liteの初期設定
PI OS Liteの初期設定として以下を実施すること。
・「WiFi」の設定
・「SSH」の有効化
・「キーボード」の日本語キーボードへ変更
・「自動ログイン」の有効化
以下のコマンドで上記の4つの設定を入れよう。
sudo raspi-config
まずWifi設定
[1 System Options]からの[S1 Wireless LAN]設定へ
JP Japanを選んで
Okで
SSID入れて
パスワードいれてOkね
SSH有効設定
[3 Interface Options]からの[P2 SSH]
Yesで
Okで
キーボード設定
[5 Localisation Options]からの[L3 Keyboard]
Generic 105-key PC (intl.)を選んで
Otherで
Japaneseで
Japanese-Japanese(OADG 109A)を選び
defaultで
No compose keyで
自動ログイン
[1 System Options]からの[S5 Boot / Auto Login]を選び、
B2 Console AutoLoginを選ぶ。
4つの設定が出来たら、SSHによるリモートで設定しよう。
(その方が本記事からコピペできて楽だからね)
その前に以下コマンドでIPは調べよう。
ip a
TeraTermでPI OS Liteに接続しよう。
Raspberry Pi OS Liteのチューニング
このままだとコンパイルが遅いので、CPUのオーバークロックをしよう。
以下コマンドでOS起動設定ファイルを編集しよう。
sudo nano /boot/config.txt
以下を追記しよう。(#arm_freq=800の下に追記)
arm_freq=1000
force_turbo=1
over_voltage=8
core_freq=500
sdram_freq=530
over_voltage_sdram=1
over_voltage_sdram_c=7
over_voltage_sdram_i=7
over_voltage_sdram_p=8
ctrlキー+Xでエディタを終了し、必ずYesで上書きしよう。
さらにOSを再起動しよう。
sudo reboot
再起動が終わったら、TeraTermで接続しよう。
NP2 for Raspberry Pi(np2pi)の構築
SDL12-kms-dispmanx のインストール
以下コマンドを実行して
インストール可能なパッケージの「一覧」を更新する。
sudo apt-get update
以下コマンドを実行して
音源ライブラリをインストールする。
sudo apt-get install libasound2-dev
以下コマンドを実行して
gitコマンドをインストールする。
sudo apt-get install -y git
以下コマンドを実行してソースを取得する。
cd ~
git clone https://github.com/vanfanel/SDL12-kms-dispmanx.git
マウスカーソルが黒四角になっちゃう問題があるので
ソースを直接修正する。
以下コマンドでソースを編集する。
cd ~
nano SDL12-kms-dispmanx/src/video/SDL_cursor.c
642行目の「return」の前に「//」を追加する。(コメントアウト)
644行目の「/*」を削除する。(コメント削除)
671行目の「*/」を削除する。(コメント削除)
ctrlキー+Xでエディタを終了し、必ずYesで上書きしよう。
さて、以下のコマンドでコンパイルしよう。
cd ~
cd SDL12-kms-dispmanx
./MAC_ConfigureDISPMANX.sh
make clean && sudo make install
SDL_ttf のインストール
以下のコマンドを実行しよう。
cd ~
wget https://download.savannah.gnu.org/releases/freetype/freetype-2.9.1.tar.gz
tar xzf freetype-2.9.1.tar.gz
pushd freetype-2.9.1
./configure
make
sudo make install
sudo cp builds/unix/freetype-config /usr/bin
popd
cd ~
wget https://www.libsdl.org/projects/SDL_ttf/release/SDL_ttf-2.0.11.tar.gz
tar xzf SDL_ttf-2.0.11.tar.gz
cd SDL_ttf-2.0.11
./configure && make && sudo make install
sudo /sbin/ldconfig
np2pi のコンパイル
以下のコマンドを実行しよう。
cd ~
git clone https://github.com/irori/np2pi.git
cd np2pi/sdl
make -f makefile.rpi
np2piのメニュー用のフォント
以下のコマンドを実行しよう。
cd ~
sudo apt-get install ttf-sazanami-gothic
生成したメニュー用のフォントをコピーする。
cd np2pi/bin
ln -s /usr/share/fonts/truetype/sazanami/sazanami-gothic.ttf default.ttf
np2piの自動起動を設定
nano ~/.bashrc
一番下に以下のように記述しよう。
cd ~/np2pi/bin/
./np2
PC9801のソフトウェアを配置
以下コマンドでフォルダを作っておく。
mkdir ~/np2pi/bin/soft
WinSCPを使って
PC9801ソフトウェアのFDDイメージファイルを転送しよう。
まず、ログインして
上記で作成したフォルダ「/home/pi/np2pi/bin/soft」の中に
ソフト名のフォルダを作って、
PC9801のFDDイメージファイルを転送しよう。
FDDイメージファイルを転送しよう。
転送できました。
PC9801のサウンドカード有効化
TeraTermではなく、Raspberry Pi Zero 実機で直接操作しよう。
Raspberry Pi Zeroを再起動し、エミュが起動するのを確認する。
起動を確認したら、F11を押すとメニューが出てくる
キーボードのENDキー押しながら、メニューのEmulate>Resetしよう。
「ディップスイッチ2の設定」を選んで、
「メモリスイッチ」を選び、「保持する」を選択する。
終了を選択し、
今度はメインメニューの「メモリスイッチの設定」を選択する。
さらに「拡張ボード」を選択。
「サウンドボード」で「使う」を選択する。
ESCで拡張ボードのメニューを抜けて、switch set. MENUを終了し、
さらに終了を選択してシステムセットアップメニューを抜けよう。
PC9801のBGM遅延を解消
np2piのデフォルト設定だと、BGM遅延が気になります。
メニューのEmulateからConfigureを選び、
SoundグループのBufferを100msに設定すると緩和できます。
メニュー>Emulate>Configureを選び、
SoundのBufferを一番左へと小さくし、
(最小は100msみたい)
OKボタンを押そう。
さぁ遊んでみよう!
TeraTermではなく、Raspberry Pi Zero 実機で直接操作しよう。
自動起動するはずなので再起動してみよう。
sudo reboot
おぉ~きた~~~!
F11キーを押してメニューを出そう。
FDD1にゲームディスクを入れて再起動してみる。
きたーーー!
楽しい!
(*・ω・)(*-ω-)(*・ω・)(*-ω-)ウンウン♪
気になるのは、
たまにBGMに「ガガッ」ってノイズが入るくらいですね。
(オープニングなどのBGMが始まりで必ずガガッ・・って)
今回は以上です。
では、また!