pobr
Posts: 4
|
И еще насчет таблиц виртуальных функций, можно сделать еще красивей. На примере класса 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 |
|
void_17
Posts: 39
|
(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, звездочку забыл...
Сейчас обновлю и еще парочку ошибок исправлю.
(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 |
|
void_17
Posts: 39
|
|
24.01.2022 09:24 |
|
pobr
Posts: 4
|
В классе resource судя по дампу поле Name равно не 16 байт, но четыре байта никогда не используются.
|
|
24.01.2022 09:53 |
|
void_17
Posts: 39
|
Еще раз обновил базу, т.к. в очередной раз наткнулся на собственную невнимательность. Сместились поля дальше worldMap. Пофиксил это дело.
IDA-База HOMM 3 Discord Server
(This post was last modified: 24.01.2022 13:43 by void_17.)
|
|
24.01.2022 13:42 |
|
igrik
Posts: 2819
|
(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 |
|
void_17
Posts: 39
|
В 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 |
|
igrik
Posts: 2819
|
Ты ко мне на вы? И я немного о другом говорю...
Доступ в базе то не сбивается, потому что эти 2 байта как раз в базе и указаны.
А в описанном тобой классе - нет. Т.е. нельзя просто взять и сходу использовать указанный класс, что в свою очередь неосвещённых может поставить в тупик. И таких мест далеко не одно (видимо из-за выравнивания).
... Я о том, что такой важный момент желательно указывать.
game bug fixes extended.dll || My Plugins || My GitHub
|
|
26.01.2022 08:53 |
|
pobr
Posts: 4
|
То, что сейчас называется 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 |
|
void_17
Posts: 39
|
@XEPOMAHT, я в скором времени собираюсь релизить очередную версию базу(релиз состоится одновременно с релизом NH3API). Я знаю ты не хочешь обновлять железо и OS, подскажи, какой версией IDA Pro ты пользуешься? Я могу написать питоновский скрипт который позволит импортировать функции и типы.
IDA-База HOMM 3 Discord Server
|
|
13.08.2024 18:15 |
|
Berserker
Posts: 16657
|
|
13.08.2024 23:36 |
|
void_17
Posts: 39
|
|
14.08.2024 00:13 |
|
void_17
Posts: 39
|
(13.08.2024 23:36)Berserker Wrote: void_17, спасибо большое за труд.
Рад стараться!
(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 |
|