Current time: 23.03.2024, 17:43 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
Новая реализация виртуальной файловой системы
» Тестирование
Author Message
igrik Offline
Administrators

Posts: 2807
Post: #16

Тест на Ubuntu 18.04 с Wine 4.0
LOG ошибки.
Image: 111.png


game bug fixes extended.dll || My Plugins || My GitHub
10.05.2019 14:05
Visit this user's website Find all posts by this user Quote this message in a reply
Algor Away
Administrators

Posts: 3880
Post: #17

(09.05.2019 22:45)Berserker Wrote:  Улучшил обработку путей...

Win7Pro SP1, 64 bit - всё чисто

WinXP SP3, 32bit

Image: e3.JPG

Лог


BattleHeroes Rus/Eng | ERA scripts (+ReMagic) Rus/Eng
10.05.2019 14:23
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16449
Post: #18

Большое спасибо, логи получил.
У Алгора все функция твердят о неверном выравнивании данных. Попробую поставить XP на виртуалку, изучил тему, но пока явного ответа нет.
Интересная ошибка у Игрика на Lubuntu.

igrik, скопируй пожалуйста весь текст ошибки из фиолетовой строки (если её выбрать, отобразится полностью).


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
10.05.2019 17:36
Find all posts by this user Quote this message in a reply
igrik Offline
Administrators

Posts: 2807
Post: #19

Всё замирает на 92% и дальше не двигается.
Code:
TestFilesOpenClose: ETestFailure
at  $004AFA9B
There must be created a corresponding TOpenedFile record for opened file handle with valid virtual path when relative path was used, expected: <Z:\home\igrik\Bers\VfsTest_09_05_2019\Tests\Fs\Hobbots\mms.cfg> but was: <Z:\home\igrik\Bers\VfsTest_09_05_2019\Tests\Fs\Mods\FullyVirtual_2\Hobbots\mms.cfg>


game bug fixes extended.dll || My Plugins || My GitHub
10.05.2019 18:16
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16449
Post: #20

Спасибо, так гораздо лучше.
Поставил XP SP 3 на виртуалку. Нашёл проблему в копиляторе Delphi — локальные переменные не выравнены в отдельных случаях по границе в 4 байта. Это ужасно, но исправил. Сразу следующая проблема возникла с блокировкой на входе в критическую секцию после двойного выхода из неё. Пока до конца причину не установил, отлаживаю.

По Ubuntu идеи есть, буду ещё думать.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
11.05.2019 03:08
Find all posts by this user Quote this message in a reply
igrik Offline
Administrators

Posts: 2807
Post: #21

(10.05.2019 17:36)Berserker Wrote:  Интересная ошибка у Игрика на Lubuntu.
Berserker, у меня не Lubuntu. У меня стоит чистая Ubuntu 18.04 и на ней Wine 4.0

Погонял сегодня сборку на этой системе. Всё отлично за 4 часа теста, кроме одного фактора: нельзя играть с музыкой (с эффектами можно, с музыкой нет).


game bug fixes extended.dll || My Plugins || My GitHub
11.05.2019 03:28
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16449
Post: #22

Исправил злостный баг. Теперь на Windows XP все тесты полностью проходят, что не может не радовать. Завтра загружу обновление и попробую что-нибудь с Wine поставить.
С учётом политики крупных ТНК, уже очень скоро придётся ютиться на ReactOS, виртуалках и дистрибутивах Linux.

igrik, что не так с музыкой? LUbuntu была у меня, как Ubuntu, только облегчённая для более слабых ПК.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
11.05.2019 04:44
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16449
Post: #23

На Wine удалось получить результат, аналогичный Игриковскому.

P.S. Как же летает Windows XP даже на вируталке, как она удобна и быстра! И что за мрак всё же Ubuntu, что по работоспособности, что по скорости установки и настройки.
P.S.S. На виртуалке при работе с сетевого диска некорректно срабатывали функции поиска файлов по маске, *.???? находил что угодно. Пришлось добавить дублирующую программную проверку для каждого найденного файла. Теперь 100% тестов на XP проходят.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
11.05.2019 17:45
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16449
Post: #24

Исправил недочёты, улучшил тесты. У меня проходят на Win 7 x64, Windows XP SP 3 x86 и LUbuntu 18.04 x86 (WineHQ).

https://dropmefiles.com/5Vxse
http://rgho.st/77M5YZv8h


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
12.05.2019 02:57
Find all posts by this user Quote this message in a reply
SyDr Offline

Posts: 1052
Post: #25

