Current time: 19.09.2024, 21:37 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
Плагин: воспроизведение видео в формате BIK (2022)
» Читает BIK: версии 0.5b и 1.8d
Author Message
XEPOMAHT Online
Moderators

Posts: 2332
Post: #43

(08.08.2024 14:32)Berserker Wrote:  всё это чёрная магия к костылями )

Да, увы. Приходится изгаляться, т.к. исходных кодов самой игры у моддеров нет.

(08.08.2024 14:32)Berserker Wrote:  Хуки делятся на 2 типа: call команда прямо в месте установки или jmp в начале функции.

Да больше их, минимум раза в 2. Тифон может ставить хуки на любое место, где происходит переход:

1. Вызов функции
2. Длинный прыжок
3. Длинный прыжок с условиями (после проверок чего-либо) - только в Патчере-форке, который так и не выложили, т.к. пилили уже участники HotA Crew под себя, естественно в era.dll этого нет
4. Хук непосредственно на таблицу с адресами кейсов - подмена как конкретного адреса на функцию, так и всего кейса целиком - Бараторч не стал переносить это в Патчер, а выполняет средствами самого HD-мода. В era.dll такое извращение вряд ли появится, поэтому Тифон производит подобные хуки самостоятельно.

(08.08.2024 14:32)Berserker Wrote:  Вторая — это высокоуровневая замена всей оригинальной функции.

Это как раз и ломает совместимость. Бараторч уж очень любит переносить функции целиком, в итоге - костыли, костыли и ещё раз костыли, чтобы Тифон мог поменять что-либо в перенесённых HD-модом функциях игры. Под ЭРУ такой вид перехвата кода - очевидное зло.

(08.08.2024 14:32)Berserker Wrote:  Обработчики перехватов соответственно тоже бывают двух типов: первые получают указатель на контекст (регистры, адрес возврата на момент вызова хука) и возвращают флаг того, нужно ли выполнить затёртый код. Второй тип обработчиков — это новая реализация функции. У них stdcall соглашение и все те же аргументы, что и у оригинальной функции, но первый аргумент — адрес моста к оригинальной функции, то есть как бы адрес оригинальной функции, который можно использовать для её вызова.

В Тифоне каждый хук подгоняется вручную под конкретное место. То, что делает Патчер после хука, не контролируется моддером, я же привык знать то, превратится код в тыкву после установки хука или нет. Тем более Тифон должен иметь доступ ко всем данным в самом хуке - к стеку и регистрам БЕЗ каких-либо переходников, чтобы код в самом хуке выглядел бы 1 в 1 так же как если бы он находился в коде игры без хука.

(08.08.2024 14:32)Berserker Wrote:  Тебе двух функций HookCode/Splice хватило бы почти на все нужды, при том, что они умеют строить мосты и выполнять затёртый код.

Вообще не хватит. Тифон иногда вообще выкидывает затёртый код, подменяя фрагметы содовского кода. Да что там. Есть содовские функции, у которых Тифон полностью убирает начало, есть функции, у которых Тифон деляет из 1 начала несколько разных начал (совпадают только концовки) и весь этот бепредел творится в содовском коде только ради того, чтобы не переписывать портянки ассемблерного кода. В коде Тифона тонна низкоуровневых извращений. А переписывать с 0 более 500 тифоновских хуков я точно не буду.

А самое главное - СКОРОСТЬ хуков Патчера. Хуки Тифона выполняются напрямую без посредников, ставятся максимально быстро, содержат в себе готовый затёртый код без необходимости его генерировать при каждом запуске игры и нопить код после хука (Тифон оставляет там нечитабельную кашу, т.к. этот мусор никогда не исполняется). Особенно критично в работе геройского ИИ, который на XXXL-картах сам по себе жутко тормозной. Те же участники HotA Crew делали форк Патчера для внутреннего использования с реализацией ускоренных хуков, но в свет эта инициатива так не вышла - Патчер как был медленным, так медленным и остаётся, особенно на моём старом ПК, где всё это очень заметно, несмотря на низкие системные требования оригинальной игры (имено поэтому Тифон подменяет/убирает кучу тормозящих игру воговских и эровских хуков во время игрового сражения на поле боя, чтобы не было 1-5 секундных задержек во время действий отрядов, т.к. комфорт от игрового процесса для меня важнее, чем сторонний функционал, который всё равно в ERA+ никак не используется - часть ERM-триггеров принесены в жертву ради производительности в ERA+, увы).

