VOGONS


MartyPC

Topic actions

Reply 140 of 193, by jk3one

User metadata
Rank Newbie
Rank
Newbie

Maybe you could publish the new version regardless? I would try it immediately and would not be concerned because of Microsoft Defender at all. But then, I am on Linux (Wine) - so it is very, veery unlikely to get a Microsoft smartscreen in my face 😀

In all seriousness, I really think you could just go ahead. It is not unsual for emulators to come with false virus/trojan warnings, you could say it is almost to be expected. Prominent examples like PCSX2, PCem (I think) had something like this somewhere in their past. Since it is a false positive the warning may be gone soon anyway.

Reply 141 of 193, by GloriousCow

User metadata
Rank Member
Rank
Member
jk3one wrote on 2024-01-11, 19:22:

Maybe you could publish the new version regardless? I would try it immediately and would not be concerned because of Microsoft Defender at all. But then, I am on Linux (Wine) - so it is very, veery unlikely to get a Microsoft smartscreen in my face

Yesterday I figured out a workaround for one of the major issues running on opengl on linux, so I was planning on just having a linux release as well this go. I saw how Jetbrains distributes their IDE for linux - its a statically compiled executable in a tar.gz. I can certainly just do the same. And of course, you can always build it yourself: https://github.com/dbalsom/martypc/wiki/Building-MartyPC which will let you get all the new features as they are added (and experience all the new bugs)

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

Reply 143 of 193, by VileR

User metadata
Rank l33t
Rank
l33t

Man... from what I'm seeing of this Windows Defender false-positive situation, it's simply infuriating. If MS keeps up its policy of apparently not giving a crap whatsoever, I suppose it's possible for affected developers to pool together and attempt a collaborative heuristics project - perhaps that could pin down the exact issue, or at least produce some useful data. But as things stand, I understand why people aren't willing to risk their projects' reputations just because Microsoft is too lazy and negligent to fix its broken crap.

That said, I certainly wouldn't mind if a new Windows build was shared somewhere outside of the github release system, to minimize the risk of your public project being tarred and feathered. 😉

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

Reply 144 of 193, by keenmaster486

User metadata
Rank l33t
Rank
l33t

I would second the release of an unsigned EXE with a disclaimer or something. Everyone knows it's not actually a virus.

World's foremost 486 enjoyer.

Reply 145 of 193, by GloriousCow

User metadata
Rank Member
Rank
Member
jal wrote on 2024-01-14, 20:04:

Did you have time to look at the EXE I shared?

I haven't had a chance to, concentrating on getting this release out the door

I'm not going to let the virus thing keep me from releasing one way or another. It's just added frustration I don't need.

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

Reply 146 of 193, by GloriousCow

User metadata
Rank Member
Rank
Member

In other news, I'll be giving a talk at VCF East this Friday, April 12th on the topic of 8088 emulation and MartyPC.

https://vcfed.org/vcf-east-talks/

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

Reply 148 of 193, by jal

User metadata
Rank Oldbie
Rank
Oldbie

Another question for the long run: is it possible to configure GLaBIOS somehow to skip the RAM check. I reboot MartyPC quit often, and waiting for the RAM check is boring 😀.

Reply 149 of 193, by GloriousCow

User metadata
Rank Member
Rank
Member
jal wrote on 2024-01-26, 21:06:

Another question for the long run: is it possible to configure GLaBIOS somehow to skip the RAM check. I reboot MartyPC quit often, and waiting for the RAM check is boring 😀.

if we had a fixed RAM config maybe, but GLaBIOS needs to determine the memory size, and that's now configurable in MartyPC. One feature I am considering is "fast boot" which could work with other BIOSes as well, basically a breakpoint somwhere late in the POST process, and we run at 400% emulation speed until we hit it. Or maybe it would take the form of a tiny com file you put in autoexec.bat that calls my service interrupt to resume normal speed.

Sometime way in the future, you should just be able to make a save state when the system has booted.

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

Reply 150 of 193, by Uka

User metadata
Rank Member
Rank
Member
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.

