Current time: 21.09.2024, 04:03 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
Стандартизированная база героев 3
Author Message
pobr Offline

Posts: 4
Post: #16

И еще насчет таблиц виртуальных функций, можно сделать еще красивей. На примере класса resource:

Code:
struct resource_vtbl
{
    resource *(__thiscall *delete)(resource *__hidden this, uint flags);
};

struct __cppobj resource
{
    resource_vtbl *__vftable;
};

В псевдокоде будет выглядеть натурально как вызов функции C++.
23.01.2022 15:18
Find all posts by this user Quote this message in a reply
void_17 Offline

Posts: 34
Post: #17

(23.01.2022 15:10)pobr Wrote:  
(23.01.2022 12:21)void_17 Wrote:  Обновил базу до версии BETA 2.0

CSequence это массив указателей:

Code:
struct CSequence
{
  int numFrames;
  int allocatedFrames;
  CSpriteFrame **f;
};

Пока переписывал с RoE, звездочку забыл... 147
Сейчас обновлю и еще парочку ошибок исправлю.

(23.01.2022 15:18)pobr Wrote:  И еще насчет таблиц виртуальных функций, можно сделать еще красивей.

Хорошая идея кстати говоря, думал об этом, но никак руки не дошли. Чуть позже запилю.


IDA-База HOMM 3 Discord Server
(This post was last modified: 24.01.2022 07:41 by void_17.)
24.01.2022 07:40
Find all posts by this user Quote this message in a reply
void_17 Offline

Posts: 34
Post: #18

https://drive.google.com/file/d/1MY28K8c...sp=sharing

Обновил базу (2.1 -> 2.1.1)
Исправил типы:
game,
combatManager,
CSequence,
CSprite.


Добавил парочку сигнатур, а также типы некоторых таблиц виртуальных функций.


IDA-База HOMM 3 Discord Server
(This post was last modified: 24.01.2022 13:42 by void_17.)
24.01.2022 09:24
Find all posts by this user Quote this message in a reply
pobr Offline

Posts: 4
Post: #19

В классе resource судя по дампу поле Name равно не 16 байт, но четыре байта никогда не используются.
24.01.2022 09:53
Find all posts by this user Quote this message in a reply
void_17 Offline

Posts: 34
Post: #20

Еще раз обновил базу, т.к. в очередной раз наткнулся на собственную невнимательность. Сместились поля дальше worldMap. Пофиксил это дело.


IDA-База HOMM 3 Discord Server
(This post was last modified: 24.01.2022 13:43 by void_17.)
24.01.2022 13:42
Find all posts by this user Quote this message in a reply
igrik Offline
Administrators

Posts: 2819
Post: #21

(24.01.2022 15:38)void_17 Wrote:  Получается, combatManager разобран абсолютно полностью(кроме поля unknown1). Спустя стольких лет..
Агонь, мужики! Это очень круто!

UPD: я не могу быть уверен на 100%, но склоняюсь что тут пропущено 2 байта (если говорить о SoD)
Code:
int iNextActionGridIndex2;
uchar iLastDrawGridShade[187];
uchar iCurDrawGridShade[187];
.. вот тут пропущено 2 байта (в SOD)
struct hexcell cell[187];
int combatTerrain;


game bug fixes extended.dll || My Plugins || My GitHub
25.01.2022 05:59
Visit this user's website Find all posts by this user Quote this message in a reply
void_17 Offline

Posts: 34
Post: #22

В SoD-овской базе я делал combatManager как раз под SoD, сверяя с тем, что есть у sav-a. Согласно оператору new ( см. функцию InitMainClasses() ), размер combatManager - 0x140EC, что собственно у меня в базе и есть. Да и доступ к переменным не сбивается. Поэтому все ок, не волнуйтесь.


IDA-База HOMM 3 Discord Server
(This post was last modified: 26.01.2022 08:21 by void_17.)
26.01.2022 08:19
Find all posts by this user Quote this message in a reply
igrik Offline
Administrators

Posts: 2819
Post: #23

Ты ко мне на вы? И я немного о другом говорю...

