diff --git a/CMakeLists.txt b/CMakeLists.txt index 04480de8..19efa1c1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,6 +7,7 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake/modules) include(${CMAKE_SOURCE_DIR}/includes/includes.cmake) include(${CMAKE_SOURCE_DIR}/cmake/apple.cmake) +include(${CMAKE_SOURCE_DIR}/cmake/debugdefines.cmake) # TODO: This whole thing is jank, replace with a real way to determine cpu type if(WIN32) @@ -97,6 +98,7 @@ else() set(PCEM_INCLUDE_DIR "include" CACHE STRING "PCem Include File Directory") endif() message("PCem Program Directories:") +message(" PCem Prefix Directory: ${CMAKE_INSTALL_PREFIX}") message(" PCem Share Directory: ${PCEM_SHARE_DIR}") message(" PCem Binary Directory: ${PCEM_BIN_DIR}") message(" PCem Library Directory: ${PCEM_LIB_DIR}") @@ -132,3 +134,4 @@ if(USE_EXPERIMENTAL) add_subdirectory(experimental) endif() +include(${CMAKE_SOURCE_DIR}/cmake/install.cmake) diff --git a/NOTICE b/NOTICE index e7918ef1..922f31f6 100644 --- a/NOTICE +++ b/NOTICE @@ -1,4 +1,4 @@ -PCem uses a bit of code from some other projects to add funtionality to the program. +PCem uses a bit of code from some other projects to add functionality to the program. The following are projects used and their authors and copyright notices/licenses DOSBox diff --git a/README.meson.md b/README.meson.md deleted file mode 100644 index 5b567512..00000000 --- a/README.meson.md +++ /dev/null @@ -1,421 +0,0 @@ -# [PCem](https://pcem-emulator.co.uk/) -![C/C++ CI](https://github.com/sarah-walker-pcem/pcem/actions/workflows/c-cpp.yml/badge.svg) -## Download: [Windows](https://pcem-emulator.co.uk/files/PCemV17Win.zip)/[Linux](https://pcem-emulator.co.uk/files/PCemV17Linux.tar.gz) - -Latest version: v17 [Changelog](CHANGELOG.md) - -PCem is licensed under GPL v2.0, see [COPYING](COPYING) for more details. - -You can submit patches on our [forum](https://pcem-emulator.co.uk/phpBB3). Before you do, please note the [guidelines](https://pcem-emulator.co.uk/phpBB3/viewtopic.php?f=3&t=5) for submitting patches. - -:exclamation: 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 -- Meson -- Ninja - -Open a terminal window, navigate to the PCem directory then enter: -``` -meson --buildtype release build -cd build -ninja -DESTDIR="$(pwd)"/install meson install -``` - -then `./install/bin/pcem` to run. - -The Linux/BSD versions store BIOS ROM images, configuration files, and other data in `~/.pcem`. - -Meson configure options are : -``` - --buildtype release : Generate release build. Recommended for regular use. - --buildtype debug : Compile with debugging enabled. - -Duse-networking=true : Build with networking support. - -Duse-pcap-networking=true : Build with pcap networking support. (On by default needs USE_NETWORKING to compile) Requires libpcap - -Duse-alsa=true : Build with support for MIDI output through ALSA. Requires libasound. - -Duse-plugin-engine=true : Build with plugin support. Builds libpcem-plugin-api and links PCem with it. -``` - -If you are using --buildtype debug, there are some more debug options you can enable if needed -``` - -Dslirp-debug=true : Build PCem with SLIRP_DEBUG debug output - -Drecompiler-debug=true : Build PCem with RECOMPILER_DEBUG debug output - -Dne2000-debug=true : Build PCem with NE2000_DEBUG debug output - -Demu8k-debug-registers=true : Build PCem with EMU8K_DEBUG_REGISTERS debug output - -Dsb-dsp-record-debug=true : Build PCem with SB_DSP_RECORD_DEBUG debug output - -Dmach64-debug=true : Build PCem with MACH64_DEBUG debug output - -Dplugin-debug=true : Build PCem with PLUGIN_DEBUG debug output - -Dextra-debug=true : Build PCem with DEBUG_EXTRA debug output - -Dprinter-debug=true : Build PCem with PRINTER_DEBUG debug output -``` - -They are some extra modules you can add if you build with `-Dallow-experimental-code=true`. 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. -``` - -Duse-experimental-pdc=true : Build PCem with Professional Graphics Controller support. - -Duse-experimental-printer=true : 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](#8088-based)
[8086](#8086-based)
[286](#286-based)
[386](#386-based)
[486](#486-based)
[Pentium](#pentium-based)
[Super Socket 7](#super-socket-7-based) -Graphics | [Basic](#basic-cards)
[Unaccelerated (S)VGA cards](#unaccelerated-svga-cards)
[2D accelerated SVGA cards](#2d-accelerated-svga-cards)
[3D accelerated SVGA cards](#3d-accelerated-svga-cards)
[3D only cards](#3d-only-cards) -Sound | [Cards](#sound-cards) -HDD Controller | [Cards](#hdd-controller-cards) -Misc | [Cards](#misc-cards) - -### [Software Tested](TESTED.md) (list) -- [DOS](TESTED.md#dos)
-- [Windows](TESTED.md#windows)
-- [Windows NT](TESTED.md#windows-nt)
-- [OS/2](TESTED.md#os2)
-- [Linux](TESTED.md#linux)
-- [Applications](TESTED.md#applications)
-- [Games](TESTED.md#games)
-- [Demos](TESTED.md#demos)
-- [Emulators](TESTED.md#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]](#system-note-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]](#system-note-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
| ./huyndaixte/super16te_v2.00id.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]](#system-note-1) [[5]](#system-note-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
| ./huyndaixte/super16te_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]](#system-note-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]](#system-note-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]](#system-note-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]](#system-note-1) [[5]](#system-note-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]](#system-note-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]](#system-note-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]](#system-note-5)
8086 at 8 MHz
640KB RAM
Built-in VGA | pc2086/40179.ic129
pc2086/40180.ic132
pc2086/40186.ic171 -1989 | Tandy 1000SL/2 [[5]](#system-note-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]](#system-note-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]](#system-note-1) [[5]](#system-note-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]](#system-note-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]](#system-note-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]](#system-note-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]](#system-note-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]](#system-note-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]](#system-note-5)
386SX at 25 MHz
2MB - 16MB RAM
Built-in Oak SVGA | acer386/acer386.bin
acer386/oti067.bin -1992 | Amstrad MegaPC [[2]](#system-note-2) [[5]](#system-note-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]](#system-note-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]](#system-note-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]](#system-note-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]](#system-note-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]](#system-note-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]](#system-note-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]](#system-note-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]](#system-note-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]](#graphics-note-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]](#graphics-note-2)| S3 ViRGE/325 based
2MB - 4MB VRAM | s3virge.bin -S3 ViRGE/DX [[3]](#graphics-note-3)| S3 ViRGE/DX based
2MB - 4MB VRAM | 86c375_1.bin - -### 3D only cards -Hardware | Addl. Info ---- | --- -3DFX Voodoo Graphics [[4]](#graphics-note-4)| 3D accelerator. Widely supported in late 90s games. -Obsidian SB50 [[5]](#graphics-note-5)| Voodoo with 2 TMUs -3DFX Voodoo 2 [[6]](#graphics-note-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]](#sound-note-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](http://code.google.com/p/xtideuniversalbios/).
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. diff --git a/changelog.html b/changelog.html deleted file mode 100644 index 25dc6561..00000000 --- a/changelog.html +++ /dev/null @@ -1,219 +0,0 @@ -

PCem v18

-

Changes in v18

- -

Added the following machines to v18

- -

Developer Changes to v18

- -

PCem v17

- -

PCem v16

- -

PCem v15

- -

PCem v14

- -

PCem v13.1

- -

PCem v13

- -

PCem v12

- -

PCem v11

- -

PCem v10.1

- -

PCem v10

- -

PCem v9

- -

PCem v8.1

- -

PCem v8

- -

PCem v0.7

- -

PCem v0.6

- -

PCem v0.5

- -

PCem v0.41a

- -

PCem v0.41

- -

PCem v0.4

- -

PCem v0.3

- -

PCem v0.2a

- -

PCem v0.2

- -

PCem v0.1

- diff --git a/cmake/debugdefines.cmake b/cmake/debugdefines.cmake new file mode 100644 index 00000000..4ab1ceaf --- /dev/null +++ b/cmake/debugdefines.cmake @@ -0,0 +1,35 @@ +set(PCEM_DEFINES ${PCEM_DEFINES} PLUGIN_DIR="${CMAKE_INSTALL_PREFIX}/${PCEM_PLUGIN_DIR}") + +if(CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo") + set(PCEM_DEFINES ${PCEM_DEFINES} DEBUG) + + if(PCEM_SLIRP_DEBUG) + set(PCEM_DEFINES ${PCEM_DEFINES} SLIRP_DEBUG) + endif() + if(PCEM_RECOMPILER_DEBUG) + set(PCEM_DEFINES ${PCEM_DEFINES} RECOMPILER_DEBUG) + endif() + if(PCEM_NE2000_DEBUG) + set(PCEM_DEFINES ${PCEM_DEFINES} NE2000_DEBUG) + endif() + if(PCEM_EMU8K_DEBUG_REGISTERS) + set(PCEM_DEFINES ${PCEM_DEFINES} EMU8K_DEBUG_REGISTERS) + endif() + if(PCEM_SB_DSP_RECORD_DEBUG) + set(PCEM_DEFINES ${PCEM_DEFINES} SB_DSP_RECORD_DEBUG) + endif() + if(PCEM_MACH64_DEBUG) + set(PCEM_DEFINES ${PCEM_DEFINES} MACH64_DEBUG) + endif() + if(PCEM_NE2000_DEBUG) + set(PCEM_DEFINES ${PCEM_DEFINES} NE2000_DEBUG) + endif() + if(PCEM_DEBUG_EXTRA) + set(PCEM_DEFINES ${PCEM_DEFINES} DEBUG_EXTRA) + endif() + if(PCEM_PRINTER_DEBUG) + set(PCEM_DEFINES ${PCEM_DEFINES} PRINTER_DEBUG) + endif() +else() + set(PCEM_DEFINES ${PCEM_DEFINES} RELEASE_BUILD) +endif() diff --git a/cmake/install.cmake b/cmake/install.cmake new file mode 100644 index 00000000..8b5aa675 --- /dev/null +++ b/cmake/install.cmake @@ -0,0 +1,108 @@ +install(TARGETS pcem RUNTIME DESTINATION ${PCEM_BIN_DIR}) + +install(DIRECTORY ${CMAKE_SOURCE_DIR}/nvr/ DESTINATION ${PCEM_SHARE_DIR}/nvr/default) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/430vx) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/acer386) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/ami286) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/ami386) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/ami386dx) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/ami486) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/amixt) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/ataripc3) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/bull_micral_45) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/cbm_pc10) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/cbm_sl386sx25) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/cmdpc30) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/compaq_pii) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/compaq_pip) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/dells200) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/deskpro) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/deskpro386) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/dtk) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/dtk386) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/ecs386_32) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/endeavor) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/epson_pcax) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/epson_pcax2e) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/epson_pcax3) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/europc) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/fic_va503p) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/ga686bx) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/gd5430) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/gdc212m) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/genxt) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/gw286ct) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/hot-433) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/huyndaixt) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/huyndaixte) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/i8550021) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/i8555081) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/i8580111) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/ibmat) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/ibmpc) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/ibmpcjr) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/ibmps1) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/ibmps1_2121) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/ibmps1_2133) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/ibmps1es) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/ibmps2_m30_286) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/ibmps2_m70_type3) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/ibmxt) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/ibmxt286) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/infowaym) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/jukopc) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/kmxc02) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/leadingedge_modelm) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/ltxt) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/lxt3) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/mach64gx) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/megapc) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/mr386dx) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/ncr_pc4i) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/olivetti_m24) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/oti067) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/p55t2p4) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/p55tvp4) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/p55va) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/pb410a) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/pb520r) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/pb570) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/pb_l300sx) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/pc1512) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/pc1640) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/pc200) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/pc2086) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/pc3086) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/pc5086) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/ppc512) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/px386) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/pxxt) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/revenge) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/sis496) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/spc4200p) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/spc4216p) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/spc4620p) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/spc6000a) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/spc6033p) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/super286tr) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/t1000) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/t1200) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/t3100e) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/tandy) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/tandy1000hx) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/tandy1000sl2) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/to16_pc) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/tulip_tc7) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/tvga9000b) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/voodoo3_2000) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/voodoo3_3000) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/vs440fx) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/win486) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/xi8088) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/zappa) +install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/zdsupers) +install(FILES ${CMAKE_SOURCE_DIR}/docs/configs.txt DESTINATION ${PCEM_SHARE_DIR}/configs) +if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") + install(FILES ${CMAKE_SOURCE_DIR}/docs/pcem.man.1 DESTINATION share/man/man1/pcem.man) +endif() +install(DIRECTORY ${CMAKE_SOURCE_DIR}/includes/public/ DESTINATION ${PCEM_INCLUDE_DIR} FILES_MATCHING PATTERN *.h) \ No newline at end of file diff --git a/experimental/printer_epsonlx810/CMakeLists.txt b/experimental/printer_epsonlx810/CMakeLists.txt index d534da10..d8221318 100644 --- a/experimental/printer_epsonlx810/CMakeLists.txt +++ b/experimental/printer_epsonlx810/CMakeLists.txt @@ -13,4 +13,4 @@ set(EPSON_LX810_SRC add_library(printer_epsonlx810 SHARED ${EPSON_LX810_SRC} ${EPSON_LX810_HEADER}) target_link_libraries(printer_epsonlx810 ${PCEM_LIBRARIES} Freetype::Freetype) -set_target_properties(printer_epsonlx810 PROPERTIES SUFFIX ".pcem") \ No newline at end of file +set_target_properties(printer_epsonlx810 PROPERTIES SUFFIX ".pplg") \ No newline at end of file diff --git a/experimental/printer_epsonlx810/lpt_epsonlx810.c b/experimental/printer_epsonlx810/lpt_epsonlx810.c index 62ca57fb..2d081302 100644 --- a/experimental/printer_epsonlx810/lpt_epsonlx810.c +++ b/experimental/printer_epsonlx810/lpt_epsonlx810.c @@ -93,7 +93,6 @@ #include "lpt_epsonlx810.h" #include -#include #include #include #include diff --git a/experimental/printer_epsonlx810/plugin.c b/experimental/printer_epsonlx810/plugin.c index fec938f4..c0ce6734 100644 --- a/experimental/printer_epsonlx810/plugin.c +++ b/experimental/printer_epsonlx810/plugin.c @@ -1,5 +1,5 @@ #include -#include +#include #include #include "lpt_epsonlx810.h" diff --git a/includes/includes.cmake b/includes/includes.cmake index 750e7e26..4f174e3b 100644 --- a/includes/includes.cmake +++ b/includes/includes.cmake @@ -1,25 +1,3 @@ -set(PCEM_PRIVATE_API ${PCEM_PRIVATE_API} - ${CMAKE_SOURCE_DIR}/includes/private/bswap.h - ${CMAKE_SOURCE_DIR}/includes/private/fdi2raw.h - ${CMAKE_SOURCE_DIR}/includes/private/filters.h - ${CMAKE_SOURCE_DIR}/includes/private/ibm.h - ${CMAKE_SOURCE_DIR}/includes/private/io.h - ${CMAKE_SOURCE_DIR}/includes/private/pch.h - ${CMAKE_SOURCE_DIR}/includes/private/pgc_palettes.h - ${CMAKE_SOURCE_DIR}/includes/private/plat-dinput.h - ${CMAKE_SOURCE_DIR}/includes/private/plat-joystick.h - ${CMAKE_SOURCE_DIR}/includes/private/plat-keyboard.h - ${CMAKE_SOURCE_DIR}/includes/private/plat-midi.h - ${CMAKE_SOURCE_DIR}/includes/private/plat-mouse.h - ${CMAKE_SOURCE_DIR}/includes/private/pzx.h - ${CMAKE_SOURCE_DIR}/includes/private/resources.h - ${CMAKE_SOURCE_DIR}/includes/private/rtc.h - ${CMAKE_SOURCE_DIR}/includes/private/rtc_tc8521.h - ${CMAKE_SOURCE_DIR}/includes/private/scamp.h - ${CMAKE_SOURCE_DIR}/includes/private/thread.h - ${CMAKE_SOURCE_DIR}/includes/private/timer.h - ) - include_directories(${CMAKE_CURRENT_SOURCE_DIR}/includes/private) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/includes/private/bus) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/includes/private/cdrom) diff --git a/includes/private/plugin-api/config.h b/includes/private/plugin-api/config.h index 358c0fb9..e7ecd8de 100644 --- a/includes/private/plugin-api/config.h +++ b/includes/private/plugin-api/config.h @@ -1,6 +1,28 @@ #ifndef _CONFIG_H_ #define _CONFIG_H_ -#include +#include + +extern char *get_filename(char *s); +extern void append_filename(char *dest, char *s1, char *s2, int size); +extern void append_slash(char *s, int size); +extern void put_backslash(char *s); +extern char *get_extension(char *s); + +extern void config_load(int is_global, char *fn); +extern void config_save(int is_global, char *fn); +extern void config_dump(int is_global); +extern void config_free(int is_global); + +extern char config_file_default[256]; +extern char config_name[256]; + +typedef struct config_callback_t { + void (*loadconfig)(); + void (*saveconfig)(); + void (*onloaded)(); +} config_callback_t; +extern config_callback_t config_callbacks[CALLBACK_MAX]; +extern int num_config_callbacks; #endif /* _CONFIG_H_ */ diff --git a/includes/private/plugin-api/device.h b/includes/private/plugin-api/device.h index 5efb2947..07cb0a02 100644 --- a/includes/private/plugin-api/device.h +++ b/includes/private/plugin-api/device.h @@ -2,7 +2,16 @@ #define _DEVICE_H_ #include -#include + +extern device_t *current_device; +extern char *current_device_name; +extern int model; + +int device_get_config_int(char *name); +char *device_get_config_string(char *s); +int model_get_config_int(char *s); +char *model_get_config_string(char *s); +device_t *model_getdevice(int model); void device_init(); void device_add(device_t *d); diff --git a/includes/private/plugin-api/paths.h b/includes/private/plugin-api/paths.h index d2f92f03..6b19aca1 100644 --- a/includes/private/plugin-api/paths.h +++ b/includes/private/plugin-api/paths.h @@ -7,11 +7,8 @@ extern char nvr_path[512]; extern char logs_path[512]; extern char screenshots_path[512]; extern char nvr_default_path[512]; -extern char plugins_default_path[512]; -extern char base_path[512]; void get_pcem_path(char *s, int size); -void get_pcem_base_path(char *s, int size); char get_path_separator(); void paths_init(); int dir_exists(char* path); @@ -32,6 +29,7 @@ void set_nvr_path(char *s); void set_logs_path(char *s); void set_configs_path(char *s); void set_screenshots_path(char *s); -void set_plugins_path(char *s); + +#define safe_strncpy(a, b, n) do { strncpy((a),(b),(n)-1); (a)[(n)-1] = 0; } while (0) #endif /* _PATHS_H_ */ diff --git a/includes/public/pcem/unsafe/config.h b/includes/public/pcem/config.h similarity index 51% rename from includes/public/pcem/unsafe/config.h rename to includes/public/pcem/config.h index 416578a0..5fe3e531 100644 --- a/includes/public/pcem/unsafe/config.h +++ b/includes/public/pcem/config.h @@ -3,40 +3,16 @@ #include +#define CFG_MACHINE 0 +#define CFG_GLOBAL 1 + extern float config_get_float(int is_global, char *head, char *name, float def); extern int config_get_int(int is_global, char *head, char *name, int def); extern char *config_get_string(int is_global, char *head, char *name, char *def); extern void config_set_float(int is_global, char *head, char *name, float val); extern void config_set_int(int is_global, char *head, char *name, int val); extern void config_set_string(int is_global, char *head, char *name, char *val); - extern int config_free_section(int is_global, char *head); - extern void add_config_callback(void(*loadconfig)(), void(*saveconfig)(), void(*onloaded)()); -extern char *get_filename(char *s); -extern void append_filename(char *dest, char *s1, char *s2, int size); -extern void append_slash(char *s, int size); -extern void put_backslash(char *s); -extern char *get_extension(char *s); - -extern void config_load(int is_global, char *fn); -extern void config_save(int is_global, char *fn); -extern void config_dump(int is_global); -extern void config_free(int is_global); - -extern char config_file_default[256]; -extern char config_name[256]; - -typedef struct config_callback_t { - void (*loadconfig)(); - void (*saveconfig)(); - void (*onloaded)(); -} config_callback_t; -extern config_callback_t config_callbacks[CALLBACK_MAX]; -extern int num_config_callbacks; - -#define CFG_MACHINE 0 -#define CFG_GLOBAL 1 - -#endif /* _PCEM_CONFIG_H_ */ \ No newline at end of file +#endif /* _PCEM_CONFIG_H_ */ diff --git a/includes/public/pcem/devices.h b/includes/public/pcem/devices.h index c137cc24..116b4412 100644 --- a/includes/public/pcem/devices.h +++ b/includes/public/pcem/devices.h @@ -123,4 +123,10 @@ extern void pcem_add_hddcontroller(HDD_CONTROLLER *hddcontroller); extern void pcem_add_networkcard(NETWORK_CARD *netcard); extern void pcem_add_device(device_t *device); +extern int pcem_device_get_config_int(device_t *device, char *name); +extern char *pcem_device_get_config_string(device_t *device, char *s); +extern int pcem_model_get_config_int(device_t *device, char *s); +extern char *pcem_model_get_config_string(device_t *device, char *s); +extern device_t *pcem_model_getdevice(int model); + #endif /* _PCEM_DEVICES_H_ */ diff --git a/includes/public/pcem/unsafe/devices.h b/includes/public/pcem/unsafe/devices.h deleted file mode 100644 index 06ebc455..00000000 --- a/includes/public/pcem/unsafe/devices.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef _UNSAFE_DEVICES_H_ -#define _UNSAFE_DEVICES_H_ - -#include - -extern device_t *current_device; -extern char *current_device_name; -extern int model; - -extern int device_get_config_int(char *name); -extern char *device_get_config_string(char *s); -extern int model_get_config_int(char *s); -extern char *model_get_config_string(char *s); -extern device_t *model_getdevice(int model); - -#endif /* _UNSAFE_DEVICES_H_ */ diff --git a/readme.html b/readme.html deleted file mode 100644 index 830b86c3..00000000 --- a/readme.html +++ /dev/null @@ -1,1407 +0,0 @@ -

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.

-

:exclamation: 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

-
cmake -DCMAKE_BUILD_TYPE=Release .
-make
-

BSD

-
cmake -DCMAKE_BUILD_TYPE=Release .
-gmake
-

then ./output/bin/pcem to run.

-

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

-

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_ALSA=ON              : 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.

- -

PCem emulates the following hardware (as of v17):

- ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
HardwareLinks
Systems8088
8086
286
386
486
Pentium
Super Socket 7
GraphicsBasic
Unaccelerated (S)VGA cards
2D accelerated SVGA cards
3D accelerated SVGA cards
3D only cards
SoundCards
HDD ControllerCards
MiscCards
-

Software Tested (list)

- -
-

Systems

-

8088 based

- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ReleaseMachineROM file needed
(within ./roms/ folder)
1981IBM 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
1983Compaq Portable Plus
8088 at 4.77 MHz
128KB - 640KB RAM
compaq_pip/Compaq Portable Plus 100666-001 Rev C.bin
1983IBM XT
8088 at 4.77 MHz
64KB - 640KB RAM
ibmxt/5000027.u19
ibmxt/1501512.u18
1983Leading Edge Model M
8088 at 7.16 MHz
128KB - 704KB RAM
leadingedge_modelm/Leading Edge - Model M - BIOS ROM - Version 4.71.bin
1984IBM 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
1984Tandy 1000 [5]
8088 at 4.77 MHz
128KB - 640KB RAM
Built-in 16 colour graphics
3 voice sound
tandy/tandy1t1.020
1985Commodore PC10
8088 at 4.77 MHz
640KB RAM CGA/Monochrome
cbm_pc10/cbm-pc10c-bios-v4.41-318085-08.bin
1985NCR PC4i
8088 at 4.77 MHz
256KB - 640KB RAM
ncr_pc4i/NCR_PC4i_BIOSROM_1985.BIN
1986DTK Clone XT
8088 at 8/10 MHz
64KB - 640KB RAM
dtk/dtk_erso_2.42_2764.bin
1986Phoenix XT clone
8088 at 8/10 MHz
64KB - 640KB RAM
pxxt/000p001.bin
1987Hyundai Super 16T
8088/8087 at 4.77/8.0 MHz
640KB RAM
EGA 16 colour graphics
./huyndaixte/super16te_v2.00id.bin
1987Tandy 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
1987Thomson TO16 PC
8088 at 9.54 MHz
512KB - 640KB RAM
to16_pc/TO16_103.bin
1987Toshiba T1000 [1] [5]
8088 at 4.77 MHz
512KB - 1024KB RAM
CGA on built-in LCD
t1000/t1000.rom
t1000/t1000font.rom
1987VTech Laser Turbo XT
8088 at 10 MHz
640KB RAM
ltxt/27c64.bin
1987Zenith 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
1988Atari PC3
8088 at 8 MHz
640KB RAM
ataripc3/AWARD_ATARI_PC_BIOS_3.08.BIN
1988Juko XT clonejukopc/000o001.bin
1988Schneider Euro PC
8088 at 9.54 MHz
512KB - 640KB RAM
europc/50145
europc/50146
1989AMI XT clone
8088 at 8+ MHz
64KB - 640KB RAM
amixt/ami_8088_bios_31jan89.bin
1989Hyundai Super 16TE
8088/8087 at 10 MHz
640KB RAM
EGA 16 colour graphics
./huyndaixte/super16te_v2.00id.bin
2015Xi8088
8088 at 4.77-13.33 MHz
640KB RAM
xi8088/bios-xi8088.bin
-

8086 based

- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ReleaseMachineROM file needed
(within ./roms/ folder)
1984Compaq Deskpro
8086 at 8 MHz
128KB - 640KB RAM
deskpro/Compaq - BIOS - Revision J - 106265-002.bin
1984Olivetti 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
1986Amstrad 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
1987Amstrad PC1640 [5]
8086 at 8 MHz
640KB RAM
Built-in Paradise EGA
Custom mouse port
pc1640/40043.v3
pc1640/40044.v3
pc1640/40100
1987Toshiba T1200 [1] [5]
8086 at 9.54 MHz
1MB - 2MB RAM
CGA on built-in LCD
t1200/t1200_019e.ic15.bin
t1200/t1000font.rom
1988Amstrad 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
1988Sinclair 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
1988VTech Laser XT3
8086 at 10 MHz
512KB - 1152KB RAM
lxt3/27c64d.bin
1989Amstrad PC2086 [5]
8086 at 8 MHz
640KB RAM
Built-in VGA
pc2086/40179.ic129
pc2086/40180.ic132
pc2086/40186.ic171
1989Tandy 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
1990Amstrad PC3086 [5]
8086 at 8 MHz
640KB RAM
Built-in VGA
pc3086/fc00.bin
pc3086/c000.bin
1991Amstrad PC5086
8086 at 8 MHz
640KB RAM
pc5086/sys_rom.bin
-

286 based

- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ReleaseMachineROM file needed
(within ./roms/ folder)
1984IBM AT
286 at 6 or 8 MHz
256KB - 16MB RAM
ibmat/at111585.0
ibmat/at111585.1
1986Compaq Portable II
286 at 8 MHz
256KB - 15MB RAM
compaq_pii/109739-001.rom
compaq_pii/109740-001.rom
1986IBM 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
1986Toshiba T3100e [1] [5]
286 at 12 MHz
1MB - 5MB RAM
CGA on gas-plasma display
t3100e/t3100e_font.bin
t3100e/t3100e.rom
1987IBM 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
1988Bull Micral 45
286 at 12 MHz
1MB - 6MB RAM
bull_micral_45/even.fil
bull_micral_45/odd.fil
1988Commodore PC30-III
286 at 12 MHz
512KB - 16MB RAM
cmdpc30/commodore pc 30 iii even.bin
cmdpc30/commodore pc 30 iii odd.bin
1988IBM PS/2 Model 30-286
286 at 10 MHz
1MB - 16MB RAM
Built-in VGA
MCA bus
ibmps2_m30_286/33f5381a.bin
1989Epson PC AX
286
256KB - 16MB RAM
epson_pcax/EVAX
epson_pcax/ODAX
1989Epson PC AX2e
286 at 12 MHz
256KB - 16MB RAM
epson_pcax2e/EVAX
epson_pcax2e/ODAX
1990AMI 286 clone
286 at 8+ MHz
512KB - 16MB RAM
ami286/amic206.bin
1990Award 286 clone
286 at 8+ MHz
512KB - 16MB RAM
award286/award.bin
1990Dell System 200
286 at 12 MHz
640KB - 16MB RAM
dells200/dell0.bin
dells200/dell1.bin
1990IBM 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

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

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ReleaseMachine
(+ addl. hardware)
CPU(s) SupportedROM file needed
(within ./roms/ folder)
1990IBM PS/2 Model 70 (type 4) [3]
2MB - 16MB RAM
Built-in VGA
MCA bus
486DX at 25 MHzibmps2_m70_type3/70-a_even.bin
ibmps2_m70_type3/70-a_odd.bin
1993AMI 486 clone
1MB - 32MB RAM
486 at 16-66 MHzami486/ami486.bin
1993Elonex PC-425X [5]
1MB - 256MB RAM
Built-in Trident TGUI9440CXi
486SX at 25 MHzelx_pc425x/elx_pc425x.bin
   or
elx_pc425x/elx_pc425x_bios.bin
elx_pc425x/elx_pc425x_vbios.bin
1993IBM PS/1 Model 2133 (EMEA 451)
2MB - 64MB RAM
Built-in Cirrus Logic GD5426
486SX at 25 MHzibmps1_2133/PS1_2133_52G2974_ROM.bin
1993Packard 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
1994AMI WinBIOS 486 clone
1MB - 32MB RAM
486 at 16-66 MHzwin486/ali1429g.amw
1995Award 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

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ReleaseMachine
(+ addl. hardware)
CPU(s) SupportedROM file needed
(within ./roms/ folder)
1994Intel 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
1995Intel Advanced/EV (Endeavor) [4]
1MB - 128MB RAM
Pentium at 75-133 MHz
Pentium Overdrive at 125-200 MHz
endeavor/1006cb0_.bi0
endeavor/1006cb0_.bi1
1995Intel Advanced/ZP (Zappa)
1MB - 128MB RAM
Pentium at 75-133 MHz
Pentium Overdrive at 125-200 MHz
zappa/1006bs0_.bio
zappa/1006bs0_.bi1
1995Packard 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
1995Packard 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
1996ASUS 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
1996ASUS 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
1996Award 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
1996Itautec Infoway Multimidia
8MB - 128MB RAM
Pentium at 75-133 MHz
Pentium Overdrive at 125-200 MHz
infowaym/1006bs0_.bio
infowaym/1006bs0_.bi1
1997Epox 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

- ------ - - - - - - - - - - - - - - - - -
ReleaseMachine
(+ addl. hardware)
CPU(s) SupportedROM file needed
(within ./roms/ folder)
1998FIC 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

- ------ - - - - - - - - - - - - - - - - -
ReleaseMachine
(+ addl. hardware)
CPU(s) SupportedROM file needed
(within ./roms/ folder)
1996Intel 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

- ------ - - - - - - - - - - - - - - - - -
ReleaseMachine
(+ addl. hardware)
CPU(s) SupportedROM file needed
(within ./roms/ folder)
1998Gigabyte 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.

- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SystemGraphicsAddl. Info**
Amstrad MegaPCParadise 90C11A development of the PVGA1 with 512KB VRAM
Acer 386SX/25NOak OTI-067Another 512KB SVGA clone
Amstrad PC1512CGAHas a new mode (640x200x16)X
Amstrad PC1640Paradise EGA 
Amstrad PC2086/PC3086Paradise PVGA1An early SVGA clone with 256KB VRAM
Amstrad PPC512/640CGA/MDAOutputs to 640x200 plasma display
Commodore SL386SX-25AVGA2256KB - 512KB VRAMX
Elonex PC-425XTrident TGUI9400CXi512KB VRAMX
IBM PCjrCGAHas various new modes:
160x200 x 16
320x200 x 16
640x200 x 4
X
IBM PS/1 Model 2011Stock VGA256KB VRAMX
IBM PS/1 Model 2121Basic (and unknown) SVGA256KB VRAMX
IBM PS/2 machinesStock VGA256KB VRAMX
Olivetti M24 [6]CGAHas double-res text modes + 640x400 modeX
Packard Bell PB410AHeadland HT-216 
Packard Bell PB520RCirrus Logic GD-5434 
Packard Bell PB570Cirrus Logic GD-5430 
Sinclair PC200CGACan output to TV @ 50hz (UK)
Tandy 1000Clone of PCjr videoWidely supported in 80s gamesX
Tandy 1000 SL/2Improved Tandy 1000Has support for 640x200x16X
Toshiba T-seriesCGAOutputs to built-in LCD or plasma displayX
-

[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

- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
HardwareAddl. InfoROM 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 ColorPlusAn enhanced CGA board with support for 320x200x16 and 640x200x4(none)
Wyse WY-700A CGA-compatible board with support for a 1280x800 mode(none)
MDSI GeniusMono portrait board with support for a 728x1008 mode8x12.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 coloursATI EGA Wonder 800+ N1.00.BIN
Hercules InColorAn enhanced Hercules with a custom 720x350 16 colour mode(none)
-

Unaccelerated (S)VGA cards

- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
HardwareAddl. InfoROM file needed
(within ./roms/ folder)
ATI Korean VGAATI-28800 based.
512KB VRAM
Supports up to 8-bit colour
Korean font support
atikorvga.bin
ati_ksc5601.rom
ATI VGA Edge-16ATI-18800 based
512KB VRAM
Supports up to 8-bit colour
vgaedge16.vbi
ATI VGA ChargerATI-28800 based
512KB VRAM
Supports up to 8-bit colour
bios.bin
AVGA2Also 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-16ET4000AX based
1MB VRAM
Supports up to 8-bit colour
Korean font support
et4000_kasan16.bin
kasan_ksc5601.rom
OAK OTI-037C256KB VRAM
Supports up to 8-bit colour
oti037/bios.bin
OAK OTI-067256KB - 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 SVGA256KB - 1MB VRAM
Supports up to 24-bit colour
trident.bin
Trident 9000B SVGA512KB VRAM
Supports up to 8-bit colour
tvga9000b/BIOS.BIN
Trident TGUI9400CXi1MB - 2MB VRAM
Supports up to 24-bit colour
9440.vbi
Trigem Korean VGAET4000AX based
1MB VRAM
Supports up to 8-bit colour
Korean font support
tgkorvga.bin
tg_ksc5601.rom
Tseng ET4000AX SVGA1MB VRAM
Supports up to 8-bit colour
et4000.bin
-

2D Accelerated SVGA cards

- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
HardwareAddl. InfoROM file needed
(within ./roms/ folder)
ATI Graphics Pro TurboMach64GX based
1MB - 4MB VRAM
mach64gx/bios.bin
ATI Video XpressionMach64VT2 based
2MB - 4MB VRAM
Has video acceleration
atimach64vt2pci.bin
Cirrus Logic GD-54281MB - 2MB VRAMMachspeed_VGA_GUI_2100_VLB.vbi
Cirrus Logic GD-54291MB - 2MB VRAM5429.vbi
Cirrus Logic GD-54301MB - 2MB VRAMgd5430/pci.bin
Cirrus Logic GD-5434 [1]2MB - 4MB VRAMgd5434.bin
Diamond Stealth 32 SVGAET4000/W32p based
1MB - 2MB VRAM
et4000w32.bin
IBM 1MB SVGA Adapter/ACirrus Logic GD5428 based
1 MB VRAM
Only supported on PS/2 models
SVGA141.ROM
Number Nine 9FXS3 Trio64 based
1MB - 2MB VRAM
s3_764.bin
Paradise Bahamas 64S3 Vision864 based
1MB - 4MB VRAM
bahamas64.bin
Phoenix S3 Trio32S3 Trio32 based
512KB - 2MB VRAM
86c732p.bin
Phoenix S3 Trio64S3 Trio64 based
1MB - 4MB VRAM
86c764x1.bin
Trident TGUI94401MB - 2MB VRAM9440.vbi
-

3D Accelerated SVGA cards

- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
HardwareAddl. InfoROM file needed
(within ./roms/ folder)
3DFX Voodoo Banshee (reference)Voodoo Banshee based
8MB - 16MB VRAM
pci_sg.rom
3DFX Voodoo 3 2000Voodoo 3 based
16MB VRAM
voodoo3_2000/2k11sd.rom
3DFX Voodoo 3 3000Voodoo 3 based
16MB VRAM
voodoo3_3000/3k12sd.rom
Creative Labs 3D Blaster BansheeVoodoo 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

- ---- - - - - - - - - - - - - - - - - - - - - -
HardwareAddl. 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

- ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
HardwareNotes
PC speakerThe standard beeper on all PCs. Supports samples/RealSound.
Tandy PSGThe 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 PSSJUsed 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 cardAn 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.
GameblasterThe 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!
AdlibHas a Yamaha YM3812, giving 9 voices of 2 op FM, or 6 voices plus a rhythm section. PCem uses the DOSBox dbopl emulator.
Adlib GoldOPL3 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 Ultrasound32 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 System16-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-2001SID6581. 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.HardwareNotesROM file needed
(within ./roms/ folder)
MFMFixed 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
MFMDTC 5150X8-bit MFM controller.
To configure drive types, run DEBUG.EXE and enter g=c800:5.
dtc_cxd21a.bin
MFMAT Fixed Disk AdapterMFM controller originally included in the IBM AT. Supported by all AT-compatible BIOSes.(none)
ESDIWestern Digital WD1007V-SE116-bit ESDI controller62-000279-061.bin
ESDIIBM ESDI Fixed Disk ControllerMCA ESDI controller. Only supported on PS/2 models.90x8969.bin
90x8970.bin
IDEStandard IDEStandard IDE controller. Supported by all AT-compatible BIOSes. Use this if in any doubt!(none)
IDEXTIDE8-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
IDEXTIDE (AT)16-bit IDE controller.ide_at.bin
IDEXTIDE (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
SCSILongshine LCS-6821N8-bit SCSI controller.Longshine LCS-6821N - BIOS version 1.04.bin
SCSIRancho RT1000B8-bit SCSI controller.Rancho_RT1000_RTBios_version_8.10R.bin
SCSITrantor T130B8-bit SCSI controller.trantor_t130b_bios_v2.14.bin
SCSIIBM SCSI Adapter with CacheMCA SCSI controller. Only supported on PS/2 models.92F2244.U68
92F2245.U69
SCSIAdaptec AHA-1542C16-bit SCSI controller.adaptec_aha1542c_bios_534201-00.bin
SCSIBusLogic BT-545S16-bit SCSI controller.BusLogic_BT-545S_U15_27128_5002026-4.50.bin
-
-

Misc Cards

- ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
HardwareNote
Serial mouseA Microsoft compatible serial mouse on COM1. Compatible drivers are all over the place for this.
M24 mouseI haven’t seen a DOS mouse driver for this yet but the regular scancode mode works as does the Windows 1.x driver.
PC1512 mouseThe PC1512’s perculiar quadrature mouse. You need Amstrad’s actual driver for this one.
PS/2 mouseA standard 2 button PS/2 mouse. As with serial, compatible drivers are common.
Microsoft PS/2 IntellimouseA PS/2 mouse with mouse wheel.
ATAPI CD-ROMWorks with OAKCDROM.SYS, VDD-IDE.SYS, and the internal drivers of every OS I’ve tried.
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index d008e5fb..3f5bc0eb 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,42 +1,24 @@ -set(PCEM_DEFINES ${PCEM_DEFINES} INST_PREFIX="${CMAKE_INSTALL_PREFIX}") - -if(PLUGIN_ENGINE) - set(PCEM_DEFINES ${PCEM_DEFINES} PLUGIN_ENGINE) -endif() - -if(CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo") - set(PCEM_DEFINES ${PCEM_DEFINES} DEBUG) - - if(PCEM_SLIRP_DEBUG) - set(PCEM_DEFINES ${PCEM_DEFINES} SLIRP_DEBUG) - endif() - if(PCEM_RECOMPILER_DEBUG) - set(PCEM_DEFINES ${PCEM_DEFINES} RECOMPILER_DEBUG) - endif() - if(PCEM_NE2000_DEBUG) - set(PCEM_DEFINES ${PCEM_DEFINES} NE2000_DEBUG) - endif() - if(PCEM_EMU8K_DEBUG_REGISTERS) - set(PCEM_DEFINES ${PCEM_DEFINES} EMU8K_DEBUG_REGISTERS) - endif() - if(PCEM_SB_DSP_RECORD_DEBUG) - set(PCEM_DEFINES ${PCEM_DEFINES} SB_DSP_RECORD_DEBUG) - endif() - if(PCEM_MACH64_DEBUG) - set(PCEM_DEFINES ${PCEM_DEFINES} MACH64_DEBUG) - endif() - if(PCEM_NE2000_DEBUG) - set(PCEM_DEFINES ${PCEM_DEFINES} NE2000_DEBUG) - endif() - if(PCEM_DEBUG_EXTRA) - set(PCEM_DEFINES ${PCEM_DEFINES} DEBUG_EXTRA) - endif() - if(PCEM_PRINTER_DEBUG) - set(PCEM_DEFINES ${PCEM_DEFINES} PRINTER_DEBUG) - endif() -else() - set(PCEM_DEFINES ${PCEM_DEFINES} RELEASE_BUILD) -endif() +set(PCEM_PRIVATE_API ${PCEM_PRIVATE_API} + ${CMAKE_SOURCE_DIR}/includes/private/bswap.h + ${CMAKE_SOURCE_DIR}/includes/private/fdi2raw.h + ${CMAKE_SOURCE_DIR}/includes/private/filters.h + ${CMAKE_SOURCE_DIR}/includes/private/ibm.h + ${CMAKE_SOURCE_DIR}/includes/private/io.h + ${CMAKE_SOURCE_DIR}/includes/private/pch.h + ${CMAKE_SOURCE_DIR}/includes/private/pgc_palettes.h + ${CMAKE_SOURCE_DIR}/includes/private/plat-dinput.h + ${CMAKE_SOURCE_DIR}/includes/private/plat-joystick.h + ${CMAKE_SOURCE_DIR}/includes/private/plat-keyboard.h + ${CMAKE_SOURCE_DIR}/includes/private/plat-midi.h + ${CMAKE_SOURCE_DIR}/includes/private/plat-mouse.h + ${CMAKE_SOURCE_DIR}/includes/private/pzx.h + ${CMAKE_SOURCE_DIR}/includes/private/resources.h + ${CMAKE_SOURCE_DIR}/includes/private/rtc.h + ${CMAKE_SOURCE_DIR}/includes/private/rtc_tc8521.h + ${CMAKE_SOURCE_DIR}/includes/private/scamp.h + ${CMAKE_SOURCE_DIR}/includes/private/thread.h + ${CMAKE_SOURCE_DIR}/includes/private/timer.h + ) include(${CMAKE_CURRENT_SOURCE_DIR}/bus/bus.cmake) include(${CMAKE_CURRENT_SOURCE_DIR}/cdrom/cdrom.cmake) @@ -80,125 +62,7 @@ set(PCEM_LIBRARIES ${wxWidgets_LIBRARIES} ${SDL2_LIBRARIES} ${OPENAL_LIBRARY} ${ include(${CMAKE_CURRENT_SOURCE_DIR}/plugin-api/plugin-api.cmake) -if(PLUGIN_ENGINE) - add_library(pcem-plugin-api SHARED ${PCEM_SRC_PLUGINAPI} ${PCEM_PUBLIC_API}) - target_link_libraries(pcem-plugin-api ${PCEM_LIBRARIES}) - target_compile_definitions(pcem-plugin-api PUBLIC ${PCEM_DEFINES}) - install(TARGETS pcem-plugin-api RUNTIME DESTINATION ${PCEM_BIN_DIR} LIBRARY DESTINATION ${PCEM_LIB_DIR} ARCHIVE DESTINATION ${PCEM_LIB_DIR}) - set(PCEM_LIBRARIES ${PCEM_LIBRARIES} pcem-plugin-api) -else() - set(PCEM_EMBEDDED_PLUGIN_API ${PCEM_SRC_PLUGINAPI} ${PCEM_PUBLIC_API}) -endif() - add_executable(pcem ${PCEM_SRC} ${PCEM_PRIVATE_API} ${PCEM_EMBEDDED_PLUGIN_API}) target_compile_definitions(pcem PUBLIC ${PCEM_DEFINES}) target_compile_options(pcem PUBLIC $<$:-fcommon> $<$:-fcommon>) target_link_libraries(pcem ${PCEM_LIBRARIES}) -install(TARGETS pcem RUNTIME DESTINATION ${PCEM_BIN_DIR}) - -install(DIRECTORY ${CMAKE_SOURCE_DIR}/nvr/ DESTINATION ${PCEM_SHARE_DIR}/nvr/default) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/430vx) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/acer386) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/ami286) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/ami386) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/ami386dx) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/ami486) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/amixt) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/ataripc3) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/bull_micral_45) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/cbm_pc10) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/cbm_sl386sx25) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/cmdpc30) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/compaq_pii) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/compaq_pip) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/dells200) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/deskpro) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/deskpro386) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/dtk) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/dtk386) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/ecs386_32) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/endeavor) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/epson_pcax) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/epson_pcax2e) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/epson_pcax3) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/europc) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/fic_va503p) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/ga686bx) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/gd5430) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/gdc212m) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/genxt) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/gw286ct) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/hot-433) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/huyndaixt) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/huyndaixte) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/i8550021) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/i8555081) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/i8580111) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/ibmat) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/ibmpc) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/ibmpcjr) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/ibmps1) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/ibmps1_2121) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/ibmps1_2133) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/ibmps1es) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/ibmps2_m30_286) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/ibmps2_m70_type3) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/ibmxt) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/ibmxt286) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/infowaym) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/jukopc) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/kmxc02) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/leadingedge_modelm) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/ltxt) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/lxt3) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/mach64gx) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/megapc) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/mr386dx) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/ncr_pc4i) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/olivetti_m24) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/oti067) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/p55t2p4) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/p55tvp4) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/p55va) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/pb410a) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/pb520r) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/pb570) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/pb_l300sx) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/pc1512) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/pc1640) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/pc200) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/pc2086) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/pc3086) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/pc5086) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/ppc512) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/px386) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/pxxt) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/revenge) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/sis496) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/spc4200p) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/spc4216p) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/spc4620p) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/spc6000a) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/spc6033p) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/super286tr) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/t1000) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/t1200) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/t3100e) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/tandy) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/tandy1000hx) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/tandy1000sl2) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/to16_pc) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/tulip_tc7) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/tvga9000b) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/voodoo3_2000) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/voodoo3_3000) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/vs440fx) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/win486) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/xi8088) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/zappa) -install(FILES ${CMAKE_SOURCE_DIR}/docs/roms.txt DESTINATION ${PCEM_SHARE_DIR}/roms/zdsupers) -install(FILES ${CMAKE_SOURCE_DIR}/docs/configs.txt DESTINATION ${PCEM_SHARE_DIR}/configs) -if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") - install(FILES ${CMAKE_SOURCE_DIR}/docs/pcem.man.1 DESTINATION share/man/man1/pcem.man) -endif() -install(DIRECTORY ${CMAKE_SOURCE_DIR}/includes/public/ DESTINATION ${PCEM_INCLUDE_DIR} FILES_MATCHING PATTERN *.h) diff --git a/src/pc.c b/src/pc.c index d1104c10..ed560eb2 100644 --- a/src/pc.c +++ b/src/pc.c @@ -63,6 +63,7 @@ #ifdef USE_NETWORKING #include "nethandler.h" +#include "plugin.h" #define NE2000 1 uint8_t ethif; int inum; @@ -238,6 +239,9 @@ void initpc(int argc, char *argv[]) { loadconfig(NULL); pclog("Config loaded\n"); + + load_plugins(); + // if (config_file) // saveconfig(); diff --git a/src/plugin-api/config.c b/src/plugin-api/config.c index b60c6ede..415fb0c5 100644 --- a/src/plugin-api/config.c +++ b/src/plugin-api/config.c @@ -461,4 +461,4 @@ void add_config_callback(void(*loadconfig)(), void(*saveconfig)(), void(*onloade config_callbacks[num_config_callbacks].saveconfig = saveconfig; config_callbacks[num_config_callbacks].onloaded = onloaded; num_config_callbacks++; -} \ No newline at end of file +} diff --git a/src/plugin-api/device.c b/src/plugin-api/device.c index f3a31bb2..e1358c4a 100644 --- a/src/plugin-api/device.c +++ b/src/plugin-api/device.c @@ -2,7 +2,7 @@ #include #include #include -#include +#include extern void *device_priv[256]; extern device_t *devices[DEV_MAX]; @@ -157,6 +157,64 @@ char *model_get_config_string(char *s) { return NULL; } +int pcem_device_get_config_int(device_t *device, char *s) { + device_config_t *config = device->config; + + while (config->type != -1) { + if (!strcmp(s, config->name)) + return config_get_int(CFG_MACHINE, device->name, s, config->default_int); + + config++; + } + return 0; +} + +char *pcem_device_get_config_string(device_t *device, char *s) { + device_config_t *config = device->config; + + while (config->type != -1) { + if (!strcmp(s, config->name)) + return config_get_string(CFG_MACHINE, device->name, s, config->default_string); + + config++; + } + return NULL; +} + +int pcem_model_get_config_int(device_t *device, char *s) { + device_config_t *config; + + if (!device) + return 0; + + config = device->config; + + while (config->type != -1) { + if (!strcmp(s, config->name)) + return config_get_int(CFG_MACHINE, device->name, s, config->default_int); + + config++; + } + return 0; +} + +char *pcem_model_get_config_string(device_t *device, char *s) { + device_config_t *config; + + if (!device) + return 0; + + config = device->config; + + while (config->type != -1) { + if (!strcmp(s, config->name)) + return config_get_string(CFG_MACHINE, device->name, s, config->default_string); + + config++; + } + return NULL; +} + int model_count() { int ret = 0; diff --git a/src/plugin-api/paths.c b/src/plugin-api/paths.c index 22c1a97e..56e99c08 100644 --- a/src/plugin-api/paths.c +++ b/src/plugin-api/paths.c @@ -6,8 +6,6 @@ #include "ibm.h" #include "wx-utils.h" -#define safe_strncpy(a, b, n) do { strncpy((a),(b),(n)-1); (a)[(n)-1] = 0; } while (0) - char default_roms_paths[4096]; char default_nvr_path[512]; char default_configs_path[512]; @@ -31,7 +29,6 @@ char screenshots_path[512]; char plugins_default_path[512]; char nvr_default_path[512]; -char base_path[512]; char get_path_separator() { #ifdef _WIN32 @@ -114,11 +111,6 @@ void set_screenshots_path(char *s) { append_slash(screenshots_path, 512); } -void set_plugins_path(char *s) { - safe_strncpy(plugins_default_path, s, 512); - append_slash(plugins_default_path, 512); -} - /* set the default roms paths, this makes them permanent */ void set_default_roms_paths(char *s) { safe_strncpy(default_roms_paths, s, 4096); @@ -211,31 +203,20 @@ void paths_init() { *p = 0; /* set up default paths for this session */ - get_pcem_base_path(base_path, 512); - - append_filename(s, base_path, "roms/", 512); + append_filename(s, pcem_path, "roms/", 512); set_roms_paths(s); - append_filename(s, base_path, "nvr/", 512); + append_filename(s, pcem_path, "nvr/", 512); set_nvr_path(s); - append_filename(s, base_path, "configs/", 512); + append_filename(s, pcem_path, "configs/", 512); set_configs_path(s); - append_filename(s, base_path, "screenshots/", 512); + append_filename(s, pcem_path, "screenshots/", 512); set_screenshots_path(s); - append_filename(s, base_path, "logs/", 512); + append_filename(s, pcem_path, "logs/", 512); set_logs_path(s); - - append_filename(s, base_path, "nvr/default/", 512); + append_filename(s, pcem_path, "nvr/default/", 512); set_default_nvr_default_path(s); - append_filename(s, base_path, "plugins/", 512); - set_plugins_path(s); add_config_callback(paths_loadconfig, paths_saveconfig, paths_onconfigloaded); - -} - -void get_pcem_base_path(char *s, int size) { - char *path = SDL_GetBasePath(); - strcpy(s, path); } void get_pcem_path(char *s, int size) { diff --git a/src/plugin-api/plugin-api.cmake b/src/plugin-api/plugin-api.cmake index 0cc31c43..fd96efdf 100644 --- a/src/plugin-api/plugin-api.cmake +++ b/src/plugin-api/plugin-api.cmake @@ -1,3 +1,7 @@ +if(PLUGIN_ENGINE) + set(PCEM_DEFINES ${PCEM_DEFINES} PLUGIN_ENGINE) +endif() + set(PCEM_PRIVATE_API ${PCEM_PRIVATE_API} ${CMAKE_SOURCE_DIR}/includes/private/plugin-api/config.h ${CMAKE_SOURCE_DIR}/includes/private/plugin-api/paths.h @@ -12,8 +16,7 @@ set(PCEM_PUBLIC_API ${PCEM_PUBLIC_API} ${CMAKE_SOURCE_DIR}/includes/public/pcem/devices.h ${CMAKE_SOURCE_DIR}/includes/public/pcem/logging.h ${CMAKE_SOURCE_DIR}/includes/public/pcem/plugin.h - ${CMAKE_SOURCE_DIR}/includes/public/pcem/unsafe/config.h - ${CMAKE_SOURCE_DIR}/includes/public/pcem/unsafe/devices.h + ${CMAKE_SOURCE_DIR}/includes/public/pcem/config.h ) set(PCEM_SRC_PLUGINAPI @@ -24,4 +27,14 @@ set(PCEM_SRC_PLUGINAPI plugin-api/device.c plugin-api/plugin.c plugin-api/wx-utils.cc - ) \ No newline at end of file + ) + +if(PLUGIN_ENGINE) + add_library(pcem-plugin-api SHARED ${PCEM_SRC_PLUGINAPI} ${PCEM_PUBLIC_API}) + target_link_libraries(pcem-plugin-api ${PCEM_LIBRARIES}) + target_compile_definitions(pcem-plugin-api PUBLIC ${PCEM_DEFINES}) + install(TARGETS pcem-plugin-api RUNTIME DESTINATION ${PCEM_BIN_DIR} LIBRARY DESTINATION ${PCEM_LIB_DIR} ARCHIVE DESTINATION ${PCEM_LIB_DIR}) + set(PCEM_LIBRARIES ${PCEM_LIBRARIES} pcem-plugin-api) +else() + set(PCEM_EMBEDDED_PLUGIN_API ${PCEM_SRC_PLUGINAPI} ${PCEM_PUBLIC_API}) +endif() diff --git a/src/plugin-api/plugin.c b/src/plugin-api/plugin.c index 418509c3..848e471a 100644 --- a/src/plugin-api/plugin.c +++ b/src/plugin-api/plugin.c @@ -9,6 +9,7 @@ #include "plugin.h" #include "tinydir.h" #include "paths.h" +#include "config.h" #include @@ -19,6 +20,35 @@ extern HDD_CONTROLLER *hdd_controllers[HDDCONTROLLERS_MAX]; extern NETWORK_CARD *network_cards[NETWORK_CARD_MAX]; extern LPT_DEVICE *lpt_devices[LPT_MAX]; +char plugin_path[512]; + +#ifdef PLUGIN_ENGINE +void set_plugin_path(char *s) { + safe_strncpy(plugin_path, s, 512); + set_screenshots_path(s); +} + +void pluginengine_load_config() +{ + char* cfg_plugin_path = config_get_string(CFG_GLOBAL, "Paths", "plugin_path", 0); + + if (cfg_plugin_path) + set_plugin_path(cfg_plugin_path); +} + +void pluginengine_save_config() +{ + config_set_string(CFG_GLOBAL, "Paths", "plugin_path", plugin_path); +} + +void pluginengine_init_config() +{ + char s[512]; + append_filename(s, pcem_path, "plugins/", 512); + set_plugin_path(s); +} +#endif + void init_plugin_engine() { memset(models, 0, sizeof(models)); memset(video_cards, 0, sizeof(video_cards)); @@ -26,24 +56,22 @@ void init_plugin_engine() { memset(sound_cards, 0, sizeof(sound_cards)); memset(hdd_controllers, 0, sizeof(hdd_controllers)); memset(network_cards, 0, sizeof(network_cards)); + + #ifdef PLUGIN_ENGINE + add_config_callback(pluginengine_load_config, pluginengine_save_config, pluginengine_init_config); + #endif } void load_plugins() { #ifdef PLUGIN_ENGINE tinydir_dir dir; - tinydir_open(&dir, plugins_default_path); + tinydir_open(&dir, plugin_path); - while (dir.has_next) - { + while (dir.has_next) { tinydir_file file; tinydir_readfile(&dir, &file); -#if defined(linux) - if (!strcmp(file.extension, "so")) -#elif defined(WIN32) - if (!strcmp(file.extension, "dll")) -#endif - { + if (!strcmp(file.extension, "pplg")) { pclog("plugin loading: %s\n", file.name); void (* initialize_loaded_plugin)(); #if defined(linux) @@ -51,40 +79,28 @@ void load_plugins() { char *plugin_name; handle = dlopen(file.path, RTLD_NOW); - if (!handle) - { + if (!handle) { error("Error: %s\n", dlerror()); - } - else - { + } else { *(void**)(&initialize_loaded_plugin) = dlsym(handle, "init_plugin"); - if (!initialize_loaded_plugin) - { + if (!initialize_loaded_plugin) { error("Error: %s\n", dlerror()); dlclose(handle); - } - else - { + } else { initialize_loaded_plugin(); } } #elif defined(WIN32) HMODULE handle = LoadLibrary(file.path); - if(!handle) - { + if(!handle) { error("Cannot load DLL: %s", file.path); - } - else - { + } else { *(void**)(&initialize_loaded_plugin) = GetProcAddress(handle, "init_plugin"); - if(!initialize_loaded_plugin) - { + if(!initialize_loaded_plugin) { error("Cannot load init_plugin function from: %s", file.path); - } - else - { + } else { initialize_loaded_plugin(); } } @@ -97,4 +113,4 @@ void load_plugins() { tinydir_close(&dir); #endif -} \ No newline at end of file +} diff --git a/src/wx-ui/wx-sdl2.c b/src/wx-ui/wx-sdl2.c index 30592292..2e391e51 100644 --- a/src/wx-ui/wx-sdl2.c +++ b/src/wx-ui/wx-sdl2.c @@ -471,34 +471,9 @@ int pc_main(int argc, char **argv) { network_card_init_builtin(); #endif -#ifdef __linux__ - char s[1024]; - /* create directories if they don't exist */ - if (!wx_setup(pcem_path)) - return FALSE; - - /* set up default paths */ - sprintf(s, "%s%s%c%s", pcem_path, "roms/", get_path_separator(), "/usr/share/pcem/roms/"); - set_default_roms_paths(s); - append_filename(s, pcem_path, "nvr/", 511); - set_default_nvr_path(s); - append_filename(s, "/usr/share/pcem/", "nvr/default/", 512); - set_default_nvr_default_path(s); - append_filename(s, pcem_path, "configs/", 511); - set_default_configs_path(s); - append_filename(s, pcem_path, "screenshots/", 511); - set_default_screenshots_path(s); - append_filename(s, pcem_path, "logs/", 511); - set_default_logs_path(s); - append_filename(s, pcem_path, "plugins/", 512); - set_plugins_path(s); -#endif - add_config_callback(sdl_loadconfig, sdl_saveconfig, sdl_onconfigloaded); add_config_callback(wx_loadconfig, wx_saveconfig, 0); - load_plugins(); - initpc(argc, argv); resetpchard(); diff --git a/tested.html b/tested.html deleted file mode 100644 index dc73579d..00000000 --- a/tested.html +++ /dev/null @@ -1,340 +0,0 @@ -

Software tested (v17):

-

DOS

-
    -
  • PC-DOS 1.0
  • -
  • MS-DOS 2.11
  • -
  • MS-DOS 3.30
  • -
  • MS-DOS 4.01
  • -
  • MS-DOS 5.0
  • -
  • MS-DOS 6.0
  • -
  • MS-DOS 6.22
  • -
-

Windows

-
    -
  • Windows 1.04
  • -
  • Windows/286 2.11
  • -
  • Windows/386 2.11
  • -
  • Windows 3.0
  • -
  • Windows 3.1
  • -
  • Windows for Workgroups 3.11
  • -
  • Windows 95
  • -
  • Windows 95 OSR2
  • -
  • Windows 98SE
  • -
  • Windows ME
  • -
-

Windows NT

-
    -
  • Windows NT 3.1
  • -
  • Windows NT 3.51
  • -
  • Windows NT 4 Workstation (SP6a)
  • -
  • Windows 2000
  • -
  • Windows XP
  • -
-

OS/2

-
    -
  • OS/2 v1.0
  • -
  • OS/2 v1.1
  • -
  • OS/2 v1.2
  • -
  • OS/2 v1.3
  • -
  • OS/2 v2.1
  • -
  • OS/2 Warp 3
  • -
  • OS/2 Warp 4
  • -
-

Linux

-
    -
  • Corel Linux 1.2
  • -
  • Mandriva LE 2005
  • -
  • Red Hat Linux 7.1 (Seawolf)
  • -
-

BeOS

-
    -
  • BeOS 5.0 Professional Edition
  • -
-

Applications

-
    -
  • 3DMark 2000
  • -
  • 3DMark 2001SE
  • -
  • After Dark 3.06
  • -
  • Cinemania 1994
  • -
  • Creative Writer
  • -
  • Cubasis
  • -
  • Encarta 1994
  • -
  • Fasttracker v2.08
  • -
  • PageMaker 5.0
  • -
  • PC Paintbrush 1.05
  • -
  • Photoshop 3.0
  • -
  • Smartsuite 97
  • -
  • Visual Basic 3.0
  • -
  • Visual C++ 6.0
  • -
  • Word for Windows 2.0
  • -
  • Winzip 6.2
  • -
-

Games

-
    -
  • 1602 AD (demo)
  • -
  • 3D Ultra Pinball Thrillride
  • -
  • A-10 Tank Killer
  • -
  • Actua Soccer
  • -
  • Adventure Pinball Forgotten Island (demo)
  • -
  • Aladdin
  • -
  • Alien vs Predator
  • -
  • Alien vs Predator 2 (demo)
  • -
  • All New World of Lemmings
  • -
  • Alone in the Dark
  • -
  • Alone in the Dark : The New Nightmare (demo)
  • -
  • Anachronox
  • -
  • Arkanoid
  • -
  • Armoured Fist 3 (demo)
  • -
  • Asteroids (1998)
  • -
  • B-17 Flying Fortress
  • -
  • Battle Chess
  • -
  • Battlezone
  • -
  • Battlezone II
  • -
  • Bejeweled
  • -
  • Beyond Castle Wolfenstein
  • -
  • Big Red Racing
  • -
  • Bio Menace
  • -
  • Black & White
  • -
  • Brix
  • -
  • Bugs Bunny Lost In Time (demo)
  • -
  • Cannon Fodder 2
  • -
  • Carnivores 2
  • -
  • Civilization
  • -
  • Civilization for Windows
  • -
  • Claw
  • -
  • Clive Barker’s Undying (demo)
  • -
  • Clockwiser
  • -
  • Command & Conquer : Red Alert
  • -
  • Command & Conquer : Red Alert 2
  • -
  • Command & Conquer : Tiberian Sun (demo)
  • -
  • Command & Conquer Renegade
  • -
  • Conquest
  • -
  • Corridor 7
  • -
  • Counter-Strike 2D
  • -
  • Crimson Skies (demo)
  • -
  • Croc
  • -
  • Curse of Monkey Island
  • -
  • Cutthroats (demo)
  • -
  • Daikatana
  • -
  • Dawn Patrol
  • -
  • Day of the Tentacle
  • -
  • Dance Dance Revolution
  • -
  • Dead Reckoning (demo)
  • -
  • Death Drome
  • -
  • Desert Strike
  • -
  • Digger
  • -
  • Dirt Track Racing (demo)
  • -
  • Disciples (demo)
  • -
  • Discworld II
  • -
  • Doom (v1.2)
  • -
  • Doom II (v1.666)
  • -
  • Double Dragon
  • -
  • Drakan (demo)
  • -
  • Duke Nukem 3D (v1.3D)
  • -
  • Dune
  • -
  • DX-Ball 2
  • -
  • Echelon
  • -
  • Ecstatica
  • -
  • Epic Pinball
  • -
  • Every Extend
  • -
  • Evolva (demo)
  • -
  • Expendable
  • -
  • Eye of the Beholder
  • -
  • Fallout Tactics (demo)
  • -
  • Final Fantasy VIII (demo)
  • -
  • Flashback
  • -
  • Flight Simulator 5
  • -
  • Frogger
  • -
  • Frontier : First Encounters
  • -
  • Gabriel Knight 3 (demo)
  • -
  • Giants : Citizen Kabuto
  • -
  • GLQuake
  • -
  • Grand Theft Auto 2
  • -
  • Half-Life
  • -
  • Halloween Harry
  • -
  • Heartlight
  • -
  • Hellbender
  • -
  • Hexen
  • -
  • High Heat Baseball 2002 (demo)
  • -
  • Hitch Hiker’s Guide to the Galaxy
  • -
  • Hocus Pocus
  • -
  • Homeworld Cataclysm (demo)
  • -
  • Incoming
  • -
  • James Pond 2 : Robocod
  • -
  • Jazz Jackrabbit
  • -
  • Jazz Jackrabbit 2
  • -
  • Jill of the Jungle
  • -
  • King’s Quest
  • -
  • King’s Quest II
  • -
  • King’s Quest III
  • -
  • Lemmings
  • -
  • Lemmings 2 : The Tribes
  • -
  • Lode Runner : The Legend Continues
  • -
  • Lotus III
  • -
  • Madden 2002 (demo)
  • -
  • Majesty (demo)
  • -
  • Maniac Mansion (enhanced)
  • -
  • Max Payne
  • -
  • MDK (Direct3D, USA release)
  • -
  • MechCommander 2
  • -
  • Mechwarrior 2
  • -
  • Mechwarrior 3
  • -
  • Megaman Legends
  • -
  • Metal Gear Solid
  • -
  • Microsoft Arcade
  • -
  • Microsoft Golf 99 (demo)
  • -
  • Midtown Madness 2 (demo)
  • -
  • Monaco Grand Prix (demo)
  • -
  • Monkey Island 2
  • -
  • Monster Bash
  • -
  • Monster Truck Madness
  • -
  • Mortal Kombat
  • -
  • Mortal Kombat 2
  • -
  • Mortal Kombat 3
  • -
  • Motorcross Madness (demo)
  • -
  • Mystic Towers
  • -
  • Nascar Heat
  • -
  • Need for Speed II SE
  • -
  • Need for Speed III
  • -
  • Need for Speed : High Stakes
  • -
  • NHL 2001 (demo)
  • -
  • No One Lives Forever
  • -
  • Oddworld : Abe’s Exoddus
  • -
  • One Must Fall 2097
  • -
  • Oni
  • -
  • Outlaws
  • -
  • Pacific Strike
  • -
  • Pacman Adventures in Time (demo)
  • -
  • Pharoah (demo)
  • -
  • Pinball Fantasies
  • -
  • Pinball Illusions
  • -
  • Police Quest
  • -
  • Police Quest 2
  • -
  • Porrasturvat
  • -
  • Power Drive
  • -
  • Prince of Persia
  • -
  • Prince of Persia 3D (demo)
  • -
  • Pro Pinball : The Web
  • -
  • Psycho Pinball
  • -
  • Quake
  • -
  • Quake II
  • -
  • Quake III Arena
  • -
  • Rayman 2 (demo)
  • -
  • Red Faction
  • -
  • Redline Racer
  • -
  • Rise of the Triad (v1.2)
  • -
  • Screamer
  • -
  • Sega Rally 2 (demo)
  • -
  • Sensible World of Soccer
  • -
  • Settlers 3 (demo)
  • -
  • Severance : Blade of Darkness (demo)
  • -
  • Shadow Company (demo)
  • -
  • Shadow Warrior
  • -
  • Shadowman (demo)
  • -
  • Sid Meier’s Alien Crossfire (demo)
  • -
  • SimCity 2000
  • -
  • SimCity Classic
  • -
  • SimTower
  • -
  • Sink or Swim
  • -
  • Soldat (1.0.5)
  • -
  • Sonic CD
  • -
  • Space Simulator
  • -
  • Space Strike
  • -
  • Spider-Man (demo)
  • -
  • Springy Madness
  • -
  • Star Trek Hidden Evil (demo)
  • -
  • Star Trek Voyager Elite Force
  • -
  • Star Wars Jedi Academy
  • -
  • Starfleet Command 2 (demo)
  • -
  • Stargunner
  • -
  • Starlancer (demo)
  • -
  • Steel Beasts (demo)
  • -
  • Stunt Island
  • -
  • SWAT 3 Elite Edition (demo)
  • -
  • Syndicate
  • -
  • System Shock
  • -
  • Tanktics (demo)
  • -
  • Terminal Velocity
  • -
  • The Dig
  • -
  • The Humans
  • -
  • The Labyrinth (RealArcade version)
  • -
  • The Lost Vikings
  • -
  • The Ultimate Doom (v1.9)
  • -
  • Theme Hospital
  • -
  • Theme Park
  • -
  • Tomb Raider
  • -
  • Tomb Raider II
  • -
  • Tomb Raider The Last Revelation (demo)
  • -
  • Tony Hawk’s Pro Skater 2
  • -
  • Transport Tycoon
  • -
  • Transport Tycoon Deluxe
  • -
  • Tropico (demo)
  • -
  • Turrican 2
  • -
  • UFO : Enemy Unknown
  • -
  • Ultimate Ride (demo)
  • -
  • Unreal
  • -
  • Unreal Tournament
  • -
  • Unreal Tournament 2004 (Direct3D)
  • -
  • Wacky Wheels
  • -
  • Warlords Battlecry (demo)
  • -
  • Wheel of Time (demo)
  • -
  • Wing Commander
  • -
  • Wing Commander : Privateer
  • -
  • Wizkid
  • -
  • Wolfenstein 3D
  • -
  • World War III : Black Gold (demo)
  • -
  • Worms
  • -
  • Worms Armageddon
  • -
  • X-Com : Terror From The Deep
  • -
  • Xargon
  • -
  • Z : Steel Soldiers (demo)
  • -
  • Zak McKracken
  • -
  • Zone 66
  • -
-

Demos

-
    -
  • Cascada - Cronologia
  • -
  • Coma - Paimen
  • -
  • Complex - Cyboman 2
  • -
  • Complex - Dope
  • -
  • EMF - Verses
  • -
  • Exceed - Heaven 7
  • -
  • Future Crew - Second Reality
  • -
  • Gazebo - Cyboman
  • -
  • Halcyon - Lifeforms
  • -
  • Iguana - Heartquake
  • -
  • Impact Studios - Legend
  • -
  • Impact Studios - Project Angel
  • -
  • KFMF - Dance, Move, Shake
  • -
  • KFMF - Trip
  • -
  • Logic Design - Fashion
  • -
  • Majic 12 - Show
  • -
  • Majic 12 - Wish
  • -
  • Megabusters - Hellraiser
  • -
  • Orange - x14
  • -
  • Renaissance - Amnesia
  • -
  • Skull - Putre Faction
  • -
  • Tran - Ambience (flickery)
  • -
  • Tran - Luminati (flickery)
  • -
  • Tran - Timeless
  • -
  • Triton - Crystal Dream
  • -
  • Triton - Crystal Dream 2
  • -
  • Ultraforce - Coldcut
  • -
  • Ultraforce - Vector Demo
  • -
  • Valhalla - Solstice
  • -
  • Witan - Witan House
  • -
-

Emulators

-
    -
  • Beebem v1.02
  • -
  • BeebInC v0.99f
  • -
  • CPE v5.2i
  • -
  • DOSBox 0.74-3
  • -
  • Fellow 0.33
  • -
  • KGen98 v0.4b
  • -
  • PaCifiST v0.48
  • -
  • SNES9x v0.96
  • -
  • UltraHLE v1.0.0
  • -
  • vMac v0.1.9.1
  • -
  • ZSNES v0.800c
  • -