I can't believe I didn't think of this before: Use horizontally-oriented chars for all floors and/or floor textures, vertically-oriented chars for all walls and/or wall textures, and shaded characters for sprites. That will really make everything stand out in ways that will make sense for the player.
Love the toxic waste barrel and armor sprites' dithering. You might want to use them as a reference to make other sprites looking good. Btw, preprocessing most common sprites offline using best ASCII art tools available, then importing the result back might be a good idea.
The walls and floors have a lot of “noise” that makes it hard to separate foreground from background. There’s probably a way to simplify things so it looks and plays better. Good job so far. I want to try it on real hardware one day.
We are getting there. Now try to make picture more consistent - do experiments with disabling pulsing lighting fluctuations on the floor and ceiling - this will eliminate constant charset changing even when player stands still and reduce disorienting on turnarounds. If it will look good - apply this to the walls as well. Might be a good idea to make a toggle in the options menu.
That does make everything more readable. Could a COLORMAP of characters convey different hues and lighting levels? I guess lighting would still scale with distance, rather than reflecting sector brightness alone.
Interesting ... I'm not sure it's quite working for my eyes, but that may well be the youtube compression. Feels like maybe the source imagery needs a little simplification or exaggerated and clipped contrast to make things a bit plainer and less confusingly noisy. I do wonder if the actual MDA would update fast enough for this, too? (If even the system it was installed into could render the virtual display well enough, but then I have had a Hercules card in a 486 before...) Also what the effect of running on a real greenscreen monitor with long-persistence phosphor would be... BTW have you considered writing to the attribute bits and gain extra contrast by using some high-intensity characters? I think the extra brightness may help things stand out in some places, particularly if used for enemy or item sprites, or maybe the edges of certain polygon / where walls meet the floor, if the processing in use is sophisticated enough to do that. Also if running on CGA/EGA (& VGA?)... well, colour is an option of course, but if we assume perhaps a monochrome monitor and only those same on/off plus intensity levels... make use of the extra memory and the CRTC hackability to run 50 rows of 4-pixel lines for everything above the status bar (so I guess probably more like 40 rows)? Or even 100 (80?) rows of 2-pixel lines? 160 pixel equivalent horizontal resolution should be possible if not greater, and the scene may be a good bit more readable as a 160x80 window.
I did consider using high-intensity characters. I don't use it because it requires writing more data to video memory and this port is targeting very slow machines. If the target machine is fast enough, FastDoom is a better choice.
@@DookNookim Entirely fair, just wondered if it was an oversight / possibility for future improvement, but if you've tried it and it drags then obviously not a good idea (could double the data load in some cases). This is compatible with real hardware as well as emulation, then? Pretty good to have it run at all on an 8088... Does FD have a mono text mode though? As stated I've used a much faster machine that still had a mono card in it before. Graphics capable, of course, but IDK how good Hercules would be at refreshing more than a small window within its otherwise hi-rez display at any speed, and it doesn't have any low-rez mode available (or more than 2-level graphics). Even refreshing the full 4K of mode 7h would be faster than the 8K of a 360x174-within-720x348...
@@steveh8658 My monitor ain't that large, though I guess maybe if it makes it the equivalent of a monochrome CRT in size (from the POV of someone sat at a 5150/5160's keyboard) that'd be realistic? I don't know how well distance affects perceptual object size in a mathematical sense. Right now I guess I'm 2 or 3 feet from a 15.6"? May be more difficult to apply a fake phospor persistence and bloom effect though...
so, in this port you are not writing the char attributes byte into the framebuffer at all? You just clearing whole FB at the beginning and then writing only character bytes in 2 bytes increment?
Goddamn, I'd love a game made for exactly this kind of graphics. Flatly minimalistic. The closest thing I can find is "miniwad". Maybe a wad with just alternating colors for flats and a certain kind of pattern for doors and lifts and an "animated/flashing" texture for switches so you know. Maybe the game can show characters as white for pickups/enemies/barrels. (I am not a coder. 😔)
Where do the sounds come from? Was it a PC speaker option in original Doom? I took a trip down the memory lane and I recalled playing Wolfenstein 3D on 386 with PC speaker sound and it sounded similarly.
High intensity requires writing extra data to video memory. This port targets very slow machines. So writing less data is good for performance. FastDoom also supports MDA and targets faster machines.
@@DookNookimso, in this port you are not writing the attributes byte into the framebuffer at all? Just clearing whole FB at the beginning and then writing only character bytes with 2 bytes increment?
@@nneeerrrd It only writes the attributes bytes of the status bar when the player gets hurt, when an item is picked up and when the radiation suit is picked up. You're correct about the character bytes and the 2 bytes increment.
@@DookNookimI see. Did you do actual benchmarks on how slower it would be if you write the 16 bit word at once instead of 1 byte and skip 1 byte? I'd experiment with STOS vs MOV as well to see what's faster. From my perspective even writing a full word at once wouldn't saturate PC's 8bit ISA bus. It's interesting what numbers will you get though.
Inside the Matrix…
I can't believe I didn't think of this before: Use horizontally-oriented chars for all floors and/or floor textures, vertically-oriented chars for all walls and/or wall textures, and shaded characters for sprites. That will really make everything stand out in ways that will make sense for the player.
Yep, looks really good
User: uploads a gameplay of Doom in text mode
TH-cam's vídeo compression algorithm: why do I hear boss music?
I think if it was in 1080 at least it would look better
I’m very, very impressed. Well done. Very interested in seeing your improvements.
Just some fantastic work this
Reminds me of Ascii quake on linux back in the day. Though, that took a pentium 1 at a minimum. Good times.
This is wild, thanks for posting this.
Truly, DooM runs on everything!
Love the toxic waste barrel and armor sprites' dithering. You might want to use them as a reference to make other sprites looking good. Btw, preprocessing most common sprites offline using best ASCII art tools available, then importing the result back might be a good idea.
Huge improvement since the last upload! 😲 Might help to use color.... maybe make more use of Extended ASCII on the IBM PC. 🙂
It definitely looks better, but I'd go a step further and remove the texturemapping entirely, keeping only the "diminishing lighting" shading.
Ah yes. The sounds that came straight from the motherboard's teensy tiny speaker.
This is an amazing technical achievement 😮
This is really cool I think if this was the only way I could play DOOM back in the day I would have still played it
The walls and floors have a lot of “noise” that makes it hard to separate foreground from background. There’s probably a way to simplify things so it looks and plays better. Good job so far. I want to try it on real hardware one day.
There’s way too much information to decode Doom. You get used to it. I don’t even see the code. All I see is shotgun, pinky, cacodemon.
Needs a matrix printer for the music.
wow, it looks and sounds awesome
Excellent, you evil coder!
At first it didn't work for me, then i finally realized i had to put the screen further from my eyes, and then it did
We are getting there.
Now try to make picture more consistent - do experiments with disabling pulsing lighting fluctuations on the floor and ceiling - this will eliminate constant charset changing even when player stands still and reduce disorienting on turnarounds. If it will look good - apply this to the walls as well. Might be a good idea to make a toggle in the options menu.
"I don't even see the imps anymore. I just see blonde, brunette, redhead..."
Ran this on a 386DX-20. The initial startup/load is a bit slow, but it really does play across MDA like this. Next, to try the 4.77MHz 5150 h/w !
That's a nice improvement! :)
Sweet audio
This is what it truely means to be a graphics programmer
It doesn't get any more minimum settings than this! What a feat!
This is what the hackers in The Matrix's "Real World" segment see The Matrix world
Maybe substitute different (simpler) textures/sprites that look better in this mode?
That does make everything more readable. Could a COLORMAP of characters convey different hues and lighting levels? I guess lighting would still scale with distance, rather than reflecting sector brightness alone.
dis what the dwarfs in dwarf fortress see and hear
Neo vision
This is the future!
this is a fantastic idea for a horror game holy shit
Interesting ... I'm not sure it's quite working for my eyes, but that may well be the youtube compression. Feels like maybe the source imagery needs a little simplification or exaggerated and clipped contrast to make things a bit plainer and less confusingly noisy.
I do wonder if the actual MDA would update fast enough for this, too? (If even the system it was installed into could render the virtual display well enough, but then I have had a Hercules card in a 486 before...)
Also what the effect of running on a real greenscreen monitor with long-persistence phosphor would be...
BTW have you considered writing to the attribute bits and gain extra contrast by using some high-intensity characters? I think the extra brightness may help things stand out in some places, particularly if used for enemy or item sprites, or maybe the edges of certain polygon / where walls meet the floor, if the processing in use is sophisticated enough to do that.
Also if running on CGA/EGA (& VGA?)... well, colour is an option of course, but if we assume perhaps a monochrome monitor and only those same on/off plus intensity levels... make use of the extra memory and the CRTC hackability to run 50 rows of 4-pixel lines for everything above the status bar (so I guess probably more like 40 rows)? Or even 100 (80?) rows of 2-pixel lines? 160 pixel equivalent horizontal resolution should be possible if not greater, and the scene may be a good bit more readable as a 160x80 window.
I did consider using high-intensity characters. I don't use it because it requires writing more data to video memory and this port is targeting very slow machines. If the target machine is fast enough, FastDoom is a better choice.
As someone above suggested, walk about 6 feet away from your monitor and watch it. It's like magic!
@@DookNookim Entirely fair, just wondered if it was an oversight / possibility for future improvement, but if you've tried it and it drags then obviously not a good idea (could double the data load in some cases). This is compatible with real hardware as well as emulation, then? Pretty good to have it run at all on an 8088...
Does FD have a mono text mode though? As stated I've used a much faster machine that still had a mono card in it before. Graphics capable, of course, but IDK how good Hercules would be at refreshing more than a small window within its otherwise hi-rez display at any speed, and it doesn't have any low-rez mode available (or more than 2-level graphics). Even refreshing the full 4K of mode 7h would be faster than the 8K of a 360x174-within-720x348...
@@steveh8658 My monitor ain't that large, though I guess maybe if it makes it the equivalent of a monochrome CRT in size (from the POV of someone sat at a 5150/5160's keyboard) that'd be realistic? I don't know how well distance affects perceptual object size in a mathematical sense. Right now I guess I'm 2 or 3 feet from a 15.6"?
May be more difficult to apply a fake phospor persistence and bloom effect though...
Now run this through an AI filter that is trained on Doom and see if we come back full circle. 😆
He's beginning to believe.
That's how I see original DOOM
so, in this port you are not writing the char attributes byte into the framebuffer at all? You just clearing whole FB at the beginning and then writing only character bytes in 2 bytes increment?
This is insane...
Goddamn, I'd love a game made for exactly this kind of graphics. Flatly minimalistic. The closest thing I can find is "miniwad". Maybe a wad with just alternating colors for flats and a certain kind of pattern for doors and lifts and an "animated/flashing" texture for switches so you know. Maybe the game can show characters as white for pickups/enemies/barrels. (I am not a coder. 😔)
Ha! Make the different enemies all one letter character, Rogue-style.
Looks like normal Doom when I have a migraine.
Will this actually run on an 8088 or does it still require a 32-bit cpu (386 or better)?
It runs on an 8088. There's no 32-bit code in this Doom port.
@@DookNookim Wow. Do you know the RAM requirements?
@@Michael-im5mq The more conventional memory, the better. So like 640 kB.
It uses 64 kB of EMS and 1.5 MB of XMS memory if available.
What about fps on 8088?
@@mwudarczyk84 I just tried it in 86box emulating an 8088 at 16 MHz. I've played level 1 and 2, and I get about 3 frames per second.
Impressive.
Where do the sounds come from? Was it a PC speaker option in original Doom? I took a trip down the memory lane and I recalled playing Wolfenstein 3D on 386 with PC speaker sound and it sounded similarly.
Original Doom came with the same PC speaker sound effects.
Control panel goes "boop"
MDA supports high intensity, why not use it?
High intensity requires writing extra data to video memory. This port targets very slow machines. So writing less data is good for performance.
FastDoom also supports MDA and targets faster machines.
@@DookNookimso, in this port you are not writing the attributes byte into the framebuffer at all? Just clearing whole FB at the beginning and then writing only character bytes with 2 bytes increment?
@@nneeerrrd It only writes the attributes bytes of the status bar when the player gets hurt, when an item is picked up and when the radiation suit is picked up.
You're correct about the character bytes and the 2 bytes increment.
@@DookNookimI see. Did you do actual benchmarks on how slower it would be if you write the 16 bit word at once instead of 1 byte and skip 1 byte? I'd experiment with STOS vs MOV as well to see what's faster. From my perspective even writing a full word at once wouldn't saturate PC's 8bit ISA bus. It's interesting what numbers will you get though.
@@nneeerrrd I haven't tried it. It requires some changes in the COLORMAP code and data.
This is visually the worst thing I've ever seen... but this is so impressive at the same time. Beautiful
MATRIX ATTACK ON THE REAL WORLD FOOTAGE
Works best if you squint...
Just need to make all the textures in an appropriate way.
feels like I got needles stuck in my eyes.
It seems like based on original Doom code
th-cam.com/video/tpVMyO4F36Y/w-d-xo.htmlfeature=shared
no
Please PC modders, if you need proper sound FX via beeper ask zx spectrum coders!
LoL speak to John Carmack and roast him well for that
@@nneeerrrd don't think is interested in the 8 bit x86
@@JMDAmigaMusicjust like PC gamers not interested in speccy sounds. Here's the original sound Carmack programmed. Not yo sh!tty specy bzzbzz
look for Tim Follin ZX spectrum then let me know
While impressive I can't make out much of anything. Seems unplayable to me, and I could do without the annoying pc-speaker sounds.
worthy effort, but much too late, RPi pico can run doom with ease.
you're missing the point
lol fake
There's a download link in the description.
@@DookNookim Amazing, I will download it
@@SamSam-zn4ymlol dumb
@@SamSam-zn4ym ІоІ о|uмЬ