I would like to give a heads-up about the new PC emulator on the block. It is called “MartyPC”, which indeed is a reference to Marty McFly from the Back To The Future movies. And indeed, that is a tribute to our 8088 MPH PC demo, which had various references to these movies.
And yes, that means that this PC emulator intends to be cycle-exact, in order to run 8088 MPH. So here is a video demonstrating it running Area 5150:
Because, long story short: The emulator started development before Area 5150 was released, but as it turns out, Area 5150 was easier to render correctly, as it doesn’t require emulation of the NTSC composite video signal. But 8088 MPH does run in the emulator as well, as developer GloriousCow assures us. He just wants to put a bit more work into the video signal to get more accurate colours, before releasing a video capture of that demo.
Speaking of video, note that MartyPC correctly renders the ENTIRE display area, including overscan, which means we get proper borders and overscanned effects, as used in Area 5150.
So wait, didn’t we already have an emulator that runs 8088 MPH? No, I said we had an emulator that *doesn’t break* when running 8088 MPH. It was close, but it was not cycle-exact, so it didn’t look exactly the same as on real hardware. It would speed up or slow down in various parts.
Not this emulator. MartyPC really *is* cycle-exact. And it is open source, available on Github. And as you can see, it is written in Rust. A somewhat unusual choice for emulators, as they are mostly written in C or C++. But Rust is an interesting and very new and modern language, and it is very suitable for this sort of low-level work.
What’s also cool is that GloriousCow is documenting his work on his blog. He has only just started blogging, so at the time of writing there are only two technical articles (one on DMA, and one on CGA waitstates). But they are very detailed, and very readable as well, with diagrams, oscilloscope signal views and whatnot, so this looks very promising indeed!
All in all, this is finally a PC emulator that TRULY tries to do exactly what the hardware does. Which has been a pet peeve of mine for years, given that emulators for most other platforms have been designed this way.
Pingback: [Ordi.] MartyPC v0.1.1 - Emu-France
Hello!
Installing on Linux Mint (K:6.5.0/FW:22.04), at the last command I have lost. Could anybody tell, what does this error mean? I have installed Rust 1.77.2, but “cargo run -r” command fails. What should I do? Any help? Thank you very much!
$:~/.local/share/martypc/install$ cargo run -r
Updating crates.io index
Updating git repository
https://github.com/dbalsom/egui_martypc.git
error: failed to get
egui
as a dependency of packagemarty_egui v0.2.1 (/home/oem/.local/share/martypc/lib/frontend/marty_egui)
Caused by:
failed to load source for dependency
egui
Caused by:
Unable to update https://github.com/dbalsom/egui_martypc.git?branch=0_24_2_winit_0_29_15#dd87e164
Caused by:
failed to fetch into: /home/oem/.cargo/git/db/egui_martypc-5b4ec09f77c3e414
Caused by:
network failure seems to have happened
if a proxy or similar is necessary
net.git-fetch-with-cli
may help herehttps://doc.rust-lang.org/cargo/reference/config.html#netgit-fetch-with-cli
Caused by:
SSL error: unknown error; class=Ssl (16)
$:~/.local/share/martypc/install$