SPC/AT Emulator FAQ

Recommended host system configuration for emulator usage:
- 2x core CPU at least (faster cores - better speed);
- 2 Gb of RAM at least (for bigger size of emulated RAM);
- OpenGL-compatible videocard (for faster screen rendering);
- Display with 70Hz refresh rate (or VSync should be disabled in videocard settings - for smooth VGA emulation).
- WinXP/32 at least (but Win7/64 is a reference platform for Windows-oriented versions at the moment).

Currently emulated hardware:
- x86 and x64 CPU models emulation (from P5/K5 to Sandy Bridge/Bulldozer microarchitectures):
    * Legacy (16/32-bit) and Long Mode (compatibility and 64-bit mode) are implemented;
    * instruction set extensions up to SSE 4.2 are implemented currently, AVX is in progress;
    * virtualization extensions emulation (VMX and SVM) are in progress (partially implemented);
    * Note: not all features of real models are implemented yet, just most necessary for software to work.
- VGA/SVGA with 8/16/32-bit colors support (currently only VGABios-compatible PCI SVGA card available in the release version);
- up to 512Mb RAM and 16Mb VRAM emulation (and more in 64-bit version);
- HDD (ATA/IDE) and CD/DVD (ATAPI) emulation;
- SoundBlaster 2.01 (8-bit/44Khz mono) with OPL2;
- PS/2 mouse and keyboard interface emulation;
- various other supporting stuff (PCI, RTC/CMOS, PIT, PIC, DMAC, etc.);
- MS-DOS/FreeDOS, Win3.x/9x/NT/2k/XP guests support (and some other);
- multiplatform emulation core, including dynarec (and GUI) (currently supported hosts: x86, x64, ARM32; with ARM64 in progress);
- save states support.

WIP chipsets usage (general information):
- "Generic" chipsets are not include any motherboard-specific things (like SIO, HWM, PLL etc.), so could be used to model any motherboard,
which is based on such chipset (with various degree of success, depending on required motherboard).
- Boot devices for WIP chipsets are managed by BIOS/CMOS settings, not via emulator interface. So try to change BIOS settings in case of boot error message.
- If something is not work with some chipset, try another chipset (or older chipset: more modern chipset - more it is complex/harder to implement).
- When switching various chipsets/MB "on the fly", while using the same GUI OS installation, take in to account that this is not how things normally
done in real life (where OS commonly installed on some machine/chipset and reinstalled again when machine/chipset is changed).
So next things could happen (not necessary) when switching chipsets:
    * some OS-es (legacy) could show errors or fail to boot on startup (during device detection phase). So try to boot them several times, until all drivers
will be installed, so they start to boot flawlessly;
    * some OS-es (more modern) could refuse to boot, if chipset hardware is incompatible with OS kernel, which was installed during OS installation.
Such operating systems should be used with original (or compatible) chipsets only, and reinstalled if another chipset/MB is required.
    * most of WIP chipsets are limited to supported CPU range (like in reality). So if you use OS, which depends on x64 CPU or SSE support,
and switched current chipset to MMX-generation chipset, CPU model will be capped to P/MMX and such OS will fail to boot with it (like in reality).
- DOS Mode is partially limited with WIP chipsets: EMS is not emulated, unlike for SeaBIOS chipset (to not mess with their memory detection/configuring).
- For information about specific chipset try to search internet by chipset/MB (using "440BX P2B-F" etc.).
- Same for accelerated video cards: if there some bugs present while using some guest OS, try to change guest color depth to any other, or try some other driver version.
Note: PCI/AGP chipsets are supported for legacy OS compatibility mostly (Win9x/DOS etc.). For the modern OS needs PCI Express chipsets are in on-going development (including UEFI support).

