# PCem

## Download: Windows/Linux

Latest version: v17 Changelog

PCem is licensed under GPL v2.0, see COPYING for more details.

You can submit patches on our forum. Before you do, please note the guidelines for submitting patches.

❗ Note: NO COPYRIGHTED ROM FILES ARE INCLUDED NOR WILL THEY BE. PLEASE DO NOT ASK FOR THEM.

## BSD and Linux supplement (v17)

You will need the following libraries (and their dependencies):

- SDL2
- wxWidgets 3.x
- OpenAL

Open a terminal window, navigate to the PCem directory then enter:

### Linux

    ./configure --enable-release
    make

### BSD

    ./configure --enable-release-build
    gmake

then `./pcem` to run.

The Linux/BSD versions store BIOS ROM images, configuration files, and other data in `~/.pcem`

configure options are :

      --enable-release-build : Generate release build. Recommended for regular use.
      --enable-debug         : Compile with debugging enabled.
      --enable-networking    : Build with networking support.
      --enable-alsa          : Build with support for MIDI output through ALSA. Requires libasound.

The menu is a pop-up menu in the Linux/BSD port. Right-click on the main window when mouse is not captured.

CD-ROM support currently only accesses `/dev/cdrom`. It has not been heavily tested.

## Links

### PCem emulates the following hardware (as of v17):

Hardware | Links
--- | ---
Systems | 8088 8086 286 386 486
Pentium
Super Socket 7
Graphics | Basic Unaccelerated (S)VGA cards 2D accelerated SVGA cards 3D accelerated SVGA cards 3D only cards
Sound | Cards
HDD Controller | Cards
Misc | Cards

### Software Tested (list)

- DOS
- Windows
- Windows NT
- OS/2
- Linux
- Applications
- Games
- Demos
- Emulators

## Systems

### 8088 based

Release | Machine | ROM file needed (within ./roms/ folder)
--- | --- | ---
1981 | IBM PC 8088 at 4.77 MHz 16KB - 640KB RAM (min. 64KB) | ibmpc/pc102782.bin ibmpc/basicc11.f6 ibmpc/basicc11.f8 ibmpc/basicc11.fa ibmpc/basicc11.fc
1983 | Compaq Portable Plus 8088 at 4.77 MHz 128KB - 640KB RAM | compaq_pip/Compaq Portable Plus 100666-001 Rev C.bin
1983 | IBM XT 8088 at 4.77 MHz 64KB - 640KB RAM | ibmxt/5000027.u19 ibmxt/1501512.u18
1983 | Leading Edge Model M 8088 at 7.16 MHz 128KB - 704KB RAM | leadingedge_modelm/Leading Edge - Model M - BIOS ROM - Version 4.71.bin
1984 | IBM PCjr [5] 8088 at 4.77 MHz 64KB - 640KB RAM (min. 128KB) Built-in 16 colour graphics 3 voice sound
Not generally PC compatible.
ibmpcjr/bios.rom
1984 | Tandy 1000 [5] 8088 at 4.77 MHz 128KB - 640KB RAM Built-in 16 colour graphics 3 voice sound | tandy/tandy1t1.020
1985 | NCR PC4i 8088 at 4.77 MHz 256KB - 640KB RAM | ncr_pc4i/NCR_PC4i_BIOSROM_1985.BIN
1986 | DTK Clone XT 8088 at 8/10 MHz 64KB - 640KB RAM | dtk/dtk_erso_2.42_2764.bin
1986 | Phoenix XT clone 8088 at 8/10 MHz 64KB - 640KB RAM | pxxt/000p001.bin
1987 | Tandy 1000HX 8088 at 7.16 MHz 256KB - 640KB RAM Built-in 16 colour graphics 3 voice sound
Has DOS 2.11 in ROM
tandy1000hx/v020000.u12
1987 | Thomson TO16 PC 8088 at 9.54 MHz 512KB - 640KB RAM | to16_pc/TO16_103.bin
1987 | Toshiba T1000 [1] [5] 8088 at 4.77 MHz 512KB - 1024KB RAM CGA on built-in LCD | t1000/t1000.rom t1000/t1000font.rom
1987 | VTech Laser Turbo XT 8088 at 10 MHz 640KB RAM | ltxt/27c64.bin
1987 | Zenith Data SupersPort 8088 at 8 MHz 128KB - 640KB RAM Built-in LCD video is not currently emulated | zdsupers/z184m v3.1d.10d
1988? | ©Anonymous Generic Turbo XT BIOS 8088 at 8+ MHz 64KB - 640KB RAM | genxt/pcxt.rom
1988 | Atari PC3 8088 at 8 MHz 640KB RAM | ataripc3/AWARD_ATARI_PC_BIOS_3.08.BIN
1988 | Juko XT clone | jukopc/000o001.bin
1988 | Schneider Euro PC 8088 at 9.54 MHz 512KB - 640KB RAM | europc/50145 europc/50146
1989 | AMI XT clone 8088 at 8+ MHz 64KB - 640KB RAM | amixt/ami_8088_bios_31jan89.bin
2015 | Xi8088 8088 at 4.77-13.33 MHz 640KB RAM | xi8088/bios-xi8088.bin