(08.08.2024 14:32)Berserker Wrote:  У меня такое ощущение, что автор плагина не знал, как это сделать корректно и потому влез внутрь поста splice-перехвата Эры. А нужно было всего-то установить другой Splice перехват поверх оригинального. В этом и высокоуровневость, что одну и ту же функцию, можно перехватить несчётное количество раз.

Да, Тифон никогда не лезет в чужие splice-перехваты, т.к. это небезопасно - любое обновление может испортить код. Тифон действует по-разному, в зависимости от места splice-перехвата, часто Тифон просто выполяет свой код на 1 шаг в коде раньше или позже, чем запускается splice-перехват Патчера. Особенно печально бывает, когда кто-то перехватывает сразу первый байт функции, а сама функция вызывается плагинами - тут уже приходится применять костыли, включая перенос кода из самих плагинов непосредственно в Тифон, чтобы он исполнялся вместе с Тифоном, т.к. ассемлерного доступа к Патчеру на базе Тифона увы нет.

(08.08.2024 14:32)Berserker Wrote:  ибо костыли потом аукаются всем )

Да, конфликтые участки кода между разными dll часто решаются в одностороннем порядке. Т.к. ждать обновлений со стороны других авторов dll - слишком долго. Люди могут месяцами не выходить на связь, тот же Игрик, например, давно не появляется - его плагины в случае чего обновить будет некому.
(This post was last modified: 08.08.2024 17:35 by XEPOMAHT.)
08.08.2024 17:18
Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Messages In This Thread
Плагин: воспроизведение видео в формате BIK (2022) - myoffice91 - 29.04.2022, 20:03
RE: Плагин: воспроизведение видео в формате BIK - Berserker - 29.04.2022, 21:19
RE: Плагин: воспроизведение видео в формате BIK - Elmore - 29.04.2022, 22:52
RE: Плагин: воспроизведение видео в формате BIK - XEPOMAHT - 30.04.2022, 00:01
RE: Плагин: воспроизведение видео в формате BIK - Elmore - 30.04.2022, 10:27
RE: Плагин: воспроизведение видео в формате BIK - daemon_n - 30.04.2022, 19:00
RE: Плагин: воспроизведение видео в формате BIK - myoffice91 - 30.04.2022, 22:41
RE: Плагин: воспроизведение видео в формате BIK - Elmore - 01.05.2022, 00:00
RE: Плагин: воспроизведение видео в формате BIK - myoffice91 - 03.05.2022, 18:03
RE: Плагин: воспроизведение видео в формате BIK - daemon_n - 01.05.2022, 12:48
RE: Плагин: воспроизведение видео в формате BIK - Berserker - 04.05.2022, 03:55
RE: Плагин: воспроизведение видео в формате BIK - daemon_n - 04.05.2022, 20:36
RE: Плагин: воспроизведение видео в формате BIK - Suft - 10.05.2022, 12:58
RE: Плагин: воспроизведение видео в формате BIK - Elmore - 10.05.2022, 14:53
RE: Плагин: воспроизведение видео в формате BIK - Archer30 - 10.05.2022, 20:08
RE: Плагин: воспроизведение видео в формате BIK - Suft - 20.05.2022, 13:20
RE: Плагин: воспроизведение видео в формате BIK - DarkyAndSparky - 20.05.2022, 16:05
RE: Плагин: воспроизведение видео в формате BIK - Suft - 21.05.2022, 13:35
RE: Плагин: воспроизведение видео в формате BIK - myoffice91 - 20.05.2022, 22:28
RE: Плагин: воспроизведение видео в формате BIK - myoffice91 - 21.05.2022, 14:04
RE: Плагин: воспроизведение видео в формате BIK - Suft - 21.05.2022, 14:39
RE: Плагин: воспроизведение видео в формате BIK - myoffice91 - 28.05.2022, 23:44
RE: Плагин: воспроизведение видео в формате BIK - myoffice91 - 22.08.2022, 14:43
RE: Плагин: воспроизведение видео в формате BIK (2022) - myoffice91 - 18.09.2022, 15:31
RE: Плагин: воспроизведение видео в формате BIK (2022) - XEPOMAHT - 18.09.2022, 15:58
RE: Плагин: воспроизведение видео в формате BIK (2022) - Berserker - 19.09.2022, 08:27
RE: Плагин: воспроизведение видео в формате BIK (2022) - myoffice91 - 19.09.2022, 13:39
RE: Плагин: воспроизведение видео в формате BIK (2022) - daemon_n - 19.09.2022, 11:47
RE: Плагин: воспроизведение видео в формате BIK (2022) - Berserker - 19.09.2022, 13:32
RE: Плагин: воспроизведение видео в формате BIK (2022) - myoffice91 - 19.09.2022, 15:37
RE: Плагин: воспроизведение видео в формате BIK (2022) - XEPOMAHT - 19.09.2022, 16:10
RE: Плагин: воспроизведение видео в формате BIK (2022) - myoffice91 - 19.09.2022, 16:26
RE: Плагин: воспроизведение видео в формате BIK (2022) - XEPOMAHT - 19.09.2022, 17:07
RE: Плагин: воспроизведение видео в формате BIK (2022) - Archer30 - 02.10.2022, 07:32
RE: Плагин: воспроизведение видео в формате BIK (2022) - myoffice91 - 06.10.2022, 11:30
RE: Плагин: воспроизведение видео в формате BIK (2022) - XEPOMAHT - 06.10.2022, 15:40
RE: Плагин: воспроизведение видео в формате BIK (2022) - wessonsm - 06.10.2022, 12:32
RE: Плагин: воспроизведение видео в формате BIK (2022) - Berserker - 30.07.2024, 01:10
RE: Плагин: воспроизведение видео в формате BIK (2022) - myoffice91 - 07.08.2024, 23:23
RE: Плагин: воспроизведение видео в формате BIK (2022) - Berserker - 08.08.2024, 00:31
RE: Плагин: воспроизведение видео в формате BIK (2022) - XEPOMAHT - 08.08.2024, 02:07
RE: Плагин: воспроизведение видео в формате BIK (2022) - Berserker - 08.08.2024, 14:32
RE: Плагин: воспроизведение видео в формате BIK (2022) - XEPOMAHT - 08.08.2024 17:18
RE: Плагин: воспроизведение видео в формате BIK (2022) - Berserker - 08.08.2024, 17:55
RE: Плагин: воспроизведение видео в формате BIK (2022) - XEPOMAHT - 08.08.2024, 19:16
RE: Плагин: воспроизведение видео в формате BIK (2022) - Berserker - 08.08.2024, 21:36
RE: Плагин: воспроизведение видео в формате BIK (2022) - XEPOMAHT - 09.08.2024, 11:14
RE: Плагин: воспроизведение видео в формате BIK (2022) - Berserker - 09.08.2024, 16:58
RE: Плагин: воспроизведение видео в формате BIK (2022) - Suft - 15.08.2024, 19:52
RE: Плагин: воспроизведение видео в формате BIK (2022) - myoffice91 - 11.09.2024, 13:39
RE: Плагин: воспроизведение видео в формате BIK (2022) - Suft - 11.09.2024, 16:25
RE: Плагин: воспроизведение видео в формате BIK (2022) - myoffice91 - 11.09.2024, 22:17
RE: Плагин: воспроизведение видео в формате BIK (2022) - Suft - 12.09.2024, 14:56
RE: Плагин: воспроизведение видео в формате BIK (2022) - myoffice91 - 16.09.2024, 18:54
RE: Плагин: воспроизведение видео в формате BIK (2022) - XEPOMAHT - 16.09.2024, 20:52
RE: Плагин: воспроизведение видео в формате BIK (2022) - Suft - 17.09.2024, 15:30
RE: Плагин: воспроизведение видео в формате BIK (2022) - XEPOMAHT - 17.09.2024, 20:41
RE: Плагин: воспроизведение видео в формате BIK (2022) - Berserker - Yesterday, 02:40
RE: Плагин: воспроизведение видео в формате BIK (2022) - XEPOMAHT - Yesterday, 11:25
RE: Плагин: воспроизведение видео в формате BIK (2022) - Suft - Yesterday, 14:57
RE: Плагин: воспроизведение видео в формате BIK (2022) - XEPOMAHT - Yesterday, 15:21
RE: Плагин: воспроизведение видео в формате BIK (2022) - Suft - Yesterday, 16:44
RE: Плагин: воспроизведение видео в формате BIK (2022) - XEPOMAHT - Yesterday, 17:02

Forum Jump:

Powered by MyBB Copyright © 2002-2024 MyBB Group