Короче, не - это было не то.
Проблема была в функции стримминга(0x4086F0) по адресу
0x40872F + 6, где задавался флаг
FILE_FLAG_NO_BUFFERING (
0x20000000), который, в свою очередь, что-то меняет в подходе чтения img архива и вроде позволяет экономить оперативку(не уверен, так ли это работает, но не суть). Суть в том, что это уже лет 15 как неактуально: производительность компов далеко шагнула вперед.
Короче, нужно поменять на флаг
FILE_FLAG_OVERLAPPED (
0x40000000), и всё отныне будет круто:
patch::SetInt(0x40872F + 6, FILE_FLAG_OVERLAPPED);
Это код для SDK, но я думаю, смысл понятен(просто заменить значение по адресу 0x40872F + 6 на 0x40000000).
Итого - вся эта проблема решается одной строчкой, лол.
В аттаче готовый плагин, в котором нет ничего кроме вышеприведенной строчки. Вес большой из-за особенностей SDK(на производительность это никак не влияет). На название тож не стоит обращать внимания - просто анлимитер, над которым я работаю, но конкретно в этом плагине закомментировано
всё кроме вышеуказанной строчки.
P.S. Silent разрешил распространение P.P.S. xanser, отпишись, сработало ли это в твоем случае. Еще мне интересно, работает ли у тебя
эта версия SilentPatch(кидать сразу в папку игры).
Дело в том, что, в отличии от обычной версии, в этой есть только самое необходимое:
* If the settings file is absent, the game will now default to your desktop resolution instead of 640x480x16
* DirectPlay dependency has been removed - this should improve compatibility with Windows 8 and newer
* The game will not crash on startup if Data Execution Prevention is enabled for all applications anymore
* "Cannot find enough available video memory" error showing on some computers has been removed
* Path to the User Files directory is now obtained differently, hopefully increasing compatibility and future-proofing the games more
* FILE_FLAG_NO_BUFFERING flag has been removed from IMG reading functions - speeding up streaming
* All censorships from German and French versions of the game have been removed
* Fixed an issue which would cause games to freeze if III/VC/SA were running at the same time
Мне интересно, сработает ли это у тебя, т.к. у меня давно были подозрения, что, рано или поздно, то большое кол-во функций, что представлено в обычной версии, может привести к несовместимости, а ты первый, чья игра настолько изменена, что уже стала реально несовместима с тем патчем.
В этой же DDraw версии, насколько я понимаю, нет ничего лишнего - все изменения только на пользу любому проекту, как мне кажется.
Если у тебя с ней всё будет в порядке - я возьму её себе в проект, который пока в зачаточном состоянии. Если нет - буду изначально планировать без этого патча.