How to configure emulator for maximum performance:
1) ALL: Select "OpenGL renderer" in "Video" menu (it is faster then WinGDI);
2) ALL: Specify "Auto" CPU frequency in "Computer" menu settings (floating frequency mode, depending on host CPU speed);
3) ALL: Set 70Hz of refresh rate for the host display (and/or disable VSync in the host video card settings);
4) DOS: Select "DOS Mode" in "Computer" menu for faster DOS application performance (but better not to use this mode with
other OS emulation - due to 64Mb memory limit, and EMS emulation conflicting with Win9x memory manager at least);
5) WIN: In some gaming cases legacy config (P/Pro) could be somewhat faster then modern due to strong FPU emulation (good optimization over years) and
relatively weak multimedia instructions (MMX/SSE) emulation at moment (not yet optimized for max.performance, mostly at compatibility improvement stage yet).
But it should be decided by actual game performance (not by CPU speed in title bar - multimedia instructions do more work in less CPU cycles, so Mhz counter
could be lower for them, even if they faster then FPU).
6) OPTIONAL: For even more performance better to close all other opened applications at host OS. Even if mostly idling they could stole some (pretty small)
amount of performance from emulator sometimes (could be seen in benchmarks) due to very tight timings necessary for emulation loop.

What to do if some guest OS is not boot in the emulator:
1) check if "DOS Mode" disabled in "Computer" menu (it should be used only for DOS due to limited RAM and emulated EMS);
2) select reference BIOS in settings (SeaBIOS 1.6.3);
3) mount at least one HDD (not all OS-s tolerant to absent HDDs in emulator);
4) select stable CPU frequency (some OS-s could be sensible to stable timings, especially at boot time);
5) some OS-s have by-design quirks (NT4 not loves deep CPUID, so should be launched using legacy CPU models only).
If above steps not helps, probably this guest OS is not supported by emulator yet.

How to manage FDD, HDD and DVD/CD drives in emulator?:
- To insert disk image to slot "double click" on disk icon on toolbar, or use "Drives" menu;
- To disable some disk image (w/o ejecting it) make "right mouse button click" on icon;
- To eject disk image from slot use "Drives menu" (pretty rare needed, better to use previous operation);
- To check what file insered in disk slot mouse cursor can be moved over disk icon (so tooltip will be shown);
- Order, in which disks boots by default: FDD, then DVD/CD, then HDD. It could be changed via "Drives" menu (if necessary).
- Empty hard disk images could be downloaded from the emulator website:
    * 32Mb-2Gb, for all systems (4.8Mb, zip) (compatible with almost all guest OS-s, including MS-DOS and Win9x);
    * 4-8Gb, for WinXP and later (1.7Mb, 7zip) (for more modern guest OS-s like WinXP; too large for MS-DOS usage).
- UPDATE-2014: Now you can mount folders as virtual hard disks in Read/Execute mode (using "Drives" menu, or by pressing Ctrl + DblClick by mouse on drive icon).
  * After mounting, when emulation started, drive icon shows state of mounted folder:
      - Green icon color (when emulation active) - all files mounted;
      - Red icon color - not all files mounted (folder too big, better to mount just some smaller subfolder);
  * Better to restart emulation after each mount (to flush guest OS disk caches).
  * Save states are completly compatible with this feature (changes stored to .sav-file).
  * You can check, what folder currently mounted in a drive, by stopping mouse cursor over the drive icon on toolbar (so tooltip will be shown).
  * NOTE: Mounted folders has very limited space to write files (temporary buffer only - just to allow execution of software, which need writing something to this drive).
So all changes to mounted folder discarded after closing emulator (but preserved between Start/Stop emulation sequences and in saved states).
  * NOTE: Better not to use mountable folders while installing GUI OS-es. Because such OS-es can try to store some temporary files on this drive, and fail if no free space
available (with blue screen or something). So better completly detach such "virtual drives" (mounted folders) and use only HDD and DVD images while installing OS.
After installation finished, such drives could be freely used.

When some or another device/feature will become available in emulator?:
When become ready for release (around 35% of emulator codebase is activated in the development version only, because not yet enought mature for releases yet
(or just waiting proper time for release - when related features become ready too).
Main principle: gaming stuff have lower priority comparing to system-oriented stuff. This is answer to questions of past like "why Sound Blaster emulation was
added only in 2013, even while project was started in 2007, and even dynarec was implemented that year". And answer to similar questions of modern times
(now about 3D stuff).

Is there any schedule for releases?:
The project is developed using part of spare time, amount of which depends on various real-life things. So pretty hard to make any release planning, knowing that
in some years could be very little time for anything, even in some periods pretty much enought (depends on real life). So releases appear "when ready" mostly,
and pauses of various length happen pretty often in project development. This helps to preserve interest and don't abandon project during these long years
of development, which are required by projects of such complexity. So new release will always happen sooner or later (or various updates at least) :)

What timings used in the CPU emulation currently?:
All CPUs use Pentium timings currently (mostly the same as in 2007 version of emulator - this is useful for comparison of core performance progress over time).
Model-specific timings were implemented for 8086-80486 CPUs in previous versions, and could be approximatly implemented for all modern models in future
(they were always table-based in code, not inlined in instructions). But considering superscalar/pipelined architecture of modern CPUs this is pretty
useless efforts - they never will be very realistic cycle-wise.
And there never was reference x86 machine implementation at all (except probably original IBM 8086/286 models). All later x86 machines have various CPU's,
caches, chipsets, buses, RAM and VRAM speeds, etc., with various impact on resulting performance (from slow to fast even with the same CPU).
So complete functional model (from programmers point of view - with all checks and quirks implemented to launch real OS-s and firmware), which allows to
reach relatively usable levels of performance, is most practical approach to more-or-less modern x86 computer emulation.
Note: emulator uses only CPU timings for performance reference (speed of CPU emulation). Not any cache/bus/VGA penalties, which have nothing to do with
emulation performance, just inflate Mhz counter (and very doubtful even from realistical point of view w/o careful research on real hardware of specific machine),
so not planned to be added even as an option.

How to report bugs?:
Only via e-mail (it is not checked too often, so be patient). I'm not too much interesting to spend time hanging at forums (spare time is a valuable resource:).
Most welcomed bug reports: related to working of emulator on various host systems with various host hardware and OS-s.
In case of guest applications: gaming bugs have less priority, comparing to system-level software (AOI of the emulator).

Video card drivers for guest Windows:
Default video card in the emulator is VGABios-compatible SVGA card (similar to these used in Bochs and QEMU projects, so some kind of industry standard).
Windows 9x/NT do not include SVGA-drivers for it, so could not install them automatically.
To get Hi/TrueColor SVGA modes in Windows you should install drivers manually:
1) Windows should be installed on PCI bus machine (so PCI video adapter could be detected);
2) then "Standard (generic) PCI VGA adapter" driver (in "MyComputer/Device Manager") should be replaced (updated)
with the VBE miniport driver, downloaded from:
  - [Win9x]: http://navozhdeniye.narod.ru/vbe9x.htm;
  - [WinNT]: http://navozhdeniye.narod.ru/vbemp.htm;
  (better to use universal (\UNI) driver versions in both cases);
  - [WinXP]: no need any drivers, VESA modes supported out of box.
3) then you can select any VESA-supported color depth (8/16/24/32) and screen resolution via "Display Settings" panel (as always).
NOTE: SeaVGABIOS has some limitations and quirks, but mostly nice with system-level software, so become default for emulator now (instead of legacy VGABIOS).
NOTE: More advanced video card models currently available only in development version (some due deprecation from previous versions, some aimed to be
re-released at some point in future - like 2D/3D-accelerators).

Sound Tips:
- Emulator currently emulates Sound Blaster 2.01 with the next settings: Port 220, IRQ 7 (5), DMA 1.
- IRQ 7 (by default - needed by some DOS games, like from Sierra) or IRQ 5 is configured via "Sound/Sound Blaster" menu in emulator.
- If Windows configure this settings incorrectly (after installation), you should go to the Sound Blaster driver settings (in "MyComputer/Device Manager"),
disable automatic configuration and set correct values manually.
- Some newer Windows (XP) have not drivers for original SB (only for SB16). So disable "unknown device" in the device settings to avoid queries for driver on reboot.
SB16 emulation will be released at some point too (not much a priority currently).