### 8086 based

Release | Machine | ROM file needed (within ./roms/ folder)
--- | --- | ---
1984 | Compaq Deskpro 8086 at 8 MHz 128KB - 640KB RAM | deskpro/Compaq - BIOS - Revision J - 106265-002.bin
1984 | Olivetti M24 [5] 8086 at 8 MHz 128KB - 640KB RAM Built-in enhanced CGA (supports 640x400x2) | olivetti_m24/olivetti_m24_version_1.43_low.bin olivetti_m24/olivetti_m24_version_1.43_high.bin
1986 | Amstrad PC1512 [5] 8086 at 8 MHz 512KB - 640KB RAM Enhanced CGA (supports 640x200x16) Custom mouse port | pc1512/40043.v1 pc1512/40044.v2 pc1512/40078.ic127
1987 | Amstrad PC1640 [5] 8086 at 8 MHz 640KB RAM Built-in Paradise EGA Custom mouse port | pc1640/40043.v3 pc1640/40044.v3 pc1640/40100
1987 | Toshiba T1200 [1] [5] 8086 at 9.54 MHz 1MB - 2MB RAM CGA on built-in LCD | t1200/t1200_019e.ic15.bin t1200/t1000font.rom
1988 | Amstrad PPC512/640 [5] 8086 at 8 MHz 512KB - 640KB RAM Built-in CGA w/ plasma display | ppc512/40107.v2 ppc512/40108.v2 ppc512/40109.bin
1988 | Sinclair PC200/Amstrad PC20 [5] 8086 at 8 MHz 512KB - 640KB RAM Built-in CGA (supports TV-out 50hz PAL) | pc200/pc20v2.0 pc200/pc20v2.1 pc200/40109.bin
1988 | VTech Laser XT3 8086 at 10 MHz 512KB - 1152KB RAM | lxt3/27c64d.bin
1989 | Amstrad PC2086 [5] 8086 at 8 MHz 640KB RAM Built-in VGA | pc2086/40179.ic129 pc2086/40180.ic132 pc2086/40186.ic171
1989 | Tandy 1000SL/2 [5] 8086 at 9.54 MHz 512KB - 768KB RAM Built-in 16 colour graphics 4 voice sound | tandy1000sl2/8079047.hu1 tandy1000sl2/8079048.hu2
1990 | Amstrad PC3086 [5] 8086 at 8 MHz 640KB RAM Built-in VGA | pc3086/fc00.bin pc3086/c000.bin
1991 | Amstrad PC5086 8086 at 8 MHz 640KB RAM | pc5086/sys_rom.bin

### 286 based

Release | Machine | ROM file needed (within ./roms/ folder)
--- | --- | ---
1984 | IBM AT 286 at 6 or 8 MHz 256KB - 16MB RAM | ibmat/at111585.0 ibmat/at111585.1
1986 | Compaq Portable II 286 at 8 MHz 256KB - 15MB RAM | compaq_pii/109739-001.rom compaq_pii/109740-001.rom
1986 | IBM XT Model 286 286 at 6 MHz 256KB - 16MB RAM | ibmxt286/BIOS_5162_21APR86_U34_78X7460_27256.BIN ibmxt286/BIOS_5162_21APR86_U35_78X7461_27256.BIN
1986 | Toshiba T3100e [1] [5] 286 at 12 MHz 1MB - 5MB RAM CGA on gas-plasma display | t3100e/t3100e_font.bin t3100e/t3100e.rom
1987 | IBM PS/2 Model 50 [5] 286 at 10 MHz 1MB - 16MB RAM Built-in VGA MCA bus | i8550021/90x7420.zm13 i8550021/90x7423.zm14 i8550021/90x7426.zm16 i8550021/90x7429.zm18
1988 | Bull Micral 45 286 at 12 MHz 1MB - 6MB RAM | bull_micral_45/even.fil bull_micral_45/odd.fil
1988 | Commodore PC30-III 286 at 12 MHz 512KB - 16MB RAM | cmdpc30/commodore pc 30 iii even.bin cmdpc30/commodore pc 30 iii odd.bin
1988 | IBM PS/2 Model 30-286 286 at 10 MHz 1MB - 16MB RAM Built-in VGA MCA bus | ibmps2_m30_286/33f5381a.bin
1989 | Epson PC AX 286 256KB - 16MB RAM | epson_pcax/EVAX epson_pcax/ODAX
1989 | Epson PC AX2e 286 at 12 MHz 256KB - 16MB RAM | epson_pcax2e/EVAX epson_pcax2e/ODAX
1990 | AMI 286 clone 286 at 8+ MHz 512KB - 16MB RAM | ami286/amic206.bin
1990 | Award 286 clone 286 at 8+ MHz 512KB - 16MB RAM | award286/award.bin
1990 | Dell System 200 286 at 12 MHz 640KB - 16MB RAM | dells200/dell0.bin dells200/dell1.bin
1990 | IBM PS/1 Model 2011 [5] 286 at 10 MHz 512KB - 16MB RAM Built-in VGA DOS 4.01 + GUI menu system in ROM | ibmps1/f80000.bin
? | Goldstar GDC-212M 286 at 12 MHz 512KB - 4MB RAM | gdc212m/gdc212m_72h.bin
? | GW-286CT GEAR 286 at 8+ MHz 512KB - 16MB RAM | gw286ct/2ctc001.bin
? | Hyundai Super-286TR 286 at 12 MHz 1MB - 4MB RAM | super286tr/award.bin
? | Samsung SPC-4200P 286 at 12 MHz 512KB - 2MB RAM | spc4200p/u8.01
? | Samsung SPC-4216P 286 at 12 MHz 1MB - 5MB RAM | spc4216p/phoenix.bin or spc4216p/7101.u8 spc4216p/ac64.u10
? | Samsung SPC-4620P 286 at 12 MHz 1MB - 5MB RAM Built-in Korean ATI-28800 | spc4620p/31005h.u8 spc4620p/31005h.u10 spc4620p/svb6120a_font.rom spc4620p/31005h.u8 spc4620p/31005h.u10
? | Tulip AT Compact 286 640KB - 16MB RAM | tulip_tc7/tc7be.bin tulip_tc7/tc7bo.bin

