電子辞書Brainをいじる (5) Brainuxでエミュレータをインストールして遊ぶ


Brainuxにエミュレータをインストール

———-

higan  マルチゲームコンソールエミュレータ(動作はするが遅すぎる)

マルチコンソールゲーム機のエミュレータです。
正確な動作を目標に作成されたエミュレータとのことです。

インストールはApt経由で可能です。

sudo apt install higan

インストール自体は成功して、実行してみましたが、
Brainuxで動作はするが、1FPSくらいしか出ないので、実用上は難しいです。

 

———–

gngb GAME BOY エミュレータ

gngbは、GAMEBOY エミュレータです。

画面は小さいですが、結構まともに動きました。

インストールはApt経由で可能です。

sudo apt install gngb

とりあえず、以下のコマンドでも手持ちのGBカードリッジのデータで実行したところ、以下で普通に動きます(音なし)。

gngb “rom.gb”

デフォルト操作
Start Enter(決定)
Select Right Shift(Brainにキーなし)
移動 カーソルキー
A X
B W
Menu TAB(国語辞典)
終了 ESC(戻る,調べる)

快適に動かすため、以下のように実行パラメータを指定して、動作を確認してみました。
FDcloneに”.gb”の拡張子で、使用するオプション込みで追加すれば、便利ですよ。
(.gb: gngb –autoframeskip –sound –sample_rate=11025 –fps )

パラメータ調整(–fps は、フレームレート表示確認用です。)
・音無しで 43-60fps
gngb –autoframeskip –no-sound –fps “.rom.gb”

・音あり(usbサウンドデバイス必須)で 28-35fips
gngb –autoframeskip –sound –sample_rate=11025 –fps “.rom.gb”

デフォルト設定を変えるには、「/usr/share/doc/gngb/examples/sample_gngbrc」を、「$HOME/.gngb/gngbrc」にコピーして、編集してください。

例えば、Setartを「m」、Selectを「n」に割り当てするには以下のように変更します。
(キーコードはこちらを参照)
#map_key 273,274,276,275,120,119,13,303
map_key 273,274,276,275,120,119,109,110

/usr/share/doc/gngb/にドキュメントが保存されているので、参考にしてください。

———-

fceux ファミコンエミュレータ(動作は遅いです。->SDL1.2版では動きます。)

インストールはApt経由で可能です。
sudo apt install fceux

X11環境で、Shellから”fceux”で起動できます。
(libSDL2の再構築が必要です。再構築していないと、Illegal instruction エラーになります)

Optionから設定変更できますが、Video configからDriverをSDLにしたりしたけど、4-5fpsぐらいしか出ませんでした。チューニング次第で、もう少しあげられるのだろうか?
キー入力も何とか反応するレベルでした。

 

———-

fceux 2.2.3 (SDL1.2版) ファミコンエミュレータ(音無しであれば実用的な速度で動作)

Brainでapt経由でインストールできる fceux2.3.0(SDL2.0版)だと動作速度遅すぎて、4-5fpsしかでない&キー入力も怪しいという状況でした。
で、先日同様に動作が重かったopenMSXをSDL1.2でビルドしてみたところ動作が改善したということで、fceuxもSDL1.2で構築してみました。

結果的に音無しでですが、調子のよいときは最大38 fpsぐらい出るときもあります。
これくらいfpsが出れば、十分遊べる範囲です。
(なんらかの条件で遅かったり早かったりします。条件不明。)
(plusaudio起動している確率があがるような気が・・・)
(10fps or 20fps or 40fps)

インストールは、SDl1.2をサポートする最終バージョンである2.2.3のソースを元にビルドします。

公式サイト
https://fceux.com/web/download.html

$ cd
$ mkdir fcmux
$ cd fcmux
$ wget https://github.com/TASEmulators/fceux/archive/refs/tags/fceux-2.2.3.tar.gz
$ tar zxf fceux-2.2.3.src.tar.gz
$ cd fceux-2.2.3

