openMSX

2021/06/14

OpenMSX を ビルドする。

WindowsXP 時代の小型ノートPC libretto U100 に Xubuntu 18.04 と OpenMSX を入れて MSX環境として使用しています。

が、Xubuntu 18.04 の OpenMSX 0.14.0 には バグがあって、ステートセーブができないのです。これは ビルド時のTCLと環境が異なっているのが問題だそうで、ソースからビルドすると解消するとのことです。よって、最新のUbuntuでは解消しているそうです。

が、Xubuntu の 32bit サポートが 18.04 までなので、なんとかこれを使うしか無い、でもステートセーブを使いたい。

そんなわけで、Xubuntu 18.04(32bit版)で OpenMSX をビルドしてみました。

まず、ビルドに必要なパッケージを入れます。

Synaptic を使ってパッケージ build-essential を入れました。

最新のソースからビルドしようと思って git も入れたのですが、後述しますが最新版で問題が発生しました。結局、GITから旧バージョンのソースのtarを取得してビルドしました。

 

OpenMSXは英語のマニュアルが充実しており、コンパイル方法についても openMSX Compilation Guide  に詳しく記載されています。

ソースは GitHubのリリースページ  にあります。

最初は、openMSX Compilation Guide に記載されている、Git Clone を作る方法で行いました

 

ソースを持ってきて「4.1 Compilation」の記載どおりに

$ ./configure

とすると、依存関係のチェックをやってくれます。ここで no と出力されたライブラリを入れます。

マニュアルを見ると解りにくいのですが、ビルドをするので、devパッケージが必要です。

私の環境だと、

libasound2-dev
zlib1g-dev
libglew-dev
libogg-dev
libpng-dev
libtheora-dev
libvorbis-div
libsdl2-ttf-dev
tcl-dev

を入れる必要がありました。

しかし、この状態でも SDL_ttf が no になります。パッケージは入っているのになあ。

問題がある場合は derived/x86-linux-i686/config/probe.log を見るようにと出ているのでこのログを見てみると、SDL_ttf がインクルードできていないようです。

ネットで調べると、SDL_ttf のヘッダーファイルは /usr/include/SDL2/ 配下にあるにもかかわらず、パスは /usr/include/ を見ているからだそうです。

仕方が無いので、/usr/include/SDL2/ にあるヘッダーファイルのリンクを /usr/include/ に作成しました。

$ cd /usr/include

$ sudo ln -s ./SDL2/SDL*.h ./

$ sudo ln -s ./SDL2/begin_code/h ./

$ sudo ln -s ./SDL2/close_code/h ./

ようやく、

$ ./configure

で全て yes になりました!これで make できるはず!

$ make

で make すると、今度は

#include <charconv>

include できずにエラーになりました。

configure 通ったのになんでじゃあ!?

と思って調べてみると、charconv  は gcc Version 8 から使えるらしい。

Version 7でコンパイルできないことがバグ報告されており、マニュアルに記載しました!と回答されていたので確認したら、確かに

The GNU C++ compiler. Version 8 or later is required to build openMSX.

と記載されていました。

$ gcc --version

とすると、7.5.0 って出てきました。

だめじゃん・・・。

 

Xubuntu 18.04 の OpenMSX は 0.14.0 なので、GitHubのリリースページ から最新版ではなく、0.14.0 のソースを持ってきて

$ ./configure

とすると、今度は、SDL、SDL_ttf のリンクでエラーになりました。ライブラリの問題なんだろうか???

今度は 0.15.0 のソースを持ってきましたが、結果は 0.14.0 と同様。

最後の頼みの 16.0(このバージョンから先頭の0が無くなる)を持ってきた所、

$ ./configure

が通りました!

$ make

とすると、コンパイルが始まりました!どうやらうまくいったようです。ふ~。助かった。依存関係ってむっちゃ怖いなあ。

超非力マシンなんで、2時間ぐらいかけてコンパイルが完了。長い!って思うけど、その裏にはそれだけ分のコードを書いた人がいるってことだよね。

$ sudo make install

とすると、 /opt/openMSX にインストールされました。

 

さて、動作確認です。

Xubuntu 18.04 で普通にインストールできる openMSX Catapult を起動して、設定で /opt/openMSX/bin/openmsx を選択した所、エラーが!

どうやら、0.14.0用のカタパルトで16.0を動かしたからっぽいです。

がーん、カタパルトもコンパイルする必要があるのか!

 

とりあえず、ターミナルから openmsx を単体で動かして(C-BIOSで起動しますが)、ステートセーブができることは確認できました。いちおう目的は達成できそうだ。

