VOGONS


MartyPC

Topic actions

Reply 60 of 193, by Uka

User metadata
Rank Member
Rank
Member

GloriousCow, thank you very much for MartyPC!
Indeed, it is a rare thing to see so precise an emulator of IBM PC/XT with CGA 😀

I see that 0.1.4 is not out yet, so a few more notes about 0.1.3 (including some questions and wishes for new functionality).

1) Is support for protected floppy disks planned? That's probably the one thing that would eliminate the need for a real old PC (or PCE emulator) to play old games in the most authentic way. I mean *.TD0 and *.TC, maybe *.IMD as well.

2) It would be nice to add light theme - the interface is very dark now. Some keyboard shortcuts would be nice, too (for rebooting or making a screenshot).

3) I see that the fullscreen / scaling options are already in the works?

4) Similar to the previous wish - for now screenshots are made in 768x472 resolution with borders instead of 320x200.

5) Some booter games do not run for me - complaining that the disks is not write-protected. But it is - the image file is made to be "read-only"! In PCE and DOSBox it is enough for such games to launch, but MartyPC does not seem to recognize that...

Attachments

Reply 61 of 193, by GloriousCow

User metadata
Rank Member
Rank
Member
Uka wrote on 2023-08-26, 12:52:

1) Is support for protected floppy disks planned? That's probably the one thing that would eliminate the need for a real old PC (or PCE emulator) to play old games in the most authentic way. I mean *.TD0 and *.TC, maybe *.IMD as well.

Yes, it's something I'd like to add.

Uka wrote on 2023-08-26, 12:52:

5) Some booter games do not run for me - complaining that the disks is not write-protected. But it is - the image file is made to be "read-only"! In PCE and DOSBox it is enough for such games to launch, but MartyPC does not seem to recognize that...

MartyPC doesn't write to your floppy images unless you tell it to - but the in memory disk image is always writable. I will try to think of a good way to handle this...

MartyPC: A cycle-accurate IBM PC/XT emulator | https://github.com/dbalsom/martypc

Reply 62 of 193, by GloriousCow

User metadata
Rank Member
Rank
Member

Posting a sneak peek of MartyPC 0.2.0.

I've implemented a lot of people's suggestions, as well as dozens of bug fixes and many fundamental accuracy improvements derived from my recent hardware research.

Scali, I finally figured I could do a video of 8088MPH justice, so here it is (in 1440P):

https://www.youtube.com/watch?v=Y6sS1cVKJCA

MartyPC: A cycle-accurate IBM PC/XT emulator | https://github.com/dbalsom/martypc

Reply 63 of 193, by Scali

User metadata
Rank l33t
Rank
l33t
GloriousCow wrote on 2023-11-07, 01:38:

Scali, I finally figured I could do a video of 8088MPH justice, so here it is (in 1440P):

https://www.youtube.com/watch?v=Y6sS1cVKJCA

Ooh yea, that looks very nice indeed!
The composite colour seems accurate. And I like the CRT shader effect.

I guess the only thing missing for perfect accuracy is the slight bit of snow in the plasma effect.

http://scalibq.wordpress.com/just-keeping-it- … ro-programming/

Reply 64 of 193, by n0p

User metadata
Rank Member
Rank
Member
GloriousCow wrote on 2023-11-07, 01:38:
Posting a sneak peek of MartyPC 0.2.0. […]
Show full quote

Posting a sneak peek of MartyPC 0.2.0.

I've implemented a lot of people's suggestions, as well as dozens of bug fixes and many fundamental accuracy improvements derived from my recent hardware research.

Scali, I finally figured I could do a video of 8088MPH justice, so here it is (in 1440P):

https://www.youtube.com/watch?v=Y6sS1cVKJCA

Looks awesome! When should we expect a beta release?

Reply 65 of 193, by GloriousCow

User metadata
Rank Member
Rank
Member
n0p wrote on 2023-11-07, 12:07:

Looks awesome! When should we expect a beta release?

By the end of the year, at latest. I made the mistake of starting a new hardware feature, too, but that's coming along well so far (you can look at my recent commits if you want to spoil it!)

I'd like the new ROM management system to make it in, but maybe that will have to wait.

MartyPC: A cycle-accurate IBM PC/XT emulator | https://github.com/dbalsom/martypc

Reply 66 of 193, by n0p

User metadata
Rank Member
Rank
Member
GloriousCow wrote on 2023-11-07, 13:30:
n0p wrote on 2023-11-07, 12:07:

Looks awesome! When should we expect a beta release?

By the end of the year, at latest. I made the mistake of starting a new hardware feature, too, but that's coming along well so far (you can look at my recent commits if you want to spoil it!)

