The Last Express
Модераторы: Leo, Tedward, aspid
- Автор
- Сообщение
-
Не в сети
- Квестоманьяк
- Сообщения: 245
- Зарегистрирован: 27 авг 2004, 14:18
-
Не в сети
- Bad Cop
- Сообщения: 5540
- Зарегистрирован: 12 май 2004, 16:13
-
Не в сети
- Квестоманьяк
- Сообщения: 245
- Зарегистрирован: 27 авг 2004, 14:18
-
Не в сети
- Форумчанин
- Сообщения: 22
- Зарегистрирован: 30 дек 2005, 00:38
The Last Express
В общем-то проблема крайне незначительная и, возможно, даже недостойная упоминания, поскольку на работоспособность игры она не влияет никак. Суть ее в следующем: каждый раз при выходе из игры выскакивает сообщение “The Last Express has encountered a problem and needs to close. We are sorry for the inconvenience.” После выбора опции “For more information about this error, click here” появляется следующая информация:
AppName: _le.exe AppVer: 1.0.0.1 ModName: unknown
ModVer: 0.0.0.0 Offset: 73781967
Пошарил по гуглу, но никаких патчей для игры не нашел. Похоже, что данная проблема возникает только с Windows XP, поскольку, будучи запущенной под Windows 98 PE и Se, игра завершается нормально. У меня US-версия TLE, скопированная с оригинала.
У кого-нибудь происходит нечто подобное?
AppName: _le.exe AppVer: 1.0.0.1 ModName: unknown
ModVer: 0.0.0.0 Offset: 73781967
Пошарил по гуглу, но никаких патчей для игры не нашел. Похоже, что данная проблема возникает только с Windows XP, поскольку, будучи запущенной под Windows 98 PE и Se, игра завершается нормально. У меня US-версия TLE, скопированная с оригинала.
У кого-нибудь происходит нечто подобное?
-
Не в сети
- Квестунчик
- Сообщения: 120
- Зарегистрирован: 11 окт 2005, 02:11
- Откуда: Россия
-
Не в сети
- Форумчанин
- Сообщения: 22
- Зарегистрирован: 30 дек 2005, 00:38
В общем, так. Игра использует два альтернативных метода вывода графики: через старый добрый GDI32 или через Direct Draw. При старте игра ищет где-то в системном реестре строку “DirectDraw” и, если не находит, все равно использует Direct Draw (скорее всего - баг). Игра выбирает GDI32 только в случае, если загрузка модуля ddraw.dll или инициализация Direct Draw завершаются ошибкой. По большому счету, пользователю наплевать, каким образом The Last Express выводит графику, поскольку визуально разницы нет никакой. Да, теоретически Direct Draw должен обеспечивать более высокую скорость работы с графикой, однако в данном конкретном случае это незаметно. Теперь, собственно, почему я занимаю ваше время описанием таких малоинтересных вещей: вышеупомянутый глюк, проявляющийся во время выхода из игры в Windows, проявляется только тогда, когда в качестве системы вывода графики задействован Direct Draw. Впрочем, в “нестандартном” поведении игры виноват не Direct Draw, а программисты TLE, которые что-то напортачили с кодом инициализации/деинициализации Direct Draw. Непосредственная причина возникновения вышеупомянутого сообшения об ошибке заключается в том, что система пытается выполнить код, которого в памяти уже нет – этот код выгружается игрой вместе с модулем ddraw.dll, в котором он содержится. Путей решения проблемы несколько. Можно подправить код исполняемого файла игры так, чтобы модуль ddraw.dll не выгружался вообще. Этот способ плох тем, что может приводить к “утечкам” памяти. Второй, абсолютно надежный и безопасный метод состоит в том, чтобы заставить игру использовать GDI32 вместо Direct Draw, даже если ей очень хочется воспользоваться последним. Проще всего это сделать так: открыть исполняемый файл игры в каком-нибудь HEX-редакторе (я пользуюсь HIEW), сделать поиск по строке “ddraw.dll” и забить найденную строку нулями.
Кстати, точно таким же образом можно запретить игре использовать Direct Sound (модуль dsound.dll)…
Кстати, точно таким же образом можно запретить игре использовать Direct Sound (модуль dsound.dll)…
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость