Code Monkey home page Code Monkey logo

pcem's Introduction

Test Debug Builds Test Release Builds

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 buildtools (and their dependencies):

  • SDL2
  • wxWidgets 3.x
  • OpenAL
  • CMake
  • Ninja (Recommended, but you can use a Makefile generator if you prefer)

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

Linux/BSD

cmake -G "Ninja" -DCMAKE_BUILD_TYPE=Release .
ninja

Windows (MSYS2)

cmake -G "Ninja" -DMSYS=TRUE -DCMAKE_BUILD_TYPE=Release .
ninja

then ./src/pcem to run.

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

You can specify the Display Engine using -DPCEM_DISPLAY_ENGINE= The options you have are wxWidgets, and Qt configure options are :

  -DCMAKE_BUILD_TYPE=Release : Generate release build. Recommended for regular use.
  -DCMAKE_BUILD_TYPE=Debug   : Compile with debugging enabled.
  -DUSE_NETWORKING=ON        : Build with networking support.
  -DUSE_PCAP_NETWORKING=ON   : Build with pcap networking support. (Needs USE_NETWORKING to compile) Requires libpcap.
  -DUSE_ALSA=OFF             : Build with support for MIDI output through ALSA. Requires libasound. (Linux Only)
  -DFORCE_X11=ON             : Enables a hack to force X11 on Wayland systems. See #128 for details. (Linux Only)
  -DPLUGIN_ENGINE=OFF        : Build with plugin support. Builds libpcem-plugin-api and links PCem with it. 

If you are using -DCMAKE_BUILD_TYPE=Debug, there are some more debug options you can enable if needed

  -DPCEM_SLIRP_DEBUG=ON           : Build PCem with SLIRP_DEBUG debug output
  -DPCEM_RECOMPILER_DEBUG=ON      : Build PCem with RECOMPILER_DEBUG debug output
  -DPCEM_NE2000_DEBUG=ON          : Build PCem with NE2000_DEBUG debug output
  -DPCEM_EMU8K_DEBUG_REGISTERS=ON : Build PCem with EMU8K_DEBUG_REGISTERS debug output
  -DPCEM_SB_DSP_RECORD_DEBUG=ON   : Build PCem with SB_DSP_RECORD_DEBUG debug output
  -DPCEM_MACH64_DEBUG=ON          : Build PCem with MACH64_DEBUG debug output
  -DPCEM_DEBUG_EXTRA=ON           : Build PCem with DEBUG_EXTRA debug output

If you are using -DCMAKE_BUILD_TYPE=RelWithDebInfo, there are additional options you can do

  -DPCEM_RELDEB_AS_RELEASE=ON     : Builds RelWithDebInfo with debugging logging enabled when this is off

They are some extra modules you can add if you build with -DUSE_EXPERIMENTAL=ON. These modules are untested. incomplete, and may or may not be in a future build of PCem. We do not provide builds with these enabled as well. It is also possible they may not even build.

  -DUSE_EXPERIMENTAL_PGC=ON       : Build PCem with Professional Graphics Controller support.
  -DUSE_EXPERIMENTAL_PRINTER=ON   : Build PCem with Printer support. Requires freetype.

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

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 Commodore PC10
8088 at 4.77 MHz
640KB RAM CGA/Monochrome
cbm_pc10/cbm-pc10c-bios-v4.41-318085-08.bin
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 Hyundai Super 16T
8088/8087 at 4.77/8.0 MHz
640KB RAM
EGA 16 colour graphics
super16t/hyundai-super-16t-system-bios-hea-v1.12ta.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
1989 Hyundai Super 16TE
8088/8087 at 10 MHz
640KB RAM
EGA 16 colour graphics
super16te/hyundai-super-16te-system-bios-v2.00id.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.

pcem's People

Contributors

conikost avatar davide125 avatar driver1998 avatar frenzie avatar greatpsycho avatar jmajeremy avatar josepmajaz avatar jviskari avatar kouta-kun avatar leilei- avatar lynxluna avatar maddthesane avatar marekknapek avatar michael-manley avatar pcem-maintainer avatar pghvlaans avatar ruben-balea avatar sarah-walker-pcem avatar sarahwalkerstardot avatar teepean avatar tomoshibiakira avatar unreal9010 avatar valpackett avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pcem's Issues

PCI sound cards do not work under Linux

I tried to use the following two sound cards with Debain 11 Linux installed on my PC, but failed:

  • Ensoniq AudioPCI (ES1371)
  • Sound Blaster PCI 128
    Both sound cards are used by the snd-ens1371 module.
    When loading the module, the error shown in the attached picture occurs:
    1371
    The problem is most likely also present on other Linux distributions.

Support DVD ISO mount?

Describe the bug
A clear and concise description of what the bug is.
PCem doesn't support DVD ISO mount. e.g. windows11-eng.iso and ubuntu-20.04.2-desktop-amd64.iso.

[Banshee] Filter is applied after gamma

Describe the bug
The video filter is applied after the gamma correction process, rendering the filter ineffective.

To Reproduce

  • Set gamma to 1.0, see the filter work.
  • Set gamma to anything higher, see the filter not work.

Expected behavior
The gamma correction applying to the filtered buffer.

Additional context
When I've first reverse-engineered the filter in 2013, I did it on a 3dfx Voodoo3 3000 and relied on gamma behavior to observe the filter results with dark lines on black backgrounds.

VGA bug : Titan game

Describe the bug
There's a rendering error using any VGA graphic card and the game Titan (from Titus).
The bottom of the screen during game is not rendered correctly and scroll is not smooth.
Game is probably using a VGA register trick as EGA rendering seems to be good.

To Reproduce
Steps to reproduce the behavior:

  1. Run Titan.com
  2. Start a game
  3. Observe visual issue

Expected behavior
smooth scroll and no glitches

Screenshots
Titan VGA Bug_2

Emulator configuration

  • Machine: AMI WinBIOS 486
  • CPU: Intel 486DX4 100
  • Graphics/sound cards: VGA
  • Installed OS : MSDOS 5

Host machine

  • OS: Windows 10
  • Emulator version : v17

Bug: Window Jumps up after exiting Fullscreen (on Windows)

Description
On Windows, after exiting Fullscreen, the window jumps up by a few pixels compared to what it was before Fullscreen was entered.

To Reproduce
Steps to reproduce the behavior:

  1. Start emulator
  2. Start a machine
  3. Enter, then exit Fullscreen
  4. The emulator window will have jumped up by a few pixels.

Expected behavior
The emulator, upon exiting Fullscreen, should return to the space it previously occupied.

Demonstration
See below video:
https://user-images.githubusercontent.com/73771471/125551009-21cbab2a-0213-429e-bab9-8e5f00444936.mp4

Emulator configuration
N/A

Host machine

  • OS: Windows 10, 11 (haven't tested other versions)
  • Emulator version: v17

PCEM returns exit code 377 after putting in the activation key in xenix 386

Describe the bug
A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:
1.Run pcem in gdb
2.Insert the N1 diskette
3.Follow the onscreen instructions
4.Observe the exit code
Expected behavior
A clear and concise description of what you expected to happen.
It shouldn't return non-zero
Screenshots
If applicable, add screenshots to help explain your problem.

Starting program: /home/lubdev/Downloads/pcem-master/pcem 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7ffff2b58640 (LWP 27335)]
[New Thread 0x7fffe8b3b640 (LWP 27336)]
[Thread 0x7fffe8b3b640 (LWP 27336) exited]
[New Thread 0x7fffe8aba640 (LWP 27337)]
[Thread 0x7fffe8aba640 (LWP 27337) exited]
[New Thread 0x7fffe8aba640 (LWP 27338)]
[New Thread 0x7fffe82b9640 (LWP 27339)]
[New Thread 0x7fffd37d8640 (LWP 27340)]
[New Thread 0x7fffd35d7640 (LWP 27341)]
[New Thread 0x7fffd2dd6640 (LWP 27342)]
[New Thread 0x7fffd0869640 (LWP 27343)]
[New Thread 0x7fffc5f44640 (LWP 27344)]
Menu item not found: 1403
Menu item not found: 1404
[New Thread 0x7fffc553e640 (LWP 27345)]
[New Thread 0x7fffc4d3d640 (LWP 27346)]
[New Thread 0x7fffb7fff640 (LWP 27347)]

(pcem:27331): GLib-GIO-CRITICAL **: 21:09:49.702: g_dbus_proxy_new: assertion 'G_IS_DBUS_CONNECTION (connection)' failed
[Thread 0x7fffc4d3d640 (LWP 27346) exited]
[Thread 0x7fffc553e640 (LWP 27345) exited]
[New Thread 0x7fffc4d3d640 (LWP 27348)]
[New Thread 0x7fffc553e640 (LWP 27349)]
Menu item not found: 1403
Menu item not found: 1404
[New Thread 0x7fffb4ffb640 (LWP 27350)]
[Thread 0x7fffb7fff640 (LWP 27347) exited]
[Thread 0x7fffd37d8640 (LWP 27340) exited]
[Thread 0x7fffe82b9640 (LWP 27339) exited]
[Thread 0x7fffe8aba640 (LWP 27338) exited]
[Thread 0x7fffb4ffb640 (LWP 27350) exited]
[Thread 0x7fffc553e640 (LWP 27349) exited]
[Thread 0x7fffc4d3d640 (LWP 27348) exited]
[Thread 0x7fffc5f44640 (LWP 27344) exited]
[Thread 0x7fffd2dd6640 (LWP 27342) exited]
[Thread 0x7fffd35d7640 (LWP 27341) exited]
[Thread 0x7ffff2b58640 (LWP 27335) exited]
[Thread 0x7ffff414fac0 (LWP 27331) exited]
[Inferior 1 (process 27331) exited with code 0377]

Emulator configuration

  • Machine: DTK 386SX clone
  • Memory: 8mb
  • FPU:387
  • CPU:Intel 386SX @ 16MHz
  • Graphics/sound cards:
  • None

Host machine

  • OS: Lubuntu 21.04
  • PCem 17

Additional context
Add any other context about the problem here.

High GPU utilization with OpenGL 3.0 renderer when using shaders

Describe the bug
When using OpenGL 3.0 renderer GPU utilization is at 90% on average (may even hit 100% at times) when using 6x XBRZ glsl shader. After about 5 minutes my card (EVGA GTX 1060 6GB SC) gets rather loud. Switching to any other renderer (including the ordinary OpenGL that comes without shader support) drops the GPU usage to 5-15%.
I know my card isn't the most powerful one, however, in other applications where it's possible to use that very same shader the GPU usage usually is at 40%.

To Reproduce
Steps to reproduce the behavior:

  1. Run your virtual machine.
  2. Switch to OpenGL 3.0 renderer.
  3. Apply a shader.
  4. Start your application for monitoring GPU usage.

Expected behavior
GPU usage should be considerably lower.

Screenshots
If applicable, add screenshots to help explain your problem.

Emulator configuration

  • Machine: GA-686BX
  • CPU: Pentium ll 233
  • Graphics/sound cards: Voodoo Banshee/SB 128
  • Windows 95

Host machine

  • OS: Windows 10
  • PCem v17
  • i7 6700 @ stock speed
  • EVGA GTX 1060 6GB SC

Additional context
Add any other context about the problem here.

Voodoo 3/Banshee: attempting to run Gex 3D: Enter the Gecko crashes PCem

Describe the bug
Using either Voodoo 3 or Voodoo Banshee crashes PCem as soon as Gex 3D: Enter the Gecko (either a demo or a full version) is about to be started.
Happens with any version of Direct X or GPU drivers.
For comparison: the game works great with Voodoo 1 and Voodoo 2 on the same emulated machine.
Same thing described above also happens with Starshot: Space Circus.

To Reproduce
Steps to reproduce the behavior:

  1. Start PCem
  2. Launch the emulated machine
  3. Attempt to launch the game
  4. PCem will crash

Expected behavior
Normal game launch

Screenshots
If applicable, add screenshots to help explain your problem.

Emulator configuration

  • Machine: GA-686BX
  • CPU: Pentium ll 233
  • Graphics/sound cards: Voodoo3, Voodoo Banshee, SB 128
  • Windows 95

Host machine

  • OS: Windows 10
  • PCem v17
  • i7 6700, GeForce GTX 1060

Additional context
Add any other context about the problem here.

MDK2 fade bug

Describe the bug
The scene fading function in the game cannot fade in the scene from black, causing MDK2 to not render anything. This also affects results for the benchmark funcitonality.

To Reproduce
Multiple ways:

  • Start any level, it's black until you zoom-in (as Kurt) or access the main menu.
  • Save/load any game.
  • Start the benchmark.

Expected behavior
The scene fading in.

Screenshots

Emulator configuration

  • HOT-557
  • CPU: Pentium, K6/2, Winchip
  • Graphics/sound cards: 3dfx Voodoo3, S3 ViRGE, Mystique, etc
  • Installed OS: Windows 98SE

Host machine

  • OS: Windows 7
  • Emulator version: v17

Additional context
I believe it is a CPU bug, as the problem also occurs with SGI software OpenGL, Techland MSI, etc.

Is there any reason fallocate(2) fallocate(3) isn't used to initiate a raw file on linux?

Describe the bug

fallocate(2) syscall/libc wrapper let's you allocate space immediately, by default(on ext4, didn't test other file systems) the file is zero filled/blocks are marked as not written to, and so you only have to use fallocate to claim the space on a disk, and write to the MBR header.
Instead of taking a minute to initiate a 10-20GiB raw file on a samsung 860(even with smaller values, writting zeros is blasphemy), it will take couple ms even on a hdd.

To Reproduce

Just create a raw file image, takes longer than it really could.

Expected behavior

CLICK, here's your raw disk image.
And if necessary it will write those couple bytes/kilobytes or necessary bits if any.

Screenshots

image

Host machine

  • OS: Arch Linux
  • Emulator version 17-1

Additional context

It is what kvm/qemu/virt-manager uses to initiate vm disk images, this is what steam on linux and windows(the equivalent syscall on windows is way slower) does to initiate files.

[AudioPCI/SB 128]: Distorted/crackling sound effects and no CD audio in Screamer series

Describe the bug
Sound effects are a bit distorted in Screamer, Screamer 2 and Screamer Rally (as well as in many other games that I've tried) if running them with AudioPCI or SB 128 card.
Using any Win9X driver version released between 1997 and 2001 for AudioPCI or SB 128 produces horrible sound effects in any of the first three Screamer games. Although later drivers from 2000 onwards that support SB16 emulation no longer complain about an IRQ error upon starting the game, sound is equally distorted and no CD audio could be heard in Screamer 2/Rally.
I tried running the games from pure DOS mode and no difference in terms of sound effects. I watched the video on how Screamer Rally was suppossed to sound like on AudioPCI and as you can hear in the video the sound effects are not crackled or distrorted (see 2:52 - 3:16 in the video attached below). Switching mainboard, OS or disabling LPT interrupt sharing makes no difference either.
Now I know AudioPCI-based cards aren't the best ones for DOS games, however given how many games I'v tried with similar issues so far I think that there are some bugs left in AudioPCI sound effects emulation.

To Reproduce
Steps to reproduce the behavior:

  1. Launch any of the Screamer games mentioned above
  2. Hear distorted and crackling sound effects

Expected behavior
A clear and undistorted sound with CD audio music playing in the background. Like here:
https://www.youtube.com/watch?v=gJrrUYg2hsE

Screenshots
If applicable, add screenshots to help explain your problem.

Emulator configuration

  • Machine: GA 686-BX
  • CPU: Pll 233
  • Graphics/sound cards: ViRGE/DX, SB 128
  • Windows 95

Host machine

  • OS: Windows 10
  • V 17
  • Core i7 6700

Additional context
https://www.youtube.com/watch?v=gJrrUYg2hsE

GA-686BX: PCem crashes when using BIOS files released before 2000

Describe the bug
When using any GA-686BX BIOS file released before 2000, PCem always crashes during one of the last sections of the Windows 95 (or 98SE) installation procedure, in particularly at the point when the installer is about to install the Windows help file (this comes after the P'N'P devices configuration section is complete). The only workaround this issue is to use any BIOS file released from 2000 onwards. Switching back to an older version makes the issue reappear.
I did a little experiment by copying HD file of another emulated machine and while I could normally boot into Windows using any 2000 or 2001 BIOS file I had no such luck with any 1998 or 1999 version I tried as PCem would crash during Windows boot screen. Happens with both Windows 95 and 98.

To Reproduce
Steps to reproduce the behavior:

  1. Use any BIOS file dated 1998 or 1999 instead of your regular one (likely the 2001 one).
  2. Start your virtual machine.
  3. Wait for PCem to crash not long after the Windows boot screen shows up.

Expected behavior
Normal bootup and completable installation proceedure of Windows.

Screenshots
If applicable, add screenshots to help explain your problem.

Emulator configuration

  • Machine: GA-686BX
  • CPU: Pentium ll 233
  • Graphics/sound cards: Voodoo Banshee,3,Virge/DX/SB 128
  • Windows 95,98SE

Host machine

  • OS: Windows 10
  • PCem v17
  • i7 6700 @ stock speed

Additional context
Add any other context about the problem here.

Kentris PC speaker sounds don't play

Describe the bug
The sounds and voices in Kentris could be rendered through the PC speaker (like Access's RealSound) and PCem doesn't let it do that.

To Reproduce

  1. Start Kentris
  2. Space for options, set sound to SPEAKER and speed to 100
  3. Hear nothing but the title song getting a delay

Expected behavior
"It's Kentris!" "Begin Kentris!" "Bone!" ding

Emulator configuration

  • Machine: AMI386SX Clone
  • CPU: Cx486SRX2/50
  • Graphics/sound cards: VGA, Sound Blaster Pro 2
  • Installed OS: DOS 6.22

Host machine

  • OS: Windows 7
  • Emulator version: v17, and 95a24e5

Additional context
Ken did more of the PC speaker sound in some other games so there could possibly be more games affected by this bug.

Instruction (README.md) for Linux seems to be incorrect

Instruction contains following part:

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

However, running configure with such option, gives me:

configure: WARNING: unrecognized options: --enable-release

so I rather need to run:

./configure --enable-release-build --enable-alsa

for Linux.

It also seems that I needed to install also an ALSA library, as follows.

sudo apt-get install build-essential libsdl2-dev libgtk2.0-dev libgtk-3-dev libopenal-dev libasound2 libwxgtk3.0-gtk3*

Could we add it as an example command for installation in Linux?

IBM OS/2 1.0 keyboard problems

Ctrl + Esc and Alt + Esc don't work in PCem. These key combinations are used by OS/2 1.0 to switch to the program selector and to move between running apps.

Steps to reproduce the behavior:

  1. Load a program from the program selector (e.g. DOS command prompt)
  2. Try to use Ctrl + Esc or Alt + Esc

I expected the key combinations to function but they did not.

Emulator configuration
AMI 286 Clone
286 @8MHz
2048KB (2MB) RAM
EGA Graphics (256KB ECD)
AT Fixed Disk Adapter
1.44MB FDD
Type 3 Hard Disk Drive
Microsoft 2 Button Serial Mouse

Host machine
Dell Inspiron 545
Pentium Dual Core CPU E5200 @2.50GHz (32 bit)
3GB RAM
Windows Vista Home Premium SP2 32bit
Intel G33/G31 Express Chipset Family
Intel GMA 3100 (Graphics)

I know the both Ctrl + Esc and Alt + Esc are both system shortcuts for acting as a windows key and switching between open windows so the key combinations might have to be added as a clickable option from the menu like you have done with Ctrl + Alt + Delete.

Failure in creating disk?

I run pcem V17 under Linux here. Try the Shuttle-Hot 557-Model at the moment and have MS-DOS 6.22 installed.
Created a 1.44 MB disk image where I wanted to put some files on to install them on that maschine.
Tried to do that with Mtools.
That is what I got as a result:

mcopy -i Test.img ./EDITV.EXE ::EDITV.EXE
init :: non DOS media
Cannot initialize '::'
Bad target ::EDITV.EXE

In which format are the diskettes created by pcem? Do they have to be formatted?

S3 Vision864 and Trio64 show "multiplied" graphics in Solaris

Describe the bug
Solaris 2.5.1 and 2.6 display multiple copies of the beginning of the framebuffer instead of the entire framebuffer when using an S3 Vision864 or S3 Trio graphics card.

Originally reported here: http://pcem-emulator.co.uk/phpBB3/viewtopic.php?f=3&t=3457

To Reproduce
Steps to reproduce the behavior:

  1. Boot Solaris 2.5.1 or 2.6
  2. Go through the prompts until the GUI starts (I chose 1024x768 with an 8-bit color depth for testing when asked for a graphics mode)
  3. Notice that multiple copies of the beginning of the framebuffer are displayed (at 1024x768 8-bit color you can see three copies of the first 256 lines of the framebuffer)

Expected behavior
The entire framebuffer should be displayed.

Screenshots
Solaris 2.6 when using an S3 Trio64 (issue occurring):
Screenshot from 2021-06-11 21-56-18

Solaris 2.6 when using an S3 ViRGE/DX (issue does not occur):
Screenshot from 2021-06-11 22-02-34

Emulator configuration

  • Machine: [Socket 7] Shuttle HOT-557
  • CPU: Intel Pentium 166
  • Graphics/sound cards: S3 Trio64, No sound card
  • Installed OS: Solaris 2.6 (Solaris 2.5.1 is also affected)

Host machine

  • OS: Windows 7 SP1
  • Emulator version: Git commit 5f772fd (v17 is also affected)

Additional context

  • Solaris 2.5.1 does not support the S3 ViRGE/DX - the Tseng ET4000AX and Trident 8900D can be used as "good" cards for testing.

[BUG] RTC Sync

Describe the bug
When you create a VM (any BIOS) with the RTC sync option enabled, then start it and enter the ROM SETUP utility, the time/date is reported as the BIOS default. However, when you stop the machine, disable RTC sync, start the machine, stop the machine, re-enable RTC sync, start the machine and enter the ROM SETUP utility, the reported date/time is the host system date/time.

Reproduction Steps
Steps to reproduce the behavior:

  1. Create a new machine (any BIOS) with the RTC sync option enabled.
  2. Start the machine and enter ROM SETUP
  3. The date/time reported is the BIOS default value, not the host value.

Expected behavior
The expected behavior is that the guest time is synced with the host time

Workaround Steps

  1. Stop the machine.
  2. Disable RTC sync
  3. Start the machine
  4. Stop the machine
  5. Re-enable RTC sync
  6. Start the machine
  7. Enter the ROM SETUP utility
  8. The reported date/time is the host system date/time

Emulator configuration

  • Machine: N/A Bug occurs on every one I've tried.
  • CPU: N/A Bug occurs on every one I've tried.
  • Graphics/sound cards: N/A Bug occurs on every one I've tried.
  • Installed OS: N/A Bug occurs on every one I've tried.

Host machine

  • OS: Kubuntu 21.04
  • Emulator version: v17
  • Any other relevant information: Built from source using release and networking configure flags

CNCD - Inside : rendering errors

Describe the bug
Numerous rendering errors running Inside by CNCD. Geometry glitches are frequent, there are also what look like palette related issues. These may be two separate bugs.

While issues are seen with both the interpreter and recompiler, they seem more prominent with the interpreter. The geometry issues may be an FPU issue.

To Reproduce
Steps to reproduce the behavior:

  1. Run Inside
  2. Observe visual issues

Expected behavior
The demo running without visual glitches

Screenshots
image
image
image
image

Emulator configuration

  • Machine: AMI 486 clone
  • CPU: i486DX2/66
  • Graphics/sound cards: Diamond Stealth 32, Sound Blaster 2.0
  • Installed OS: MS-DOS 6.22

Host machine

  • OS: Windows 10
  • Emulator version: v17

PCem release builds crash when running Windows NT 3.1 when pausing/stopping MPU-401 MIDI playback

Describe the bug
If an attempt is made to pause/stop MIDI playback in Windows NT 3.1's Media Player, PCem crashes.

To Reproduce
Steps to reproduce the behavior:

  1. Boot up Windows NT 3.1.
  2. Open File Manager.
  3. Open any of the sample MIDI files included with the installation in the WINNT directory.
  4. While the MIDI is playing in the Media Player, press the Pause/Stop button.
    The emulator should now freeze and crash.

Expected behavior
The MIDI playback should pause/stop properly.

Emulator configuration

  • Machine: FIC VA-503+
  • CPU: Pentium OverDrive MMX 125
  • Graphics/sound cards: Tseng ET4000AX, Sound Blaster AWE32
  • Installed OS: Windows NT 3.1

Host machine

  • OS: Manjaro Linux.
  • Emulator version: Git version e069ec7

Additional context
Windows NT 3.1 is using the beta Sound Blaster 16 drivers. The emulator is also using virtualized ALSA rawmidi ports which is connected to FluidSynth.

Website down / hacked?!

Sorry to bother, but it seems that https://pcem-emulator.co.uk/ is down (it's throwing a blank site) and the forum (which was a good and useful source of information) says it's over and that it's not fun anymore? What in the world?

image

Is this for real? If so, I would say at least please restore it somehow. There were some really useful threads in there and now all is lost :( there's also no way to get the binaries anymore. Please restore them or upload them to mirrors. Thanks.

Created a situation where opening the right-click menu causes an assert failure

Describe the bug
I have created a situation where PCEM freezes, and if I try and open the right-click menu, an assert failure is triggered.

To Reproduce
From attached Hard Drive image:

  • Boot windows 95 as normal
  • The boot sequence detects 2 files as corrupt, get past the boot sequence in whatever way possible (I found that hitting D and then F got past the first file that fails, I believe the same worked for the second file)
  • Once windows 95 has booted, open C: Screamocity in the file explorer, and open DIR00002
  • After a second, the emulation will freeze. Trying to open the right click menu now will cause this assert failure.

Expected behavior
I expected the right click menu to open as normal.

Screenshots
image

Emulator configuration

  • Machine: [Socket 7] Shuttle HOT-557
  • CPU: Intel Pentium 100/50
  • Graphics/sound cards: Phoenix S3 Trio32, Sound Blaster AWE32
  • Installed OS: Windows 95
    Additional specs:
    128MB memory, Novell NE2000.

Host machine

  • OS: Linux Mint 20.2
  • Emulator version v17 (Built 2 days ago)

Additional context
I'm sorry if this isn't an actual bug; I assumed it was, since the error was delivered through a PCEM debug window and not W95 itself.
I have attached my hard drive image to this bug report because, as far as I know, there is no copyrighted content within it, and I would not be able to reproduce the creation of this hard drive image. The only 2 things of note on it are the shareware demo of slickball, and patches for a game called YU-NO (but no files from the actual game itself). If this hard drive image is still not acceptable to be uploaded here, I will delete the link.
removed
In case you're wondering roughly how I created this hard drive image:

  • I mounted the disk image in Linux Mint and copied the YUNO music patch folder into it
  • I booted into Windows 95 and tried to copy the folder within Windows to make the hard disk image bigger, so I could put more files into the disk image while mounted in Mint
  • About 1/3 through the installation, emulation speed slowed to 0-2%, despite none of my threads being anywhere close to maxed, and the emulator always running at fullspeed before this
  • I quit emulation and then tried to restart it
    (I'm aware there's a lot of things wrong with that process and it's a terrible way to go about putting files in; I just thought a description of how I got here could help).
    Again, sorry if this is a waste of time.

Socket 8 Intel VS440FX shows black screen when starting it up

I have the new rom set and while Slot 1 Gigabyete works fairly well however Slot 8 Intel VS440FX whenever you fire it up just remains a blank screen with the sound of it turning on briefly then nothing.

Machine Specs: Socket 8 Intel VS440FX any Pentium speed: All control options grayed out.

Host Windows 10 I7 8000 series Dell Inspiration with Nivida Graphics 1030

CGA bug : prohibition game

Describe the bug
There's a rendering error using CGA graphic card and the game Prohibition (Infogrames).
This game is using a CGA trick to do smooth scroll but screen is corrupted using Pcem.
Screen corruption is easily observable on start screen.

To Reproduce
Steps to reproduce the behavior:

  1. Run prohi
  2. Launch game choosing "Other" as video adapter and slow or high as speed
  3. Launch game using spacebar then see error

Expected behavior
smooth scroll and no glitches

Screenshots
Prohibiton CGA

Emulator configuration

  • Machine: AMI 286 Clone
  • CPU: Intel 286 10 Mhz
  • Graphics/sound cards: CGA
  • Installed OS : PCDOS 6.1

Host machine

  • OS: Windows 10
  • Emulator version : v17

Blood 2 / Shogo music glitches

Describe the bug
Blood 2's in-game music is silent while Shogo's in-game music gets corrupted in parts.

To Reproduce
Play either game

Expected behavior
The music working in Blood 2 and the music not corrupting in Shogo.

May be CPU

Screenshots

Emulator configuration

  • Shuttle HOT-557
  • Pentium MMX 233, AMD K6 233
  • S3 Trio64 + 3dfx Voodoo2, Sound Blaster AWE32
  • Windows98SE

Additional context
Possibly dynarec related as it works in v14. While related to the DirectMusic API (which works fine), the DLLs early Lithtech uses are of an earlier pre-DX6 variant of the API.

Donation Link in README

Hey guys, what about a donation link in the readme?

Would be great to support this project!

pcem fails to find various menu items

Describe the bug
A clear and concise description of what the bug is.
pcem fails to find and load all of the menu items
To Reproduce
Steps to reproduce the behavior:

  1. Launch pcem
  2. Look at the console output
    Expected behavior
    A clear and concise description of what you expected to happen.
    The menu should appear
    Screenshots
    If applicable, add screenshots to help explain your problem.
    image

Host machine

  • OS: Pop os 21.04
  • pcem 17

Additional context
Add any other context about the problem here.
This version of pcem is from the master branch.I built this version from source.

Majic 12 - Show : Bad timing on palette switches

Describe the bug
Two effects in Show perform mid-frame palette switching. The timing looks to be off, giving visual artifacts.

To Reproduce
Steps to reproduce the behavior:

  1. Run Show
  2. Observe the "RealplasmA" and high-colour rotozoomer (both quite late in the demo)

Expected behavior
No artifacts

Screenshots
image
image

Emulator configuration

  • Machine: AMI 486 clone
  • CPU: i486SX/25
  • Graphics/sound cards: Diamond Stealth 32, Gravis UltraSound
  • Installed OS: MS-DOS 6.22

Host machine

  • OS: Windows 10
  • Emulator version: v17

Voodoo 2: Graphics glitches in Nightmare Creatures

Describe the bug
When running Nightmare Creatures (full retail version) with Voodoo 2 it is likely to encounter graphics glitches while playing.
I got greeted by some of them even at the start of the very first level (see screenshots for details). When I existed level for the Main Menu, shadows beneath main characters suddenly became red.
I tried the following Voodoo 2 drivers: Generic Voodoo 2 DX6 driver (dated October 1998), Generic Voodoo 2 DX6 driver (dated January 1999), Diamond Monster ll DX5 driver from Diamond's own Installation Disc (released in early 1998) - on another VM with DX 5 installed, Diamond Monster ll DX6 driver (dated October 1998). Each time the same result.
Game works great and without any issues with Voodoo 3, though.

To Reproduce
Steps to reproduce the behavior:

  1. Start your virtual machine
  2. Run Nightmare Creatures
  3. Start the game
  4. See error

Expected behavior
Graphics without glitches.

Screenshots
ncreatures2
ncreatures

Emulator configuration

  • Machine: GA-686BX
  • CPU: Pentium ll 233
  • Graphics/sound cards: Voodoo 2/SB 128
  • OS: Windows 95

Host machine

  • OS: Windows 10
  • PCem v17
  • i7 6700, GTX 1060

Additional context
Add any other context about the problem here.

AMD 5x86 CPUID

Describe the bug
All BIOS ROMs available report wrong CPUID for Am5x86 P75 and P75+.
It is being recognized as Am486DX4-S at 120MHz (for Am5x86 P75 133MHz) and 150MHz respectively.
I know it is not right because I have a SiS 496/497 based board myself with a Am5x86 P75 and it does recognize the CPUID/CPUTYPE correctly and also the clock speed.

To Reproduce
Create a new machine with the hardware specified above and start it. ;)

Expected behavior
CPUID/Type should match CPU selected.

Screenshots
image
image

Emulator configuration

  • Machine: [486] Award SiS 496/497
  • CPU: AMD Am5x86 P75
  • Graphics/sound cards: Trident TGUI9440 / SoundBlaster 16
  • Installed OS: Windows 95 OSR2.5

Host machine

  • OS: macOS Mojave 10.14.6
  • Emulator version: v17 (but seems to affect since v14, which was the first one that I used)

Additional context
None

Floppy formatting fails with "Not Ready" on AMI BIOSes

Describe the bug
Attempting to format a floppy disc on a system with AMI BIOS appears to fail with a "Not Ready" error.
Originally reported at https://pcem-emulator.co.uk/phpBB3/viewtopic.php?f=2&t=3640

To Reproduce
Steps to reproduce the behavior:

  1. Configure a machine with an AMI BIOS
  2. Attempt to format a floppy disc

Expected behavior
Formatting completes successfully

Emulator configuration

  • Machine: Any AMI BIOS machine?
  • Installed OS: MS-DOS 6.22

Emulation menu not working on Ubuntu 21.04

While emulation is running and the mouse is not captured, right button click on the main area don't display the menu.

Steps to reproduce the behavior:

  1. Build PCEM v17 on Ubuntu 21.04
  2. Run the application and define a new configuration
  3. Start the emulation
  4. Right mouse button click on the main window area

The click should display the menu but nothing happen

This behaviour appen with any emulator configuration

Host machine: Ubuntu 21.04 and PCEM 17

I compiled the software on a Debian 11 (Mate Desktop) running on qemu and everithing work ok.

DMA is not working

I installed Debian 11 Linux on a GA-686BX machine.
Disk operations are slow and in dmesg it displays the following:
dmesg
The error message in detail:
[ 10.537654] sd 0:0:0:0: [sda] 33554304 512-byte logical blocks: (17.2 GB/16.0 GiB) [ 10.537742] sd 0:0:0:0: [sda] Write Protect is off [ 10.537774] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00 [ 10.537875] sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA [ 10.546777] sr 1:0:0:0: [sr0] scsi3-mmc drive: 24x/24x caddy [ 10.546806] cdrom: Uniform CD-ROM driver Revision: 3.20 [ 10.565308] ata1: drained 512 bytes to clear DRQ [ 10.565321] ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen [ 10.565352] ata1.00: BMDMA stat 0x64 [ 10.565379] ata1.00: failed command: READ DMA [ 10.565424] ata1.00: cmd c8/00:08:00:00:00/00:00:00:00:00/e0 tag 0 dma 4096 in res 58/00:00:00:00:00/00:00:00:00:00/e0 Emask 0x2 (HSM violation) [ 10.565487] ata1.00: status: { DRDY DRQ } [ 10.565528] ata1: soft resetting link [ 10.576291] sr 1:0:0:0: Attached scsi CD-ROM sr0 [ 10.733992] ata1.00: configured for MWDMA2 [ 10.734031] ata1: EH complete [ 10.741352] ata1: drained 512 bytes to clear DRQ [ 10.741364] ata1.00: limiting speed to MWDMA1:PIO2 [ 10.741395] ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen [ 10.741426] ata1.00: BMDMA stat 0x64 [ 10.741452] ata1.00: failed command: READ DMA [ 10.741497] ata1.00: cmd c8/00:08:00:00:00/00:00:00:00:00/e0 tag 0 dma 4096 in res 58/00:00:00:00:00/00:00:00:00:00/e0 Emask 0x2 (HSM violation) [ 10.741561] ata1.00: status: { DRDY DRQ } [ 10.741601] ata1: soft resetting link [ 10.909114] ata1.00: configured for MWDMA1 [ 10.909152] ata1: EH complete [ 10.921022] ata1: drained 512 bytes to clear DRQ [ 10.921033] ata1.00: limiting speed to PIO2 [ 10.921066] ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen [ 10.921096] ata1.00: BMDMA stat 0x64 [ 10.921123] ata1.00: failed command: READ DMA [ 10.921168] ata1.00: cmd c8/00:08:00:00:00/00:00:00:00:00/e0 tag 0 dma 4096 in res 58/00:00:00:00:00/00:00:00:00:00/e0 Emask 0x2 (HSM violation) [ 10.921231] ata1.00: status: { DRDY DRQ } [ 10.921271] ata1: soft resetting link [ 11.088953] ata1.00: configured for PIO2 [ 11.088989] ata1: EH complete [ 11.095272] sda: sda1 sda2 sda3 [ 11.098568] sd 0:0:0:0: [sda] Attached SCSI disk [ 11.099784] sda: detected capacity change from 0 to 17179803648 [ 11.101751] sda: detected capacity change from 0 to 17179803648 [ 11.390060] sr 1:0:0:0: [sr0] GET_EVENT and TUR disagree continuously, suppress GET_EVENT events
The host machine is running MX Linux 19.4.

Unable to select network card

image
I've tried with various different machines, this network drop down menu is greyed out, so I cannot select any network card. I'm running pcem v17 on Linux mint 20. I'm likely just doing something very simple wrong, but I could not find any solution to this issue. Additionally, I made sure I have ne2000.rom at ~/pcem/roms/ne2000.

PCem 17 and master fail to compile

make[1]: Entering directory '/home/shadowfoxy32/Downloads/pcem17/src'
g++ -DPACKAGE_NAME=\"PCem\" -DPACKAGE_TARNAME=\"pcem\" -DPACKAGE_VERSION=\"v17\"
 -DPACKAGE_STRING=\"PCem\ v17\" -DPACKAGE_BUGREPORT=\"Sarah\ Walker\ \<pcem@pcem
-emulator.co.uk\>\" -DPACKAGE_URL=\"\" -DPACKAGE=\"pcem\" -DVERSION=\"v17\" -DHA
VE_LIBPTHREAD=1 -DHAVE_LIBGL=1 -DHAVE_LIBOPENAL=1 -I.    -I/usr/lib/x86_64-linux
-gnu/wx/include/base-unicode-3.0 -I/usr/include/wx-3.0 -D_FILE_OFFSET_BITS=64 -D
WXUSINGDLL -pthread -I/usr/include/SDL2 -D_REENTRANT    -O3 -fcommon -MT pcem-wx
-main.o -MD -MP -MF .deps/pcem-wx-main.Tpo -c -o pcem-wx-main.o `test -f 'wx-mai
n.cc' || echo './'`wx-main.cc
In file included from wx-main.cc:1:
wx-app.h:58:29: error: invalid use of incomplete type ‘class wxCommandEvent’
   58 | class CallbackEvent: public wxCommandEvent
      |                             ^~~~~~~~~~~~~~
In file included from /usr/include/wx-3.0/wx/wx.h:24,
                 from wx-app.h:6,
                 from wx-main.cc:1:
/usr/include/wx-3.0/wx/event.h:632:28: note: forward declaration of ‘class wxCommandEvent’
  632 | class WXDLLIMPEXP_FWD_CORE wxCommandEvent;
      |                            ^~~~~~~~~~~~~~
In file included from wx-main.cc:1:
wx-app.h: In constructor ‘CallbackEvent::CallbackEvent(WX_CALLBACK, void*)’:
wx-app.h:61:59: error: type ‘wxCommandEvent’ is not a direct base of ‘CallbackEvent’
   61 |         CallbackEvent(WX_CALLBACK callback, void* data) : wxCommandEvent(WX_CALLBACK_EVENT)
      |                                                           ^~~~~~~~~~~~~~
wx-app.h: In copy constructor ‘CallbackEvent::CallbackEvent(const CallbackEvent&)’:
wx-app.h:66:53: error: type ‘wxCommandEvent’ is not a direct base of ‘CallbackEvent’
   66 |         CallbackEvent(const CallbackEvent& event) : wxCommandEvent(event)
      |                                                     ^~~~~~~~~~~~~~
wx-app.h: In member function ‘wxEvent* CallbackEvent::Clone() const’:
wx-app.h:72:64: error: cannot convert ‘CallbackEvent*’ to ‘wxEvent*’ in return
   72 |         wxEvent* Clone() const { return new CallbackEvent(*this); }
      |                                                                ^
wx-app.h: At global scope:
wx-app.h:84:30: error: invalid use of incomplete type ‘class wxCommandEvent’
   84 | class PopupMenuEvent: public wxCommandEvent
      |                              ^~~~~~~~~~~~~~
In file included from /usr/include/wx-3.0/wx/wx.h:24,
                 from wx-app.h:6,
                 from wx-main.cc:1:
/usr/include/wx-3.0/wx/event.h:632:28: note: forward declaration of ‘class wxCommandEvent’
  632 | class WXDLLIMPEXP_FWD_CORE wxCommandEvent;
      |                            ^~~~~~~~~~~~~~
In file included from wx-main.cc:1:
wx-app.h:87:42: error: ‘wxMenu’ has not been declared
   87 |         PopupMenuEvent(wxWindow* window, wxMenu* menu, int* x, int* y) : wxCommandEvent(WX_POPUP_MENU_EVENT)
      |                                          ^~~~~~
wx-app.h:105:9: error: ‘wxMenu’ does not name a type; did you mean ‘wxMin’?
  105 |         wxMenu* GetMenu() const { return menu; }
      |         ^~~~~~
      |         wxMin
wx-app.h:112:9: error: ‘wxMenu’ does not name a type; did you mean ‘wxMin’?
  112 |         wxMenu* menu;
      |         ^~~~~~
      |         wxMin
wx-app.h: In constructor ‘PopupMenuEvent::PopupMenuEvent(wxWindow*, int*, int*, int*)’:
wx-app.h:87:74: error: type ‘wxCommandEvent’ is not a direct base of ‘PopupMenuEvent’
   87 | pMenuEvent(wxWindow* window, wxMenu* menu, int* x, int* y) : wxCommandEvent(WX_POPUP_MENU_EVENT)
      |                                                              ^~~~~~~~~~~~~~

wx-app.h:90:23: error: ‘class PopupMenuEvent’ has no member named ‘menu’
   90 |                 this->menu = menu;
      |                       ^~~~
wx-app.h: In copy constructor ‘PopupMenuEvent::PopupMenuEvent(const PopupMenuEvent&)’:
wx-app.h:94:55: error: type ‘wxCommandEvent’ is not a direct base of ‘PopupMenuEvent’
   94 |         PopupMenuEvent(const PopupMenuEvent& event) : wxCommandEvent(event)
      |                                                       ^~~~~~~~~~~~~~
wx-app.h:97:23: error: ‘class PopupMenuEvent’ has no member named ‘menu’
   97 |                 this->menu = event.GetMenu();
      |                       ^~~~
wx-app.h:97:36: error: ‘const class PopupMenuEvent’ has no member named ‘GetMenu’
   97 |                 this->menu = event.GetMenu();
      |                                    ^~~~~~~
wx-app.h: In member function ‘wxEvent* PopupMenuEvent::Clone() const’:
wx-app.h:102:65: error: cannot convert ‘PopupMenuEvent*’ to ‘wxEvent*’ in return
  102 |         wxEvent* Clone() const { return new PopupMenuEvent(*this); }
      |                                                                 ^
wx-app.h: At global scope:
wx-app.h:142:21: error: invalid use of incomplete type ‘class wxFrame’
  142 | class Frame: public wxFrame
      |                     ^~~~~~~
In file included from /usr/include/wx-3.0/wx/wx.h:26,
                 from wx-app.h:6,
                 from wx-main.cc:1:
/usr/include/wx-3.0/wx/utils.h:54:28: note: forward declaration of ‘class wxFrame’
   54 | class WXDLLIMPEXP_FWD_CORE wxFrame;
      |                            ^~~~~~~
In file included from wx-main.cc:1:
wx-app.h:145:54: error: ‘wxPoint’ does not name a type; did you mean ‘wxJoin’?
  145 |         Frame(App* app, const wxString& title, const wxPoint& pos,
      |                                                      ^~~~~~~
      |                                                      wxJoin
wx-app.h:146:31: error: ‘wxSize’ does not name a type
  146 |                         const wxSize& size);
      |                               ^~~~~~
wx-app.h:152:9: error: ‘wxMenu’ does not name a type; did you mean ‘wxMin’?
  152 |         wxMenu* GetMenu();
      |         ^~~~~~
      |         wxMin
wx-app.h:169:9: error: ‘wxMenu’ does not name a type; did you mean ‘wxMin’?
  169 |         wxMenu* menu;
      |         ^~~~~~
      |         wxMin
make[1]: *** [Makefile:6217: pcem-wx-main.o] Error 1
make[1]: Leaving directory '/home/shadowfoxy32/Downloads/pcem17/src'
make: *** [Makefile:365: all-recursive] Error 1

PCem speed drops with certain games when Internal CPU Cache is enabled

Describe the bug
PCem speed may drop to as low as 40% when running certain games with Internal CPU Cache being turned on in the BIOS of an emulated machine. In particularly, I get speeds around 40-80% when running Alone in the Dark 3, Daggerfall, Day of the Tentacle, Krypton Egg 32, Little Big Adventure 2 (DOS/WIN).
If I turn internal CPU cache off in the BIOS then the games mentioned above run at 100%, the only exception being LBA2 where speed drops down to 90% in crowded areas.

To Reproduce
Steps to reproduce the behavior:
Install and run any of the games mentioned while Internal CPU Cache is turned on.

Expected behavior
Games are supposed to run at 100% as long as your host CPU can handle your emulated machine at 100% (mine i7 6700
can handle Pentium 166 MMX at 100%).

Screenshots

Emulator configuration

  • Machine: FIC VA 503+
  • CPU: PENTIUM 166 MMX
  • Graphics/sound cards: ViRGE/DX + AWE32
  • Windows 95

Host machine

  • OS: Windows 10
  • PCem v17
  • i7 6700 @ stock speed

Additional context
Out of curiosity, I've tried testing GA-686BX as well and ran into the same issue (except that the number of titles that could be run at 100% was lower due to my i7 6700 not being able to handle Pentium ll 233 that well as P166 MMX).

[Bug] Severe speed degradation in Moto Racer Options Menu

Describe the bug
Going to Options Menu in 1997 game Moto Racer causes PCem to run at about 10-20% speed (other menus and racing part of the game are usually at 100% or close).
Similar thing also happens with 3-2-1 counter right before the race kicks off.
Changing the CPU speed or CPU type makes little to no difference. The same issue also exists with any Socket 7 or Super Socket 7 machine that I tried.
Installing patches does not help either.

To Reproduce
Steps to reproduce the behavior:

  1. Launch Moto Racer
  2. Go to Options Menu
  3. See error

Expected behavior
The Options Menu shall work without speed regression, just like other menus.

Screenshots
If applicable, add screenshots to help explain your problem.

Emulator configuration

  • Machine: GA 686-BX
  • CPU: Pll 233
  • Graphics/sound cards: ViRGE/DX, SB 128, Voodoo ll
  • Installed OS: Windows 95

Host machine

  • OS: Windows 10
  • i7 6700

Additional context
Add any other context about the problem here.

Keyboard Issues

Describe the bug
i was installing Windows 3.11 on AMI 386DX Clone, when entering CMOS Setup and than installing DOS 6.22 and WFW 3.11 , some keys didn't work

To Reproduce
Steps to reproduce the behavior:
1.create a new machine and configure it
2.enter CMOS Setup
3.try pressing Enter, or some other ley
4.see that keys don't work sometimes

Expected behavior
expected for keyboard to work properly

Screenshots
If applicable, add screenshots to help explain your problem.

Emulator configuration

  • Machine: AMI 386DX Clone
  • CPU: Intel i386DX/33 , 16MB Memory , No FPU
  • Graphics/sound cards: Graphics: VGA , Sound: None
  • Installed OS - MS-DOS 6.22 with Windows For Workgroups 3.11

Host machine

  • OS: Windows 10 21H1
  • Emulator version : PCem v17
  • Any other relevant information

Additional context
Here is the full machine configuration:

Machine : [386DX] AMI 386DX Clone
CPU : Intel i386DX/33
FPU: None
Memory: 16MB
Waitstates: System Default
Synchronize Time to host clock : No

Graphics: VGA
Speed: Default

Sound Card: None
LPT Device : None

HDD: Standard IDE
FDD1: 1.44M
FDD2 : 1.2M
CD Model : PcemCD
CD Speed: 24X
Drive 0 Primary Master C:
Type : Hard Drive
File : C:\Users\Siddhant\Downloads\WfW 3.11.img
Sectors : 63 Heads : 16 Cylinder : 511 Size: 251Mb

Mouse: Microsoft 2-Button Mouse (serial)

Joystick: Standard 2-button joystick

Network Card : Novell NE2000 
Address: 0x300
IRQ 7

i tried both my laptop's keyboard and dell usb keyboard, both appear to have same issue
during logon, i was typing password and a key was keeping repeatedly pressed
and in DOS Prompt, when i typed exit, enter key pressed repeatedly and opened 10 DOS Prompts

Sarah, please mint the PCem source code as an NFT and allow us to pay you back a little 🙂

@sarah-walker-pcem THANK YOU for so many years of unpaid work on PCem, and for sharing it with the world. ☺️

Would it be an idea for you to mint the source code, in the state as it was when you handed its stewardship over to the community (the initial GitHub commit?), as an NFT, so you can earn a little well-deserved (virtual) coin from it? It might be a silly idea, and I'm not sure how much (if anything) it would earn you in practice, but perhaps it would be an opportunity for the community to repay you. And it would also create kind of a monument to your work.

If you are concerned about the environmental aspect of NFTs, it could be minted on Tezos, which is (supposedly) much more environmentally friendly than Ethereum (as long as they haven't migrated to Proof-of-Stake yet).

Disclaimer: I have zero experience with NFTs myself, but perhaps others here with more expertise could help you make this happen.

Disk read errors when installing programs from floppy under WfW 3.11

Describe the bug
Occasional "Cannot read from drive A:" messages appear when installing programs from floppies under Windows for Workgroups 3.11. This issue appears to occur somewhat randomly and occurs more frequently when installing larger programs such as Microsoft Office 4.3c

Originally reported here: http://pcem-emulator.co.uk/phpBB3/viewtopic.php?f=3&t=3605

To Reproduce
Steps to reproduce the behavior:

  1. Run any installer from floppy under Windows for Workgroups 3.11
  2. Go through the installation process
  3. Notice a "Cannot read from drive A:" or "Could not read from the file named: A:\$FILENAME" message depending on the program

Expected behavior
The program should install without disk errors.

Screenshots
Screenshot from 2021-06-03 21-07-22

Emulator configuration

  • Machine: [486] AMI 486 clone
  • CPU: i486DX2/66 (Recompiler enabled)
  • Graphics/sound cards: Phoenix S3 Trio64 2MB, No sound card
  • Installed OS: DOS 6.22 with Windows for Workgroups 3.11

Host machine

  • OS: Windows 7 SP1
  • Emulator version: Git commit 5f772fd (v17 is also affected)

Additional context

  • Clicking "Retry" on the error message each time it appears allows the installation to continue

Voodoo Banshee/3 packed chain4 stuff missing and scrambled display

Describe the bug
Looks like packed chain4 stuff is not implemented in the Banshee/3, as a result, drivers for Windows 9x/NT/2000 would result in scrambled display, rendering issues like doubled desktop and stretched and so on.

To Reproduce
Pretty simple, just set 8bpp and up (16bpp/24/32bpp) in the operating systems mentioned above once drivers are installed.

Expected behavior
The way it displayed fine before the packed chain4 stuff was implemented.

Screenshots
If applicable, add screenshots to help explain your problem.

Emulator configuration

  • Machine: Any PCI-based machine
  • CPU: Intel/AMD socket 7/etc
  • Graphics: Voodoo 3/Banshee.
  • Windows NT/9x/2000/XP

Host machine

  • OS: Windows 10.
  • Latest PCem v17 commit with the packed_chain4 stuff in.

Additional context
Add any other context about the problem here.

Graphics corruption running Windows 3.1 with Paradise driver

Describe the bug
Graphics corruption when running Windows 3.1 on a machine with Paradise SVGA (eg MegaPC) and using the Paradise video driver.

To Reproduce
Steps to reproduce the behavior:

  1. Configure a machine with Paradise SVGA (eg Amstrad MegaPC)
  2. Install Windows 3.1 with the Paradise SVGA drivers
  3. Run Windows

Expected behavior
Non-corrupted graphics

Screenshots
image

Emulator configuration

  • Machine: Amstrad MegaPC
  • CPU: 386SX/25
  • Graphics/sound cards: Built-in (Paradise WD90C11)
  • Installed OS: MS-DOS 6.22, Windows 3.1

Host machine

  • OS: Windows 10
  • Emulator version: v17

Additional context
This is caused by incorrect implementation of VGA chain-4 / doubleword mode. On a fully compatible VGA like the Paradise chips, in chain-4 only every fourth dword in VRAM is used. PCem currently only emulates the ET4000-style chain-4, where chain-4 data is fully packed. This doesn't matter unless software switches in and out of chain-4 mapping to provide Mode-X-like acceleration in an otherwise chained display. Both Paradise and ET4000 Windows drivers do this to accelerate rectfills, so both variants of chain-4 need to be implemented.

I do not currently know if any other SVGA chips implement chain-4 as the ET4000 does.

How does the ALSA Midi Output feature work?

I can't understand how the alsa midi output feature works, it seems it was never documented anywhere on how to actually use it. The only thing in the documentation that mentions this feature is simply enabling it, outside of that, it's not very clear on how to use it.

Half-Life : Blue Shift fails to start

Describe the bug
Half-Life : Blue Shift fails to start. Process stays running and can be seen in Task Manager, but the game never launches

To Reproduce
Steps to reproduce the behavior:

  1. Launch Blue Shift from either the Start->Programs menu or from the CD autostart menu

Expected behavior
The game running.

Emulator configuration

  • Machine: Gigabyte GA-686BX
  • CPU: Pentium II/233
  • Graphics/sound cards: Voodoo 3, AudioPCI
  • Installed OS: Windows 98SE

Host machine

  • OS: Windows 10
  • Emulator version: v17

Segmentation fault: 11 on macOS

I am testing the recent modifications that were merged to build for macOS.

I've installed all the dependencies, compiled and installed the rom files as well.

However, when I run pcem, I get this error:

MacBruno-Pro:PCemV17macOS Bruninho$ ./pcem
Set fullspeed - 0 0 0
Menu item not found: 1403
Menu item not found: 1404
Menu item not found: 1403
Menu item not found: 1404
**Segmentation fault: 11**

I have no idea why it happens. It was working a few months ago with kyr0's and almeath's builds. Now even their builds don't work for me anymore. It happens with every other emulator configuration I try, no matter what I choose to emulate. Any ideas?

Host machine

  • OS: macOS Big Sur 11.4 [Intel Mac]
  • Emulator version: PCem v17
  • Any other relevant information: Late 2013 retina MacBook Pro 13-inch, i7 2.8GHz, 16GB RAM, 1TB SSD, maxed out configuration.

Magic School Bus Let's Explore The Ocean No AUDIO

Describe the bug
A clear and concise description of what the bug is. Magic School Bus games and others that uses Rebook? I guess that's what it's called does not produce audio in game but SFX works fine. Same with MS games that uses this format like MotorCross Madness.

CD Audio has all options grayed out and this goes for ALL PCEM configs.

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Emulator configuration

  • Machine: [e.g. IBM AT, AMI 486 clone etc] Socket 7 and others:
  • CPU:
  • Graphics/sound cards: ANY
  • Installed OS ANY including Windows 2000.

Host machine

  • OS: [e.g. Windows 10, Ubuntu 18.04 etc] Windows 10
  • Emulator version ANY
  • Any other relevant information

Additional context
Add any other context about the problem here.

DST breaks differencing VHDs

Describe the bug
Differencing VHDs that try to load regress and invalidate their state whenever daylight savings time passes..

To Reproduce

  1. Use PCem with differencing VHDs
  2. Observe daylight savings time
  3. Attempt to use the same config after the hour was set back or forward

Expected behavior
The VHD working.

Additional context
Daylight savings time just kicked in and thus, this bug is now filed. I suspected this on one post in the forum before.

CNCD - Inside : Bad GUS playback when DMA sample download is enabled

Describe the bug
Inside's music playback is broken when GUS playback is specified with "Use DMA for sample download" enabled; it sounds like samples are not being fully downloaded, with the bass notes cutting off and other instruments missing altogether. This does not occur when DMA sample download is disabled.

To Reproduce
Steps to reproduce the behavior:

  1. Set up Inside with GUS GF1 audio playback and "Use DMA for sample downloading" enabled
  2. Run demo

Expected behavior
Music to play back correctly regardless of the DMA setting

Emulator configuration

  • Machine: AMI 486 clone
  • CPU: i486DX2/66
  • Graphics/sound cards: Diamond Stealth 32, Gravis UltraSound
  • Installed OS: MS-DOS 6.22

Host machine

  • OS: Windows 10
  • Emulator version: v17

Tandy 1000 keyboard missing F11/F12 keys

Describe the bug
Tandy 1000 keyboards have F11 & F12 keys that are incorrectly not emulated.

To Reproduce
Steps to reproduce the behavior:

  1. Press F11/F12 (eg in Deskmate)

Expected behavior
F11/F12 to work

Emulator configuration

  • Machine: Tandy 1000

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.