Инструменты пользователя

Инструменты сайта


emulation

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
emulation [2026/10/23 11:44] – geckoemulation [2026/10/23 15:52] (текущий) – gecko
Строка 7: Строка 7:
 Эмулятор состоит из модулей, которые воспроизводят поведение оригинального устройства. В первую очередь это процессор: [[machine_code|машинный код]] целевого процессора переводятся на лету в понятные для хост-системы инструкции (путем интерпретации или [[dynarec|динамической рекомпиляции]]). Особенностью эмулятора является точное воспроизведение аппаратного окружения (оперативной памяти, видеопроцессора, контроллеров, портов ввода/вывода, носителей данных, подключаемых периферийных устройств и т.д.) программными средствами хост-системы. Эмулятор состоит из модулей, которые воспроизводят поведение оригинального устройства. В первую очередь это процессор: [[machine_code|машинный код]] целевого процессора переводятся на лету в понятные для хост-системы инструкции (путем интерпретации или [[dynarec|динамической рекомпиляции]]). Особенностью эмулятора является точное воспроизведение аппаратного окружения (оперативной памяти, видеопроцессора, контроллеров, портов ввода/вывода, носителей данных, подключаемых периферийных устройств и т.д.) программными средствами хост-системы.
  
 +===== Плагины =====
 +
 +Система плагинов в эмуляторах PlayStation - это архитектурный подход, зародившийся в [[PSEmu Pro]], который разделяет функциональность эмулятора на независимые компоненты. Эмулятор выступает в роли оркестратора, а реализация аппаратных частей консоли вынесена во внешние динамические библиотеки:
 +  * [[GPU]]-плагин - отвечает за отрисовку картинки. Позволяет выбирать между программным рендерингом и аппаратным ускорением через Direct3D или OpenGL с улучшением разрешения и фильтрацией текстур;
 +  * [[SPU]]-плагин - отвечает за эмуляцию звукового чипа PS1;
 +  * [[cd_rom|CDR]]-плагин - отвечает за чтение дисков или образов в форматах [[ISO]], [[bin_cue|BIN/CUE]];
 +  * [[PAD]]-плагин - отвечает за эмуляцию геймпадов при помощи компьютерных устройств ввода (клавиатуры, джойстика).
 +
 +Некоторые известные плагины:
 +  * [[http://www.pbernert.com/html/dev.htm|P.E.Op.S. (PSX Emulation Open Source)]] - проект с открытым исходным кодом, запущенный в 2001 году. В рамках P.E.Op.S. были выпущены модули для всех ключевых компонентов эмуляции: программный GPU-плагин P.E.Op.S. Soft GPU, GPU-плагин с аппаратным ускорением P.E.Op.S. OpenGL GPU, звуковой плагин P.E.Op.S. DSound Audio SPU, CDR-плагин P.E.Op.S. CDR. Плагины доступны для операционных систем Windows и Linux.
 +
 +Популярные эмуляторы с системой плагинов:
 +  * [[ePSXe]]: самый известный классический эмулятор, использующий плагины для GPU, SPU и CDR;
 +  * [[PCSX|PCSX-Reloaded]]: лучший свободный эмулятор;
 +  * [[PSEmu Pro]]: первый эмулятор, который ввел эту концепцию.
 +
 +В современной эмуляции классическая система плагинов во многом считается устаревшей и сложной в настройке. Некоторые проекты (DuckStation, PCSX-Redux) отказались от плагинов в пользу монолитной кодовой базы, что избавляет пользователей от проблем совместимости, когда игра работает с одним плагином, но зависает с другим.
 +
 +==== Интерфейс плагинов PSEmu Pro ====
 +
 +Данный интерфейс определен в PSEmu PDK (Plugin Development Kit).
 +
 +Общие функции (должны присутствовать во всех плагинах):
 +
 +<code>
 +PSEgetLibName - возвращает указатель на строку, содержащую имя библиотеки.
 +PSEgetLibType - возвращает тип библиотеки. Это может быть GPU, SPU, CDR или PAD.
 +PSEgetLibVersion - возвращает версию библиотеки.
 +</code>
 +
 +Функции GPU-плагина:
 +
 +<code>
 +GPUinit - инициализирует плагин графического процессора (GPU).
 +GPUshutdown - завершает работу библиотеки.
 +GPUmakeSnapshot - создает снимок экрана.
 +GPUopen - вызывается при запуске игры. В качестве параметра получает дескриптор окна.
 +GPUclose - вызывается при завершении игры.
 +GPUupdateLace - вызывается во время вертикальной синхронизации (V-sync).
 +Может использоваться для предотвращения разрывов изображения (tearing).
 +GPUreadStatus - запросы на чтение.
 +GPUwriteStatus - запросы на запись.
 +GPUreadData - чтение из видеопамяти (VRAM).
 +GPUreadDataMem - чтение блоков данных из видеопамяти (VRAM).
 +GPUwriteData - запись в видеопамять (VRAM).
 +GPUwriteDataMem - запись блоков данных в видеопамять (VRAM).
 +GPUsetMode - устанавливает режим передачи. (устарело)
 +GPUgetMode - возвращает режим передачи. (устарело)
 +GPUdmaChain - прямой доступ к памяти (DMA).
 +GPUconfigure - отображает диалоговое окно настройки.
 +GPUabout - отображает диалоговое окно «О программе».
 +GPUtest - проверяет корректность работы плагина и выводит соответствующее диалоговое окно.
 +GPUdisplayText - отладка (вывод текста).
 +GPUdisplayFlags - флаги.
 +GPUfreeze - приостанавливает эмуляцию.
 +</code>
  
emulation.1792755878.txt.gz · Последнее изменение: — gecko

Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC0 1.0 Universal
CC0 1.0 Universal Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki