• Please review our updated Terms and Rules here

RealDOOM: A port of DOOM to Real Mode

If the target is actually 286s is there a reason why you’re not using XMS instead? I know 286 protected mode, well, sucks (IE, still stuck with 64K segment size, and protection checks supposedly can slow things down a bit), but might it still be faster than all the page flipping?
 
If the target is actually 286s is there a reason why you’re not using XMS instead? I know 286 protected mode, well, sucks (IE, still stuck with 64K segment size, and protection checks supposedly can slow things down a bit), but might it still be faster than all the page flipping?

I don't think i said the target was 286es. The target was Real mode and 16 bit PCs. I have a 20 mhz-ish juko turbo xt to try it on at some point later.
 
Sorry, I guess there were just several replies that really concentrated on the 286. (Including the quote/claim that a 286 is "as powerful" as a 386 at a similar clock speed, which isn't *completely* untrue, but it's also, well, not true...)

That said, I'm kind of curious how an XMS implementation might compare, performance-wise? You're not going to be constrained to EMS page frames, and you'll also have the option of using additional memory above conventional for code, if that helps. I guess a possible problem might be finding a suitable 286 DOS extender in this day and age? 386 DOS extenders are a dime a dozen, the 286 isn't so easy...

Eh, just do it as an OS/2 1.x console application? ;)
 
How does Doom in general handle video ram?

I remember our 1mb video card running the same as A 512k video card that was a few years older, might of been out of a 386 machine, when playing Doom as A kid on a 486dx33.

The 512k card actually performed better when playing games like 7th guest. Like 2x the frame rate better type deal. Which then was a lot.

I took it that Doom really didn't use or care much about video card memory? As long as met some kind of "base" memory needed that was it, 256k or 512k maybe? Anything more was ignored?

It allocated enough for 320x200 ? Doing page flipping and "dirty rectangles" ?

If this is the case, is it a cheat.. if its doable even... to require at least A 1mb video card? And if so, could there be any advantages of using the remaining say 512k of video memory for anything then?

Basically getting at... if you are adding EMS usage for Real Mode, would adding 1mb of video ram requirement be viable if using the extra ram above whatever the "base" video ram requirement is by Doom?

Did Doom require 256k, 512k ? Whatever it required, did it use the rest if you had more? and if no, can you take advantage of the extra video ram for "other" things?

Or is this all dumb stupid stuff too...
 
Did Doom require 256k, 512k ? Whatever it required, did it use the rest if you had more? and if no, can you take advantage of the extra video ram for "other" things?
Doom uses 256k of vram and nothing more.

Vram is generally not fast and reading from it is complicated. So much so that you usually use screen buffers if possible rather than doing operations directly on vram. There were always memory managers that made it possible to use vram as conventional memory, but EMS is a proper solution designed for the problem of getting extra memory in real mode.
 
Doom uses 256k of vram and nothing more.

Vram is generally not fast and reading from it is complicated. So much so that you usually use screen buffers if possible rather than doing operations directly on vram. There were always memory managers that made it possible to use vram as conventional memory, but EMS is a proper solution designed for the problem of getting extra memory in real mode.
Not sure if was getting at using the video ram as a replacement for EMS. Since be under 1mb of available anyways. But using past 256k for anything of any sort that maybe could "help" in some way.

I think 286 systems could see ram speeds of 70ns to 120ns? maybe a little quicker/little slower depending on what you got.

8900D video card I got has 1mb ram rated at 70ns. Not sure what that means in slowness once you put the video card hardware between it and the software. Sure its a bottle neck in there somewhere.

If doom uses 320x200 for 64k pages of video. 1 byte per color.... and if doom uses 256k.. 4 pages? If you were to up requirements to 512 or 1mb, for 8 or 16 pages.

Does that give any thing? Or would this be getting to area of 286 not fast enough to populate 8 or16 pages of video to flip through without causing even more slow down.

I'd like to think could off load maybe some common areas of the video ouput to the off screen area of memory to pull from?

