
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

マウスカーソルが黒四角になっちゃう問題があるので
ソースを直接修正する。
ところでnp2piのメニュー表示時のマウスカーソルが黒四角になるのはバグなんだろうか? 何かファイルが足りてない? あとキーボードのリピートが効かないのも気になる。 pic.twitter.com/PyNOcxC3QK
— よしだまき (@suiseikobo) January 13, 2014
以下コマンドでソースを編集する。
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が始まりで必ずガガッ・・って)
今回は以上です。
では、また!