I'd like the new ROM management system to make it in, but maybe that will have to wait.

Hey, that's cool, really! Won't spoil 😀

May i suggest an option video = "None" as well?
When i needed to debug headless mode for Sergey's BIOS i hacked into CGA io.rs to disable I/O.
This option is not for everyone, so it's just a suggestion.

Reply 67 of 193, by GloriousCow

User metadata
Rank Member
Rank
Member
n0p wrote on 2023-11-07, 15:30:

May i suggest an option video = "None" as well?
When i needed to debug headless mode for Sergey's BIOS i hacked into CGA io.rs to disable I/O.
This option is not for everyone, so it's just a suggestion.

Sure, that's easily done.

MartyPC: A cycle-accurate IBM PC/XT emulator | https://github.com/dbalsom/martypc

Reply 68 of 193, by jal

User metadata
Rank Oldbie
Rank
Oldbie

What would be the easiest way to transfer files from host machine to MartyPC? Are there any Windows drivers/apps that allow the VHD to show up as a folder? I'm asking because I'm actively developing some code, and the advantage of DosBOX is its easy way to edit sourcecode in e.g. Notepad++ and then compiling/running it in DosBOX. I'd love to be able to just drag&drop stuf onto the hard disk (or floppy image, if need be).

Reply 69 of 193, by GloriousCow

User metadata
Rank Member
Rank
Member
jal wrote on 2023-11-13, 09:09:

What would be the easiest way to transfer files from host machine to MartyPC? Are there any Windows drivers/apps that allow the VHD to show up as a folder? I'm asking because I'm actively developing some code, and the advantage of DosBOX is its easy way to edit sourcecode in e.g. Notepad++ and then compiling/running it in DosBOX. I'd love to be able to just drag&drop stuf onto the hard disk (or floppy image, if need be).

Windows can natively mount VHD images, but you'd need to unmount it before MartyPC could use it again.
There are a few different methods by which I could eventually enable mounting of host folders within a DOS guest, but it might be a while before I can implement them.

That said, you can get a fairly convenient setup by using a utility called "Build Floppy Image".

Put bfi.exe in the same directory as martypc.exe. make a directory named 'makefloppy' and drop your files in there.
bfi -t=4 -f=floppy\autofloppy.img .\makefloppy

this will make a 720k floppy image 'autofloppy.img' out of the files in 'makefloppy'. MartyPC will reload the floppy image if you select it again, you don't have to eject the floppy first, so you can change files, rebuild the image and reload. This makes swapping files in and out decently quick, especially if you stick it in a batch script to start MartyPC every time.

https://web.archive.org/web/20051216040954/ht … sFile=bfi10.zip

MartyPC: A cycle-accurate IBM PC/XT emulator | https://github.com/dbalsom/martypc

Reply 70 of 193, by jal

User metadata
Rank Oldbie
Rank
Oldbie

Ok, cool, I'll take a look. Though having to execute a command and reselect a floppy (or mount/unmount) is still a bit cumbersome, so I hope you can implement something like native mounting quickly. Nevertheless, I love MartyPC, it's a great piece of work!

Reply 71 of 193, by GloriousCow

User metadata
Rank Member
Rank
Member
jal wrote on 2023-11-14, 09:13:

Ok, cool, I'll take a look. Though having to execute a command and reselect a floppy (or mount/unmount) is still a bit cumbersome, so I hope you can implement something like native mounting quickly. Nevertheless, I love MartyPC, it's a great piece of work!

Thanks! I'm glad you like it.

As sort of a stopgap feature, I could build support for a floppy-building utility into MartyPC so that it could call it for you and remount the disk, and we could assign that to a hotkey, so it would be transparent that Marty didn't natively support it. Ideally though I would find a utility with a license that would allow me to package them together.

edit:
this looks promising https://github.com/maksgraczyk/Flopgen

I'll see about bundling this with MartyPC 0.2!

MartyPC: A cycle-accurate IBM PC/XT emulator | https://github.com/dbalsom/martypc

Reply 72 of 193, by jal

User metadata
Rank Oldbie
Rank
Oldbie

Well, it seems that double-clicking a VHD in Windows automatically mounts it, and the context menu has an unmount ("Eject") so that's easier to work with than I thought (I had first read tutorials about using disk manager to mount, so I was a bit scared 😀). So I think for now I'm set 😀.

Short question: does MartyPC also support the border colour of CGA? I tend to use it for visualising sub-frame timing, but e.g. DOSbox doesn't support it.

Reply 73 of 193, by GloriousCow

User metadata
Rank Member
Rank
Member
jal wrote on 2023-11-14, 15:00:

Well, it seems that double-clicking a VHD in Windows automatically mounts it, and the context menu has an unmount ("Eject") so that's easier to work with than I thought (I had first read tutorials about using disk manager to mount, so I was a bit scared 😀). So I think for now I'm set 😀.

Short question: does MartyPC also support the border colour of CGA? I tend to use it for visualising sub-frame timing, but e.g. DOSbox doesn't support it.

Yes, it does. You can see the entire overscan area. There's more control over it in 0.2, though.

MartyPC: A cycle-accurate IBM PC/XT emulator | https://github.com/dbalsom/martypc

Reply 74 of 193, by VileR

User metadata
Rank l33t
Rank
l33t
GloriousCow wrote on 2023-11-07, 01:38:
Posting a sneak peek of MartyPC 0.2.0. […]
Show full quote

Posting a sneak peek of MartyPC 0.2.0.

I've implemented a lot of people's suggestions, as well as dozens of bug fixes and many fundamental accuracy improvements derived from my recent hardware research.

Scali, I finally figured I could do a video of 8088MPH justice, so here it is (in 1440P):

https://www.youtube.com/watch?v=Y6sS1cVKJCA

Looking good!

What CRT shader are you using? Is the aspect-correction scaling step being applied before the shader, by any chance? It seems like there's a slight vertical 'blur' which could be due to that... but then that might just be the effect of youtube's video transcoding, or something.

Either way, can't wait for 0.2.0... hope there's a chance that VRAM dumping, multiple breakpoints etc. will make it in. 🙂

[ WEB ] - [ BLOG ] - [ TUBE ] - [ CODE ]

Reply 75 of 193, by GloriousCow

User metadata
Rank Member
Rank
Member
VileR wrote on 2023-11-15, 05:08:

Looking good!

What CRT shader are you using?

I guess I should be pleased that you are asking that. It's not an existing one, I thought I'd make my own. Right now it's pretty simple, just some barrel distortion with rounded corners, and scanlines. I'll be slowly adding features to it, but it wasn't even planned for 0.2 to have any shader effects, it's just something I was tempted to try. I've added monochromatic modes, although they need some contrast/gamma controls. I'm of course familiar with your work with ffmpeg, and i'm tempted to see how much of those effects I may be able to replicate as shader presets.

mono_shader.png
Filename
mono_shader.png
File size
150.6 KiB
Views
1445 views
File comment
green crt shader in martypc
File license
Public domain
VileR wrote on 2023-11-15, 05:08:

Is the aspect-correction scaling step being applied before the shader, by any chance? It seems like there's a slight vertical 'blur' which could be due to that... but then that might just be the effect of youtube's video transcoding, or something.

You have an incredibly keen eye. Yes, in this video the software aspect correction is still on because it was part of the composite pipeline. The shader will ultimately be able to handle it. I can't say I can see what you're seeing though...

VileR wrote on 2023-11-15, 05:08:

Either way, can't wait for 0.2.0... hope there's a chance that VRAM dumping, multiple breakpoints etc. will make it in. 🙂

VRAM dumping should have always worked (?) Is it not working for you?

The memory viewer also now supports MMIO. Honestly, though, I have not been working on the debugger much for 0.2.0. The new breakpoint system is intended to be implemented on top of an embedded scripting engine, and I'm still weighing my options there, between Lua, Mun and Rhai.

Most of my work has been frantic accuracy fixes in anticipation of Area 5150's final release. You see, up until now, MartyPC has had a timer-triggered hack to get the Lake effect ISR to fire at the right time (shameful, I know), and I have been terrified that the final release wouldn't run on it, or that my hack wouldn't be able to differentiate the two versions to provide the proper offsets.

0.2 is now accurate enough to run it without any tricks whatsoever, which I'm very happy about. In the process of getting there I did discover a few interesting things, which I sent to reenigne. I hope I didn't delay the release date 😀

MartyPC: A cycle-accurate IBM PC/XT emulator | https://github.com/dbalsom/martypc

Reply 76 of 193, by GloriousCow

User metadata
Rank Member
Rank
Member
Uka wrote on 2023-08-26, 12:52:

5) Some booter games do not run for me - complaining that the disks is not write-protected. But it is - the image file is made to be "read-only"! In PCE and DOSBox it is enough for such games to launch, but MartyPC does not seem to recognize that...

Can you give me an example of a booter game that checks for write-protect? Just want to test.

MartyPC: A cycle-accurate IBM PC/XT emulator | https://github.com/dbalsom/martypc

Reply 77 of 193, by superfury

