Current time: 23.09.2023, 05:52 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
ERA III
Author Message
Archer30 Offline
Moderators

Posts: 994
Post: #316

Latest finding about Revealing the whole XXL map = crash upon loading

Basically, there are 5 ways in total to reveal the whole XXL map, they are
1. Heroes' vision (by walking through the whole map)
2. Skyship (The wonder of Tower)
3. Cheat code
4. Erm
5. Cartographer

I wasn't able to test the 1st as obviously it's too time consuming. But for the rest of them, an interesting finding is that the 5th, cartographer (with all 3 types) can safely reveal the whole map without a crash upon loading.

Download for examples: XXL Map+savegame revealed the whole map without crash

At this point, the way of revealing a map can be distributed into ethical and unethical ways. The ethical way provide a safe way of revealing the map, while the unethical way is dealing with the devil.
Ethical: Cartographer
Unethical: Skyship, cheat code and erm
not sure: Heros' vision

Another interesting finding is that if a map has been already revealed by Cartographer fully, it does not matter if it's revealed by unethical ways followed by, the savegame will still be safely loaded.

Now return to fixing the crash of XXL by revealing the map. A possible approach to solve this issue is comparing the difference between Cartographer and other ways. The might be enough to tell the answer.
Alternatively, assuming that revealing the map with heros' vision is an ehical way (very likely), the only thing needs to be fixed is Skyship in normal gameplay without cheating. A simple patch changing the effect of Skyship (for example, reveal only a fixed range) could resolve the crash problem.

____________________

Edit:A more interesting fact is that even with an unethical way for revealing, pass a turn and then save/load will also become safe.
This might be the best way to avoid crash before a real solution comes out.


Latest ERA mods and scripts in development - My GitHub
(This post was last modified: 09.10.2020 18:38 by Archer30.)
09.10.2020 10:49
Find all posts by this user Quote this message in a reply
XEPOMAHT Offline
Moderators

Posts: 2154
Post: #317

(09.10.2020 10:49)Archer30 Wrote:  Latest finding about Revealing the whole XXL map = crash upon loading

XXL-мод давно пора полностью переписать и встроить в era.dll. Например для MoP он когда-то был переписан на 90%, т.к. бинарная версия XXL-мода, которая используется в качестве мода для ERA, по тестам на MoP оказалась довольно багованной и просто недоделанной (сейчас и не вспомню конкретно, дело было года 3 назад...). Тем более часть пачтей XXL-мода заменяется HD-модом (радар, окно обзора королевства) и самой era.dll (патчи на воговские массивы данных, привязанные к размеру карты), поэтому предложение встроить XXL-мод в эру по-прежнему остаётся открытым (меня до сих пор смешит то, что глючный и недоделанный XXL-мод десятилетней давности - по прежнему один из популярных модов для ERA 96 ).
09.10.2020 12:02
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16289
Post: #318

Archer30, thanks for valuable report.

XEPOMAHT, это всё без конкретики.


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

Posts: 5422
Post: #319

Berserker, это же стиль подачи инфы у XEPOMAHT'а такой на форуме, ещё не привык?

XEPOMAHT Wrote:меня до сих пор смешит то, что глючный и недоделанный XXL-мод десятилетней давности - по прежнему один из популярных модов для ERA
ну, так он востребован игроками и потому им хоть какой-то, даже с багами, главное чтобы карты создавал
09.10.2020 13:58
Visit this user's website Find all posts by this user Quote this message in a reply
XEPOMAHT Offline
Moderators

Posts: 2154
Post: #320

(09.10.2020 13:58)Bes Wrote:  ну, так он востребован игроками и потому им хоть какой-то, даже с багами, главное чтобы карты создавал

Да, потому что не критично. Но тех же кнопок для генерации больших размеров по-прежнему на ERA нет (используются текущие id кнопок) и сам код получения размеров использует сложное вычисление размера вместо получения готовых значений (как в оригинале), что замедляет перерисовку окна карты приключений (а она перерисовывается практически постоянно, например в MoP перерисовку по движению мыши я вообще убрал и на моем древнем ПК немного поднялась производительность игры 148 ).
09.10.2020 15:06
Find all posts by this user Quote this message in a reply
Bes Offline

Posts: 5422
Post: #321

Berserker, если не секрет, можешь вкратце обрисовать дальнейшие свои планы в развитии линейки ERA3 ?
что так сказать в значимых планах файла TODO ?
иногда хочется так сказать испытывать чувство предвкушения (на этом наркотике вся киноиндустрия уж точно нас держит своими трэйлерами) от той или иной реализации или задумки Rolleyes
10.10.2020 03:49
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16289
Post: #322

Bes, выпуск мода на Смешанные Нейтралы 2, Управление циклическими звуками, Автообновление, Lua.


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

Posts: 5422
Post: #323

спасибо
ERM2.0 как я понимаю сейчас в окончательном релизе? только дошлифовка мелких огрехов и скрытых багов?
ничего из нового уже не ждать?
10.10.2020 04:11
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16289
Post: #324

Bes, как движок да, конечно.


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

Posts: 2735
Post: #325

