#include"yuzusuyu.h" #include"mages/mages.h" #include"hookfinder.h" #include"emujitarg.hpp" namespace{ auto isFastMem = true; auto isVirtual = true;//Process.arch === 'x64' && Process.platform === 'windows'; auto idxDescriptor = isVirtual == true ? 2 : 1; auto idxEntrypoint = idxDescriptor + 1; uintptr_t getDoJitAddress() { auto RegisterBlockSig1 = "E8 ?? ?? ?? ?? 4? 8B ?? 4? 8B ?? 4? 8B ?? E8 ?? ?? ?? ?? 4? 89?? 4? 8B???? ???????? 4? 89?? ?? 4? 8B?? 4? 89"; auto RegisterBlock=find_pattern(RegisterBlockSig1,processStartAddress,processStopAddress); if (RegisterBlock) { auto beginSubSig1 = "CC 40 5? 5? 5?"; auto lookbackSize = 0x400; auto address=RegisterBlock-lookbackSize; auto subs=find_pattern(beginSubSig1,address,address+lookbackSize); if(subs){ return subs+1; } } auto PatchSig1 = "4????? 4????? 4????? FF?? ?? 4????? ?? 4????? 75 ?? 4????? ?? 4????? ?? 4?"; auto Patch = find_pattern(PatchSig1,processStartAddress,processStopAddress); if (Patch) { auto beginSubSig1 = "4883EC ?? 48"; auto lookbackSize = 0x80; auto address = Patch-lookbackSize; auto subs = find_pattern(beginSubSig1,address,address+lookbackSize); if (subs) { idxDescriptor = 1; idxEntrypoint = 2; return subs; } } return 0; /* 这块不知道怎么实现。 // DebugSymbol: RegisterBlock // ?RegisterBlock@EmitX64@X64@Backend@Dynarmic@@IEAA?AUBlockDescriptor@1234@AEBVLocationDescriptor@IR@4@PEBX_K@Z <- new // ?RegisterBlock@EmitX64@X64@Backend@Dynarmic@@IEAA?AUBlockDescriptor@1234@AEBVLocationDescriptor@IR@4@PEBX1_K@Z const symbols = DebugSymbol.findFunctionsMatching('Dynarmic::Backend::X64::EmitX64::RegisterBlock'); if (symbols.length !== 0) { return symbols[0]; } // DebugSymbol: Patch // ?Patch@EmitX64@X64@Backend@Dynarmic@@IEAAXAEBVLocationDescriptor@IR@4@PEBX@Z const patchs = DebugSymbol.findFunctionsMatching('Dynarmic::Backend::X64::EmitX64::Patch'); if (patchs.length !== 0) { idxDescriptor = 1; idxEntrypoint = 2; return patchs[0]; } */ } struct emfuncinfo{ uint64_t type; int argidx;int padding; void* hookfunc; void* filterfun; const char* _id; const char* _version; }; std::unordered_mapemfunctionhooks; struct GameInfo { std::string name{""}; uint64_t id{0}; std::string version{""}; } game_info; bool checkiscurrentgame(const emfuncinfo& em){ auto wininfos=get_proc_windows(); for(auto&& info:wininfos){ if((game_info.version.size())&&game_info.name.size()&&(game_info.id!=0)){ //判断是有效的info auto checkversion=(em._version==0)||(std::string(em._version)==(game_info.version)); auto checkid=(std::stoll(em._id,0,16)==game_info.id); if(checkid&&checkversion)return true; } else if((em._version==0)||(info.title.find(acastw(em._version))!=info.title.npos))return true; } return false; } } bool Hook_Network_RoomMember_SendGameInfo(){ // void RoomMember::SendGameInfo(const GameInfo& game_info) { // room_member_impl->current_game_info = game_info; // if (!IsConnected()) // return; // Packet packet; // packet.Write(static_cast(IdSetGameInfo)); // packet.Write(game_info.name); // packet.Write(game_info.id); // packet.Write(game_info.version); // room_member_impl->Send(std::move(packet)); // } BYTE pattern[]={ 0x49,0x8B,XX, 0x0F,0xB6,0x81,0x28,0x01,0x00,0x00, 0x90, 0x3C,0x02, 0x74,0x1C, 0x0F,0xB6,0x81,0x28,0x01,0x00,0x00, 0x90, 0x3C,0x03, 0x74,0x10, 0x0F,0xB6,0x81,0x28,0x01,0x00,0x00, 0x90, 0x3C,0x04, 0x0F,0x85,XX4 }; for(auto addr:Util::SearchMemory(pattern,sizeof(pattern),PAGE_EXECUTE,processStartAddress,processStopAddress)) { addr=MemDbg::findEnclosingAlignedFunction_strict(addr,0x100); //有两个,但另一个离起始很远 if(addr==0)continue; HookParam hp; hp.address=addr; hp.text_fun=[](hook_stack* stack, HookParam* hp, uintptr_t* data, uintptr_t* split, size_t* len){ // void __fastcall Network::RoomMember::SendGameInfo( // Network::RoomMember *this, // const AnnounceMultiplayerRoom::GameInfo *game_info) game_info=*(GameInfo*)stack->rdx; ConsoleOutput("%s %llx %s",game_info.name.c_str(),game_info.id,game_info.version.c_str()); }; return NewHook(hp,"yuzuGameInfo"); } return false; } bool yuzusuyu::attach_function() { Hook_Network_RoomMember_SendGameInfo(); ConsoleOutput("[Compatibility] Yuzu 1616+"); auto DoJitPtr=getDoJitAddress(); if(DoJitPtr==0)return false; spDefault.jittype=JITTYPE::YUZU; spDefault.minAddress = 0; spDefault.maxAddress = -1; ConsoleOutput("DoJitPtr %p",DoJitPtr); HookParam hp; hp.address=DoJitPtr; hp.text_fun=[](hook_stack* stack, HookParam* hp, uintptr_t* data, uintptr_t* split, size_t* len){ auto descriptor = *argidx(stack,idxDescriptor); // r8 auto entrypoint = *argidx(stack,idxEntrypoint); // r9 auto em_address = *(uintptr_t*)descriptor; if(!entrypoint)return; jitaddraddr(em_address,entrypoint,JITTYPE::YUZU); [&](){ if(emfunctionhooks.find(em_address)==emfunctionhooks.end())return; auto op=emfunctionhooks.at(em_address); if(!(checkiscurrentgame(op)))return; HookParam hpinternal; hpinternal.address=entrypoint; hpinternal.emu_addr=em_address;//用于生成hcode hpinternal.type=USING_STRING|NO_CONTEXT|BREAK_POINT|op.type; hpinternal.text_fun=(decltype(hpinternal.text_fun))op.hookfunc; hpinternal.filter_fun=(decltype(hpinternal.filter_fun))op.filterfun; hpinternal.argidx=op.argidx; hpinternal.padding=op.padding; hpinternal.jittype=JITTYPE::YUZU; NewHook(hpinternal,op._id); }(); delayinsertNewHook(em_address); }; return NewHook(hp,"YuzuDoJit"); } namespace{ int readu8(BYTE* addr){ int numBytes = 0; auto firstByte=*addr; if (firstByte <= 0x7F) { numBytes = 1; } else if ((firstByte & 0xE0) == 0xC0) { numBytes = 2; } else if ((firstByte & 0xF0) == 0xE0) { numBytes = 3; } else if ((firstByte & 0xF8) == 0xF0) { numBytes = 4; } return numBytes; } void T010012A017F18000(hook_stack* stack, HookParam* hp, uintptr_t* data, uintptr_t* split, size_t* len){ auto address=YUZU::emu_arg(stack)[2]; std::string s,bottom;uint32_t c; while (true) { c=*(BYTE*)(address); if(c==0)break; if(c>=0x20){ auto l=readu8((BYTE*)address); s+=std::string((char*)address,l); address+=l; } else{ address+=1; if(c==1){ bottom=""; while(true){ auto l=readu8((BYTE*)address); auto ss=std::string((char*)address,l); address+=l; if(ss[0]<0xa)break; bottom+=ss; s+=ss; } } else if(c==3){ while (true) { auto l=readu8((BYTE*)address); auto ss=std::string((char*)address,l); address+=l; if(ss[0]<0xa)break; } } else if(c==7){ address+=1; } else if(c==0xa){ return; } else if(c==0xd){ c = *(uint32_t*)address; auto count = c & 0xFF; c = c & 0xFFFFFF00; if (c == 0x0692c500) { for(int _=0;_ void ReadTextAndLenDW(hook_stack* stack, HookParam* hp, uintptr_t* data, uintptr_t* split, size_t* len){ auto address=YUZU::emu_arg(stack)[index]; *len=(*(DWORD*)(address+0x10))*2; *data=address+0x14; } template void ReadTextAndLenW(hook_stack* stack, HookParam* hp, uintptr_t* data, uintptr_t* split, size_t* len){ auto address=YUZU::emu_arg(stack)[index]; *len=(*(WORD*)(address+0x10))*2; *data=address+0x14; } template void mages_readstring(hook_stack* stack, HookParam* hp, uintptr_t* data, uintptr_t* split, size_t* len){ auto s=mages::readString(YUZU::emu_arg(stack)[0],idx); write_string_new(data,len,s); } bool F0100A3A00CC7E000(void* data, size_t* len, HookParam* hp){ auto s = std::wstring((wchar_t*)data,*len/2); std::wregex pattern1(L"^`([^@]+)."); s = std::regex_replace(s, pattern1, L"$1: "); s = std::regex_replace(s, std::wregex(L"\\$[A-Z]\\d*(,\\d*)*"), L""); std::wregex pattern2(L"\\$\\[([^$]+)..([^$]+).."); s = std::regex_replace(s, pattern2, L"$1"); return write_string_overwrite(data,len,s); } bool F010045C0109F2000(void* data, size_t* len, HookParam* hp){ auto s = std::string((char*)data,*len); s = std::regex_replace(s, std::regex("#[^\\]]*\\]"), ""); s = std::regex_replace(s, std::regex("#[^\\n]*\\n"), ""); s = std::regex_replace(s, std::regex("\\u3000"), ""); s = std::regex_replace(s, std::regex(u8"Save[\\s\\S]*データ"), ""); return write_string_overwrite(data,len,s); } bool F0100A1E00BFEA000(void* data, size_t* len, HookParam* hp){ auto s = std::wstring((wchar_t*)data,*len/2); s = std::regex_replace(s, std::wregex(L"[\\s]"), L""); s = std::regex_replace(s, std::wregex(L"(.+? \")"), L""); s = std::regex_replace(s, std::wregex(L"(\",.*)"), L""); s = std::regex_replace(s, std::wregex(L"(\" .*)"), L""); return write_string_overwrite(data,len,s); } bool F0100A1200CA3C000(void* data, size_t* len, HookParam* hp){ auto s = std::wstring((wchar_t*)data,*len/2); s = std::regex_replace(s, std::wregex(L"\\$d"), L"\n"); s = std::regex_replace(s, std::wregex(L"_"), L" "); s = std::regex_replace(s, std::wregex(L"@"), L" "); s = std::regex_replace(s, std::wregex(L"\\[([^\\/\\]]+)\\/[^\\/\\]]+\\]"), L"$1"); s = std::regex_replace(s, std::wregex(L"[~^$❝.❞'?,(-)!—:;-❛ ❜]"), L""); s = std::regex_replace(s, std::wregex(L"[A-Za-z0-9]"), L""); s = std::regex_replace(s, std::wregex(L"^\\s+"), L""); while (std::regex_search(s, std::wregex(L"^\\s*$"))) { s = std::regex_replace(s, std::wregex(L"^\\s*$"), L""); } return write_string_overwrite(data,len,s); } bool F0100F6A00A684000(void* data, size_t* len, HookParam* hp){ auto s = std::string((char*)data,*len); std::regex regex("(?=@.)"); std::sregex_token_iterator it(s.begin(), s.end(), regex, -1); std::sregex_token_iterator end; std::vector parts(it, end); s=""; for(auto part:parts){ if (startWith(part,"@")==false) { s += part; continue; } std::string tag = part.substr(0, 2); std::string content = part.substr(2); if (tag == "@r") { if(s=="")s=content; else s+='\n'+content; } else if (tag == "@u"||tag == "@v"||tag == "@w"||tag == "@o"||tag == "@a"||tag == "@z"||tag == "@c"||tag == "@s") { auto splited=strSplit(content,"."); if(splited.size()==2) s += splited[1]; } else if (tag == "@b") { } else { s += content; } } static auto katakanaMap =std::map{ {L"「",L"「"},{L"」",L"」"},{L"ァ",L"ぁ"},{L"ィ",L"ぃ"},{L"ゥ",L"ぅ"},{L"ェ",L"ぇ"},{L"ォ",L"ぉ"},{L"ャ",L"ゃ"},{ L"ュ",L"ゅ"},{L"ョ",L"ょ"},{L"ア",L"あ"},{L"イ",L"い"},{L"ウ",L"う"},{L"エ",L"え"},{L"オ",L"お"},{L"カ",L"か"},{ L"キ",L"き"},{L"ク",L"く"},{L"ケ",L"け"},{L"コ",L"こ"},{L"サ",L"さ"},{L"シ",L"し"},{L"ス",L"す"},{L"セ",L"せ"},{ L"ソ",L"そ"},{L"タ",L"た"},{L"チ",L"ち"},{L"ツ",L"つ"},{L"テ",L"て"},{L"ト",L"と"},{L"ナ",L"な"},{L"ニ",L"に"},{ L"ヌ",L"ぬ"},{L"ネ",L"ね"},{L"ノ",L"の"},{L"ハ",L"は"},{L"ヒ",L"ひ"},{L"フ",L"ふ"},{L"ヘ",L"へ"},{L"ホ",L"ほ"},{ L"マ",L"ま"},{L"ミ",L"み"},{L"ム",L"む"},{L"メ",L"め"},{L"モ",L"も"},{L"ヤ",L"や"},{L"ユ",L"ゆ"},{L"ヨ",L"よ"},{ L"ラ",L"ら"},{L"リ",L"り"},{L"ル",L"る"},{L"レ",L"れ"},{L"ロ",L"ろ"},{L"ワ",L"わ"},{L"ヲ",L"を"},{L"ン",L"ん"},{ L"ー",L"ー"},{L"ッ",L"っ"},{L"、",L"、"},{L"゚",L"?"},{L"゙",L"!"},{L"・",L"…"},{L"?",L" "},{L"。",L"。"},{ L"\uF8F0",L""},{L"\uFFFD",L""} // invalid (shift_jis A0 <=> EF A3 B0) | FF FD - F8 F0) }; auto remap=[](std::string s) { std::wstring result; auto ws=StringToWideString(s,932).value(); for (auto _c:ws) { std::wstring c; c.push_back(_c); if(katakanaMap.find(c)!=katakanaMap.end()){ result += katakanaMap[c]; } else result+=c; } return WideStringToString(result,932); }; return write_string_overwrite(data,len,remap(s)); } bool F01006590155AC000(void* data, size_t* len, HookParam* hp){ auto s = std::string((char*)data,*len); std::regex regex("(?=@.)"); std::sregex_token_iterator it(s.begin(), s.end(), regex, -1); std::sregex_token_iterator end; std::vector parts(it, end); s=""; int counter = 0; while (counter < parts.size()) { std::string part = parts[counter]; if (part[0] != '@') { s += part; counter++; continue; } std::string tag = part.substr(0, 2); std::string content = part.substr(2); if (tag == "@s" || tag == "@t") { s += content.substr(4); counter++; continue; } else if (tag == "@m") { s += content.substr(2); counter++; continue; } else if (tag == "@n") { s += '\n' + content; counter++; continue; } else if (tag == "@b" || tag == "@a" || tag == "@p" || tag == "@k") { s += content; counter++; continue; } else if (tag == "@v" || tag == "@h") { std::regex regex("[\\w_-]+"); s += std::regex_replace(content, regex, ""); counter++; continue; } else if (tag == "@r") { s += content + parts[counter + 2].substr(1); counter += 3; continue; } else if (tag == "@I") { if (content == "@" || parts[counter + 1].substr(0, 2) == "@r") { counter++; continue; } std::regex regex(u8"[\\d+─]"); s += std::regex_replace(content, regex, ""); counter += 3; continue; } else { s += content; counter++; continue; } } return write_string_overwrite(data,len,s); } bool F01000200194AE000(void* data, size_t* len, HookParam* hp){ auto s = std::string((char*)data,*len); static std::string readString_savedSentence=""; static bool readString_playerNameFlag=false; static std::string readString_playerName=u8"ラピス"; std::regex regex("(?=@.)"); std::sregex_token_iterator it(s.begin(), s.end(), regex, -1); std::sregex_token_iterator end; std::vector parts(it, end); s = ""; size_t counter = 0; while (counter < parts.size()) { const std::string& part = parts[counter]; if (part.empty() || part[0] != '@') { s += part; counter++; continue; } std::string tag = part.substr(0, 2); std::string content = part.substr(2); if (tag == "@*") { if (content.find("name") == 0) { if (readString_playerName == u8"ラピス") { s += content.substr(4) + readString_playerName + parts[counter + 4].substr(1); } else { s += content.substr(4) + parts[counter + 3].substr(1) + parts[counter + 4].substr(1); } counter += 5; continue; } } else if (tag == "@s" || tag == "@t") { s += content.substr(4); counter++; continue; } else if (tag == "@m") { s += content.substr(2); counter++; continue; } else if (tag == "@u") { readString_playerNameFlag = true; readString_savedSentence = ""; counter++; return write_string_overwrite(data,len,""); } else if (tag == "@n" || tag == "@b" || tag == "@a" || tag == "@p" || tag == "@k") { s += content; counter++; continue; } else if (tag == "@v" || tag == "@h") { std::regex regex("[\\w_-]+"); s += std::regex_replace(content, regex, ""); counter++; continue; } else if (tag == "@r") { s += content + parts[counter + 2].substr(1); counter += 3; continue; } else if (tag == "@I") { if (content == "@" || parts[counter + 1].substr(0, 2) == "@r") { counter++; continue; } std::regex regex(u8"[\\d+─]"); s += std::regex_replace(content, regex, ""); counter += 3; continue; } else { s += content; counter++; continue; } } if (!readString_playerNameFlag) { ; } else if (readString_savedSentence.empty()) { readString_savedSentence = s; s= ""; } else { std::string savedSentence = readString_savedSentence; readString_playerNameFlag = false; readString_savedSentence = ""; readString_playerName = s; s= s + "\n" + savedSentence; } return write_string_overwrite(data,len,s); } bool F0100EA001A626000(void* data, size_t* len, HookParam* hp){ auto s=utf32_to_utf16((uint32_t*)data,*len/4); if (s == L"  ") { return false; } s = std::regex_replace(s, std::wregex(L"\n+"), L" "); s = std::regex_replace(s, std::wregex(L"\\$\\{FirstName\\}"), L"ナーヤ"); if (startWith(s,L"#T")){ s = std::regex_replace(s, std::wregex(L"#T2[^#]+"), L""); s = std::regex_replace(s, std::wregex(L"#T\\d"), L""); } auto u32=utf16_to_utf32(s.c_str(),s.size()); return write_string_overwrite(data,len,u32); } bool F010093800DB1C000(void* data, size_t* len, HookParam* hp){ auto s=utf32_to_utf16((uint32_t*)data,*len/4); s = std::regex_replace(s, std::wregex(L"\\n+"), L" "); s = std::regex_replace(s, std::wregex(L"\\$\\{FirstName\\}"), L"シリーン"); if (startWith(s,L"#T")) { s = std::regex_replace(s, std::wregex(L"\\#T2[^#]+"), L""); s = std::regex_replace(s, std::wregex(L"\\#T\\d"), L""); } auto u32=utf16_to_utf32(s.c_str(),s.size()); return write_string_overwrite(data,len,u32); } bool F0100F7E00DFC8000(void* data, size_t* len, HookParam* hp){ auto s=utf32_to_utf16((uint32_t*)data,*len/4); s = std::regex_replace(s, std::wregex(L"[\\s]"), L" "); s = std::regex_replace(s, std::wregex(L"#KW"), L""); s = std::regex_replace(s, std::wregex(L"#C\\(TR,0xff0000ff\\)"), L""); s = std::regex_replace(s, std::wregex(L"#P\\(.*\\)"), L""); auto u32=utf16_to_utf32(s.c_str(),s.size()); return write_string_overwrite(data,len,u32); } bool F0100982015606000(void* data, size_t* len, HookParam* hp){ auto s=std::wstring((wchar_t*)data,*len/2); s = std::regex_replace(s, std::wregex(L"\\n+|(\\\\n)+"), L" "); return write_string_overwrite(data,len,s); } bool F0100C4E013E5E000(void* data, size_t* len, HookParam* hp){ auto s=std::wstring((wchar_t*)data,*len/2); s = std::regex_replace(s, std::wregex(L"\\\\n"), L" "); return write_string_overwrite(data,len,s); } bool F010001D015260000(void* data, size_t* len, HookParam* hp){ auto s=std::string((char*)data,*len); if(startWith(s,"#Key"))return false; strReplace(s,"#n","\n"); return write_string_overwrite(data,len,s); } bool F0100E1E00E2AE000(void* data, size_t* len, HookParam* hp){ auto s=std::string((char*)data,*len); s = std::regex_replace(s, std::regex("#n"), "\n"); s = std::regex_replace(s, std::regex("[A-Za-z0-9]"), ""); s = std::regex_replace(s, std::regex("[~^,\\-\\[\\]#]"), ""); return write_string_overwrite(data,len,s); } bool F0100DE200C0DA000(void* data, size_t* len, HookParam* hp){ StringReplacer((char*)data,len,"#n",2," ",1); StringReplacer((char*)data,len,"\n",1," ",1); return true; } bool F0100AEC013DDA000(void* data, size_t* len, HookParam* hp){ auto s=std::string((char*)data,*len); static std::string ss; if(ss==s)return false; ss=s; return true; } bool F0100F7801B5DC000(void* data, size_t* len, HookParam* hp){ if(!all_ascii((wchar_t*)data))return false;//chaos on first load. StringReplacer((wchar_t*)data,len,L"
",4,L"\n",1); return true; } bool F0100925014864000(void* data, size_t* len, HookParam* hp){ auto s=std::string((char*)data,*len); s = std::regex_replace(s, std::regex("(#n)+"), " "); s = std::regex_replace(s, std::regex("(#[A-Za-z]+\\[(\\d*[.])?\\d+\\])+"), ""); return write_string_overwrite(data,len,s); } bool F0100936018EB4000(void* data, size_t* len, HookParam* hp){ auto s=utf32_to_utf16((uint32_t*)data,*len/4); s = std::regex_replace(s, std::wregex(L"<[^>]+>"), L""); s = std::regex_replace(s, std::wregex(L"\n+"), L" "); auto u32=utf16_to_utf32(s.c_str(),s.size()); return write_string_overwrite(data,len,u32); } template void T0100B0100E26C000(hook_stack* stack, HookParam* hp, uintptr_t* data, uintptr_t* split, size_t* len){ auto address=YUZU::emu_arg(stack)[index]; if(type==2) address+=0xA; auto length=(*(DWORD*)(address+0x10))*2; *len=length; *data=address+0x14; } bool F010045C014650000(void* data, size_t* len, HookParam* hp){ auto s=std::string((char*)data,*len); std::regex pattern("(@(\\/)?[a-zA-Z#](\\(\\d+\\))?|)[*<>]+"); s = std::regex_replace(s, pattern, ""); return write_string_overwrite(data,len,s); } bool F01008C0016544000(void* data, size_t* len, HookParam* hp){ auto s=std::wstring((wchar_t*)data,*len/2); s = std::regex_replace(s, std::wregex(L"<[^>]+>"), L" "); return write_string_overwrite(data,len,s); } bool F0100FB7019ADE000(void* data, size_t* len, HookParam* hp){ static int idx=0; return ((++idx)%2==1); } bool F01006F000B056000(void* data, size_t* len, HookParam* hp){ auto s=std::wstring((wchar_t*)data,*len/2); s = std::regex_replace(s, std::wregex(L"\\[.*?\\]"), L" "); return write_string_overwrite(data,len,s); } bool F0100068019996000(void* data, size_t* len, HookParam* hp){ auto s=std::string((char*)data,*len); s = std::regex_replace(s, std::regex("%N"), "\n"); return write_string_overwrite(data,len,s); } bool F0100ADC014DA0000(void* data, size_t* len, HookParam* hp){ auto s=std::wstring((wchar_t*)data,*len/2); std::wregex symbolRegex(L"[~^$(,)]"); std::wregex alphanumericRegex(L"[A-Za-z0-9]"); std::wregex atRegex(L"@"); std::wregex leadingSpaceRegex(L"^\\s+"); s = std::regex_replace(s, symbolRegex, L""); s = std::regex_replace(s, alphanumericRegex, L""); s = std::regex_replace(s, atRegex, L" "); s = std::regex_replace(s, leadingSpaceRegex, L""); return write_string_overwrite(data,len,s); } bool F0100AFA01750C000(void* data, size_t* len, HookParam* hp){ auto s=std::string((char*)data,*len); std::regex newlineRegex("(\\\\n)+"); std::regex specialCharsRegex("\\\\d$|^\\@[a-z]+|#.*?#|\\$"); s = std::regex_replace(s, newlineRegex, " "); s = std::regex_replace(s, specialCharsRegex, ""); return write_string_overwrite(data,len,s); } bool F0100B6900A668000(void* data, size_t* len, HookParam* hp){ auto s=std::string((char*)data,*len); s = std::regex_replace(s, std::regex("#N"), "\n"); std::regex colorRegex("#Color\\[[\\d]+\\]"); s = std::regex_replace(s, colorRegex, ""); return write_string_overwrite(data,len,s); } bool F0100BD700E648000(void* data, size_t* len, HookParam* hp){ StringReplacer((char*)data,len,"*",1," ",1); StringReplacer((char*)data,len,u8"ゞ",sizeof(u8"ゞ"),u8"!?",sizeof(u8"!?")); return true; } bool F0100D9500A0F6000(void* data, size_t* len, HookParam* hp){ StringReplacer((char*)data,len,u8"㊤",sizeof(u8"㊤"),u8"―",sizeof(u8"―")); StringReplacer((char*)data,len,u8"㊥",sizeof(u8"㊥"),u8"―",sizeof(u8"―")); StringReplacer((char*)data,len,u8"^㌻",sizeof(u8"^㌻"),u8" ",sizeof(u8" "));// \n return true; } bool F0100DA201E0DA000(void* data, size_t* len, HookParam* hp){ auto s = std::wstring((wchar_t*)data,*len/2); s = std::regex_replace(s, std::wregex(L"[\\s]"), L""); return write_string_overwrite(data,len,s); } bool F01002C0008E52000(void* data, size_t* len, HookParam* hp){ auto s = std::string((char*)data,*len); s = std::regex_replace(s, std::regex("(YUR)"), u8"ユーリ"); s = std::regex_replace(s, std::regex("(FRE)"), u8"フレン"); s = std::regex_replace(s, std::regex("(RAP)"), u8"ラピード"); s = std::regex_replace(s, std::regex("(EST|ESU)"), u8"エステル"); s = std::regex_replace(s, std::regex("(KAR)"), u8"カロル"); s = std::regex_replace(s, std::regex("(RIT)"), u8"リタ"); s = std::regex_replace(s, std::regex("(RAV|REI)"), u8"レイヴン"); s = std::regex_replace(s, std::regex("(JUD)"), u8"ジュディス"); s = std::regex_replace(s, std::regex("(PAT)"), u8"パティ"); s = std::regex_replace(s, std::regex("(DUK|DYU)"), u8"デューク"); s = std::regex_replace(s, std::regex("[A-Za-z0-9]"), ""); s = std::regex_replace(s, std::regex("[,(-)_]"), ""); s = std::regex_replace(s, std::regex("^\\s+"), ""); while (std::regex_search(s, std::regex("^\\s*$"))) { s = std::regex_replace(s, std::regex("^\\s*$"), ""); } return write_string_overwrite(data,len,s); } bool F01005940182EC000(void* data, size_t* len, HookParam* hp){ auto s = std::wstring((wchar_t*)data,*len/2); std::wregex whitespaceRegex(L"\\s"); s = std::regex_replace(s, whitespaceRegex, L""); std::wregex colorRegex(L"(.*?)<\\/color>"); s = std::regex_replace(s, colorRegex, L"$1"); return write_string_overwrite(data,len,s); } void T01005940182EC000(hook_stack* stack, HookParam* hp, uintptr_t* data, uintptr_t* split, size_t* len){ auto address=YUZU::emu_arg(stack)[0]; *data=address+0x14; *len=wcslen((wchar_t*)*data)*2; } template bool F0100B0601852A000(void* data, size_t* len, HookParam* hp){ auto s = std::wstring((wchar_t*)data,*len/2); static std::wstring last; if(last==s)return false; last=s; return true; } bool F010027100C79A000(void* data, size_t* len, HookParam* hp){ auto s = std::string((char*)data,*len); static std::string last; if(last==s)return false; last=s; return true; } template bool F0100B0C016164000(void* data, size_t* len, HookParam* hp){ auto s = std::wstring((wchar_t*)data,*len/2); std::wregex htmlTagsPattern(L"<[^>]*>"); std::wregex lettersAndNumbersPattern(L"[A-Za-z0-9]"); s = std::regex_replace(s, htmlTagsPattern, L""); s = std::regex_replace(s, lettersAndNumbersPattern, L""); static std::wstring last; if(last==s)return false; last=s; return write_string_overwrite(data,len,s); } template bool F010043B013C5C000(void* data, size_t* len, HookParam* hp){ auto s = std::wstring((wchar_t*)data,*len/2); std::wregex htmlTagsPattern(L"<[^>]*>"); s = std::regex_replace(s, htmlTagsPattern, L""); static std::wstring last; if(last==s)return false; last=s; return write_string_overwrite(data,len,s); } template bool F010055D009F78000(void* data, size_t* len, HookParam* hp){ auto s = std::string((char*)data,*len); std::regex pattern3("\\d+"); s = std::regex_replace(s, pattern3, ""); static std::string last; if(last==s)return false; last=s; return write_string_overwrite(data,len,s); } bool F010080C01AA22000(void* data, size_t* len, HookParam* hp){ auto s = std::string((char*)data,*len); std::regex furiganaRegex("#\\d+R.*?#"); s = std::regex_replace(s, furiganaRegex, ""); std::regex lettersNumbersRegex("[A-Za-z0-9]"); s = std::regex_replace(s, lettersNumbersRegex, ""); std::regex symbolsRegex(u8"[().%,_!#©&:?/]"); s = std::regex_replace(s, symbolsRegex, ""); return write_string_overwrite(data,len,s); } template bool F0100CB700D438000(void* data, size_t* len, HookParam* hp){ auto s = std::string((char*)data,*len); std::regex furiganaRegex("(.*?)<\\/RB>(.*?)<\\/RT><\\/RUBY>"); s = std::regex_replace(s, furiganaRegex, "$1"); std::regex htmlTagRegex("<[^>]*>"); s = std::regex_replace(s, htmlTagRegex, ""); static std::string last; if(last==s)return false; last=s; return write_string_overwrite(data,len,s); } bool F01005C301AC5E000(void* data, size_t* len, HookParam* hp){ auto s = std::string((char*)data,*len); s = std::regex_replace(s, std::regex(".*_.*_.*"), "");//SIR_C01_016,ERU_C00_000 s = std::regex_replace(s, std::regex("\\.mp4"), ""); s = std::regex_replace(s, std::regex("@v"), ""); s = std::regex_replace(s, std::regex("@n"), "\n"); return write_string_overwrite(data,len,s); } bool F0100815019488000_text(void* data, size_t* len, HookParam* hp){ //@n@vaoi_s01_0110「うんうん、そうかも!」 auto s = std::string((char*)data,*len); s = std::regex_replace(s, std::regex("@.*_.*_\\d+"), ""); s = std::regex_replace(s, std::regex("@n"), ""); return write_string_overwrite(data,len,s); } bool F0100815019488000_name(void* data, size_t* len, HookParam* hp){ // あおい@n@vaoi_s01_0110「うんうん、そうかも!」 auto s = std::string((char*)data,*len); if(s.find("@n")==s.npos)return false; s = std::regex_replace(s, std::regex("(.*)@n.*"), "$1"); return write_string_overwrite(data,len,s); } template bool F010072000BD32000(void* data, size_t* len, HookParam* hp){ auto s = std::string((char*)data,*len); std::regex lineBreakRegex("\\[~\\]"); s = std::regex_replace(s, lineBreakRegex, "\n"); std::regex romRegex("rom:[\\s\\S]*$"); s = std::regex_replace(s, romRegex, ""); std::regex furiganaRegex("\\[[\\w\\d]*\\[[\\w\\d]*\\].*?\\[\\/\\[\\w\\d]*\\]\\]"); s = std::regex_replace(s, furiganaRegex, ""); std::regex bracketsRegex("\\[.*?\\]"); s = std::regex_replace(s, bracketsRegex, ""); static std::string last; if(last==s)return false; last=s; return write_string_overwrite(data,len,s); } template bool F01009B50139A8000(void* data, size_t* len, HookParam* hp){ auto s = std::wstring((wchar_t*)data,*len/2); std::wregex htmlTagRegex(L"<[^>]*>"); s = std::regex_replace(s, htmlTagRegex, L""); std::wregex hoursRegex(L"\\b\\d{2}:\\d{2}\\b"); s = std::regex_replace(s, hoursRegex, L""); auto _=L"^(?:スキップ|むしる|取り出す|話す|選ぶ|ならびかえ|閉じる|やめる|undefined|決定|ボロのクワ|拾う)$(\\r?\\n|\\r)?"; while (std::regex_search(s, std::wregex(_))) { s = std::regex_replace(s, std::wregex(_), L""); } while (std::regex_search(s, std::wregex(L"^\\s*$"))) { s = std::regex_replace(s, std::wregex(L"^\\s*$"), L""); } static std::wstring last; if(last==s)return false; last=s; return write_string_overwrite(data,len,s); } bool F010027401A2A2000(void* data, size_t* len, HookParam* hp){ auto s = std::wstring((wchar_t*)data,*len/2); std::wregex dicRegex(L"\\[dic.*?text="); s = std::regex_replace(s, dicRegex, L""); std::wregex rubyRegex(L"\\[|'.*?\\]"); s = std::regex_replace(s, rubyRegex, L""); std::wregex closingBraceRegex(L"\\]"); s = std::regex_replace(s, closingBraceRegex, L""); std::wregex whitespaceRegex(L"\\s| "); s = std::regex_replace(s, whitespaceRegex, L""); return write_string_overwrite(data,len,s); } template bool F0100BD4014D8C000(void* data, size_t* len, HookParam* hp){ auto s = std::wstring((wchar_t*)data,*len/2); s = std::regex_replace(s, std::wregex(L"<[^>]*>"), L""); s = std::regex_replace(s, std::wregex(L".*?_"), L""); static std::wstring last; if(last==s)return false; last=s; return write_string_overwrite(data,len,s); } template bool F0100C7400CFB4000(void* data, size_t* len, HookParam* hp){ auto s = std::wstring((wchar_t*)data,*len/2); s = std::regex_replace(s, std::wregex(L"\\d"), L""); s = std::regex_replace(s, std::wregex(L"<[^>]*>"), L""); while (std::regex_search(s, std::wregex(L"^\\s*$"))) { s = std::regex_replace(s, std::wregex(L"^\\s*$"), L""); } static std::wstring last; if(last==s)return false; last=s; return write_string_overwrite(data,len,s); } bool F0100CB9018F5A000(void* data, size_t* len, HookParam* hp){ auto s = std::wstring((wchar_t*)data,*len/2); s = std::regex_replace(s, std::wregex(L"<[^>]*>"), L""); s = std::regex_replace(s, std::wregex(L"\\{([^{}]+):[^{}]+\\}"), L"$1"); return write_string_overwrite(data,len,s); } bool F010028D0148E6000(void* data, size_t* len, HookParam* hp){ auto s = std::string((char*)data,*len); s = std::regex_replace(s, std::regex("{|\\/.*?}|\\[.*?]", std::regex_constants::grep), ""); s = std::regex_replace(s, std::regex("(\\\\\\\\c|\\\\\\\\n)+"), " "); s = std::regex_replace(s, std::regex(",.*$"), " "); return write_string_overwrite(data,len,s); } bool F0100F4401940A000(void* data, size_t* len, HookParam* hp){ auto s = std::wstring((wchar_t*)data,*len/2); s = std::regex_replace(s, std::wregex(L"[\\r\\n]+"), L""); s = std::regex_replace(s, std::wregex(L"<[^>]+>|\\[\\[[^]]+\\]\\]"), L""); return write_string_overwrite(data,len,s); } bool F0100B5500CA0C000(void* data, size_t* len, HookParam* hp){ auto s = std::string((char*)data,*len); std::regex pattern1("\\\\u0000+$"); std::regex pattern2("\\\\"); std::regex pattern3("\\$"); s = std::regex_replace(s, pattern1, ""); s = std::regex_replace(s, pattern2, ""); s = std::regex_replace(s, pattern3, ""); return write_string_overwrite(data,len,s); } void T0100B5500CA0C000(hook_stack* stack, HookParam* hp, uintptr_t* data, uintptr_t* split, size_t* len){ auto address=YUZU::emu_arg(stack)[6]; *data=address; *len=*(WORD*)(address-2); } bool F0100A8401A0A8000(void* data, size_t* len, HookParam* hp){ auto s = std::wstring((wchar_t*)data,*len/2); std::wregex samePageNewLineRegex(L"[\r\n]+"); s = std::regex_replace(s, samePageNewLineRegex, L""); std::wregex newPageTextRegex(L"(<.+?>)+"); s = std::regex_replace(s, newPageTextRegex, L"\r\n"); strReplace(s,L"",L"(L)"); strReplace(s,L"",L"(ZL)"); strReplace(s,L"",L"(Y)"); strReplace(s,L"",L"(X)"); strReplace(s,L"",L"(A)"); strReplace(s,L"",L"(B)"); strReplace(s,L"",L"(+)"); strReplace(s,L"",L"(-)"); strReplace(s,L"",L"(DPAD_DOWN)"); strReplace(s,L"",L"(DPAD_LEFT)"); strReplace(s,L"",L"(LSTICK)"); strReplace(s,L"",L"(L3)"); return write_string_overwrite(data,len,s); } bool F0100BC0018138000(void* data, size_t* len, HookParam* hp){ auto s = std::wstring((wchar_t*)data,*len/2); std::wregex tagContentRegex(L"<[^>]*>([^<]*)<\\/[^>]*>"); s = std::regex_replace(s, tagContentRegex, L""); s = std::regex_replace(s, std::wregex(L""), L"L"); s = std::regex_replace(s, std::wregex(L""), L"R"); s = std::regex_replace(s, std::wregex(L""), L"A"); s = std::regex_replace(s, std::wregex(L""), L"B"); s = std::regex_replace(s, std::wregex(L""), L"X"); s = std::regex_replace(s, std::wregex(L""), L"Y"); s = std::regex_replace(s, std::wregex(L""), L"+"); s = std::regex_replace(s, std::wregex(L""), L"-"); s = std::regex_replace(s, std::wregex(L"<[^>]+>"), L""); return write_string_overwrite(data,len,s); } bool F0100D7800E9E0000(void* data, size_t* len, HookParam* hp){ auto s = std::wstring((wchar_t*)data,*len/2); s = std::regex_replace(s, std::wregex(L"[A-Za-z0-9]"), L""); s = std::regex_replace(s, std::wregex(L"<[^>]*>"), L""); s = std::regex_replace(s, std::wregex(L"^二十五字二.*(\r?\n|\r)?"), L""); s = std::regex_replace(s, std::wregex(L"^操作を割り当てる.*(\r?\n|\r)?"), L""); s = std::regex_replace(s, std::wregex(L"^上記アイコンが出.*(\r?\n|\r)?"), L""); s = std::regex_replace(s, std::wregex(L"[()~^,ö.!]"), L""); static std::wstring last; if(last==s)return false; last=s; return write_string_overwrite(data,len,s); } template void T0100CF400F7CE000(hook_stack* stack, HookParam* hp, uintptr_t* data, uintptr_t* split, size_t* len){ auto address=YUZU::emu_arg(stack)[idx]; std::string s; int i=0; while(1){ auto c=*(BYTE*)(address+i); if(c==0)break; if(c<0x20&&c>0x10){ auto command=*(BYTE*)(address+i+1); if(command==0x80) i+=3; else if(command==0xb8) i+=4; else{ auto sz=*(BYTE*)(address+i+2); i+=3+sz; } } else if(c==0xaa){ i+=1; } else if(c==0xff){ i+=0x30; } else{ auto l=1+IsDBCSLeadByteEx(932,c); s+=std::string((char*)(address+i),l); i+=l; } } write_string_new(data,len,s); } void T0100DB300B996000(hook_stack* stack, HookParam* hp, uintptr_t* data, uintptr_t* split, size_t* len){ auto address=YUZU::emu_arg(stack)[8]+1; std::string s; int i=0; while(1){ auto c=*(BYTE*)(address+i); if(c==0)break; if(c<0x20&&c>0x10){ auto sz=*(BYTE*)(address+i+2); i+=3+sz; } else{ auto l=1+IsDBCSLeadByteEx(932,c); s+=std::string((char*)(address+i),l); i+=l; } } write_string_new(data,len,s); } bool F0100CBA014014000(void* data, size_t* len, HookParam* hp){ auto s = std::string((char*)data,*len); s = std::regex_replace(s, std::regex(u8"《.*?》"), ""); s = std::regex_replace(s, std::regex("<[^>]*>"), ""); return write_string_overwrite(data,len,s); } template bool F0100CC401A16C000(void* data, size_t* len, HookParam* hp){ auto s = std::string((char*)data,*len); s = std::regex_replace(s, std::regex("<[^>]*>"), ""); s = std::regex_replace(s, std::regex("\\d+"), ""); if(s=="")return false; static std::string last; if(last==s)return false; last=s; return write_string_overwrite(data,len,s); } bool F0100BDD01AAE4000(void* data, size_t* len, HookParam* hp){ auto s = std::string((char*)data,*len); s = std::regex_replace(s, std::regex("(#Ruby\\[)([^,]+).([^\\]]+)."), "$2"); s = std::regex_replace(s, std::regex("(#n)+"), " "); s = std::regex_replace(s, std::regex("(#[A-Za-z]+[(\\d*[.])?\\d+])+"), ""); return write_string_overwrite(data,len,s); } bool F0100C310110B4000(void* data, size_t* len, HookParam* hp){ auto s = std::string((char*)data,*len); s = std::regex_replace(s, std::regex("(#Ruby\\[)([^,]+).([^\\]]+)."), "$2"); s = std::regex_replace(s, std::regex("#Color\\[[\\d]+\\]"), ""); s = std::regex_replace(s, std::regex(u8"( #n)+"), "#n"); s = std::regex_replace(s, std::regex("#n+"), " "); return write_string_overwrite(data,len,s); } bool F010003F003A34000(void* data, size_t* len, HookParam* hp){ auto s = std::wstring((wchar_t*)data,*len/2); s = std::regex_replace(s, std::wregex(L"[\\s\\S]*$"), L""); s = std::regex_replace(s, std::wregex(L"\n+"), L" "); s = std::regex_replace(s, std::wregex(L"\\s"), L""); s = std::regex_replace(s, std::wregex(L"[＀븅]"), L""); return write_string_overwrite(data,len,s); } bool F01007B601C608000(void* data, size_t* len, HookParam* hp){ auto s = std::wstring((wchar_t*)data,*len/2); s = std::regex_replace(s, std::wregex(L"<[^>]*>"), L""); s = std::regex_replace(s, std::wregex(L"\\[.*?\\]"), L""); std::vector lines = strSplit(s, L"\n"); std::wstring result; for (const std::wstring& line : lines) { if(result.empty()==false)result+=L"\n"; std::wregex commandRegex(L"^(?:メニュー|システム|Ver\\.)$(\\r?\\n|\\r)?"); s = std::regex_replace(s, commandRegex, L""); std::wregex emptyLineRegex(L"^\\s*$"); s = std::regex_replace(s, emptyLineRegex, L""); } static std::wstring last; if(last==s)return false; last=s; return write_string_overwrite(data,len,s); } bool F010046601125A000(void* data, size_t* len, HookParam* hp){ auto s=utf32_to_utf16((uint32_t*)data,*len/4); s = std::regex_replace(s, std::wregex(L"(.+?).+?"), L"$1"); s = std::regex_replace(s, std::wregex(L"\n+"), L" "); auto u32=utf16_to_utf32(s.c_str(),s.size()); return write_string_overwrite(data,len,u32); } bool F0100771013FA8000(void* data, size_t* len, HookParam* hp){ auto s=std::wstring((wchar_t*)data,*len/2); s = std::regex_replace(s, std::wregex(L"
"), L"\n"); s = std::regex_replace(s, std::wregex(L"^(\\s+)"), L""); return write_string_overwrite(data,len,s); } bool F0100556015CCC000(void* data, size_t* len, HookParam* hp){ auto s=std::string((char*)data,*len); std::regex rubiRegex("\\[[^\\]]+."); s = std::regex_replace(s, rubiRegex, ""); s = std::regex_replace(s, std::regex("\\\\k|\\\\x|%C|%B|%p-1;"), ""); std::regex colorRegex("#[0-9a-fA-F]+;([^%#]+)(%r)?"); s = std::regex_replace(s, colorRegex, "$1"); static std::setdump; if(dump.find(s)!=dump.end())return false; dump.insert(s); return write_string_overwrite(data,len,s); } template bool F0100CC80140F8000(void* data, size_t* len, HookParam* hp){ auto s=std::wstring((wchar_t*)data,*len/2); s = std::regex_replace(s, std::wregex(L"^(?:スキップ|メニュー|バックログ|ズームイン|ズームアウト|ガイド OFF|早送り|オート|人物情報|ユニット表示切替|カメラリセット|ガイド表示切替|ページ切替|閉じる|コマンド選択|詳細|シミュレーション|移動)$([\\r?\\n|\\r])?"), L""); s = std::regex_replace(s, std::wregex(L"[A-Za-z0-9]"), L""); s = std::regex_replace(s, std::wregex(L"[().%,_!#©&:?/]"), L""); while (std::regex_search(s, std::wregex(L"^\\s*$"))) { s = std::regex_replace(s, std::wregex(L"^\\s*$"), L""); } static std::wstring last; if(last==s)return false; last=s; return write_string_overwrite(data,len,s); } bool F0100D9A01BD86000(void* data, size_t* len, HookParam* hp){ auto s=std::wstring((wchar_t*)data,*len/2); s = std::regex_replace(s, std::wregex(L"[\\s]"), L""); s = std::regex_replace(s, std::wregex(L"\\\\n"), L""); return write_string_overwrite(data,len,s); } bool F010042300C4F6000(void* data, size_t* len, HookParam* hp){ auto s=std::wstring((wchar_t*)data,*len/2); s = std::regex_replace(s, std::wregex(L"[\\s]"), L""); s = std::regex_replace(s, std::wregex(L"(.+?/)"), L""); s = std::regex_replace(s, std::wregex(L"(\" .*)"), L""); s = std::regex_replace(s, std::wregex(L"^(.+?\")"), L""); return write_string_overwrite(data,len,s); } bool F010044800D2EC000(void* data, size_t* len, HookParam* hp){ auto s=std::wstring((wchar_t*)data,*len/2); s = std::regex_replace(s, std::wregex(L"\\n+"), L" "); s = std::regex_replace(s, std::wregex(L"\\"), L"???"); s = std::regex_replace(s, std::wregex(L"<.+?>"), L""); return write_string_overwrite(data,len,s); } template bool F010021300F69E000(void* data, size_t* len, HookParam* hp){ auto s=std::wstring((wchar_t*)data,*len/2); s = std::regex_replace(s, std::wregex(L"\\$[a-z]"), L""); s = std::regex_replace(s, std::wregex(L"@"), L""); static std::wstring last; if(last==s)return false; last=s; return write_string_overwrite(data,len,s); } bool F010050000705E000(void* data, size_t* len, HookParam* hp){ auto s=std::string((char*)data,*len); s = std::regex_replace(s, std::regex("\\s"), ""); s = std::regex_replace(s, std::regex("
"), "\n"); s = std::regex_replace(s, std::regex("<([^:>]+):[^>]+>"), "$1"); s = std::regex_replace(s, std::regex("<[^>]+>"), ""); return write_string_overwrite(data,len,s); } bool F01001B900C0E2000(void* data, size_t* len, HookParam* hp){ auto s=std::string((char*)data,*len); std::regex whitespaceRegex("\\s"); s = std::regex_replace(s, whitespaceRegex, ""); std::regex hashRegex("#[A-Za-z]+(\\[(\\d*\\.)?\\d+\\])+"); s = std::regex_replace(s, hashRegex, ""); std::regex hashLetterRegex("#[a-z]"); s = std::regex_replace(s, hashLetterRegex, ""); std::regex lowercaseRegex("[a-z]"); s = std::regex_replace(s, lowercaseRegex, ""); return write_string_overwrite(data,len,s); } bool F0100217014266000(void* data, size_t* len, HookParam* hp){ auto s=std::wstring((wchar_t*)data,*len/2); std::wregex htmlTagRegex(L"<[^>]*>"); s = std::regex_replace(s, htmlTagRegex, L""); std::wregex furiganaRegex(L"{([^{}]+):[^{}]+}"); s = std::regex_replace(s, furiganaRegex, L"$1"); while (std::regex_search(s, std::wregex(L"^\\s+"))) { s = std::regex_replace(s, std::wregex(L"^\\s+"), L""); } return write_string_overwrite(data,len,s); } bool F010007500F27C000(void* data, size_t* len, HookParam* hp){ auto s=std::wstring((wchar_t*)data,*len/2); std::wregex htmlTagRegex(L"<[^>]*>"); s = std::regex_replace(s, htmlTagRegex, L""); auto _=L"^(?:決定|進む|ページ移動|ノート全体図|閉じる|もどる|セーブ中)$(\\r?\\n|\\r)?"; while (std::regex_search(s, std::wregex(_))) { s = std::regex_replace(s, std::wregex(_), L""); } while (std::regex_search(s, std::wregex(L"^\\s*$"))) { s = std::regex_replace(s, std::wregex(L"^\\s*$"), L""); } static std::wstring last; if(last==s)return false; last=s; return write_string_overwrite(data,len,s); } bool F0100874017BE2000(void* data, size_t* len, HookParam* hp){ auto s=std::wstring((wchar_t*)data,*len/2); s = std::regex_replace(s, std::wregex(L"\\n+|(\\\\n)+"), L" "); s = std::regex_replace(s, std::wregex(L"#n"), L""); return write_string_overwrite(data,len,s); } bool F010094601D910000(void* data, size_t* len, HookParam* hp){ auto s=std::wstring((wchar_t*)data,*len/2); s = std::regex_replace(s, std::wregex(L"\\<.*?\\>"), L""); s = std::regex_replace(s, std::wregex(L"\\[.*?\\]"), L""); s = std::regex_replace(s, std::wregex(L"\\s"), L""); return write_string_overwrite(data,len,s); } bool F010079201BD88000(void* data, size_t* len, HookParam* hp){ auto s=std::wstring((wchar_t*)data,*len/2); s = std::regex_replace(s, std::wregex(L"[\\s]"), L""); s = std::regex_replace(s, std::wregex(L"\\\\n"), L""); return write_string_overwrite(data,len,s); } bool F010086C00AF7C000(void* data, size_t* len, HookParam* hp){ auto s=std::string((char*)data,*len); s = std::regex_replace(s, std::regex("\\[([^\\]]+)\\/[^\\]]+\\]"), "$1"); s = std::regex_replace(s, std::regex("\\s+"), " "); s = std::regex_replace(s, std::regex("\\\\n"), " "); s = std::regex_replace(s, std::regex("<[^>]+>|\\[[^\\]]+\\]"), ""); return write_string_overwrite(data,len,s); } bool F010079C017B98000(void* data, size_t* len, HookParam* hp){ auto s=utf32_to_utf16((uint32_t*)data,*len/4); s = std::regex_replace(s, std::wregex(L"[\\s]"), L""); s = std::regex_replace(s, std::wregex(L"#KW"), L""); s = std::regex_replace(s, std::wregex(L"#C\\(TR,0xff0000ff\\)"), L""); s = std::regex_replace(s, std::wregex(L"【SW】"), L""); s = std::regex_replace(s, std::wregex(L"【SP】"), L""); s = std::regex_replace(s, std::wregex(L"#P\\(.*\\)"), L""); auto u32=utf16_to_utf32(s.c_str(),s.size()); return write_string_overwrite(data,len,u32); } bool F010061A01C1CE000(void* data, size_t* len, HookParam* hp){ auto s=std::wstring((wchar_t*)data,*len/2); s = std::regex_replace(s, std::wregex(L"[\\s]"), L""); s = std::regex_replace(s, std::wregex(L"sound"), L" "); return write_string_overwrite(data,len,s); } bool F0100F7401AA74000(void* data, size_t* len, HookParam* hp){ auto s=std::string((char*)data,*len); s = std::regex_replace(s, std::regex("[\\s]"), ""); s = std::regex_replace(s, std::regex("@[a-z]"), ""); s = std::regex_replace(s, std::regex("@[0-9]"), ""); return write_string_overwrite(data,len,s); } bool F0100FC2019346000(void* data, size_t* len, HookParam* hp){ StringReplacer((char*)data,len,"#n",2," ",1); return true; } bool F0100FDB00AA80000(void* data, size_t* len, HookParam* hp){ auto s=std::string((char*)data,*len); s = std::regex_replace(s, std::regex("\\[([^\\]]+)\\/[^\\]]+\\]"), "$1"); s = std::regex_replace(s, std::regex("<[^>]*>"), ""); return write_string_overwrite(data,len,s); } bool F0100FF500E34A000(void* data, size_t* len, HookParam* hp){ auto s=std::string((char*)data,*len); s = std::regex_replace(s, std::regex("\\[.*?\\]"), ""); s = std::regex_replace(s, std::regex("\\n+"), " "); return write_string_overwrite(data,len,s); } bool F01005E9016BDE000(void* data, size_t* len, HookParam* hp){ auto s=std::string((char*)data,*len); std::regex patt("/\\/\\/ remove rubi\\n\\ss = s.replace\\(patt, ''\\);/"); s = std::regex_replace(s, patt, ""); s = std::regex_replace(s, std::regex("\\\\k|\\\\x|%C|%B|%p-1;"), ""); s = std::regex_replace(s, std::regex("#[0-9a-fA-F]+;([^%#]+)(%r)?"), "$1"); s = std::regex_replace(s, std::regex("\\\\n"), " "); return write_string_overwrite(data,len,s); } bool F010065301A2E0000(void* data, size_t* len, HookParam* hp){ auto s=std::wstring((wchar_t*)data,*len/2); s = std::regex_replace(s, std::wregex(L"\\d+"), L""); s = std::regex_replace(s, std::wregex(L"<[^>]*>"), L""); return write_string_overwrite(data,len,s); } bool F01002AE00F442000(void* data, size_t* len, HookParam* hp){ auto s=std::wstring((wchar_t*)data,*len/2); std::wregex pattern1(L"\\[([^\\]\\/]+)\\/[^\\]]+\\]"); s = std::regex_replace(s, pattern1, L"$1"); std::wregex pattern2(L"(\\S*)@"); s = std::regex_replace(s, pattern2, L"$1"); std::wregex pattern3(L"\\$"); s = std::regex_replace(s, pattern3, L""); return write_string_overwrite(data,len,s); } bool F01000A400AF2A000(void* data, size_t* len, HookParam* hp){ auto s=std::wstring((wchar_t*)data,*len/2); s = std::regex_replace(s, std::wregex(L"@[a-zA-Z]|%[a-zA-Z]+"), L""); static std::wstring last; if(last==s)return false; last=s; return write_string_overwrite(data,len,s); } bool F01006B5014E2E000(void* data, size_t* len, HookParam* hp){ auto s=std::string((char*)data,*len); s = std::regex_replace(s, std::regex("@r(.*?)@(.*?)@"), "$1"); s = std::regex_replace(s, std::regex("@n"), ""); s = std::regex_replace(s, std::regex("@v"), ""); s = std::regex_replace(s, std::regex("TKY[0-9]{6}_[A-Z][0-9]{2}"), ""); return write_string_overwrite(data,len,s); } bool F0100CF400F7CE000(void* data, size_t* len, HookParam* hp){ auto s=std::string((char*)data,*len); s = std::regex_replace(s, std::regex("\\n+"), " "); return write_string_overwrite(data,len,s); } bool F01000AE01954A000(void* data, size_t* len, HookParam* hp){ auto s=std::string((char*)data,*len); s = std::regex_replace(s, std::regex("[A-Za-z0-9]"), ""); s = std::regex_replace(s, std::regex("[~^(-).%,!:#@$/*&;+_]"), ""); return write_string_overwrite(data,len,s); } bool F01003BD013E30000(void* data, size_t* len, HookParam* hp){ auto s=std::string((char*)data,*len); s = std::regex_replace(s, std::regex("{|\\/.*?}|\\[.*?]"), ""); return write_string_overwrite(data,len,s); } bool F010074F013262000(void* data, size_t* len, HookParam* hp){ auto s=std::string((char*)data,*len); s = std::regex_replace(s, std::regex("\\[.*?]"), ""); return write_string_overwrite(data,len,s); } template bool F010057E00AC56000(void* data, size_t* len, HookParam* hp){ auto s=std::string((char*)data,*len); s = std::regex_replace(s, std::regex("<[^>]*>"), ""); s = std::regex_replace(s, std::regex(u8"ズーム|回転|身長|体重"), ""); s = std::regex_replace(s, std::regex("[A-Za-z0-9]"), ""); s = std::regex_replace(s, std::regex("[().%,!#/]"), ""); while (std::regex_search(s, std::regex("^\\s*$"))) { s = std::regex_replace(s, std::regex("^\\s*$"), ""); } static std::string last; if(last==s)return false; last=s; return write_string_overwrite(data,len,s); } bool F010051D010FC2000(void* data, size_t* len, HookParam* hp){ auto s=std::string((char*)data,*len); s = std::regex_replace(s, std::regex("\\[([^\\]]+)\\/[^\\]]+\\]"), "$1"); s = std::regex_replace(s, std::regex("\\s+"), " "); s = std::regex_replace(s, std::regex("\\\\n"), " "); s = std::regex_replace(s, std::regex("<[^>]+>|\\[[^\\]]+\\]"), ""); return write_string_overwrite(data,len,s); } bool F01001EF017BE6000(void* data, size_t* len, HookParam* hp){ auto s = std::wstring((wchar_t*)data,*len/2); while (std::regex_search(s, std::wregex(L"^\\s*$"))) { s = std::regex_replace(s, std::wregex(L"^\\s*$"), L""); } return write_string_overwrite(data,len,s); } bool F01000EA00D2EE000(void* data, size_t* len, HookParam* hp){ auto s = std::wstring((wchar_t*)data,*len/2); s = std::regex_replace(s, std::wregex(L"\\n+"), L" "); s = std::regex_replace(s, std::wregex(L"\\"), L"???"); s = std::regex_replace(s, std::wregex(L"\\"), L"chiaki_washa"); s = std::regex_replace(s, std::wregex(L"<.+?>"), L""); return write_string_overwrite(data,len,s); } auto _=[](){ emfunctionhooks={ //Memories Off {0x8003eeac,{CODEC_UTF16,0,0,mages_readstring<0>,0,"0100978013276000","1.0.0"}}, {0x8003eebc,{CODEC_UTF16,0,0,mages_readstring<0>,0,"0100978013276000","1.0.1"}}, //Memories Off ~Sorekara~ {0x8003fb7c,{CODEC_UTF16,0,0,mages_readstring<0>,0,"0100B4A01326E000","1.0.0"}}, {0x8003fb8c,{CODEC_UTF16,0,0,mages_readstring<0>,0,"0100B4A01326E000","1.0.1"}}, //Famicom Tantei Club: Kieta Koukeisha {0x80052a10,{CODEC_UTF16,0,0,mages_readstring<3>,0,"0100B4500F7AE000","1.0.0"}}, //Famicom Tantei Club Part: Ushiro ni Tatsu Shoujo {0x8004cb30,{CODEC_UTF16,0,0,mages_readstring<3>,0,"010078400F7B0000","1.0.0"}}, //Memories Off 2nd {0x8003ee0c,{CODEC_UTF16,0,0,mages_readstring<0>,0,"0100D31013274000","1.0.0"}}, {0x8003ee1c,{CODEC_UTF16,0,0,mages_readstring<0>,0,"0100D31013274000","1.0.1"}}, //Omoide ni Kawaru Kimi ~Memories Off~ {0x8003ef6c,{CODEC_UTF16,0,0,mages_readstring<0>,0,"0100FFA013272000","1.0.0"}}, {0x8003ef7c,{CODEC_UTF16,0,0,mages_readstring<0>,0,"0100FFA013272000","1.0.1"}}, //Memories Off 6 ~T-Wave~ {0x80043d7c,{CODEC_UTF16,0,0,mages_readstring<0>,0,"010047A013268000","1.0.0"}}, {0x80043d5c,{CODEC_UTF16,0,0,mages_readstring<0>,0,"010047A013268000","1.0.1"}}, //Memories Off: Yubikiri no Kioku {0x800440ec,{CODEC_UTF16,0,0,mages_readstring<0>,0,"010079C012896000","1.0.0"}}, //Memories Off #5 Togireta Film {0x8003f6ac,{CODEC_UTF16,0,0,mages_readstring<0>,0,"010073901326C000","1.0.0"}}, {0x8003f5fc,{CODEC_UTF16,0,0,mages_readstring<0>,0,"010073901326C000","1.0.1"}}, //SINce Memories: Hoshi no Sora no Shita de {0x80048cc8,{CODEC_UTF16,0,0,mages_readstring<4>,0,"0100E94014792000",0}},//line + name => join {0x8004f44c,{CODEC_UTF16,0,0,mages_readstring<4>,0,"0100E94014792000",0}},//fast trophy {0x8004f474,{CODEC_UTF16,0,0,mages_readstring<4>,0,"0100E94014792000",0}},//prompt {0x80039dc0,{CODEC_UTF16,0,0,mages_readstring<4>,0,"0100E94014792000",0}},//choice //Yahari Game demo Ore no Seishun Love Come wa Machigatteiru. {0x8005DFB8,{CODEC_UTF16,0,0,mages_readstring<0>,0,"0100E0D0154BC000","1.0.0"}}, //CHAOS;HEAD NOAH {0x80046700,{CODEC_UTF16,0,0,mages_readstring<0>,0,"0100957016B90000","1.0.0"}}, {0x8003A2c0,{CODEC_UTF16,0,0,mages_readstring<0>,0,"0100957016B90000","1.0.0"}},// choice {0x8003EAB0,{CODEC_UTF16,0,0,mages_readstring<0>,0,"0100957016B90000","1.0.0"}},// TIPS list (menu) {0x8004C648,{CODEC_UTF16,0,0,mages_readstring<0>,0,"0100957016B90000","1.0.0"}},// system message {0x80050374,{CODEC_UTF16,0,0,mages_readstring<0>,0,"0100957016B90000","1.0.0"}},// TIPS (red) // Shiro to Kuro no Alice {0x80013f20,{CODEC_UTF8,0,0,0,NewLineCharFilterW,"0100A460141B8000","1.0.0"}}, {0x80013f94,{CODEC_UTF8,0,0,0,NewLineCharFilterW,"0100A460141B8000","1.0.0"}}, {0x8001419c,{CODEC_UTF8,0,0,0,NewLineCharFilterW,"0100A460141B8000","1.0.0"}}, // Shiro to Kuro no Alice -Twilight line- {0x80014260,{CODEC_UTF8,0,0,0,NewLineCharFilterW,"0100A460141B8000","1.0.0"}}, {0x800142d4,{CODEC_UTF8,0,0,0,NewLineCharFilterW,"0100A460141B8000","1.0.0"}}, {0x800144dc,{CODEC_UTF8,0,0,0,NewLineCharFilterW,"0100A460141B8000","1.0.0"}}, //CLANNAD {0x80072d00,{CODEC_UTF16|FULL_STRING,1,0,0, F0100A3A00CC7E000,"0100A3A00CC7E000","1.0.0"}}, {0x80072d30,{CODEC_UTF16|FULL_STRING,1,0,0,F0100A3A00CC7E000,"0100A3A00CC7E000","1.0.7"}}, //VARIABLE BARRICADE NS {0x800e3424,{CODEC_UTF8,0,0,0,F010045C0109F2000,"010045C0109F2000","1.0.1"}},//"System Messages + Choices"), //Also includes the names of characters, {0x800fb080,{CODEC_UTF8,3,0,0,F010045C0109F2000,"010045C0109F2000","1.0.1"}},//Main Text //AMNESIA for Nintendo Switch {0x805bba5c,{CODEC_UTF16,0,0,ReadTextAndLenDW<2>,F0100A1E00BFEA000,"0100A1E00BFEA000","1.0.1"}},//dialogue {0x805e9930,{CODEC_UTF16,0,0,ReadTextAndLenDW<1>,F0100A1E00BFEA000,"0100A1E00BFEA000","1.0.1"}},//choice {0x805e7fd8,{CODEC_UTF16,0,0,ReadTextAndLenDW<1>,F0100A1E00BFEA000,"0100A1E00BFEA000","1.0.1"}},//name //Chou no Doku Hana no Kusari Taishou Tsuya Koi Ibun {0x80095010,{CODEC_UTF16,1,0,0,F0100A1200CA3C000,"0100A1200CA3C000","2.0.1"}},//Main Text + Names //Live a Live {0x80a05170,{CODEC_UTF16,0,0,0,F0100982015606000,"0100C29017106000","1.0.0"}}, //Sakura no Kumo * Scarlet no Koi {0x8049d968,{CODEC_UTF8,0,1,0,F01006590155AC000,"01006590155AC000","1.0.0"}},//name {0x8049d980,{CODEC_UTF8,0,0,0,F01006590155AC000,"01006590155AC000","1.0.0"}},//dialogue //Majestic Majolical {0x80557408,{CODEC_UTF8,0,0,0,F01000200194AE000,"01000200194AE000","1.0.0"}},//name {0x8059ee94,{CODEC_UTF8,3,0,0,F01000200194AE000,"01000200194AE000","1.0.0"}},//player name {0x80557420,{CODEC_UTF8,0,0,0,F01000200194AE000,"01000200194AE000","1.0.0"}},//dialogue //Matsurika no Kei {0x8017ad54,{CODEC_UTF32,1,0,0,F0100EA001A626000,"0100EA001A626000","1.0.0"}},// text {0x80174d4c,{CODEC_UTF32,1,0,0,F0100EA001A626000,"0100EA001A626000","1.0.0"}},// name //Cupid Parasite {0x80057910,{CODEC_UTF32,2,0,0,F0100F7E00DFC8000,"0100F7E00DFC8000","1.0.1"}},// name + text {0x80169df0,{CODEC_UTF32,0,0,0,F0100F7E00DFC8000,"0100F7E00DFC8000","1.0.1"}},// choice //Radiant Tale {0x80075190,{CODEC_UTF8,1,0,0,F0100925014864000,"0100925014864000","1.0.0"}},// prompt {0x8002fb18,{CODEC_UTF8,0,0,0,F0100925014864000,"0100925014864000","1.0.0"}},// name {0x8002fd7c,{CODEC_UTF8,0,0,0,F0100925014864000,"0100925014864000","1.0.0"}},// text //MUSICUS {0x80462DD4,{CODEC_UTF8,0,1,0,F01006590155AC000,"01000130150FA000","1.0.0"}},// name {0x80462DEC,{CODEC_UTF8,0,0,0,F01006590155AC000,"01000130150FA000","1.0.0"}},// dialogue 1 {0x80480d4c,{CODEC_UTF8,0,0,0,F01006590155AC000,"01000130150FA000","1.0.0"}},// dialogue 2 {0x804798e0,{CODEC_UTF8,0,0,0,F01006590155AC000,"01000130150FA000","1.0.0"}},// choice //Story of Seasons a Wonderful Life {0x80ac4d88,{CODEC_UTF32,0,0,F0100936018EB4000,"0100936018EB4000","1.0.3"}},// Main text {0x808f7e84,{CODEC_UTF32,0,0,F0100936018EB4000,"0100936018EB4000","1.0.3"}},// Item name {0x80bdf804,{CODEC_UTF32,0,0,F0100936018EB4000,"0100936018EB4000","1.0.3"}},// Item description //Hamefura Pirates {0x81e75940,{CODEC_UTF16,0,0,ReadTextAndLenDW<1>,F0100982015606000,"0100982015606000","1.0.0"}},// Hamekai.TalkPresenter$$AddMessageBacklog {0x81c9ae60,{CODEC_UTF16,0,0,ReadTextAndLenDW<1>,F0100982015606000,"0100982015606000","1.0.0"}},// Hamekai.ChoicesText$$SetText {0x81eb7dc0,{CODEC_UTF16,0,0,ReadTextAndLenDW<1>,F0100982015606000,"0100982015606000","1.0.0"}},// Hamekai.ShortStoryTextView$$AddText //Death end re;Quest 2 {0x80225C3C,{CODEC_UTF8,8,0,0,F010001D015260000,"010001D015260000","1.0.0"}}, //Death end re;Quest {0x80241088,{CODEC_UTF8,8,0,0,F0100AEC013DDA000,"0100AEC013DDA000","1.0.0"}},//english ver //Meta Meet Cute!!!+ {0x81DD6010,{CODEC_UTF16,1,-32,0,0,"01009A401C1B0000","1.02"}},//english ver, only long string, short string can't find. //Of the Red, the Light, and the Ayakashi Tsuzuri {0x8176D78C,{CODEC_UTF16,3,0,0,0,"0100F7801B5DC000","1.0.0"}}, //Tokimeki Memorial Girl's Side: 4th Heart {0x817e7da8,{CODEC_UTF16,0,0,T0100B0100E26C000<2,0>,0,"0100B0100E26C000","1.0.0"}},// name (x1) + dialogue (x2) {0x81429f54,{CODEC_UTF16,0,0,T0100B0100E26C000<0,1>,0,"0100B0100E26C000","1.0.0"}},// choice (x0) {0x8180633c,{CODEC_UTF16,0,0,T0100B0100E26C000<1,2>,0,"0100B0100E26C000","1.0.0"}},// help (x1) //13 Sentinels: Aegis Rim {0x80057d18,{CODEC_UTF8,0,0,0,F010045C014650000,"010045C014650000","1.0.0"}},// cutscene text {0x8026fec0,{CODEC_UTF8,1,0,0,F010045C014650000,"010045C014650000","1.0.0"}},// prompt {0x8014eab4,{CODEC_UTF8,0,0,0,F010045C014650000,"010045C014650000","1.0.0"}},// name (combat) {0x801528ec,{CODEC_UTF8,3,0,0,F010045C014650000,"010045C014650000","1.0.0"}},// dialogue (combat) {0x80055acc,{CODEC_UTF8,0,0,0,F010045C014650000,"010045C014650000","1.0.0"}},// dialogue 2 (speech bubble) {0x802679c8,{CODEC_UTF8,1,0,0,F010045C014650000,"010045C014650000","1.0.0"}},// notification {0x8025e210,{CODEC_UTF8,2,0,0,F010045C014650000,"010045C014650000","1.0.0"}},// scene context example: 数日前 咲良高校 1年B組 教室 1985年5月" {0x8005c518,{CODEC_UTF8,0,0,0,F010045C014650000,"010045C014650000","1.0.0"}},// game help //Sea of Stars {0x83e93ca0,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F01008C0016544000,"01008C0016544000","1.0.45861"}},// Main text {0x820c3fa0,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F01008C0016544000,"01008C0016544000","1.0.47140"}},// Main text //Final Fantasy I {0x81e88040,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,0,"01000EA014150000","1.0.1"}},// Main text {0x81cae54c,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,0,"01000EA014150000","1.0.1"}},// Intro text {0x81a3e494,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,0,"01000EA014150000","1.0.1"}},// battle text {0x81952c28,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,0,"01000EA014150000","1.0.1"}},// Location //Final Fantasy II {0x8208f4cc,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,0,"01006B7014156000","1.0.1"}},// Main text {0x817e464c,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,0,"01006B7014156000","1.0.1"}},// Intro text {0x81fb6414,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,0,"01006B7014156000","1.0.1"}},// battle text //Final Fantasy III {0x82019e84,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,0,"01002E2014158000","1.0.1"}},// Main text1 {0x817ffcfc,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,0,"01002E2014158000","1.0.1"}},// Main text2 {0x81b8b7e4,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,0,"01002E2014158000","1.0.1"}},// battle text {0x8192c4a8,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,0,"01002E2014158000","1.0.1"}},// Location //Final Fantasy IV {0x81e44bf4,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,0,"01004B301415A000","1.0.2"}},// Main text {0x819f92c4,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,0,"01004B301415A000","1.0.2"}},// Rolling text {0x81e2e798,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,0,"01004B301415A000","1.0.2"}},// Battle text {0x81b1e6a8,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,0,"01004B301415A000","1.0.2"}},// Location //Final Fantasy V {0x81d63e24,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,0,"0100AA201415C000","1.0.2"}},// Main text {0x81adfb3c,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,0,"0100AA201415C000","1.0.2"}},// Location {0x81a8fda8,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,0,"0100AA201415C000","1.0.2"}},// Battle text //Final Fantasy VI {0x81e6b350,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,0,"0100AA001415E000","1.0.2"}},// Main text {0x81ab40ec,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,0,"0100AA001415E000","1.0.2"}},// Location {0x819b8c88,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,0,"0100AA001415E000","1.0.2"}},// Battle text //Final Fantasy IX {0x80034b90,{CODEC_UTF16,0,0,ReadTextAndLenDW<1>,F01006F000B056000,"01006F000B056000","1.0.1"}},// Main Text {0x802ade64,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F01006F000B056000,"01006F000B056000","1.0.1"}},// Battle Text {0x801b1b84,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F01006F000B056000,"01006F000B056000","1.0.1"}},// Descriptions {0x805aa0b0,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F01006F000B056000,"01006F000B056000","1.0.1"}},// Key Item Name {0x805a75d8,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F01006F000B056000,"01006F000B056000","1.0.1"}},// Key Item Content {0x8002f79c,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F01006F000B056000,"01006F000B056000","1.0.1"}},// Menu {0x80ca88b0,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F01006F000B056000,"01006F000B056000","1.0.1"}},// Tutorial1 {0x80ca892c,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F01006F000B056000,"01006F000B056000","1.0.1"}},// Tutorial2 {0x80008d88,{CODEC_UTF16,0,0,ReadTextAndLenDW<1>,F01006F000B056000,"01006F000B056000","1.0.1"}},// Location //Norn9 Var Commons {0x8003E874,{CODEC_UTF8,0,0,0,F0100068019996000,"0100068019996000","1.0.0"}},//English //薄桜鬼 真改 万葉ノ抄 {0x8004E8F0,{CODEC_UTF8,1,0,0,F010001D015260000,"0100EA601A0A0000","1.0.0"}}, //Hakuouki Shinkai: Tsukikage no Shou / 薄桜鬼 真改 月影ノ抄 {0x8019ecd0,{CODEC_UTF8,1,0,0,F0100E1E00E2AE000,"0100E1E00E2AE000","1.0.0"}},//Text //Chrono Cross: The Radical Dreamers Edition {0x802b1254,{CODEC_UTF32,1,0,0,0,"0100AC20128AC000","1.0.2"}},//Text //AIR {0x800a6b10,{CODEC_UTF16,1,0,0,F0100ADC014DA0000,"0100ADC014DA0000","1.0.1"}},//Text + Name //Shinigami to Shoujo {0x21cb08-0x204000+0x80004000,{0,1,0,0,F0100AFA01750C000,"0100AFA01750C000","1.0.2"}},//Text,sjis //Octopath Traveler II {0x8088a4d4,{CODEC_UTF16,0,0,0,0,"0100A3501946E000","1.0.0"}},//main text //NieR:Automata The End of YoRHa Edition {0x808e7068,{CODEC_UTF16,3,0,0,0,"0100B8E016F76000","1.0.2"}},//Text //Reine des Fleurs {0x80026434,{CODEC_UTF8,0,0,0,0,"0100B5800C0E4000","1.0.0"}},//Dialogue text //Code : Realize - Saikou no Hanataba {0x80024eac,{CODEC_UTF8,0,0,0,F0100B6900A668000,"0100B6900A668000","1.0.0"}}, //Diabolik Lovers Grand Edition {0x80041080,{CODEC_UTF8,1,0,0,F0100BD700E648000,"0100BD700E648000","1.0.0"}},//name {0x80041080,{CODEC_UTF8,0,0,0,F0100BD700E648000,"0100BD700E648000","1.0.0"}},//dialogue {0x80041080,{CODEC_UTF8,2,0,0,F0100BD700E648000,"0100BD700E648000","1.0.0"}},//choice1 //Shinobi, Koi Utsutsu {0x8002aca0,{CODEC_UTF8,0,0,0,F0100B6900A668000,"0100C1E0102B8000","1.0.0"}},//name {0x8002aea4,{CODEC_UTF8,0,0,0,F0100B6900A668000,"0100C1E0102B8000","1.0.0"}},//dialogue1 {0x8001ca90,{CODEC_UTF8,2,0,0,F0100B6900A668000,"0100C1E0102B8000","1.0.0"}},//dialogue2 {0x80049dbc,{CODEC_UTF8,1,0,0,F0100B6900A668000,"0100C1E0102B8000","1.0.0"}},//choice //Yoru, Tomosu {0xe2748eb0,{CODEC_UTF32,1,0,0,0,"0100C2901153C000","1.0.0"}},// text1 //Closed Nightmare {0x800c0918,{CODEC_UTF8,0,0,0,F0100D9500A0F6000,"0100D9500A0F6000","1.0.0"}},// line + name {0x80070b98,{CODEC_UTF8,0,0,0,F0100D9500A0F6000,"0100D9500A0F6000","1.0.0"}},// fast trophy {0x800878fc,{CODEC_UTF8,0,0,0,F0100D9500A0F6000,"0100D9500A0F6000","1.0.0"}},// prompt {0x80087aa0,{CODEC_UTF8,0,0,0,F0100D9500A0F6000,"0100D9500A0F6000","1.0.0"}},// choice //Yuru Camp△ - Have a Nice Day! {0x816d03f8,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100982015606000,"0100D12014FC2000","1.0.0"}},// dialog / backlog //Akuyaku Reijou wa Ringoku no Outaishi ni Dekiai Sareru {0x817b35c4,{CODEC_UTF8,1,0,0,F0100DA201E0DA000,"0100DA201E0DA000","1.0.0"}},// Dialogue //Yunohana Spring! ~Mellow Times~ {0x80028178,{CODEC_UTF8,0,0,0,F0100DE200C0DA000,"0100DE200C0DA000","1.0.0"}},// name {0x8001b9d8,{CODEC_UTF8,2,0,0,F0100DE200C0DA000,"0100DE200C0DA000","1.0.0"}},// dialogue1 {0x8001b9b0,{CODEC_UTF8,2,0,0,F0100DE200C0DA000,"0100DE200C0DA000","1.0.0"}},// dialogue2 {0x8004b940,{CODEC_UTF8,2,0,0,F0100DE200C0DA000,"0100DE200C0DA000","1.0.0"}},// dialogue3 {0x8004a8d0,{CODEC_UTF8,1,0,0,F0100DE200C0DA000,"0100DE200C0DA000","1.0.0"}},// choice //サマータイムレンダ Another Horizon {0x818ebaf0,{CODEC_UTF16,0,0,T01005940182EC000,F01005940182EC000,"01005940182EC000","1.0.0"}},//dialogue //Aquarium {0x8051a990,{CODEC_UTF8,0,1,0,F01006590155AC000,"0100D11018A7E000","1.0.0"}},//name {0x8051a9a8,{CODEC_UTF8,0,0,0,F01006590155AC000,"0100D11018A7E000","1.0.0"}},//dialogue {0x80500178,{CODEC_UTF8,0,0,0,F01006590155AC000,"0100D11018A7E000","1.0.0"}},//choice //AKA {0x8166eb80,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100B0601852A000<0>,"0100B0601852A000","1.0.0"}},//Main text {0x817d44a4,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100B0601852A000<1>,"0100B0601852A000","1.0.0"}},//Letter {0x815cb0f4,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100B0601852A000<2>,"0100B0601852A000","1.0.0"}},//Mission title {0x815cde30,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100B0601852A000<3>,"0100B0601852A000","1.0.0"}},//Mission description {0x8162a910,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100B0601852A000<4>,"0100B0601852A000","1.0.0"}},//Craft description {0x817fdca8,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100B0601852A000<5>,"0100B0601852A000","1.0.0"}},//Inventory item name //Etrian Odyssey I HD {0x82d57550,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100B0C016164000<8>,"01008A3016162000","1.0.2"}},//Text {0x824ff408,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100B0C016164000<9>,"01008A3016162000","1.0.2"}},//Config Description {0x8296b4e4,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100B0C016164000<10>,"01008A3016162000","1.0.2"}},//Class Description {0x81b2204c,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100B0C016164000<11>,"01008A3016162000","1.0.2"}},//Item Description //Etrian Odyssey II HD {0x82f24c70,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100B0C016164000<0>,"0100B0C016164000","1.0.2"}},//Text {0x82cc0988,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100B0C016164000<1>,"0100B0C016164000","1.0.2"}},//Config Description {0x8249acd4,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100B0C016164000<2>,"0100B0C016164000","1.0.2"}},//Class Description {0x81b27644,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100B0C016164000<3>,"0100B0C016164000","1.0.2"}},//Item Description //Etrian Odyssey III HD {0x83787f04,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100B0C016164000<4>,"0100D32015A52000","1.0.2"}},//Text {0x8206915c,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100B0C016164000<5>,"0100D32015A52000","1.0.2"}},//Config Description {0x82e6d1d4,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100B0C016164000<6>,"0100D32015A52000","1.0.2"}},//Class Description {0x82bf5d48,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100B0C016164000<7>,"0100D32015A52000","1.0.2"}},//Item Description //Fire Emblem Engage {0x8248c550,{CODEC_UTF16,0,0,ReadTextAndLenDW<2>,0,"0100A6301214E000","1.3.0"}},// App.Talk3D.TalkLog$$AddLog {0x820C6530,{CODEC_UTF16,0,0,ReadTextAndLenDW<2>,0,"0100A6301214E000","2.0.0"}},// App.Talk3D.TalkLog$$AddLog //AMNESIA LATER×CROWD for Nintendo Switch {0x800ebc34,{CODEC_UTF16,0,0,ReadTextAndLenDW<1>,F0100982015606000,"0100B5700CDFC000","1.0.0"}},// waterfall {0x8014dc64,{CODEC_UTF16,0,0,ReadTextAndLenDW<1>,F0100982015606000,"0100B5700CDFC000","1.0.0"}},// name {0x80149b10,{CODEC_UTF16,0,0,ReadTextAndLenDW<1>,F0100982015606000,"0100B5700CDFC000","1.0.0"}},// dialogue {0x803add50,{CODEC_UTF16,0,0,ReadTextAndLenDW<1>,F0100982015606000,"0100B5700CDFC000","1.0.0"}},// choice //Hanayaka Nari, Waga Ichizoku Gentou Nostalgie {0x27ca10-0x204000+0x80004000,{CODEC_UTF8,0,0,T0100B5500CA0C000,F0100B5500CA0C000,"0100B5500CA0C000","1.0.0"}},// x3 (double trigged), name+text, onscreen //Natsumon! 20th Century Summer Vacation {0x80db5d34,{CODEC_UTF16,0,0,0,F0100A8401A0A8000,"0100A8401A0A8000","1.1.0"}},// tutorial {0x846fa578,{CODEC_UTF16,0,0,0,F0100A8401A0A8000,"0100A8401A0A8000","1.1.0"}},// choice {0x8441e800,{CODEC_UTF16,0,0,0,F0100A8401A0A8000,"0100A8401A0A8000","1.1.0"}},// examine + dialog //Super Mario RPG {0x81d78c58,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100BC0018138000,"0100BC0018138000","1.0.0"}},// Main Text {0x81dc9cf8,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100BC0018138000,"0100BC0018138000","1.0.0"}},// Name {0x81c16b80,{CODEC_UTF16,0,0,ReadTextAndLenDW<1>,F0100BC0018138000,"0100BC0018138000","1.0.0"}},// Cutscene {0x821281f0,{CODEC_UTF16,0,0,ReadTextAndLenDW<1>,F0100BC0018138000,"0100BC0018138000","1.0.0"}},// Special/Item/Menu/Objective Description {0x81cd8148,{CODEC_UTF16,0,0,ReadTextAndLenDW<1>,F0100BC0018138000,"0100BC0018138000","1.0.0"}},// Special Name {0x81fc2820,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100BC0018138000,"0100BC0018138000","1.0.0"}},// Item Name Battle {0x81d08d28,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100BC0018138000,"0100BC0018138000","1.0.0"}},// Item Name Off-battle {0x82151aac,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100BC0018138000,"0100BC0018138000","1.0.0"}},// Shop Item Name {0x81fcc870,{CODEC_UTF16,0,0,ReadTextAndLenDW<1>,F0100BC0018138000,"0100BC0018138000","1.0.0"}},// Objective Title {0x821bd328,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100BC0018138000,"0100BC0018138000","1.0.0"}},// Monster List - Name {0x820919b8,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100BC0018138000,"0100BC0018138000","1.0.0"}},// Monster List - Description {0x81f56518,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100BC0018138000,"0100BC0018138000","1.0.0"}},// Info {0x82134ce0,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100BC0018138000,"0100BC0018138000","1.0.0"}},// Help Category {0x82134f30,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100BC0018138000,"0100BC0018138000","1.0.0"}},// Help Name {0x821372e4,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100BC0018138000,"0100BC0018138000","1.0.0"}},// Help Description 1 {0x82137344,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100BC0018138000,"0100BC0018138000","1.0.0"}},// Help Description 2 {0x81d0ee80,{CODEC_UTF16,0,0,ReadTextAndLenDW<2>,F0100BC0018138000,"0100BC0018138000","1.0.0"}},// Location {0x82128f64,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100BC0018138000,"0100BC0018138000","1.0.0"}},// Album Title {0x81f572a0,{CODEC_UTF16,0,0,ReadTextAndLenDW<3>,F0100BC0018138000,"0100BC0018138000","1.0.0"}},// Load/Save Text {0x81d040a8,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100BC0018138000,"0100BC0018138000","1.0.0"}},// Levelup First Part {0x81d043fc,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100BC0018138000,"0100BC0018138000","1.0.0"}},// Levelup Second Part {0x81d04550,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100BC0018138000,"0100BC0018138000","1.0.0"}},// Levelup New Ability Description {0x81fbfa18,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100BC0018138000,"0100BC0018138000","1.0.0"}},// Yoshi Mini-Game Header {0x81fbfa74,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100BC0018138000,"0100BC0018138000","1.0.0"}},// Yoshi Mini-Game Text {0x81cf41b4,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100BC0018138000,"0100BC0018138000","1.0.0"}},// Enemy Special Attacks //Trials of Mana {0x800e8abc,{CODEC_UTF16,1,0,0,F0100D7800E9E0000,"0100D7800E9E0000","1.1.1"}},// Text //Utsusemi no Meguri {0x821b452c,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,0,"0100DA101D9AA000","1.0.0"}},// text1 {0x821b456c,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,0,"0100DA101D9AA000","1.0.0"}},// text2 {0x821b45ac,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,0,"0100DA101D9AA000","1.0.0"}},// text3 //Buddy Mission BOND {0x80046dd0,{0,0,0,T0100DB300B996000,0,"0100DB300B996000",0}},//1.0.0, 1.0.1,sjis {0x80046de0,{0,0,0,T0100DB300B996000,0,"0100DB300B996000",0}}, //Bravely Default II {0x80b97700,{CODEC_UTF16,0,0,0,0,"010056F00C7B4000","1.0.0"}},//Main Text {0x80bb8d3c,{CODEC_UTF16,0,0,0,0,"010056F00C7B4000","1.0.0"}},//Main Ptc Text {0x810add68,{CODEC_UTF16,0,0,0,0,"010056F00C7B4000","1.0.0"}},//Secondary Text //Tantei Bokumetsu / 探偵撲滅 {0x8011c340,{CODEC_UTF8,1,0,0,F0100CBA014014000,"0100CBA014014000","1.0.0"}},//Text {0x80064f20,{CODEC_UTF8,1,0,0,F0100CBA014014000,"0100CBA014014000","1.0.0"}},//Choices //Ys X: Nordics {0x80817758,{CODEC_UTF8,1,0,0,F0100CC401A16C000<0>,"0100CC401A16C000","1.0.4"}},//Main Text {0x80981e3c,{CODEC_UTF8,0,0,0,F0100CC401A16C000<1>,"0100CC401A16C000","1.0.4"}},//Secondary Text //9 R.I.P {0x80025360,{CODEC_UTF8,2,0,0,F0100BDD01AAE4000,"0100BDD01AAE4000","1.0.0"}},//name {0x80023c60,{CODEC_UTF8,0,0,0,F0100BDD01AAE4000,"0100BDD01AAE4000","1.0.0"}},//text {0x8005388c,{CODEC_UTF8,1,0,0,F0100BDD01AAE4000,"0100BDD01AAE4000","1.0.0"}},//choice {0x80065010,{CODEC_UTF8,0,0,0,F0100BDD01AAE4000,"0100BDD01AAE4000","1.0.0"}},//character description {0x8009c780,{CODEC_UTF8,0,0,0,F0100BDD01AAE4000,"0100BDD01AAE4000","1.0.0"}},//prompt //Kiss Bell - Let's sound the kissing-bell of the promise / キスベル {0x8049d958,{CODEC_UTF8,1,0,0,F01006590155AC000,"0100BD7015E6C000","1.0.0"}},//text //Piofiore no Banshou -Ricordo- CN {0x80015fa0,{CODEC_UTF8,2,0,0,F0100C310110B4000,"0100C310110B4000","1.0.0"}},//handlerMsg {0x80050d50,{CODEC_UTF8,0,0,0,F0100C310110B4000,"0100C310110B4000","1.0.0"}},//handlerName {0x8002F430,{CODEC_UTF8,0,0,0,F0100C310110B4000,"0100C310110B4000","1.0.0"}},//handlerPrompt {0x8002F4F0,{CODEC_UTF8,0,0,0,F0100C310110B4000,"0100C310110B4000","1.0.0"}},//handlerPrompt {0x8002F540,{CODEC_UTF8,0,0,0,F0100C310110B4000,"0100C310110B4000","1.0.0"}},//handlerPrompt //Piofiore no Banshou -Ricordo- {0x800141d0,{CODEC_UTF8,2,0,0,F0100C310110B4000,"01005F700DC56000","1.0.0"}},//handlerMsg {0x8004ce20,{CODEC_UTF8,0,0,0,F0100C310110B4000,"01005F700DC56000","1.0.0"}},//handlerName {0x8002be90,{CODEC_UTF8,0,0,0,F0100C310110B4000,"01005F700DC56000","1.0.0"}},//handlerPrompt {0x8002bf50,{CODEC_UTF8,0,0,0,F0100C310110B4000,"01005F700DC56000","1.0.0"}},//handlerPrompt {0x8002bfa0,{CODEC_UTF8,0,0,0,F0100C310110B4000,"01005F700DC56000","1.0.0"}},//handlerPrompt //Piofiore no Banshou -Episodio1926- {0x80019630,{CODEC_UTF8,2,0,0,F0100C310110B4000,"01009E30120F4000","1.0.0"}},//handlerMsg {0x8005B7B0,{CODEC_UTF8,0,0,0,F0100C310110B4000,"01009E30120F4000","1.0.0"}},//handlerName {0x80039230,{CODEC_UTF8,0,0,0,F0100C310110B4000,"01009E30120F4000","1.0.0"}},//handlerPrompt {0x800392F0,{CODEC_UTF8,0,0,0,F0100C310110B4000,"01009E30120F4000","1.0.0"}},//handlerPrompt {0x80039340,{CODEC_UTF8,0,0,0,F0100C310110B4000,"01009E30120F4000","1.0.0"}},//handlerPrompt //Pokémon Let’s Go, Pikachu! {0x8067d9fc,{CODEC_UTF16,0,0,0,F010003F003A34000,"010003F003A34000","1.0.2"}},//Text //Ikemen Sengoku Toki o Kakeru Koi / イケメン戦国◆時をかける恋 新たなる出逢い {0x813e4fb4,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,0,"01008BE016CE2000","1.0.0"}},//Main Text {0x813e4c60,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,0,"01008BE016CE2000","1.0.0"}},//Name {0x813b5360,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,0,"01008BE016CE2000","1.0.0"}},//Choices {0x81bab9ac,{CODEC_UTF16,0,0,ReadTextAndLenDW<1>,0,"01008BE016CE2000","1.0.0"}},//Info //Shin Megami Tensei V {0x80ce01a4,{CODEC_UTF16,0,0,0,0,"01006BD0095F4000","1.0.2"}},//Text //The Legend of Zelda: Link's Awakening {0x80f57910,{CODEC_UTF8,1,0,0,0,"01006BB00C6F0000","1.0.1"}},//Main Text //Cendrillon palikA {0x8001ab8c,{CODEC_UTF8,2,0,0,F0100DE200C0DA000,"01006B000A666000","1.0.0"}},//name {0x80027b30,{CODEC_UTF8,0,0,0,F0100DE200C0DA000,"01006B000A666000","1.0.0"}},//dialogue //Crayon Shin-chan Shiro of Coal Town {0x83fab4bc,{CODEC_UTF16,0,0,ReadTextAndLenW<0>,F01007B601C608000,"01007B601C608000","1.0.1"}}, //Fuuraiki 4 {0x80008c80,{CODEC_UTF32,1,0,0,F010046601125A000,"010046601125A000","1.0.0"}},//Main {0x80012b1c,{CODEC_UTF32,1,0,0,F010046601125A000,"010046601125A000","1.0.0"}},//Wordpad {0x80012ccc,{CODEC_UTF32,1,0,0,F010046601125A000,"010046601125A000","1.0.0"}},//Comments {0x80009f74,{CODEC_UTF32,1,0,0,F010046601125A000,"010046601125A000","1.0.0"}},//Choices {0x80023d64,{CODEC_UTF32,0,0,0,F010046601125A000,"010046601125A000","1.0.0"}},//Location //Ken ga Kimi for S / 剣が君 for S {0x81477128,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100771013FA8000,"0100771013FA8000","1.1"}},//Main Text {0x81470e38,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100771013FA8000,"0100771013FA8000","1.1"}},//Secondary Text //ANONYMOUS;CODE {0x80011608,{CODEC_UTF8,1,0,0,F0100556015CCC000,"0100556015CCC000","1.0.0"}},//dialouge, menu //Sugar * Style (シュガー*スタイル) {0x800ccbc8,{0,0,0,0,0,"0100325012B70000","1.0.0"}},// ret x0 name + text (readShiftJisString), filter is to complex, quit. //Nightshade/百花百狼 {0x802999c8,{CODEC_UTF16,0,0,ReadTextAndLenDW<1>,F010042300C4F6000,"010042300C4F6000","1.0.1"}},//dialogue {0x8015b544,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F010042300C4F6000,"010042300C4F6000","1.0.1"}},//name {0x802a2fd4,{CODEC_UTF16,0,0,ReadTextAndLenDW<1>,F010042300C4F6000,"010042300C4F6000","1.0.1"}},//choice1 {0x802b7900,{CODEC_UTF16,0,0,ReadTextAndLenDW<1>,F010042300C4F6000,"010042300C4F6000","1.0.1"}},//choice2 //Toraware no Paruma {0x8015b7a8,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F010044800D2EC000,"010044800D2EC000","1.0.0"}},//text x0 {0x8015b46c,{CODEC_UTF16,0,0,ReadTextAndLenDW<1>,F010044800D2EC000,"010044800D2EC000","1.0.0"}},//name x1 //Brothers Conflict: Precious Baby {0x8016aecc,{CODEC_UTF16,0,0,ReadTextAndLenW<0>,F0100982015606000,"010037400DAAE000","1.0.0"}},//name {0x80126b9c,{CODEC_UTF16,0,0,ReadTextAndLenW<0>,F0100982015606000,"010037400DAAE000","1.0.0"}},//dialogue {0x80129160,{CODEC_UTF16,0,0,ReadTextAndLenW<2>,F0100982015606000,"010037400DAAE000","1.0.0"}},//choice //Zettai Kaikyu Gakuen {0x80067b5c,{CODEC_UTF16,1,0,0,F010021300F69E000<0>,"010021300F69E000","1.0.0"}},//name+ dialogue main(ADV)+choices {0x80067cd4,{CODEC_UTF16,1,0,0,F010021300F69E000<1>,"010021300F69E000","1.0.0"}},//dialogueNVL //Dragon Quest Builders 2 {0x805f8900,{CODEC_UTF8,1,0,0,F010050000705E000,"010050000705E000","1.7.3"}},//Main text textbox {0x8068a698,{CODEC_UTF8,0,0,0,F010050000705E000,"010050000705E000","1.7.3"}},//Not press to continue text {0x806e4118,{CODEC_UTF8,3,0,0,F010050000705E000,"010050000705E000","1.7.3"}},//Character creation text {0x8067459c,{CODEC_UTF8,1,0,0,F010050000705E000,"010050000705E000","1.7.3"}},//Objective progress1 {0x800a4f90,{CODEC_UTF8,0,0,0,F010050000705E000,"010050000705E000","1.7.3"}},//Objective progress2 {0x8060a1c0,{CODEC_UTF8,0,0,0,F010050000705E000,"010050000705E000","1.7.3"}},//Infos1 {0x805f6130,{CODEC_UTF8,1,0,0,F010050000705E000,"010050000705E000","1.7.3"}},//Infos2 {0x80639b6c,{CODEC_UTF8,2,0,0,F010050000705E000,"010050000705E000","1.7.3"}},//Item description {0x807185ac,{CODEC_UTF8,1,0,0,F010050000705E000,"010050000705E000","1.7.3"}},//Mission1 {0x80657e4c,{CODEC_UTF8,1,0,0,F010050000705E000,"010050000705E000","1.7.3"}},//Mission2 {0x80713be0,{CODEC_UTF8,1,0,0,F010050000705E000,"010050000705E000","1.7.3"}},//Mission3 {0x8076ab04,{CODEC_UTF8,1,0,0,F010050000705E000,"010050000705E000","1.7.3"}},//Tutorial header {0x8076ab2c,{CODEC_UTF8,1,0,0,F010050000705E000,"010050000705E000","1.7.3"}},//Tutorial explanation //BUSTAFELLOWS season2 {0x819ed3e4,{CODEC_UTF16,0,0,ReadTextAndLenW<0>,F0100874017BE2000,"010037400DAAE000","1.0.0"}},//dialogue {0x82159cd0,{CODEC_UTF16,0,0,ReadTextAndLenW<1>,F0100874017BE2000,"010037400DAAE000","1.0.0"}},//textmessage {0x81e17530,{CODEC_UTF16,0,0,ReadTextAndLenW<0>,F0100874017BE2000,"010037400DAAE000","1.0.0"}},//option {0x81e99d64,{CODEC_UTF16,0,0,ReadTextAndLenW<0>,F0100874017BE2000,"010037400DAAE000","1.0.0"}},//choice {0x8186f81c,{CODEC_UTF16,0,0,ReadTextAndLenW<0>,F0100874017BE2000,"010037400DAAE000","1.0.0"}},//archives //5分後に意外な結末 モノクロームの図書館 {0x81fa4890,{CODEC_UTF16,1,0X14,0,F010094601D910000,"010094601D910000","1.0.1"}},//book text {0x81fa5250,{CODEC_UTF16,1,0X14,0,F010094601D910000,"010094601D910000","1.0.1"}},//book text {0x81b1c68c,{CODEC_UTF16,0,0X14,0,F010094601D910000,"010094601D910000","1.0.1"}},//choice1 {0x81b1c664,{CODEC_UTF16,0,0X14,0,F010094601D910000,"010094601D910000","1.0.1"}},//choice2 {0x81b1e5b0,{CODEC_UTF16,3,0X14,0,F010094601D910000,"010094601D910000","1.0.1"}},//dialogue //Tokimeki Memorial Girl’s Side 2nd Season for Nintendo Switch {0x82058848,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F010079201BD88000,"010079201BD88000","1.0.1"}},//dialogue1 {0x82058aa0,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F010079201BD88000,"010079201BD88000","1.0.1"}},//dialogue2 {0x8205a244,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F010079201BD88000,"010079201BD88000","1.0.1"}},//dialogue3 {0x826ee1d8,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F010079201BD88000,"010079201BD88000","1.0.1"}},//choice {0x8218e258,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F010079201BD88000,"010079201BD88000","1.0.1"}},//news {0x823b61d4,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F010079201BD88000,"010079201BD88000","1.0.1"}},//mail {0x82253454,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F010079201BD88000,"010079201BD88000","1.0.1"}},//luckyitem {0x82269240,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F010079201BD88000,"010079201BD88000","1.0.1"}},//profile1 {0x82269138,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F010079201BD88000,"010079201BD88000","1.0.1"}},//profile2 {0x822691ec,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F010079201BD88000,"010079201BD88000","1.0.1"}},//profile3 {0x82269198,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F010079201BD88000,"010079201BD88000","1.0.1"}},//profile4 //Uta no☆Prince-sama♪ Repeat Love / うたの☆プリンスさまっ♪Repeat LOVE {0x800374a0,{0,0,0,0,F0100068019996000,"010024200E00A000","1.0.0"}},//Main Text + Name,sjis {0x8002ea08,{0,0,0,0,F0100068019996000,"010024200E00A000","1.0.0"}},//Choices,sjis //ワンド オブ フォーチュン R2 ~時空に沈む黙示録~ for Nintendo Switch {0x821540c4,{CODEC_UTF16,0,0,ReadTextAndLenW<0>,F0100DA201E0DA000,"010088A01A774000","1.0.0"}},//dialogue {0x8353e674,{CODEC_UTF16,0,0,ReadTextAndLenW<0>,F0100DA201E0DA000,"010088A01A774000","1.0.0"}},//choice {0x835015e8,{CODEC_UTF16,0,0,ReadTextAndLenW<0>,F0100DA201E0DA000,"010088A01A774000","1.0.0"}},//name //Yo-kai Watch 4++ {0x80a88080,{CODEC_UTF8,1,0,0,F010086C00AF7C000,"010086C00AF7C000","2.2.0"}},//All Text //Cupid Parasite -Sweet & Spicy Darling- {0x80138150,{CODEC_UTF32,2,0,0,F010079C017B98000,"010079C017B98000","1.0.0"}},//name + text {0x801a1bf0,{CODEC_UTF32,0,0,0,F010079C017B98000,"010079C017B98000","1.0.0"}},//choice //DesperaDrops {0x8199c95c,{CODEC_UTF16,0,0,ReadTextAndLenDW<1>,F010061A01C1CE000,"010061A01C1CE000","1.0.0"}},//text1 {0x81d5c900,{CODEC_UTF16,0,0,ReadTextAndLenDW<1>,F010061A01C1CE000,"010061A01C1CE000","1.0.0"}},//text2 {0x820d6324,{CODEC_UTF16,0,0,ReadTextAndLenDW<1>,F010061A01C1CE000,"010061A01C1CE000","1.0.0"}},//choice //Dragon Ball Z: Kakarot {0x812a8e28,{CODEC_UTF16,0,0,0,F01008C0016544000,"0100EF00134F4000","1.50"}},//Main Text {0x812a8c90,{CODEC_UTF16,0,0,0,F01008C0016544000,"0100EF00134F4000","1.50"}},//Name {0x80bfbff0,{CODEC_UTF16,0,0,0,F01008C0016544000,"0100EF00134F4000","1.50"}},//Ptc Text {0x80bfbfd4,{CODEC_UTF16,0,0,0,F01008C0016544000,"0100EF00134F4000","1.50"}},//Ptc Name {0x8126a538,{CODEC_UTF16,0,0,0,F01008C0016544000,"0100EF00134F4000","1.50"}},//Info {0x8106fcbc,{CODEC_UTF16,0,0,0,F01008C0016544000,"0100EF00134F4000","1.50"}},//More Info {0x80fad204,{CODEC_UTF16,0,0,0,F01008C0016544000,"0100EF00134F4000","1.50"}},//Hint Part1 {0x80fad2d0,{CODEC_UTF16,0,0,0,F01008C0016544000,"0100EF00134F4000","1.50"}},//Hint Part2 {0x80facf1c,{CODEC_UTF16,0,0,0,F01008C0016544000,"0100EF00134F4000","1.50"}},//Loading Title {0x80fad018,{CODEC_UTF16,0,0,0,F01008C0016544000,"0100EF00134F4000","1.50"}},//Loading Description {0x81250c50,{CODEC_UTF16,0,0,0,F01008C0016544000,"0100EF00134F4000","1.50"}},//Tutorial h1 {0x81250df0,{CODEC_UTF16,0,0,0,F01008C0016544000,"0100EF00134F4000","1.50"}},//Tutorial h2 {0x81251e80,{CODEC_UTF16,0,0,0,F01008C0016544000,"0100EF00134F4000","1.50"}},//Tutorial Description1 {0x81252214,{CODEC_UTF16,0,0,0,F01008C0016544000,"0100EF00134F4000","1.50"}},//Tutorial Description2 {0x810ae1c4,{CODEC_UTF16,0,0,0,F01008C0016544000,"0100EF00134F4000","1.50"}},//Config Description {0x812a9bb8,{CODEC_UTF16,0,0,0,F01008C0016544000,"0100EF00134F4000","1.50"}},//Menu Talk {0x812a9b78,{CODEC_UTF16,0,0,0,F01008C0016544000,"0100EF00134F4000","1.50"}},//Menu Name //Harvestella {0x80af7abc,{CODEC_UTF16,0,0,0,F0100B0601852A000<6>,"0100EDD018032000","1.0.1"}},//Main Text {0x80c0beb8,{CODEC_UTF16,0,0,0,F0100B0601852A000<7>,"0100EDD018032000","1.0.1"}},//Tutorial + News {0x80b87f94,{CODEC_UTF16,0,0,0,F0100B0601852A000<8>,"0100EDD018032000","1.0.1"}},//Tutorial Part 2 {0x80e1c378,{CODEC_UTF16,0,0,0,F0100B0601852A000<9>,"0100EDD018032000","1.0.1"}},//Mission Title {0x80a7d7f4,{CODEC_UTF16,0,0,0,F0100B0601852A000<10>,"0100EDD018032000","1.0.1"}},//Mission Description {0x80e39130,{CODEC_UTF16,0,0,0,F0100B0601852A000<11>,"0100EDD018032000","1.0.1"}},//Item Name {0x80e38f80,{CODEC_UTF16,0,0,0,F0100B0601852A000<12>,"0100EDD018032000","1.0.1"}},//Item Description Part1 {0x80e38ea8,{CODEC_UTF16,0,0,0,F0100B0601852A000<13>,"0100EDD018032000","1.0.1"}},//Item Description Part2 //Sen no Hatou, Tsukisome no Kouki {0x8003fc90,{CODEC_UTF8,1,0,0,0,"0100F8A017BAA000","1.0.0"}},//text1 {0x8017a740,{CODEC_UTF8,0,0,0,0,"0100F8A017BAA000","1.0.0"}},//text2 //Olympia Soiree {0x8002ad04,{CODEC_UTF8,0,0,0,F0100C310110B4000,"0100F9D00C186000","1.0.0"}}, //Getsuei no Kusari -Sakuran Paranoia- {0x21801c-0x204000+0x80004000,{0,2,0,0,F0100F7401AA74000,"0100F7401AA74000","1.0.0"}},//text,sjis {0x228fac-0x204000+0x80004000,{0,1,0,0,F0100F7401AA74000,"0100F7401AA74000","1.0.0"}},//choices {0x267f24-0x204000+0x80004000,{0,1,0,0,F0100F7401AA74000,"0100F7401AA74000","1.0.0"}},//dictionary //Xenoblade Chronicles 2 {0x8010b180,{CODEC_UTF8,1,0,0,F01006F000B056000,"0100F3400332C000","2.0.2"}},//Text //Kanon {0x800dc524,{CODEC_UTF16,0,0,0,F0100FB7019ADE000,"0100FB7019ADE000","1.0.0"}},//Text //Princess Arthur {0x80066e10,{0,2,0,0,F0100FC2019346000,"0100FC2019346000","1.0.0"}},//Dialogue text ,sjis {0x8001f7d0,{0,0,0,0,F0100FC2019346000,"0100FC2019346000","1.0.0"}},//Name //Layton’s Mystery Journey: Katrielle and the Millionaires’ Conspiracy {0x8025d520,{0,2,0,0,F0100FDB00AA80000,"0100FDB00AA80000","1.1.0"}},//All Text ,sjis // Xenoblade Chronicles: Definitive Edition {0x808a5670,{CODEC_UTF8,1,0,0,F0100FF500E34A000,"0100FF500E34A000","1.1.2"}},//Main Text {0x80305968,{CODEC_UTF8,1,0,0,F0100FF500E34A000,"0100FF500E34A000","1.1.2"}},//Choices {0x8029edc8,{CODEC_UTF8,0,0,0,F0100FF500E34A000,"0100FF500E34A000","1.1.2"}},//Item Name {0x8029ede8,{CODEC_UTF8,0,0,0,F0100FF500E34A000,"0100FF500E34A000","1.1.2"}},//Item Description {0x8026a454,{CODEC_UTF8,0,0,0,F0100FF500E34A000,"0100FF500E34A000","1.1.2"}},//Acquired Item Name {0x803c725c,{CODEC_UTF8,0,0,0,F0100FF500E34A000,"0100FF500E34A000","1.1.2"}},//Acquired Item Notification {0x802794cc,{CODEC_UTF8,0,0,0,F0100FF500E34A000,"0100FF500E34A000","1.1.2"}},//Location Discovered //Unicorn Overlord {0x805ae1f8,{CODEC_UTF8,1,0,0,F01000AE01954A000,"01000AE01954A000","1.00"}},//Text //Octopath Traveler {0x8005ef78,{CODEC_UTF32,0,0,0,0,"01000E200DC58000","1.0.0"}},//Text //The World Ends with You: Final Remix {0x80706ab8,{CODEC_UTF16,2,0,0,F01006F000B056000,"01001C1009892000","1.0.0"}},//Text //JackJanne {0x81f02cd8,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100982015606000,"01001DD010A2E800","1.0.5"}},//Text {0x821db028,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100982015606000,"01001DD010A2E800","1.0.5"}},//choice //Collar x Malice {0x800444c4,{CODEC_UTF8,0,0,0,0,"01002B400E9DA000","1.0.0"}},//Text //Kanda Alice mo Suiri Suru. {0x80041db0,{0,0,0,0,F01003BD013E30000,"01003BD013E30000","1.0.0"}},//sjis //Rune Factory 3 Special {0x81fb3364,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F01001EF017BE6000,"01001EF017BE6000","1.0.4"}},//Main Text {0x826c0f20,{CODEC_UTF16,0,0,ReadTextAndLenDW<1>,F01001EF017BE6000,"01001EF017BE6000","1.0.4"}},//Aproach {0x81fb3320,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F01001EF017BE6000,"01001EF017BE6000","1.0.4"}},//Choices {0x821497e8,{CODEC_UTF16,0,0,ReadTextAndLenDW<1>,F01001EF017BE6000,"01001EF017BE6000","1.0.4"}},//Calendar {0x826ba1a0,{CODEC_UTF16,0,0,ReadTextAndLenDW<1>,F01001EF017BE6000,"01001EF017BE6000","1.0.4"}},//Info {0x823f6200,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F01001EF017BE6000,"01001EF017BE6000","1.0.4"}},//More Info {0x826c381c,{CODEC_UTF16,0,0,ReadTextAndLenDW<1>,F01001EF017BE6000,"01001EF017BE6000","1.0.4"}},//Item Select Name //Toraware no Paruma -Refrain- {0x80697300,{CODEC_UTF16,0,0,ReadTextAndLenDW<1>,F01000EA00D2EE000,"01000EA00D2EE000","1.0.0"}},//text x1 {0x806f43c0,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F01000EA00D2EE000,"01000EA00D2EE000","1.0.0"}},//name x0 {0x80d2aca4,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F01000EA00D2EE000,"01000EA00D2EE000","1.0.0"}},//choice x0 {0x804b04c8,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F01000EA00D2EE000,"01000EA00D2EE000","1.0.0"}},//alert x0 {0x804b725c,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F01000EA00D2EE000,"01000EA00D2EE000","1.0.0"}},//prompt x0 //Aiyoku no Eustia {0x804BEFD0,{CODEC_UTF8,0,0,0,F01006590155AC000,"01001CC017BB2000","1.0.0"}},//x0 - name {0x804BEFE8,{CODEC_UTF8,0,0,0,F01006590155AC000,"01001CC017BB2000","1.0.0"}},//x0 - dialogue {0x804d043c,{CODEC_UTF8,0,0,0,F01006590155AC000,"01001CC017BB2000","1.0.0"}},//x0 - choice //ワンド オブ フォーチュン R~ for Nintendo Switch {0x81ed0580,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100DA201E0DA000,"01000C7019E1C000","1.0.0"}},//dialogue {0x81f96bac,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100DA201E0DA000,"01000C7019E1C000","1.0.0"}},//name {0x8250ac28,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100DA201E0DA000,"01000C7019E1C000","1.0.0"}},//choice //Jakou no Lyla ~Trap of MUSK~ {0x80167100,{CODEC_UTF32,1,0,0,F010093800DB1C000,"010093800DB1C000","1.0.0"}},// x1 text + name (unformated), #T1 #T2, #T0/* 1. European night */ {0x801589a0,{CODEC_UTF32,1,0,0,F010093800DB1C000,"010093800DB1C000","1.0.0"}},// x0=x1=choice (sig=SltAdd) {0x801b4300,{CODEC_UTF32,1,0,0,F010093800DB1C000,"010093800DB1C000","1.0.0"}},// x1 text + name (unformated), #T1 #T2, #T0/* 2. Asian night */ {0x802a9170,{CODEC_UTF32,1,0,0,F010093800DB1C000,"010093800DB1C000","1.0.0"}},// x0=x1=choice (sig=SltAdd) {0x80301e80,{CODEC_UTF32,1,0,0,F010093800DB1C000,"010093800DB1C000","1.0.0"}},// x1 text + name (unformated), #T1 #T2, #T0/* 3. Arabic night */ {0x803f7a90,{CODEC_UTF32,1,0,0,F010093800DB1C000,"010093800DB1C000","1.0.0"}},// x0=x1=choice (sig=SltAdd) //Galleria no Chika Meikyuu to Majo no Ryodan ガレリアの地下迷宮と魔女ノ旅団 {0x8002f64c,{CODEC_UTF8,0,0,0,0,"01007010157B4000","1.0.1"}},//Main Text //Dragon's Dogma: Dark Arisen {0x81023a80,{CODEC_UTF8,1,0,0,F010057E00AC56000<0>,"010057E00AC56000","1.0.1"}},//Main Text {0x8103e140,{CODEC_UTF8,1,0,0,F010057E00AC56000<1>,"010057E00AC56000","1.0.1"}},//Allies + Cutscene Text {0x8103bb10,{CODEC_UTF8,1,0,0,F010057E00AC56000<2>,"010057E00AC56000","1.0.1"}},//NPC Text {0x80150720,{CODEC_UTF8,0,0,0,F010057E00AC56000<3>,"010057E00AC56000","1.0.1"}},//Intro Message {0x80df90a8,{CODEC_UTF8,0,0,0,F010057E00AC56000<4>,"010057E00AC56000","1.0.1"}},//Info1 {0x80ce2bb8,{CODEC_UTF8,0,0,0,F010057E00AC56000<5>,"010057E00AC56000","1.0.1"}},//Info2 {0x80292d84,{CODEC_UTF8,0,0,0,F010057E00AC56000<6>,"010057E00AC56000","1.0.1"}},//Info Popup1 {0x80cfac6c,{CODEC_UTF8,0,0,0,F010057E00AC56000<7>,"010057E00AC56000","1.0.1"}},//Info Popup2 {0x8102d460,{CODEC_UTF8,1,0,0,F010057E00AC56000<8>,"010057E00AC56000","1.0.1"}},//Description //Yo-kai Watch Jam - Yo-kai Academy Y: Waiwai Gakuen {0x80dd0cec,{CODEC_UTF8,0,0,0,F010051D010FC2000,"010051D010FC2000","4.0.0"}},//Dialogue text {0x80e33450,{CODEC_UTF8,3,0,0,F010051D010FC2000,"010051D010FC2000","4.0.0"}},//Other Dialogue text {0x80c807c0,{CODEC_UTF8,0,0,0,F010051D010FC2000,"010051D010FC2000","4.0.0"}},//Item description etc text {0x808d9a30,{CODEC_UTF8,0,0,0,F010051D010FC2000,"010051D010FC2000","4.0.0"}},//Tutorial Text {0x811b95ac,{CODEC_UTF8,3,0,0,F010051D010FC2000,"010051D010FC2000","4.0.0"}},//Menu screen {0x80e20290,{CODEC_UTF8,3,0,0,F010051D010FC2000,"010051D010FC2000","4.0.0"}},//Opening Song Text etc {0x80c43680,{CODEC_UTF8,3,0,0,F010051D010FC2000,"010051D010FC2000","4.0.0"}},//Cutscene Text //NEO: The World Ends With You {0x81581d6c,{CODEC_UTF16,0,0,ReadTextAndLenDW<1>,F010043B013C5C000<0>,"010043B013C5C000","1.03"}},//Text {0x818eb248,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F010043B013C5C000<1>,"010043B013C5C000","1.03"}},//Objective {0x81db84a4,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F010043B013C5C000<2>,"010043B013C5C000","1.03"}},//Menu: Collection Item Name {0x81db8660,{CODEC_UTF16,0,0,ReadTextAndLenDW<1>,F010043B013C5C000<3>,"010043B013C5C000","1.03"}},//Menu: Collection Item Description {0x81c71a48,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F010043B013C5C000<4>,"010043B013C5C000","1.03"}},//Tutorial Title {0x81c71b28,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F010043B013C5C000<5>,"010043B013C5C000","1.03"}},//Tutorial Description //Eiyuden Chronicle: Rising {0x82480190,{CODEC_UTF16,0,0,ReadTextAndLenDW<1>,0,"010039B015CB6000","1.02"}},//Main Text {0x824805d0,{CODEC_UTF16,0,0,ReadTextAndLenDW<1>,0,"010039B015CB6000","1.02"}},//Name {0x81f05c44,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,0,"010039B015CB6000","1.02"}},//Intro Text {0x82522ac4,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,0,"010039B015CB6000","1.02"}},//Character Info {0x81b715f4,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,0,"010039B015CB6000","1.02"}},//Info {0x825274d0,{CODEC_UTF16,0,0,ReadTextAndLenDW<1>,0,"010039B015CB6000","1.02"}},//Info2 {0x825269b0,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,0,"010039B015CB6000","1.02"}},//Tutorial Title {0x82526a0c,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,0,"010039B015CB6000","1.02"}},//Tutorial Description {0x82523e04,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,0,"010039B015CB6000","1.02"}},//Objective Title {0x82524160,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,0,"010039B015CB6000","1.02"}},//Objective Description {0x81f0351c,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,0,"010039B015CB6000","1.02"}},//Location Selection Title {0x81f0358c,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,0,"010039B015CB6000","1.02"}},//Location Selection Description {0x81f0d520,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,0,"010039B015CB6000","1.02"}},//Quest Title {0x81f0d58c,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,0,"010039B015CB6000","1.02"}},//Quest Description {0x81f00318,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,0,"010039B015CB6000","1.02"}},//Help Title {0x81f00368,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,0,"010039B015CB6000","1.02"}},//Help Description {0x81f0866c,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,0,"010039B015CB6000","1.02"}},//Config Description //Ghost Trick: Phantom Detective {0x81448898,{CODEC_UTF16,0,0,0,F010043B013C5C000<6>,"010029B018432000","1.0.0"}},//Main Text {0x80c540d4,{CODEC_UTF16,0,0,0,F010043B013C5C000<7>,"010029B018432000","1.0.0"}},//Secondary Text {0x80e50dd4,{CODEC_UTF16,0,0,0,F010043B013C5C000<8>,"010029B018432000","1.0.0"}},//Object Name {0x80f91c08,{CODEC_UTF16,0,0,0,F010043B013C5C000<9>,"010029B018432000","1.0.0"}},//Language Selection {0x805c9014,{CODEC_UTF16,0,0,0,F010043B013C5C000<10>,"010029B018432000","1.0.0"}},//Story/Character Info //Higurashi no Naku Koro ni Hou {0x800bd6c8,{0,0,0,0,F0100F6A00A684000,"0100F6A00A684000","1.0.0"}},//sjis {0x800c2d20,{0,0,0,0,F0100F6A00A684000,"0100F6A00A684000","1.2.0"}},//sjis //Umineko no Naku Koro ni Saku ~Nekobako to Musou no Koukyoukyoku~ {0x800b4560,{CODEC_UTF8,0,0,0,0,"01006A300BA2C000","1.0.0"}},// x0 name + text (bottom, center) - whole line. filter is to complex, quit. {0x801049c0,{CODEC_UTF8,0,0,0,0,"01006A300BA2C000","1.0.0"}},// x0 prompt, bottomLeft {0x80026378,{CODEC_UTF8,0,0,0,0,"01006A300BA2C000","1.0.0"}},// x0 Yes|No {0x801049a8,{CODEC_UTF8,0,0,0,0,"01006A300BA2C000","1.0.0"}},// x0 topLeft (double: ♪ + text) //Koroshiya to Strawberry- Plus {0x81322cec,{CODEC_UTF16,0,0,ReadTextAndLenW<0>,F010042300C4F6000,"0100E390145C8000","1.0.0"}},//dialogue {0x819b1a78,{CODEC_UTF16,0,0,ReadTextAndLenW<2>,F010042300C4F6000,"0100E390145C8000","1.0.0"}},//dialogue {0x81314e8c,{CODEC_UTF16,0,0,ReadTextAndLenW<0>,F010042300C4F6000,"0100E390145C8000","1.0.0"}},//dialogue //Tokimeki Memorial Girl's Side 1st Love for Nintendo Switch {0x822454a4,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100D9A01BD86000,"0100D9A01BD86000","1.0.1"}},//dialogue1 {0x82247138,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100D9A01BD86000,"0100D9A01BD86000","1.0.1"}},//dialogue2 {0x822472e0,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100D9A01BD86000,"0100D9A01BD86000","1.0.1"}},//dialogue3 {0x82156988,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100D9A01BD86000,"0100D9A01BD86000","1.0.1"}},//choice {0x82642200,{CODEC_UTF16,0,0,ReadTextAndLenDW<2>,F0100D9A01BD86000,"0100D9A01BD86000","1.0.1"}},//option1 {0x81ecd758,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100D9A01BD86000,"0100D9A01BD86000","1.0.1"}},//option2 {0x823185e4,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100D9A01BD86000,"0100D9A01BD86000","1.0.1"}},//mail {0x823f2edc,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100D9A01BD86000,"0100D9A01BD86000","1.0.1"}},//roomDescript {0x821e3cf0,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100D9A01BD86000,"0100D9A01BD86000","1.0.1"}},//dateDescript {0x81e20050,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100D9A01BD86000,"0100D9A01BD86000","1.0.1"}},//characterDesc1 {0x81e1fe50,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100D9A01BD86000,"0100D9A01BD86000","1.0.1"}},//characterDesc2 {0x81e1feb0,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100D9A01BD86000,"0100D9A01BD86000","1.0.1"}},//characterDesc3 {0x81e1ff04,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100D9A01BD86000,"0100D9A01BD86000","1.0.1"}},//characterDesc4 {0x821d03b0,{CODEC_UTF16,0,0,ReadTextAndLenDW<3>,F0100D9A01BD86000,"0100D9A01BD86000","1.0.1"}},//news {0x82312008,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100D9A01BD86000,"0100D9A01BD86000","1.0.1"}},//luckyitem //Triangle Strategy {0x80aadebc,{CODEC_UTF16,0,0,0,F0100CC80140F8000<0>,"0100CC80140F8000","1.1.0"}},//Main Text {0x81358ce4,{CODEC_UTF16,3,0,0,F0100CC80140F8000<1>,"0100CC80140F8000","1.1.0"}},//Secondary Text {0x80a38988,{CODEC_UTF16,0,0,0,F0100CC80140F8000<2>,"0100CC80140F8000","1.1.0"}},//Info Contents {0x80aa4aec,{CODEC_UTF16,0,0,0,F0100CC80140F8000<3>,"0100CC80140F8000","1.1.0"}},//Info {0x80b1f300,{CODEC_UTF16,0,0,0,F0100CC80140F8000<4>,"0100CC80140F8000","1.1.0"}},//Difficulty Selection Part1 {0x80b1f670,{CODEC_UTF16,0,0,0,F0100CC80140F8000<5>,"0100CC80140F8000","1.1.0"}},//Difficulty Selection Part2 {0x80aa48f0,{CODEC_UTF16,0,0,0,F0100CC80140F8000<6>,"0100CC80140F8000","1.1.0"}},//PopUp Message //Xenoblade Chronicles 3 {0x80cf6ddc,{CODEC_UTF8,0,0,0,F010074F013262000,"010074F013262000","2.2.0"}},//Main Text {0x80e76150,{CODEC_UTF8,0,0,0,F010074F013262000,"010074F013262000","2.2.0"}},//Secondary Text {0x807b4ee4,{CODEC_UTF8,1,0,0,F010074F013262000,"010074F013262000","2.2.0"}},//Tutorial Description {0x80850218,{CODEC_UTF8,0,0,0,F010074F013262000,"010074F013262000","2.2.0"}},//Objective //CLOCK ZERO ~Shuuen no Ichibyou~ Devote {0x8003c290,{0,0,0,0,F0100BDD01AAE4000,"01008C100C572000","1.0.0"}},//name,sjis {0x8003c184,{0,0,0,0,F0100BDD01AAE4000,"01008C100C572000","1.0.0"}},//dialogue {0x8001f6d0,{0,0,0,0,F0100BDD01AAE4000,"01008C100C572000","1.0.0"}},//prompt //Shuuen no Virche -ErroR:salvation {0x8001f594,{CODEC_UTF8,0,0x1C,0,F0100C310110B4000,"01005B9014BE0000","1.0.0"}},//dialog {0x8001f668,{CODEC_UTF8,0,0x1C,0,F0100C310110B4000,"01005B9014BE0000","1.0.0"}},//center {0x8003d540,{CODEC_UTF8,0,0,0,F0100C310110B4000,"01005B9014BE0000","1.0.0"}},//choice //Spade no Kuni no Alice ~Wonderful White World~ / スペードの国のアリス ~Wonderful White World~ {0x8135d018,{CODEC_UTF16,0,0,ReadTextAndLenDW<1>,F01008C0016544000,"01003FE00E2F8000","1.0.0"}},//Text + Name //十三支演義 偃月三国伝1・2 for Nintendo Switch {0x82031f20,{CODEC_UTF16,0,0,ReadTextAndLenDW<2>,F0100DA201E0DA000,"01003D2017FEA000","1.0.0"}},//name {0x82ef9550,{CODEC_UTF16,0,0,ReadTextAndLenDW<1>,F0100DA201E0DA000,"01003D2017FEA000","1.0.0"}},//dialogue {0x83252e0c,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100DA201E0DA000,"01003D2017FEA000","1.0.0"}},//choice //Tales of Vesperia: Definitive Edition {0x802de170,{CODEC_UTF8,2,0,0,F01002C0008E52000,"01002C0008E52000","1.0.2"}},//Ptc Text {0x802cf170,{CODEC_UTF8,3,0,0,F01002C0008E52000,"01002C0008E52000","1.0.2"}},//Cutscene {0x8019957c,{CODEC_UTF8,0,0,0,F01002C0008E52000,"01002C0008E52000","1.0.2"}},//Conversation {0x802c0600,{CODEC_UTF8,2,0,0,F01002C0008E52000,"01002C0008E52000","1.0.2"}},//Info {0x801135fc,{CODEC_UTF8,0,0,0,F01002C0008E52000,"01002C0008E52000","1.0.2"}},//Post Battle Text //Nil Adminari no Tenbin Irodori Nadeshiko {0x8005fd5c,{CODEC_UTF8,0,0,0,F0100BDD01AAE4000,"01002BB00A662000","1.0.0"}},//name {0x800db0d8,{CODEC_UTF8,0,20,0,F0100BDD01AAE4000,"01002BB00A662000","1.0.0"}},//name //Hanayaka Nari, Waga Ichizoku Modern Nostalgie {0x2509ac-0x204000+0x80004000,{CODEC_UTF8,0,0,T0100B5500CA0C000,F0100B5500CA0C000,"01008DE00C022000","1.0.0"}}, //Master Detective Archives: Rain Code {0x80bf2034,{CODEC_UTF16,0,0,0,F0100F4401940A000,"0100F4401940A000","1.3.3"}},//Dialogue text {0x80c099d4,{CODEC_UTF16,0,0,0,F0100F4401940A000,"0100F4401940A000","1.3.3"}},//Cutscene text {0x80cbf1f4,{CODEC_UTF16,0,0,0,F0100F4401940A000,"0100F4401940A000","1.3.3"}},//Menu {0x80cbc11c,{CODEC_UTF16,0,0,0,F0100DA201E0DA000,"0100F4401940A000","1.3.3"}},//Menu Item Description {0x80cacc14,{CODEC_UTF16,0,0,0,F0100DA201E0DA000,"0100F4401940A000","1.3.3"}},//Menu Item Description 2 {0x80cd6410,{CODEC_UTF16,0,0,0,F0100DA201E0DA000,"0100F4401940A000","1.3.3"}},//Menu Item Description 3 {0x80c214d4,{CODEC_UTF16,0,0,0,F0100F4401940A000,"0100F4401940A000","1.3.3"}},//Description {0x80cc9908,{CODEC_UTF16,0,0,0,F0100DA201E0DA000,"0100F4401940A000","1.3.3"}},//Mini game item description {0x80bce36c,{CODEC_UTF16,0,0,0,F0100F4401940A000,"0100F4401940A000","1.3.3"}},//Tutorial {0x80bcb7d4,{CODEC_UTF16,0,0,0,F0100F4401940A000,"0100F4401940A000","1.3.3"}},//Loading Screen information {0x80bf32d8,{CODEC_UTF16,0,0,0,F0100F4401940A000,"0100F4401940A000","1.3.3"}},//Choices //Fire Emblem: Three Houses {0x8041e6bc,{CODEC_UTF8,0,0,0,F010055D009F78000<0>,"010055D009F78000","1.2.0"}},//Main Text {0x805ca570,{CODEC_UTF8,0,0,0,F010055D009F78000<1>,"010055D009F78000","1.2.0"}},//Cutscene Text {0x8049f1e8,{CODEC_UTF8,0,0,0,F010055D009F78000<2>,"010055D009F78000","1.2.0"}},//Cutscene Text Scroll {0x805ee730,{CODEC_UTF8,0,0,0,F010055D009F78000<3>,"010055D009F78000","1.2.0"}},//Info {0x805ee810,{CODEC_UTF8,0,0,0,F010055D009F78000<4>,"010055D009F78000","1.2.0"}},//Info Choice {0x80467a60,{CODEC_UTF8,0,0,0,F010055D009F78000<5>,"010055D009F78000","1.2.0"}},//Location First Part {0x805f0340,{CODEC_UTF8,0,0,0,F010055D009F78000<6>,"010055D009F78000","1.2.0"}},//Location Second Part {0x801faae4,{CODEC_UTF8,0,0,0,F010055D009F78000<7>,"010055D009F78000","1.2.0"}},//Action Location {0x803375e8,{CODEC_UTF8,0,0,0,F010055D009F78000<8>,"010055D009F78000","1.2.0"}},//Objective {0x805fd870,{CODEC_UTF8,0,0,0,F010055D009F78000<9>,"010055D009F78000","1.2.0"}},//Tutorial {0x804022f8,{CODEC_UTF8,0,0,0,F010055D009F78000<10>,"010055D009F78000","1.2.0"}},//Request {0x802f7df4,{CODEC_UTF8,0,0,0,F010055D009F78000<11>,"010055D009F78000","1.2.0"}},//Quest Description {0x8031af0c,{CODEC_UTF8,0,0,0,F010055D009F78000<12>,"010055D009F78000","1.2.0"}},//Aproach Text //Sweet Clown ~Gozen San-ji no Okashi na Doukeshi~ {0x20dbfc-0x204000+0x80004000,{0,0,0x28,0,F010028D0148E6000,"010028D0148E6000","1.2.0"}},//dialog, sjis {0x214978-0x204000+0x80004000,{0,2,0xC,0,F010028D0148E6000,"010028D0148E6000","1.2.0"}},//choices //Another Code: Recollection {0x82dcad30,{CODEC_UTF16,0,0,ReadTextAndLenDW<1>,F0100CB9018F5A000,"0100CB9018F5A000","1.0.0"}},//Main Text {0x82f2cfb0,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100CB9018F5A000,"0100CB9018F5A000","1.0.0"}},//Item Description {0x82dcc5fc,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100CB9018F5A000,"0100CB9018F5A000","1.0.0"}},//Tutorial PopUp Header {0x82dcc61c,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100CB9018F5A000,"0100CB9018F5A000","1.0.0"}},//Tutorial PopUp Description {0x82f89e78,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100CB9018F5A000,"0100CB9018F5A000","1.0.0"}},//Aproach Text {0x82973300,{CODEC_UTF16,0,0,ReadTextAndLenDW<1>,F0100CB9018F5A000,"0100CB9018F5A000","1.0.0"}},//Chapter {0x82dd2604,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100CB9018F5A000,"0100CB9018F5A000","1.0.0"}},//Location {0x82bcb77c,{CODEC_UTF16,0,0,ReadTextAndLenDW<1>,F0100CB9018F5A000,"0100CB9018F5A000","1.0.0"}},//Save Message {0x828ccfec,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100CB9018F5A000,"0100CB9018F5A000","1.0.0"}},//Acquired Item {0x83237b14,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100CB9018F5A000,"0100CB9018F5A000","1.0.0"}},//Question Options {0x82dcee10,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100CB9018F5A000,"0100CB9018F5A000","1.0.0"}},//Tutorial Header {0x82dcee38,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100CB9018F5A000,"0100CB9018F5A000","1.0.0"}},//Tutorial Description {0x82e5cadc,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100CB9018F5A000,"0100CB9018F5A000","1.0.0"}},//Character Info Name {0x82e5cc38,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100CB9018F5A000,"0100CB9018F5A000","1.0.0"}},//Character Info Description {0x82871ac8,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100CB9018F5A000,"0100CB9018F5A000","1.0.0"}},//Letter Message {0x82e4dad4,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100CB9018F5A000,"0100CB9018F5A000","1.0.0"}},//アナザーキー {0x82bd65d0,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100CB9018F5A000,"0100CB9018F5A000","1.0.0"}},//Message Title {0x82bd65f0,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100CB9018F5A000,"0100CB9018F5A000","1.0.0"}},//Message Content {0x82c1ccf0,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100CB9018F5A000,"0100CB9018F5A000","1.0.0"}},//Decision Header {0x82c1d218,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100CB9018F5A000,"0100CB9018F5A000","1.0.0"}},//Decision1 {0x82c1e43c,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100CB9018F5A000,"0100CB9018F5A000","1.0.0"}},//Decision2 //AI: The Somnium Files {0x8165a9a4,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100C7400CFB4000<0>,"0100C7400CFB4000","1.0.2"}},//Main Text + Tutorial {0x80320dd4,{CODEC_UTF16,0,0,ReadTextAndLenDW<1>,F0100C7400CFB4000<1>,"0100C7400CFB4000","1.0.2"}},//Menu Interface Text1 {0x80320e20,{CODEC_UTF16,0,0,ReadTextAndLenDW<1>,F0100C7400CFB4000<2>,"0100C7400CFB4000","1.0.2"}},//Menu Interface Text2 //AI: The Somnium Files - nirvanA Initiative {0x8189ae64,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100BD4014D8C000<0>,"0100BD4014D8C000","1.0.1"}},//Main Text + Tutorial {0x81813428,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100BD4014D8C000<1>,"0100BD4014D8C000","1.0.1"}},//Hover Investigation Text {0x82e122b8,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100BD4014D8C000<2>,"0100BD4014D8C000","1.0.1"}},//Info {0x82cffff8,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100BD4014D8C000<3>,"0100BD4014D8C000","1.0.1"}},//Config Description {0x818c3cd8,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100BD4014D8C000<4>,"0100BD4014D8C000","1.0.1"}},//File: Names {0x82ea1a38,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100BD4014D8C000<5>,"0100BD4014D8C000","1.0.1"}},//File: Contents {0x82cbb1fc,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F0100BD4014D8C000<6>,"0100BD4014D8C000","1.0.1"}},//Investigation Choices //Fata morgana no Yakata ~Dreams of the Revenants Edition~ / ファタモ {0x8025a998,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F01008C0016544000,"0100BE40138B8000","1.0.1"}},//Main Text {0x801d6050,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F01008C0016544000,"0100BE40138B8000","1.0.1"}},//Choices //Ni no Kuni II: Revenant Kingdom {0x80ac651c,{CODEC_UTF8,0,0,0,F0100C4E013E5E000,"0100C4E013E5E000","1.0.0"}},//Main Text {0x80335ea0,{CODEC_UTF8,0,0,0,F0100C4E013E5E000,"0100C4E013E5E000","1.0.0"}},//Name //Harukanaru Toki no Naka de 7 {0x800102bc,{0,0,0,T0100CF400F7CE000<0>,F0100CF400F7CE000,"0100CF400F7CE000","1.0.0"}},//name, sjis {0x80051f90,{0,0,0,T0100CF400F7CE000<1>,F0100CF400F7CE000,"0100CF400F7CE000","1.0.0"}},//text {0x80010b48,{0,0,0,T0100CF400F7CE000<0>,F0100CF400F7CE000,"0100CF400F7CE000","1.0.0"}},//prompt {0x80010c80,{0,0,0,T0100CF400F7CE000<0>,F0100CF400F7CE000,"0100CF400F7CE000","1.0.0"}},//choice //Angelique Luminarise {0x80046c04,{0,0,0,T0100CF400F7CE000<0>,F0100CF400F7CE000,"0100D11018A7E000","1.0.0"}},//ingameDialogue, sjis {0x80011284,{0,0,0,T0100CF400F7CE000<0>,F0100CF400F7CE000,"0100D11018A7E000","1.0.0"}},//choice {0x80011140,{0,0,0,T0100CF400F7CE000<0>,F0100CF400F7CE000,"0100D11018A7E000","1.0.0"}},//prompt first //Star Ocean The Second Story R {0x81d5e4d0,{0,0,0,ReadTextAndLenDW<1>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//Main Text + Tutorial {0x81d641b4,{0,0,0,ReadTextAndLenDW<0>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//Intro Cutscene {0x824b1f00,{0,0,0,ReadTextAndLenDW<0>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//Character Selection Name {0x81d4c670,{0,0,0,ReadTextAndLenDW<0>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//Character Selection Lore {0x8203a048,{0,0,0,ReadTextAndLenDW<0>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//General Description {0x82108cd0,{0,0,0,ReadTextAndLenDW<1>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//Unique Spot Title {0x827a9848,{0,0,0,ReadTextAndLenDW<0>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//Chest Item {0x82756890,{0,0,0,ReadTextAndLenDW<1>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//Info {0x82241410,{0,0,0,ReadTextAndLenDW<0>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//Menu Talk {0x81d76404,{0,0,0,ReadTextAndLenDW<0>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//Secondary Talk {0x821112e0,{0,0,0,ReadTextAndLenDW<0>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//Location {0x82111320,{0,0,0,ReadTextAndLenDW<0>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//Location Interior {0x81d6ea24,{0,0,0,ReadTextAndLenDW<1>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//Special Arts/Spells Name {0x81d6ea68,{0,0,0,ReadTextAndLenDW<0>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//Special Arts/Spells Description {0x81d6ed48,{0,0,0,ReadTextAndLenDW<0>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//Special Arts/Spells Range {0x81d6eb3c,{0,0,0,ReadTextAndLenDW<0>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//Special Arts/Spells Effect {0x81d6f880,{0,0,0,ReadTextAndLenDW<0>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//Special Arts/Spells Bonus {0x8246d81c,{0,0,0,ReadTextAndLenDW<0>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//Tactics Name {0x8246d83c,{0,0,0,ReadTextAndLenDW<0>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//Tactics Description {0x8212101c,{0,0,0,ReadTextAndLenDW<0>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//Achievements Name {0x82121088,{0,0,0,ReadTextAndLenDW<0>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//Achievements Description {0x81d6c480,{0,0,0,ReadTextAndLenDW<0>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//Acquired Item1 {0x821143f0,{0,0,0,ReadTextAndLenDW<0>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//Acquired Item2 {0x81d6fb18,{0,0,0,ReadTextAndLenDW<1>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//Battle Skill Name {0x81d6fb4c,{0,0,0,ReadTextAndLenDW<0>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//Battle Skill Description {0x81d6fb7c,{0,0,0,ReadTextAndLenDW<0>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//Battle Skill Bonus Description {0x8212775c,{0,0,0,ReadTextAndLenDW<0>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//Battle Item Name {0x82127788,{0,0,0,ReadTextAndLenDW<0>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//Battle Item Description {0x821361ac,{0,0,0,ReadTextAndLenDW<0>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//Battle Ability Name {0x821361f4,{0,0,0,ReadTextAndLenDW<0>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//Battle Ability Range {0x82136218,{0,0,0,ReadTextAndLenDW<0>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//Battle Ability Effect {0x8238451c,{0,0,0,ReadTextAndLenDW<0>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//Battle Strategy Name {0x82134610,{0,0,0,ReadTextAndLenDW<0>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//Battle Acquired Item {0x824b5eac,{0,0,0,ReadTextAndLenDW<0>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//Item Name {0x824b5f04,{0,0,0,ReadTextAndLenDW<0>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//Item Description {0x824b5f54,{0,0,0,ReadTextAndLenDW<0>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//Item Effect {0x81d71790,{0,0,0,ReadTextAndLenDW<0>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//Item Factor Title {0x824b62c0,{0,0,0,ReadTextAndLenDW<0>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//Item Factor Description {0x824c2e2c,{0,0,0,ReadTextAndLenDW<1>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//IC/Specialty Skills Name {0x824c2e54,{0,0,0,ReadTextAndLenDW<0>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//IC/Specialty Skills Description {0x824c2fbc,{0,0,0,ReadTextAndLenDW<1>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//IC/Specialty Skills Level {0x823e7230,{0,0,0,ReadTextAndLenDW<0>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//IC/Specialty Name {0x823e94bc,{0,0,0,ReadTextAndLenDW<0>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//IC/Specialty Description {0x823e9980,{0,0,0,ReadTextAndLenDW<0>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//IC/Specialty Talent {0x823ea9c4,{0,0,0,ReadTextAndLenDW<0>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//IC/Specialty Support Item {0x82243b18,{0,0,0,ReadTextAndLenDW<1>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//Enemy Info Skills {0x81d64540,{0,0,0,ReadTextAndLenDW<0>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//Guild Mission Description {0x823b4f6c,{0,0,0,ReadTextAndLenDW<0>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//Guild Mission Reward {0x826facd8,{0,0,0,ReadTextAndLenDW<0>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//Challenge Mission Description {0x826f98f8,{0,0,0,ReadTextAndLenDW<0>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//Challenge Mission Reward {0x8244af2c,{0,0,0,ReadTextAndLenDW<0>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//Formation Name {0x8244ae90,{0,0,0,ReadTextAndLenDW<0>,F010065301A2E0000,"010065301A2E0000","1.0.2"}},//Formation Description //魔法使いの夜 通常版 {0x80086ba0,{CODEC_UTF8,0,0,T010012A017F18000,0,"010012A017F18000","1.0.0"}}, {0x80086e70,{CODEC_UTF8,0,0,T010012A017F18000,0,"010012A017F18000","1.0.2"}}, //月姫 -A piece of blue glass moon- {0x800ac290,{CODEC_UTF8,0,0,T010012A017F18000,0,"01001DC01486A000",0}},//1.0.1,1.0.2 //The Quintessential Quintuplets the Movie: Five Memories of My Time with You (JP) {0x80011688,{CODEC_UTF8,1,0,0,F01005E9016BDE000,"01005E9016BDE000","1.0.0"}},//dialogue, menu, choice, name // Flowers: Les Quatre Saisons {0x8006f940,{CODEC_UTF16,1,0,0,F01002AE00F442000,"01002AE00F442000","1.0.1"}}, //最悪なる災厄人間に捧ぐ eSHOP [01000A400AF2A000][v0] {0x8034EB44,{CODEC_UTF16,8,0,0,F01000A400AF2A000,"01000A400AF2A000","1.0.0"}},//text //神様のような君へ {0x80487CD0,{CODEC_UTF8,0,0,0,F01006B5014E2E000,"01006B5014E2E000","1.0.0"}},//text //BUSTAFELLOWS {0x80191b18,{CODEC_UTF16,0,0,ReadTextAndLenW<0>,F0100874017BE2000,"010060800B7A8000","1.1.3"}},//Dialogue {0x80191f88,{CODEC_UTF16,0,0,ReadTextAndLenW<0>,F0100874017BE2000,"010060800B7A8000","1.1.3"}},//Choice {0x801921a4,{CODEC_UTF16,0,0,ReadTextAndLenW<0>,F0100874017BE2000,"010060800B7A8000","1.1.3"}},//Choice 2 {0x801935f0,{CODEC_UTF16,0,0,ReadTextAndLenW<0>,F0100874017BE2000,"010060800B7A8000","1.1.3"}},//option //Moujuutsukai to Ouji-sama ~Flower & Snow~ {0x800a1a10,{CODEC_UTF8,1,0,0,F01001B900C0E2000,"01001B900C0E2000","1.0.0"}},//Dialogue 1 {0x80058f80,{CODEC_UTF8,1,0,0,F01001B900C0E2000,"01001B900C0E2000","1.0.0"}},//Dialogue 2 //Detective Pikachu Returns {0x81585750,{CODEC_UTF16,0,0,ReadTextAndLenDW<2>,F010007500F27C000,"010007500F27C000","1.0.0"}},//All Text //Dragon Quest Treasures {0x80bd62c4,{CODEC_UTF16,0,0,0,F0100217014266000,"0100217014266000","1.0.1"}},//Cutscene {0x80a74b64,{CODEC_UTF16,0,0,0,F0100217014266000,"0100217014266000","1.0.1"}},//Ptc Text {0x80a36d18,{CODEC_UTF16,0,0,0,F0100217014266000,"0100217014266000","1.0.1"}},//Info {0x80c43878,{CODEC_UTF16,0,0,0,F0100217014266000,"0100217014266000","1.0.1"}},//Tutorial Title {0x80c43d50,{CODEC_UTF16,0,0,0,F0100217014266000,"0100217014266000","1.0.1"}},//Tutorial Description {0x80a72598,{CODEC_UTF16,0,0,0,F0100217014266000,"0100217014266000","1.0.1"}},//Aproach Text //Rune Factory 4 Special {0x48b268-0x204000+0x80004000,{CODEC_UTF8,3,0,0,F010027100C79A000,"010027100C79A000","1.0.1"}},//All Text //The Legend of Zelda: Skyward Sword HD {0x80dc36dc,{CODEC_UTF16|FULL_STRING,3,0,0,F01001EF017BE6000,"01002DA013484000","1.0.1"}},//All Text //World of Final Fantasy Maxima {0x8068fea0,{CODEC_UTF8,0,0,0,F010072000BD32000<0>,"010072000BD32000","1.0.0"}},//Cutscene {0x802c6a48,{CODEC_UTF8,0,0,0,F010072000BD32000<1>,"010072000BD32000","1.0.0"}},//Action Text {0x803a523c,{CODEC_UTF8,1,0,0,F010072000BD32000<2>,"010072000BD32000","1.0.0"}},//Location {0x8041ed64,{CODEC_UTF8,0,0,0,F010072000BD32000<3>,"010072000BD32000","1.0.0"}},//Info {0x802c9f1c,{CODEC_UTF8,0,0,0,F010072000BD32000<4>,"010072000BD32000","1.0.0"}},//Chapter First Part {0x802c9f6c,{CODEC_UTF8,0,0,0,F010072000BD32000<5>,"010072000BD32000","1.0.0"}},//Chapter Second Part //Tokyo Xanadu eX+ {0x8025135c,{CODEC_UTF8,1,0,0,F010080C01AA22000,"010080C01AA22000","1.0.0"}},//Name {0x80251068,{CODEC_UTF8,0,0,0,F010080C01AA22000,"010080C01AA22000","1.0.0"}},//Main Text {0x802ac86c,{CODEC_UTF8,0,0,0,F010080C01AA22000,"010080C01AA22000","1.0.0"}},//Action Text {0x802b04b4,{CODEC_UTF8,0,0,0,F010080C01AA22000,"010080C01AA22000","1.0.0"}},//Choices {0x8013243c,{CODEC_UTF8,0,0,0,F010080C01AA22000,"010080C01AA22000","1.0.0"}},//Location {0x802b1f3c,{CODEC_UTF8,0,0,0,F010080C01AA22000,"010080C01AA22000","1.0.0"}},//Info {0x802ab46c,{CODEC_UTF8,0,0,0,F010080C01AA22000,"010080C01AA22000","1.0.0"}},//Documents //DORAEMON STORY OF SEASONS: Friends of the Great Kingdom {0x839558e4,{CODEC_UTF16,0,0,ReadTextAndLenDW<1>,F01009B50139A8000<0>,"01009B50139A8000","1.1.1"}},//Text {0x8202a9b0,{CODEC_UTF16,0,0,ReadTextAndLenDW<0>,F01009B50139A8000<1>,"01009B50139A8000","1.1.1"}},//Tutorial //Monster Hunter Stories 2: Wings of Ruin {0x8042fe60,{CODEC_UTF8,1,0,0,F0100CB700D438000<0>,"0100CB700D438000","1.5.2"}},//Cutscene {0x804326c0,{CODEC_UTF8,1,0,0,F0100CB700D438000<1>,"0100CB700D438000","1.5.2"}},//Ptc Text {0x804d3d44,{CODEC_UTF8,0,0,0,F0100CB700D438000<2>,"0100CB700D438000","1.5.2"}},//Info {0x8045e7c8,{CODEC_UTF8,0,0,0,F0100CB700D438000<3>,"0100CB700D438000","1.5.2"}},//Info Choice {0x805cec4c,{CODEC_UTF8,0,0,0,F0100CB700D438000<4>,"0100CB700D438000","1.5.2"}},//Config Header {0x8078c2d0,{CODEC_UTF8,0,0,0,F0100CB700D438000<5>,"0100CB700D438000","1.5.2"}},//Config Name+ {0x805d0858,{CODEC_UTF8,0,0,0,F0100CB700D438000<6>,"0100CB700D438000","1.5.2"}},//Config Description {0x807612d4,{CODEC_UTF8,0,0,0,F0100CB700D438000<7>,"0100CB700D438000","1.5.2"}},//Notice {0x807194a0,{CODEC_UTF8,1,0,0,F0100CB700D438000<8>,"0100CB700D438000","1.5.2"}},//Update Content + Tutorial {0x804d687c,{CODEC_UTF8,0,0,0,F0100CB700D438000<9>,"0100CB700D438000","1.5.2"}},//Objective Title {0x804d6a7c,{CODEC_UTF8,0,0,0,F0100CB700D438000<10>,"0100CB700D438000","1.5.2"}},//Objective Description {0x80509900,{CODEC_UTF8,0,0,0,F0100CB700D438000<11>,"0100CB700D438000","1.5.2"}},//Aproach Text {0x8060ee90,{CODEC_UTF8,1,0,0,F0100CB700D438000<12>,"0100CB700D438000","1.5.2"}},//Acquired Item //2045、月より。 {0x80016334,{CODEC_UTF8,1,0,0,F01005C301AC5E000,"01005C301AC5E000","1.0.1"}}, //ヤマノススメ Next Summit ~あの山に、もう一度~ {0x806E1444,{CODEC_UTF8,0,0,0,F0100815019488000_text,"0100815019488000","1.0.0"}}, {0x80659EE0,{CODEC_UTF8,1,0,0,F0100815019488000_name,"0100815019488000","1.0.0"}}, //Prison Princess {0x800eba00,{CODEC_UTF16,2,0x14,0,0,"0100F4800F872000","1.0.0"}}, //Utakata no Uchronia {0x8180de40,{CODEC_UTF16,0,0,ReadTextAndLenW<0>,F010027401A2A2000,"010027401A2A2000","1.0.0"}},//text box {0x816b61c0,{CODEC_UTF16,0,0,ReadTextAndLenW<0>,F010027401A2A2000,"010027401A2A2000","1.0.0"}},//dictionary {0x815fe594,{CODEC_UTF16,0,0,ReadTextAndLenW<0>,F010027401A2A2000,"010027401A2A2000","1.0.0"}},//choices //GrimGrimoire OnceMore {0x80020bd4,{CODEC_UTF8,0,0,0,0,"01003F5017760000","1.0.0"}}, {0x800375a0,{CODEC_UTF8,2,0,0,0,"01003F5017760000","1.0.0"}},//tutorial {0x800781dc,{CODEC_UTF8,0,0,0,0,"01003F5017760000","1.0.0"}}, }; return 1; }(); }