Sorry for the late reply - somehow I did not get a notice.
It is any of "PC booter" games by Infocom - they all require the disk to be write-protected. Like "The Hitchhiker's Guide to the Galaxy", "Cutthroats", "Zork" etc.

Reply 151 of 193, by GloriousCow

User metadata
Rank Member
Rank
Member
Uka wrote on 2024-02-03, 03:24:

Sorry for the late reply - somehow I did not get a notice.
It is any of "PC booter" games by Infocom - they all require the disk to be write-protected. Like "The Hitchhiker's Guide to the Galaxy", "Cutthroats", "Zork" etc.

Okay, was able to reproduce and happy to report the new write-protect feature solves it.

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

Reply 152 of 193, by GloriousCow

User metadata
Rank Member
Rank
Member

So it's February 2024, where the hell is 0.2?
I'm getting there - still tackling some intransigent bugs, issues with frame pacing, sound and other issues. Another minor rework to the CPU and a major bugfix in the PIC fixed several titles where segment address wrapping occurred, improvements to the FDC and HDC enabled several different editions of Minix to boot.

After poring over the schematics for a few hours, I rewrote the EGA (again) - this time breaking out the 5 LSI controller chips into 4 separate logical modules (the two graphics controllers can more or less be treated as one). Many of the seemingly redundant register settings on the VGA make a lot more sense when you realize they were registers that existed on separate chips on the EGA with no way to synchronize their state.

Suddenly the half-dozen or so combinations of flags and mode switches that enable CGA emulation mode started to gel:

ega_cga_emulation.png
Filename
ega_cga_emulation.png
File size
16.05 KiB
Views
992 views
File comment
CGA emulation on the EGA card in MartyPC
File license
Public domain