### 386 based

Release | Machine | ROM file needed (within ./roms/ folder)
--- | --- | ---
1987 | IBM PS/2 Model 80 [5] 386DX at 20 MHz 1MB - 12MB RAM Built-in VGA MCA bus | i8580111/15f6637.bin i8580111/15f6639.bin
1988 | ECS 386/32 386DX at 20 MHz 1MB - 16MB RAM | ecs386_32/386_32_even.bin ecs386_32/386_32_odd.bin
1989 | IBM PS/2 Model 70 (type 3) [5] 386DX at 25 MHz 2MB - 16MB RAM Built-in VGA MCA bus | ibmps2_m70_type3/70-a_even.bin ibmps2_m70_type3/70-a_odd.bin
1989 | Compaq Deskpro 386 386DX at 20 MHz 1MB - 15MB RAM | deskpro386/109592-005.u11.bin deskpro386/109591-005.u13.bin
1989 | Epson PC AX3 386SX at 16 MHz 256KB - 16MB RAM | epson_pcax3/EVAX3 epson_pcax3/ODAX3
1989 | IBM PS/2 Model 55SX 386SX at 16 MHz 1MB - 8MB RAM Built-in VGA MCA bus | i8555081/33f8146.zm41 i8555081/33f8145.zm40
1990 | DTK 386SX clone 386SX 512KB - 16MB RAM | dtk386/3cto001.bin
1990 | IBM PS/1 Model 2121 [5] 386SX at 20 MHz 1MB - 16MB RAM Built-in VGA | ibmps1_2121/fc0000.bin
1990 | Samsung SPC-6000A 386DX 1MB - 32 MB RAM | spc6000a/3c80.u27 spc6000a/9f80.u26
1992 | Acermate 386SX/25N [5] 386SX at 25 MHz 2MB - 16MB RAM Built-in Oak SVGA | acer386/acer386.bin acer386/oti067.bin
1992 | Amstrad MegaPC [2] [5] 386SX at 25 MHz 1MB - 16MB RAM Built-in VGA | megapc/41651-bios lo.u18 megapc/211253-bios hi.u19
1992 | Commodore SL386SX-25 [5] 386SX at 25 MHz 1MB - 16MB RAM Built-in AVGA2 | cbm_sl386sx25/f000.bin cbm_sl386sx25/c000.bin
1992 | Packard Bell Legend 300SX 386SX at 16 MHz 1MB - 16MB RAM | pb_l300sx/pb_l300sx.bin
1992 | Samsung SPC-6033P 386SX at 33 MHz 2MB - 12 MB RAM | spc6033p/phoenix.bin spc6033p/svb6120a_font.rom
1994 | AMI 386DX clone 386DX at 40 MHz 1MB - 32MB RAM | ami386dx/opt495sx.ami
1994 | AMI 386SX clone 386SX at 25 MHz 1MB - 16MB RAM | ami386/ami386.bin
1994 | MR 386DX clone This is a generic 386DX clone with an MR BIOS | mr386dx/opt495sx.mr
? | KMX-C-02 386SX 512KB - 16MB RAM | kmxc02/3ctm005.bin

### 486 based