User metadata
Rank l33t++
Rank
l33t++
GloriousCow wrote on 2023-11-16, 15:06:
Uka wrote on 2023-08-26, 12:52:

5) Some booter games do not run for me - complaining that the disks is not write-protected. But it is - the image file is made to be "read-only"! In PCE and DOSBox it is enough for such games to launch, but MartyPC does not seem to recognize that...

Can you give me an example of a booter game that checks for write-protect? Just want to test.

Won't it be enough to make MS-DOS write(saving anything)/format(.com) the disk and check if the write/format results in an error? UniPCemu has this implemented (check for _readonly code in floppy.c). It's pretty simple afaik.

Individual sectors etc. can't be write-protected afaik.

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 78 of 193, by GloriousCow

User metadata
Rank Member
Rank
Member
superfury wrote on 2023-11-17, 07:54:

Won't it be enough to make MS-DOS write(saving anything)/format(.com) the disk and check if the write/format results in an error? UniPCemu has this implemented (check for _readonly code in floppy.c). It's pretty simple afaik.

Conceptually it is simple. But if you have a specific test case that fails, you verify that that test case no longer fails, you don't invent a different test case that you think should cover the first one. There are other reasons that the booter might still fail to boot.

MartyPC: A cycle-accurate IBM PC/XT emulator | https://github.com/dbalsom/martypc

Reply 79 of 193, by VileR

User metadata
Rank l33t
Rank
l33t
GloriousCow wrote on 2023-11-15, 14:34:

I guess I should be pleased that you are asking that. It's not an existing one, I thought I'd make my own. Right now it's pretty simple, just some barrel distortion with rounded corners, and scanlines. I'll be slowly adding features to it, but it wasn't even planned for 0.2 to have any shader effects, it's just something I was tempted to try. I've added monochromatic modes, although they need some contrast/gamma controls. I'm of course familiar with your work with ffmpeg, and i'm tempted to see how much of those effects I may be able to replicate as shader presets.

Ah, nice! Yeah, that looks pretty good for such a simple setup. I honestly think some of the features in that script of mine turned out to be overkill (rendering shadow masks at realistic sizes still sucks, for one - typical target resolutions make it look extremely artifacted). Would be nice to have some extra eye-candy, but 'nice to have' is a pretty low priority after all.

I've been thinking about trying to tweak existing CRT shaders, so perhaps a simple one would give me a convenient entry point into this stuff. 😀

GloriousCow wrote on 2023-11-15, 14:34:

You have an incredibly keen eye. Yes, in this video the software aspect correction is still on because it was part of the composite pipeline. The shader will ultimately be able to handle it. I can't say I can see what you're seeing though...

I thought I saw a bit of vertical blurring which didn't seem to coincide with the darkening between scanlines. But on second thought, it may be enough to simply make that darkening stronger... 200-line CRTs typically show fully-separated scanlines, so that should increase the 'realism' factor as well.

GloriousCow wrote on 2023-11-15, 14:34:

VRAM dumping should have always worked (?) Is it not working for you?

The memory viewer also now supports MMIO. Honestly, though, I have not been working on the debugger much for 0.2.0. The new breakpoint system is intended to be implemented on top of an embedded scripting engine, and I'm still weighing my options there, between Lua, Mun and Rhai.

My bad, bungled choice of words there... yeah, dumping works just fine; I meant looking at VRAM in the memory viewer.

Perhaps there's such a thing as a generic debugging front-end which could somehow be integrated? Admittedly such things often make for bigger headaches than rolling your own from scratch, but who knows... it's also true that Lua scripting engines are everywhere, so maybe that would be more straightforward than I think it is.

GloriousCow wrote on 2023-11-15, 14:34:

Most of my work has been frantic accuracy fixes in anticipation of Area 5150's final release. You see, up until now, MartyPC has had a timer-triggered hack to get the Lake effect ISR to fire at the right time (shameful, I know), and I have been terrified that the final release wouldn't run on it, or that my hack wouldn't be able to differentiate the two versions to provide the proper offsets.

0.2 is now accurate enough to run it without any tricks whatsoever, which I'm very happy about. In the process of getting there I did discover a few interesting things, which I sent to reenigne. I hope I didn't delay the release date 😀

Oh yeah, you mentioned that 'mysterious console message' in the other thread about the half-height vertical blanking period. 😀 (So was the fix related to the scanline-counting thing, after all?)

As for delaying the release, far from it - speaking for myself anyway; I'm currently without access to the actual hardware (being out of town for a not-quite-definite period), but thanks to MartyPC I can still fill in some blanks here and there still be confident of the results... so if anything, it's the opposite!

[ WEB ] - [ BLOG ] - [ TUBE ] - [ CODE ]