Ну я использую конфигурацию Heroes 3 Complete Edition + HD Mod, как я понимаю, чтобы модифицировать ехе в данном случае, нужно api патчера использовать, чтобы потом все срослось. 
Или в винде можно запустить мой код в процессе игры просто через виндовозное api?
У меня тут еще вопрос появился. Я пока не разобрался, как организовано хранение объектов (героев, замков, существ) и их привязка к карте. 
В _MapItem_ есть следующие поля, которые могут иметь к этому отношения:
Dword   SetUp;     // +0
...
int     OType;     // +1E
Word    OSType;    // +22
Как я понял, в первое кидается указатель на нейтральных монстров, если они есть, иначе 0, правильно?
Про последние два в документации ничего толкового не написано и я не нашел какого-то обобщенного типа вроде Object, в котором может содержаться указатель на любой объект (героя, шахту и т.д.)
Есть тип _Types_ для карты, но как я понял, он для препятствий.
В общем, мне нужно из клетки на карте вытащить, стоит ли там монстр, герой, есть ли в ней вход в замок, шахту и получить указатель на этот объект. Для героя, как я понимаю, он потом должен быть приведен к _THero_/_Hero_, для замка к _CastleSetup_.
Или из карты это вытащить нельзя и надо отдельно просматривать список городов и героев?
По структуре _CMonster_
Quote:struct _CMonster_{
	unsigned  Number    :12; // +00 число
	unsigned  Agression : 5; // +0C 1C-присоединяется, 0A-кровожадное
	unsigned  NoRun     : 1; // +12 не убегает 3.58 fix
	unsigned  NoMore    : 1; // +11 не растет
	unsigned  SetUpInd  : 8; // +13 номер в настройке объектов (P1+44)
	unsigned _u1        : 4; // +1B
	unsigned  HasSetUp  : 1; // +1F имеет настройку структуры монстра
}; 
Непонятны смыслы полей SetUpInd, _u1, HasSetUp. Как из нее получить номер монстра, тот же, что используется CRTRAITS.TXT, а из него параметры монстра?