さて、カタパルトもコンパイルしなくては・・・。

カタパルトについてもマニュアルがちゃんとあって、コンパイルは Catapult Compilation Guide  に記載されています。

カタパルトは http://openmsx.org/ から 17.0 のものを持ってきました。

カタパルトは新しいものからは古いopenMSXを起動できるのは経験上知っているので、問題無いだろうと。

不足しているパッケージ

libwxgtk3.0-dev

ibxml2-dev

を Synaptic でインストールし、config・・ っていきなり make でいいのか!?

$ make

すると、無事コンパイルされました。こちらは簡単でした。

$ sudo make install

とすると、/opt/openMSX-Catapult にインストールされます。

ターミナルから /opt/openMSX-Catapult/bin/catapult を起動すると、カタパルトが起動します。

カタパルトの setting → Edit Configuration で、/opt/openMSX/bin/openmsx を選択すると 起動しました! ステートセーブもきちんとできます!

これで libretto U100 は MSXエミュマシンとして活躍できます!

うまく動いたのを確認した所で、さきほどやむなく作った余計なリンクを削除します。

$ cd /usr/include

$ sudo rm ./SDL*.h

$ sudo rm ./begin_code/h

$ sudo rm ./close_code/h

これで完璧。

 

| | コメント (0)

2018/03/21

openMSX でテープの読み込み速度を早くする

openMSX の設定関連でもう一つ。

openMSXは、テープイメージの読み込みにも対応していて、テープのソフトも動かせます。
ただし、テープの読み込みまで実機を再現しているため、むっちゃ遅い。
それでも読み込み時の音を聞くと倍速の2400ボーでやっているっぽいけど。

これもマニュアルに早く読み込むための設定が載っています。
openMSX Console Command Reference の fullspeedwhenloading です。

openMSX起動中にF10キーを押してコンソールを開き、
set fullspeedwhenloading on
とすれば一瞬で読み込むようになります。

set fullspeedwhenloading off
で元に戻せます。

これで、TAPE版 RELICS クリアも夢ではない!

| | コメント (0) | トラックバック (0)

openMSX でジョイスティックの割り当てを変更する

MSXエミュレーターのopenMSXは、バージョンが上がるごとにどんどん機能が強化されて、かつて最強MSXエミュレーターと言われていたblueMSXを凌駕する機能になっております。

しかしながら、日本語のマニュアルが無くて設定方法が難しい所が玉に瑕。
いろいろな設定ができるにもかかわらず、設定するにはコンソールを開いてコマンドを入力する必要があります。
openMSXカタパルトの機能がもっと充実して、いろんな設定をGUIでできるようになればいいのになあ・・・。

で、一般的なエミュレータには普通あるのにopenMSXカタパルトにはない設定が、ジョイスティックのボタン割り当て設定。
この辺に関する日本語の説明って、どこにも無いんだよなあ。
ま、PCにゲームパッドを差せば認識して遊べるから大丈夫なんだけど。
openMSXカタパルト の「Misc Controls」でジョイスティックポートに何を接続するか選択できるので、そこにjoystick1を選択すれば、ゲームパッドが使えます。

でも、最近のゲームパッドってアナログスティックが付いており、それがジョイスティックの上下左右に割当たってしまいます。
この割り当てを十字ボタンに変えたいのだけれど、openMSXカタパルトでは設定できない、という具合です。


設定の仕方は、 openMSX Console Command ReferenceSettings の joystick_configにコマンドが載っています。
ちなみに、コマンドを入力するコンソールは、openMSX起動中に F10キー で開きます。

set joystick1_config
と入力すると、現在の設定が表示されます。
デフォルトは、
LEFT -axis0 RIGHT +axis0 UP -axis1 DOWN +axis1 A {button0 button2} B {button1 button3}
となっています。

これに、
dict set joystick1_config LEFT L_hat0
とすれば、左入力に十字ボタンの左が割当たりますが、元の設定を上書きするので、
マニュアルに記載されている通りに
dict lappend joystick1_config LEFT L_hat0
dict lappend joystick1_config RIGHT R_hat0
dict lappend joystick1_config UP U_hat0
dict lappend joystick1_config DOWN D_hat0
とすると、既存の設定に追加してくれます。アナログスティック、十字キー、どちらも使用可能、という状態になります。

この設定は、設定ファイルに保存できます。(デフォルトでは、openMSX終了時に保存する設定になっている。)

| | コメント (0) | トラックバック (0)