загружаем библиотеку _hd3_.dll
если не загрузилась - значит нет ХД
получаем 2 экспортируемые из нее функции.
Функции имеют имена и вид:
DWORD __stdcall HdCommon_Get(char* name, DWORD default_value);
BOOL __stdcall HdCommon_Set(char* name, DWORD value);
если адреса функций получены, идем дальше.
теперь можем получать значения следующих "переменных":
DWORD "HD.Version.Dword" - версия хд в числовом выражении
char* "HD.Version.CStr" - версия хд в текстовом виде (си-строка)
DWORD "HD.ExeVersion" - флаги версии экзешника игры:
Код
#define SOD 0x01
#define WOG 0x02
#define TE 0x04
#define HOTA 0x08
#define WT 0x10
#define ERA 0x20
#define MOP 0x40
и т.д.
вот все без описания, если кого-то что то заинтересует, спрОсите:
char*, "HD.Dir.Game"
char*, "HD.Dir"
char*, "HD.Dir.Common"
char*, "HD.Dir.Lang"
char*, "HD.File.RMG"
_Ini_*, "HD.Ini.Main"
char*, "HD.Compability"
int, "HD.PackDirs.Count"
char**, "HD.PackDirs"
int, "HD.Option.RezX"
int, "HD.Option.RezY"
int, "HD.Option.RezX"
int, "HD.Option.RezY
int, "HD.Option.ColorMode"
int, "HD.Option.StretchFilter"
int, "HD.Option.SysCursors"
int, "HD.Option.NoCD"
int, "HD.Option.CpuPatch"
int, "HD.Option.NewSoundLibs"
int, "HD.Option.MusicPatch"
int, "HD.Option.AsyncSounds"
int, "HD.Option.UIExt"
int, "HD.Option.ArmyMngMode"
int, "HD.Option.ClipCursor"
_Ini_*, "HD.Ini.Txt"
int, "HD.Option.TExt"
int, "HD.Option.AutofixMap"
int, "HD+.On"
int, "HD.Option.ExtSpellBook"
int, "HD.Option.CheckForUpdates"
int, "HD.Rez.X"
int, "HD.Rez.Y"
int, "HD.MapView.Width"
int, "HD.MapView.Height"
int, "HD.MapView.CX"
int, "HD.Stretch.X"
int, "HD.Stretch.Y"
int, "HD.Center.X"
int, "HD.Center.Y"
int, "HD.PuzzDlg.X"
int, "HD.PuzzDlg.Y"
int, "HD.TpRank.SY"
int, "HD.TpRank.SX"
int, "HD.CampInfo.X"
nt, "HD.CampInfo.Y"
int, "HD.DimDoor.CX0"
int, "HD.DimDoor.CX1"
nt, "HD.DimDoor.CY0"
int, "HD.DimDoor.CY1"
_bool_, "HD.DimDoor.ShowRect"
int, "HD.Rez.Scanline"
int, "HD.Battle.X"
int, "HD.Battle.Y"
int, "HD.AdvMgr.ID15"
int, "HD.AdvMgr.ID39"
int, "HD.AdvMgr.ID20"
int, "HD.AdvMgr.ID25"
int, "HD.AdvMgr.ID32"
int, "HD.AdvMgr.HeroList.L"
int, "HD.AdvMgr.TownList.L"
int, "HD.ClipCursor"
RECT*, "HD.ClipRect"
int, "HD.Option.AskQB"
_bool_, "HD+.ReplayableQB"
int, "HD+.TimerWaitOk"
Хота экспортирует через HdCommon свои значения, которыми пользуется ХД
Если запрашиваемого имени не существует в HdCommon, т.е оно не задано HdCommon_Set,
то функция HdCommon_Get вернет default value.
например все "переменные" ХД кроме "HD.Version.Dword", "HD.Version.CStr" не будут существовать, если библиотека будет загружена не с игрой в ХД.