3

Я использую Windows 8.1 и запускаю на ней несколько старых игр (они полностью совместимы). Многие из них используют разрешение 800x600 или даже 640x480, но у меня есть дисплей 1920x1080. При масштабировании Windows обеспечивает какое-то сглаживание (алгоритм «Ближайший сосед», я думаю), но оно довольно плохое. Я хочу использовать некоторые продвинутые методы, например, 2xSAI. Если я запускаю что-то в DOS-боксе, я легко могу выбрать алгоритм масштабирования, и я хочу что-то подобное в Windows. Поскольку у меня есть видеокарта AMD (r9 380), я обнаружил некоторые улучшения графики в ее драйвере, включая метод сглаживания. Но это не влияет на старые игры (я полагаю, это потому, что они даже не используют OpenGL или DirectX). Итак, есть ли способ выбрать метод сглаживания с низким разрешением?

UPD. Найден флаг "GPU Scaling" в драйвере AMD. С его помощью можно использовать сглаживание даже в старой 2D игре. Тем не менее, здесь нет выбора алгоритма интерполяции.

Список игр: Dispel (1999), Орда 2: Цитадель (2001), StarCraft: Brood War (1998), Rage of Mages 2: Necromancer (1999), Первобытные войны (2002) и Warlords 3: Darklords Rising (1998).

1 ответ1

2

Обновление 2017+

Поскольку ответ был опубликован, Blizzard полностью переписала рендеринг Starcraft, поэтому описанные методы больше не работают с этой игрой. Теперь в него должен быть встроен апскейлер, а новый "обновленный" пакет текстур HD доступен для покупки через официальный магазин Blizzard.

Я решил оставить текст ниже таким, потому что он может быть полезен для работы со старыми играми с похожими движками, такими как оригинальный Diablo, или для игры со старыми пользовательскими картами, которые работают только с версией v1.16.1.

объяснение

По умолчанию сам монитор выполняет масштабирование. Разные мониторы имеют совершенно разные скейлеры - некоторые довольно хороши, а некоторые - болезненные, но ни один из них не является 2xsai или advmame. Обычно телевизоры с входами VGA масштабируются немного лучше, чем обычные мониторы.

Некоторые люди даже заходят так далеко, что покупают подержанные ЭЛТ-мониторы: они обычно дают лучшую картинку, потому что у них нет фиксированных физических пикселей - их разрешения аналоговые, "сглаживают" соседние пиксели, а старые игры обычно ожидают такого "масштабирования" произойдет.

Включение GPU scaling (если доступно) заставляет видеокарту выполнять масштабирование, используя любой масштабер, реализованный на ее оборудовании. Он не настраивается, но может включать некоторую фильтрацию и, следовательно, выполнять работу лучше, чем ваш монитор.

Поскольку для этого вам нужно как минимум перехватить явные команды изменения разрешения из игры, любое решение проблемы - это своего рода взлом, который является очень сложной задачей, и любой взлом может вызвать проблемы с видео или геймплеем.

Другими словами, вам нужно каким-то образом взломать скейлер между выходом вашей игры и входом GPU.

Некоторые старые игры теперь имеют современные фанатские версии или обертки, которые могут поддерживать скейлеры, но в основном они ограничены эмуляторами (такими как MAME, PCSX, DOSBOX, SCUMMVM). Это потому, что им не нужно взламывать ОС / видеокарту и игру - они в любом случае эмулируют всю видеосистему, поэтому им проще просто применить фильтр к полученному изображению.

Для некоторых игр хаки были разработаны, чтобы показать большую часть игрового мира на экране (без масштабирования) - это не то, о чем вы просите, но, по крайней мере, игры выглядят не так безобразно, как при масштабировании.

Игры выводят свою графику по-разному - некоторые используют Windows API (GDI), некоторые используют видеокарту для визуализации 3D-изображения (Direct 3D, OpenGL), другие же (в основном 2D / псевдо-3D) используют DirectDraw для непосредственного вывода 2D-изображения на видеокарта. Может быть полезно знать, какая ваша игра использует, потому что могут быть разные инструменты или режимы для работы с каждым.

