PCem
PCem | |
---|---|
Разработчик | Sarah Walker |
Разработчики | {{{разработчики}}} |
Последняя версия | v14 (20.04.2018) |
Состояние | В разработке |
Платформы | Windows/Linux |
Список эмулируемых компьютеров | IBM PC |
Лицензия | GNU GPL ver.2 |
pcem-emulator.co.uk |
PCem — это эмулятор персонального компьютера на уровне регистров аппаратного обеспечения. Методы эмуляции: бинарная трансляция и динамическая рекомпиляция. Эмулируются шины ISA, PCI и оборудование с ними связанное. С полным перечнем последнего можно ознакомиться на сайте разработчика или в сопроводительном readme.txt эмулятора. Эмуляция на уровне регистров позволяет прозрачное исполнение программ, написанных для соответствующего железа. Другими словами, патчи и модификации не нужны — все совместимое программное обеспечение (ПО) запускается и работает в оригинальном виде и качестве. Это огромный плюс, а теперь о минусах:
- Настоящее железо часто имеет на борту микропрограмму, (прошивку, биос, ром — названий много) обеспечивающую функционирование железяки. Эмуляция на уровне регистров, как очень близкая к настоящему железу, также требует использования прошивок для соответствующего оборудования. Из-за политики разработчиков PCem прошивки с ним не поставляются, а их обретение перекладывается на плечи пользователей;
- Точная эмуляция железа на регистровом уровне довольно сложна, поскольку производители железяк, драйверов и прочего ПО часто отклонялись от своих же дизайн-документов и, само собой, допускали ошибки. Это приводит к забавным ситуациям, когда реализованный точно по спецификации модуль эмуляции какого-либо железа не работает со своей же прошивкой или использующее его ПО глючит;
- В силу предыдущего пункта, эмуляция железа на регистровом уровне очень ресурсоемкая, особенно с учетом применяемых методов. Из-за этого разработчикам приходится вводить различные хаки и оптимизации, часто жертвуя точностью эмуляции. Данное обстоятельство сильно усложняет жизнь при отлавливании багов и глюков, поскольку не всегда понятно: является ли данный конкретный баг оригинальным поведением соответствующего железа с соответствующей программой или же глюком именно эмулятора.
История разработки
Первая версия эмулятора 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.