インストールの仕方の詳細は、README-SDLを確認してください。

まずは、ビルドパラメータを修正します。
いったん、以下のように修正してみました。
$ vi SConstruct

また、最適化も追記設定しておきます(“-O2” -> “-O3 -march=native”)

Fceux 2.2.3 のビルドシステムは sconsを利用します(2.3.0からはcmakeです。)。
が、現行のpython3ではなく、python2版のsconsが必要になります。
ですので、以下のようにpython2環境を作成してsconsを導入、ビルドします。。

$ sudo apt install python2
$ curl -sS https://bootstrap.pypa.io/pip/2.7/get-pip.py | sudo python2
$ sudo python2 -m pip install
$ virtualenvvirtualenv -p python2 ~/fceux-py2env
$ source ~/fceux-py2env/bin/activate
$ pip install ‘scons<3.0’
$ cd ~/fcmux/fceux-2.2.3
$ scons -c && rm -rf .scon*           # ビルド情報をクリア
$ scons                    # ビルド(約3時間程度)
$ deactivate

テスト実行
$ cd bin
$ ./fceux

システムにインストール
$ sudo bash
$ source /home/user/fceux-py2env/bin/activate
$ scons install
$ deactivate

これで、/user/local/bin/に実行ファイルがインストールされ、fceuxできるようになります。
もし、JWMのメニューから起動したければdesktopファイルが以下にインストールされているのでこれをベースにアプリのインストール先などを変更してください(Exec,Icon)。
sudo vi /usr/local/share/application/fceux.desktop
Exec=/usr/local/bin/fceux
Icon=/usr/local/share/pixmaps/fceux.png

 

———-

nestopia ファミコンエミュレータ(動作は遅いです。キー入力反応なし?)

インストールはApt経由で可能です。
sudo apt install nestopia

X11環境で、Shellから”nestopia”で起動できます。
(libSDL2の再構築が必要です。再構築していないと、Illegal instruction エラーになります)

設定変更はEmurator -> Configurationからできます。
FPSは出ていませんし、キー入力も受け付けていないように見えます。

———-

openmsx  MSXエミュレータ(動作は遅い->SDL1.2版で現実的な速度に。)

インストールはApt経由で可能です。
sudo apt-get install openmsx openmsx-catapult openmsx-data cbios

X11環境で、Shellから”openmsx”で起動できます。
(libSDL2の再構築が必要です。再構築していないと、Illegal instruction エラーになります)

また、専用ランチャである”openmsx-catapult”を起動すると、ROM指定を含めてGUIで操作できます(初回起動時は各種チェック処理が入ります)。

とりあえず、ROM起動しましたレベルまでの確認です。やはり遅いです。

なお、Illegal instructionエラーを調査する段階で、ソースからのコンパイルも試してみましたが同じエラーになりました。ちなみにBrainux上でのコンパイルには20時間以上かかりました(マジ)。

 

———-

openmsx 0.15 (SDL1.2版) インストール     2025/12/22追記

いろいろアプリケーションをインストールしてみた傾向から、やはりSDL2.0が重いのではないか、ということでSDL2.0移行前のSDL1.2を使っている最後のバージョンである「openMSX0.15」をソールからビルトインストールして上書きインストールしてみます。

$ sudo apt-get install openmsx openmsx-catapult openmsx-data cbios

$ cd
$ mkdir openmsx15
$ cd openmsx15
$ tar zxvf openmsx-0.15.0.tar.gz
$ cd openmsx-0.15.0

$ sudo apt install python-dev   # openmsx 0.15での./configureの実行に必要
$ sudo apt install libasound2-dev
$ sudo apt install libglew-dev
$ sudo apt install libogg-dev
$ sudo apt install libtheora-dev
$ sudo apt install libvorbis-dev
$ sudo apt install libsdl2-dev
$ sudo apt install libsdl2-ttf-dev
$ sudo apt install tcl tcl8.6-dev

