VOGONS


MartyPC

Topic actions

Reply 560 of 564, by SoftCat

User metadata
Rank Member
Rank
Member

Could you tell me which emulator is best for testing EGA scrolling in 0Dh and 0Eh modes? I want to do this for each of four video RAM sizes: 64 KB, 128 KB, 192 KB, and 256 KB.

Reply 561 of 564, by superfury

User metadata
Rank l33t++
Rank
l33t++

UniPCemu supports EGA/VGA as well as it's possible (to the cycle rendering level, and even supports SVGA to that level and more features than any other known emulators on the Tseng chipsets), more accurate than any other emulators.
Then again, right now, current commits have some unknown CPU issues (Windows 3.x not booting anymore in 32-bit mode), but 16-bit mode probably still works (on 3.1 and lower). MS-DOS also seems to run fine still (even with Virtual memory managers and EMS managers like EMM386).
No clue yet as what's causing WFW 3.11 to crash during boot. All I see is a single page fault in protected mode CPL 0 before the crash happens, which is on some EIP address (being not present in any PTE/PDE combination). That shouldn't happen from what I know? So right now, at least 9x/3.x in 32-bit mode doesn't boot (16-bit mode still boots, like 3.1/3.0 and MS-DOS itself ofc).

I get through the installation wizard without issues, but when booting the OS, I see a single page fault on CPL 0 that crashes the sub-OS (sub because MS-DOS is effectively the main OS) back to text mode and hanging.
Edit: Hmm, odd. Windows 3.1 fails in 386 enhanced mode as well (like 3.11), while protected mode boots to the desktop and then doesn't respond to mouse/keyboard.
Edit: OK. Tried again without EMM386 and using /s switch. It runs fine now somehow.
Edit: And 3.0 also crashes with /3 parameter. Interesting.
Edit: So does 3.0 in standard mode (triple fault causing a reboot). Odd.
Edit: Real mode does boot properly though. Inputting any number in calc.exe gives me a defeault inputted value of "-0." (without quotes). Inputting any number gives me a "Result is too large for". Paintbrush seems to run fine.

Last edited by superfury on 2025-12-14, 23:33. Edited 2 times in total.

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

Reply 562 of 564, by SoftCat

User metadata
Rank Member
Rank
Member

Is it correct to simply assume that the EGA has 256 KB of video RAM and not worry about cases with a smaller volume?

Reply 563 of 564, by mkarcher

User metadata
Rank l33t
Rank
l33t
SoftCat wrote on 36 minutes ago:

Is it correct to simply assume that the EGA has 256 KB of video RAM and not worry about cases with a smaller volume?

No, it's not. There were EGA cards with just 64K in the wild. I guess 128K and 192K (two or three banks of 64K each) are quite rare. I've seen a YouTube video about someone playing with retro EGA cards, and one of the cards failed to display a couple of games correctly because it only had 64K of RAM installed.

Furthermore, if you target keen-like infinite scrolling, I think there is a control bit that makes the video RAM wrap around at 64K instead of 256K, but you can't have infinite scroll while you use 128K or 192K. If there is a 64K wrap-around mode you can use that mode on 128K or 192K cards as well and just use them like 64K cards.

Reply 564 of 564, by SoftCat

User metadata
Rank Member
Rank
Member
mkarcher wrote on 31 minutes ago:

No, it's not. There were EGA cards with just 64K in the wild. I guess 128K and 192K (two or three banks of 64K each) are quite rare. I've seen a YouTube video about someone playing with retro EGA cards, and one of the cards failed to display a couple of games correctly because it only had 64K of RAM installed.

Furthermore, if you target keen-like infinite scrolling, I think there is a control bit that makes the video RAM wrap around at 64K instead of 256K, but you can't have infinite scroll while you use 128K or 192K. If there is a 64K wrap-around mode you can use that mode on 128K or 192K cards as well and just use them like 64K cards.

Got it, thank you very much!
If the card has 64 KB and I'm using mode 0xE, the video buffer will occupy addresses 0xA000:0x0000 -- 0xA000:0x3E7F. What happens if I write starting at address 0xA000:0x4000?