(the image is shifted to the left - something i'm hoping resolves when i properly emulate the attribute controller, display enable skew and horizontal retrace delay)

Text mode is now properly implemented on odd/even planes for glyph and attribute, although software fonts are still not implemented - glyphs are still drawn using fast, pre-rasterized row caches. I'm thinking I don't necessarily have to abandon this optimization, but I will need to be able to update font cache on the fly when writes occur to plane #2 where the fonts are stored.

MDA emulation isn't really on my radar. It would need its own DIP switch setting i think. When you can easily switch to an actual MDA device, is there a need for this?

Another lingering puzzle is what to do about proper floppy drive size emulation. Right now you have the luxury of using 1.44Mb floppy images in MartyPC, but it's sort of an accident of the lack of sector checks that it works. If I let you select the drive size, and properly behave like a 720K drive, the BIOS could recognize them, and you'd be able to format blank disk images properly, but it would sort of break 1.44Mb images from working since we're limiting how far the drive can seek.

I sort of like the convenience of not needing to worry about your drive size now in MartyPC, and as long as you aren't formatting things everything seems to work fine. How important is being able to format a floppy in an emulator? I suppose I could let you select drive size along the lines of "360k", "720k", "auto" and auto would just behave how it does now.

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

Reply 153 of 193, by Uka

User metadata
Rank Member
Rank
Member

Thanks for the update!

GloriousCow wrote on 2024-02-03, 16:55:

How important is being able to format a floppy in an emulator? I suppose I could let you select drive size along the lines of "360k", "720k", "auto" and auto would just behave how it does now.

Well, some games want to format a floppy when being installed. I have "Balance of Power" that does that.

Reply 154 of 193, by GloriousCow

User metadata
Rank Member
Rank
Member
Uka wrote on 2024-02-03, 17:18:

Thanks for the update!

GloriousCow wrote on 2024-02-03, 16:55:

How important is being able to format a floppy in an emulator? I suppose I could let you select drive size along the lines of "360k", "720k", "auto" and auto would just behave how it does now.

Well, some games want to format a floppy when being installed. I have "Balance of Power" that does that.

Sigh, of course they do... You CAN format, but everything comes out 360k.

I'll fix it properly of course. Just maybe not in this upcoming release.

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

Reply 155 of 193, by GloriousCow

User metadata
Rank Member
Rank
Member

EGA support is coming along well. The EGA emulation is character-accurate and the various duties of the various LSI chips are simulated. A similar strategy has been used for EGA as was used for MartyPC's CGA - one of two fixed resolution fields are scanned out (depending on whether the EGA is running the 14Mhz or 16Mhz clock) and an aperture into that field displayed.

Now you can enjoy Commander Keen with full overscan:

screenshot023.png
Filename
screenshot023.png
File size
13.7 KiB
Views
864 views
File comment
Commander Keen 4 in MartyPC
File license
Fair use/fair dealing exception

CGA compatibility mode is in, also with overscan, so you can properly feel the panic while diving in Alleycat:

screenshot026.png
Filename
screenshot026.png
File size
2.89 KiB
Views
864 views
File comment
Alleycat on MartyPC EGA in CGA mode
File license
Fair use/fair dealing exception

No more hardcoded font - fonts are properly read from plane #2, modelling the shift/load function of the attribute controller, so text mode pel panning should be possible (I have to find some demo that does this...)

screenshot027.png
Filename
screenshot027.png
File size
7.3 KiB
Views
864 views
File comment
Redefinable font support in MartyPC
File license
Public domain

This means things like text mode mouse cursors work as well.

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

Reply 156 of 193, by VileR

User metadata
Rank l33t
Rank
l33t

Excellent!!

GloriousCow wrote on 2024-02-17, 21:51:

so text mode pel panning should be possible (I have to find some demo that does this...)

I'm pretty sure FantasyLand does that. It should be a good text mode torture-test in general, although it expects the EGA to be switched to 15.7KHz-only operation (i.e. 200-line text modes).

PCjs made a big deal of being able to run it, although it gets the color palette glaringly wrong. 😀

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

Reply 157 of 193, by GloriousCow

User metadata
Rank Member
Rank
Member
VileR wrote on 2024-02-17, 23:42:

I'm pretty sure FantasyLand does that. It should be a good text mode torture-test in general, although it expects the EGA to be switched to 15.7KHz-only operation (i.e. 200-line text modes).

PCjs made a big deal of being able to run it, although it gets the color palette glaringly wrong. 😀

It runs, but it looks like it needs vsync interrupts for the panel that pops up from the bottom. I don't currently have a way for video devices to generate interrupts, so that will require a bit of reworking.
Also I made an assumption that text mode would always be using the 16Mhz clock so my colors are wrong too 😀

EDIT: Fantasyland is also an interesting case where we're in text mode, but not using odd/even addressing or word mode.

EDIT2: Fixed colors.

screenshot032.png
Filename
screenshot032.png
File size
4.47 KiB
Views
793 views
File comment
FantasyLand in MartyPC EGA
File license
Fair use/fair dealing exception
fland_02.gif
Filename
fland_02.gif
File size
22.66 KiB
Views
786 views
File comment
FantasyLand in MartyPC EGA
File license
Fair use/fair dealing exception

In other news, a kind soul is helping me set up github actions to make nightly builds. So you won't have to wait to try out a prerelease 0.2 for too much longer.

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

Reply 158 of 193, by GloriousCow

User metadata
Rank Member
Rank
Member

FantasyLand doesn't seem to use pel panning, which is interesting. It uses the preset row scan register for smooth vertical scrolling, but horizontal scrolling appears character based.

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

Reply 159 of 193, by superfury

User metadata
Rank l33t++
Rank
l33t++
GloriousCow wrote on 2024-02-18, 14:54:

FantasyLand doesn't seem to use pel panning, which is interesting. It uses the preset row scan register for smooth vertical scrolling, but horizontal scrolling appears character based.

Just curious, how do you handle the monitor's borders? I get weirdly sized black borders on top,bottom,left,right (at non-equal widths according to VGA signal specs) of blanking in UniPCemu? Do you perform some special post-processing when displaying that (happens on all video cards, depending on the mode. The only graphics mode that seems horizontally centered is 640x480 mode 13h it seems)? Usually a small left and large right side blanked border?

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