$ ./configure  # ビルドに必要なライブラリをチェック。不足している場合は追加

$ make        #Brainの実機ビルトで約15時間
$ sudo make install

起動は、ターミナル上で、「openmsx &」 か、
一度aptでインストール済であれば、JWMメニューから、「games -> openMSX」で起動です

なお注意点として、インストール先が違うことです。
aptでインストールしたopenmsx(バージョンは16.0)のインストール先:
 /usr/bin/openmsx
自ビルドしたopenmsx(0.15)のインストール先(シンボリックリンク):
 /usr/local/bin/openmsx

Path優先順位は、/usr/local/bin/ -> /usr/bin/なので、自ビルドしたほうが優先順位が高いですが、openmsx-catapultでのopenmsxの場所を変えないと、aptでインストールしたopenmsx16.0が起動してしまう場合があるので、気を付けてください。
(不要であれば、/usr/bin/openmsx を削除でもいいと思います。)

起動押したら、カーソルを左上にもっていくと出てくる menuをクリックすると、
メニューが開いて、romの指定などができます。

おすすめは、
「misc Settings->Minimal Frameskip: 0」
「misc Settings->Maximal Frameskip: 30」
「Sound Settings->Resampler: fast (but low quality)」
あたりを設定しておくと、音ありでもそれなりの速度で動いてくれます。

なお、USBサウンドデバイスを付けてい場合は、別途pulseaudioを起動しておいてください。
なぜか安定して音が鳴ります。
pulseaudio –start
openmsx
pulseaudio -k

標準では、CBIOSで起動しますが、
必要に応じて、MSX実機から取得したのBIOSを
/opt/openMSX/share/systemromsにコピーすればBASICやDiskも使えるようになります。
(ファイルのチェックサムで識別しているようで、ファイル名は任意だそうです。)

コピーしたら、menu -> hardware -> change machine で抜き出した機種名を選んでください。

詳しい説明はこちら
https://openmsx.org/manual


2026/01/05追加
現在、CPU最適化オプションを付けて再ビルド中
結果は15時間後・・・

$ cd
$ cd openmsx15/openmsx-0.15.0
$ cd build
$ vi main.mk

CXXFLAGS:=

CXXFLAGS:=-O3 -match=native

$ make clean
$ make
$ sudo make install

ビルドに16-17時間かかりました。
結果として、心持ち速度が上がった気がします。

 

———-

fMSX MSXエミュレータ(MSX1/2/2+)

OpenMSXではSDL2を使っているせいか、動作が遅かったのですが、
SDL2を使っていないMSXエミュレータを探したところ、fmsxを見つけました。
これならワンチャン!ということで試してみます。

fMSX 6.0

インストールソールからのビルドになります。
必要に応じて、ライブラリの追加が必要がある場合があります。

$ cd
$ mkdir fmsx
$ cd fmsx
$ wget https://fms.komkon.org/fMSX/fMSX60.zip
$ unzip fMSX60.zip
$ cd fmsx
$ cd fMSX/Unix
$ sudo apt install g++ build-essential libpulse-dev
$ make

ただ、このままでは、build最後のリンク時に大量のエラーになります。

/usr/bin/ld: ../../EMULib/Sound.o:(.bss+0x230): multiple definition of ARGV'; ../../EMULib/EMULib.o:(.bss+0x218): first defined here
/usr/bin/ld: ../../EMULib/Sound.o:(.bss+0x234): multiple definition ofARGC'; ../../EMULib/EMULib.o:(.bss+0x21c): first defined here

このエラーは、簡単に言うと、”ARGC”,”ARGV”の変数が複数のソースで定義されており、
最後のリンク時に重複していてビルドできないといった感じの意味なります。

ソールをgrepで調べたところ、ARGC、RGCGは以下のファイルに存在していました。

