2016-04-18 09:08:37 +00:00
|
|
|
/*=================================================================
|
|
|
|
File created by Yohann NICOLAS.
|
2021-01-04 07:07:29 +00:00
|
|
|
Add support 1.14d by haxifix.
|
2016-04-18 09:08:37 +00:00
|
|
|
|
|
|
|
Language management.
|
|
|
|
|
|
|
|
=================================================================*/
|
|
|
|
|
|
|
|
#include "language.h"
|
2017-01-23 19:34:12 +00:00
|
|
|
#include "common.h"
|
2016-04-18 09:08:37 +00:00
|
|
|
#include <stdio.h>
|
|
|
|
|
|
|
|
|
2021-01-04 07:07:29 +00:00
|
|
|
bool active_ChangeLanguage = false;
|
2016-04-18 09:08:37 +00:00
|
|
|
DWORD selectedLanguage = LNG_ENG;
|
|
|
|
|
|
|
|
bool active_LanguageManagement = false;
|
|
|
|
DWORD defaultLanguage = LNG_ENG;
|
|
|
|
t_availableLanguages availableLanguages;
|
|
|
|
|
|
|
|
DWORD* ptCurrentLanguage;
|
|
|
|
|
2021-01-04 07:07:29 +00:00
|
|
|
DWORD STDCALL languageManagement()
|
2016-04-18 09:08:37 +00:00
|
|
|
{
|
2021-01-04 07:07:29 +00:00
|
|
|
if (active_ChangeLanguage)
|
|
|
|
*ptCurrentLanguage = selectedLanguage;
|
|
|
|
|
2016-04-18 09:08:37 +00:00
|
|
|
if (active_LanguageManagement)
|
2021-01-04 07:07:29 +00:00
|
|
|
{
|
|
|
|
if ((*ptCurrentLanguage >= LNG_DEF) || !((1 << *ptCurrentLanguage) & availableLanguages.all))
|
|
|
|
*ptCurrentLanguage = defaultLanguage;
|
|
|
|
}
|
|
|
|
|
2016-04-18 09:08:37 +00:00
|
|
|
return *ptCurrentLanguage;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void Install_LanguageManagement()
|
|
|
|
{
|
|
|
|
static int isInstalled = false;
|
|
|
|
if (isInstalled) return;
|
2021-01-04 07:07:29 +00:00
|
|
|
|
2016-04-18 09:08:37 +00:00
|
|
|
log_msg("Patch D2Lang for language management. (LanguageManagement)\n");
|
|
|
|
|
2021-01-04 07:07:29 +00:00
|
|
|
ptCurrentLanguage = *(DWORD**)((DWORD)D2GetLang + (version_D2Lang == V114d ? 0x4D : version_D2Lang >= V111 ? 0x51: 0x5C));
|
|
|
|
languageManagement();
|
2016-04-18 09:08:37 +00:00
|
|
|
|
|
|
|
// Language management
|
2020-10-25 13:10:17 +00:00
|
|
|
mem_seek( (DWORD)D2GetLang + (version_D2Lang == V114d ? 0x4C : version_D2Lang >= V111 ? 0x3E : 0x49));//6FC13E39-6FC10000
|
2016-04-18 09:08:37 +00:00
|
|
|
memt_byte( 0xA1 , 0xE8);
|
|
|
|
MEMT_REF4( ptCurrentLanguage, languageManagement);
|
|
|
|
//6FC13E39 |. A1 EC0CC26F MOV EAX,DWORD PTR DS:[6FC20CEC]
|
|
|
|
//003D91FE |. A1 1C0A3E00 MOV EAX,DWORD PTR DS:[3E0A1C]
|
|
|
|
//003DA0AE |. A1 1C0A3E00 MOV EAX,DWORD PTR DS:[3E0A1C]
|
2021-01-04 07:07:29 +00:00
|
|
|
//0052519C |> A1 EC298800 MOV EAX,DWORD PTR DS:[8829EC]
|
2016-04-18 09:08:37 +00:00
|
|
|
|
|
|
|
log_msg("\n");
|
|
|
|
|
|
|
|
isInstalled = true;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*================================= END OF FILE =================================*/
|