(09.10.2020 12:02)XEPOMAHT Wrote:  XXL-мод давно пора полностью переписать и встроить в era.dll. Например для MoP он когда-то был переписан на 90%, т.к. бинарная версия XXL-мода, которая используется в качестве мода для ERA, по тестам на MoP оказалась довольно багованной и просто недоделанной (сейчас и не вспомню конкретно, дело было года 3 назад...). Тем более часть пачтей XXL-мода заменяется HD-модом (радар, окно обзора королевства) и самой era.dll (патчи на воговские массивы данных, привязанные к размеру карты), поэтому предложение встроить XXL-мод в эру по-прежнему остаётся открытым (меня до сих пор смешит то, что глючный и недоделанный XXL-мод десятилетней давности - по прежнему один из популярных модов для ERA ).
ХЕРОМАНТ, а дай свой код пожалуйста. Я попробую его адаптировать для ERA. Если уже есть готовый продукт, не хотелось бы копать всё заново с нуля.
10.10.2020 21:11
Visit this user's website Find all posts by this user Quote this message in a reply
XEPOMAHT Offline
Moderators

Posts: 2154
Post: #326

(10.10.2020 21:11)igrik Wrote:  Если уже есть готовый продукт, не хотелось бы копать всё заново с нуля.

Сохранились только сами "раскопки" - разобранный бинарник от AlexSpl и версия Андрея, на основе которых была написана версия под MoP: https://vk.com/doc-118013293_472373462

Из MoP - только диассемблированием (т.к. всё, что встраивается в mop.exe, производится без использования исходных кодов напрямую байткодом). Что не было встроено - только код, который ставит кнопки:

Code:
        mAlloc 68h
        DrawDefButton eax, 0DDh, 81, 41, 33, Экран_опций_карты_!_Кнопка_карты_180х180, RanSize180_def, 0, 1, 0, 0, 2
        call AddItemToArray_MapOpt

        mAlloc 68h
        DrawDefButton eax, 106h, 81, 41, 33, Экран_опций_карты_!_Кнопка_карты_216х216, RanSize216_def, 0, 1, 0, 0, 2
        call AddItemToArray_MapOpt

        mAlloc 68h
        DrawDefButton eax, 12Fh, 81, 41, 33, Экран_опций_карты_!_Кнопка_карты_252х252, RanSize252_def, 0, 1, 0, 0, 2
        call AddItemToArray_MapOpt

        mAlloc 68h
        DrawDefButton eax, 230, 535, 166, 40, Экран_опций_карты_!_Кнопка_меню_выбора_случайной_карты, 683580h, 0, 1, 0, 0, 2
        call AddItemToArray_MapOpt
11.10.2020 01:04
Find all posts by this user Quote this message in a reply
igrik Offline
Administrators

Posts: 2735
Post: #327

Ох. Я понял что не всё так просто. В любом случае - спасибо!

PS: не сказать как я ошалел, когда увидел "40A08F E9B4940000; JMP 00413548" и то, что мы втупую прыгаем из одной функции прямо в свитч другой функции. Это вообще нормально?
11.10.2020 19:43
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16289
Post: #328

igrik, если в свитче не используется ранее инициализированных локальных переменных/аргументов и обе функции имеют одно и то же число параметров и размер локальной памяти.


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

Posts: 2735
Post: #329

Вот то то и оно. Но в данном случае это совершенно не так...
11.10.2020 20:01
Visit this user's website Find all posts by this user Quote this message in a reply
XEPOMAHT Offline
Moderators

Posts: 2154
Post: #330

(11.10.2020 19:43)igrik Wrote:  Это вообще нормально?

Не очень нормально, поэтому в MoP просто берётся готовое значение из таблицы и пишется в local.2:

Code:
CPU Disasm
Address   Hex dump                  Command                                  Comments
0040A07F  |.  83F8 07               CMP EAX,7
0040A082  |.  77 22                 JA SHORT 0040A0A6
0040A084  |.  8B1485 585E7000       MOV EDX,DWORD PTR DS:[EAX*4+705E58]
0040A08B  |.  8955 F8               MOV DWORD PTR SS:[LOCAL.2],EDX
0040A08E  \.  EB 1D                 JMP SHORT 0040A0AD
0040A090   .  90                    NOP
0040A091   .  90                    NOP
0040A092   .  90                    NOP
0040A093   .  90                    NOP
0040A094   .  90                    NOP
0040A095   .  90                    NOP
0040A096   .  90                    NOP
0040A097   .  90                    NOP
0040A098   .  90                    NOP
0040A099   .  90                    NOP
0040A09A   .  90                    NOP
0040A09B   .  90                    NOP
0040A09C   .  90                    NOP
0040A09D   .  90                    NOP
0040A09E   .  90                    NOP
0040A09F   .  90                    NOP
0040A0A0   .  90                    NOP
0040A0A1   .  90                    NOP
0040A0A2   .  90                    NOP
0040A0A3   .  90                    NOP
0040A0A4   .  90                    NOP
0040A0A5   .  90                    NOP
0040A0A6  />  C745 F8 00008040      MOV DWORD PTR SS:[LOCAL.2],40800000

Там, где свитч совершенно не нужен, его лучше заменять обычной таблицей (+ освобождаются NOPS).
(This post was last modified: 12.10.2020 00:29 by XEPOMAHT.)
12.10.2020 00:24
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-2023 MyBB Group