user@brain:~/fmsx$ grep -r “ARG” *
EMULib/Unix/LibUnix.c: if(ARGC&&ARGV)
EMULib/Unix/LibUnix.c: P=strrchr(ARGV[0],’/’);
EMULib/Unix/LibUnix.c: ClassHint.res_name = P? P+1:ARGV[0];
EMULib/Unix/LibUnix.c: ClassHint.res_class = P? P+1:ARGV[0];
EMULib/Unix/LibUnix.c: XSetCommand(Dsp,Wnd,ARGV,ARGC);
EMULib/Unix/LibUnix.c: if(ARGC&&ARGV)
EMULib/Unix/LibUnix.h:extern int ARGC;
EMULib/Unix/LibUnix.h:extern char *ARGV;
fMSX/fMSX.c:int ARGC; /* argc/argv from main (#ifdef UNIX) */
fMSX/fMSX.c:char **ARGV;
fMSX/fMSX.c: ARGC = argc;
fMSX/fMSX.c: ARGV = argv;

これで定義部分を抽出すると・・・

EMULib/Unix/LibUnix.h:
int ARGC;
char *ARGV; grep: fMSX/Unix/fmsx: binary file matches

fMSX/fMSX.c:
extern int ARGC; /* argc/argv from main (#ifdef UNIX) */
extern char **ARGV;

これを見ると、
各ソースファイルにインクルードされるヘッダファイル(LibUnix.h)で変数を定義
メインとなるfMSX.cでは変数外部参照になっていました。

これでは、ヘッダファイル(LibUnix.h)をインクルードしている各ソースファイルごとに変数が定義されることになるので、以下のように定義と外部参照を逆に変更します。

EMULib/Unix/LibUnix.h:
extern int ARGC;
extern char *ARGV


fMSX/fMSX.c:
int ARGC; /* argc/argv from main (#ifdef UNIX) */
char **ARGV;

これで、再度コンパイルすると、ビルドできました。
$ make clean
$ make

出来た実行ファイルは、。~/fmsx/fMSX/Unix/fmsx です。
~/fmsx/fMSX/Unix/の下に、MSXのBIOSROMを保存します(別フォルダ指定する場合は)。
MSX.ROM MSX2.ROM MSX2EXT.ROM MSX2P.ROM MSX2PEXT.ROM
FMPAC.ROM DISK.ROM

これで、fmsxが起動します(ちょっと遅く感じたので-skip 50オプション追加)。
./fmsx -skip 50 game.rom

ビルド時にPlusaudioをリンクされていますが現状Pulseaudioの設定していないので音は出ないようですが、問題ないレベルの速度は出ているようです。
(PulseAudio有効にしましたが音なりませんでした。fMSX v5.1でPulseAudioに切り替えしているみたいなので、それより前のバージョンなら音が鳴るかもしれません。)

———–

dosbox グラフィックス、サウンド、DOS を備えた x86 エミュレータ(Brainでは厳しい)

公式サイト:https://www.dosbox.com/DOSBoxManual.html

DOSBoxは、Tandy/Hercules/CGA/EGA/VGA/SVGAグラフィック、サウンド、そしてDOSを搭載したx86エミュレータです。DOSをサポートしていないプラットフォームでも古いDOSゲームを実行できるように設計されています。

以下のレガシーサウンドデバイスがエミュレートされます:PCスピーカー、Creative CMS/Gameblaster、Tandy 3 voice、Adlib、Sound Blaster Pro/16、Disney Soundsource、Gravis Ultrasound。MPU-401はホストに転送されます。

Brainuxでx86のDOSをエミュレートします。
ただ、かなり遅いです。
フレームレートスキップ設定して、CPUサイクルを最大にして、音をなくして、
やっとアクションを伴わないパズルゲームなら、何とか動かせるかも・・・
といったレベルです(ソフトにもよりますが)。

