MartyPC v0.4.0

MartyPC v0.4.0 is released. MartyPC is a cross-platform IBM PC emulator written in Rust. Development began April, 2022. It should build on Windows, Linux and MacOS (Including M1)

MartyPC Changelog:
This update brings a massive list of new features, so here’s a quick summary:
New sound system and sound devices including Adlib, Disney Sound Source, and SN76489 3-voice sound
New floppy disk image library enabling a ton of new floppy disk image types and support for several copy protections
New frontend supporting both native and WASM, support for native file dialogs
ATA device emulation, supported by XT-IDE and jr-IDE devices for larger hard disk support
VGA support and improved PCjr and TGA video emulation
Memory and register editing
New eframe Frontend
Some dependency API changes prompted me to switch window frameworks. The active Desktop frontend for MartyPC is now based on a customized fork of eframe.
Native File Dialogs
The RFD crate provides access to native file dialogs for your particular OS, including File Open and Save dialogs.
Startup errors are now reported via a system MessageBox. You should no longer have to rely on the command line output to tell why MartyPC didn’t start.
New Devices
VGA
The IBM VGA card is emulated at last. MartyPC’s VGA is based off its EGA implementation, with appropriate changes and additions. Clocked up to 28Mhz, the VGA is an expensive device to run at a character-clock accurate rate, so you may need a fast computer. Mode 13h and ModeX/Y are supported (Wolfenstein 3D’s ‘ModeY’ works!).
The Video Card debugger window will show you the VGA’s register state, including the current palette in realtime.
XTIDE Hard Disk Controller
An XTIDE Rev 2 device can now be emulated. Since this BIOS is open-source, a machine configuration that includes hard drive support is now the default: ibm5160_xtide.
If you want the ‘authentic retro’ experience, the IBM/Xebec controller is still available as ibm5160_hdd as usual.
The VHD creator has been updated to support the wide selection of common hard drive geometries that the XTIDE can support. You’ll need to be running a machine with the XTIDE configured to see them.
It is now possible to take a VHD file from 86Box (assuming you created it as a ‘fixed’ VHD) and use it in MartyPC (and vice versa!).
jr-IDE Hard Disk Controller
To go along with the XTIDE, you can now emulate the jr-IDE. This gives you LBA-enabled ATA hard disk
support and 736k of conventional memory backfill for your PCjr.
Adlib Music Card
The first audio device in MartyPC besides the PC speaker is the Adlib Music Card. OPL2 emulation is provided by the highly-accurate nuked-opl3 library.
SN76489
The 3-voice sound chip found in the IBM PCjr and Tandy 1000 will be automatically installed on these machines.
Disney Sound Source
If you have a parallel adapter specified, you can attach a Disney Sound Source, and enjoy various squawky digitized sounds in games that support it (Mostly Disney titles, Wolf 3d, Prince of Persia, and a few others. See Mobygames for a list of supported titles).
Memory Expansion Cards
Conventional memory expansion cards can now be specified, at any address and with any capacity. It is possible to have non-contiguous memory regions if you decide to do so, but caveat emptor.
An overlay for the IBM PCjr called ‘pcjr_memory_sidecar’ will provide an extra 512k to bring your PCjr up to 640k.
Bitstream-level Disk Image Emulation
The inclusion of the fluxfox disk image library has greatly expanded MartyPC’s floppy disk image support, and enabled support for several copy protection schemes.
Disk Image Support
Fluxfox supports reading a wide array of disk image formats:
TD0 (TeleDisk)
IMD (ImageDisk)
PSI (PCE Sector Image)
TC (TransCopy Image)
PRI (PCE Bitstream Image)
MFM (HxC/MFM Bitstream Image)
HFE (v1) (HxC Bitstream Image)
86f (86Box Disk Image)
MFI (Mame Floppy Image)
SCP (SuperCardPro Image)
RAW (Kryoflux stream file set)
Disk image loading is multithreaded so large disk images can be loaded without pausing the emulator.
Bitstream Image Writing
Fluxfox can write bitstream images to 86f and PRI formats.
Disk Image Visualization
fluxfox also enables a new Floppy Image info window, including a Disk View that shows a graphical visualization of the
disk surface.
Zip Floppy Mounting
Thanks to rust-fatfs, we can now dynamically build FAT12 images. This enables
mounting ZIP archives as floppy images. Of course the contents must fit! By default, an image of
the largest supported size for the applicable drive will be created. There are a few options as well to enable
creation of bootable diskettes.
See the Wiki for more information.
Memory Visualizer
Using the new Memory Visualizer window, you can now view the contents of memory graphically, interpreting raw
bytes as rendered text mode, or 1,2,4 or 8bpp pixels. This is a good way to explore the contents of memory, and when
investigating a running game one can find things like the game’s back buffer as well as sprites loaded into memory.
New Debugger Features
A floppy controller debug window shows operational state and command logs.
A debug window for the SN76489 shows channel state with optional UV meters and oscilloscope displays.
The memory viewer will now resolve memory-mapped addresses, although what is shown in those regions is device-specific.
The memory viewer now supports memory editing.
The CPU state viewer now supports editing registers and flags when the CPU is paused.
The Disassembly viewer will now disassemble instructions in memory-mapped regions, such as PCjr cartridges.
Display interrupt numbers as hex in the IVT viewer
Show both source and return address in the Call Stack
Frontend Bug Fixes / Improvements
Mouse capture is even easier, with double-click to capture and middle-click to release implemented by default.
The new Sound menu has been improved with the ability to mute and adjust the volume of sound sources.
Toggle the display between the window background and a GUI widget window. Shaders are also available
in windowed mode (With the wgpu backend)!
Apply a bezel overlay in windowed mode. This works best with a shader preset that applies curvature,
and the ‘accurate’ aperture selected. This isn’t really a shader effect, just a GUI trick.
Fixed an issue where MartyPC would receive keyboard events even though it didn’t have keyboard focus.
Prevent the emulated machine from receiving keyboard events when paused.
Reset the keyboard on loss of window focus (prevents stuck keys).
Revamped Input/Output menu allows control of peripherals:
Mouse sensitivity/speed is now adjustable via the Mouse menu.
The Keyboard menu allows for resetting the keyboard (clearing any stuck keys).
Mouse capture mode can toggle between emulating Mouse or Light Pen
Game port joysticks can be mapped to host controllers
Performance Viewer: Show stats for Audio sources
File tree browser:
Refactored floppy media menu
Added support for creating new disk images, formatted or unformatted
Display directories before files
Display correct icons for different file types
Core Bug Fixes / Improvements
Improvements to TGA/PCjr video emulation
Support for hi-res 2bpp mode (ColorPaint)
Palette lookups in 2bpp modes
Framerate fixes in low resolution (160×200) modes.
Support for 256k TGA apertures (1000HX)
Added 8086 subtype of 8088 CPU for 16-bit data bus support
Improved accuracy of the Programmable Interrupt Timer (PIT)
Reworked wait state calculations
Improved DRAM refresh DMA emulation
Removed timer hack for Area 5150 end credits as DMA accuracy is now sufficient.
Many tests in Acid88 now pass
BUS/PPI: Improve PCjr keyboard handling
PPI: Fixed memory bank DIP switch masks for memory configurations less than <64K.
Emulation speed improved overall by approximately 10%.
Distribution Changes
Added new definition for an alternate 64K PCjr ROM dump (Thanks ImperatorBanana)
Added new definition for an alternate 32K BASIC C1.0 ROM (thanks Torinde)
Added new definitions for the IBM 5160 (thanks jriwanek)
Added XUB and jr-IDE BIOS images
Added BOCHS VGA BIOS build for 8088 (thanks phix)
Dependency Updates
Too many to list
Known Issues
Multi-window support (and thereby multi-video-card support) is current unimplemented under eframe.
I hope to return this feature in 0.4.1.
VGA is still a bit of a work in progress, and you may see display glitches in certain situations, especially if scrolling is involved. Please report any issues you encounter.
PCjr floppy disk support is incomplete (currently read only)

Download: MartyPC v0.4.0
Source: Here

About admin

Avatar photo
I love it all!! 😍 😍

Check Also

PPSSPP Git (2025/05/14)

PPSSPP Git (2025/05/14) is compiled. PPSSPP is a fast and portable PSP emulator for Android, …

Leave a Reply