真っ暗でO・TO・GIがプレイできん
XBOXで発売されたフロムゲーの「O・TO・GI 〜御伽〜」「O・TO・GI 〜百鬼討伐絵巻〜」を思い出し、久々にプレイしようと思い、大事にとっておいたソフトを引っ張り出し、xemuで動かしてみようとリッピング。
いざ動かしてみると、タイトル画面やオープニングは問題なかったものの本編に突入すると画面が真っ暗。エフェクト関係は表示されているもののキャラクターや背景のテクスチャが正常に表示されません。
修正方法を調べてみた
ちょっとググってみると、xemuのIssueに上がっていた。
Blackened Texture Issues and Documentation · Issue #365 · xemu-project/xemu · GitHub
答えはこれ。
diff --git a/hw/xbox/nv2a/vsh.c b/hw/xbox/nv2a/vsh.c
index 87318419c9..c3ad53411e 100644
--- a/hw/xbox/nv2a/vsh.c
+++ b/hw/xbox/nv2a/vsh.c
@@ -859,6 +859,7 @@ void vsh_translate(uint16_t version,
* can't multiply by W because it could be meaningless here */
" oPos.w = 1.0;\n"
" }\n"
+ " if (oFog.x != oFog.x) { oFog.x = 1; }\n"
);
}
修正する方法は書かれていたが、2年くらい前の修正なのにまだ取り込まれていない様子。仕方ないので、自分でソースコードを修正し、exeをビルドしてみようそうしよう。
しかし、WindowsにGitやらDockerやらコンパイラを入れて、設定するのは正直めんどい。折角なので、WindowsにUbuntuをインストールして、ちゃちゃっとコンパイルしてみようと思いやってみた。
WindowsにUbuntuをインストール
Windowsの検索メニューなどで「Windows 機能」などと検索し、「Windowsの機能の有効化または無効化」を開き、「Linux用Windowsサブシステム」「仮想マシンプラットフォーム」にチェックを入れて機能を有効化。
x64 マシン用 WSL2 Linux カーネル更新プログラム パッケージをダウンロードしてインストール。
WSLのデフォルトバージョンを2に設定するため、PowerShellから下記コマンドを入力。
> wsl --set-default-version 2
Microsoft Storeから、Ubuntuを検索してインストール。無印のものをインストールしたら、最新版でした。
Ubuntu上でxemuを修正しコンパイル
下記コマンドで、Ubuntuを最新の状態にして、curlをインストール。Dockerをインストールすためのリポジトリを追加し、Dockerをインストールし起動。
# apt update
# apt install curl -y
# echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# apt install docker-ce docker-ce-cli containerd.io docker-compose -y
# service docker start
Windowsの実ドライブは、「/mnt/」以下にドライブ名ごとにマウントされている。例えばDドライブは「/mnt/d/」になる。今回はWindowsのDドライブ直下に「works」というフォルダを作り、その中でxemuをビルドする。
worksフォルダに移動して、xemuのソースをダウンロード。
# cd /mnt/d/works/
# git clone --recurse-submodules https://github.com/xemu-project/xemu.git
Windows側で、worksフォルダにxemuフォルダが出来ていているので、「/hw/xbox/nv2a/vsh.c」の該当箇所に下記の1行を追加。
" if (oFog.x != oFog.x) { oFog.x = 1; }\n"
Ubuntuに戻ってxemuの公式サイトのビルド方法を参考にビルド。
Building from Source | xemu: Original Xbox Emulator
# docker run -u $(id -u):$(id -g) --rm -v $PWD/xemu:/xemu -w /xemu \
-e CCACHE_DIR=/xemu/ccache \
ghcr.io/xemu-project/xemu-win64-toolchain:latest \
./build.sh -p win64-cross
自分の環境だと、コンパイル中や作業中に頻繁にUbuntuがフリーズした。そういう場合は、PoweShellから復活の呪文を唱え、dockerを起動→作業ディレクトリに移動してビルドしなおしを繰り返す。
> wsl.exe --shutdown
# service docker start
# cd /mnt/d/works/
# docker run -u $(id -u):$(id -g) --rm -v $PWD/xemu:/xemu -w /xemu \
-e CCACHE_DIR=/xemu/ccache \
ghcr.io/xemu-project/xemu-win64-toolchain:latest \
./build.sh -p win64-cross
最後まで無事完了すると、「works/xemu/dist/」以下に「xemu.exe」が出来上がる。あとは、xemuをインストールしたものと入れ替えればOK!xemuの起動方法や設定方法はあえて説明しない。無事、「O・TO・GI 〜御伽〜」も「O・TO・GI 〜百鬼討伐絵巻〜」もテクスチャに色が付き、彩りのある世界が現れる。
「O・TO・GI 〜御伽〜」
「O・TO・GI 〜百鬼討伐絵巻〜」
素晴らしい。
コメント失礼します。
同じようにやってみましたが、
最後のxemu.exeというファイルが出力されません。
アドバイスお願いいたします。
どういった状況か推察するしかありませんが、恐らく途中でUbuntuがフリーズしてしまっているのでは無いでしょうか。
復活の呪文を唱え、根気強く何度もビルドしてみるしか無いですかねぇ。
エラーなどが出ている様であれば、どんなエラーか教えていただければ、分かる範囲で答えられるかも知れませんが、私も手探りでたどり着いた方法なので、素直にLinuxやMac上で試してみるのも手かも知れません。