Доступ в базе то не сбивается, потому что эти 2 байта как раз в базе и указаны.
А в описанном тобой классе - нет. Т.е. нельзя просто взять и сходу использовать указанный класс, что в свою очередь неосвещённых может поставить в тупик. И таких мест далеко не одно (видимо из-за выравнивания).

... Я о том, что такой важный момент желательно указывать.


game bug fixes extended.dll || My Plugins || My GitHub
26.01.2022 08:53
Visit this user's website Find all posts by this user Quote this message in a reply
pobr Offline

Posts: 4
Post: #24

То, что сейчас называется SpriteResourceFile, это не LODFile, как было в Dreamcast версии. Теперь это структура из указателя на имя файла и собственно LODFile (400 байт):

Code:
struct LODFileMapItem
{
  const char *path;
  LODFile lod;
};

Сам LODFile выглядит так (396 байт):

Code:
struct LODFile
{
  FILE *fileptr;
  char LODFileName[256];
  int opened;
  uchar *dataBuffer;
  ulong dataBufferSize;
  int dataItemIndex;
  int dataPos;
  int matchindex;
  LODHeader header;
  int numEntries;
  std::vector subindex;
};

И таких структур 8 штук, возможно массив.
28.01.2022 12:01
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16624
Post: #25

Да, массив.


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

Posts: 34
Post: #26

@XEPOMAHT, я в скором времени собираюсь релизить очередную версию базу(релиз состоится одновременно с релизом NH3API). Я знаю ты не хочешь обновлять железо и OS, подскажи, какой версией IDA Pro ты пользуешься? Я могу написать питоновский скрипт который позволит импортировать функции и типы.


IDA-База HOMM 3 Discord Server
13.08.2024 18:15
Find all posts by this user Quote this message in a reply
XEPOMAHT Offline
Moderators

Posts: 2332
Post: #27

(13.08.2024 18:15)void_17 Wrote:  подскажи, какой версией IDA Pro ты пользуешься? Я могу написать питоновский скрипт который позволит импортировать функции и типы.

IDA 6.5 - максимальная версия под WinXP/2003. Всё, что выше - уже не запускается.
13.08.2024 19:42
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16624
Post: #28

void_17, спасибо большое за труд. По поводу API. Ты не смотрели H3Api от RoseKavalier? Может быть стоило его развивать?


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

Posts: 34
Post: #29

(13.08.2024 19:42)XEPOMAHT Wrote:  IDA 6.5 - максимальная версия под WinXP/2003. Всё, что выше - уже не запускается.

Хмм, не такая уж и древняя. Что-нибудь придумаю Rolleyes
Главное, чтобы у тебя был Python.
Версии, работающие на Windows XP: https://stackoverflow.com/questions/4751...windows-xp
(2.7.9 и 3.4.4)


IDA-База HOMM 3 Discord Server
(This post was last modified: 14.08.2024 00:24 by void_17.)
14.08.2024 00:13
Find all posts by this user Quote this message in a reply
void_17 Offline

Posts: 34
Post: #30

(13.08.2024 23:36)Berserker Wrote:  void_17, спасибо большое за труд.

Рад стараться! 147

(13.08.2024 23:36)Berserker Wrote:  По поводу API. Ты не смотрели H3Api от RoseKavalier? Может быть стоило его развивать?

Да, видел. Моя NH3API основывается на моей базе, 90% информации откуда - оригинальная от программистов NWC(точнее от отладочной информации dreamcast RoE). Остальные 10% отреверсенные мною самостоятельно AB/SoD-овские нововведения.

H3API RoseKavalier-a основывается на самостоятельном реверсинге в слепую, ещё до того как слили dreamcast версию игры. Плюс у неё другая архитектура и нет соответствующей базы данных. А у меня и база и своя API, целая экосистема считай. Самое главное - что информация во многом 100% достоверна из-за того что досталась от разработчиков.

Из плюсов для ретрофилов - моя NH3API будет поддерживать старые Visual Studio 2005/2008, а также MinGW GCC(сам компилятор работает на windows XP!)


IDA-База HOMM 3 Discord Server
14.08.2024 00:18
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