文書の過去の版を表示しています。
X88000
概要
Project X88000において開発・配布されているPC-8801エミュレータ。 ソースコードはPDSとして公開されており自由に改変できる。
Linux対応版とWindows版とがあり、Linux版は音声のサポートがない。
HAL研PCG-8800にPCGおよび音源まで含めて対応している。
高性能な反面、設定可能な項目は少なく、As Isで利用する場合は問題ないが、キーバインドを変更したい、あるいは、イメージファイルの拡張子の対応を増やしたいといったような場合には、ソースに手を入れて再構築する必要がある。
開発が止まって久しいので、Linux版はさておき、Windows版はある程度手を入れないとビルドすらままならない。
改造
ビルド可能にする(Windows版)
Windows版はDirectX7をターゲットに作成されており、Visual Studio 2019 Communityなどではコンパイルすらできない。 とはいえ、いくつかのポイントを修正すればビルド可能であり、現在でも手を入れたバージョンで遊ぶことが可能である。
よくわからないが、Debugフラグで構築したところ、Windows DefencerにTrojan.Script/Wacatac.B!ml
と判定され、駆除された。
Releaseフラグで構築すると特に何も言われないので、誤検出ではないかと思うが、不安な方は使わないほうがいいだろう。
修正箇所
- StdHeader.h:112~117の一連の
typedef
を無効化する。 - コンパイルエラー(
LPDWORD
に変換できない)を起こすuint32_t
宣言の変数をすべてDWORD
宣言に変更する。 - ライブラリ
dinput.lib
およびdinput.dll
はそれぞれdinput8.lib
およびdinput8.dll
に置き換える。
以上を修正するとバイナリを得ることができる。
カーソルキーの機能を変える(Windows版)
X88000はエミュレータとしての完成度が高いものの、キーバインドを含め、設定可能な項目が非常に少ない。 ノートPCで遊ぶ場合など、テンキーがない環境では、カーソルキーにテンキーの2,4,6,8あるいは1,2,3,5などを割り当てて、快適にゲームを楽しみたいのだが、これができない。
なので、キー入力処理に手を入れて、カーソルキーの処理を変更する。 なお、ゲームによって、2,4,6,8または1,2,3,5で上下左右の割り当てになっているので、メニューから切り替えられるようにしておく。
リソース(メニュー)の作成
処理タイプフラグの追加
キー処理はX88Frame
の中で行われているので、フラグを、X88Frame.cpp
およびX88Frame.h
に追加していく。
X88Frame.h
の93行目からフラグの宣言を追加。
91: // keyboard state table 92: static uint8_t m_abtKeyboardState[256]; 93:#if 1 94: // cursor key mapping 95: static uint8_t m_cursorMode; 96:#endif
X88Frame.cpp
の122行目からフラグのインスタンスを定義する。
118:// keyboard state table 119: 120:uint8_t CX88Frame::m_abtKeyboardState[256]; 121: 122:#if 1 123:// cursor keys 124:uint8_t CX88Frame::m_cursorMode = 0; 125:#endif