PCem

Материал из Old-Games.RU Wiki
Перейти к навигации Перейти к поиску
PCem
PCem-logo-title.png
Разработчик Sarah Walker
Разработчики {{{разработчики}}}
Последняя версия v17 (01.12.2020)
Состояние В разработке
Платформы Windows/Linux
Список эмулируемых компьютеров IBM PC
Лицензия GNU GPL ver.2
pcem-emulator.co.uk

PCem — это эмулятор персонального компьютера на уровне регистров аппаратного обеспечения. Методы эмуляции: бинарная трансляция и динамическая рекомпиляция. Эмулируются шины ISA, PCI и оборудование с ними связанное. С полным перечнем последнего можно ознакомиться на сайте разработчика или в сопроводительном readme.txt эмулятора. Эмуляция на уровне регистров позволяет прозрачное исполнение программ, написанных для соответствующего железа. Другими словами, патчи и модификации не нужны — все совместимое программное обеспечение (ПО) запускается и работает в оригинальном виде и качестве. Это огромный плюс, а теперь о минусах:

  1. Настоящее железо часто имеет на борту микропрограмму, (прошивку, биос, ром — названий много) обеспечивающую функционирование железяки. Эмуляция на уровне регистров, как очень близкая к настоящему железу, также требует использования прошивок для соответствующего оборудования. Из-за политики разработчиков PCem прошивки с ним не поставляются, а их обретение перекладывается на плечи пользователей;
  2. Точная эмуляция железа на регистровом уровне довольно сложна, поскольку производители железяк, драйверов и прочего ПО часто отклонялись от своих же дизайн-документов и, само собой, допускали ошибки. Это приводит к забавным ситуациям, когда реализованный точно по спецификации модуль эмуляции какого-либо железа не работает со своей же прошивкой или использующее его ПО глючит;
  3. В силу предыдущего пункта, эмуляция железа на регистровом уровне очень ресурсоемкая, особенно с учетом применяемых методов. Из-за этого разработчикам приходится вводить различные хаки и оптимизации, часто жертвуя точностью эмуляции. Данное обстоятельство сильно усложняет жизнь при отлавливании багов и глюков, поскольку не всегда понятно: является ли данный конкретный баг оригинальным поведением соответствующего железа с соответствующей программой или же глюком именно эмулятора.

История разработки

Первая версия эмулятора PCem (v0.1) увидела свет 15 августа 2007 года. Тогда он был способен на базовую эмуляцию IBM PC XT с MDA/CGA графикой и дискетами. Главный разработчик проекта PCem уже имел опыт разработки эмуляторов восьмибитных компьютеров, поэтому работа шла быстро. Осенью того же года эмулятор вышел на уровень IBM PC AT с EGA/VGA-графикой, Sound Blaster-звуком и поддержкой жестких дисков. Дальнейшее развитие было не таким быстрым и совершенно не ритмичным, но проект постоянно двигался вперед, обрастая возможностями, перенимая некоторые наработки других эмуляторов (DOSBox, Bochs, QEMU и др.) и повышая достоверность эмуляции.

24 октября 2015 года в PCem v10 появилась поддержка процессоров класса Pentium, шины PCI и соответствующих устройств, в том числе 3dfx Voodoo. С этого момента сообщество PCem стало прирастать ускоренными темпами, а многие пользователи стали всерьез рассматривать PCem в качестве универсального инструмента для запуска старых игр. Обратили внимание на данный проект и сторонние независимые разработчики, многие из которых не только внесли свой вклад в код PCem, но и предложили несколько ответвлений (форков) со своими особенностями.

С тех пор обновления не носят прорывной характер: помимо исправлений, лишь расширяется список эмулируемых устройств и повышается качество эмуляции. Регулярность выхода новых версий составляет, приблизительно, полгода.

Возможности

В настоящее время PCem v14 поддерживает эмуляцию следующих платформ:

  • IBM PC XT и совместимые на базе процессора i8088 или i8086 (IBM PCjr, Tandy и др.);
  • IBM PC AT и совместимые на базе процессора i80286 или аналогов;
  • IBM PS/2 с шиной MCA;
  • IBM PC-совместимые на базе процессора i80386 или аналогов;
  • IBM PC-совместимые на базе процессора i80486 или аналогов;
  • IBM PC-совместимые на базе процессора Pentium или аналогов.

В качестве графического адаптера можно выбирать из целого ряда MDA/CGA/EGA/VGA-совместимых видеокарт с учетом шины, поддерживаемой платформой (ISA, VLB или PCI). Отдельного упоминания заслуживает S3 Virge, для которого реализована поддержка Direct3D и S3D API. В платформы с поддержкой PCI-шины можно дополнительно подключить 3dfx Voodoo/Voodoo2 или даже SLI.

Среди звуковых карт к выбору доступны многочисленные творения Creative (от C/MS до Sound Blaster PCI 128), Gravis Ultrasound, Innovation SSI-2001, Adlib/Adlib Gold или Windows Sound System-кодек. COVOX, Disney Sound Source, Tandy и PC Speaker также поддерживаются.

Виртуальные жесткие диски создаются в виде файлов формата RAW. Поддерживаются контроллеры MFM/ESDI/IDE/SCSI. Что касается работы со сменными носителями, то эмулируются дисководы для дискет 5.25" и 3.5" (формат .img, .ima и .fdi), Iomega Zip Drive и CD-ROM (формат .iso и .cue, или проброс реального привода). Работа с DVD в настоящее время не поддерживается.

Поддерживается эмуляция PS/2 или Serial-мыши, а к виртуальному Game Port можно подключить джойстик хоста, при его наличии.

Наличие эмуляции сетевой карты позволяет объединить в сеть хост и эмулируемый компьютер используя механизмы PCAP или SLiRP.

Связанные проекты

Ссылки

PCem в вопросах и ответах для пользователей для знатоков примеры запуска игр