DVD/CD in guest Windows:
If guest Windows was installed, while DVD/CD disk image was present in slot (drive was not empty), then Windows should detect it automatically.
In other case (if Windows not see DVD/CD drive, even if disk image present in it), in "My Computer/Device Manager" need to click "Refresh" button,
so Windows could find this device (only once after fresh installation).

MS-DOS guest tips:
FreeDOS boot disks available at: http://www.freedos.org/download.
NOTE: Before first start of DOS game check and configure sound settings for this game (via sndsetup.exe or similar tool), else some games could stuck on start.
Recommended CONFIG.SYS content for MS-DOS (or simply use Win9x boot floppy disk):
device=himem.sys   - to enable Extended Memory support (above 1Mb)
dos=high   - move DOS to high memory (free more memory for apps)
files=40   - IMPORTANT, even mandatory for some games!
rem devicehigh=oakcdrom.sys /D:mscd001
   - CD-ROM support (remove "rem" when needed, place back to free memory)
rem devicehigh=emm386.exe 4096
    - to enable Expanded Memory support (remove "rem" when needed);
    - but it is not recommended, because it switches CPU to slow Virtual86 mode;
    - better to use "MainMenu->Computer->DOS Mode" to emulate EMM (fast!).
Recommended AUTOEXEC.BAT content for MS-DOS (or simply use Win9x boot floppy disk):
   - Sound Blaster configuration (port, IRQ, DMA, type). When configuring manually (in games): Port 220, IRQ 7, DMA 1
    NOTE: IRQ 7 (by default, needed by some DOS games, like from Sierra) or IRQ 5 is configured via Sound Blaster menu in emulator.
@SET PATH=D:\QUAKE1   - path to Quake1 folder (if needed), to avoid "OMPT=" message from DPMI extender.
rem lh mscdex.exe /D:mscd001 /L:F
   - CD-ROM support (remove "rem" when needed, place back to free memory)
lh ctmouse.exe   - mouse driver (small Cute Mouse from http://cutemouse.sourceforge.net or any other suitable - like "mouse.com" by Microsoft)
lh vc.com   - Volkov Commander (http://vc.kiev.ua/download) or DOS Navigator (http://www.dnosp.com/) file manager.

Linux guest tips:
- Currently only LiveDVD of various distributions mostly tested;
- Already installed system should boots faster, than from LiveDVD (no need to decompress, only necessary drivers need to be loaded, etc.);
- Better to make Linux booting process more verbose (to make progress more visible in case of slow booting):
  * press Tab or F6 (for Ubuntu) and remove "quiet" and "splash" from boot options;
  * add "debug" optionally (if necessary).

OS/2 Warp 4 guest tips:
To boot from eComStation Demo DVD (http://www.ecomstation.com/democd/):
  - select "Boot with menu for own values" on startup menu (not default values!);
  - change "Target Hardware" from "Modern Hardware" to "Legacy Hardware";
  - press F10 and Enter to continue;
  - wait until desktop will be shown. If only taskbar shown, but not desktop icons visible - then reboot and try again (see below for explanation).
NOTE: System timer emulation (or probably RTC) in SPC/AT is not completly compatible with eComStation. So system clock not works (although all other stuff
seems work fine). Also this can cause some other bugs (on startup only):
  - desktop sometimes not boots completly (taskbar shown, but no icons on desktop). Only reboot can help;
  - all boots Ok, but initial "Help/Welcom" window can be launched several times on startup (not only one window, as it should be). So simply close all this windows,
and continue to work as usual.
NOTE: Original (and modernized) IBM OS/2 DemoCD-s exist also, better compatible with emulator.

All trademarks mentioned above are property of their respective owners.

Belarus 2014-2017