なお、一度dosboxを起動すると、~/.dosbox/dosbox-0.74-3.conf が作成されますので、
このファイルを編集することでいろいろ定義できます。

例)
[render]
frameslip=30

[cpu]
cycles=max

[mixer]
nosounf=true

[autoexec]
mount c ~/dos
c:

[autoexec]にて、上記のように記載すると、
DOSBOX起動時にBranix上の~/dos ディレクトリを
Cドライブとしてマウントして、Cドライブへの移動まで実行してくれます。

インストールはApt経由で可能です。
sudo apt install dosbox

快適な実行は、通常のパソコンレベルのCPU性能がないと厳しいですね。
多分もっと軽くする設定があると思うけど今はこれが精いっぱい。

(参考)
https://www.dosgamesarchive.com/download/bob-and-his-amazing-journey-home

 

———–

Neko Project 2 kai PC9801/9821 エミュレータ

公式サイト:https://domisan.sakura.ne.jp/article/np2kai/np2kai.html

Neco Project をRaspberry Piに移植したものを0.86化していろいろ改善したバージョンとのことです。
このバージョンではSDL1.2を利用したX11ポートが利用できるので、こちらをビルドしてみました。

起動は、xnp2kai-sdl1です(PC9801エミュレート、X11ポートのSDL1バージョン)

結果として音無し設定あれば、i286 5-7Mhz前後の速度が出るようです。(Autoframe設定)
(Device->Sound option->Driverから無効にできます。)
(音ありだと速度が安定せずに全体的に遅くなるので無効推奨です。要pulseAudio)

BrainのCE版にもNP2がありますが、そちらのほうがBrainに特化した修正がされているようで動きもいいです。がこちらのX11版ではUSBキーボード、マウスが使えるのがメリットです。バーチャルキーボードもありますが、X11版にはカーソルキーをテンキーにする機能はないのでそこは残念。

インストールはソースからのビルドになります。
必要に応じて、ライブラリの追加が必要がある場合があります。

$ cd
$ mkdir np2
$ cd np2
$ git clone https://github.com/AZO234/NP2kai.git
$ cd NP2kai
$ sudo apt install git cmake ninja-build build-essential libx11-dev libglib2.0-dev libgtk2.0-dev libsdl2-dev libsdl2-mixer-dev libsdl2-ttf-dev libsdl1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev libusb-1.0-0-dev libfreetype-dev libfontconfig1-dev libssl-dev
$ mkdir build
$ cd build
$ cmake .. -D BUILD_X=ON -D USE_SDL2=OFF -D BUILD_I286=ON
$ make
$ sudo make install

これで、xnp2kai-sdl1 がビルドされます。
(この方法だと一緒にxnp21kai-sdl1も作成されるようです。)
cmakeのオプションについては、githubのページに詳細が書かれています。
xnp2kai-sdl1   pc9801エミュレータ(CPU i286)
xnp21kai-sdl1  pc9821エミュレータ(CPU i386以上)

Brain実機ビルドには全部で4-5時間かかりますのでご注意を。

xnp2kai-sdl1では、設定ファイルは、以下にあります。
xnp2kai_sdl1 ~/.config/xnp2kai/
xnp21kai_sdl1 ~/.config/xnp21kai/

フォルダがない場合は、一度xnp2kai-sdl1、xnp21kai-sdl1を起動すれば
作成されると思います。
このままだと、画面のフォントが文字化けするのでフォントの用意が必要です。
PC9801から吸い出したFONT.ROMを使ってもいいのですがない場合は、
Brainuxにインストールしたフォントからも生成できます。

cd ~/.config/xnp2kai/
sudo apt install fonts-ipafont
ln -s /usr/share/fonts/opentype/ipafont-gothic/ipag.ttf default.ttf
rm font.tmp

これで、xnp2kai-sdl1を起動すると、最初にNP2用のフォントが生成されます。

なお、設定ファイルは、xnp2kaircになります。

