krkrsdl2 で Fate は動くか?(1)

 fate_converter を使いましたが、よく考えたら、Fate は吉里吉里を使っているので、linux でこのエンジンがないか調べてみましたた。

https://github.com/uyjulian/krkrsdl2
https://github.com/krkrz/krkr2

が見つかりました。

github から clone

 取り合えす、krkrsdl2 を clone します。

$ git clone –recursive https://github.com/uyjulian/krkrsdl2

コンパイル

 ビルドシステムは Meson を使っているといいます。なんだこれ?
調べます。

参考:https://kakurasan.blogspot.com/2018/09/use-meson-buildsystem.html

 なるほど、meson と ninja を使うようです。

$ cd krkrsdl2
$ meson –prefix=/usr/local _build

 sdl2-config がないと怒られました。

$ sudo apt-get install -y libsdl2-dev
$ meson –prefix=/usr/local _build
$ ninja -C _build

 コンパイルができました。

$ sudo ninja -C _build install

 /usr/local/bin/krkrsdl2 にインストールされたファイルを見ると 70MB くらいあります。startup.tjs があるディレクトリで krkrsdl2 コマンドを使えと書いてあります。

 Fate/stay night をインストールしたディレクトリで実行してみました。

$ krkrsdr2
14:54:31 (info) Data path : file://./usr/local/bin/savedata/
14:54:31 Kirikiri SDL2 Executable core /0.0.0.0 (Compiled on Jan 8 2021 09:52:52) TJS2/2.4.28 Copyright (C) 1997-2013 W.Dee and contributors All rights reserved.
14:54:31 The details of version information can be perused if -about is attached and started.
14:54:31 —– CxImage Copyright START —–
CxImage version 7.0.2 07/Feb/2011
CxImage : Copyright (C) 2001 – 2011, Davide Pizzolato
Original CImage and CImageIterator implementation are:
Copyright (C) 1995, Alejandro Aguilar Sierra (asierra(at)servidor(dot)unam(dot)mx)
—– CxImage Copyright END —–

14:54:31 Program started on Linux (Linux)
14:54:31 (info) Rebuilding Auto Path Table …
14:54:31 (info) Total 0 file(s) found, 0 file(s) activated. (0ms)
14:54:31 (info) Total physical memory : 8446744072976596992
14:54:31 (info) Selected project directory : file://./home/pi/documents/吉里吉里/fate/
14:54:31 (info) Specified option(s) (earlier item has more priority) : (none)
14:54:31 (info) Loading startup script : startup.tjs
14:54:31 (info) Rebuilding Auto Path Table …
14:54:31 (info) Total 0 file(s) found, 0 file(s) activated. (0ms)
14:54:31 (info) Data path does not exist, trying to make it … failed.
14:54:31 Script exception raised
Cannot find storage startup.tjs

 まあ当然、startup.tjs がないと怒られました。startup.tjs がありそうな data.xp3 を指定してみます。

$ krkrsdr2 data.xp3
14:56:27 (info) Data path : file://./usr/local/bin/savedata/
14:56:27 Kirikiri SDL2 Executable core /0.0.0.0 (Compiled on Jan 8 2021 09:52:52) TJS2/2.4.28 Copyright (C) 1997-2013 W.Dee and contributors All rights reserved.
14:56:27 The details of version information can be perused if -about is attached and started.
14:56:27 —– CxImage Copyright START —–
CxImage version 7.0.2 07/Feb/2011
CxImage : Copyright (C) 2001 – 2011, Davide Pizzolato
Original CImage and CImageIterator implementation are:
Copyright (C) 1995, Alejandro Aguilar Sierra (asierra(at)servidor(dot)unam(dot)mx)
—– CxImage Copyright END —–

14:56:27 Program started on Linux (Linux)
14:56:27 (info) Rebuilding Auto Path Table …
14:56:27 (info) Total 0 file(s) found, 0 file(s) activated. (0ms)
14:56:27 (info) Total physical memory : 8446744072976596992
14:56:27 (info) Selected project directory : file://./home/pi/documents/吉里吉里/fate/data.xp3>
14:56:27 (info) Specified option(s) (earlier item has more priority) : (none)
14:56:27 (info) Loading startup script : startup.tjs
14:56:27 (info) Trying to read XP3 virtual file system information from : file://./home/pi/documents/吉里吉里/fate/data.xp3
14:56:27 (info) Done. (contains 982 file(s), 982 segment(s))
14:56:27 (info) Data path does not exist, trying to make it … failed.
14:56:27 Script exception raised
Cannot convert given narrow string to wide string

 最後のメッセージを web で調べてみると BOM がどうのこうのと出てきます。startup.tjs は見つけたけど読もうとして失敗しているのかな?これ動くのかな。ちょっとだけ挑戦してみます。

 上記メッセージでソースを検索すると、src/core/msg/sdl2/MsgLoad.cpp の TJSNarrowToWideConversionError.AssignMessage の引数になっていました。

 更にソースを TJSNarrowToWideConversionError で検索します。見つかりません。 src ディレクトリ内ではありませんでした。external/krkrz/tjs2/tjsVariantString.cpp に見つかりました。

 TJSThrowNarrowToWideConversionError が使っていました。さらに検索します。

 TJSThrowNarrowToWideConversionError はexternal/krkrz/tjs2/tjsVariantString.h に見つかりました。TJS_narrowtowidelen が 文字列長として -1 を返すとこのエラーになるようです。

 TJS_narrowtowidelen を探します。external/krkrz/tjs2/tjsConfig.h が TJS_mbstowcs に再定義していました。

 TJS_mbstowcs を探します。external/krkrz/tjs2/tjsConfig.cpp に見つかりました。SJISToUnicodeString の戻り値を返しています。

 このあたりでプリントしてみましたが、プリントしてもよくわからなかったので、external/krkrz/tjs2/tjsVariantString.h でエラーの直前でプリントしました。

 TJS_METHOD_DEF を検索します。メッセージを出しているだろうところをコメントアウトしましたがまだメッセージが出ます。全く違ったところで出ているようです.。

 改めて “Cannot convert given narrow …" を検索しました。external/krkrz/android/app/src/main/res/values/arrays.xml がヒットしました。しかし、これは Android 用だと思われます。

だめかな。

krkrsdr2

Posted by sirius