From 76f0467da255e51bbaa5139c5b55b312702f54af Mon Sep 17 00:00:00 2001 From: lifegpc Date: Sun, 3 May 2026 11:28:41 +0800 Subject: [PATCH] Add PureMoreCrypt (tested game https://vndb.org/v14927 ) --- msg_tool_xp3data/crypt.json | 14 + msg_tool_xp3data/name_list/bracon.lst | 407 ++++++++ msg_tool_xp3data/name_list/keikan.lst | 875 ++++++++++++++++++ src/scripts/kirikiri/archive/xp3/crypt/mod.rs | 89 ++ 4 files changed, 1385 insertions(+) create mode 100644 msg_tool_xp3data/name_list/bracon.lst create mode 100644 msg_tool_xp3data/name_list/keikan.lst diff --git a/msg_tool_xp3data/crypt.json b/msg_tool_xp3data/crypt.json index 297ec5c..3c05aef 100644 --- a/msg_tool_xp3data/crypt.json +++ b/msg_tool_xp3data/crypt.json @@ -257,6 +257,13 @@ "$type": "PoringSoftCrypt", "Title": "ぶらばん! | 管乐恋曲!" }, + "Bracon! Nazusa Onee-chan no Seikatsu Hogo": { + "$type": "PureMoreCrypt", + "FileListName": "bracon.lst", + "CharMap": "k0ィド6ろ3八づえyョげ5dナひもフnレがヌぺjmタズtp1ざゥッ9ヶ二iヵヒあおヮゎ0億すツ7r九けワか7クエlマ3ぱガゾデヘ十ゐわごバちだサギjペてボぴvw千リsメiビや零ゴムtふzカ七cベさじパヱアみりぶずとな8ェラらハuまゅシxぜモnたコ9h五ぼぎgこpブいゑスdくx百ンどセlべぅぷしkfcうaょ25ねキぇへソゆgウき4ロoユミザ6そy2qオrポぽほ8ゼぬに三eゲよんのをャsはヨァつ四vジbピ1hテプネヲノ4ニぁぉヂヅぞwダホめ一万六むゃでヤヰケefヴばュmaoチぐびせuォqるれグzトぢっbルぃイ", + "LayerNameSuffix": "8F$3Gj%iA&4evI+4_#+Fcm77DOV1#u5m", + "Title": "ブラコン!なずさおねーちゃんの性活保護" + }, "Bukkake! Doshikoring MINUKI Max Acme...": { "$type": "AkabeiCrypt", "Seed": 3854429322, @@ -1121,6 +1128,13 @@ "$type": "HashCrypt", "Title": "家族調教" }, + "Keiyaku Kanojo": { + "$type": "PureMoreCrypt", + "FileListName": "keikan.lst", + "CharMap": "0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyzぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ零一二三四五六七八九十百千万億", + "LayerNameSuffix": "fkk#LEb7RwOEjWJecq/L3p*TDC1.PPP", + "Title": "契約彼女~新米彼女と始める、とってもHでPureな恋愛レッスン~" + }, "Kemono Musume no Sodatekata": { "$type": "CxEncryption", "Mask": 518, diff --git a/msg_tool_xp3data/name_list/bracon.lst b/msg_tool_xp3data/name_list/bracon.lst new file mode 100644 index 0000000..4f6a9b3 --- /dev/null +++ b/msg_tool_xp3data/name_list/bracon.lst @@ -0,0 +1,407 @@ +event_ev001.tjs +event_ev002a.tjs +event_ev002b.tjs +event_ev004.tjs +event_ev005.tjs +event_ev006.tjs +event_ev007.tjs +event_ev008.tjs +event_ev009.tjs +event_ev010.tjs +event_ev011.tjs +event_ev012.tjs +event_ev013.tjs +event_ev105.tjs +event_ev014a.tjs +event_ev014b.tjs +event_ev014c.tjs +event_ev014d.tjs +event_ev014e.tjs +event_ev101.tjs +fg_nazusa_0_0.tjs +fg_nazusa_0_0_0.tlg, +fg_nazusa_0_0_1.tlg, +fg_nazusa_0_0_2.tlg, +fg_nazusa_0_0_3.tlg, +fg_nazusa_0_0_4.tlg, +fg_nazusa_0_0_5.tlg, +fg_nazusa_0_0_6.tlg, +fg_nazusa_0_0_7.tlg, +fg_nazusa_0_0_8.tlg, +fg_nazusa_0_0_9.tlg, +fg_nazusa_0_0_10.tlg, +fg_nazusa_0_0_11.tlg, +fg_nazusa_0_0_12.tlg, +fg_nazusa_0_0_13.tlg, +fg_nazusa_0_0_14.tlg, +fg_nazusa_0_0_15.tlg, +fg_nazusa_0_0_16.tlg, +fg_nazusa_0_0_17.tlg, +fg_nazusa_0_0_18.tlg, +fg_nazusa_0_0_19.tlg, +fg_nazusa_0_0_20.tlg, +fg_nazusa_0_0_21.tlg, +fg_nazusa_0_0_22.tlg, +fg_nazusa_0_0_23.tlg, +fg_nazusa_0_0_24.tlg, +fg_nazusa_0_0_25.tlg, +fg_nazusa_0_0_26.tlg, +fg_nazusa_0_0_27.tlg, +fg_nazusa_0_0_28.tlg, +fg_nazusa_0_0_29.tlg, +fg_nazusa_0_0_30.tlg, +fg_nazusa_0_0_31.tlg, +fg_nazusa_0_0_32.tlg, +fg_nazusa_0_0_33.tlg, +fg_nazusa_0_0_34.tlg, +fg_nazusa_0_0_35.tlg, +fg_nazusa_0_0_36.tlg, +fg_nazusa_0_0_37.tlg, +fg_nazusa_0_0_38.tlg, +fg_nazusa_0_0_39.tlg, +fg_nazusa_0_0_40.tlg, +fg_nazusa_0_0_41.tlg, +fg_nazusa_0_1.tjs +fg_nazusa_0_1_0.tlg, +fg_nazusa_0_1_1.tlg, +fg_nazusa_0_1_2.tlg, +fg_nazusa_0_1_3.tlg, +fg_nazusa_0_1_4.tlg, +fg_nazusa_0_1_5.tlg, +fg_nazusa_0_1_6.tlg, +fg_nazusa_0_1_7.tlg, +fg_nazusa_0_1_8.tlg, +fg_nazusa_0_1_9.tlg, +fg_nazusa_0_1_10.tlg, +fg_nazusa_0_1_11.tlg, +fg_nazusa_0_1_12.tlg, +fg_nazusa_0_1_13.tlg, +fg_nazusa_0_1_14.tlg, +fg_nazusa_0_1_15.tlg, +fg_nazusa_0_1_16.tlg, +fg_nazusa_0_1_17.tlg, +fg_nazusa_0_1_18.tlg, +fg_nazusa_0_1_19.tlg, +fg_nazusa_0_1_20.tlg, +fg_nazusa_0_1_21.tlg, +fg_nazusa_0_1_22.tlg, +fg_nazusa_0_1_23.tlg, +fg_nazusa_0_1_24.tlg, +fg_nazusa_0_1_25.tlg, +fg_nazusa_0_1_26.tlg, +fg_nazusa_0_1_27.tlg, +fg_nazusa_0_1_28.tlg, +fg_nazusa_0_1_29.tlg, +fg_nazusa_0_1_30.tlg, +fg_nazusa_0_1_31.tlg, +fg_nazusa_0_1_32.tlg, +fg_nazusa_0_1_33.tlg, +fg_nazusa_0_1_34.tlg, +fg_nazusa_0_1_35.tlg, +fg_nazusa_0_1_36.tlg, +fg_nazusa_0_1_37.tlg, +fg_nazusa_0_1_38.tlg, +fg_nazusa_0_1_39.tlg, +fg_nazusa_0_1_40.tlg, +fg_nazusa_0_1_41.tlg, +fg_nazusa_0_2.tjs +fg_nazusa_0_2_0.tlg, +fg_nazusa_0_2_1.tlg, +fg_nazusa_0_2_2.tlg, +fg_nazusa_0_2_3.tlg, +fg_nazusa_0_2_4.tlg, +fg_nazusa_0_2_5.tlg, +fg_nazusa_0_2_6.tlg, +fg_nazusa_0_2_7.tlg, +fg_nazusa_0_2_8.tlg, +fg_nazusa_0_2_9.tlg, +fg_nazusa_0_2_10.tlg, +fg_nazusa_0_2_11.tlg, +fg_nazusa_0_2_12.tlg, +fg_nazusa_0_2_13.tlg, +fg_nazusa_0_2_14.tlg, +fg_nazusa_0_2_15.tlg, +fg_nazusa_0_2_16.tlg, +fg_nazusa_0_2_17.tlg, +fg_nazusa_0_2_18.tlg, +fg_nazusa_0_2_19.tlg, +fg_nazusa_0_2_20.tlg, +fg_nazusa_0_2_21.tlg, +fg_nazusa_0_2_22.tlg, +fg_nazusa_0_2_23.tlg, +fg_nazusa_0_2_24.tlg, +fg_nazusa_0_2_25.tlg, +fg_nazusa_0_2_26.tlg, +fg_nazusa_0_2_27.tlg, +fg_nazusa_0_2_28.tlg, +fg_nazusa_0_2_29.tlg, +fg_nazusa_0_2_30.tlg, +fg_nazusa_0_2_31.tlg, +fg_nazusa_0_2_32.tlg, +fg_nazusa_0_2_33.tlg, +fg_nazusa_0_2_34.tlg, +fg_nazusa_0_2_35.tlg, +fg_nazusa_0_2_36.tlg, +fg_nazusa_0_2_37.tlg, +fg_nazusa_0_2_38.tlg, +fg_nazusa_0_2_39.tlg, +fg_nazusa_0_2_40.tlg, +fg_nazusa_0_2_41.tlg, +fg_nazusa_0_3.tjs +fg_nazusa_0_3_0.tlg, +fg_nazusa_0_3_1.tlg, +fg_nazusa_0_3_2.tlg, +fg_nazusa_0_3_3.tlg, +fg_nazusa_0_3_4.tlg, +fg_nazusa_0_3_5.tlg, +fg_nazusa_0_3_6.tlg, +fg_nazusa_0_3_7.tlg, +fg_nazusa_0_3_8.tlg, +fg_nazusa_0_3_9.tlg, +fg_nazusa_0_3_10.tlg, +fg_nazusa_0_3_11.tlg, +fg_nazusa_0_3_12.tlg, +fg_nazusa_0_3_13.tlg, +fg_nazusa_0_3_14.tlg, +fg_nazusa_0_3_15.tlg, +fg_nazusa_0_3_16.tlg, +fg_nazusa_0_3_17.tlg, +fg_nazusa_0_3_18.tlg, +fg_nazusa_0_3_19.tlg, +fg_nazusa_0_3_20.tlg, +fg_nazusa_0_3_21.tlg, +fg_nazusa_0_3_22.tlg, +fg_nazusa_0_3_23.tlg, +fg_nazusa_0_3_24.tlg, +fg_nazusa_0_3_25.tlg, +fg_nazusa_0_3_26.tlg, +fg_nazusa_0_3_27.tlg, +fg_nazusa_0_3_28.tlg, +fg_nazusa_0_3_29.tlg, +fg_nazusa_0_3_30.tlg, +fg_nazusa_0_3_31.tlg, +fg_nazusa_0_3_32.tlg, +fg_nazusa_0_3_33.tlg, +fg_nazusa_0_3_34.tlg, +fg_nazusa_0_3_35.tlg, +fg_nazusa_0_3_36.tlg, +fg_nazusa_0_3_37.tlg, +fg_nazusa_0_3_38.tlg, +fg_nazusa_0_3_39.tlg, +fg_nazusa_0_3_40.tlg, +fg_nazusa_0_3_41.tlg, +fg_nazusa_0_4.tjs +fg_nazusa_0_4_0.tlg, +fg_nazusa_0_4_1.tlg, +fg_nazusa_0_4_2.tlg, +fg_nazusa_0_4_3.tlg, +fg_nazusa_0_4_4.tlg, +fg_nazusa_0_4_5.tlg, +fg_nazusa_0_4_6.tlg, +fg_nazusa_0_4_7.tlg, +fg_nazusa_0_4_8.tlg, +fg_nazusa_0_4_9.tlg, +fg_nazusa_0_4_10.tlg, +fg_nazusa_0_4_11.tlg, +fg_nazusa_0_4_12.tlg, +fg_nazusa_0_4_13.tlg, +fg_nazusa_0_4_14.tlg, +fg_nazusa_0_4_15.tlg, +fg_nazusa_0_4_16.tlg, +fg_nazusa_0_4_17.tlg, +fg_nazusa_0_4_18.tlg, +fg_nazusa_0_4_19.tlg, +fg_nazusa_0_4_20.tlg, +fg_nazusa_0_4_21.tlg, +fg_nazusa_0_4_22.tlg, +fg_nazusa_0_4_23.tlg, +fg_nazusa_0_4_24.tlg, +fg_nazusa_0_4_25.tlg, +fg_nazusa_0_4_26.tlg, +fg_nazusa_0_4_27.tlg, +fg_nazusa_0_4_28.tlg, +fg_nazusa_0_4_29.tlg, +fg_nazusa_0_4_30.tlg, +fg_nazusa_0_4_31.tlg, +fg_nazusa_0_4_32.tlg, +fg_nazusa_0_4_33.tlg, +fg_nazusa_0_4_34.tlg, +fg_nazusa_0_4_35.tlg, +fg_nazusa_0_4_36.tlg, +fg_nazusa_0_4_37.tlg, +fg_nazusa_0_4_38.tlg, +fg_nazusa_0_4_39.tlg, +fg_nazusa_0_4_40.tlg, +fg_nazusa_0_4_41.tlg, +fg_nazusa_0_5.tjs +fg_nazusa_0_5_0.tlg, +fg_nazusa_0_5_1.tlg, +fg_nazusa_0_5_2.tlg, +fg_nazusa_0_5_3.tlg, +fg_nazusa_0_5_4.tlg, +fg_nazusa_0_5_5.tlg, +fg_nazusa_0_5_6.tlg, +fg_nazusa_0_5_7.tlg, +fg_nazusa_0_5_8.tlg, +fg_nazusa_0_5_9.tlg, +fg_nazusa_0_5_10.tlg, +fg_nazusa_0_5_11.tlg, +fg_nazusa_0_5_12.tlg, +fg_nazusa_0_5_13.tlg, +fg_nazusa_0_5_14.tlg, +fg_nazusa_0_5_15.tlg, +fg_nazusa_0_5_16.tlg, +fg_nazusa_0_5_17.tlg, +fg_nazusa_0_5_18.tlg, +fg_nazusa_0_5_19.tlg, +fg_nazusa_0_5_20.tlg, +fg_nazusa_0_5_21.tlg, +fg_nazusa_0_5_22.tlg, +fg_nazusa_0_5_23.tlg, +fg_nazusa_0_5_24.tlg, +fg_nazusa_0_5_25.tlg, +fg_nazusa_0_5_26.tlg, +fg_nazusa_0_5_27.tlg, +fg_nazusa_0_5_28.tlg, +fg_nazusa_0_5_29.tlg, +fg_nazusa_0_5_30.tlg, +fg_nazusa_0_5_31.tlg, +fg_nazusa_0_5_32.tlg, +fg_nazusa_0_5_33.tlg, +fg_nazusa_0_5_34.tlg, +fg_nazusa_0_5_35.tlg, +fg_nazusa_0_5_36.tlg, +fg_nazusa_0_5_37.tlg, +fg_nazusa_0_5_38.tlg, +fg_nazusa_0_5_39.tlg, +fg_nazusa_0_5_40.tlg, +fg_nazusa_0_5_41.tlg, +fg_nazusa_0_6.tjs +fg_nazusa_0_6_0.tlg, +fg_nazusa_0_6_1.tlg, +fg_nazusa_0_6_2.tlg, +fg_nazusa_0_6_3.tlg, +fg_nazusa_0_6_4.tlg, +fg_nazusa_0_6_5.tlg, +fg_nazusa_0_6_6.tlg, +fg_nazusa_0_6_7.tlg, +fg_nazusa_0_6_8.tlg, +fg_nazusa_0_6_9.tlg, +fg_nazusa_0_6_10.tlg, +fg_nazusa_0_6_11.tlg, +fg_nazusa_0_6_12.tlg, +fg_nazusa_0_6_13.tlg, +fg_nazusa_0_6_14.tlg, +fg_nazusa_0_6_15.tlg, +fg_nazusa_0_6_16.tlg, +fg_nazusa_0_6_17.tlg, +fg_nazusa_0_6_18.tlg, +fg_nazusa_0_6_19.tlg, +fg_nazusa_0_6_20.tlg, +fg_nazusa_0_6_21.tlg, +fg_nazusa_0_6_22.tlg, +fg_nazusa_0_6_23.tlg, +fg_nazusa_0_6_24.tlg, +fg_nazusa_0_6_25.tlg, +fg_nazusa_0_6_26.tlg, +fg_nazusa_0_6_27.tlg, +fg_nazusa_0_6_28.tlg, +fg_nazusa_0_6_29.tlg, +fg_nazusa_0_6_30.tlg, +fg_nazusa_0_6_31.tlg, +fg_nazusa_0_6_32.tlg, +fg_nazusa_0_6_33.tlg, +fg_nazusa_0_6_34.tlg, +fg_nazusa_0_6_35.tlg, +fg_nazusa_0_6_36.tlg, +fg_nazusa_0_6_37.tlg, +fg_nazusa_0_6_38.tlg, +fg_nazusa_0_6_39.tlg, +fg_nazusa_0_6_40.tlg, +fg_nazusa_0_6_41.tlg, +fg_nazusa_0_7.tjs +fg_nazusa_0_7_0.tlg, +fg_nazusa_0_7_1.tlg, +fg_nazusa_0_7_2.tlg, +fg_nazusa_0_7_3.tlg, +fg_nazusa_0_7_4.tlg, +fg_nazusa_0_7_5.tlg, +fg_nazusa_0_7_6.tlg, +fg_nazusa_0_7_7.tlg, +fg_nazusa_0_7_8.tlg, +fg_nazusa_0_7_9.tlg, +fg_nazusa_0_7_10.tlg, +fg_nazusa_0_7_11.tlg, +fg_nazusa_0_7_12.tlg, +fg_nazusa_0_7_13.tlg, +fg_nazusa_0_7_14.tlg, +fg_nazusa_0_7_15.tlg, +fg_nazusa_0_7_16.tlg, +fg_nazusa_0_7_17.tlg, +fg_nazusa_0_7_18.tlg, +fg_nazusa_0_7_19.tlg, +fg_nazusa_0_7_20.tlg, +fg_nazusa_0_7_21.tlg, +fg_nazusa_0_7_22.tlg, +fg_nazusa_0_7_23.tlg, +fg_nazusa_0_7_24.tlg, +fg_nazusa_0_7_25.tlg, +fg_nazusa_0_7_26.tlg, +fg_nazusa_0_7_27.tlg, +fg_nazusa_0_7_28.tlg, +fg_nazusa_0_7_29.tlg, +fg_nazusa_0_7_30.tlg, +fg_nazusa_0_7_31.tlg, +fg_nazusa_0_7_32.tlg, +fg_nazusa_0_7_33.tlg, +fg_nazusa_0_7_34.tlg, +fg_nazusa_0_7_35.tlg, +fg_nazusa_0_7_36.tlg, +fg_nazusa_0_7_37.tlg, +fg_nazusa_0_7_38.tlg, +fg_nazusa_0_7_39.tlg, +fg_nazusa_0_7_40.tlg, +fg_nazusa_0_7_41.tlg, +fg_nazusa_0_8.tjs +fg_nazusa_0_8_0.tlg, +fg_nazusa_0_8_1.tlg, +fg_nazusa_0_8_2.tlg, +fg_nazusa_0_8_3.tlg, +fg_nazusa_0_8_4.tlg, +fg_nazusa_0_8_5.tlg, +fg_nazusa_0_8_6.tlg, +fg_nazusa_0_8_7.tlg, +fg_nazusa_0_8_8.tlg, +fg_nazusa_0_8_9.tlg, +fg_nazusa_0_8_10.tlg, +fg_nazusa_0_8_11.tlg, +fg_nazusa_0_8_12.tlg, +fg_nazusa_0_8_13.tlg, +fg_nazusa_0_8_14.tlg, +fg_nazusa_0_8_15.tlg, +fg_nazusa_0_8_16.tlg, +fg_nazusa_0_8_17.tlg, +fg_nazusa_0_8_18.tlg, +fg_nazusa_0_8_19.tlg, +fg_nazusa_0_8_20.tlg, +fg_nazusa_0_8_21.tlg, +fg_nazusa_0_8_22.tlg, +fg_nazusa_0_8_23.tlg, +fg_nazusa_0_8_24.tlg, +fg_nazusa_0_8_25.tlg, +fg_nazusa_0_8_26.tlg, +fg_nazusa_0_8_27.tlg, +fg_nazusa_0_8_28.tlg, +fg_nazusa_0_8_29.tlg, +fg_nazusa_0_8_30.tlg, +fg_nazusa_0_8_31.tlg, +fg_nazusa_0_8_32.tlg, +fg_nazusa_0_8_33.tlg, +fg_nazusa_0_8_34.tlg, +fg_nazusa_0_8_35.tlg, +fg_nazusa_0_8_36.tlg, +fg_nazusa_0_8_37.tlg, +fg_nazusa_0_8_38.tlg, +fg_nazusa_0_8_39.tlg, +fg_nazusa_0_8_40.tlg, +fg_nazusa_0_8_41.tlg, diff --git a/msg_tool_xp3data/name_list/keikan.lst b/msg_tool_xp3data/name_list/keikan.lst new file mode 100644 index 0000000..336f094 --- /dev/null +++ b/msg_tool_xp3data/name_list/keikan.lst @@ -0,0 +1,875 @@ +fg_akai_0_2.tjs +fg_akai_0_2_0.tlg, +fg_akai_0_2_1.tlg, +fg_akai_0_2_2.tlg, +fg_akai_0_2_3.tlg, +fg_akai_0_2_4.tlg, +fg_akai_0_2_5.tlg, +fg_akai_0_2_6.tlg, +fg_akai_0_2_7.tlg, +fg_akai_0_2_8.tlg, +fg_akai_0_2_9.tlg, +fg_akai_0_2_10.tlg, +fg_akai_0_2_11.tlg, +fg_akai_0_2_12.tlg, +fg_akai_0_2_13.tlg, +fg_akai_0_2_14.tlg, +fg_akai_0_2_15.tlg, +fg_akai_0_2_16.tlg, +fg_akai_0_2_17.tlg, +fg_akai_0_2_18.tlg, +fg_akai_0_2_19.tlg, +fg_akai_0_2_20.tlg, +fg_akai_0_2_21.tlg, +fg_akai_0_2_22.tlg, +fg_akai_0_2_23.tlg, +fg_akai_0_2_24.tlg, +fg_akai_0_2_25.tlg, +fg_akai_0_2_26.tlg, +fg_akai_0_2_27.tlg, +fg_akai_0_2_28.tlg, +fg_akai_0_2_29.tlg, +fg_akai_0_2_30.tlg, +fg_akai_0_2_31.tlg, +fg_akai_0_2_32.tlg, +fg_akai_0_2_33.tlg, +fg_akai_0_2_34.tlg, +fg_akai_0_2_35.tlg, +fg_akai_0_2_36.tlg, +fg_akai_0_2_37.tlg, +fg_akai_0_2_38.tlg, +fg_akai_0_4.tjs +fg_akai_0_4_0.tlg, +fg_akai_0_4_1.tlg, +fg_akai_0_4_2.tlg, +fg_akai_0_4_3.tlg, +fg_akai_0_4_4.tlg, +fg_akai_0_4_5.tlg, +fg_akai_0_4_6.tlg, +fg_akai_0_4_7.tlg, +fg_akai_0_4_8.tlg, +fg_akai_0_4_9.tlg, +fg_akai_0_4_10.tlg, +fg_akai_0_4_11.tlg, +fg_akai_0_4_12.tlg, +fg_akai_0_4_13.tlg, +fg_akai_0_4_14.tlg, +fg_akai_0_4_15.tlg, +fg_akai_0_4_16.tlg, +fg_akai_0_4_17.tlg, +fg_akai_0_4_18.tlg, +fg_akai_0_4_19.tlg, +fg_akai_0_4_20.tlg, +fg_akai_0_4_21.tlg, +fg_akai_0_4_22.tlg, +fg_akai_0_4_23.tlg, +fg_akai_0_4_24.tlg, +fg_akai_0_4_25.tlg, +fg_akai_0_4_26.tlg, +fg_akai_0_4_27.tlg, +fg_akai_0_4_28.tlg, +fg_akai_0_4_29.tlg, +fg_akai_0_4_30.tlg, +fg_akai_0_4_31.tlg, +fg_akai_0_4_32.tlg, +fg_akai_0_4_33.tlg, +fg_akai_0_4_34.tlg, +fg_akai_0_4_35.tlg, +fg_akai_0_4_36.tlg, +fg_akai_0_4_37.tlg, +fg_akai_0_4_38.tlg, +fg_akai_0_7.tjs +fg_akai_0_7_0.tlg, +fg_akai_0_7_1.tlg, +fg_akai_0_7_2.tlg, +fg_akai_0_7_3.tlg, +fg_akai_0_7_4.tlg, +fg_akai_0_7_5.tlg, +fg_akai_0_7_6.tlg, +fg_akai_0_7_7.tlg, +fg_akai_0_7_8.tlg, +fg_akai_0_7_9.tlg, +fg_akai_0_7_10.tlg, +fg_akai_0_7_11.tlg, +fg_akai_0_7_12.tlg, +fg_akai_0_7_13.tlg, +fg_akai_0_7_14.tlg, +fg_akai_0_7_15.tlg, +fg_akai_0_7_16.tlg, +fg_akai_0_7_17.tlg, +fg_akai_0_7_18.tlg, +fg_akai_0_7_19.tlg, +fg_akai_0_7_20.tlg, +fg_akai_0_7_21.tlg, +fg_akai_0_7_22.tlg, +fg_akai_0_7_23.tlg, +fg_akai_0_7_24.tlg, +fg_akai_0_7_25.tlg, +fg_akai_0_7_26.tlg, +fg_akai_0_7_27.tlg, +fg_akai_0_7_28.tlg, +fg_akai_0_7_29.tlg, +fg_akai_0_7_30.tlg, +fg_akai_0_7_31.tlg, +fg_akai_0_7_32.tlg, +fg_akai_0_7_33.tlg, +fg_akai_0_7_34.tlg, +fg_akai_0_7_35.tlg, +fg_akai_0_7_36.tlg, +fg_akai_0_7_37.tlg, +fg_akai_0_7_38.tlg, +fg_akai_0_8.tjs +fg_akai_0_8_0.tlg, +fg_akai_0_8_1.tlg, +fg_akai_0_8_2.tlg, +fg_akai_0_8_3.tlg, +fg_akai_0_8_4.tlg, +fg_akai_0_8_5.tlg, +fg_akai_0_8_6.tlg, +fg_akai_0_8_7.tlg, +fg_akai_0_8_8.tlg, +fg_akai_0_8_9.tlg, +fg_akai_0_8_10.tlg, +fg_akai_0_8_11.tlg, +fg_akai_0_8_12.tlg, +fg_akai_0_8_13.tlg, +fg_akai_0_8_14.tlg, +fg_akai_0_8_15.tlg, +fg_akai_0_8_16.tlg, +fg_akai_0_8_17.tlg, +fg_akai_0_8_18.tlg, +fg_akai_0_8_19.tlg, +fg_akai_0_8_20.tlg, +fg_akai_0_8_21.tlg, +fg_akai_0_8_22.tlg, +fg_akai_0_8_23.tlg, +fg_akai_0_8_24.tlg, +fg_akai_0_8_25.tlg, +fg_akai_0_8_26.tlg, +fg_akai_0_8_27.tlg, +fg_akai_0_8_28.tlg, +fg_akai_0_8_29.tlg, +fg_akai_0_8_30.tlg, +fg_akai_0_8_31.tlg, +fg_akai_0_8_32.tlg, +fg_akai_0_8_33.tlg, +fg_akai_0_8_34.tlg, +fg_akai_0_8_35.tlg, +fg_akai_0_8_36.tlg, +fg_akai_0_8_37.tlg, +fg_akai_0_8_38.tlg, +fg_reika_0_2.tjs +fg_reika_0_2_0.tlg, +fg_reika_0_2_1.tlg, +fg_reika_0_2_2.tlg, +fg_reika_0_2_3.tlg, +fg_reika_0_2_4.tlg, +fg_reika_0_2_5.tlg, +fg_reika_0_2_6.tlg, +fg_reika_0_2_7.tlg, +fg_reika_0_2_8.tlg, +fg_reika_0_2_9.tlg, +fg_reika_0_2_10.tlg, +fg_reika_0_2_11.tlg, +fg_reika_0_2_12.tlg, +fg_reika_0_2_13.tlg, +fg_reika_0_2_14.tlg, +fg_reika_0_2_15.tlg, +fg_reika_0_2_16.tlg, +fg_reika_0_2_17.tlg, +fg_reika_0_2_18.tlg, +fg_reika_0_2_19.tlg, +fg_reika_0_2_20.tlg, +fg_reika_0_2_21.tlg, +fg_reika_0_2_22.tlg, +fg_reika_0_2_23.tlg, +fg_reika_0_2_24.tlg, +fg_reika_0_2_25.tlg, +fg_reika_0_2_26.tlg, +fg_reika_0_2_27.tlg, +fg_reika_0_2_28.tlg, +fg_reika_0_2_29.tlg, +fg_reika_0_2_30.tlg, +fg_reika_0_2_31.tlg, +fg_reika_0_2_32.tlg, +fg_reika_0_2_33.tlg, +fg_reika_0_2_34.tlg, +fg_reika_0_2_35.tlg, +fg_reika_0_2_36.tlg, +fg_reika_0_2_37.tlg, +fg_reika_0_2_38.tlg, +fg_reika_0_2_39.tlg, +fg_reika_0_2_40.tlg, +fg_reika_0_2_41.tlg, +fg_reika_0_2_42.tlg, +fg_reika_0_2_43.tlg, +fg_reika_0_2_44.tlg, +fg_reika_0_2_45.tlg, +fg_reika_0_2_46.tlg, +fg_reika_0_2_47.tlg, +fg_reika_0_2_48.tlg, +fg_reika_0_2_49.tlg, +fg_reika_0_2_50.tlg, +fg_reika_0_2_51.tlg, +fg_reika_0_2_52.tlg, +fg_reika_0_2_53.tlg, +fg_reika_0_2_54.tlg, +fg_reika_0_2_55.tlg, +fg_reika_0_2_56.tlg, +fg_reika_0_2_57.tlg, +fg_reika_0_4.tjs +fg_reika_0_4_0.tlg, +fg_reika_0_4_1.tlg, +fg_reika_0_4_2.tlg, +fg_reika_0_4_3.tlg, +fg_reika_0_4_4.tlg, +fg_reika_0_4_5.tlg, +fg_reika_0_4_6.tlg, +fg_reika_0_4_7.tlg, +fg_reika_0_4_8.tlg, +fg_reika_0_4_9.tlg, +fg_reika_0_4_10.tlg, +fg_reika_0_4_11.tlg, +fg_reika_0_4_12.tlg, +fg_reika_0_4_13.tlg, +fg_reika_0_4_14.tlg, +fg_reika_0_4_15.tlg, +fg_reika_0_4_16.tlg, +fg_reika_0_4_17.tlg, +fg_reika_0_4_18.tlg, +fg_reika_0_4_19.tlg, +fg_reika_0_4_20.tlg, +fg_reika_0_4_21.tlg, +fg_reika_0_4_22.tlg, +fg_reika_0_4_23.tlg, +fg_reika_0_4_24.tlg, +fg_reika_0_4_25.tlg, +fg_reika_0_4_26.tlg, +fg_reika_0_4_27.tlg, +fg_reika_0_4_28.tlg, +fg_reika_0_4_29.tlg, +fg_reika_0_4_30.tlg, +fg_reika_0_4_31.tlg, +fg_reika_0_4_32.tlg, +fg_reika_0_4_33.tlg, +fg_reika_0_4_34.tlg, +fg_reika_0_4_35.tlg, +fg_reika_0_4_36.tlg, +fg_reika_0_4_37.tlg, +fg_reika_0_4_38.tlg, +fg_reika_0_4_39.tlg, +fg_reika_0_4_40.tlg, +fg_reika_0_4_41.tlg, +fg_reika_0_4_42.tlg, +fg_reika_0_4_43.tlg, +fg_reika_0_4_44.tlg, +fg_reika_0_4_45.tlg, +fg_reika_0_4_46.tlg, +fg_reika_0_4_47.tlg, +fg_reika_0_4_48.tlg, +fg_reika_0_4_49.tlg, +fg_reika_0_4_50.tlg, +fg_reika_0_4_51.tlg, +fg_reika_0_4_52.tlg, +fg_reika_0_4_53.tlg, +fg_reika_0_4_54.tlg, +fg_reika_0_4_55.tlg, +fg_reika_0_4_56.tlg, +fg_reika_0_4_57.tlg, +fg_reika_0_7.tjs +fg_reika_0_7_0.tlg, +fg_reika_0_7_1.tlg, +fg_reika_0_7_2.tlg, +fg_reika_0_7_3.tlg, +fg_reika_0_7_4.tlg, +fg_reika_0_7_5.tlg, +fg_reika_0_7_6.tlg, +fg_reika_0_7_7.tlg, +fg_reika_0_7_8.tlg, +fg_reika_0_7_9.tlg, +fg_reika_0_7_10.tlg, +fg_reika_0_7_11.tlg, +fg_reika_0_7_12.tlg, +fg_reika_0_7_13.tlg, +fg_reika_0_7_14.tlg, +fg_reika_0_7_15.tlg, +fg_reika_0_7_16.tlg, +fg_reika_0_7_17.tlg, +fg_reika_0_7_18.tlg, +fg_reika_0_7_19.tlg, +fg_reika_0_7_20.tlg, +fg_reika_0_7_21.tlg, +fg_reika_0_7_22.tlg, +fg_reika_0_7_23.tlg, +fg_reika_0_7_24.tlg, +fg_reika_0_7_25.tlg, +fg_reika_0_7_26.tlg, +fg_reika_0_7_27.tlg, +fg_reika_0_7_28.tlg, +fg_reika_0_7_29.tlg, +fg_reika_0_7_30.tlg, +fg_reika_0_7_31.tlg, +fg_reika_0_7_32.tlg, +fg_reika_0_7_33.tlg, +fg_reika_0_7_34.tlg, +fg_reika_0_7_35.tlg, +fg_reika_0_7_36.tlg, +fg_reika_0_7_37.tlg, +fg_reika_0_7_38.tlg, +fg_reika_0_7_39.tlg, +fg_reika_0_7_40.tlg, +fg_reika_0_7_41.tlg, +fg_reika_0_7_42.tlg, +fg_reika_0_7_43.tlg, +fg_reika_0_7_44.tlg, +fg_reika_0_7_45.tlg, +fg_reika_0_7_46.tlg, +fg_reika_0_7_47.tlg, +fg_reika_0_7_48.tlg, +fg_reika_0_7_49.tlg, +fg_reika_0_7_50.tlg, +fg_reika_0_7_51.tlg, +fg_reika_0_7_52.tlg, +fg_reika_0_7_53.tlg, +fg_reika_0_7_54.tlg, +fg_reika_0_7_55.tlg, +fg_reika_0_7_56.tlg, +fg_reika_0_7_57.tlg, +fg_reika_0_8.tjs +fg_reika_0_8_0.tlg, +fg_reika_0_8_1.tlg, +fg_reika_0_8_2.tlg, +fg_reika_0_8_3.tlg, +fg_reika_0_8_4.tlg, +fg_reika_0_8_5.tlg, +fg_reika_0_8_6.tlg, +fg_reika_0_8_7.tlg, +fg_reika_0_8_8.tlg, +fg_reika_0_8_9.tlg, +fg_reika_0_8_10.tlg, +fg_reika_0_8_11.tlg, +fg_reika_0_8_12.tlg, +fg_reika_0_8_13.tlg, +fg_reika_0_8_14.tlg, +fg_reika_0_8_15.tlg, +fg_reika_0_8_16.tlg, +fg_reika_0_8_17.tlg, +fg_reika_0_8_18.tlg, +fg_reika_0_8_19.tlg, +fg_reika_0_8_20.tlg, +fg_reika_0_8_21.tlg, +fg_reika_0_8_22.tlg, +fg_reika_0_8_23.tlg, +fg_reika_0_8_24.tlg, +fg_reika_0_8_25.tlg, +fg_reika_0_8_26.tlg, +fg_reika_0_8_27.tlg, +fg_reika_0_8_28.tlg, +fg_reika_0_8_29.tlg, +fg_reika_0_8_30.tlg, +fg_reika_0_8_31.tlg, +fg_reika_0_8_32.tlg, +fg_reika_0_8_33.tlg, +fg_reika_0_8_34.tlg, +fg_reika_0_8_35.tlg, +fg_reika_0_8_36.tlg, +fg_reika_0_8_37.tlg, +fg_reika_0_8_38.tlg, +fg_reika_0_8_39.tlg, +fg_reika_0_8_40.tlg, +fg_reika_0_8_41.tlg, +fg_reika_0_8_42.tlg, +fg_reika_0_8_43.tlg, +fg_reika_0_8_44.tlg, +fg_reika_0_8_45.tlg, +fg_reika_0_8_46.tlg, +fg_reika_0_8_47.tlg, +fg_reika_0_8_48.tlg, +fg_reika_0_8_49.tlg, +fg_reika_0_8_50.tlg, +fg_reika_0_8_51.tlg, +fg_reika_0_8_52.tlg, +fg_reika_0_8_53.tlg, +fg_reika_0_8_54.tlg, +fg_reika_0_8_55.tlg, +fg_reika_0_8_56.tlg, +fg_reika_0_8_57.tlg, +fg_reika_1_2.tjs +fg_reika_1_2_0.tlg, +fg_reika_1_2_1.tlg, +fg_reika_1_2_2.tlg, +fg_reika_1_2_3.tlg, +fg_reika_1_2_4.tlg, +fg_reika_1_2_5.tlg, +fg_reika_1_2_6.tlg, +fg_reika_1_2_7.tlg, +fg_reika_1_2_8.tlg, +fg_reika_1_2_9.tlg, +fg_reika_1_2_10.tlg, +fg_reika_1_2_11.tlg, +fg_reika_1_2_12.tlg, +fg_reika_1_2_13.tlg, +fg_reika_1_2_14.tlg, +fg_reika_1_2_15.tlg, +fg_reika_1_2_16.tlg, +fg_reika_1_2_17.tlg, +fg_reika_1_2_18.tlg, +fg_reika_1_2_19.tlg, +fg_reika_1_2_20.tlg, +fg_reika_1_2_21.tlg, +fg_reika_1_2_22.tlg, +fg_reika_1_2_23.tlg, +fg_reika_1_2_24.tlg, +fg_reika_1_2_25.tlg, +fg_reika_1_2_26.tlg, +fg_reika_1_2_27.tlg, +fg_reika_1_2_28.tlg, +fg_reika_1_2_29.tlg, +fg_reika_1_2_30.tlg, +fg_reika_1_2_31.tlg, +fg_reika_1_2_32.tlg, +fg_reika_1_2_33.tlg, +fg_reika_1_2_34.tlg, +fg_reika_1_2_35.tlg, +fg_reika_1_2_36.tlg, +fg_reika_1_2_37.tlg, +fg_reika_1_2_38.tlg, +fg_reika_1_2_39.tlg, +fg_reika_1_2_40.tlg, +fg_reika_1_2_41.tlg, +fg_reika_1_2_42.tlg, +fg_reika_1_2_43.tlg, +fg_reika_1_2_44.tlg, +fg_reika_1_2_45.tlg, +fg_reika_1_2_46.tlg, +fg_reika_1_2_47.tlg, +fg_reika_1_2_48.tlg, +fg_reika_1_2_49.tlg, +fg_reika_1_2_50.tlg, +fg_reika_1_2_51.tlg, +fg_reika_1_2_52.tlg, +fg_reika_1_2_53.tlg, +fg_reika_1_2_54.tlg, +fg_reika_1_2_55.tlg, +fg_reika_1_2_56.tlg, +fg_reika_1_4.tjs +fg_reika_1_4_0.tlg, +fg_reika_1_4_1.tlg, +fg_reika_1_4_2.tlg, +fg_reika_1_4_3.tlg, +fg_reika_1_4_4.tlg, +fg_reika_1_4_5.tlg, +fg_reika_1_4_6.tlg, +fg_reika_1_4_7.tlg, +fg_reika_1_4_8.tlg, +fg_reika_1_4_9.tlg, +fg_reika_1_4_10.tlg, +fg_reika_1_4_11.tlg, +fg_reika_1_4_12.tlg, +fg_reika_1_4_13.tlg, +fg_reika_1_4_14.tlg, +fg_reika_1_4_15.tlg, +fg_reika_1_4_16.tlg, +fg_reika_1_4_17.tlg, +fg_reika_1_4_18.tlg, +fg_reika_1_4_19.tlg, +fg_reika_1_4_20.tlg, +fg_reika_1_4_21.tlg, +fg_reika_1_4_22.tlg, +fg_reika_1_4_23.tlg, +fg_reika_1_4_24.tlg, +fg_reika_1_4_25.tlg, +fg_reika_1_4_26.tlg, +fg_reika_1_4_27.tlg, +fg_reika_1_4_28.tlg, +fg_reika_1_4_29.tlg, +fg_reika_1_4_30.tlg, +fg_reika_1_4_31.tlg, +fg_reika_1_4_32.tlg, +fg_reika_1_4_33.tlg, +fg_reika_1_4_34.tlg, +fg_reika_1_4_35.tlg, +fg_reika_1_4_36.tlg, +fg_reika_1_4_37.tlg, +fg_reika_1_4_38.tlg, +fg_reika_1_4_39.tlg, +fg_reika_1_4_40.tlg, +fg_reika_1_4_41.tlg, +fg_reika_1_4_42.tlg, +fg_reika_1_4_43.tlg, +fg_reika_1_4_44.tlg, +fg_reika_1_4_45.tlg, +fg_reika_1_4_46.tlg, +fg_reika_1_4_47.tlg, +fg_reika_1_4_48.tlg, +fg_reika_1_4_49.tlg, +fg_reika_1_4_50.tlg, +fg_reika_1_4_51.tlg, +fg_reika_1_4_52.tlg, +fg_reika_1_4_53.tlg, +fg_reika_1_4_54.tlg, +fg_reika_1_4_55.tlg, +fg_reika_1_4_56.tlg, +fg_reika_1_7.tjs +fg_reika_1_7_0.tlg, +fg_reika_1_7_1.tlg, +fg_reika_1_7_2.tlg, +fg_reika_1_7_3.tlg, +fg_reika_1_7_4.tlg, +fg_reika_1_7_5.tlg, +fg_reika_1_7_6.tlg, +fg_reika_1_7_7.tlg, +fg_reika_1_7_8.tlg, +fg_reika_1_7_9.tlg, +fg_reika_1_7_10.tlg, +fg_reika_1_7_11.tlg, +fg_reika_1_7_12.tlg, +fg_reika_1_7_13.tlg, +fg_reika_1_7_14.tlg, +fg_reika_1_7_15.tlg, +fg_reika_1_7_16.tlg, +fg_reika_1_7_17.tlg, +fg_reika_1_7_18.tlg, +fg_reika_1_7_19.tlg, +fg_reika_1_7_20.tlg, +fg_reika_1_7_21.tlg, +fg_reika_1_7_22.tlg, +fg_reika_1_7_23.tlg, +fg_reika_1_7_24.tlg, +fg_reika_1_7_25.tlg, +fg_reika_1_7_26.tlg, +fg_reika_1_7_27.tlg, +fg_reika_1_7_28.tlg, +fg_reika_1_7_29.tlg, +fg_reika_1_7_30.tlg, +fg_reika_1_7_31.tlg, +fg_reika_1_7_32.tlg, +fg_reika_1_7_33.tlg, +fg_reika_1_7_34.tlg, +fg_reika_1_7_35.tlg, +fg_reika_1_7_36.tlg, +fg_reika_1_7_37.tlg, +fg_reika_1_7_38.tlg, +fg_reika_1_7_39.tlg, +fg_reika_1_7_40.tlg, +fg_reika_1_7_41.tlg, +fg_reika_1_7_42.tlg, +fg_reika_1_7_43.tlg, +fg_reika_1_7_44.tlg, +fg_reika_1_7_45.tlg, +fg_reika_1_7_46.tlg, +fg_reika_1_7_47.tlg, +fg_reika_1_7_48.tlg, +fg_reika_1_7_49.tlg, +fg_reika_1_7_50.tlg, +fg_reika_1_7_51.tlg, +fg_reika_1_7_52.tlg, +fg_reika_1_7_53.tlg, +fg_reika_1_7_54.tlg, +fg_reika_1_7_55.tlg, +fg_reika_1_7_56.tlg, +fg_reika_1_8.tjs +fg_reika_1_8_0.tlg, +fg_reika_1_8_1.tlg, +fg_reika_1_8_2.tlg, +fg_reika_1_8_3.tlg, +fg_reika_1_8_4.tlg, +fg_reika_1_8_5.tlg, +fg_reika_1_8_6.tlg, +fg_reika_1_8_7.tlg, +fg_reika_1_8_8.tlg, +fg_reika_1_8_9.tlg, +fg_reika_1_8_10.tlg, +fg_reika_1_8_11.tlg, +fg_reika_1_8_12.tlg, +fg_reika_1_8_13.tlg, +fg_reika_1_8_14.tlg, +fg_reika_1_8_15.tlg, +fg_reika_1_8_16.tlg, +fg_reika_1_8_17.tlg, +fg_reika_1_8_18.tlg, +fg_reika_1_8_19.tlg, +fg_reika_1_8_20.tlg, +fg_reika_1_8_21.tlg, +fg_reika_1_8_22.tlg, +fg_reika_1_8_23.tlg, +fg_reika_1_8_24.tlg, +fg_reika_1_8_25.tlg, +fg_reika_1_8_26.tlg, +fg_reika_1_8_27.tlg, +fg_reika_1_8_28.tlg, +fg_reika_1_8_29.tlg, +fg_reika_1_8_30.tlg, +fg_reika_1_8_31.tlg, +fg_reika_1_8_32.tlg, +fg_reika_1_8_33.tlg, +fg_reika_1_8_34.tlg, +fg_reika_1_8_35.tlg, +fg_reika_1_8_36.tlg, +fg_reika_1_8_37.tlg, +fg_reika_1_8_38.tlg, +fg_reika_1_8_39.tlg, +fg_reika_1_8_40.tlg, +fg_reika_1_8_41.tlg, +fg_reika_1_8_42.tlg, +fg_reika_1_8_43.tlg, +fg_reika_1_8_44.tlg, +fg_reika_1_8_45.tlg, +fg_reika_1_8_46.tlg, +fg_reika_1_8_47.tlg, +fg_reika_1_8_48.tlg, +fg_reika_1_8_49.tlg, +fg_reika_1_8_50.tlg, +fg_reika_1_8_51.tlg, +fg_reika_1_8_52.tlg, +fg_reika_1_8_53.tlg, +fg_reika_1_8_54.tlg, +fg_reika_1_8_55.tlg, +fg_reika_1_8_56.tlg, +fg_reika_2_2.tjs +fg_reika_2_2_0.tlg, +fg_reika_2_2_1.tlg, +fg_reika_2_2_2.tlg, +fg_reika_2_2_3.tlg, +fg_reika_2_2_4.tlg, +fg_reika_2_2_5.tlg, +fg_reika_2_2_6.tlg, +fg_reika_2_2_7.tlg, +fg_reika_2_2_8.tlg, +fg_reika_2_2_9.tlg, +fg_reika_2_2_10.tlg, +fg_reika_2_2_11.tlg, +fg_reika_2_2_12.tlg, +fg_reika_2_2_13.tlg, +fg_reika_2_2_14.tlg, +fg_reika_2_2_15.tlg, +fg_reika_2_2_16.tlg, +fg_reika_2_2_17.tlg, +fg_reika_2_2_18.tlg, +fg_reika_2_2_19.tlg, +fg_reika_2_2_20.tlg, +fg_reika_2_2_21.tlg, +fg_reika_2_2_22.tlg, +fg_reika_2_2_23.tlg, +fg_reika_2_2_24.tlg, +fg_reika_2_2_25.tlg, +fg_reika_2_2_26.tlg, +fg_reika_2_2_27.tlg, +fg_reika_2_2_28.tlg, +fg_reika_2_2_29.tlg, +fg_reika_2_2_30.tlg, +fg_reika_2_2_31.tlg, +fg_reika_2_2_32.tlg, +fg_reika_2_2_33.tlg, +fg_reika_2_2_34.tlg, +fg_reika_2_2_35.tlg, +fg_reika_2_2_36.tlg, +fg_reika_2_2_37.tlg, +fg_reika_2_2_38.tlg, +fg_reika_2_2_39.tlg, +fg_reika_2_2_40.tlg, +fg_reika_2_2_41.tlg, +fg_reika_2_2_42.tlg, +fg_reika_2_2_43.tlg, +fg_reika_2_2_44.tlg, +fg_reika_2_2_45.tlg, +fg_reika_2_2_46.tlg, +fg_reika_2_2_47.tlg, +fg_reika_2_2_48.tlg, +fg_reika_2_2_49.tlg, +fg_reika_2_2_50.tlg, +fg_reika_2_2_51.tlg, +fg_reika_2_2_52.tlg, +fg_reika_2_2_53.tlg, +fg_reika_2_2_54.tlg, +fg_reika_2_2_55.tlg, +fg_reika_2_2_56.tlg, +fg_reika_2_2_57.tlg, +fg_reika_2_2_58.tlg, +fg_reika_2_2_59.tlg, +fg_reika_2_4.tjs +fg_reika_2_4_0.tlg, +fg_reika_2_4_1.tlg, +fg_reika_2_4_2.tlg, +fg_reika_2_4_3.tlg, +fg_reika_2_4_4.tlg, +fg_reika_2_4_5.tlg, +fg_reika_2_4_6.tlg, +fg_reika_2_4_7.tlg, +fg_reika_2_4_8.tlg, +fg_reika_2_4_9.tlg, +fg_reika_2_4_10.tlg, +fg_reika_2_4_11.tlg, +fg_reika_2_4_12.tlg, +fg_reika_2_4_13.tlg, +fg_reika_2_4_14.tlg, +fg_reika_2_4_15.tlg, +fg_reika_2_4_16.tlg, +fg_reika_2_4_17.tlg, +fg_reika_2_4_18.tlg, +fg_reika_2_4_19.tlg, +fg_reika_2_4_20.tlg, +fg_reika_2_4_21.tlg, +fg_reika_2_4_22.tlg, +fg_reika_2_4_23.tlg, +fg_reika_2_4_24.tlg, +fg_reika_2_4_25.tlg, +fg_reika_2_4_26.tlg, +fg_reika_2_4_27.tlg, +fg_reika_2_4_28.tlg, +fg_reika_2_4_29.tlg, +fg_reika_2_4_30.tlg, +fg_reika_2_4_31.tlg, +fg_reika_2_4_32.tlg, +fg_reika_2_4_33.tlg, +fg_reika_2_4_34.tlg, +fg_reika_2_4_35.tlg, +fg_reika_2_4_36.tlg, +fg_reika_2_4_37.tlg, +fg_reika_2_4_38.tlg, +fg_reika_2_4_39.tlg, +fg_reika_2_4_40.tlg, +fg_reika_2_4_41.tlg, +fg_reika_2_4_42.tlg, +fg_reika_2_4_43.tlg, +fg_reika_2_4_44.tlg, +fg_reika_2_4_45.tlg, +fg_reika_2_4_46.tlg, +fg_reika_2_4_47.tlg, +fg_reika_2_4_48.tlg, +fg_reika_2_4_49.tlg, +fg_reika_2_4_50.tlg, +fg_reika_2_4_51.tlg, +fg_reika_2_4_52.tlg, +fg_reika_2_4_53.tlg, +fg_reika_2_4_54.tlg, +fg_reika_2_4_55.tlg, +fg_reika_2_4_56.tlg, +fg_reika_2_4_57.tlg, +fg_reika_2_4_58.tlg, +fg_reika_2_4_59.tlg, +fg_reika_2_7.tjs +fg_reika_2_7_0.tlg, +fg_reika_2_7_1.tlg, +fg_reika_2_7_2.tlg, +fg_reika_2_7_3.tlg, +fg_reika_2_7_4.tlg, +fg_reika_2_7_5.tlg, +fg_reika_2_7_6.tlg, +fg_reika_2_7_7.tlg, +fg_reika_2_7_8.tlg, +fg_reika_2_7_9.tlg, +fg_reika_2_7_10.tlg, +fg_reika_2_7_11.tlg, +fg_reika_2_7_12.tlg, +fg_reika_2_7_13.tlg, +fg_reika_2_7_14.tlg, +fg_reika_2_7_15.tlg, +fg_reika_2_7_16.tlg, +fg_reika_2_7_17.tlg, +fg_reika_2_7_18.tlg, +fg_reika_2_7_19.tlg, +fg_reika_2_7_20.tlg, +fg_reika_2_7_21.tlg, +fg_reika_2_7_22.tlg, +fg_reika_2_7_23.tlg, +fg_reika_2_7_24.tlg, +fg_reika_2_7_25.tlg, +fg_reika_2_7_26.tlg, +fg_reika_2_7_27.tlg, +fg_reika_2_7_28.tlg, +fg_reika_2_7_29.tlg, +fg_reika_2_7_30.tlg, +fg_reika_2_7_31.tlg, +fg_reika_2_7_32.tlg, +fg_reika_2_7_33.tlg, +fg_reika_2_7_34.tlg, +fg_reika_2_7_35.tlg, +fg_reika_2_7_36.tlg, +fg_reika_2_7_37.tlg, +fg_reika_2_7_38.tlg, +fg_reika_2_7_39.tlg, +fg_reika_2_7_40.tlg, +fg_reika_2_7_41.tlg, +fg_reika_2_7_42.tlg, +fg_reika_2_7_43.tlg, +fg_reika_2_7_44.tlg, +fg_reika_2_7_45.tlg, +fg_reika_2_7_46.tlg, +fg_reika_2_7_47.tlg, +fg_reika_2_7_48.tlg, +fg_reika_2_7_49.tlg, +fg_reika_2_7_50.tlg, +fg_reika_2_7_51.tlg, +fg_reika_2_7_52.tlg, +fg_reika_2_7_53.tlg, +fg_reika_2_7_54.tlg, +fg_reika_2_7_55.tlg, +fg_reika_2_7_56.tlg, +fg_reika_2_7_57.tlg, +fg_reika_2_7_58.tlg, +fg_reika_2_7_59.tlg, +fg_reika_2_8.tjs +fg_reika_2_8_0.tlg, +fg_reika_2_8_1.tlg, +fg_reika_2_8_2.tlg, +fg_reika_2_8_3.tlg, +fg_reika_2_8_4.tlg, +fg_reika_2_8_5.tlg, +fg_reika_2_8_6.tlg, +fg_reika_2_8_7.tlg, +fg_reika_2_8_8.tlg, +fg_reika_2_8_9.tlg, +fg_reika_2_8_10.tlg, +fg_reika_2_8_11.tlg, +fg_reika_2_8_12.tlg, +fg_reika_2_8_13.tlg, +fg_reika_2_8_14.tlg, +fg_reika_2_8_15.tlg, +fg_reika_2_8_16.tlg, +fg_reika_2_8_17.tlg, +fg_reika_2_8_18.tlg, +fg_reika_2_8_19.tlg, +fg_reika_2_8_20.tlg, +fg_reika_2_8_21.tlg, +fg_reika_2_8_22.tlg, +fg_reika_2_8_23.tlg, +fg_reika_2_8_24.tlg, +fg_reika_2_8_25.tlg, +fg_reika_2_8_26.tlg, +fg_reika_2_8_27.tlg, +fg_reika_2_8_28.tlg, +fg_reika_2_8_29.tlg, +fg_reika_2_8_30.tlg, +fg_reika_2_8_31.tlg, +fg_reika_2_8_32.tlg, +fg_reika_2_8_33.tlg, +fg_reika_2_8_34.tlg, +fg_reika_2_8_35.tlg, +fg_reika_2_8_36.tlg, +fg_reika_2_8_37.tlg, +fg_reika_2_8_38.tlg, +fg_reika_2_8_39.tlg, +fg_reika_2_8_40.tlg, +fg_reika_2_8_41.tlg, +fg_reika_2_8_42.tlg, +fg_reika_2_8_43.tlg, +fg_reika_2_8_44.tlg, +fg_reika_2_8_45.tlg, +fg_reika_2_8_46.tlg, +fg_reika_2_8_47.tlg, +fg_reika_2_8_48.tlg, +fg_reika_2_8_49.tlg, +fg_reika_2_8_50.tlg, +fg_reika_2_8_51.tlg, +fg_reika_2_8_52.tlg, +fg_reika_2_8_53.tlg, +fg_reika_2_8_54.tlg, +fg_reika_2_8_55.tlg, +fg_reika_2_8_56.tlg, +fg_reika_2_8_57.tlg, +fg_reika_2_8_58.tlg, +fg_reika_2_8_59.tlg, +ev_reika_1.tlg +ev_reika_2.tlg +ev_sd_2.tlg diff --git a/src/scripts/kirikiri/archive/xp3/crypt/mod.rs b/src/scripts/kirikiri/archive/xp3/crypt/mod.rs index eda5a52..1e15e42 100644 --- a/src/scripts/kirikiri/archive/xp3/crypt/mod.rs +++ b/src/scripts/kirikiri/archive/xp3/crypt/mod.rs @@ -259,6 +259,12 @@ enum CryptType { SyangrilaSmartCrypt, Kano2Crypt, MiburoCrypt, + #[serde(rename_all = "PascalCase")] + PureMoreCrypt { + file_list_name: String, + char_map: String, + layer_name_suffix: String, + }, } #[derive(Clone, Debug, Deserialize)] @@ -410,6 +416,17 @@ impl Schema { CryptType::SyangrilaSmartCrypt => Box::new(SyangrilaSmartCrypt::new(self.base.clone())), CryptType::Kano2Crypt => Box::new(Kano2Crypt::new(self.base.clone())), CryptType::MiburoCrypt => Box::new(MiburoCrypt::new(self.base.clone())), + CryptType::PureMoreCrypt { + file_list_name, + char_map, + layer_name_suffix, + } => Box::new(PureMoreCrypt::new( + self.base.clone(), + file_list_name, + config.xp3_file_list_path.as_ref().map(|s| s.as_str()), + char_map, + layer_name_suffix, + )?), }) } } @@ -2374,6 +2391,78 @@ impl Read for MiburoCryptReader { } } +#[derive(Debug)] +pub struct PureMoreCrypt { + base: BaseSchema, + names: HashMap, +} + +impl PureMoreCrypt { + pub fn new( + base: BaseSchema, + file_list_name: &str, + file_list_path: Option<&str>, + char_map: &str, + layer_name_suffix: &str, + ) -> Result { + use sha2::Digest; + use unicode_segmentation::UnicodeSegmentation; + let mut names = HashMap::new(); + let file_list = if let Some(path) = file_list_path { + std::fs::read_to_string(path)? + } else { + query_filename_list(file_list_name)? + }; + let char_map: Vec<_> = char_map.graphemes(true).collect(); + for name in file_list.lines() { + let name = name.trim(); + if name.is_empty() { + continue; + } + let parts: Vec<_> = name.splitn(2, ",").collect(); + let mut name = parts[0].to_owned(); + if let Some(ext) = name.rfind(".") { + name = name[..ext].to_owned(); + } + if parts.len() == 2 { + name += layer_name_suffix; + } + let encoded = encode_string(Encoding::Utf16LE, &name, true)?; + let mut sha256 = sha2::Sha256::new(); + sha256.update(&encoded); + name = String::new(); + for hash in sha256.finalize() { + name += char_map[hash as usize]; + } + name += ".tlg"; + names.insert(name, parts[0].to_owned()); + } + Ok(Self { base, names }) + } +} + +impl Crypt for PureMoreCrypt { + base_schema_impl!(); + fn read_name<'a>(&self, reader: &mut Box) -> Result<(String, u64)> { + let (name, size) = default_read_name(reader)?; + let name_length = name.encode_utf16().count(); + if name_length != 36 || !name.ends_with(".tlg") { + return Ok((name, size)); + } + Ok(( + self.names.get(&name).map(|s| s.to_string()).unwrap_or(name), + size, + )) + } + fn init(&self, archive: &mut Xp3Archive) -> Result<()> { + for entry in archive.entries.iter_mut() { + // mark all files are not encrypted. + entry.flags = 0; + } + Ok(()) + } +} + #[test] fn test_deserialize_crypt() { for (key, schema) in CRYPT_SCHEMA.iter() {