Из того, что я нашел:

  • Кажется, что Primitive wars работают с DirectX/OpenGL
  • Starcraft (before 1.18) , Horde 2 и Warlords 3 вероятно, используют DirectDraw
  • Я не нашел никакой информации о Dispel и Rage of Mages 2 но, судя по ним, я бы тоже догадался о DirectDraw.

К сожалению, насколько я знаю, в любой из перечисленных игр нет хаков, которые поддерживают какие-либо продвинутые скалеры. Starcraft (1.16 и ниже) имеет несколько расширений, перечисленных ниже.

DDHack

Тем не менее, есть программа DDHack или DirectDraw Hack которую вы можете попробовать. Он обеспечивает по крайней мере какой-то масштабирующий эффект для игр DirectDraw. Не так хорошо, как 2xSAI, но лучше, чем ничего. Он работает только с некоторыми играми и может содержать ошибки, даже если он работает, но, вероятно, стоит попробовать.

Это работает так:

  • Скачайте и распакуйте. Есть несколько версий, которые вы можете попробовать: Один, Два, Три
  • Замените файл ddraw.dll в папке с игрой на файл, включенный в загрузку. Если вы не можете найти такой файл, скорее всего, он не будет работать с вашей игрой. Обязательно сделайте резервную копию оригинального файла!
  • Отредактируйте файл ddhack.cfg с помощью простого текстового редактора, такого как блокнот. У него есть список опций, разделенных пробелами. Вероятно, вас интересуют halfnhalf и bilinear параметры - введите один из них в файл и сохраните. Если вы получаете только черный экран при запуске игры, попробуйте также включить опцию altwinpos .
  • Запустите игру. Если это работает, это должно выглядеть, по крайней мере, немного лучше.

DxWnd

Есть еще одна программа, которая теперь может работать с некоторыми типами игр (DirectDraw и Direct3D), но она имеет только билинейный скейлер. Полагаю, еще лучше, чем ничего.

  • Загрузите его здесь, распакуйте и запустите
  • Зайдите в Menu -> Edit -> Add чтобы создать новый игровой профиль.
  • Введите path к игре, которую вы хотите запустить
  • Снимите флажок Run in window если вы хотите запустить игру в полноэкранном режиме
  • Перейдите в Video -> Resolution и установите его на собственное разрешение монитора.
  • Под DirectX -> Filtering выберите Full Bilinear
  • Нажмите Ok , выберите вновь созданный профиль, выберите Menu -> File -> Run чтобы запустить игру
  • Если игра не работает, выберите Menu -> Edit -> Modify и попробуйте настроить другие параметры в ней.
  • Документация для DxWnd здесь

Теоретически, я полагаю, было бы не так сложно реализовать такие скейлеры, как 2xsai, в DxWnd, и исходный код открыт, но это все еще некоторая работа, которую кому-то нужно будет выполнить ...

Starcraft (v1.16 и ниже) взломать

Please read the message on top of this post.

Для этой игры доступны некоторые расширители разрешения (то есть увидеть больше карты, но с оригинальным разрешением):

Те должны иметь основные инструкции включены. Большинство из них требуют обновления StarCraft до последней не ремастированной версии (1.16.1).

Абсолютно Безумный Клудж

Это чистое безумие, но теоретически вы могли бы:

  • заставить вашу видеокарту распознать несуществующий монитор
  • заставьте вашу игру нарисовать картинку на своем экране (которую вы не увидите)
  • получить средство захвата экрана DirectX (например, используемое для потоковой передачи видео на YouTube) для потоковой передачи невидимого экрана
  • открыть видеопоток с помощью видеоплеера на обычном мониторе
  • загрузить FFmpeg libmpcodecs ' hq2x , 2xsai или аналогичные фильтры (если они работают даже в ОС Windows)
  • Разверните окно игрока в полноэкранный режим, а затем нажмите Alt + Tab для вашей реальной игры.

Затем вы бы посмотрели видеоплеер, транслирующий видео из вашей игры с вашего компьютера. Это не будет работать, если игра требует аппаратного курсора мыши, это также будет иметь небольшую задержку.

Я понимаю, что это смешно, и никогда не пробовал. Я совершенно не уверен, что это может сработать. Если так получилось, что есть кто-то, кто на самом деле думает, что этот метод даже стоит попробовать, пожалуйста, прокомментируйте.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .