linux版のciv5が7より高いgccでsys-libs/glibcとx11-libs/libxcbをビルドすると起動しないのをなんとかする
なんとかすると言っている様に、修正したわけではなくなんか起動出来る様になるというやつです
というよりこれについてググっても全然ひっかからないし、ただのおま環なのでは?ボブは訝しんだ
なにがあった
linux版 Civ5はsys-libs/glibcとx11-libs/libxcbをsys-devel/gcc-8.2.0-r2でビルドすると動作しなかった - karubabuの日記
これをみて
gcc9でも同じっぽい場所で落ちるのを確認しています
どうした
とりあえずgdbで起動してバックトレースを見る
なんかなんやかんや書かれているけれど、どうやら開幕に流れる動画を再生するところで落ちているみたい
つまり動画を再生しなければなんとかなるのでは?
Civ5App::PlayOpeningMovie()
あたりをNOPで書き潰せば動画を再生せずに次の動作に向ってくれそう
objdump -CDMintel Civ5XP | grep PlayOpening
でPlayOpeningMovie()の場所を探すとそれっぽいものが出てくる
086e0f3a <Civ5App::PlayOpeningMovie()@@Base>: 86e0f41: e8 00 00 00 00 call 86e0f46 <Civ5App::PlayOpeningMovie()@@Base+0xc> 86e0f58: 0f 85 2a 01 00 00 jne 86e1088 <Civ5App::PlayOpeningMovie()@@Base+0x14e> 86e0f65: 0f 85 1d 01 00 00 jne 86e1088 <Civ5App::PlayOpeningMovie()@@Base+0x14e> 86e0f72: 0f 85 10 01 00 00 jne 86e1088 <Civ5App::PlayOpeningMovie()@@Base+0x14e> 86e0f87: 0f 85 fb 00 00 00 jne 86e1088 <Civ5App::PlayOpeningMovie()@@Base+0x14e> 86e0fda: 0f 85 90 00 00 00 jne 86e1070 <Civ5App::PlayOpeningMovie()@@Base+0x136> 86e106e: 74 8b je 86e0ffb <Civ5App::PlayOpeningMovie()@@Base+0xc1> 86e1c41: e8 f4 f2 ff ff call 86e0f3a <Civ5App::PlayOpeningMovie()@@Base>
後はhexcurse
あたりでe8 f4 f2 ff ff
の部分を90 90 90 90 90
に変更する
動く₍₍⁽⁽(ી( ‘ω’ )ʃ)₎₎⁾⁾
おわり
適当にプレイしてみたけれどなんやかんや落ちていないので問題なさそう
ゲームクリア時に動画が再生された気がするので、そのあたりでまた落ちそうな気がしないでもないけれどまあクリアした後なら良いでしょう
gdbの画面はなんだかよしなに色が付いていたので画像にしたけれど、これテキストでもよかったのかもしれない よくわかんないね
grepしてしまうと元のテキストが持っていた色が消えてしまうのがかなしい あれってなんとかならないのかしら
誰か教えてくれー!