Last time I touched DOS VGA graphics personally was back in 1996 in High School so i've forgotten everything, what little a 16 yr old could find back then... I made a simple 2D "Doom" Game using sprites, wall textures for background from the Doom 2 wad file... Basically a side scrolling type thing. Worked well, even had sound I pulled out of the WAD. Written in Turbo Pascal 7 / ASM.
 
Not sure if was getting at using the video ram as a replacement for EMS. Since be under 1mb of available anyways. But using past 256k for anything of any sort that maybe could "help" in some way.
Applications can use additional VRAM either for higher resolutions or off-screen memory, which can help with scrolling content. Neither really applies to Doom on such systems, so Doom does not even try.

8900D video card I got has 1mb ram rated at 70ns. Not sure what that means in slowness once you put the video card hardware between it and the software. Sure its a bottle neck in there somewhere.
Since video memory is constantly read in order to refresh the screen, there is relatively little bandwidth available for the CPU to access it. Especially read accesses are very slow, because the CPU cannot continue until the data has actually arrived. Write accesses can be buffered to hide this fact, but then logic is required to make sure that write-read cycles do not return old data - which can make reads unpredictably as well.

Does that give any thing? Or would this be getting to area of 286 not fast enough to populate 8 or16 pages of video to flip through without causing even more slow down.
A 286 has barely enough video bandwidth to update the screen at a decent frame rate. Using it for other purposes is likely going to lose more than it gains.

Maybe VGA hardware has some fast way of copying within video memory, but to my knowledge, actual blitting requires accelerated video and is therefore outside the target range.
 
I think 286 systems could see ram speeds of 70ns to 120ns? maybe a little quicker/little slower depending on what you got.

It can be 0ns RAM. Doesn’t matter much when it’s on a 8 MHz bus.

8900D video card I got has 1mb ram rated at 70ns. Not sure what that means in slowness once you put the video card hardware between it and the software. Sure its a bottle neck in there somewhere.

1 mb of ram with a 64k page frame. You can’t access it without a lot of extra work.
 
It can be 0ns RAM. Doesn’t matter much when it’s on a 8 MHz bus.



1 mb of ram with a 64k page frame. You can’t access it without a lot of extra work.

Maybe where ChatGPT-4 comes into play. Was messing with it just now for Turbo Pascal ( my world ) and was able to come up with A number of assembly routines for populating off screen areas in definable chunks.
Then being able to copy any of those chunks off screen, to the visible screen quickly. Which works well in a 2D world. For 2.5D world of Doom, probably no so much. Did keep making it optimize down until was happy. Insuring 286 compatibility. Again, no use like mentioned due to the nature of the game itself. Just sad that probably 256k - 768k of video ram just sitting there do nothing :(
 
Just tell ChatGPT to optimize Doom until it runs at 60fps on a 5150. EZ PZ.
 
Just sad that probably 256k - 768k of video ram just sitting there do nothing :(

Why is that sad? We don’t need it. I don’t understand. We have megabytes of ems memory and it’s a lot faster. Why don’t you ask chatgpt to explain to you why it’s a bad idea?
 
Why is that sad? We don’t need it. I don’t understand. We have megabytes of ems memory and it’s a lot faster. Why don’t you ask chatgpt to explain to you why it’s a bad idea?
Always sad when memory goes to waste... that is all.
Please, don't over think it.
 
IBM PC XT it has a game-limited content, - mode VGA 640x480x256 color - AT game content (80286 or high processors supported ISA-16 bus).
 
Here you can see an xt class machine (actually a NuXT pc) running the timedemo at full quality. It takes 7 hours but the thing runs properly.


Recently I created an '0.1' release that plays most of the shareware levels, available on the project's github releases page. Since then I've also added support for UMB allocation, and EMS 4.0 multitasking features is the next major thing to try and tackle. After that I will probably start doing ASM optimizations to try and improve the speed of the game signficantly.
 
Back
Top