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: 2821 
	
		
	 | 
	
		
			
			 
			
				 (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: 2821 
	
		
	 | 
	
		
			
			 
			
				Ты ко мне на вы? И я немного о другом говорю... 
 
Доступ в базе то не сбивается, потому что эти 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: 16788 
	
		
	 | 
	
		
 | 
	| 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 | 
	
		
	 |