Объявления

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

Восстановление типов Heroes 3

Герои Меча и Магии III: Возрождение Эрафии, Герои Меча и Магии III Дыхание Смерти, Герои Меча и Магии III Клинок Армагеддона, Герои Меча и Магии III Хроники Героев
offlineАватара пользователя
void_17  
имя: имя
Ветеран
Ветеран
 
Сообщения: 548
Зарегистрирован: 25 апр 2021, 15:05
Откуда: Оттуда
Пол: Мужчина
Поблагодарили: 132 раз.

Восстановление типов Heroes 3

Сообщение void_17 » 17 дек 2021, 12:00

Решил сделать отдельный тред насчет восстановления оригинальных типов.
Информация о типах из дримкаст порта Героев Меча и Магии 3: Возрождение Эрафии(многое актуально и для SoD/WoG)
Все, что нужно, изучать дамп файл:
https://drive.google.com/file/d/1f33j57 ... sp=sharing
Справка по дамп файлу:
https://drive.google.com/file/d/13SoqW6 ... sp=sharing

Статус восстановления/Restoration status:
class x
struct x
enum x
Последний раз редактировалось void_17 17 дек 2021, 12:10, всего редактировалось 1 раз.
Вернуться к началу

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

Re: Восстановление типов Heroes 3

Сообщение void_17 » 16 янв 2022, 13:14

Вопрос: после завершения работы над новой версией базы стоит ли мне пилить современный аналог homm3.h?
Что туда включить помимо типов? Алгоритмы? Глобальные переменные?

 
Чем больше там будет всего - тем больше времени это займет... Логично? Логично.
Вернуться к началу

offlineigrik  
Подмастерье
Подмастерье
 
Сообщения: 108
Зарегистрирован: 14 сен 2017, 12:35
Пол: Не указан
Поблагодарили: 84 раз.

Re: Восстановление типов Heroes 3

Сообщение igrik » 17 янв 2022, 07:50

Вот чего в этой теме не хватает, так это разобранного списка простых базовых типов (вот в таком духе):

Код: Выделить всё
T_CHAR(0010)    1 байт, знаковый
T_UCHAR(0020)    1 байт, беззнаковый
T_INT4(0074)   4 байта, знаковый
T_LONG(0012)   4 байта, знаковый
T_ULONG(0022)   4 байта, беззнаковый (для флагов)


Если вы их разобрали - не могли бы вы ими поделиться?
Вернуться к началу

offlineRoseKavalier  
Мастер
Мастер
 
Сообщения: 331
Зарегистрирован: 23 сен 2017, 17:00
Пол: Не указан
Поблагодарили: 234 раз.

Re: Восстановление типов Heroes 3

Сообщение RoseKavalier » 17 янв 2022, 15:42

Код: Выделить всё
# https://github.com/Microsoft/microsoft-pdb/blob/master/include/cvinfo.h#L328
g_types = {
    0x0000 : ('',0),
    0x0003 : ('void',0),
    0x0010 : ('i8',1),
    0x0011 : ('i16',2),
    0x0012 : ('i32',4),   # T_LONG
    0x0013 : ('i64',8),   # T_QUAD
    0x0020 : ('u8',1),    # T_UCHAR
    0x0021 : ('u16',2),   # T_USHORT
    0x0022 : ('u32',4),   # T_ULONG
    0x0023 : ('u64',8),   # T_UQUAD
    0x0040 : ('f32',4),   # T_REAL32
    0x0041 : ('f64',8),   # T_REAL64
    0x0070 : ('char',1),  # T_RCHAR
    0x0072 : ('i16',2),
    0x0073 : ('u16',2),
    0x0074 : ('i32',4),
    0x0075 : ('u32',4),
    0x0403 : ('void*',4),
    0x0410 : ('i8*',4),  # T_32PCHAR
    0x0411 : ('i16*',4), # T_32PSHORT
    0x0412 : ('i32*',4), # T_32PLONG
    0x0413 : ('i64*',4), # T_32PQUAD
    0x0420 : ('u8*',4),  # T_32PUCHAR
    0x0421 : ('u16*',4),
    0x0422 : ('u32*',4),
    0x0440 : ('f32*',4),  # T_32PREAL32
    0x0441 : ('f64*',4),  # T_32PREAL64
    0x0470 : ('char*',4), # T_32PRCHAR
    0x0474 : ('i32*',4),  # T_32PINT4
    0x0475 : ('u32*',4),  # T_32PUINT4
    0x0479 : ('i8*',4)
}
Вернуться к началу

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

Re: Восстановление типов Heroes 3

Сообщение void_17 » 04 сен 2022, 13:01

Код: Выделить всё
struct PakEntry
{
   int offset;
   uint descSize;
   uint nbSheets;
   uint totalDDSSizeCompressed;
   uint totalDDSSizeUncompressed;
   std::vector<uint> ddsSizeCompressed;
   std::vector<uint> ddsSizeUncompressed;
   char name[20];
};

struct PakManager
{
   FILE *pakFile;
   std::vector<PakEntry> entries;
   std::map<std::string,PakEntry *> mapEntries;
   uint tocOffset;
   bool set;
};


Разобрал год назад парочку типов из HD Edition, сейчас вспомнил. Может понадобится кому...
А вот я хотел бы реверснуть код графики HD Edition, жаль времени нет.
Вернуться к началу


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

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

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