Объявления

Друзья, если не получается зарегистрироваться, напишите на почту vdv_forever@bk.ru.
Я оторву свою задницу от всех дел и обязательно Вас активирую! :smile10:
Добро пожаловать на геройский форум! :smile25:

Энциклопедия алгоритмов HoMM 3

Герои Меча и Магии III: Возрождение Эрафии, Герои Меча и Магии III Дыхание Смерти, Герои Меча и Магии III Клинок Армагеддона, Герои Меча и Магии III Хроники Героев
offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5539
Зарегистрирован: 17 сен 2010, 12:58
Пол: Мужчина
Награды: 14
Высшая медаль (1) Победителю турнира по HMM1_TE (2) Победителю этапа по HMM1 (1) Победителю этапа по HMM2 (1) Лучшему из лучших (1) 2 место 1 этапа по HMM1 (1)
3 место 1 этапа по HMM1 (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (2) Победителю турнира по KB (1) Грандмастер оффлайн-турниров (1) Боевой шлем (1)
Поблагодарили: 2155 раз.

Re: Энциклопедия алгоритмов HoMM 3

Сообщение AlexSpl » 18 июл 2021, 16:24

Получилось дизассемблировать:

Изображение

Настоящий кладезь информации :smile20:

H3.zip
(8.34 МБ) Скачиваний: 613

2RoseKavalier: Hex-Rays Decompiler can't decompile SuperH-4 assembly:

Цитата:
Currently the decompiler supports compiler generated code for the x86, x64, ARM32, ARM64, and PowerPC processors. We plan to port it to other platforms in the future.

* * *
Прикольно, что все инструкции 2-х байтовые.

Мануал по инструкциям SH-4
Вернуться к началу

offlineАватара пользователя
void_17  
имя: DM
Ветеран
Ветеран
 
Сообщения: 530
Зарегистрирован: 25 апр 2021, 15:05
Откуда: Оттуда
Пол: Мужчина
Поблагодарили: 116 раз.

Re: Энциклопедия алгоритмов HoMM 3

Сообщение void_17 » 26 июл 2021, 03:23

AlexSpl писал(а):

Получилось дизассемблировать:

Изображение

Настоящий кладезь информации :smile20:

H3.zip

2RoseKavalier: Hex-Rays Decompiler can't decompile SuperH-4 assembly:

Цитата:
Currently the decompiler supports compiler generated code for the x86, x64, ARM32, ARM64, and PowerPC processors. We plan to port it to other platforms in the future.

* * *
Прикольно, что все инструкции 2-х байтовые.

Мануал по инструкциям SH-4



А он вообще ценности имеет? Там же явно совсем другие алгоритмы и функции.
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5539
Зарегистрирован: 17 сен 2010, 12:58
Пол: Мужчина
Награды: 14
Высшая медаль (1) Победителю турнира по HMM1_TE (2) Победителю этапа по HMM1 (1) Победителю этапа по HMM2 (1) Лучшему из лучших (1) 2 место 1 этапа по HMM1 (1)
3 место 1 этапа по HMM1 (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (2) Победителю турнира по KB (1) Грандмастер оффлайн-турниров (1) Боевой шлем (1)
Поблагодарили: 2155 раз.

Re: Энциклопедия алгоритмов HoMM 3

Сообщение AlexSpl » 26 июл 2021, 05:55

Это порт RoE на Dreamcast. Интересен тем, что видны оригинальные имена классов/структур, функций, типы аргументов. Переписан только UI, выпилен сетевой режим, а остальной код ничем не должен отличаться от оригинального кода RoE (специально для Dreamcast Героев с нуля очевидно не писали; Ghidra умеет декомпилировать, так что при желании можно сравнить код).
Вернуться к началу

offlineАватара пользователя
void_17  
имя: DM
Ветеран
Ветеран
 
Сообщения: 530
Зарегистрирован: 25 апр 2021, 15:05
Откуда: Оттуда
Пол: Мужчина
Поблагодарили: 116 раз.

Re: Энциклопедия алгоритмов HoMM 3

Сообщение void_17 » 30 июл 2021, 15:35

AlexSpl писал(а):

Это порт RoE на Dreamcast. Интересен тем, что видны оригинальные имена классов/структур, функций, типы аргументов. Переписан только UI, выпилен сетевой режим, а остальной код ничем не должен отличаться от оригинального кода RoE (специально для Dreamcast Героев с нуля очевидно не писали; Ghidra умеет декомпилировать, так что при желании можно сравнить код).



Ааааа, так вот оно что. Я думал, что с нуля написан порт.

А имена оригинальных структур и переменных зачем? Они все равно ничем не помогут.
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5539
Зарегистрирован: 17 сен 2010, 12:58
Пол: Мужчина
Награды: 14
Высшая медаль (1) Победителю турнира по HMM1_TE (2) Победителю этапа по HMM1 (1) Победителю этапа по HMM2 (1) Лучшему из лучших (1) 2 место 1 этапа по HMM1 (1)
3 место 1 этапа по HMM1 (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (2) Победителю турнира по KB (1) Грандмастер оффлайн-турниров (1) Боевой шлем (1)
Поблагодарили: 2155 раз.

Re: Энциклопедия алгоритмов HoMM 3

Сообщение AlexSpl » 30 июл 2021, 15:43

Сейчас уже мало чем (но это смотря кому). Для тех, кто только начинает разбираться, имена - огромная подсказка. Сразу видно, например, что умеет AI, а чего нет. А при огромном желании можно воссоздать исходный код.
Вернуться к началу

offlineАватара пользователя
void_17  
имя: DM
Ветеран
Ветеран
 
Сообщения: 530
Зарегистрирован: 25 апр 2021, 15:05
Откуда: Оттуда
Пол: Мужчина
Поблагодарили: 116 раз.

Re: Энциклопедия алгоритмов HoMM 3

Сообщение void_17 » 10 авг 2021, 14:53

AlexSpl писал(а):

Получилось дизассемблировать:

Изображение

Настоящий кладезь информации :smile20:

H3.zip

2RoseKavalier: Hex-Rays Decompiler can't decompile SuperH-4 assembly:

Цитата:
Currently the decompiler supports compiler generated code for the x86, x64, ARM32, ARM64, and PowerPC processors. We plan to port it to other platforms in the future.

* * *
Прикольно, что все инструкции 2-х байтовые.

Мануал по инструкциям SH-4


Ммм, как минимум 80% функций связанных с кампаниями другие. Жалко структур нет оригинальных.

Цитата:
Hex-Rays Decompiler can't decompile SuperH-4 assembly:


В Ghidra пашит кстати.
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5539
Зарегистрирован: 17 сен 2010, 12:58
Пол: Мужчина
Награды: 14
Высшая медаль (1) Победителю турнира по HMM1_TE (2) Победителю этапа по HMM1 (1) Победителю этапа по HMM2 (1) Лучшему из лучших (1) 2 место 1 этапа по HMM1 (1)
3 место 1 этапа по HMM1 (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (2) Победителю турнира по KB (1) Грандмастер оффлайн-турниров (1) Боевой шлем (1)
Поблагодарили: 2155 раз.

Re: Энциклопедия алгоритмов HoMM 3

Сообщение AlexSpl » 10 авг 2021, 16:58

Цитата:
Ммм, как минимум 80% функций связанных с кампаниями другие. Жалко структур нет оригинальных.

Так версия RoE. И неизвестно, какой патч.

Плохо, что Ghidra не подхватывает сигнатуры.
Вернуться к началу

offlineАватара пользователя
void_17  
имя: DM
Ветеран
Ветеран
 
Сообщения: 530
Зарегистрирован: 25 апр 2021, 15:05
Откуда: Оттуда
Пол: Мужчина
Поблагодарили: 116 раз.

Re: Энциклопедия алгоритмов HoMM 3

Сообщение void_17 » 12 авг 2021, 11:00

А сигнатуры чем полезны?
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5539
Зарегистрирован: 17 сен 2010, 12:58
Пол: Мужчина
Награды: 14
Высшая медаль (1) Победителю турнира по HMM1_TE (2) Победителю этапа по HMM1 (1) Победителю этапа по HMM2 (1) Лучшему из лучших (1) 2 место 1 этапа по HMM1 (1)
3 место 1 этапа по HMM1 (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (2) Победителю турнира по KB (1) Грандмастер оффлайн-турниров (1) Боевой шлем (1)
Поблагодарили: 2155 раз.

Re: Энциклопедия алгоритмов HoMM 3

Сообщение AlexSpl » 12 авг 2021, 11:17

Тем, что ты видишь вот это:

Код: Выделить всё
philAI::ProbableOutcomeOfBattle(
    v6,
    (struct hero *)((char *)gpCurAIHero + 101),
    gpCurAIHero,
    gpMonGroup,
    0,
    0,
    0,
    0,
    -1,
    &v19,
    &v16,
    &v14,
    &v13,
    &v11,
    &v10);
  philAI::EvaluateOneTimeCreaturePurchase(v6, a2, v17, 1, &v21, &v16, &v18);

а не sub_XXX1(); sub_XXX2();

Или вот пример:

Код: Выделить всё
void __stdcall philAI::BuildBuilding(struct town *a2, int a3)
{
  int v3; // ST10_4
  char *v4; // eax
  int v5[7]; // [esp+10h] [ebp-20h]
  int i; // [esp+2Ch] [ebp-4h]

  v3 = *(char *)a2;
  v4 = GetBuildingName(*((char *)a2 + 3), a3);
  sprintf((char *)&gText, aPlayerDBuiltSI, giCurPlayer, v4, v3);
  LogStr((char *)&gText);
  if ( giDebugLevel >= 3 )
  {
    AiPrint((char *)&gText);
    DelayMilli(1500);
  }
  GetBuildingCost(*((char *)a2 + 3), a3, v5, *((char *)a2 + 28));
  for ( i = 0; i < 7; ++i )
    *(_DWORD *)((char *)gpCurPlayer + 4 * i + 143) -= v5[i];
  town::BuildBuilding(a2, a3);
  ShowStatus();
}

С сигнатурами это почти готовый исходный код функции.
Вернуться к началу

offlineАватара пользователя
void_17  
имя: DM
Ветеран
Ветеран
 
Сообщения: 530
Зарегистрирован: 25 апр 2021, 15:05
Откуда: Оттуда
Пол: Мужчина
Поблагодарили: 116 раз.

Re: Энциклопедия алгоритмов HoMM 3

Сообщение void_17 » 13 авг 2021, 18:31

AlexSpl писал(а):

Тем, что ты видишь вот это:

Код: Выделить всё
philAI::ProbableOutcomeOfBattle(
    v6,
    (struct hero *)((char *)gpCurAIHero + 101),
    gpCurAIHero,
    gpMonGroup,
    0,
    0,
    0,
    0,
    -1,
    &v19,
    &v16,
    &v14,
    &v13,
    &v11,
    &v10);
  philAI::EvaluateOneTimeCreaturePurchase(v6, a2, v17, 1, &v21, &v16, &v18);

а не sub_XXX1(); sub_XXX2();

Или вот пример:

Код: Выделить всё
void __stdcall philAI::BuildBuilding(struct town *a2, int a3)
{
  int v3; // ST10_4
  char *v4; // eax
  int v5[7]; // [esp+10h] [ebp-20h]
  int i; // [esp+2Ch] [ebp-4h]

  v3 = *(char *)a2;
  v4 = GetBuildingName(*((char *)a2 + 3), a3);
  sprintf((char *)&gText, aPlayerDBuiltSI, giCurPlayer, v4, v3);
  LogStr((char *)&gText);
  if ( giDebugLevel >= 3 )
  {
    AiPrint((char *)&gText);
    DelayMilli(1500);
  }
  GetBuildingCost(*((char *)a2 + 3), a3, v5, *((char *)a2 + 28));
  for ( i = 0; i < 7; ++i )
    *(_DWORD *)((char *)gpCurPlayer + 4 * i + 143) -= v5[i];
  town::BuildBuilding(a2, a3);
  ShowStatus();
}

С сигнатурами это почти готовый исходный код функции.



Ого, а чем декомпилировали? IDA же не поддерживает псевдокод для этих видов процессоров. Или это воговская база, просто с другими названиями?
Вернуться к началу

Пред.След.

Вернуться в Общий раздел

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3