(25.07.2024 11:46)XEPOMAHT Wrote:  Вчерашняя версия era.dll 3.9.15 портит (или не даёт записывать) структуру видеоролика по адресу 694D00h из-за чего становится невозможно воспроизведение вступительных роликов перед главным меню (т.к. исходных кодов от плагина Video playback in BIK format.dll у меня нет, чтобы исправить конфликт хуков с era.dll). В общем опять ERA+ остётся на era.dll версии 3.9.14. 
Причина: автор ЭРА решил оптимизировать хук в экзешнике, а плагин BIK не сталкивался с разновидностью   ассемблера из era.dll и  не переписывает закрытый вызов API из era.dll =). А  в версиях 3.9.14 и 3.9.15 в процедуре Hook_OpenBik - без изменений в ассемблере, кроме в 3.0.
Было:
Code:
Core.Hook(Ptr($44D270), Core.HOOKTYPE_BRIDGE, @Hook_OpenBik);
 
https://github.com/ethernidee/b2/blob/7c...e.pas#L440
Стало: ЭРА начиная с версий 3.9.15 (24.07.2024)
Code:
ApiJack.HookCode(Ptr($44D270), @Hook_OpenBik);
 
https://github.com/ethernidee/b2/blob/ma...k.pas#L347
В ассемблере:
Code:
05D03FF8   | 60                     | pushad          
05D03FF9   | 54                     | push esp      
05D03FFA   | B8 98B81505            | mov eax,era.515B898       
05D03FFF   | FFD0                   | call eax        
05D04001   | 85C0                   | test eax,eax                  
05D04003   | 74 10                  | je 5D04015   
05D04005   | 61                     | popad                     
05D04006   | 83C4 04                | add esp,4        
05D04009   | 55                     | push ebp             
05D0400A   | 8BEC                   | mov ebp,esp       
05D0400C   | 83EC 28                | sub esp,28           
05D0400F   | 68 75D24400            | push h3era hd.44D275      
05D04014   | C3                     | ret          
05D04015   | 61                     | popad  
05D04016   | C3                     | ret
 
Новая версия ЭРА 3.9.15
Code:
05933CB0   | 60                   | pushad              
05933CB1   | 54                   | push esp                                    
05933CB2   | E8 69BC31FF          | call era.4C4F920           
05933CB7   | 85C0                 | test eax,eax                            
05933CB9   | 0F84 0F000000        | je 5933CCE                   
05933CBF   | 61                   | popad                                
05933CC0   | 83C4 04              | add esp,4                              
05933CC3   | 55                   | push ebp                               
05933CC4   | 8BEC                 | mov ebp,esp                  
05933CC6   | 83EC 28              | sub esp,28                        
05933CC9   | E9 A895B1FA          | jmp h3era hd.44D276               
05933CCE   | 61                   | popad                
05933CCF   | C3                   | ret
 
В будущем, вдруг кто-то захочет улучшить оптимизацию хука назовёт ApiJack.HookCodeNoReturnResult
push ecx 
push esp
call era.4C4F920
pop ecx
push ebp
mov ebp,esp
sub esp,28
jmp 44D275
А затем захочет убрать лишние push esp.
push ecx
call 0x04C4F920
pop ecx
push ebp
mov ebp,esp
sub esp,28
jmp h3era hd.44D276
В плагине BIK 1.6.2 уже добавил совместимость см.выше, предусмотрено на будущее, на всякий случай =).
Скачать плагин "Воспроизведение видео в формате BIK" 1.6.2 :
ИСТОРИЯ ИЗМЕНЕНИЙ ВЕРСИЙ
Версия 1.6.2
7.08.2024
1)Исправлен мой баг: не воспроизводить видео формата ".smk", типа: кампания, конец игры...  (причина: в плагине BIK начиная с 1.6 оптимизирована строка ".smk" в ассемблере. Поэтому ЭРА видит чужеродный адрес в строке из плагина xD!.)
2)Изменение исходных кодов в ассемблере: сохранить файл ANSI на UTF8.  
Импорт процедуры с заменой MessageBoxA на MessageBoxW.
3)Добавлена совместимость,  на всякий случай, если кто в будущем будет оптимизировать хук в экзешнике, например, появится ЭРА версии 4.Х =).
Версия 1.6
07.08.2024
1)Добавлена поддержка Эры начиная с версии 3.9.15.
Причина несовместимости:
У ЭРЫ в новой версии оптимизирован хук
было mov eax,era.4E7B7AC, call eax
стало call era.4C3F82C 
2)Реализовал проверку в экзешнике на не совпадение байтов. Если не совпадает, то  всплывается диалог "Плагин не совместим" и затем вызвает сбой!.