openMSX 19.0 用 wxCatapult との違い

szmCt 説明書 | | | 目次/総目次 | 連絡先

主なところは概要に記しましたが、今少しの補足をここで致します。

修正

起動補助

openMSX の半自動検索

openMSX の場所を指定するに当たり、ざっくりとではありますが場所の候補を探せるようになりました。

ポータブル動作対応

現状 Windows 限定かつ openMSX 20.0 時点での暫定仕様に対応という条件ですが、コマンドラインオプション /C<ファイル名.ini>/A (--config <ファイル名.ini>, --adjecent) の併用により、szmCt と openMSX の設定をシステムファイルに依存しない任意の位置に保存できるようになりました。openMSX の設定は szmCt の設定ファイル(.ini) があるフォルダに置くようになります。

この動作は [Feature] Portability: change persistent data and savestates location [sf#224] #248 に記された環境変数 USER_PROFILE および OPENMSX_USER_DATA の指定によるものです。

呼び出し先の開発補助

openMSX をソースコードからビルドして、まだ make install されていない状態の実行ファイルが動かせるように、自動的に share ディレクトリを構成する内部動作を付けました。必要に応じてそのプロセス限定で環境変数 OPENMSX_SYSTEM_DATA も書き換えます。

macOS では make staticbindist でインストーラまでできてしまうため、この機能は未対応です。

操作一般

IPSメニューの表面化

ROM や DISK に対するパッチメニューがあったので戻してみましたが、何か問題が出るかもしれません。

開発環境

openMSX 本体との通信に関して

openMSX catapult 19.0 では二つの目的で wxThread を使っていました。szmCt でも途中までは std::thread に移行しつつこれを継承・改善していました。

ところが wxExecute や wxProcess などを使えば wxWidgets 側がだいたいのことを行ってくれるようで、模倣設定の全検査では高速化した上で記述量を減らしています。

他方、通常起動時における通信ではこの手法は使えませんでした。openMSX 本体からの受信は wxTimer でしか監視する方法がなかったからです。これでは余計な負荷が掛かるか、szmCt の応答が不自然に遅くなるかの二択になってしまいます。そこでこちらは catapult と同じ方法を改良の上で使い続けています。

ただしおそらくすべての Linux で非ASCII文字の環境変数に対して正しく動作しないことがわかりました。このため wxExecute を使う場合でも少々回りくどいことをしています。これはポータブル起動やopenMSX開発フォルダを対象とする場合に意味を持ちます。