diff --git a/msg_tool_build/src/kr_arc.rs b/msg_tool_build/src/kr_arc.rs index d0af62e..3459844 100644 --- a/msg_tool_build/src/kr_arc.rs +++ b/msg_tool_build/src/kr_arc.rs @@ -1,4 +1,5 @@ use crate::simple_pack::SimplePack; +use std::collections::HashSet; use std::path::Path; /// Generate crypt.json.zst from crypt.json with minimum format @@ -33,8 +34,13 @@ pub fn gen_cx_cb + ?Sized, D: AsRef + ?Sized>( let json = json::parse(&json_data) .map_err(|e| std::io::Error::new(std::io::ErrorKind::InvalidData, e))?; let mut pack = SimplePack::new(&outdir.as_ref().join("cx_cb.pck"))?; + let mut seen_files = HashSet::new(); for (_, obj) in json.entries() { if let Some(name) = obj["ControlBlockName"].as_str() { + if seen_files.contains(name) { + continue; + } + seen_files.insert(name.to_string()); let file_path = pb.join(name); if !file_path.exists() { return Err(std::io::Error::new( @@ -43,6 +49,13 @@ pub fn gen_cx_cb + ?Sized, D: AsRef + ?Sized>( )); } let file = std::fs::File::open(file_path)?; + let file_size = file.metadata()?.len(); + if file_size != 4096 { + return Err(std::io::Error::new( + std::io::ErrorKind::InvalidData, + format!("File size must be 4096 bytes: {}", name), + )); + } let file = std::io::BufReader::new(file); pack.add_file(name, file)?; } diff --git a/msg_tool_xp3data/crypt.json b/msg_tool_xp3data/crypt.json index b5b466e..d713e67 100644 --- a/msg_tool_xp3data/crypt.json +++ b/msg_tool_xp3data/crypt.json @@ -18,10 +18,30 @@ "EvenBranchOrder": "AQYDBAcFAgA=", "TpmFileName": "plugin/11eyes.tpm" }, + "11eyes -Resona Forma-": { + "$type": "CxEncryption", + "Mask": 404, + "Offset": 872, + "PrologOrder": "AgEA", + "OddBranchOrder": "AwIABQQB", + "EvenBranchOrder": "BQQHAAYCAwE=", + "ControlBlockName": "11eyes.bin", + "Title": "11eyes-交错的视线" + }, "25c -Sono Hako wa Shoujo no Himei o Morasanai-": { "$type": "HashCrypt", "Title": "25c -その箱は少女の悲鳴を漏らさない-" }, + "9-nine- Deluxe Edition": { + "$type": "CxEncryption", + "Mask": 532, + "Offset": 934, + "PrologOrder": "AgEA", + "OddBranchOrder": "AwIEAQAF", + "EvenBranchOrder": "AQMHBAIGAAU=", + "ControlBlockName": "9nine_deluxe.bin", + "Title": "9-nine- 豪華版 | 9-nine- 豪华版" + }, "9 -Nine- Kokonotsu Kokonoka Kokonoiro": { "$type": "CxEncryption", "Mask": 518, @@ -41,6 +61,16 @@ "EvenBranchOrder": "BQcBBgMCAAQ=", "ControlBlockName": "9nine_ep1_sekai.bin" }, + "Aete Mushi Suru Kimi to no Mirai ~Relay Broadcast~": { + "$type": "CxEncryption", + "Mask": 443, + "Offset": 1197, + "PrologOrder": "AAIB", + "OddBranchOrder": "AwUCAQQA", + "EvenBranchOrder": "BwEABgMCBAU=", + "ControlBlockName": "aete_mushi.bin", + "Title": "あえて無視するキミとの未来 ~Relay broadcast~ | 硬要无视与你的未来 ~Relay broadcast~" + }, "Ah, Ojou-sama": { "$type": "CxEncryption", "Mask": 353, @@ -111,6 +141,16 @@ "TpmFileName": "plugin/AQUA.tpm", "Title": "AQUA" }, + "ATRI -My Dear Moments-": { + "$type": "CxEncryption", + "Mask": 423, + "Offset": 873, + "PrologOrder": "AAEC", + "OddBranchOrder": "AAQDAQIF", + "EvenBranchOrder": "AgcEAAMFAQY=", + "ControlBlockName": "atri.bin", + "Title": "亚托莉 -我挚爱的时光-" + }, "Baaba to Mama to no Choujuku Oyakodon": { "$type": "HashCrypt", "Title": "ばぁばとママとの超熟母娘丼 ~3世代での家庭内エッチ~ | 爱你深至夏海蔚蓝" @@ -129,6 +169,16 @@ "$type": "HashCrypt", "Title": "爆走女装計画~もしも俺が女装させられてレディースに入隊させられたら~" }, + "Bishuu ~Chigyaku no Mesu Dorei~": { + "$type": "CxEncryption", + "Mask": 531, + "Offset": 1139, + "PrologOrder": "AQAC", + "OddBranchOrder": "AQQAAwIF", + "EvenBranchOrder": "BQQBAAcGAgM=", + "ControlBlockName": "bishuu.bin", + "Title": "美醜 ~恥虐の牝奴隷~" + }, "Bitch Gal no Gachi Iki Acme": { "$type": "HashCrypt", "Title": "ビッチギャルのガチイキアクメ ~家庭教師の童貞巨根にハマり堕ち~ | Bitch Gyaru no Gachi Iki Acme" @@ -211,6 +261,16 @@ "$type": "FlyingShineCrypt", "Title": "クライミライ" }, + "Cross Concerto": { + "$type": "CxEncryption", + "Mask": 692, + "Offset": 318, + "PrologOrder": "AAIB", + "OddBranchOrder": "BAMBAgAF", + "EvenBranchOrder": "AgUGBAEDBwA=", + "ControlBlockName": "cross_concerto.bin", + "Title": "クロスコンチェルト | 交汇协奏曲 | 交匯協奏曲" + }, "Custom Reido 4/4+/V": { "$type": "HashCrypt", "Title": "カスタム隷奴 4/4+/V" @@ -322,6 +382,16 @@ "$type": "HashCrypt", "Title": "不可視な愛情~透明なボクに感じるママ~" }, + "Gakuen Tokkyuu Hotokenser": { + "$type": "CxEncryption", + "Mask": 330, + "Offset": 558, + "PrologOrder": "AgAB", + "OddBranchOrder": "AgEDBAAF", + "EvenBranchOrder": "BgAEBwMBAgU=", + "ControlBlockName": "gakuen.bin", + "Title": "学園特救ホトケンサー" + }, "Gisobo, Choukyou Chuu": { "$type": "HashCrypt", "Title": "義祖母、調教中。 ~仲良しの秘訣はSMです。~" @@ -430,6 +500,16 @@ "TpmFileName": "plugin/ハロー・レディ!.tpm", "Title": "ハロー・レディ! | 淑女同萌!" }, + "Hello Lady! [Steam]": { + "$type": "CxEncryption", + "Mask": 722, + "Offset": 435, + "PrologOrder": "AAEC", + "OddBranchOrder": "AAEFAwQC", + "EvenBranchOrder": "AwIGBQEHAAQ=", + "ControlBlockName": "hello_lady_steam.bin", + "Title": "ハロー・レディ! [Steam] | 淑女同萌! [Steam]" + }, "Hello Lady! -New Division-": { "$type": "CxEncryption", "Mask": 443, @@ -568,6 +648,16 @@ "$type": "HashCrypt", "Title": "淫姉隷属 ~影に潜んだ愛欲と支配~" }, + "Island Diary": { + "$type": "CxEncryption", + "Mask": 488, + "Offset": 120, + "PrologOrder": "AAEC", + "OddBranchOrder": "AwQFAgEA", + "EvenBranchOrder": "BQECBwADBgQ=", + "ControlBlockName": "island.bin", + "Title": "アイランドダイアリー" + }, "Japanese School Life": { "$type": "CxEncryption", "Mask": 697, @@ -615,6 +705,16 @@ "$type": "FlyingShineCrypt", "Title": "かいわれっ!" }, + "Kakenuke★Seishun Sparking!": { + "$type": "CxEncryption", + "Mask": 570, + "Offset": 1717, + "PrologOrder": "AQAC", + "OddBranchOrder": "BAMBAgUA", + "EvenBranchOrder": "AAYHAQUEAgM=", + "ControlBlockName": "kakenuke.bin", + "Title": "かけぬけ★青春スパーキング! | 闪耀青春追逐记 | 绽放★青春全力向前冲!" + }, "Kami-sama no You na Kimi e": { "$type": "XorCrypt", "Key": 199, @@ -738,6 +838,16 @@ "ControlBlockName": "koiga.bin", "Title": "恋がさくころ桜どき | 恋花绽放樱飞时" }, + "Koikishi Purely ☆ Kiss": { + "$type": "CxEncryption", + "Mask": 561, + "Offset": 1559, + "PrologOrder": "AQIA", + "OddBranchOrder": "BAEDBQIA", + "EvenBranchOrder": "BQIABgQBBwM=", + "ControlBlockName": "koikishi.bin", + "Title": "恋騎士 Purely☆Kiss | 恋骑士 Purely☆Kiss" + }, "Koishi Irodoru Seigiranman": { "$type": "XorCrypt", "Key": 105, @@ -828,6 +938,16 @@ "EvenBranchOrder": "BwAEBgECAwU=", "ControlBlockName": "maitetsu_en.bin" }, + "Maitetsu - Last Run!!": { + "$type": "CxEncryption", + "Mask": 574, + "Offset": 153, + "PrologOrder": "AQIA", + "OddBranchOrder": "BQIEAwAB", + "EvenBranchOrder": "BAAHBgIBBQM=", + "ControlBlockName": "maitetsu_last_run.bin", + "Title": "まいてつ Last Run!! | 爱上火车-Last Run!!- | 愛上火車-Last Run!!-" + }, "Mama no Okugai Shuuchi Lesson": { "$type": "HashCrypt", "Title": "ママの屋外羞恥レッスン ~視線が快楽に変る時…~" @@ -836,6 +956,16 @@ "$type": "HashCrypt", "Title": "ママとのイキすぎ甘々性活~いっぱい気持ちいいコト教えてあ・げ・る~" }, + "Manakashi no Yuri wa Akaku Somaru [DL]": { + "$type": "CxEncryption", + "Mask": 516, + "Offset": 761, + "PrologOrder": "AQIA", + "OddBranchOrder": "AwABBAUC", + "EvenBranchOrder": "BAcBAAMFBgI=", + "ControlBlockName": "manakashi_dl.bin", + "Title": "真愛の百合は赤く染まる | 真爱的百合被染成红色 | 令人怜爱的百合染上红色" + }, "Manamusume wa, Mazo Seirei": { "$type": "HashCrypt", "Title": "愛娘は、マゾ性隷 ~娘だからって遠慮しないでね?~" @@ -972,6 +1102,16 @@ "Key": 232, "Title": "同じクラスのアイドルさん。Around me is full by a celebrity." }, + "Onigokko!": { + "$type": "CxEncryption", + "Mask": 334, + "Offset": 1715, + "PrologOrder": "AAIB", + "OddBranchOrder": "AgEFBAMA", + "EvenBranchOrder": "AAQFBwMBBgI=", + "ControlBlockName": "onigokko.bin", + "Title": "鬼ごっこ! | 捉迷藏 | 鬼的捉迷藏!" + }, "Oppai Cafe ~Oyako de Cos Chichi~": { "$type": "HashCrypt", "Title": "おっぱいカフェ ~母娘でコスちち~" @@ -1078,6 +1218,25 @@ "$type": "HashCrypt", "Title": "パパ大好き!と言ってくれ…~反抗期の娘を催眠アプリで狂愛しつけ~" }, + "Parquet": { + "$type": "CxEncryption", + "Mask": 699, + "Offset": 196, + "PrologOrder": "AAEC", + "OddBranchOrder": "AgEAAwQF", + "EvenBranchOrder": "BgEABwUDBAI=", + "ControlBlockName": "parquet.bin", + "Title": "PARQUET" + }, + "PENDULUM": { + "$type": "CxEncryption", + "Mask": 380, + "Offset": 1666, + "PrologOrder": "AQAC", + "OddBranchOrder": "AgEEBQAD", + "EvenBranchOrder": "BAYBBQIHAAM=", + "ControlBlockName": "pendulum.bin" + }, "Princess Saga": { "$type": "FlyingShineCrypt", "Title": "プリンセスサーガ" @@ -1085,6 +1244,16 @@ "Re:": { "$type": "FlyingShineCrypt" }, + "Real Imouto ga Iru Ooizumi-kun no Baai": { + "$type": "CxEncryption", + "Mask": 690, + "Offset": 742, + "PrologOrder": "AgAB", + "OddBranchOrder": "BQABBAMC", + "EvenBranchOrder": "AgQDAAEFBgc=", + "ControlBlockName": "real_imouto.bin", + "Title": "リアル妹がいる大泉くんのばあい | 实妹相伴的大泉君" + }, "relations. sister x sister.": { "$type": "CxEncryption", "Mask": 451, @@ -1106,6 +1275,15 @@ "Title": "リア充催眠~リアルが充実する催眠生活はじめました。~", "ObfuscatedIndex": true }, + "Riddle Joker [Steam]": { + "$type": "CxEncryption", + "Mask": 350, + "Offset": 234, + "PrologOrder": "AQIA", + "OddBranchOrder": "BQADBAIB", + "EvenBranchOrder": "BgQFAAIHAQM=", + "ControlBlockName": "riddle_steam.bin" + }, "Rui wa Tomo o Yobu": { "$type": "CxEncryption", "Mask": 740, @@ -1116,6 +1294,26 @@ "TpmFileName": "plugin/ruitomo.tpm", "Title": "るいは智を呼ぶ | 智以泪聚" }, + "Rui wa Tomo o Yobu -Full Voice Edition-": { + "$type": "CxEncryption", + "Mask": 586, + "Offset": 964, + "PrologOrder": "AAIB", + "OddBranchOrder": "AwQAAQIF", + "EvenBranchOrder": "BAEAAwYCBwU=", + "ControlBlockName": "ruiwatomo_fv.bin", + "Title": "るいは智を呼ぶ -フルボイスエディション- | 智以泪聚 -全语音版-" + }, + "Rui wa Tomo o Yobu Fan Disc -Asu no Mukou ni Mieru Kaze-": { + "$type": "CxEncryption", + "Mask": 292, + "Offset": 1597, + "PrologOrder": "AAEC", + "OddBranchOrder": "AwIABAUB", + "EvenBranchOrder": "BQQCAQcDAAY=", + "ControlBlockName": "ruiwatomo.bin", + "Title": "るいは智を呼ぶファンディスク ―明日のむこうに視える風― | 智以泪聚FD -吹向明日彼岸的可视之风-" + }, "Sabbat of the Witch": { "$type": "CxEncryption", "Mask": 703, @@ -1338,10 +1536,30 @@ "$type": "HashCrypt", "Title": "すうぃ~と☆SwitcH ~まじわるシセンでとろけるカラダ~" }, + "Tamayura Mirai": { + "$type": "CxEncryption", + "Mask": 288, + "Offset": 1325, + "PrologOrder": "AgAB", + "OddBranchOrder": "BQIDAAQB", + "EvenBranchOrder": "AAcGBQMBBAI=", + "ControlBlockName": "tamayura.bin", + "Title": "タマユラミライ | 玉响未来 | 深野协调魔法使 | 玉響未來" + }, "Tanetsuke Dungeon": { "$type": "HashCrypt", "Title": "種付けダンジョン~褐色エルフ産卵アクメ~" }, + "Tasogare no Sinsemilla": { + "$type": "CxEncryption", + "Mask": 599, + "Offset": 656, + "PrologOrder": "AQIA", + "OddBranchOrder": "AQQFAgMA", + "EvenBranchOrder": "AgcGAQMEBQA=", + "ControlBlockName": "tasogare.bin", + "Title": "黄昏のシンセミア | 黄昏的禁忌之药" + }, "Tawawa Oku-san x Happening Gym": { "$type": "HashCrypt", "Title": "たわわ奥さん×ハプニングジム ~むっちりボディとすけべなエクササイズ~" @@ -1393,6 +1611,16 @@ "$type": "HashCrypt", "Title": "妻と息子にバレてはいけない背徳の媚熱 ~あやまちの密愛2~" }, + "Tsuyuchiru Letter ~Umi to Shiori ni Amaoto o~": { + "$type": "CxEncryption", + "Mask": 592, + "Offset": 782, + "PrologOrder": "AgEA", + "OddBranchOrder": "AgUBAwQA", + "EvenBranchOrder": "BwMBBQQAAgY=", + "ControlBlockName": "tsuyuchiru.bin", + "Title": "ツユチル・レター~海と栞に雨音を~ | 梅时露霁书~雨潺海汐间~ | 梅時露霽書~雨潺海汐間~" + }, "Ubawareta Gakuen ~Wana ni Ochita Yuutousei~": { "$type": "HashCrypt", "Title": "奪われた学園 ~罠に落ちた優等生~" @@ -1444,6 +1672,16 @@ "EvenBranchOrder": "BwABBAUCAwY=", "ControlBlockName": "wagamama_en.bin" }, + "Wagamama High Spec [Steam]": { + "$type": "CxEncryption", + "Mask": 302, + "Offset": 1387, + "PrologOrder": "AQAC", + "OddBranchOrder": "AwUCBAEA", + "EvenBranchOrder": "BwYEAwUBAAI=", + "ControlBlockName": "wagamama_steam.bin", + "Title": "ワガママハイスペック [Steam]" + }, "Wagamama High Spec OC": { "$type": "CxEncryption", "Mask": 608, diff --git a/msg_tool_xp3data/cx_cb/11eyes.bin b/msg_tool_xp3data/cx_cb/11eyes.bin new file mode 100644 index 0000000..cc08380 Binary files /dev/null and b/msg_tool_xp3data/cx_cb/11eyes.bin differ diff --git a/msg_tool_xp3data/cx_cb/9nine_deluxe.bin b/msg_tool_xp3data/cx_cb/9nine_deluxe.bin new file mode 100644 index 0000000..1615419 Binary files /dev/null and b/msg_tool_xp3data/cx_cb/9nine_deluxe.bin differ diff --git a/msg_tool_xp3data/cx_cb/aete_mushi.bin b/msg_tool_xp3data/cx_cb/aete_mushi.bin new file mode 100644 index 0000000..4a6c266 Binary files /dev/null and b/msg_tool_xp3data/cx_cb/aete_mushi.bin differ diff --git a/msg_tool_xp3data/cx_cb/atri.bin b/msg_tool_xp3data/cx_cb/atri.bin new file mode 100644 index 0000000..990fde4 --- /dev/null +++ b/msg_tool_xp3data/cx_cb/atri.bin @@ -0,0 +1,16 @@ +i oOhT-$#l!#i҇t0T kUE! [3)1yc*.0UZ|x>|Н"5;gQ$CkC[6D7~w!}n",Ӌ^a3.QvfQU#v.໇t3BYBL!m[62NO.N;QbkO!{ DWJK#^vgR +J{%% 1'Z~!Am|w(k}! \dn%hgP~}1~젢qpijH'<0Ty:Vȣ. Yג~zCmOkyUm`(Vĩ/6 lb3(<6rJAǻ[kKo%I ZoPJ*U50h:l;$&-Z<1l$j>Zvކ.V1-i5qB}/vL"bas`FIFA(UDV:YV@InWw +jRQxŤ2+ XB- L]B8mq~3" Cj[ڣQq7a1 7wy5Sʺ +J02ͅŇl* 0 +`{wTA@kF4\s8 14[o5f t4.QΗ i'c'T9],-4zYXҡTdȑiý:TB?h]UJ8`=/v0C- 0@ l+o6o7Q*MsGMQ ?F&t 6xs\L2oW1Hz5q=x @L{s<ݺJ%TWjtD I2&Xr[B1_±"o^[{gu.MR?vUϣ8+!q4K7b $q:׺p: eG^d%88=ufy|*YOyZr-Y4Ȑ!/[ nk;A>J_C CdL +g@-jPWt$Z]$D׹4ߧBy[\7FMfJ;^vP;mͤ-u˭u3rLp!o@B!wx:$ś9Mب o:~wL9\uetݠ!.ק|ycDүqaZ #L<^[*XS3gE ySrvcQh/) 4{  +PijP'"0hK,8öHV3a ut#gZ%bWEV/89I LfrHS"Ȣ#!I!Y  z0xp>|`_KMWR2GG̾&۳n9 ZIDŽXMjL *ǻCˍ8;U*E_i +repC&iDV[A2QωO|f@A5DeYI(Ŷ`49\`p1S>6}oTi)R~]>ؼy׎v^u{^|8>W|GW,P\X<y}?}YQo\`W@=MfKɘ;H#O5]G$zȾv"S8lKzb&U:?#M^Ȅj6UEeђGO{h=^q}LtLCRs7/E'Qt`zIe8zp= gziS6$(<1DXbŐ1O%ݚeL309Ѩ4s_"RF*–_6?S:,%C^m$K0@}$yJy}ztEUgʚA8EJȇgߌA!6R3-_OhSyjQ8 D[*2?! tlV\ͤ2d +sF2f/lt}fM] JY2؋1w>]n)gٸo/F;j}pt';n ` G3t?,T*e NF& F%9hH$[' 7^׍8Fdk WDb Mj 4^h[v,k.*S坬uq #crfg)y;=fE AhlqsZ'Ыkx&(yM0uH%3\-2Q +>?5 o,b > ExDb kH _ X݃憠 ` zL(%ڀ(0a("EoXӎS3U?ˊ1pxȎAjhJA/C#_CBnIoV|:I9#H]gΫFΎ,Xh# `'=kd,F]Y}H৉~p)4]?UiI!渣g뫅Ṟ/Ŷ6/ϳ>H1+ƆyK[qc} `ѝ!#xl<[pk`̢iKVcNM^qlC+EanulDE6[CngK tl2߁]U^ q zۗYmIwuV(o\.='?Pwo-צ33,ueOJ7'Gi2VfzQ/1|7S{1AUohiGpFS'(ICD, +ܹt-6w^ +ȃ~ *_FkNhyςe7#fYW ꥸ8tW' +_duh7}Xɰ8pIRQ2/\"5!ACLpo^dMotHqFQHum_ +0|j['7̈́% 9+ 4՘bx`D"LtY nW@j [$tV+턥8rJaնVTYlR2M ɞY4Լ-I^dG1 Pl8Zi`W*x!bvB)VbK*PR!L@;͊ߕ+4ɺGSz',(R eoBEJ@8zqlS `j1UͯPyf Q9/"?dI +(]t&zmD 7Bᆰc[ξ,h4K4z(˟tQE/97G0@S2{14tk-o*OJt],V]7O&V!j%_?." *oEΏ.e,~/5iI˧jEE\ɸo2 zוv`ؐF1(Yܚ+'TDw_Gطw]S7`4c#3|wzfl6 tC"&d<@( rJ[#QIeaz\Z03uy D|Ol_~EgyIMi,_vf 0Ai]/uU]bzE_/1Yc-t-_9!({ u& HˈSfEHRCU<o1{y䤇'Ml.}j#OF'1YoyynsWhۋHA4#P[y<CH02^uj ,% -.Sf\Ew+C~ "#G$|o S%pBqD%. 3=)"` z6+*+?KMIǐ>'<|&z +u4%n"_>_Sٰ_/MF?ժo}6d.3@ ʃ%W 쿇א5ϷliL׺9Zd.E-n.eɱXpn@M^Ը[!h\hA?Gm)^sj==`.[ߛBцAHdJ2 zwKYk B1WG/7(뼇˻#ȣiBz܇OyizX2(>Y8[q)ۆ};7Tm!nSG[:P)%`2cbLgKz)T EVNbn~zE-Uu9q\-b>.cM~cEKdҚ+Q|]L݀o3gBM7aq"x>0O?RO3?Aؒ |T eA" +[> pp+}>%`th[I‹Y\X"M=r +\5|9A^wH1#-+&7s`}Llg=fOM`L|"eb\_ZÿFZUYSfJp# \m@%ҕX[X[\ +&" Q#aE+nMr-5͆l ׷Ѥezu?PSvzz͍4>Bh| JdAw)I!:i؍8wxAk@/t {~ LG+~ g\E8}?o&EEx@O#MI1WtAHqDA(`- Z#M.E'K+0<)BO+/#䠮2v.%KZs|rƯjV[2_h1Db 1Fm<ELлBʴl^|zj&f#Dum/fɤ+43,`@9u q@ct0)҉(~Fõ +9_±Ud!H"v_\S${O'k! 7woE l5ݦ;cr͉,Qp%>@ ;KӬhZ=3YtHV[|-2VQйvB-xh_ac++S*\8ɡesR5CfnuU0xJD3@>uaiF^獑fE$PtyHBvƧl4f ԞS>v̠/o9#2XlUlϛWdW#R;Q`P77܄aM&*,wL@Q,#px#Jc:rzb*$! + +}2-Ͷځ*UZqvZMG7{ur !(&|7̓ IQ$|?P/bݱjs֧hlABrunsqRkYP5հۭr$0z{UsuOs~ Rlj3N/hsrz"O^V>`{"!AEaW 'Z}"gȊ)<fMLeWqaBzV3G\\F's䪫C q8\W=tum;(cxPV)#i/³ +`NHd(ת6O}i8d+E.=5O8O7:U* 386@M +זxeYh(6t яxqqdN|ew~ym{ iʑCCą;Q`IQ)g y&j|?!VܕY}-3&5$)dn6 +J4Iq a2էm͏ >}=ʠ %MSi9 *Hst^yA -cYT_|7hp8 29LL<"t G**oR<4E/yH%{ǩ@ Z}IsL)/g˻j`vKG^|B<qZ#]ܩ[w8r8Yf)DZR*<]dH폨{~z\Hp*HA6hO=,o\f*L +-_E&3p GQu -Ʒ_h|Pk@y쐩"014;YJGүԱ}w 1,1/g4A L%DrtFEg޽%0Eb-@&m%Z4}YcXQ!V;?耢"NӀ/`Kx!ED,]0!R8TA &fܲ xO'|m +hf-PZia#P&-%8ZpԐhi79ZBQJ@ILaHv^Latyɫ + +dջ\nɢ@+|LVf=G[MRCvϦ)*j {cל+$a*mDIˎI)KwF--i4B}LK3*b;#œo'[l ݵo_حoWcg_DW3r߅ 0.qVx+yA4n[걱2?P86¶Ei :ϦgcOA&L]հ۵~ +|ȾWlf7Szp=5C/:Ȝ+/G$3ΝZ"DDO6o|$fkސ[Mz'ӏ\ b!@{GK6v>l r_%FKr7ѪtneBzوg(e*HtkP%فeYKc%~D/<'@/ 8WƕQ?山I(%_pf*,A„]/xxrXJ1@\w/qΨǐ ڭ`ۍx2$TO,Ih5qL䂔ף5Ԕ,MAsC)KpcFN{ydk;P'IL)Xׂjm .+KEBҬ#w@\ +q@Ji!zSSHq],qR2a`n";R~ȁjLT摇{wE`iqLbEاЩ!M g F a~z2u)`ŗ{=;oO_8oG]w`T_(*AoS- +"cx{+Bv$n8RpȊWfCЍ{'Y{u>UsƼȯ,&uU?ao-g՞0UBoX>cӭ>.B2 H{Ol!G9A!TpUSm-_I%kOZC]ɸ,*|6z`|<ᑍ6F9JM'Zd(G #<lUہt{A_F{nݳz˼^hF)xD(r*6UR2^hR'jTq'ns M-Hq;W2$N$Cx{ {2_HO6IJ"|ЬײϩbݶJ ji?C0"5\bE#*qUs״TbQBr`s} 7mŗ)P@?z!7%a^:drOk{6Ge@\ Q{?ua;bz[,f-GMƙH (j`9id g%}@I0Ug[ RP5lf5i#]aldI %n, ]-:uhR[ވNi(~QHXp@r fxɄSwH?A]49cҟ(imTU%! +ck5LI&+> p56QAAzQ8|ÛJo$ei*T_AT\֗vHh?5Se5G~ _T.am`!Ss-Refgxwd {5aJY8z:D׃(nxI,ZWtE%^#j6唦Qj ~S >~sAʍdfjC!yaeӒ*G>H#\O9?*oEUYVxbe b3`pUBUѣAYŅ+[v">=zB4‹Dw}(?QWe[3Z\Ju,tztӥu$]Eh^x 1sfVn,'!Ե% 5]K&i_kf]CƟ>LPX8R%jK@͹A".b}ot| xDjIhU .͕Q0my ҈7[;=QFIs\`6Q'N1k .T>ęϓ Thzyp"6xs"r2۔Z39zI}HQDUs2]W9KRsQ^6͏FHZEc"F(ZoLҨfpt/){*MjQ6,!zËsoyƑCf@qg ̥2 H +\Y Q8smQl2Sׁڰ82`D)Iؚ[3YPFr~q,3}TPB̅ZqL-Wh~\g]gbWilJ?Ӕ +yտ i;qB.(layv4}I# _U4ʟF +@nf`:~bt1 ?No}0 0IQM&z`2P" WMdUؐ8?i +ݱ nZCgRJ״ʘkMN5J[xAps.eHH[E? F|7!#<0MolctAWuv5R9!޲L$,>bkwJX]^hI#hT,˼{SN]C %)lZP.7nfr7< 0c*}dAl,LAn)WĝJW `gD%j \ No newline at end of file diff --git a/msg_tool_xp3data/cx_cb/onigokko.bin b/msg_tool_xp3data/cx_cb/onigokko.bin new file mode 100644 index 0000000..a3deb93 Binary files /dev/null and b/msg_tool_xp3data/cx_cb/onigokko.bin differ diff --git a/msg_tool_xp3data/cx_cb/parquet.bin b/msg_tool_xp3data/cx_cb/parquet.bin new file mode 100644 index 0000000..a3ce4a8 Binary files /dev/null and b/msg_tool_xp3data/cx_cb/parquet.bin differ diff --git a/msg_tool_xp3data/cx_cb/pendulum.bin b/msg_tool_xp3data/cx_cb/pendulum.bin new file mode 100644 index 0000000..07618b0 Binary files /dev/null and b/msg_tool_xp3data/cx_cb/pendulum.bin differ diff --git a/msg_tool_xp3data/cx_cb/real_imouto.bin b/msg_tool_xp3data/cx_cb/real_imouto.bin new file mode 100644 index 0000000..4a47563 Binary files /dev/null and b/msg_tool_xp3data/cx_cb/real_imouto.bin differ diff --git a/msg_tool_xp3data/cx_cb/riddle_steam.bin b/msg_tool_xp3data/cx_cb/riddle_steam.bin new file mode 100644 index 0000000..8c43844 Binary files /dev/null and b/msg_tool_xp3data/cx_cb/riddle_steam.bin differ diff --git a/msg_tool_xp3data/cx_cb/ruiwatomo.bin b/msg_tool_xp3data/cx_cb/ruiwatomo.bin new file mode 100644 index 0000000..a7a7258 Binary files /dev/null and b/msg_tool_xp3data/cx_cb/ruiwatomo.bin differ diff --git a/msg_tool_xp3data/cx_cb/ruiwatomo_fv.bin b/msg_tool_xp3data/cx_cb/ruiwatomo_fv.bin new file mode 100644 index 0000000..93c0043 Binary files /dev/null and b/msg_tool_xp3data/cx_cb/ruiwatomo_fv.bin differ diff --git a/msg_tool_xp3data/cx_cb/tamayura.bin b/msg_tool_xp3data/cx_cb/tamayura.bin new file mode 100644 index 0000000..d115e3b --- /dev/null +++ b/msg_tool_xp3data/cx_cb/tamayura.bin @@ -0,0 +1,17 @@ +H($(Sa'EoS^-L]8;?pgfNjt(3'c_=kdˎ $M=/c (//|Y͘V$}=}F~!TQ11qRB?!9H F @F1'SaՁoHn&!k?Dښ'ֶj/+p>]ȏXB7nL;Цb\pj_`5έճUG([ PD?'$x;h9He,?Q|g9:Tyqψvka9-~Iic(l&mP~"BUy",%{Umbvdh|Mp ;i R5"~]h ,ko3%,d}_Iv#u6ag3uYQ/oR7Bk`ˊ'A7{q$̓q5'0dawhky.a@"?i[g}QEg 4Ĭ ^^mpcn Wg1f:O#ճ+l82U/2MPYJ + Aw"z2iiZa) /e݅zH<=0 I*2AkGG4AIU#~7 JhM0B8mBn9u}(Y蟑XHB` +H'fD g=JjA>Jd:h"+"_~En$p>!w7}6ٜ|99|7T ~0Iu0voN2ǻf+Evߊ3WC~&iH˹uKS.vewH6!y]7xYg7Lp;ohd@/d39 T +h5o;ے\gk$I5V &Q7 +K K(p̳?C#?T^$Bǜ6{FyKq6^tN" =Fx:j8Qd)`-rGB%/uj{_^\(ߖSm :{vn=Cq!FXyqBQ euȿ2]BkRzaeMq{}@C;5hX!|bz|uE2hW6qk?(I \ppҋu02i*q,,z A^Z +5 )ɸ#Se &$reHKkU#ue +#Q;q[H<`⎡D +Iͽ늿+v^bıkg) dɋw9d!s#`CęMO5ۓשIKkCe?9N 3QwvQ90An%5@`QU([#ǁk*`@rY?6<=Or*<Ĥa>_Ċ"?ǭ1 A|f#rtQ"~"_e䦂P?bﶱۯu))!߂ط$WSuF);1hG,v-h{PZFi2K.f}3̯ `f7 7j瓨8rZAe1" +n i~C=1#t8.=) K|In8|q<3hX2 zByz&gDWqW܇hɸR}Tի@>9?r2\Se4pg,W2BtDz!&(&,JGo|USt'UHSqgh͞ˣIh'dK'q2#;-뜢RRAwyAŭ0tpQZ*HRZZ;k-n( jllV8=դu&pvU8l{8w;$`*UΥ]vA/j@Xa cϓu['Lc)llw)!ys+a[LXAbmuV 1.Ի -_;),NG Ȓx3+`eX~߁O"IJ¼'YCuuJQ&_(Dz4~{ lYa1 hY2-8aҫq4ck&FP,h3ݫeVQq '~mD:Yԋ0[fqpm_0 ,H8^Xq fG{`=3 >WHmPr]z~N*J +TmuGE8ftD9 +3>.-Rj +i:Y G[Cm[*OЧn텇ƾwm:X6*۝\U6(kч1)P^Nr'S͠gKgXe$p;a=0wT [qSkv8[ȵ5)K+5M>\Rb|^mˎ $q-^G_6=X~<1i:[gɮP+yD(Z~]vJ)71kW2vȣ|[H KH_^04Qoۆ@Y.`kl+hrבDfe;Qqf23V]ıA[)MmVKV]Ep*3{6 wzhV:VZ9*0%ZF qBj`:ΙI <,p!% A2 \ No newline at end of file diff --git a/msg_tool_xp3data/cx_cb/tasogare.bin b/msg_tool_xp3data/cx_cb/tasogare.bin new file mode 100644 index 0000000..08e6c44 Binary files /dev/null and b/msg_tool_xp3data/cx_cb/tasogare.bin differ diff --git a/msg_tool_xp3data/cx_cb/tsuyuchiru.bin b/msg_tool_xp3data/cx_cb/tsuyuchiru.bin new file mode 100644 index 0000000..fcf7ee9 Binary files /dev/null and b/msg_tool_xp3data/cx_cb/tsuyuchiru.bin differ diff --git a/msg_tool_xp3data/cx_cb/wagamama_steam.bin b/msg_tool_xp3data/cx_cb/wagamama_steam.bin new file mode 100644 index 0000000..8f5f881 --- /dev/null +++ b/msg_tool_xp3data/cx_cb/wagamama_steam.bin @@ -0,0 +1,19 @@ +?Qwي\3y"g1_(5el"-& %.7`8$'.Ai;LQ*$W3W]G`u'tbև[ܭ`) 9:͢1TN6XS@-=4W~;xX˙6VʍvI]Ƣwϑp:qE2<=AR4he푓$ "tҕLviԚWW4tSMWӭN޴):JK,LJd졆mF mowEe %MOy pƊ#9ɄElTmb8vפO-WU3hY?/ZS0aPzLXG;C7Hx&+E}V|-I8(bFΏU_ޞ0'fu|IIfTSgA# >]{똑 +GLA~JYϕ]ԟL:4\4Q<#vJ[*&[֞Xm%1uz_۰5ݲ,,2-Z +m98%IVmD6VV;Kv7RY n&$,hi+T0ɎzehjxwQi}oEQomnx"AECQED/!Tc:Yfʗ\7 +ǣ}30}Po{<~JeJ#6gr'7B ಆe>"GilX|;+!@VmJ4ǀ2dԏ}es{SiVFD-6>Ɵ}hcH& +O^eOiy=Q~lNգ'"d^R0#|;rǟPp,QUUf +5ySȮdWl 3݂l$?K,A@ɧz?=`8a&2kZc֤=娵ޣ [SzdP Z+ #NŎ؄"ϋ4)*~'bM7>sy-#R*/{[q9"GaG*ޘ6MNzQBWN*J׈o}G-/"06|uQi/*ĝehL .6|0v'g +U᯻=i8#-Sj`[0UY:yh"̢2@=,+!`<Np.:ɓ . PV̓ai!d:7Ŏܯp+2V. I.mP/{kt +>CN C` ~eUmoZgڂ(ZJg׃QŁU{̉INS m. \^?yv`VOd'-EhB+K*45s(C՚/*t Bqaus1&h @qeS.J^AkG*-Q䁬)Gâ]s]AIABbMp+W}[z[ ;1k gb,I$'F4R!P@lG=JUGZ!cRvt+p)>jli2VRm![T!GwJyu]9ƘC؈aE~ C& ·`390JRf5;2I@a/QW`͘rVi!`8(^H[_Kkf-&e{V&ν'*^{xR/&#=KBFTru5g+t1Bt{ %b,}cS7j,5W=tzN4bVgI5ַ䓄._-DqdJ4.C%x.W8킼8_/n\34ːd6feAC#tk;b-''[k_1 qADŽVCL8,J Gat(G缑ImdnBVu/Loz ngAw`!l_>3()5&I); 2׀cTv 4ءwuҔ]i(I%U_sXx;PKiC +Dx5wSV0_ +S'rC=lwidQ-)46&")51X I] IF +˲A>jpQw>p E:Gb0ݾ׍ ?r.@fJ@f'Y{琶BHՀlUK2δjЩZ) !c*vx9!ޔ+T৒K2EACg6P|&Xٰٸ=3JbxD{d mG҉ʳ[%Wz[xS:B#i Ilof:b4w0iJ4 *PGMkS +eg/?yxXɆtU|؅oaVeJUoyQd@8/dX_=gwQ)rҵ '>98$$V-YV^ԢVh&)]ҠvU&6^"MR~N6[=l2sY/1bv!/9JEv3zK{$Gnֺ%K,,0: !bs~\?cDX=4B(v\NŬjW4.G1S &U._+XV>c⽣,p$ܽ(G4S~|K+ hB{~P)Kh~CP|~(6C&}k'7.`()prsZ6yޯFz#k-z2,F}㊐i.ߙO^p]7Aj[yoZ8@`h »GkRGG;:A]\qE*gqCNnBKH' JVY[ +Ӫ[f2Ad83ɖ5ohFP +ŏU"NƆ!-ȏB{&k)ǚ>!Gh5W[#nb3Jh徫U)X6;5q'}(_Lն˜`Mw#9-,+`L6/4b@(F7eoX \ No newline at end of file