Как стать автором
Обновить
402
0
Evgeny Vrublevsky @VEG

C++ Developer, Reverse Engineer

Отправить сообщение
Для этого нужно отладчиком найти где программа ставит для себя эксклюзивный доступ к видеобуферу и отключить эту «фичу». Это всегда происходит гарантированно до перехода игры в полноэкранный режим. Поскольку Age of Empires работает на DirectDraw, я нашел вызов:
DrawDev->SetCooperativeLevel(hWnd, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN);

И заменил его на:
DrawDev->SetCooperativeLevel(hWnd, DDSCL_NORMAL);

После чего игра хоть и с противными графическими артефактами (вся цветовая палитра нарушилась) потеряла эксклюзивный доступ к видеобуферу, и появилась возможность открывать программы поверх этого приложения (отладчик). Думаю, в случае с Direct3D будет очень похоже.
В случае же с Age of Empires я постарался как можно быстрее «прикрутить» оконный режим. Так что теперь можно отлаживать игру вообще без проблем с графикой и т.д.
Поскольку Starcraft очень похож на Age of Empires в техническом плане, сомневаюсь что есть возможность добавить поддержку новых разрешений экрана без перерисовки графики. Хотя добавить оконный режим вполне реально, при этом можно использовать библиотеку wndmode.dll — что-то мне подсказывает, что она справится.
Осталось только сделать LoadLibrary(«wndmode.dll»); в WinMain вашей игры :)
У вас все надписи квадратиками или только на кнопках? И какая локаль стоит в винде? Age of Empires II — это ANSI приложение, для его нужно чтобы в системе стоял русский язык для программ по умолчанию.
Спасибо, исправил.
Если так, то замечательно — я, как обладатель лицензионной копии — могу спать спокойно :)
К сожалению, это так.
На американском сайте heavengames.com когда я опубликовал эту модификацию фанаты сперва обрадовались обновлениям. Потом кто-то восторженно спросил, как же я это сделал, на что я (сглупил) честно ответил, что дизассемблировал, а затем внес правки в сам исполняемый файл. На что мне ответили, что это незаконно, забанили навсегда, и попросили больше этим не заниматься. Такое впечатление что сразу было не ясно, каким образом можно сделать такую модификацию :) Если бы сам не сказал — уверен, до сих пор мог бы свободно выкладывать обновления. Довели дело до абсурда…
Надеюсь, здесь никто не будет беспокоиться о том, что мы занимаемся дизассемблированием игрушки восьмилетней давности :)
Раньше было все намного сложнее. Современные инструменты (я их перечислил в статье) значительно все упрощают. Так что при знании ассемблера достаточно запастись терпением — и много что можно будет сделать.
Несколько энтузиастов уже пыталось разработать OpenGenie, однако, пока что ничего не вышло. Мне же одному проще (и интереснее) модифицировать готовый исполняемый файл для достижения необходимого эффекта.
В любом случае там нет оконного режима, конфигов и т.д. :)
Не за что :) Я буду рад, если найду людей, кому интересно копаться внутри программ. Особенно — в Age of Empires! (это отдельный разговор почему).
Простите, я не указал конкретно о какой версии идет речь. Здесь я говорю о последней версии Age of Empires II: The Conquerors 1.0C. Она требует обязательного наличия в реестре ключа CDPath, который создается при установке игры.
Мастер создания Win32 приложений практически не отличается в VS2005 и VS2008. Если ставить этот мод на VS2005 — по идее все должно работать.
По крайней мере в самом мастере они изменили пару опций по умолчанию, основные изменения касались шаблона создаваемого проекта.
Включить по умолчанию кириллицу было делом пары минут :)
На самом деле существует очень много готового C++ кода, который хотелось бы использовать, но который не рассчитан под Unicode. Приходится выбирать — переписывать то что есть или писать для ANSI…
Не поверишь, я проводником не пользуюсь, а в Total Commandere по F4 вызывается Notepad++ :)
Спасибо за замечание, на самом деле не знал.
Однако, набор этих правил понравится поклонникам сайта nowww.ru :)
Если проследить развитие событий за последние несколько лет — то нет.

Правда, скорость спада будет постоянно уменьшаться, это ясно. Но если падение процента будет продолжаться теми же темпами, то смерть должна быть через год :) Конечно же, этого не будет. Но что-то близкое — я на это надеюсь…
Повторюсь, пускай каждый решит для себя, потому что у каждого есть свои уши, и это значительно более весомый показатель, чем предубеждения.
К слову, при q0 битрейт получается в районе 64-80kbps.
Пожалуй, стоит сделать 2 варианта: где галочка Unicode в мастере по умолчанию включена, и где выключена :) Впрочем, этого можно добиться, добавив одну строчку в файл \VC\VCWizards\AppWiz\Generic\Application\html\1033\AppSettings.htm
Ищем функцию function InitDocument(document) и перед вызовом InitControls(); добавляем:
USE_UNICODE.checked = true;
Это все :) Теперь все проекты по умолчанию будут Unicode.
Там картинка во внешнем файле. Достаточно заменить ее на любую подходящую :)
Например мой друг оформил эту обоину так: kcim.slutsk.net/ (там она index.html), может быть вам понравится его вариант :)
Нечитабелен? Достаточно его правильно отформатировать, и его читабельность ничем не будет уступать XML. Для разных целей служат разные инструменты. Для передачи объектов — JSON.

Информация

В рейтинге
Не участвует
Откуда
Финляндия
Дата рождения
Зарегистрирован
Активность