Release | Machine (+ addl. hardware) | CPU(s) Supported | ROM file needed (within ./roms/ folder)
--- | --- | --- | ---
1990 | IBM PS/2 Model 70 (type 4) [3] 2MB - 16MB RAM Built-in VGA MCA bus | 486DX at 25 MHz | ibmps2_m70_type3/70-a_even.bin ibmps2_m70_type3/70-a_odd.bin
1993 | AMI 486 clone 1MB - 32MB RAM | 486 at 16-66 MHz | ami486/ami486.bin
1993 | Elonex PC-425X [5] 1MB - 256MB RAM Built-in Trident TGUI9440CXi | 486SX at 25 MHz | elx_pc425x/elx_pc425x.bin or elx_pc425x/elx_pc425x_bios.bin elx_pc425x/elx_pc425x_vbios.bin
1993 | IBM PS/1 Model 2133 (EMEA 451) 2MB - 64MB RAM Built-in Cirrus Logic GD5426 | 486SX at 25 MHz | ibmps1_2133/PS1_2133_52G2974_ROM.bin
1993 | Packard Bell PB410A [5] 1MB - 64MB RAM Built-in HT-216 video | 486 at 25-120 MHz Am5x86 at 133-160 MHz Cx5x86 at 100-133 MHz Pentium Overdrive at 63-83 MHz | pb410a/PB410A.080337.4ABF.U25.bin
1994 | AMI WinBIOS 486 clone 1MB - 32MB RAM | 486 at 16-66 MHz | win486/ali1429g.amw
1995 | Award SiS 496/497 1MB - 64MB RAM | 486 at 16-120 MHz Am5x86 at 133-160 MHz Cx5x86 at 100-133 MHz Pentium Overdrive at 63-83 MHz | sis496/sis496-1.awa

### Pentium based

