враппер dgvoodoo что это
Библиотека dgVoodoo2: помощник в запуске старых игр
Персональный компьютер – одна из лучших платформ по степени поддержки старых проектов. Ни одна консоль не может похвастаться тем количеством игр, что вы можете запустить на своём ПК. Однако не все из них хорошо себя чувствуют на современном железе и операционных системах. И если с играми для DOS уже много лет все более-менее ясно: эмулятор DOSBox в помощь, то для проектов времён ранних версий Windows дела обстоят не так радужно.
Впервые я услышал о проекте dgVoodoo лет десять назад. В ту пору мы с приятелем решили погонять в первый Carmageddon и поиск различных способов запуска игры на тогдашнем компьютере навёл на эту библиотеку. Нужно было заставить работать версию именно для Windows 95, так как DosBOX не поддерживал эмуляцию 3dfx (кстати, сейчас уже есть сборки с такой возможностью), именно она обеспечивала куда как более красочную графику.
dgVoodoo является одним из многих Glide-враперов, которые эмулируют работу популярной в конце 90-ых библиотеки. Разрабатывающая их компания 3dfx была поглощена Nvdida, однако, поддержка данной технологии в современных видеокартах скорее отсутствует. Эта небольшая программа же перехватывала поток команд от игры, заставляла её думать, что она запущена на поддерживаемом оборудование. Возможность полезная, но слегка узкоспециализированная, если учитывать, что игр с поддержкой 3dfx не выходит уже больше 20 лет.
Спустя несколько лет снова вспомнить о dgVoodoo заставила целая череда любимых проектов из 2000-х, которые на новых версиях Windows и железе или не работают, или полны различных графических артефактов. Список проблем достаточно обширен тут и чёрный экран, и пропадающие элементы интерфейса, и странная цветовая палитра. Многие поклоннике старых игр наверняка сталкивались с подобными трудностями.
Причина артефактов, как правило, в том, что те игры были написано под старые версии графических библиотек DirectX, чья поддержка на современном оборудовании и операционных системах также далека от идеала. Если попробовать запустить оригинальные версии Космических рейнджеров или вторых Дальнобойщиков, то насладиться ими в полной мере вряд ли получится, но для популярных проектов, как правило, легко можно найти небольшой фанатский патч, который решает все проблемы.
Если же игра не имеет культового статуса, то исправление найти не так просто. Например, совсем недавно у меня возникла сложности в Tropico 2: Pirate Cove. Она нормально запускалась, прекрасно работала, пока я не пытался нажать Alt-Tab. Казалось бы, мелочь, но, когда вдруг всё оформление ломалось после попытки прочитать сообщения в каком-нибудь Discord, – это раздражало. Режимы совместимости и прочие танцы не помогали, тогда поиск привёл к схожей проблеме в совершенно другой игре, однако, решение оказалось достаточно универсальный.
dgVoodoo2 включает себе библиотеки, который переводят команды от игры к старым версиям DirectX, для которых они писались, на более понятный язык современных версий, что куда как лучше поддерживаются операционной системой и оборудованием. Для работы нам потребуется скачать архив с последними версиями программы с официального сайта.
Внутри содержится библиотеки для упомянутой в самом начале Glide (подпапка 3dfx) и DirectX (подпапка MS соответственно), а также контрольная панель «dgVoodooCpl.exe», которая позволит настроить их работу: установить фильтрацию, разрешение и отключить ватермарку в углу экрана. Всё что требуется от пользователя это поместить нужные нам файлы dll в директорию с установленной игрой. При выборе разрядности нужно ориентироваться на версию игры: если она написана для DirectX с 2 по 8 версию это x86, тогда как игра для DirectX9 (D3D9.dll) могла уже быть и 64-разрядной.
Как бы фантастически это не звучало, но после этого игру можно запускать обычными методами. В моём случае Tropico 2 стала абсолютно спокойно относится к сворачиванию окон, но данный метод помогает решить многие проблемы и в других игр. От платформеров про Гаррии Поттера до классических стратегий от Westwood. Единственный минус, с которым мне довелось столкнуться после данных манипуляций это неработающая функция PrtScn, которая будто считает экран с игрой абсолютно прозрачным. В тоже время снятие скриншотов в Steam работает без каких-либо нареканий, так что к критичным багам это отнести нельзя.
Руководство по Glide-эмуляторам
Многие олдгеймеры не раз, наверное, сталкивались с играми, которым для работы требуется 3dfx-ускоритель. Многие также знают, что существует множество эмуляторов данного устройства. Но не все знают, с какой стороны к ним подступиться: сложности настройки и подбора оптимального эмулятора могут отпугнуть неискушённого пользователя. Данная статья ставит своей целью исправить эту ситуацию.
Содержание
История вопроса
Для любознательных. Остальные могут перейти к последнему абзацу
В наше время понятия «видеокарта» и «3D-ускоритель» являются неразделимыми. Даже самая слабая офисная машинка или ноутбук позволяют сносно поиграть в какую-нибудь трёхмерную стрелялку, хотя, конечно, и не из новых. Но так было не всегда. Ещё в 1997 году продвинутой считалась видеокарта с объёмом памяти 2 мегабайта и с зачаточной аппаратной поддержкой воспроизведения видео. Ни о каких 3D-функциях тогда и речи не шло, результаты чего сейчас можно лицезреть в играх того времени — несглаженные текстуры, 8-битная палитра и отсутствие световых эффектов. Конечно, не всё было так печально, но более качественную картинку в реальном времени на тогдашних процессорах создать было очень сложно.
И тут появился он — 3dfx Voodoo. Конечно, были и другие, но по соотношению цена/качество (да и просто качество) сравниться с Voodoo не мог никто. Конечно, сейчас технические параметры карточки способны вызвать разве что улыбку, но по тем временам это был прорыв — 2 мегабайта экранной памяти, 2 или 4 мегабайта текстурной памяти, 16-битный цвет, сглаживание текстур, эффекты освещения, туман, полупрозрачные текстуры. За 200 долларов (кстати, как средняя видеокарта сейчас) этого было более чем достаточно. Voodoo быстро стал самым популярным 3D-ускорителем.
Тогда-то фирма 3dfx Interactive и стала первопроходцем 3D. Хотя уже в то время существовали оба основных 3D API — Direct3D и OpenGL, фирма создала свой стандарт, названный Glide, который фактически был обрезанным OpenGL. Впрочем, драйверами поддерживался и Direct3D, а позже и игровой (по-прежнему неполный, но играм полный и не требовался) OpenGL 1.1. Производители игр в большинстве своём выбрали Glide по причине того, что остальные ускорители и видеокарты с 3D того времени были далеко позади, ускоритель с полным OpenGL стоил 1000$, а удобство написания под D3D на тот момент было никакое.
Затем появился Voodoo2, который ещё больше укрепил позиции 3dfx, за ним Voodoo3. А дальше случилось то, что случилось, — подтянулись конкуренты, а у 3Dfx начались проблемы с кадрами и заводами, были выпущены не слишком-то успешные Voodoo4 и Voodoo5, и после этого фирма 3dfx Interactive обанкротилась и прекратила своё существование (точнее, была куплена NVIDIA). Выпуск ускорителей Voodoo прекратился, драйверов, естественно, тоже. И вот в результате всего вышеизложенного мы имеем кучу игр, в которые теперь просто так не поиграешь. Хотя, с другой стороны, есть и игры, которые написаны под старые версии D3D и не работают на современном железе никак, но имеют впридачу 3Dfx-версию, в которую вполне можно сыграть с эмулятором 3Dfx.
Из этой ситуации есть два выхода. Первый — воспользоваться настоящей старой Voodoo. Однако, помимо плюсов (игра будет работать так, как и должна работать), здесь есть множество минусов: не говоря о том, что карточку надо сначала найти, имеются более существенные препятствия — с современным железом она может и не заработать; в ноутбук её поставить, естественно, не удастся; да и, в конце концов, не каждый захочет заморачиваться с поиском/приобретением/установкой/настройкой старой железки для того лишь, чтобы поиграть в одну, пусть и любимую, игру. Но если трудности вас не пугают — соответствующая тема на нашем форуме вам в помощь: FAQ по использованию Voodoo 1/2. Второй выход — воспользоваться эмулятором, точнее, одним из эмуляторов. С чем мы в данной статье и попытаемся разобраться.
Как это работает
Для ленивых — кратко в последнем абзаце
На самом деле наличие карты 3dfx Voodoo для игр, использующих Glide, необязательно. Для игры необходимо наличие Glide-драйвера: для Windows — один из файлов
Кратко: если игра отказывается запускаться и требует что-либо из glide*.dll или glide*.ovl — ей нужен 3dfx Voodoo. Мы же подстановкой требуемого файла из комплекта эмулятора заставим её считать, что Voodoo у нас есть.
Выбираем и используем
Zeckensack’s Glide Wrapper
Под таким немудрёным названием скрывается один из лучших, если не лучший, эмулятор.
Особенности:
Для вывода графики использует OpenGL.
Установка и настройка
Установка
Сама установка не представляет особой сложности — просто запускаем файл GlideWrapper084c.exe и нажимаем кнопку Next, пока процесс установки не будет завершён. Выбранные компоненты и папку назначения лучше оставить по умолчанию. Сложности могут возникнуть с использованием. Поэтому следует знать следующее: в отличие от других эмуляторов, помещающих библиотеки Glide в папку с игрой, Glide Wrapper устанавливает их в папку Windows (как правило, C:\WINDOWS). Вследствие чего могут возникнуть две нештатных ситуации:
1) если в папке игры остались Glide-библиотеки (файлы Glide2x.dll или Glide3x.dll) — к примеру, от другого эмулятора или просто по недосмотру, то игра будет использовать именно их, а те, что от Glide Wrapper, — проигнорирует. Так что если вы хотите запустить игру именно через Glide Wrapper, для начала следует обязательно посмотреть — нет ли в папке игры (точнее, в папке с исполняемым файлом игры) файлов GLIDE2X.DLL или GLIDE3X.DLL, и, если таковые обнаружатся, смело их удалить.
2) при запуске конфигуратора выдаётся окно следующего вида:
Это означает, что в системе уже установлены какие-либо драйверы 3dfx. Их следует удалить тем же способом, которым они были установлены, — т.е. либо деинсталляцией, либо простым удалением файлов C:\WINDOWS\System32\Glide2x.dll и C:\WINDOWS\System32\Glide3x.dll.
Теперь перейдём к настройке.
Настройка
Программа настройки Glide Wrapper вызывается через меню “Пуск”, далее “Программы”→“Glide Wrapper”→“Configurator”.
( 1 ) Profile selection — выбор профиля. Для любой игры в Glide Wrapper создаётся свой профиль, в котором можно изменять отдельно взятые настройки.
( 2 ) Profile settings — управление профилями. Здесь можно: поменять название профиля; сохранить профиль с новым названием (кнопка “Update profile”); удалить профиль (кнопка “Delete profile”).
( 3 ) Resolution limit — ограничение разрешения. До какого разрешения допустимо увеличивать реальное разрешение при включении пункта Try High Res в опции Resolution, обычно принимается удвоение, а не только произвольное разрешение, так что имеет смысл ставить лимит монитора или наболее удобное разрешение.
( 4 ) Texture memory (память текстур) — на Voodoo1 объём текстурной памяти составлял 2, реже 4 мегабайта; на Voodoo2 он был увеличен до четырёх либо восьми мегабайт (в зависимости от модели). Некоторые совсем старые игры могут не работать при объёме памяти более 4-х (или даже 2-х) мегабайт. Кроме того, некоторые игры при слишком большом объёме памяти могут работать медленнее. Проблемы исправляются изменением данного значения.
( 5 ) Resolution (разрешение) — оверрайд разрешения. Можно выбрать “By app” (разрешение выбирается игрой) и “Try high res” (использовать высокое разрешение). Например, если в игре используется разрешение 640×480, то после включения данной опции она, скорее всего, заработает в разрешении 1280×960. Нужно для повышения разрешения, ибо V1/V2 не поддерживали больше чем 640×480(V1)/800×600(V2)/1024×768(2xV2 SLI)
( 6 ) Refresh rate (частота обновления) — частота обновления экрана. Для некоторых игр может потребоваться её снижение.
( 7 ) Vertical sync (вертикальная синхронизация) — синхронизация вывода изображения с частотой обновления экрана. Считайте, что должно быть включено всегда, иначе могут быть проблемы со скоростью игры и со рваной картинкой на LCD.
( 8 ) Mipmapping — оверрайд фильтрации. В общем случае: если текстуры на удалённых объектах выглядят как набор пикселей, попробуйте поэкспериментировать с данной опцией, если работает без проблем — используйте наилучший метод Trilinear. Подробнее о типах фильтрации читайте в википедии.
( 9 ) LOD bias — дистанция между уровнями mip-mapping’a. Также подбирается опытным путём. Отрицательное значение даёт удаление размытых дальних зон следующего вниз уровня детализации всё дальше и дальше, но может привести к артефактам.
( 10 ) Anisotropy (анизотропия) — всем известная анизотропная фильтрация. Можно смело ставить максимальное значение, учитывая при этом, однако, что на старых видеокартах это может серьёзно сказаться на производительности. Следует отметить, что эта настройка не эквивалентна настройке в панели управления видеокартой — в Glide Wrapper для некоторых типов текстур (используемых для спецэффектов) она не применяется, чтобы не ухудшать качество картинки.
( 11 ) Gamma (гамма-коррекция) — в глобальных настройках лучше оставить по умолчанию и при необходимости изменять для отдельных игр. Галочка “Lock” запрещает изменение гаммы непосредственно из самой игры.
( 12 ) Limit feature set (эмулируемые функции) — доступны следующие варианты:
Можно смело ставить “Most fancy shaders”, за одним исключением — видеокарты серии Geforce FX, которые формально имеют необходимые возможности, но на практике падение скорости столь значительно (особенно в высоких разрешениях), что теряется всякий смысл. Для них лучше оставить “Simple shaders” в играх, где нет мест, приведённых выше.
Следующие настройки предназначены для опытных пользователей и в нормальных условиях изменяться не должны. Для тех же игр, которым это необходимо, необходимые изменения уже внесены в профили. Любознательные личности могут найти подробное описание (на английском) в документации, идущей с эмулятором.
( 13 ) Render to — как пишет автор: «никогда, никогда, никогда не трогайте эту опцию, если вы не знаете, что делаете». Очевидно, лучше так и поступить. Имеет смысл менять при потере фокуса игрой и вечном переключении окон при попытке нажать кнопку или сделать щелчок мышью.
( 14 ) Thread policy — использование потоков для рендеринга. Автор эмулятора строго рекомендует оставить “Classic”, и лучше последовать его совету. На многоядерных процессорах можно получить небольшое увеличение производительности, выбрав “Use render thread”, с другой стороны, на подобных системах скорость и так достаточно высока.
Если вас смутило обилие настроек, не стоит расстраиваться: большинство из них никогда не придётся трогать, особенно с учётом того, что для многих игр уже есть готовые профили. В абсолютном большинстве случаев здесь действует принцип — «запустил и играй».
dgVoodoo
Второй претендент на звание лучшего эмулятора. Особенности:
Установка и настройка
Установка
Хотя существует возможность установки dgVoodoo для всех приложений в системе, делать это крайне не рекомендуется — как минимум, из-за невозможности индивидуальной настройки для отдельных игр. Поэтому предпочтительный способ такой: просто распаковываем архив с эмулятором в папку с выбранной игрой, с последующей настройкой данной копии эмулятора под данную конкретную игру. Обратите внимание: распаковывать надо именно в ту папку, в которой находится исполняемый файл игры. В большинстве случаев это корневая папка игры, но бывают и исключения.
Настройка — общие настройки
После того, как эмулятор распакован в нужную папку, запускаем настройщик — файл dgVoodooSetup.exe. Появляется окно с основными настройками:
Окно основных настроек
Рассмотрим их подробнее.
( 1 ) Platform — платформа. Если эмулятор используется с Windows-игрой — выбираем Windows; если с DOS-игрой — соответственно, DOS.
( 2 ) Language/Nyelv — язык интерфейса. Выбор невелик: либо английский, либо. венгерский. Очевидно, следует оставить английский и забыть.
( 3 ) Settings are valid for instance of dgVoodoo — выбор эмулируемой библиотеки Glide, к которой будут применяться настройки. Абсолютное большинство игр использует Glide2x.dll, но некоторые (например, Pandemonium) используют Glide.dll, в таком случае следует выбрать именно её в папке с игрой. То есть, копий glide*.dll эмулятора может быть много (в том числе глобальная, в пути, который включён в PATH), а настройки выбираются исходя из пути, по которому лежит *.dll, и для каждого пути свои.
( 4 ) Display device — для систем с несколькими видеокартами/мониторами: выбор видеоадаптера. Скорее всего, вам это не понадобится.
( 5 ) Display driver — выбор рендера (уровень — максимум Direct3D 8, на деле 7), имеет смысл только для старых карт без TnL (если вылетает) и для тестов на эталоне в режиме RGB Emulation (софтовый рендер).
( 6 ) Screen mode — режим экрана. Можно выбирать между Full screen (полноэкранный) и Windowed mode (оконный, если хочется играть в окне). Здесь надо заметить, что в оконном режиме мне удалось запустить только DOS-игры.
( 7 ) Screen bit depth (full screen only) — глубина цвета (настройка действительна только для полноэкранного режима). 32 бита смотрится немного лучше, но есть риск серьёзного падения скорости. В общем, здесь лучший вариант — попробовать.
( 8 ) Screen shots — снятие скриншотов. Если галочка Enable screen shots активна, появляется возможность снятия скриншотов. Можно выбрать место сохранения:
Снятие скриншотов делается клавишей ‘Pause’ (исключение — DOS-приложения в среде Windows 9x, для них используется клавиша ‘Scroll Lock’).
Настройки, специфичные только для DOS-приложений
( 9 ) WinXP options for DOS (только в Windows XP):
Настройка — эмуляция Glide
Перейдём к настройкам эмуляции Glide, как таковой. Все они располагаются на вкладке Glide в том же окне:
Окно настроек Glide
( 1 ) Direct3D textures bit depth — глубина цвета текстур. Лучше не трогать и оставить Optimal.
( 2 ) Refresh rate — частота обновления экрана. Рассмотрим данную настройку поподробнее:
( 3 ) Texturing options — настройки текстурирования. Включают в себя следующие пункты:
( 4 ) LFB access — доступ к кадровому буферу (Более подробную информацию можно найти в документации к dgVoodoo):
( 5 ) Colorkeying method — способ отображения прозрачных и chroma keyed текстур, таких, как листва деревьев, всевозможные решётки и т.д., а также спрайтовые объекты. В большинстве случаев нормально работает Automatic; при возникновении на подобных текстурах искажений (как правило, чёрное окаймление) подходящий вариант подбирается опытным путём.
( 6 ) Texture mem size — размер текстурной памяти. Для большинства игр подходит размер по умолчанию (8192 кбайт), однако некоторые игры могут закапризничать и вообще отказаться с ним работать. В таком случае следует попробовать значения 4096 или 2048.
( 7 ) Resolution — разрешение. Есть следующие варианты:
( 8 ) Gamma correction — коррекция гаммы. Думается, с этим термином знакомы все геймеры. Но если кто-то всё же не знаком — данная настройка изменяет яркость изображения (что для некоторых Glide-игр может оказаться необходимым).
( 9 ) Monitor freq — кадровая частота монитора. Можно выбрать из списка поддерживаемых; настройка активна, только если отключена опция Monitor freq is the closest supported freq (см. выше, пункт (2)).
( 10 ) Miscellaneous — разное. Здесь собраны следующие настройки (как правило, их менять не возникает необходимости):
Итог: при первом взгляде обилие настроек может не просто смутить, а ошарашить. Но на самом деле, такое их количество связано с незавершённым статусом эмулятора и, соответственно, необходимостью что-то подкручивать то здесь, то там. Если же не гнаться за точностью эмуляции, для абсолютного большинства игр настраивать что-либо вообще не надо — можно запускать сразу после установки эмулятора. А самой используемой настройкой, как правило, является Resolution (разрешение) — всё-таки не всегда комфортно играть в 640×480.
Downloads
You need the 3Dfx splash dlls for Glide if you want 3Dfx splash screen or watermark (shameless plug) through dgVoodoo.
3DfxSplashDlls.zipВ
You may also need D3DRM.dll (Direct3D Retained mode) for some games and demos.
It’s not part of the OS since Windows Vista.
D3DRM.zipВ
You may also need the external D3D compiler dll for Glide if you are not on Windows 10 and using a dgVoodoo version earlier than 2.73
D3DCompiler_47
Latest stable version
Incremental patch version:
Older versions
Incremental patch version:
ATI TruForm support, specialized vs FF shaders, bugfixes:
An incremental patch version with some bugfixings and optimizations:
Bugfixings, optimizations, ARM64 builds (re-released!):
A patch version for 2.74 with some fixes:
Bugfixings, optimizations and some new options:
Own shader code generator for Glide and various bugfixings:
Incremental update to 2.71.3:
Incremental update to 2.71.2:
Minor incremental update to 2.71_1:
Minor incremental update to 2.7:
D3D12 support added, improved fast videomemory access:
Incremental update to 2.63.2:
Incremental update to 2.63.1:
Incremental update to 2.63:
New algorithm/resampling filters for image output:
Incremental update to 2.62.2:
Incremental update to 2.62.1:
Incremental update to 2.62:
First version of D3D9, internal shader code generator and a lot of bugfixings:
Special release with debug layer, new features and a lot of fixes:
A lot of fixes, new features:
Dynamic resolutions, GeForce4-style shadow buffering and lot of bugfixings:
New output API’s, resolution overriding for DirectX implementation, improved DirectShow compatibility, and bugfixings:
Lot of DX8 bugfixings, DX/Glide bugfixings, some new features:
First version of D3D8 implementation is added, dynamic shader compiling for all components for much better performance, and a lot of bugfixings:
Refactored code for DirectX for multidevice support and other planned features, DXTC compression support is added, other missing things are implemented and various fixes:
Support for compressed textures is added, some other development and bugfixings:
Various bugfixings again:
Direct3D 3 support is added and a lot of bugs/incompatibilites are fixed:
First version of DirectX 5, 6 and 7 support is added and a few Glide bugs are fixed:
A few things missing are included:
First version of DirectDraw emulation added, minor bugfixing:
Napalm build added, some bugfixings:
Some new developments, optimizations and bugfixings:
Fix for Gulikoza’s new Glide patch + bugfixing and other:
Some new fixings and additions:
Some new fixings and optimizations:
After all I bought a low-end ATI card to see what is on that side. Unfortunately a thing needed to be fixed because of ATI drivers.
I have done some postprocess work and fixings:
Here is the first fastfix for 2.0: