mirror of
https://github.com/HIllya51/LunaTranslator.git
synced 2024-12-28 08:04:13 +08:00
.
This commit is contained in:
parent
cfd78eb70f
commit
4303400903
@ -84,6 +84,21 @@ namespace ppsspp
|
|||||||
buffer->from(s);
|
buffer->from(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ULJM05019(TextBuffer *buffer, HookParam *hp)
|
||||||
|
{
|
||||||
|
auto s = buffer->strA();
|
||||||
|
auto _1 = s.find("\x81\xa5");
|
||||||
|
auto _2 = s.find("\x81\xa1"); // ■ ▼
|
||||||
|
auto _3 = min(_1, _2);
|
||||||
|
if (_3 == s.npos)
|
||||||
|
return;
|
||||||
|
s = s.substr(0, _1);
|
||||||
|
s = std::regex_replace(s, std::regex(R"(\x81m(.*?)\x81n)"), ""); // [龍神]
|
||||||
|
s = std::regex_replace(s, std::regex(R"(\x81o(.*?)\x81p)"), "$1"); // {龍の宝玉}
|
||||||
|
strReplace(s, "\n", "");
|
||||||
|
strReplace(s, "\x81\x40", "");
|
||||||
|
buffer->from(s);
|
||||||
|
}
|
||||||
void ULJS00124(TextBuffer *buffer, HookParam *hp)
|
void ULJS00124(TextBuffer *buffer, HookParam *hp)
|
||||||
{
|
{
|
||||||
CharFilter(buffer, '\n');
|
CharFilter(buffer, '\n');
|
||||||
@ -226,6 +241,41 @@ namespace ppsspp
|
|||||||
return buffer->clear();
|
return buffer->clear();
|
||||||
lastx = last;
|
lastx = last;
|
||||||
}
|
}
|
||||||
|
void NPJH50901(TextBuffer *buffer, HookParam *)
|
||||||
|
{
|
||||||
|
static std::string last;
|
||||||
|
static lru_cache<std::string> lastx(10); // 颜色&注解会把句子分开
|
||||||
|
auto s = buffer->strA();
|
||||||
|
if (endWith(last, s))
|
||||||
|
return buffer->clear();
|
||||||
|
last = s;
|
||||||
|
if (lastx.touch(last))
|
||||||
|
return buffer->clear();
|
||||||
|
|
||||||
|
std::string x;
|
||||||
|
for (int i = 0; i < s.size();)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (s[i] == 0x1b)
|
||||||
|
{
|
||||||
|
if ((BYTE)s[i + 1] == 0xb5)
|
||||||
|
i += 2;
|
||||||
|
else if ((BYTE)s[i + 1] == 0xb4 || (BYTE)s[i + 1] == 0xb6)
|
||||||
|
i += 3;
|
||||||
|
else
|
||||||
|
i += 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
x += s[i];
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
strReplace(x, "\n", "");
|
||||||
|
strReplace(x, "\x81\x40", "");
|
||||||
|
buffer->from(x);
|
||||||
|
}
|
||||||
void FULJM05603(TextBuffer *buffer, HookParam *)
|
void FULJM05603(TextBuffer *buffer, HookParam *)
|
||||||
{
|
{
|
||||||
StringFilter(buffer, "%N", 2);
|
StringFilter(buffer, "%N", 2);
|
||||||
@ -469,6 +519,19 @@ namespace ppsspp
|
|||||||
buffer->from(s);
|
buffer->from(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ULJM05441(hook_stack *stack, HookParam *hp, TextBuffer *buffer, uintptr_t *split)
|
||||||
|
{
|
||||||
|
auto data = PPSSPP::emu_arg(stack)[1];
|
||||||
|
std::string s;
|
||||||
|
while (*(DWORD *)data)
|
||||||
|
{
|
||||||
|
std::string_view s1 = (char *)data;
|
||||||
|
s += s1;
|
||||||
|
data += s1.size() + 1;
|
||||||
|
}
|
||||||
|
strReplace(s, "\n", "");
|
||||||
|
buffer->from(s);
|
||||||
|
}
|
||||||
void QNPJH50909(hook_stack *stack, HookParam *hp, TextBuffer *buffer, uintptr_t *split)
|
void QNPJH50909(hook_stack *stack, HookParam *hp, TextBuffer *buffer, uintptr_t *split)
|
||||||
{
|
{
|
||||||
auto data = PPSSPP::emu_arg(stack)[0];
|
auto data = PPSSPP::emu_arg(stack)[0];
|
||||||
@ -656,6 +719,8 @@ namespace ppsspp
|
|||||||
{0x896C3B8, {0, 0, 0, ULJM05428, 0, "ULJM05624"}},
|
{0x896C3B8, {0, 0, 0, ULJM05428, 0, "ULJM05624"}},
|
||||||
// 金色のコルダ2 f
|
// 金色のコルダ2 f
|
||||||
{0x89b59dc, {0, 0, 0, ULJM05428, 0, "ULJM05428"}},
|
{0x89b59dc, {0, 0, 0, ULJM05428, 0, "ULJM05428"}},
|
||||||
|
// 金色のコルダ2 f アンコール
|
||||||
|
{0x89D9FB0, {0, 0, 0, ULJM05428, 0, "ULJM05508"}},
|
||||||
// 金色のコルダ
|
// 金色のコルダ
|
||||||
{0x886162c, {0, 0, 0, ULJM05428, 0, "ULJM05054"}}, // dialogue: 0x886162c (x1), 0x889d5fc-0x889d520(a2) fullLine
|
{0x886162c, {0, 0, 0, ULJM05428, 0, "ULJM05054"}}, // dialogue: 0x886162c (x1), 0x889d5fc-0x889d520(a2) fullLine
|
||||||
{0x8899e90, {0, 0, 0x3c, 0, 0, "ULJM05054"}}, // name 0x88da57c, 0x8899ca4 (x0, oneTime), 0x8899e90
|
{0x8899e90, {0, 0, 0x3c, 0, 0, "ULJM05054"}}, // name 0x88da57c, 0x8899ca4 (x0, oneTime), 0x8899e90
|
||||||
@ -716,8 +781,6 @@ namespace ppsspp
|
|||||||
{0x889E970, {0, 0, 0, 0, ULJM05943F, "ULJM06131"}}, // NAME
|
{0x889E970, {0, 0, 0, 0, ULJM05943F, "ULJM06131"}}, // NAME
|
||||||
// 源狼 GENROH
|
// 源狼 GENROH
|
||||||
{0x8940DA8, {0, 1, 0, 0, ULJM06145, "ULJM06145"}}, // TEXT
|
{0x8940DA8, {0, 1, 0, 0, ULJM06145, "ULJM06145"}}, // TEXT
|
||||||
// 遙かなる時空の中で4 愛蔵版
|
|
||||||
{0x8955CE0, {0, 0, 0, ULJM05810, 0, "ULJM05810"}},
|
|
||||||
// 十鬼の絆
|
// 十鬼の絆
|
||||||
{0x891AAAC, {0, 0, 0, 0, ULJM06129, "ULJM06129"}}, // text
|
{0x891AAAC, {0, 0, 0, 0, ULJM06129, "ULJM06129"}}, // text
|
||||||
{0x886E094, {0, 0, 0, 0, ULJM06129, "ULJM06129"}}, // name+text
|
{0x886E094, {0, 0, 0, 0, ULJM06129, "ULJM06129"}}, // name+text
|
||||||
@ -858,6 +921,20 @@ namespace ppsspp
|
|||||||
{0x8841A98, {0, 8, 0, 0, ULJS00124, "ULJM06235"}},
|
{0x8841A98, {0, 8, 0, 0, ULJS00124, "ULJM06235"}},
|
||||||
// アブナイ★恋の捜査室
|
// アブナイ★恋の捜査室
|
||||||
{0x8842F84, {0, 1, 0, 0, 0, "ULJM06050"}},
|
{0x8842F84, {0, 1, 0, 0, 0, "ULJM06050"}},
|
||||||
|
// ネオ アンジェリークSpecial
|
||||||
|
{0x8867018, {0, 1, 0, 0, ULJS00124, "ULJM05374"}},
|
||||||
|
// 遙かなる時空の中で~八葉抄~
|
||||||
|
{0x88C1290, {0, 2, 0, 0, ULJS00124, "ULJM06252"}}, // 必须按一下按钮,才能显示
|
||||||
|
// 遙かなる時空の中で2
|
||||||
|
{0x88C0410, {0, 2, 0, 0, ULJM05019, "ULJM05019"}},
|
||||||
|
// 遙かなる時空の中で3 with 十六夜記 愛蔵版
|
||||||
|
{0x89024C8, {0, 0, 0, ULJM05441, 0, "ULJM05441"}},
|
||||||
|
// 遙かなる時空の中で4 愛蔵版
|
||||||
|
{0x8955CE0, {0, 0, 0, ULJM05810, 0, "ULJM05810"}},
|
||||||
|
// 遙かなる時空の中で5 風花記
|
||||||
|
{0x8B0449C, {0, 1, 0, 0, ULJS00124, "ULJM06025"}},
|
||||||
|
// 遙かなる時空の中で6
|
||||||
|
{0x89FD41C, {0, 0xf, 0, 0, NPJH50901, "NPJH50901"}},
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -65,8 +65,8 @@ void TextThread::Push(BYTE *data, int length)
|
|||||||
if (hp.type & FULL_STRING && converted.value().size() > 1)
|
if (hp.type & FULL_STRING && converted.value().size() > 1)
|
||||||
buffer.push_back(L'\n');
|
buffer.push_back(L'\n');
|
||||||
}
|
}
|
||||||
else
|
// else
|
||||||
Host::AddConsoleOutput(INVALID_CODEPAGE);
|
// Host::AddConsoleOutput(INVALID_CODEPAGE); //死锁,且没必要
|
||||||
|
|
||||||
UpdateFlushTime();
|
UpdateFlushTime();
|
||||||
|
|
||||||
@ -94,7 +94,7 @@ void TextThread::UpdateFlushTime(bool recursive)
|
|||||||
lastPushTime = GetTickCount64();
|
lastPushTime = GetTickCount64();
|
||||||
if (!recursive)
|
if (!recursive)
|
||||||
return;
|
return;
|
||||||
auto&& ths = syncThreads.Acquire().contents;
|
auto &&ths = syncThreads.Acquire().contents;
|
||||||
if (ths.find(this) == ths.end())
|
if (ths.find(this) == ths.end())
|
||||||
return;
|
return;
|
||||||
for (auto t : ths)
|
for (auto t : ths)
|
||||||
|
@ -237,13 +237,15 @@ struct TextBuffer
|
|||||||
if (!c)
|
if (!c)
|
||||||
return;
|
return;
|
||||||
size = strlenEx(c) * sizeof(CharT);
|
size = strlenEx(c) * sizeof(CharT);
|
||||||
strncpyEx((CharT *)buff, c, TEXT_BUFFER_SIZE);
|
if(size)
|
||||||
|
strncpyEx((CharT *)buff, c, TEXT_BUFFER_SIZE);
|
||||||
}
|
}
|
||||||
template <typename StringT, typename = std::enable_if_t<!std::is_pointer_v<StringT>>>
|
template <typename StringT, typename = std::enable_if_t<!std::is_pointer_v<StringT>>>
|
||||||
void from(const StringT &c)
|
void from(const StringT &c)
|
||||||
{
|
{
|
||||||
size = min(TEXT_BUFFER_SIZE, strSize(c));
|
size = min(TEXT_BUFFER_SIZE, strSize(c));
|
||||||
memcpy(buff, c.data(), size);
|
if(size)
|
||||||
|
memcpy(buff, c.data(), size);
|
||||||
}
|
}
|
||||||
template <typename AddrT>
|
template <typename AddrT>
|
||||||
void from(const AddrT ptr, size_t t)
|
void from(const AddrT ptr, size_t t)
|
||||||
@ -251,7 +253,8 @@ struct TextBuffer
|
|||||||
if (!ptr || !t)
|
if (!ptr || !t)
|
||||||
return;
|
return;
|
||||||
size = min(TEXT_BUFFER_SIZE, t);
|
size = min(TEXT_BUFFER_SIZE, t);
|
||||||
memcpy(buff, (void *)ptr, size);
|
if(size)
|
||||||
|
memcpy(buff, (void *)ptr, size);
|
||||||
}
|
}
|
||||||
template <typename T>
|
template <typename T>
|
||||||
void from_t(const T tm)
|
void from_t(const T tm)
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
set(VERSION_MAJOR 6)
|
set(VERSION_MAJOR 6)
|
||||||
set(VERSION_MINOR 9)
|
set(VERSION_MINOR 9)
|
||||||
set(VERSION_PATCH 2)
|
set(VERSION_PATCH 3)
|
||||||
set(VERSION_REVISION 0)
|
set(VERSION_REVISION 0)
|
||||||
set(LUNA_VERSION "{${VERSION_MAJOR},${VERSION_MINOR},${VERSION_PATCH},${VERSION_REVISION}}")
|
set(LUNA_VERSION "{${VERSION_MAJOR},${VERSION_MINOR},${VERSION_PATCH},${VERSION_REVISION}}")
|
||||||
add_library(VERSION_DEF ${CMAKE_CURRENT_LIST_DIR}/version_def.cpp)
|
add_library(VERSION_DEF ${CMAKE_CURRENT_LIST_DIR}/version_def.cpp)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user