箱エミュ弄り

 さて、もう月末ですか。
 今年はあんまり暑くなかったりまた暑くなったりと調子狂いますね。

 そろそろドリクラエミュネタをまとめていこうとは思いますが、
 実際の所、やるにもテンションが必要な話題ですからね。
 いやぶっちゃけ、「何をやってるんだこいつは」感は物凄くある訳ですよ。やっている本人でさえ(苦笑)。

 ただでさえ10年以上も前のゲーム&3Dポリゴン相手に、ただでさえ解りにくいアセンブラコードを、更にエミュレートでしっちゃかめっちゃかになっている難読コードを相手に不毛な睨めっこに明け暮れて。凄いとか凄くないとかじゃなくて何故そんな得にもならないものに労力をつぎ込むのかと。
sonnakotoha.jpg
 正直、他の人がやっているようにモデルデータを引っこ抜いてMMDにでも掛ければ好きなことが出来るじゃない、と言ってしまえばそれまでなんですが。ただそこは何と言うかやっぱり「10年以上前の技術レベルのデータ」でしかないと申しますか(苦笑)。(当時としては出色の出来だとは思いますが。それでもやっぱり、最近だとウマ娘のポリゴンとかスゲーなって思うし)

 自分はどちらかというと、本編で出来なかったことを補ってみたいだけと言うか。
 「あまりにも出来が足りてない所為で歯痒さに悶えるソフト」とは過去記事からのコピペですが、色々足りないからこそ「一度やってみたかった」という。
 今日日のプログラムなんてのはどう書くかどう作るかの問題が大きいので、もうちょっと手を掛ければ出来ただろうにと思うことがしばしば。そういう出来る筈の事はやってみたくなる病が、目の前にやる手段(エミュ+CheatEngine)があればやってみたくもなるという話。(まぁオリジナルコードに触れられたらどんなに良いことかと思う日々ではありますけどね、、。あるいはせめて普通のexeで。)

 CheatEngine改造はアセンブラコード(+luaスクリプト呼び出し)の埋め込み・差し替えなので、理屈で言えば実機で出来る事は何でも出来る。あくまで理屈では。
 そうは言っても幾重ものスレッドとフローが噛み合う中で処理を書き換えるには、流石に作業上の限界点というのは出てくるので。基本的には処理しているデータを差し替えるとかそんなくらいが無難なところ。
 例えばキャラ別カラー衣装の処理でキャラコード読み込み部分を読み替えて任意カラーにするとか、カメラの傾きも一見オリジナルにない処理ではあるけれど、(0,1,0)固定のベクトルで処理されているところを書き換えているだけと言えばそう(視線ベクトルに対しての回転計算くらいはしていますが)
 もっとも言葉にすると簡単だけどねという感じで、作業時はひたすら該当データと該当コード探しに明け暮れる訳で、この不毛ぶりが本当に半端ない。物凄い「時間の浪費」感。

 まぁでもそこは何と言うか、ゲームをやったりアニメや洋ドラを見たりあるいはダラダラとネット掲示板を眺めて過ごしてしまう時間と何も変わらないか、などと考えてしまうと「まぁいいか」と。

 ただ困ったところとしては、それこそ狙った通りに上手く行けばテンションも上がるのだけれど、ちょっと上手く行きそうにないと諦めて手を置いた時の徒労感、虚無感は物凄い。
 何をやるにしてもまずは解析して実態を掴まないと始まらないので、どう処理されているか、(無難に)手を加えられそうか、散々調べた挙げ句に「これは厳しいな」となってしまうことはどうしてもある。
 それこそ「クリアが一切保証されていないゲームに挑むようなもの」と言いますかね。

 それで得た結果がこれか、みたいなのは普通に考えればアホだとは思っているのですよ。
sonnakotoha.jpg(二度目)

 まぁエミュ自体がある種の「過去資産の保全」なので。
 +αで自分好みにちょっと(ちょっと?)やらかしてみた、みたいな感じで。

 などと言い訳も済ませたところで、Xbox360エミュのお話。
dcc_emu01.jpg
 もっとも最初に断っておきますと、ここで導入手順をレクチャーするつもりはないし、できるものでもないですということであしからず。
 一応言い訳程度に述べておくと、箱○については肝心のソフトウェアデータが極々簡単に吸い出せるという事情がありまして。別段違法な手順を踏むこともなく、特別な改造キットも一切要らず、ただ外付けHDDにインストールしたデータがFAT32でそのまま読めちゃうのでちょっと個人的に使ってみますね、という感じで。
 まぁグレーゾーンだとは分かっているのであまり大々的に話せる話題でもないんだよねとは思いつつも。

 極簡単に書くと、360エミュレータはXenia
 ソフトデータの抽出までQuickstartにまとまっているFAQも参考に)ので後は頑張りましょう、というところで。

 ことドリクラに関して言えば、
  • アップデートパッチの起動時適用は動作不安定になるので、Xextoolでxexに直接適用して差し替えた方が良い
  • DLCのフォルダ名はアイテム名にする必要がある
    ※「バニー」、「競泳水着」等
  • DLCのフォルダ名が長すぎると読み込みエラーを起こす
    ※「TimeTraveler(ZERO用)」等
    ※info.txtを弄って名称を縮めれば通せる
    ※麻雀は妙な難読化?(バイナリスワップ)が入っているので要一工夫
  • つい最近までZEROのDLCチェックが終わらなくなっていた
    ※多分2021/08/16版辺りで解決
    ※自分はコード改造で処理をスキップさせていた
    ※他にもDLCアクセス周りでxeniaのデグレが発生している時期があったが現在解消済み
  • 2021/05/01版以降のFFmpegライブラリで音声が途切れる不具合有り
    ※他ゲームでも指摘されている
    ※旧版を使うか(配布はしてない)、libavに差し戻してビルドするか
  • 旧版のlibavでもちょっと音声にラグがある
    ※0.5ms程度ずれてる
    ※補正用の秒割り込み処理?があるので切ると割合良くなるけど根本的にはライブラリ側だとは思う
  • テクスチャキャッシュがすぐおかしくなるのでシーン毎に都度キャッシュクリア(F5)の必要あり
    ※設定で何とかならないものかと思っているけど未解決
 動かすにも一苦労あって全くお勧め出来ない状況が続いていたけど、最近の版では大分落ち着いてきた感じ。一つ音声周りの致命傷は残ってますが。

 後はぼちぼちやってみたことをまとめていこうかなと。
 まぁ何度も言うように「そんなことはわかっている」との戦いなのでお手柔らかに、、。