Понял,стыдно.Dalai wrote:Обсуждают в том же ключе. "Круто было бы, если бы кто-то запилил..."
А можно точнее,чего не хватает в плане программирования,не сказать,что совсем помочь не могу,если не касается написания с нуля,то обсудим.
Понял,стыдно.Dalai wrote:Обсуждают в том же ключе. "Круто было бы, если бы кто-то запилил..."
Да ну, перестань. Тебе-то чего стыдно? Желание совершенно нормальное, я тоже хочу Г4 в HD.Philipp wrote:Понял,стыдно.
А можно точнее,чего не хватает в плане программирования,не сказать,что совсем помочь не могу,если не касается написания с нуля,то обсудим.
Dalai wrote: Всего-то
Скрин не покажешь?Ek Wilibris wrote:Сегодня с утра посидел и нашёл точку входа из Г4 в SetDisplayMode. Таки да, мне удалось запустить героев в 1600х900, оно работает, но рисуется в верхнем левом углу экрана, что и ожидалось, а в остальных углах - десктоп торчит.
Можно попробовать функцию-переходник написать. Хотя не факт, что получится - работу с графикой для этого нужно копать плотно.Ну, что и было понятно, авторы заточили всю графику в 3 железно прошитых режима, 800, 1024, 1280, под них рисуется графика. Если даже "обмануть" кроме DDraw саму игру, у её графики, скорее всего (скорее всего, но не факт) снесёт крышу. о_о
А что говорит при запуске?Вывод: нужно как-то полностью дизассеблить всё это дело и копаться в коде подробно. Кстати, где взять хороший дизассемблер? Я сёдня с утра попытался поставить IDA 5.0 с нулевым успехом (она не запускается).
Не советую. Для отладки лучше использовать бесплатный OllyDbg 1.10 (либо его клон). Он мелкий, шустрый, нормально работает в x32 и x64, причем без прав администратора. Lost его пользовал, я пользую, и те, кто придут за мной, тоже будут пользовать. А в IDA проводить анализ кода, давать связные имена функциям и переменным, писать комментарии.Ek Wilibris wrote:Мне удалось запустить Иду, но сильно в ней не копался, пока непривычно, и герои что-то в ней с первого раза не стартанули, выпал эксепшн. Ну ок, потом покопаюсь, как опять будет время. (для запуска надо было стартануть из-под администратора)
Но хоть адрес функции записал?вот тут должен был быть скрин со стеком и пушем значений из edi и ebp для высоты/ширины, перед вызовом ddraw, но я сейчас посмотрел картинку, и понял, что скопировал/вставил не так, поэтому скрин с другого момента.
Думаю, что для дальнейшего шага нужно четко представлять, как работает DirectX. Тогда можно уже более осмысленно искать места, где устанавливается/меняется разрешение и как изменение этих данных будет влиять на игру.заново открыл окно с настройками, "во весь экран включено", но разрешение тут последнее выбранное, на самом деле 1600х900. Сбоку-снизу ничего не рисуется, артефакты от студии торчат и часть десктопа.
Почему? Опасно, конечно, но вроде дистрибутив я с официального сайта скачал.Max_HMMI wrote:Не советую
Ага, надо будет глянуть. Надо бы ещё WinDbg скачать, но он вроде не умеет стартовать процессы. А далее как раз анализ будет нужен.Max_HMMI wrote:OllyDbg 1.10
звучит как-то пессимистичноMax_HMMI wrote:и те, кто придут за мной, тоже будут пользовать.
Нет, но она там одна, тот самый хендлер, выше неё только GetMessage + Translate/Dispatch. В этот раз я его не видел, а в прошлый да, даже удивился. Видимо, на шестой студии создавали игру Ищется хендлер через тот же ddraw любой вызов. Я ставил бряк в вышеописанных функциях. Потом шёл в героев, в настройки, выставлял "во весь эркан". После "применить" игра "выходит" из режима GDI и включает DirectDraw, для этого идёт в ddraw, тут мы её и ловим... Так вот, та функция, из которой мы в ddraw входим - и есть хендлер. А кстати, на 1-м и 2-м скрине адрес входа есть в окне стека вызовов.Max_HMMI wrote:Но хоть адрес функции записал?
Просто тяжел IDA для таких работ. Я как-то пробовал запустить там под отладкой "Героев" - ничего не вышло (правда, это было в одной из старых версий IDA). А OllyDbg запускает "Героев" влет, плюс, даже без плагинов имеет очень достойный функционал. И систему практически не грузит.Ek Wilibris wrote:Почему? Опасно, конечно, но вроде дистрибутив я с официального сайта скачал.Max_HMMI wrote:Не советую
Если авторов не угораздило написать свою графическую либу, то отлов BitBlt, StretchBlt с заменой позиций и размера - это оно.
И вот так всегда...Но неизвестно, когда я заново за дело усядусь возможно, что вообще никогда. Далай просил говорить правду, так что это вот она
Это самая полезная штука HDPhilipp wrote:А можно отследить то,как растягивает,точнее подстраивается под абсолютно любое разрешение редактор карт?Правда он не в полноэкранном режиме работает,но разворачивается и увеличивает именно видимую площадь карты,может в нем и есть ключ к разгадке ?
Ага, скачал, но ещё не смотрелMax_HMMI wrote:OllyDbg
Ну, в смысле, не прям либу, а код-прослойку. Это удобно, я сам так делал, когда работал с графикой. Т.е. рисуешь не прям в DC, а в некий абстрактный массив байт, предварительно сняв его с DC(если надо), и после рисования положив обратно в DC. Это удобно тем, что само общение с DC требует много ресурсов. К примеру, нарисовать объект с тенью в битмаповый массив не проблема: берём спрайт, копируем, контраст в ноль, полупрозрачность, сдвигаем, рисуем, поверх рисуем объект. Просто, но если делать это с DC - это очень сложно.Max_HMMI wrote:Думаю - вряд ли (в смысле, свою либу писали). Зачем?
НуMax_HMMI wrote:И вот так всегда...
Не, тут всё просто, редактор чисто оконный, рисует спрайты слоями в рамках своей видимой области. С другой стороны, ничего не просто, так как то, как управлять этой областью знает только сам редактор. С ещё более другой стороны, всё просто, так как область рисования игровой карты - стандартное окно, которым легко можно управлять сторонними средствами. Окно же игры - это одно монолитное виндовое окно, которое внутри себя "делится" на участки и разрисовывается (неизвестным) кодом игры.Philipp wrote:А можно отследить то,как растягивает,точнее подстраивается под абсолютно любое разрешение редактор карт?Правда он не в полноэкранном режиме работает,но разворачивается и увеличивает именно видимую площадь карты,может в нем и есть ключ к разгадке ?
отлично!baratorch wrote:Есть желание заняться ХД модом для 4ки
я всё это в своё время нашёл в интернете, с описанием где какие таблицы и за что отвечают, тулы для распаковки-упаковки, где уже не помню, давно это было, да и это к HD отношение мало имело, просто интересно было посмотреть. Хотя если править графику, то да, это полезно посмотреть.baratorch wrote:И где все это взять?
Я конечно могу сам все найти. Но у меня ограничено время, не хотелось бы распылять его на то, с чем мне могут помочь другие.Ek Wilibris wrote: я всё это в своё время нашёл в интернете
IDA - безальтернативная вещь для реверсинга кода. Для отладки удобнее всего OllyDbg.По HD-моду: можешь почитать мои посты тут. Основной exe, отвечающий за отрисовку - heroes4.exe, все мои наработки тут описаны. IDA не использовал. Остановился на том, что следующая цель - найти место, где лежать (или откуда получаются) внутренние данные о текущем используемом игрой разрешении.
Ну я вот, правда, давно это искал. Сейчас пошарился по винту, нашёл только екстрактор, mh4, за 2002 год:baratorch wrote: Я конечно могу сам все найти. Но у меня ограничено время, не хотелось бы распылять его на то, с чем мне могут помочь другие.
всё, что есть. Могу куда-нить выложить.readme.txt wrote: --------------------
| mh4 (version 0.06) |
--------------------
By Olivier Soares <olivier@etranges-libellules.fr>
Download the last release here: http://www.archangelcastle.com or http://www.strategyplanet.com/homm
With this program, you can extract and modify data (music, maps, sprites, etc.) from the game Heroes of Might and Magic IV (c)3DO & New World Computing.
...
у меня просто не было времени с ними обоими поразбиратьсяIDA - безальтернативная вещь для реверсинга кода. Для отладки удобнее всего OllyDbg.
А! Так это тебе я письмо писал, чтобы узнать детали модинга hmm3, но не получил ответ, но в результате ты тут самДля тех кто не в курсе, мною уже более 6 лет разрабатывается(развивается) HD мод для 3-ки: (https://sites.google.com/site/heroes3hd/rus/description),
Так же я сделал редактор карт для HoMM3 HotA, и немало поучаствовал в разработке самой HotA.
Та же критическая фигня со временем, но чем смогу, помогу.Короче знание дела, опыт у меня есть. И есть уверенность в том что моих знаний, опыта и наработок достаточно чтобы сделать HD мод для 4ки.
Вот только времени у меня сейчас очень немного, и нет уверенности что его вообще хватит, поэтому я и прошу помощи.
В свое время "минус один . пре пре пре ... пре альфа" версия ХД мода для тройки, которую уже можно было пощупать, была сделана чуть более чем за два месяца, еще через 3 месяца была выпущена версия 1.0
На данный момент HoMM3 HD - это монстр: около 2000 патчей и хуков, более 100 тысяч строк кода на C++, куча всякого функционала помимо простой смены разрешения. Одно из последних достижений - одновременный ход в сетевой игре.
Начинал я очень смутно представляя что и как делать, с весьма поверхностными знаниями ассемблера и моддинга исполняемого файла.
Зато было очень много свободного времени и была очень высокая мотивация, сейчас этого нет. Н есть опыт, наработанный инструментарий и четкое знание что делать.