(2026/01/04追記)
試しに、BrainのCPUに最適化したビルドをやってみます。

/home/user/np2/NP2kai/build/CMakeFiles/xnp2kai_sdl1.dir/flags.make

C_FLAGS = -Wno-incompatible-function-pointer-types -Wno-int-conversion -O2 -g -DNDEBUG

C_FLAGS = -Wno-incompatible-function-pointer-types -Wno-int-conversion -O3 -march=native -DNDEBUG

CXX_FLAGS = -Og -g -Wall -DNDEBUG

CXX_FLAGS = -O3 -march=native -Wall -DNDEBUG

この後、一度Build状況を初期化してmakeします(xnp2kai-sdl1だけで2.5時間くらい)
cd ~/np2/np2kai/build
make clean
make xnp2kai_sdl1
./xnp2kai-sdl1

結果として、ちょびっとだけCPUクロックが上がりました(0.1-0.5Mhzくらい?)
不具合が起こる可能性もあるので、もう少し触ってみます。

 

———-

px68k X68000エミュレータ

ソース入手先:GitHub – hissorii/px68k: Portable SHARP X68000 Emulator

起動: ./px68k

X68000エミュレータです。

速度はかなり遅いです。
Human68kを起動して、コマンド操作するくらいならかろうじて可能かなといったレベルです。(マウス操作が実装されていないっぽいので注意)
Human68kの起動+ドライバ組み込み完了までで、リセットから20秒弱といったところです。
あとBrainの画面解像度だと縦の解像度がちょっと足りません。

メモリ設定を2MB以上にすれば、Nemesis改デモの実行や、
TDQ1でのタイトル画面までは表示できました。
(NumlockがPX68Kでは、10キーのCLRに割り当たっているので、10キー付きのUSBキーボードか、スクリーンキーボードを使う必要があるかもしれません。)

メニューは、F12キーで開きます。
ここで、リセットや、FD,HDDの設定、FPS設定や、サウンド設定が可能です。
サウンド設定は無効化推奨です。

なお、標準ではメモリ1MBで稼働しますので、メモリ設定を変更するには、
Human68K3.0.2を起動して、switchコマンドで、MEMORYを1024->4096KBに変更できます。設定変更したら「終了」->Yで設定が保存されます。

上記について詳しくは、readme.txtに記載があります。

 

インストール:ソースを入手してインストール
 (ビルド時に最適化オプションを追加しています。)

$ cd
$ mkdir px68k
$ cd px68k
$ git clone https://github.com/hissorii/px68k.git
$ cd px68k
$ sudo apt install git cmake ninja-build build-essential libx11-dev libglib2.0-dev libgtk2.0-dev libsdl2-dev libsdl2-mixer-dev libsdl2-ttf-dev libsdl1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev

$ vi Makefile
CDEBUGFLAGS = -g -O0 -fno-strict-aliasing

CDEBUGFLAGS = -O3 -march=native -fno-strict-aliasing

ifeq ($(shell uname -m),armv6l)
MOPT=
else
MOPT= -m32
endif

ifeq ($(shell uname -m),armv6l)
MOPT=
else
MOPT=
endif

$ make #実機ビルト約40分程度

起動前にX68000のBIOS ROM、フォントファイルを~/.keropi に 保存します。
・iplrom.dat   - X68000 BIOS
・cgrom.dat   - Font file (cgrom.tmpでも可)

biosROMについては、シャープから公開されたものがこちらから入手可能です。
(今回はX68000 EXPERT用のものをiplrom.datにリネームして使いました)
fontfileについては、実機から入手するか、疑似的に作成する必要があります。
(フォントファイルがない場合は PC 上で WinX68k 高速版を実行すると、
cgrom.tmp が生成されますので、それを使ってくださいとのことです。)

起動
$ ./px68k

  

———-

Views: 0

カテゴリー: Brain, Brainux, 電子手帳 パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です