Итак, вам надоели новые игры, и вы решили окунуться в сказочный мир ретро-игр - мир Sony PlayStation, самой лучшей игровой консоли в истории человечества.
Почему именно Playstation? Если говорить о второй самой лучшей игровой консоли из когда-либо выпущенных - Playstation 2, то на ней есть стики, и в этом заключается самая большая проблема. Играть на ней с клавиатуры - это сущий кошмар, а моя нынешняя финансовая ситуация не позволяет мне приобрести нормальный геймпад, с электромагнитными стиками и поддержкой PS3, которая у меня есть, за 4-5 тысяч с алиэкспресса (не спрашивайте, почему; долго объяснять). Поэтому, приходится довольствоваться Playstation 1, у которой имеется цифровой геймпад без стиков, который очень удобно эмулируется с помощью клавиатуры. Помимо этого, на PCSX2 с большим количеством игр всё ещё имеются проблемы, некоторые и вовсе не могут достичь стопроцентной скорости эмуляции - как никак, это консоль шестого поколения со сложной трёхмерной графикой. В случае же с первой Playstation, подавляющее большинство игр на данный момент эмулируются почти идеально.
Почему именно Duckstation? Сайтом emulation.gametechwiki.com он классифицируется, как высокоточный и рекомендуемый эмулятор, наряду с Mednafen. Он обладает рядом преимуществ перед самым старым из существующих эмулятором - ePSXe. ePSXe на сегодняшний день является морально устаревшим: плагины нужно настраивать под каждую игру отдельно. Это эмулятор из того времени, когда эмулировать Playstation было привелегией. Мы же живём в 2024 году, и хотим воспользоваться последними достижениями в сфере разработки программного обеспечения, поэтому наш выбор падёт на Duckstation. Его достаточно настроить один раз - и все игры на нём будут работать, как надо.
Самая большая проблема Duckstation - это качество звука, которое на данный момент уступает Меднафену и даже ePSXe с самым лучшим аудио-плагином. Меднафен классифицируется, как самый высокоточный из ныне существующих эмуляторов Playstation, который по некоторым тестам обходит даже официальные эмуляторы Сони, использующиеся на PS2 и PS3 для обратной совместимости. Тогда встаёт логичный вопрос: почему мы выбрали Duckstation, а не Mednafen? А просто. Конкуренция - это всегда хорошо. В следующий раз, может, напишу обзор на Mednafen.
Duckstation - второй проект программиста под никнеймом Stenzek, его основной проект - PCSX2, эмулятор Playstation 2.
Эмулятор имеется на русском языке. Чтобы его включить, идём в Settings - Language - Русский. Ниже мы пройдёмся по всем разделам настроек эмулятора, чтобы достичь максимально близкой к реальному железу точности эмуляции.
Данное руководство писалось под версию эмулятора от 24 января 2024 года. За то время, пока оно писалось, вышло обновление, которое внесло изменения в расположения настроек - в частности, вкладки Графика и Улучшения были объединены. Но в целом, все пункты настроек остались без изменений.
Вкладка Общие (General)
Запретить заставку (Inhibit Screensaver) - отключить скринсейвер во время игры (привет, Windows 95)
Пауза при запуске (Pause On Start) - эмулятор ставится на паузу при запуске игры
Подтверждать выключение питания (Confirm Power Off) - показывать окно подтверждения при закрытии игры через крестик
Применить игровые настройки (Apply Per-Game Settings) - использовать индивидуальные настройки для каждой игры
Создание резервных копий состояний сохранения (Create Save State Backups) - создавать резервные копии сохранённых состояний игры (сейв-стейтов)
Включить присутствие в Discord (Enable Discord Presence) - отображать текущую игру в Discord (для заднеприводных)
Пауза при потере фокуса (Pause On Focus Loss) - пауза игры при переключении на другое окно
Сохранять состояние при выключении (Save State on Shutdown) - автоматическое сохранение состояния при выходе из игры
Загрузить устройства из сохранённого состояния (Load Devices from Save States) - при сохранении состояния сохраняется не только состояние игры, но и карт памяти и геймпадов (лучше выключить)
Автоматически загружать читы (Automatically Load Cheats) - автоматически загружать читы
Сжатие сохранённых состояний (Compress Save States) - сжимать сохранения состояния
Запускать в полноэкранном режиме (Start Fullscreen) - запускать игры в полном экране (у меня выключено т.к. первым делом я загружаю сохранения)
Отрисовка в отдельном окне (Render to Separate Window) - отображать игру в отдельном от списка игр окне
Отключить изменение размера окна (Disable Window Resizing) - запретить изменять размер окна с игрой
Двойной щелчок переключает полноэкранный режим (Double-Click Toggles Fullscreen) - переход в полный экран по двойному щелчку
Скрыть главное окно во время работы (Hide Main Window When Running) - скрывать окно со списком игр во время игры (не совсем понятно, зачем эта опция нужна)
Скрыть курсор в полноэкранном режиме (Hide Cursor in Fullscreen) - скрывать курсор мыши при игре в полном экране
Канал обновления (Update Channel) - канал обновлений (latest - последние, preview - предварительные, выбираем latest)
Включить автоматическую проверку обновлений (Enable Automatic Update Check) - автоматическая проверка обновлений
Проверить обновления (Check for Updates) - проверить вручную
Вкладка Список игр (Game List)
Каталоги поиска (Search Directories) - директории, в которых будет проводиться поиск наших игр. Следует добавить сюда путь к папке, где мы будем складировать наши игры, чтобы они отображались в списке игр для удобного запуска, чтобы не искать их каждый раз.
Исключённые пути (Excluded Paths) - подпапки в этих директориях, в которых не будет проводится поиск.
Поиск новых игр (Scan for New Games) - найти новые игры в указанных папках
Повторное сканирование всех игр (Rescan All Games) - перепроверить все игры в указанных папках
Вкладка BIOS
Здесь нам необходимо указать папку, где будут лежать файлы BIOS нашей консоли, а также по отдельности файлы BIOS для каждого региона. У меня в папке лежит всего один файл - SCPH1001.BIN, его достаточно для запуска игр из любых регионов. Файлы BIOS искать нужно отдельно, в состав эмулятора они не включены из-за авторского права корпорации Sony, найти файлы в Интернете не должно составить большого труда.
Быстрая загрузка (Fast Boot) - пропустить заставку запуска консоли
Включить ведение журнала TTY (Enable TTY Logging) - включить логгирование данных для отладки
Вкладка Консоль (Console)
Регион (Region) - эмулируемый регион консоли. При авто-определении будет автоматически выбираться подходящий, в зависимости от региона диска.
Включить 8 МБ оперативной памяти (Enable 8 MB RAM) - увеличить объём ОЗУ консоли в 4 раза. Требуется для некоторых самопальных программ и модов к играм; нарушает совместимость с играми, использующими метод "отзеркаливания памяти" (memory mirror).
Режим выполнения (Execution Mode) - метод эмуляции консоли. Насколько мне известно, отличаются они лишь затрачиваемыми ресурсами на эмуляцию. Интерпретатор - более прожорливый, перекомпилятор - менее ресурсозатратный. При игре с компьютера, можно поставить интерпретатор; для игры с мобильного устройства, в целях экономии заряда стоит выбрать перекомпилятор. На момент написания, в разработке также находится новый вид эмуляции - новый перкомпилятор, призванный потреблять ещё меньше ресурсов при мобильной эмуляции.
Enable Clock Speed Control - возможность разгонять/замедлять процессор консоли.
Включить ICache перекомплитяора (Enable Recompiler ICache) - эмуляция необязательных задержек, чтобы больше походить на реальное железо (только для перекомпилятора, на интерпретаторе они присутствуют по умолчанию).
Асинхронное упреждающее чтение (Async Readahead) - количество секторов диска, которые будут загружаться предварительно при чтении диска. (оставляем как есть, 8 секторов)
Ускорение чтения (Read Speedup) - ускорение чтения с диска (оставляем как есть)
Ускорение поиска (Seek Speedup) - ускорение поиска данных на диске (оставляем как есть)
Предварительно загрузить образ в ОЗУ (Preload Image to RAM) - загружать целиком весь образ игры в оперативную память; требуется, если имеются какие-то проблемы при чтении с жёсткого диска.
Применение патчей для образов (Apply Image Patches) - применять патчи к образам игр (не совсем ясно, какие именно)
Включить проверку региона (Enable Region Check) - проверка соответствия региона игры региону консоли при запуске игры
Вкладка Эмуляция (Emulation)
Скорость эмуляции (Emulation Speed) - скорость эмуляции по умолчанию
Перемотка вперёд (Fast Forward Speed) - скорость эмуляции при быстрой перемотке
Ускорение (Turbo Speed) - скорость эмуляции при включении турбо
Синхронизация с частотой обновления хоста (Sync to Host Refresh Rate) - выкл.
Оптимальная частота кадров (Optimal Frame Pacing) - выкл.
Включить перемотку назад (Enable Rewinding) - игра сохраняется через каждое указанное количество секунд (Частота сохранения перемотки назад, Rewind Save Frequency) для быстрой перемотки обратно. Размер буфера перемотки назад (Rewind Buffer Size) - количество сохранений, которое будет храниться в памяти.
Опережение (Runahead) - предварительно эмулировать игру на несколько кадров вперёд для устранения задержки ввода. Появляются звуковые артефакты.
Одна из самых фундаментальных и до сих пор нерешённая проблема эмуляции, актуальная для игровых консолей начиная с 16-битных, и ставшая особенно заметной на 32-битных - это задержка ввода. В пошаговых JRPG, она не так страшна, гонки играбельны поскольку карта трассы у тебя перед глазами, но не могу сказать насчёт файтингов и других игр, где требуется очень быстрый отклик и где задержка ввода может негативно повлиять на игровой процесс. На данный момент единственный способ полного эффективного устранения этой проблемы - игра на FPGA-железе, требующая покупки отдельного устройства. Поскольку ни средствами, ни желанием для этого мы не обладаем, предлагается опция Опережение (Runahead), устраняющая задержку ввода ценой появления заметных звуковых артефактов. Тем не менее, на данный момент я играл в экшен игры Ridge Racer Type 4, Sled Storm, Ace Combat 2, выполнял QTE в Legend of Dragoon, с выключенной функцией Runahead и с присутствующей задержкой ввода, и не испытал особых проблем с их прохождением. Также эта опция прожорлива к ресурсам, поэтому не рекомендуется её использовать на мобильных устройствах.
Вкладка Карты памяти (Memory Cards)
Здесь нужно указать путь к файлам карт памяти, куда будут записываться игровые сохранения. Можно импортировать сохранения из ePSXe (опция Редкатор карт памяти).
Вкладка Отображение (Display)
Отрисовщик (Renderer) - если нашей целью является точность эмуляции, то выбираем Программный без раздумий. Самый высокоточный из аппаратных - OpenGL.
Потоковая отрисовка (Threaded Rendering) - для отрисовки графики используется второй поток процессора. Доступно только для программного отрисовщика.
Вертикальная синхронизация (VSync) - вертикальная синхронизация.
Использовать цепочку обмена Blit (Use Blit Swap Chain) - только для Direct3D 11. Требуется для стриминга, а также для отключения лимита частоты кадров.
Соотношение сторон (Aspect Ratio) - соотношение сторон.
Режим обрезки (Crop) - Только нерабочая область экрана (Only Overscan Area)
Масштабирование (Scaling) - метод апскейлинга. Ставим Билинейный (мягкий) (Bilinear (Smooth))
Расположение (Position) - местоположение изображения игры в случае, если оно занимает не весь экран (слева, справа, по центру).
Снимок экрана внутреннего разрешения (Internal Resolution Screenshots) - делать скриншоты в реальном разрешении игры (640х480), а не окна с игрой (1920х1080).
Отображение на экране (On-Screen Display) - здесь опции, связанные с выводом на экран различных технических данных (загрузка ЦП, ГП, частота кадров в секунду, разрешение экрана, скорость эмуляции и т.д.)
Вкладка Улучшения (Enhancements)
Масштаб внутреннего разрешения (Internal Resolution Scale) - увеличение разрешения игры. Эту опцию я категорически не рекомендую ставить выше 1х, поскольку она относится только к трёхмерным полигонам, а разрешение двухмерных фонов остаётся прежним. В играх со смешанной графикой (2D фоны и трёхмерные персонажи), которых на Playstation полно, персонажи начинают очень сильно выбиваться из фона, и это сильно портит картинку и вредит погружению в мир игры. Персонажи начинают выглядеть, как идеально вылизанные картонные человечки. Играть нужно в том разрешении, под которое разрабатывалась игра и рисовались модели персонажей.
Фильтрация текстур (Texture Filtering) - метод фильтрации текстур. Оставляем Ближайший сосед.
Понижение разрешения (Downsampling) - выкл.
Отображение True Color (True Color Rendering) - улучшает картинку, не работает при выбранной опции Отрисовщик - Программный.
Широкоэкранный хак (Widescreen Hack) - включить поддержку широкоформатного разрешения (работает только в полностью трёхмерных играх, увеличивает поле зрения, не рекомендуется).
Обратные чтения программной отрисовки (Software Rendered Readbacks) - выкл.
Отключить чересстрочную развёртку (Disable Intelacing) - более чёткие 2D-элементы меню в играх. Можно включить.
Принудительная синхронизация NTSC (Force NTSC Timings) - включить 60 кадров в секунду в PAL-играх. В играх, где скорость игры привязана к частоте кадров, это приведёт к увеличению скорости игры на 17%.
Принудительно 4:3 для 24-битного контента (Force 4:3 For 24-Bit Display) - FMV-ролики воспроизводятся в корректном для них соотношении сторон - 4:3 (нужно, если соотношение сторон игры изменено другими настройками).
Сглаживание цветности для 24-битного контента (Chroma Smoothing For 24-Bit Display) - опция призвана уменьшить пикселизацию FMV-роликов, но на деле при сравнении выключенной и включенной опции - разница на уровне погрешности. Не работает при выбранной опции Отрисовщик - Программный.
PGXP - набор опций, призванных решить многие проблемы отрисовки 3D-графики, присущие Playstation, такие, как: Z-буффер, "дышащие стены", и другие. По сути, приближает Playstation по уровню графики к Nintendo 64. Включать эти опции не рекомендую - потому что мы пришли играть в Playstation, а не в N64. Не работает при выбранной опции Отрисовщик - Программный.
Вкладка Постобработка (Post-Processing)
Здесь можно выбрать различные фильтры и шейдеры пост-обработки, которые будут влиять на картинку игры (и даже выстроить их в очередь, чтобы они накладывались друг на друга). Я ими ни разу не пользовался, но популярным выбором является стилизация под ЭЛТ-дисплей, поскольку считается, что именно под них затачивались старые игры. Отмечу, что на позднем этапе производства Playstation была выпущена ревизия консоли с встроенным раскладным ЖК-экранчиком.
Вкладка Звук (Audio)
Движок (Backend) - Cubeb. На XAudio 2 появляются заметные звуковые искажения.
Драйвер (Driver) - winmm. Разница с wasapi есть очень небольшая, в пользу winmm.
Устройство вывода (Output Device) - ну, не знаю, может, можно звук вывести на принтер, или на мышку?
Режим растяжения (Stretch Mode) - Растяжение времени (Time Stretch). Эмуляция происходит не с полным стопроцентным соответствием реальному железу, в плане скорости, поэтому нужен какой-то метод правильно подстраивать воспроизведение звука.
Размер буфера и задержка вывода (Buffer Size и Output Latency) - ставим 50/50. Опять же, поскольку железо эмулируется, имеется определённая задержка перед выводом звука - в данном случае, 100 милисекунд.
Начать дамп при запуске (Start Dumping on Boot) - логи для отладки.
Ниже идёт настройка громкости.
Отключить весь звук (Mute All Sound) - убрать весь звук.
Отключить звук CD (Mute CD Audio) - убрать проигрывание звука с CD.
Вкладка Достижения (Achievments)
Здесь имеется возможность включить достижения в играх. Для этого требуется регистрация на стороннем ресурсе retroachievements.org
Вкладка Папки (Folders)
Где хранятся наш кэш, обложки игр, скриншоты и сохранения состояний.
Вкладка Дополнительные (Advanced)
Сюда заходить не обязательно.
Моя настройка управления
Select - Tab
Start - Пробел
Крестовина вверх - W
Крестовина влево - A
Крестовина вправо - D
Крестовина вниз - S
Треугольник - Numpad 8
Квадрат - Numpad 4
Круг - Numpad 6
Крест - Numpad 2
L1 - Q
R1 - E
L2 - Левый Control
R2 - Левый Alt
Мои горячие клавиши
Esc - меню
F1 - быстрая перемотка
F10 - скриншот
F11 - полный экран
Проверка подлинности образа игры
Выбираем игру из списка, нажимаем по ней правой кнопкой мыши, затем Свойства...
Нажимаем "Вычислить хэши...". Вычисление занимает менее 30 секунд. По завершению, для каждой дорожки в столбце "Состояние" отобразится зелёная галочка или красный крестик. Галочка означает, что хеш имеющейся у нас дорожки полностью соответствует подлинному, имеющемся в базе данных; крестик означает несоответствие. Нужно отметить, что при установке поверх игры фанатских патчей или патчей перевода, которых имеется в немалом количестве на сайте romhacking.net, проверка естественно отобразит несоответствие.
Где брать сами игры? vimm.net