It's been nearly 9 months since the last release of MartyPC. During that time I have rewritten or refactored much of the emulator. Check out this enormous changelog!
Lots of new features mean lots of new bugs, though. I expect a bugfix 0.2.1 will follow shortly. Hopefully, MartyPC now has a much better framework for more frequent releases going forward.
New Features
New Display Manager Framework
New graphics backend abstraction layer will eventually allow frontends built for other graphics backends such as
SDL
New scaling modes: Choose from Fixed, Integer, Fit and Stretch scaling options
Display Apertures: Choose how much of the emulated display field you wish to see:
No overscan
'Monitor-accurate' overscan
Full overscan
Full display field including hblank and vblank periods (for debugging)
Hardware aspect correction: Aspect correction is now performed in the shader for reduced CPU load
Multi-window support: Define additional output windows in the configuration file
Multiple windows can display the same video card, with different display options
Windows can be set to a fixed size or scale factor, or made completely resizable
Windows can be pinned 'always on top'
Windows can be toggled full-screen via CONTROL-ALT-ENTER hotkey
Shader support: A basic CRT shader is built into the new display scaler
Internal shader features:
Barrel distortion
Corner radius (rounded corners)
Monochrome phosphor simulation
Scanline emulation synchronized to emulated video resolution
Presets for the internal scaler can be defined in configuration and applied to different windows
New ROM Definition Framework
ROM set definitions are no longer hardcoded. They will be read from ROM set definition TOML files in the ROM
directory.
Add your own custom ROM sets or contribute missing ROM definitions to MartyPC!
New Machine Configuration Framework
Define multiple Machine hardware configurations, name them, select them in the main config or via command line
argument.
Configure the amount of conventional memory, the number and type of floppy drives, video cards, serial ports and
more!
New Resource Manager Framework
Paths are to 'resource ids' are now fully configurable, and facilities to build file trees are provided.
MartyPC can create needed directories on startup. The Floppy and VHD browsers have been rewritten to take
advantage of this new system, and so now you can organize your media directories into subdirectories for
convenience.
EGA Video Card
EGA is back! A character-clocked EGA implementation is here, although it may still be a bit rough around the
edges.
EGA will continue to be polished in upcoming releases.
Features:
Functional emulation of each of the 5 LSI chips on the EGA
Per-scanline Pel panning - effects like the wibble in Beverly Hills Cop work
Line compare register - See the status bar in Catacombs 3d!
CGA compatibility mode - Play Alleycat!
Software fonts - change your DOS font, or see a graphical mouse cursor in text mode (Norton Utilities 6.0)
Known issues:
Visual glitches with n0p's Windows 3.0 EGA driver patched for 8088
Some more obscure registers not properly emulated / investigated (SOM, etc.)
Aperture definitions / adjustments not final
Implementation may be slow in parts - more optimization needed (SIMD?)
MDA Video Card
Not quite as a flashy as EGA, but the MDA card type is now also supported, and moreover, you can install an MDA
alongside a CGA or EGA card for a dual head display.
9th column rendering and underline attributes supported
Includes the framework for a LPT port, which will now be detected
Known issues:
Needs optimization - due to the 9-dot character clock making 64-bit aligned writes impossible, MDA is
currently slower to emulate than EGA.
New Keyboard System
MartyPC now performs low-level emulation of a Model F keyboard instead of directly translating OS input events to
the core
Model M emulation to come
Configurable typematic rate and delay
International keyboard layouts are now supported via translation files.