Glide-обёртки: как играть в Glide-игры без Voodoo

6 августа 2024

Glide — API 3dfx, тонкая обёртка вокруг того, что умел чип Voodoo, и ничего сверх этого. Отсюда его скорость и отсюда же охота, с которой под него писали: результат получался предсказуемым, а ранний Direct3D предсказуемым не был.

Обратная сторона — часть игр той эпохи в режиме Glide выглядит правильно, а в собственном программном или D3D-режиме теряет половину эффектов. Классика — цветное освещение и объёмный туман.

Что делает обёртка

Подменяет glide2x.dll или glide3x.dll своей библиотекой с теми же точками входа. Игра вызывает Glide как обычно, обёртка переводит вызовы в Direct3D, OpenGL или Vulkan. Установка сводится к тому, чтобы положить нужный файл рядом с исполняемым.

ОбёрткаВо что переводитВерсии Glide
nGlideDirect3D / Vulkan2.11, 3.10
dgVoodoo2Direct3D 112.11, 3.10, плюс ранний D3D
OpenGlideOpenGL2.4
Путь вызова от игры через обёртку в Direct3D или OpenGL
Обёртка занимает место оригинальной библиотеки и переводит вызовы дальше.

Что ломается чаще всего

  • Соотношение сторон. Игра рассчитана на 4:3, обёртка по умолчанию растягивает на весь экран. Почти везде отключается.
  • Гамма. Voodoo применял свою коррекцию на выходе; без неё картинка темнее задуманного, и это не ошибка игры.
  • Дизеринг. Voodoo считал в 16 битах с дизерингом и фильтрацией на выходе — получалось лучше честных 16 бит. Обёртка считает в 32, градиенты чище, но «не так».
  • Привязка к частоте кадров. Часть игр без ограничителя ускоряется до неиграбельности.

Когда всё-таки нужно железо

Обёртка даёт высокое разрешение, стабильность и запуск на современной машине — чтобы просто пройти игру, этого достаточно. Но она не воспроизводит дизеринг и фильтрацию выхода Voodoo, а именно они дают тот самый вид, ради которого железо и ищут. Разумный компромисс — обёртка на рабочей машине и одна настоящая плата на отдельной сборке.

Личный сайт. Правки и дополнения приветствуются.