Показать сообщение отдельно
Старый 03.03.2019, 19:27   #7
roman5
Новичок
 
Регистрация: 25.06.2017
Сообщений: 114
Вы сказали Спасибо: 35
Поблагодарили 71 раз(а) в 34 сообщениях
roman5 стоит на развилке (репутация по умолчанию)
По умолчанию

Цитата:
Сообщение от Коленыч Посмотреть сообщение
roman5 можно подробнее, как пропатчить? Это надо сделать в ярлыке?
Под патчем я имел ввиду изменение в коде train.exe, когда случается вылет игры, то там есть отладочная информация, в которой есть адрес кода, где произошло исключение.
Для этого можно использовать отладчик ollydbg, сначала настраиваем его, чтобы при вылете он поймал игру. Делаем так: Options - "Just-in-time debugger". В окне щелкаем по пункту "Make Ollydbg just-in-time debugger" и также щелкаем по пункту "Attach without confirmation". После этого ollydbg можно закрыть, теперь как только игра упадет, всплывет отладчик этот и будет видно в момент падения: инструкцию кода, которую он не может исполнить, регистры все, call stack (вкладка K) наиболее полезная вещь при крэшах.
После этого либо удаляем эту инструкцию и смотрим работает ли, либо разбираем причину падения отладкой по коду.

К примеру, у меня падало тут

00698536 E8 05A70000 CALL train.006A2C40
0069853B 899F D0828200 MOV DWORD PTR DS:[EDI+8282D0],EBX //тут исключение из-за того, что EDI указывал не пойми куда, вместо смещения.
00698541 5F POP EDI
00698542 5E POP ESI
00698543 5B POP EBX
00698544 C2 0400 RETN 4

Я просто затер инструкцию по адресу 0069853B nop-ами, прокатило. Падать перестало, но тут просто повезло, если бы не сработало, то пришлось бы идти по коду назад и искать в данном случае, почему edi стал некорректным значением.

Вообще опытным путем я заметил, что msts намного больше багов выдает на осях вин10 и вин7 х64, у меня вин10 х64. Возможно у тех, у кого не было вылетов на прицепках в этой сцене - оси 32х битные. Я давно уже так действую с вылетами в этой игре, я заметил, что к примеру на Малахитовке вылеты в коде игры происходили в одних и тех же местах, то есть они были конкретные, пропатчив там код, я добился, что игра больше не падает на этом маршруте.

Добавлено через 18 минут
С помощью ollydbg еще можно также побороться с подвисаниями мстс, если игру запустить из ollydbg, то в момент, когда звук идет, а картинка стоит, быстро переключаемся в отладчик и жмем на паузу, обычно оказываемся в маленьком бесконечном цикле, в котором условие выхода кривое, поправив которое либо вообще, убрав цикл, игра продолжает работать.

Последний раз редактировалось roman5; 03.03.2019 в 19:15.
roman5 вне форума   Ответить с цитированием
Старый 01.01.2007, 12:00  
Яndex
Спонсор
 
 
Регистрация: 01.01.2007
Сообщения: 500


Реклама показывается изредка по случайному принципу
По умолчанию РЕКЛАМА