Как починить шрифты в Stronghold HD
Как-то на днях решил запустить Stronghold и был весьма удивлён, что вместо текста в игре стали отображаться точки, хотя игра ещё год назад на этой же машине игра работала отлично.
Погуглив, так я ничего толком на эту тему и не нашёл. Окромя идеи накатить какой-то там руссификатор поверх английской версии. Поковырявшись немного в игре, выяснилось, что русская версия, в отличии от английской использует шрифты WinGDI. Английская же использует текстуры букв из своих ресурсов.
Первое, что нужно - это скачать какой-то старый шрифт Arial Unicode MS, именно он захардкожен в русской версии игры.
Далее нужно пропатчить exe-файл игры. Я использовал OllyDbg. Находим где используется этот шрифт (Arial Unicode MS), и правим параметр вызова функции WinGDI CreateFontA. Нас интересует параметр iCharSet, нужно поменять значение с OEM_CHARSET (255) на ANSI_CHARSET (0).
И результат:
Проверил, проблем вроде нигде нет. Даже справка в игре нормально отображается.
В exe-файле шрифт Arial Unicode MS, скорее всего, можно тоже переопределить на какой-нибудб стандартный. Я этого делать не стал.
Если кому нужно, могу скинуть пропатченный exe-шник.
PS. Я не очень разбираюсь в разработке под винду, т.к. так что может что-то напутал, извиняйте)