Win 10 (1809) + UAC (но и под админом также)
Всё остальное зелёненькое.
12.05.2019 11:30
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16449
Post: #26

SyDr, а _LOG_.txt не покажешь? )
/Проверю десятку на виртуалке.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
12.05.2019 14:14
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16449
Post: #27

SyDr, очень странно, у меня под Win 10 x64 всё прошло успешно (


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
12.05.2019 15:42
Find all posts by this user Quote this message in a reply
SyDr Offline

Posts: 1052
Post: #28

12.05.2019 20:06
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16449
Post: #29

SyDr, спасибо, какая-то фантастика. Не смог повторить на десятке. По логу FindFirstFileA не вызывает FindFirstFileW => NtCreateFile (здесь ещё вызывает) => NtQueryDirectoryFile.
Как-то не ясно, что за API тогда используется для получения содержимого папки :-(


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
13.05.2019 01:32
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16449
Post: #30

Если кому из программистов интересно пощупать, то вот библиотека:
Скачать 150 КБ

Все экспортируемые функции работают по соглашению STDCALL. Если в конце имени нет суффикса A (Ansi), то с UCS16-строками (L"строка" в C++).
Если с суффиксом А, то с Ansi-строками.

Примеры использования:
// Отображаем все моды из папки Mods и присутствующие в list.txt на корневую папку с игрой
MapModsFromListA('D:\Heroes 3', 'D:\Heroes 3\Mods', 'D:\Heroes 3\Mods\list.txt')

// Запускаем VFS
VfsControl.RunVfs(0); // 0 - SORT_FIFO, содержимое папок более приоритетных модов будет выводиться ДО менее приоритетных

// Читаю файл из Феникса по виртуальному пути:
ReadFileContents('D:\Heroes 3\Data\s\pHoenix.erm', s);

API:

Code:
(* Maps real directory contents to virtual path. Target must exist for success *)
function MapDir (const VirtPath, RealPath: PWideChar; OverwriteExisting: boolean; Flags: integer = 0): LONGBOOL; stdcall;

(* Maps real directory contents to virtual path. Target must exist for success *)
function MapDirA (const VirtPath, RealPath: PAnsiChar; OverwriteExisting: boolean; Flags: integer = 0): LONGBOOL; stdcall;

(* Loads mod list from file and maps each mod directory to specified root directory.
   File with mod list is treated as (BOM or BOM-less) UTF-8 plain text file, where each mod name is separated
   from another one via Line Feed (#10) character. Each mod named is trimmed, converted to UCS16 and validated before
   adding to list. Invalid or empty mods will be skipped.
   Returns true if root and mods directory existed and file with mod list was loaded successfully *)
function MapModsFromList (const RootDir, ModsDir, ModListFile: PWideChar; Flags: integer = 0): LONGBOOL; stdcall;

(* Loads mod list from file and maps each mod directory to specified root directory.
   File with mod list is treated as (BOM or BOM-less) UTF-8 plain text file, where each mod name is separated
   from another one via Line Feed (#10) character. Each mod named is trimmed, converted to UCS16 and validated before
   adding to list. Invalid or empty mods will be skipped.
   Returns true if root and mods directory existed and file with mod list was loaded successfully *)
function MapModsFromListA (const RootDir, ModsDir, ModListFile: PAnsiChar; Flags: integer = 0): LONGBOOL; stdcall;

(* Runs all VFS subsystems, unless VFS is already running *)
function RunVfs (DirListingOrder: TDirListingSortType): LONGBOOL;

(* Temporarily pauses VFS, but does not reset existing mappings *)
function PauseVfs: LONGBOOL; stdcall;

(* Stops VFS and clears all mappings *)
function ResetVfs: LONGBOOL; stdcall;

(* Calls specified function with a single argument and returns its result. VFS is disabled for current thread during function exection *)
function CallWithoutVfs (Func: TSingleArgExternalFunc; Arg: pointer = nil): integer; stdcall;

(*
  Specifies the order, in which files from different mapped directories will be listed in virtual directory.
  Virtual directory sorting is performed by priorities firstly and lexicographically secondly.
  SORT_FIFO - Items of the first mapped directory will be listed before the second mapped directory items.
  SORT_LIFO - Items of The last mapped directory will be listed before all other mapped directory items.
*)
TDirListingSortType = (SORT_FIFO = 0, SORT_LIFO = 1);


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
14.05.2019 19:47
Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Forum Jump:

Powered by MyBB Copyright © 2002-2024 MyBB Group