Release | Machine (+ addl. hardware) | CPU(s) Supported | ROM file needed (within ./roms/ folder)
--- | --- | --- | ---
1994 | Intel Premiere/PCI (Batman's Revenge) 1MB - 128MB RAM | Pentium at 60-66 MHz Pentium Overdrive at 120-133 MHz | revenge/1009af2_.bi0 revenge/1009af2_.bi1
1995 | Intel Advanced/EV (Endeavor) [4] 1MB - 128MB RAM | Pentium at 75-133 MHz Pentium Overdrive at 125-200 MHz | endeavor/1006cb0_.bi0 endeavor/1006cb0_.bi1
1995 | Intel Advanced/ZP (Zappa) 1MB - 128MB RAM | Pentium at 75-133 MHz Pentium Overdrive at 125-200 MHz | zappa/1006bs0_.bio zappa/1006bs0_.bi1
1995 | Packard Bell PB520R (Robin LC) [5] 1MB - 128MB RAM Built-in Cirrus Logic GD-5434 | Pentium at 60-66 MHz Pentium Overdrive at 120-133 MHz | pb520r/1009bc0r.bio pb520r/1009bc0r.bi1 pb520r/gd5434.bin
1995 | Packard Bell PB570 (Hillary) [5] 1MB - 128MB RAM Built-in Cirrus Logic GD-5430 | Pentium at 75-133 MHz Pentium Overdrive at 125-200 MHz | pb570/1007by0r.bio pb570/1007by0r.bi1 pb570/gd5430.bin
1996 | ASUS P/I-P55TVP4 1MB - 128MB RAM | Pentium at 75-200 MHz Pentium MMX at 166-233 MHz Mobile Pentium MMX at 120-300 MHz Cyrix 6x86 at PR90(80 MHz)-PR200(200 MHz) Cyrix 6x86MX/MII at PR166(133 MHz)-PR400(285 MHz)
IDT WinChip at 75-240 MHz
IDT Winchip 2 at 200-240 MHz
IDT Winchip 2A at 200-233 MHz
AMD K6 at 166-300 MHz
AMD K6-2 (AFR-66) at 233-300 MHz
p55tvp4/tv5i0204.awd
1996 | ASUS P/I-P55T2P4 1MB - 512MB RAM | Pentium at 75-200 MHz Pentium MMX at 166-233 MHz Mobile Pentium MMX at 120-300 MHz Cyrix 6x86 at PR90(80 MHz)-PR200(200 MHz) Cyrix 6x86MX/MII at PR166(133 MHz)-PR400(285 MHz)
IDT WinChip at 75-240 MHz
IDT Winchip 2 at 200-240 MHz
IDT Winchip 2A at 200-233 MHz
AMD K6 at 166-300 MHz
AMD K6-2 (AFR-66) at 233-300 MHz
p55t2p4/0207_j2.bin
1996 | Award 430VX PCI 1MB - 128MB RAM | Pentium at 75-200 MHz Pentium MMX at 166-233 MHz Mobile Pentium MMX at 120-300 MHz Cyrix 6x86 at PR90(80 MHz)-PR200(200 MHz) Cyrix 6x86MX/MII at PR166(133 MHz)-PR400(285 MHz)
IDT WinChip at 75-240 MHz
IDT Winchip 2 at 200-240 MHz
IDT Winchip 2A at 200-233 MHz
AMD K6 at 166-300 MHz
AMD K6-2 (AFR-66) at 233-300 MHz
430vx/55xwuq0e.bin
1996 | Itautec Infoway Multimidia 8MB - 128MB RAM | Pentium at 75-133 MHz Pentium Overdrive at 125-200 MHz | infowaym/1006bs0_.bio infowaym/1006bs0_.bi1
1997 | Epox P55-VA 1MB - 128MB RAM | Pentium at 75-200 MHz Pentium MMX at 166-233 MHz Mobile Pentium MMX at 120-300 MHz Cyrix 6x86 at PR90(80 MHz)-PR200(200 MHz) Cyrix 6x86MX/MII at PR166(133 MHz)-PR400(285 MHz)
IDT WinChip at 75-240 MHz
IDT Winchip 2 at 200-240 MHz
IDT Winchip 2A at 200-233 MHz
AMD K6 at 166-300 MHz
AMD K6-2 (AFR-66) at 233-300 MHz
p55va/va021297.bin

### Super Socket 7 based

Release | Machine (+ addl. hardware) | CPU(s) Supported | ROM file needed (within ./roms/ folder)
--- | --- | --- | ---
1998 | FIC VA-503+ 1MB - 512MB RAM | AMD K6 at 166-300 MHz AMD K6-2 at 233-550 MHz AMD K6-2+ at 450-550 MHz AMD K6-III at 400-450 MHz AMD K6-III+ at 400-500 MHz
Pentium at 75-200 MHz
Pentium MMX at 166-233 MHz
Mobile Pentium MMX at 120-300 MHz
Cyrix 6x86 at PR90(80 MHz)-PR200(200 MHz)
Cyrix 6x86MX/MII at PR166(133 MHz)-PR400(285 MHz)
IDT WinChip at 75-240 MHz
IDT WinChip2 at 200-250 MHz
IDT Winchip 2A at PR200(200 MHz)-PR300(250 MHz)
fic_va503p/je4333.bin

### Socket 8 based

Release | Machine (+ addl. hardware) | CPU(s) Supported | ROM file needed (within ./roms/ folder)
--- | --- | --- | ---
1996 | Intel VS440FX 8MB - 256 MB RAM | Pentium Pro at 150-200 MHz Pentium II Overdrive at 300-333 MHz | vs440fx/1018CS1_.BI1 vs440fx/1018CS1_.BI2 vs440fx/1018CS1_.BI3 vs440fx/1018CS1_.BIO vs440fx/1018CS1_.RCV

### Slot 1 based

Release | Machine (+ addl. hardware) | CPU(s) Supported | ROM file needed (within ./roms/ folder)
--- | --- | --- | ---
1998 | Gigabyte GA-686BX 8MB - 512MB RAM | Pentium II at 233-450 MHz Celeron at 266-533 MHz Cyrix IIIat 500 MHz | ga686bx/6BX.F2a

#### Additional Notes

`[1]` Toshiba Button Mapping: PCem maps [Fn] to `right-Ctrl` and `right-Alt`. The following functions are supported: Key Combo | Function ---|--- Fn + Num Lock | toggle numpad Fn + Home | Internal LCD display Fn + Page Down | Turbo on Fn + Right | Toggle LCD font Fn + End | External CRT display Fn + SysRQ | Toggle window

`[2]` Amstrad MegaPC (386SX): The original machine had a built-in Sega MegaDrive. This is not emulated in PCem.

`[3]` IBM PS/2 Model 70 (type 4) (486DX): PCem's FPU emulation is not bit accurate and can not pass IBM's floating point tests. As a result, this machine will always print 12903 and 162 errors on bootup. These can be ignored - F1 will boot the machine.

`[4]` Intel Advanced/EV (Endeavor) (Pentium): The real board has a Sound Blaster 16 onboard and optionally an S3 Trio64V+. Neither are emulated as onboard devices.

`[5]` Some systems have fixed graphics adapters:
** = Can use external video card.

System | Graphics | Addl. Info | **
--- | --- | --- | ---
Amstrad MegaPC | Paradise 90C11 | A development of the PVGA1 with 512KB VRAM | ✔
Acer 386SX/25N | Oak OTI-067 | Another 512KB SVGA clone | ✔
Amstrad PC1512 | CGA | Has a new mode (640x200x16) | X
Amstrad PC1640 | Paradise EGA |  | ✔
Amstrad PC2086/PC3086 | Paradise PVGA1 | An early SVGA clone with 256KB VRAM | ✔
Amstrad PPC512/640 | CGA/MDA | Outputs to 640x200 plasma display | ✔
Commodore SL386SX-25 | AVGA2 | 256KB - 512KB VRAM | X
Elonex PC-425X | Trident TGUI9400CXi | 512KB VRAM | X
IBM PCjr | CGA | Has various new modes: 160x200 x 16 320x200 x 16 640x200 x 4 | X
IBM PS/1 Model 2011 | Stock VGA | 256KB VRAM | X
IBM PS/1 Model 2121 | Basic (and unknown) SVGA | 256KB VRAM | X
IBM PS/2 machines | Stock VGA | 256KB VRAM | X
Olivetti M24 [6] | CGA | Has double-res text modes + 640x400 mode | X
Packard Bell PB410A | Headland HT-216 |  | ✔
Packard Bell PB520R | Cirrus Logic GD-5434 |  | ✔
Packard Bell PB570 | Cirrus Logic GD-5430 |  | ✔
Sinclair PC200 | CGA | Can output to TV @ 50hz (UK) | ✔
Tandy 1000 | Clone of PCjr video | Widely supported in 80s games | X
Tandy 1000 SL/2 | Improved Tandy 1000 | Has support for 640x200x16 | X
Toshiba T-series | CGA | Outputs to built-in LCD or plasma display | X

`[6]` Olivetti M24 (display): I haven't seen a dump of the font ROM for this yet, so if one is not provided the MDA font will be used - which looks slightly odd as it is 14-line instead of 16-line.

## Graphics Cards

### Basic cards

Hardware | Addl. Info | ROM file needed (within ./roms/ folder)
--- | --- | ---
MDA (1981) | 80x25 monochrome text | (none)
CGA (1981) | 40x25 and 80x25 text 320x200 in 4 colours 620x200 in 2 colours Supports composite output for ~16 colours. | (none)
Hercules (1982) | 80x25 monochrome text 720x348 in monochrome | (none)
Plantronics ColorPlus | An enhanced CGA board with support for 320x200x16 and 640x200x4 | (none)
Wyse WY-700 | A CGA-compatible board with support for a 1280x800 mode | (none)
MDSI Genius | Mono portrait board with support for a 728x1008 mode | 8x12.bin
IBM EGA (1984) | Text up to 80x43 Graphics up to 640x350 in 16 colours | ibm_6277356_ega_card_u44_27128.bin
ATI EGA Wonder 800+ | An enhanced EGA-compatible board with support for up to 800x600 in 16 colours | ATI EGA Wonder 800+ N1.00.BIN
Hercules InColor | An enhanced Hercules with a custom 720x350 16 colour mode | (none)

### Unaccelerated (S)VGA cards

Hardware | Addl. Info | ROM file needed (within ./roms/ folder)
--- | --- | ---
ATI Korean VGA | ATI-28800 based. 512KB VRAM Supports up to 8-bit colour Korean font support | atikorvga.bin ati_ksc5601.rom
ATI VGA Edge-16 | ATI-18800 based 512KB VRAM Supports up to 8-bit colour | vgaedge16.vbi
ATI VGA Charger | ATI-28800 based 512KB VRAM Supports up to 8-bit colour | bios.bin
AVGA2 | Also known as Cirrus Logic GD5402 256KB - 512KB VRAM Supports up to 8-bit colour | avga2vram.vbi
IBM VGA (1987) | 256KB VRAM Text up to 80x50 Graphics up to 320x200 in 256 colours or 640x480 in 16 colours | ibm_vga.bin
Kasan Hangulmadang-16 | ET4000AX based 1MB VRAM Supports up to 8-bit colour Korean font support | et4000_kasan16.bin kasan_ksc5601.rom
OAK OTI-037C | 256KB VRAM Supports up to 8-bit colour | oti037/bios.bin
OAK OTI-067 | 256KB - 512KB VRAM Supports up to 8-bit colour | oti067/bios.bin
Olivetti GO481 (Paradise PVGA1A) | 256KB VRAM Supports up to 8-bit colour | oli_go481_lo.bin oli_go481_hi.bin
Trident 8900D SVGA | 256KB - 1MB VRAM Supports up to 24-bit colour | trident.bin
Trident 9000B SVGA | 512KB VRAM Supports up to 8-bit colour | tvga9000b/BIOS.BIN
Trident TGUI9400CXi | 1MB - 2MB VRAM Supports up to 24-bit colour | 9440.vbi
Trigem Korean VGA | ET4000AX based 1MB VRAM Supports up to 8-bit colour Korean font support | tgkorvga.bin tg_ksc5601.rom
Tseng ET4000AX SVGA | 1MB VRAM Supports up to 8-bit colour | et4000.bin

### 2D Accelerated SVGA cards

Hardware | Addl. Info | ROM file needed (within ./roms/ folder)
--- | --- | ---
ATI Graphics Pro Turbo | Mach64GX based 1MB - 4MB VRAM | mach64gx/bios.bin
ATI Video Xpression | Mach64VT2 based 2MB - 4MB VRAM Has video acceleration | atimach64vt2pci.bin
Cirrus Logic GD-5428 | 1MB - 2MB VRAM | Machspeed_VGA_GUI_2100_VLB.vbi
Cirrus Logic GD-5429 | 1MB - 2MB VRAM | 5429.vbi
Cirrus Logic GD-5430 | 1MB - 2MB VRAM | gd5430/pci.bin
Cirrus Logic GD-5434 [1] | 2MB - 4MB VRAM | gd5434.bin
Diamond Stealth 32 SVGA | ET4000/W32p based 1MB - 2MB VRAM | et4000w32.bin
IBM 1MB SVGA Adapter/A | Cirrus Logic GD5428 based 1 MB VRAM Only supported on PS/2 models | SVGA141.ROM
Number Nine 9FX | S3 Trio64 based 1MB - 2MB VRAM | s3_764.bin
Paradise Bahamas 64 | S3 Vision864 based 1MB - 4MB VRAM | bahamas64.bin
Phoenix S3 Trio32 | S3 Trio32 based 512KB - 2MB VRAM | 86c732p.bin
Phoenix S3 Trio64 | S3 Trio64 based 1MB - 4MB VRAM | 86c764x1.bin
Trident TGUI9440 | 1MB - 2MB VRAM | 9440.vbi

### 3D Accelerated SVGA cards

Hardware | Addl. Info | ROM file needed (within ./roms/ folder)
--- | --- | ---
3DFX Voodoo Banshee (reference) | Voodoo Banshee based 8MB - 16MB VRAM | pci_sg.rom
3DFX Voodoo 3 2000 | Voodoo 3 based 16MB VRAM | voodoo3_2000/2k11sd.rom
3DFX Voodoo 3 3000 | Voodoo 3 based 16MB VRAM | voodoo3_3000/3k12sd.rom
Creative Labs 3D Blaster Banshee | Voodoo Banshee based 16MB VRAM | blasterpci.rom
Diamond Stealth 3D 2000 [2] | S3 ViRGE/325 based 2MB - 4MB VRAM | s3virge.bin
S3 ViRGE/DX [3] | S3 ViRGE/DX based 2MB - 4MB VRAM | 86c375_1.bin

### 3D only cards

Hardware | Addl. Info
--- | ---
3DFX Voodoo Graphics [4] | 3D accelerator. Widely supported in late 90s games.
Obsidian SB50 [5] | Voodoo with 2 TMUs
3DFX Voodoo 2 [6] | Improved Voodoo Graphics Higher clocks 2 TMUs Triangle setup, etc.

#### Additional Notes

`[1]` Cirrus Logic GD-5434: Real chip also supports 1MB configurations, however this is not currently supported in PCem.

`[2]` Diamond Stealth 3D 2000: PCem emulates the ViRGE S3D engine in software. This works with most games I tried, but there may be some issues. The Direct3D drivers for the /325 are fairly poor (often showing as missing triangles), so use of the /DX instead is recommended.

`[3]` S3 ViRGE/DX: The drivers that come with Windows are similar to those for the /325, however better ones do exist (try the 8-21-1997 version). With the correct drivers, many early Direct3D games work okay (if slowly).

`[4]` 3DFX Voodoo Graphics: PCem emulates this in software. The emulation is a lot faster than in v10 (thanks to a new dynamic recompiler) and should be capable of hitting Voodoo 1 performance on most machines when two render threads are used. As before, the emulated CPU is the bottleneck for most games.
PCem can emulate 6 and 8 MB configurations, but defaults to 4 MB for compatibility. It can also emulate the screen filter present on the original card, though this does at present have a noticeable performance hit.
Almost everything I've tried works okay, with a very few exceptions - Screamer 2 and Rally have serious issues.

`[5]` Obsidian SB50: Drivers for this are a bit limited - the official drivers don't support 2 TMUs in Direct3D.

`[6]` 3DFX Voodoo 2: PCem can emulate both 8 and 12 MB configurations. It can also emulate 6 and 10 MB configurations (with 2MB framebuffer memory), which were never sold into the PC market but do exist for arcade systems.

## Sound Cards

Hardware | Notes
--- | ---
PC speaker | The standard beeper on all PCs. Supports samples/RealSound.
Tandy PSG | The Texas Instruments chip in the PCjr and Tandy 1000. Supports 3 voices plus noise. I reused the emulator in B-em for this (slightly modified). PCem emulates the differences between the SN76496 (PCjr and Tandy 1000), and the NCR8496 (currently assigned to the Tandy 1000HX). Maniac Mansion and Zak McKraken will only sound correct on the latter.
Tandy PSSJ | Used on the Tandy 1000SL/2, this clones the NCR8496, adding an addition frequency divider (did any software actually use this?) and an 8-bit DAC.
PS/1 audio card | An SN76496 clone plus an 8-bit DAC. The SN76496 isn't at the same address as PCjr/Tandy, so most software doesn't support it.
Gameblaster | The Creative Labs Gameblaster/Creative Music System, Creative's first sound card introduced in 1987. Has two Philips SAA1099, giving 12 voices of square waves plus 4 noise voices. In stereo!
Adlib | Has a Yamaha YM3812, giving 9 voices of 2 op FM, or 6 voices plus a rhythm section. PCem uses the DOSBox dbopl emulator.
Adlib Gold | OPL3 with YM318Z 12-bit digital section. Possibly some bugs (not a lot of software to test). The surround module is now emulated.
Sound Blaster [1] | See linked note for more details.
Gravis Ultrasound | 32 voice sample playback. Port address is fixed to 240, IRQ and DMA can be changed from the drivers. Emulation is improved significantly over previous versions.
Windows Sound System | 16-bit digital + OPL3. Note that this only emulates WSS itself, and should not be used with drivers from compatible boards with additional components (eg Turtle Beach Monte Carlo)
Aztech Sound Galaxy Pro 16 AB (Washington) | SB compatible + WSS compatible
Innovation SSI-2001 | SID6581. Emulated using resid-fp. Board is fixed to port 280.
Ensoniq AudioPCI (ES1371) Sound Blaster PCI 128 | Basic PCI sound card. Emulates Sound Blaster in software.

### Additional Notes

`[1]` Sound Blaster: Several Sound Blasters are emulated.

- SB v1.0 - The original. Limited to 22khz, and no auto-init DMA (can cause crackles sometimes).
- SB v1.5 - Adds auto-init DMA
- SB v2.0 - Upped to 41khz
- SB Pro v1.0 - Stereo with twin OPL2 chips.
- SB Pro v2.0 - Stereo with OPL 3 chip
- SB 16 - 16 bit stereo
- SB AWE32 - SB 16 + wavetable MIDI. This requires a ROM dump from a real AWE32.

All cards are set to Address 220, IRQ 7 and DMA 1 (and High DMA 5). IRQ and DMA can be changed for the SB16 & AWE32 in the drivers. The relevant SET line for autoexec.bat is `SET BLASTER = A220 I7 D1 Tx` - where Tx is T1 for SB v1.0, T3 for SB v2.0, T4 for SB Pro, and T6 for SB16.

AWE32 requires a ROM dump called `awe32.raw`. AWE-DUMP is a utility which can get a dump from a real card. Most EMU8000 functionality should work, however filters are not correct and reverb/chorus effects are not currently emulated.

## HDD Controller Cards

Int. | Hardware | Notes | ROM file needed (within ./roms/ folder)
--- | --- | --- | ---
MFM | Fixed Disk Adapter (Xebec) | MFM controller originally included in the IBM XT. This controller only supports HD types 0, 2, 13, and 16. | ibm_xebec_62x0822_1985.bin
MFM | DTC 5150X | 8-bit MFM controller. To configure drive types, run `DEBUG.EXE` and enter `g=c800:5`. | dtc_cxd21a.bin
MFM | AT Fixed Disk Adapter | MFM controller originally included in the IBM AT. Supported by all AT-compatible BIOSes. | (none)
ESDI | Western Digital WD1007V-SE1 | 16-bit ESDI controller | 62-000279-061.bin
ESDI | IBM ESDI Fixed Disk Controller | MCA ESDI controller. Only supported on PS/2 models. | 90x8969.bin 90x8970.bin
IDE | Standard IDE | Standard IDE controller. Supported by all AT-compatible BIOSes. Use this if in any doubt! | (none)
IDE | XTIDE | 8-bit IDE controller. The BIOS is available here. v2.0.0 beta 1 is the version I've mostly tested. v2.0.0 beta 3 is known to have some issues. | ide_xt.bin
IDE | XTIDE (AT) | 16-bit IDE controller. | ide_at.bin
IDE | XTIDE (PS/1) | IDE controller for the PS/1 model 2033. For this machine you will need BIOS version v1.1.5. The PS/1 is a bit fussy with XTIDE, and I've found that it works best when the XTIDE configuration has 'Full Operating Mode' disabled. | ide_at_1_1_5.bin
SCSI | Longshine LCS-6821N | 8-bit SCSI controller. | Longshine LCS-6821N - BIOS version 1.04.bin
SCSI | Rancho RT1000B | 8-bit SCSI controller. | Rancho_RT1000_RTBios_version_8.10R.bin
SCSI | Trantor T130B | 8-bit SCSI controller. | trantor_t130b_bios_v2.14.bin
SCSI | IBM SCSI Adapter with Cache | MCA SCSI controller. Only supported on PS/2 models. | 92F2244.U68 92F2245.U69
SCSI | Adaptec AHA-1542C | 16-bit SCSI controller. | adaptec_aha1542c_bios_534201-00.bin
SCSI | BusLogic BT-545S | 16-bit SCSI controller. | BusLogic_BT-545S_U15_27128_5002026-4.50.bin

## Misc Cards

Hardware | Note
--- | ---
Serial mouse | A Microsoft compatible serial mouse on COM1. Compatible drivers are all over the place for this.
M24 mouse | I haven't seen a DOS mouse driver for this yet but the regular scancode mode works as does the Windows 1.x driver.
PC1512 mouse | The PC1512's perculiar quadrature mouse. You need Amstrad's actual driver for this one.
PS/2 mouse | A standard 2 button PS/2 mouse. As with serial, compatible drivers are common.
Microsoft PS/2 Intellimouse | A PS/2 mouse with mouse wheel.
ATAPI CD-ROM | Works with OAKCDROM.SYS, VDD-IDE.SYS, and the internal drivers of every OS I've tried.