mirror of
https://github.com/HIllya51/LunaTranslator.git
synced 2025-01-15 08:53:53 +08:00
.
This commit is contained in:
parent
c11cd42912
commit
e173b2266e
@ -23,7 +23,7 @@ else()
|
|||||||
Syuntada Pensil Anim hibiki Nitroplus Reallive Siglus Taskforce2 RUGP IronGameSystem Anex86
|
Syuntada Pensil Anim hibiki Nitroplus Reallive Siglus Taskforce2 RUGP IronGameSystem Anex86
|
||||||
ShinyDaysGame MarineHeart ShinaRio CaramelBox UnisonShift Escude Ryokucha Alice Footy2
|
ShinyDaysGame MarineHeart ShinaRio CaramelBox UnisonShift Escude Ryokucha Alice Footy2
|
||||||
utawarerumono System4x Abalone Abel 5pb HorkEye XUSE Leaf Nekopack AXL AGS AdobeFlash10
|
utawarerumono System4x Abalone Abel 5pb HorkEye XUSE Leaf Nekopack AXL AGS AdobeFlash10
|
||||||
FocasLens Tamamo Ages3ResT H_do_C RScript)
|
FocasLens Tamamo Ages3ResT H_do_C RScript TYPEMOON)
|
||||||
set(enginepath "engine32")
|
set(enginepath "engine32")
|
||||||
set(collector "enginecollection32.cpp")
|
set(collector "enginecollection32.cpp")
|
||||||
endif()
|
endif()
|
||||||
|
171
cpp/LunaHook/LunaHook/engine32/TYPEMOON.cpp
Normal file
171
cpp/LunaHook/LunaHook/engine32/TYPEMOON.cpp
Normal file
@ -0,0 +1,171 @@
|
|||||||
|
#include "TYPEMOON.h"
|
||||||
|
/*
|
||||||
|
if ( *a4 )
|
||||||
|
{
|
||||||
|
v35 = &a8[v17 + 12];
|
||||||
|
do
|
||||||
|
{
|
||||||
|
v20 = *v19;
|
||||||
|
if ( *v19 == 92 )
|
||||||
|
break;
|
||||||
|
if ( v20 == 13 )
|
||||||
|
{
|
||||||
|
if ( v25 == 1 )
|
||||||
|
{
|
||||||
|
v27 += v30;
|
||||||
|
v24 = a2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
v27 += v30 >> 1;
|
||||||
|
v24 = a2 >> 1;
|
||||||
|
}
|
||||||
|
v19 += 2;
|
||||||
|
v28 = 0;
|
||||||
|
++v33;
|
||||||
|
*++v35 = 0;
|
||||||
|
goto LABEL_64;
|
||||||
|
}
|
||||||
|
if ( v20 == 60 )
|
||||||
|
{
|
||||||
|
++v19;
|
||||||
|
v38 = 1;
|
||||||
|
strstr(v19, SubStr);
|
||||||
|
v31 = v24;
|
||||||
|
v41 = v27;
|
||||||
|
}
|
||||||
|
else if ( v38 == 2 )
|
||||||
|
{
|
||||||
|
if ( *v19 != 62 )
|
||||||
|
{
|
||||||
|
if ( *(_WORD *)(v49
|
||||||
|
+ 2 * (unsigned __int16)(HIBYTE(*(_WORD *)v19) + ((unsigned __int8)*(_WORD *)v19 << 8))
|
||||||
|
- 66048) != 0xFFFF )
|
||||||
|
{
|
||||||
|
v21 = v40;
|
||||||
|
sub_44CB00(
|
||||||
|
v47,
|
||||||
|
v37,
|
||||||
|
v31,
|
||||||
|
v41,
|
||||||
|
v45
|
||||||
|
+ v50
|
||||||
|
* *(unsigned __int16 *)(v49
|
||||||
|
+ 2
|
||||||
|
* (unsigned __int16)((unsigned __int8)HIBYTE(*(_WORD *)v19)
|
||||||
|
+ ((unsigned __int8)*(_WORD *)v19 << 8))
|
||||||
|
- 66048)
|
||||||
|
* (v40
|
||||||
|
/ (int)v43),
|
||||||
|
v40,
|
||||||
|
v50,
|
||||||
|
v43,
|
||||||
|
v25,
|
||||||
|
v39,
|
||||||
|
v51);
|
||||||
|
v19 += 2;
|
||||||
|
if ( v25 != 1 )
|
||||||
|
v21 = v40 >> 1;
|
||||||
|
v31 += v21;
|
||||||
|
goto LABEL_64;
|
||||||
|
}
|
||||||
|
v19 += 2;
|
||||||
|
v31 += v40;
|
||||||
|
goto LABEL_63;
|
||||||
|
}
|
||||||
|
++v19;
|
||||||
|
v38 = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ( v38 != 1 || *v19 != 44 )
|
||||||
|
{
|
||||||
|
if ( *(_WORD *)(v42
|
||||||
|
+ 2 * (unsigned __int16)(HIBYTE(*(_WORD *)v19) + ((unsigned __int8)*(_WORD *)v19 << 8))
|
||||||
|
- 66048) == 0xFFFF )
|
||||||
|
{
|
||||||
|
v19 += 2;
|
||||||
|
v24 += v34;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
v22 = v34;
|
||||||
|
sub_44CB00(
|
||||||
|
v48,
|
||||||
|
v37,
|
||||||
|
v24,
|
||||||
|
v27,
|
||||||
|
v46
|
||||||
|
+ v30
|
||||||
|
* *(unsigned __int16 *)(v42
|
||||||
|
+ 2
|
||||||
|
* (unsigned __int16)((unsigned __int8)HIBYTE(*(_WORD *)v19)
|
||||||
|
+ ((unsigned __int8)*(_WORD *)v19 << 8))
|
||||||
|
- 66048)
|
||||||
|
* ((int)v34
|
||||||
|
/ v44),
|
||||||
|
v34,
|
||||||
|
v30,
|
||||||
|
v44,
|
||||||
|
v25,
|
||||||
|
v39,
|
||||||
|
v51);
|
||||||
|
v19 += 2;
|
||||||
|
if ( v25 != 1 )
|
||||||
|
v22 = v34 >> 1;
|
||||||
|
v24 += v22;
|
||||||
|
}
|
||||||
|
LABEL_63:
|
||||||
|
++*v35;
|
||||||
|
++a8[9];
|
||||||
|
++v28;
|
||||||
|
goto LABEL_64;
|
||||||
|
}
|
||||||
|
++v19;
|
||||||
|
v38 = 2;
|
||||||
|
strstr(v19, asc_478550);
|
||||||
|
}
|
||||||
|
LABEL_64:
|
||||||
|
v16 = a1;
|
||||||
|
}
|
||||||
|
while ( *v19 );
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
bool TYPEMOON::attach_function()
|
||||||
|
{
|
||||||
|
// https://vndb.org/v165
|
||||||
|
// Melty Blood ReACT
|
||||||
|
const uint8_t bytes[] = {
|
||||||
|
0x8a, 0x03,
|
||||||
|
0x3c, 0x5c,
|
||||||
|
0x0f, 0x84, XX4,
|
||||||
|
0x3c, 0x0d,
|
||||||
|
0x75, XX,
|
||||||
|
0x83, 0x7c, 0x24, 0x14, 0x01,
|
||||||
|
0x75, XX};
|
||||||
|
ULONG addr = MemDbg::findBytes(bytes, sizeof(bytes), processStartAddress, processStopAddress);
|
||||||
|
if (!addr)
|
||||||
|
return false;
|
||||||
|
addr = MemDbg::findEnclosingAlignedFunction(addr);
|
||||||
|
if (!addr)
|
||||||
|
return false;
|
||||||
|
HookParam hp;
|
||||||
|
hp.address = 0x44CC80;
|
||||||
|
hp.type = USING_STRING | NO_CONTEXT;
|
||||||
|
hp.text_fun = [](hook_context *context, HookParam *hp, TextBuffer *buffer, uintptr_t *split)
|
||||||
|
{
|
||||||
|
auto str = (char *)context->stack[4];
|
||||||
|
char *end, *start = str;
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
end = strchr(start, '\\');
|
||||||
|
if (!IsShiftjisLeadByte(*(end - 1)))
|
||||||
|
break;
|
||||||
|
start = end + 1;
|
||||||
|
}
|
||||||
|
buffer->from(str, end - str);
|
||||||
|
CharFilter(buffer, '\n');
|
||||||
|
};
|
||||||
|
return NewHook(hp, "typemoon");
|
||||||
|
}
|
14
cpp/LunaHook/LunaHook/engine32/TYPEMOON.h
Normal file
14
cpp/LunaHook/LunaHook/engine32/TYPEMOON.h
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
|
||||||
|
|
||||||
|
class TYPEMOON : public ENGINE
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
TYPEMOON()
|
||||||
|
{
|
||||||
|
// https://vndb.org/v165
|
||||||
|
check_by = CHECK_BY::FILE_ALL;
|
||||||
|
is_engine_certain = false;
|
||||||
|
check_by_target = check_by_list{L"data0*.p", L"0*.p"};
|
||||||
|
};
|
||||||
|
bool attach_function();
|
||||||
|
};
|
@ -16,6 +16,7 @@
|
|||||||
#include "engine32/splushwave.h"
|
#include "engine32/splushwave.h"
|
||||||
#include "engine32/FrontWing.h"
|
#include "engine32/FrontWing.h"
|
||||||
#include "engine32/GSX.h"
|
#include "engine32/GSX.h"
|
||||||
|
#include"engine32/TYPEMOON.h"
|
||||||
#include "engine32/VALKYRIA.h"
|
#include "engine32/VALKYRIA.h"
|
||||||
#include "engine32/Moonstone.h"
|
#include "engine32/Moonstone.h"
|
||||||
#include "engine32/mirage.h"
|
#include "engine32/mirage.h"
|
||||||
@ -433,5 +434,6 @@ std::vector<ENGINE *> check_engines()
|
|||||||
new Mink3,
|
new Mink3,
|
||||||
new FrontWing2,
|
new FrontWing2,
|
||||||
new RScript,
|
new RScript,
|
||||||
|
new TYPEMOON
|
||||||
};
|
};
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user