Amen I completely agree 👍, 32X was a dud , my SNES Doom was more impressive to me than the disappointing 32X , I sold away my 32X shortly after purchasing Doom 32X 😂🎉 Virtua Fighter was only good title on 32X , , felt scammed by SEGA ,so glad I got rid of it , , ,
@@wyldelf2685Star Wars Arcade was a fun title, Doom gave me immense joy because my family was too poor to have a computer. I got a lot of enjoyment out of it.
@@mikeg2491 yes we never had home computer growing up either , , you need to enjoy a few hours playing SNES DOOM , , ,then a few hours Playing Panasonic 3DO Doom , , and finally Sony PlayStation Doom/final Doom , , ,these have same level structure and enemies , ,it will give you proper overall perspective on Doom , ,😸👍👍
@@wyldelf2685the SNES version was pretty impressive. Not only did it have nice graphics for the hardware the music and sound was great. The 32x version was kinda junky.
@@danmakumanAn entirely understandable point of view. Nonetheless, the SVP chip is legitimate Genesis hardware, and a programming challenge in and of itself. Squeezing performance efficiency out of the SVP is an as yet unpicked fruit for retro coders.
There was a Duke Nukem 3D port for the Genesis/Mega Drive in Brazil, sold by the Brazilian representatives of Sega... And it ran fairly good, WITHOUT aditional hardware.
it’s very impressive I have the cartridge, I’d like a basic map editor for it like zero tolerance has its shame such a good engine they made can’t be put to use for new ideas
Less a port, more like castle wolfenstein style shooter with a duke 3d skin, it could only do walls on a grid, it wasn't anywhere near as advanced as the doom engine.
@@pam8352 No skilled modern Formula 1 drivers because Formula 1 cars are better than older ones? Laborers aren't skilled if they use power tools instead of manual labour? No skilled gamers on modern consoles because they have better controllers than past ones? Using better tools like SGDK doesn't make you less skilled, it allows you to do more with the skills you have. Don't be ignorant.
The 32X version is how I started loving DOOM. When I beat it, I knew something was off like a rushed ending. Realizing that, I played the PC version and haven't looked back. I hear great things about the new Ressurection update, as close to the PC as it gets!
Never thought I'd see a version worse than the SNES one, but here we are. Still, very impressive to run on base hardware with no additional chips in the cartridge.
@@Mechaghostman2 It also had missing enemies, additional missing geometry in the levels, does not have diminishing lighting that fades closer to darkness into the distance, the guns don't light up the environments when they fire, and a couple of other things as I recall.
WoooW if this tech demo runs on a stock hardware, that will even put the snes with super fx2 chip into shame,why i don’t see such amezing tech demos on the snes??? Just look what coders could squeeze out of the genesis,it’s time to see the snes get such treatment as well.just imagine this tech demo running on a stock snes, that would be really mind blowing.
Put simply it’s far more complex to code snes games like this unless your some programmer like John carmack it’s the custom hardware and software it uses as usual Nintendo being dogmatic and exclusive
Also you can run full dos pc doom through a megadrive using that special everdrive pro cartridge which does the work but that option is still very clever the fx chip can’t do that obviously so I guess the sega won out for thinking ahead and being more versatile
@@BFFoundation-ke2pi The 68000 is more powerful than the 65C816 and can be overlooked to 10.7MHz. The DMA "blast processing" is also about 2x the bandwidth.
I'll take this with this framerate any time! And I don't know if the music is from Genesis hardware, but it's amazing! I hope the crazy SOB that did this demo will do the entire game! 🤩
Things we learn watching stuff like that: -A little bit more time, investment and effort and we could've had less shitty games and ports in videogame history.
Really impressive. They might be able to get more fps if they write it (or at least the hot parts of the loop) in assembly language. Set that 68000 heart on fire!
The 12.5MHz CPU on the Sega CD could really make this project work. The Sega CD could also handle all of the sound, music, and scaling of monsters and rockets.
Pretty sure with a smaller and wider screen window there could have been a framerate as good as Zero Tolerance :) The basic CPU of the Mega Drive was quite beefy and 3D was really nice on it.
@KRAFTWERK2K6 The bandwidth here isn't really the shortcoming. What kills us on the frame rate on this project? It's how difficult it is to calculate the start and end points for the lines. I've gone over this code.A dozen times, and there are a few performers hack left to be performed on this engine.
Is there any potential to optimize these 1-2 fps to at least 6-8 fps? It looks impossible (5 times more fps) Upd Maybe only if the author takes the optimizations from Master System's Wolfenstein 3d port, i.e. no textures and inaccurate geometry
Yes, we've been looking at ways to further optimize the 68k and C code while making use of the powerful DMA and VDP hardware. It could be possible to get 10-12fps with this engine... or build a new one that cuts some corners and uses the more powerful VDP/DMA to get 20-60fps.
Not bad for a 7.6 MHz processor. If that's actually Sega Genesis music, that's impressive too. 7.6mhz to the Super FX 21 MHz and still able to do that is amazing.
The gap is even wider, as the superFX just do more per clock cycle, specially when talking about multiplication operations and drawing pixels on the right format. The superFX is equivalent to a 68000 running at 30Mhz or something.
@@dan_loup nah it can only run at the designed clock speed. but it does specialize at different tasks. Idk how old you are but it's the Pentium II could play DVD discs but no amount of horse power could early pC brute force that ability.
Maybe a turn-based Doom RPG would fit better in this case, even to compensate for the low fps.. But anyway, it's wonderful to see the Genesis / MegaDrive run Doom without any auxiliary chip.
Really cool tech demo, but at this framerate it wouldn't be fun to play. Still, just for the sake of "Can it run Doom?" discussions I'd love to see it completed to playable form.
Update: There are basically two approaches being looked at on this project, if we've got other Genesis programmers out there: i. Further 68k and C code optimizations for folks out there who know what they're doing or have some knowledge of the Amiga, Atari ST, or other 68k DOOM projects. Possible 50-100% speedup doing these peephole optimizations. ii. Switching to 128KB mode and using the powerful DMA to draw the vertical lines directly to the frame buffer in VRAM. At 320x160 (with 32 lines reserved for the HUD), that would take up 20KB in the VRAM, leaving 20KB for storing textures, then using the very fast 16-bit VRAM Copy function to draw these vertical lines at 60fps. While that latter approach would lead to some really severe cutbacks in the final product, I believe that this high frame rate and large image space will more than make up for the artifacts and missing graphical effects. This approach would also allow us to free up a lot of 68k processing time to handle the complex mathematical calculations (especially trigonometric operations) that are preventing us right now from going really fast.
True, but we need Z80 programmers to get that 5-600,000 IPS out of that CPU, and few people know how to optimize code for it, aside from a few peephole optimizations. And I only remember a handful. Better would be to use LUTs for the hard number crunching and get some 68000 experts to go over the four critical functions.
There are more comments and ideas posted at the Github page. If you have any knowldge of the inner working of the Genesis/MD or know how to write efficient Assembly, any help would be appreciated.
True. I'm nor sure DMA is the best option for this though. Since the textures must be scaled, I would lookup the texel and directly wtite it to the VDP. This is much faster because otherwise you would have to write to memory and then burst it, which occupies the databus and keeps the CPU from running at its maximum (it doesn't have any L1/L2 cache to work from). But that's just my hunch, I never tried anything like this. Doing transparency would be impossiblethough, but a workaround is to use both graphics layers. If I was in my twenties having plenty of time I would give it a try. But fact is I couldn't even finish my Doom 3 port for Wii I started 12 years ago. Tried to pick it up last year but time is too scarce.
DMA can draw vertical strips, and you don't have to increment by one. There's a register where you can choose a different value, and you can change that value at runtime while you're drawing the line.
@@MaxAbramson3ah I lost my message but it went to the root. Yes the issue with DMA is that it copies from memory. Which means the CPU has to write the strips to memory first. I just propose to write it directly to the VDP instead. Of course VDP has slow 8 bit access and the VDP is bandwidth limited, but since the texture coordinate must be calculated and a texel fetched I don't think the 68000 will write too fast. DMA solution is interesting when you write to a framebuffer first if you have to deal with transparencies or horizontal fills. But that's not needed for a simple Doom like engine.
@@what9418 20KB frame buffer in VRAM can be written to using both the CPU and DMA. DMA bandwidth is about 4-5x that of the 68000 MOVEM.w and MOVEM.l, but has some limitations. The existing engine writes to RAM, then moves the final result to VRAM, but I believe that we can get a 50-70% speedup just going straight to VRAM. And perhaps another 2-3x speedup. Shadow-Highlight Mode could be used to draw lighting and shadows very quickly by the VDP.
@what9418 S/H Mode is down to the pixel. It could be artifacty, but getting anywhere near 20fps on the old Genny with no extra Sega CD hardware would be a herculean task. 10-12fps is more realistic.
I'm curious how small one can condense and compress all episodes of Doom. Specifically to fit onto a genesis cartridge. If I were ever in charge of such a project, I'd be inclined to release the full thing anonymously somewhere. Considering it's homebrew, you'd likely be able to take down the original link by the time other rom sites are hosting it.
From the author: "In the BSP renderer I rewrote several 32-bit operations as 16-bit ones to better suit the 68000 CPU but it is all in C and a bit slow. I reckon a 68k ASM wizard could have made a DOOM port for the Megadrive / Genesis back in the day just like the SNES port from randallinden."
True, but physics can be scaled down and amount of enemies can be reduced. Also, you can use a large rom cart to store precalculations of all of the math. Back in the days that would have been too expensive. He is not doing that yet.
You guys can all jump aboard the get hub project and take a look at how things are done. You can even just leave a comment or read some of the ideas that we've written.
Now imagine with the SEGA CD. Has another 12.5 mhz 68000. (For reference the Genesis has a 7.68 mhz 68000) Sprite scaling and rotation thanks to a special chip. 768K of RAM- 256K for WRAM. CD (duh) 8 PCM voices. And then CD32X has the 32X too.
Don't forget the SVP chip, as it is a lot simpler to implement than the Sega CD's hardware, which has a considerable amount of data bottlenecks to deal with (one of the reasons that the Sonic CD special stages have such a low framerate). The CD32X is arguably in an even worse situation.
SegaCD cpu is already used in some form in latest 32x Doom Resurrection version. Also, since this demo is written in C, i believe a proper ASM optimized version would run twice as fast with stock M68000, of course an SVP version would lead at least 20-30 fps, maybe more. Point is, almost all Sega consoles still have untapped potential to be discovered.
@@KRAFTWERK2K6 yeah. Plus there’s a 128K mode in the genesis allowing up to 14.8 kilobytes a frame at 60hz or a whopping 34K at 50hz (one of 50hz’s biggest advantages)
@@slashrose3287 oh yeah. Sure Genesis works well with C but when making stuff like this ASM is the way to go Edit: I actually do know 68000. I’ve been doing some tests on Amiga (see my channel) but I could get my environment set up for Genesis too.
It’s pretty good, but should have stuck to the Jaguar level maps. If they did that for the SNES, it would have been a better game. I’m always impressed with what people do today with such old technology though.
I think you can achieve a few shortcuts by storing more lookup tables in ROM. You could easily use 16Mb worth of tables, saves a lot of divides. Anyways well done so far!
DIVU takes 158 cycles on the 68000. DIVS takes 170 cycles. Trigonometric operations can take longer. IIRC, finding points for polygons takes 2301 cycles, limiting the 68000 to 3300 vertices per second or just 1100 triangles per second (or 700 quads). However, we could use LUTs to get several times that, then use the DMA to draw the actual lines forming those, for 10,000+ flat shaded polygons per second. Using 8x8 sprites as textures, we could simply calculate the location and priority of each sprite and draw those 3D objects front to back (Reverse Painters) and still get fairly impressive 3D--almost PS1 quality. Strictly for drawing mostly vertical (and a few horizontal) lines for DOOM, Starfox DMA has shown that we can get 15-20fps on the bone stock Genesis.
Why 8x8 sprites? Div is pretty fast indeed. I'd suggest simple luts for things as 1/Z, inverse tangent, and x/y and scale inputs to fit those luts. Then you can find projection points and scales almost instantly.
@what9418 We definitely went down that rabbit hole. LUTs would probably be 8x8 with one by return, or 64KB. Other LUTs (trigonemtric lookups) would have to be 16-bit with 16-bit result. There doesn't seem to be a big enough speedup on multiplies to justify large LUTs. Even 10x10->8 bit result would consume 1MB out of a maximum of 15MB available. Would definitely appreciate help with the project on GitHub.
@what9418 BTW, DOOM draws vertical lines of texture data from RAM/ROM. Genesis has enough bandwidth to draw about 320x160 at 30fps using the DMA. However, the CPU is rated for 1.3 MIP for everything (offloading some work to the Z80), and calculating the start and stop points is too much work, so LUTs and blank floors/ceilings and other economizations are necessary to get anything near 10fps. I'm reading a book on DOOM engine right now.
Perhaps if u combine it with the Sega SVP chip that ran virtual racing. You may have a faster version of your game one that can out perform the Super FX2 chip Doom snes version.
Yeah, but the cool thing is getting to push the genesis to its absolute hardware limits. There's something really cool about playing that system, imagining what it's really capable of.
I think we calculated 4-5fps right now. We have a couple of ideas being discussed that could get us another 1fps with one idea and perhaps 2-4 additional making better use of the DMA and VDP. We need programmers, though.
I wonder how much faster this would be if it was used the 3D chip from the Virtua Racing cart. That game is crap anyway, so it would be nice to replace the eeprom in it with this one.
now do it on the master system. kek. As impressive as this is, its not possible to get doom playable on a 16bit 68000cpu with 1980s custom chips. The recent efforts by the amiga fanatics to get Dread-Grind working have resulted in an impressive Wolfenstein flat map 3D engine, but that's nothing new, it was done back in the 1990s on the MegaDrive-Genesis with DukeNukem.
With some more System 16 hackers, we might be able to get up to the 10-15fps range. However, doing most of the work with the DMA, VDP, and LUTs might get us a small screen at 20-30fps.
It’s running on base hardware, that in itself is incredible. Heck even the SNES version had to have the Super FX chip to even run it at an insanely low resolution.
@@SonySupporter This console cost 150 USD with 1 pack in game in 91, it's the closest price I could find to the launch of Doom. It’s likely the price went down. Doom required a 486 right? "A 486 PC cost users somewhere north of £2,000 (roughly £4,500 today)."
The music sounds better than the farting noises from 32x
Amen I completely agree 👍, 32X was a dud , my SNES Doom was more impressive to me than the disappointing 32X , I sold away my 32X shortly after purchasing Doom 32X 😂🎉 Virtua Fighter was only good title on 32X , , felt scammed by SEGA ,so glad I got rid of it , , ,
no. 32x is good@@wyldelf2685
@@wyldelf2685Star Wars Arcade was a fun title, Doom gave me immense joy because my family was too poor to have a computer. I got a lot of enjoyment out of it.
@@mikeg2491 yes we never had home computer growing up either , , you need to enjoy a few hours playing SNES DOOM , , ,then a few hours Playing Panasonic 3DO Doom , , and finally Sony PlayStation Doom/final Doom , , ,these have same level structure and enemies , ,it will give you proper overall perspective on Doom , ,😸👍👍
@@wyldelf2685the SNES version was pretty impressive. Not only did it have nice graphics for the hardware the music and sound was great. The 32x version was kinda junky.
Very impressive. It would be cool to see this be done with the help of the SVP chip and more megabits of memory.
I think the challenge and the fun it's to make it run without any additional hardware. The programmer said it was a lot of room to improve it so yeah.
@@danmakumanAn entirely understandable point of view. Nonetheless, the SVP chip is legitimate Genesis hardware, and a programming challenge in and of itself. Squeezing performance efficiency out of the SVP is an as yet unpicked fruit for retro coders.
Wasn't there originally supposed to be SVP Virtua Fighter, Virtua Cop and Daytona ?
or the x32 slot on it too
problem is the price and availability of the mega pro everdrive im still waiting for a chinese clone though i have shelled out on one 210 quid
There was a Duke Nukem 3D port for the Genesis/Mega Drive in Brazil, sold by the Brazilian representatives of Sega... And it ran fairly good, WITHOUT aditional hardware.
it’s very impressive I have the cartridge, I’d like a basic map editor for it like zero tolerance has its shame such a good engine they made can’t be put to use for new ideas
Less a port, more like castle wolfenstein style shooter with a duke 3d skin, it could only do walls on a grid, it wasn't anywhere near as advanced as the doom engine.
nicely done. Reminds me of the tectoy duke nukem 3D release
shares techniques
I was just about to comment that. I bet with a little work they could get the frame rate up to something playable
Its incredible what skilled programmers can do with the Genesis nowadays!!😳🤯
skilled programmers on megadrive write code in asm because it is faster than c
@@pam8352 No skilled modern Formula 1 drivers because Formula 1 cars are better than older ones? Laborers aren't skilled if they use power tools instead of manual labour? No skilled gamers on modern consoles because they have better controllers than past ones?
Using better tools like SGDK doesn't make you less skilled, it allows you to do more with the skills you have. Don't be ignorant.
Adding to the list of consoles that can play DOOM.
Lol
@@pam8352 depends.
Too damn cool and thank you for sharing! Amazing what the Genesis can do!
You can read a novel in between each frame too! Multi-tasking is great
Runs on my megadrive love to see this improve
Amazing! Its remember Duke Nuken 3D
his wolfenstein port for arduboy is incredible
The 32X version is how I started loving DOOM. When I beat it, I knew something was off like a rushed ending. Realizing that, I played the PC version and haven't looked back. I hear great things about the new Ressurection update, as close to the PC as it gets!
This feels like a fucking creepy pasta game
this is so cool to see! :)
Never thought I'd see a version worse than the SNES one, but here we are.
Still, very impressive to run on base hardware with no additional chips in the cartridge.
Sega 32X version is worse then SNES one
@@dmitryyershoff7938
Yes and no. It had worse music, but better frame rate, graphics, enemy AI, and the ability to circle strafe.
@@Mechaghostman2 It also had missing enemies, additional missing geometry in the levels, does not have diminishing lighting that fades closer to darkness into the distance, the guns don't light up the environments when they fire, and a couple of other things as I recall.
@@inceptionaland a good amount of missing levels
@@greensun1334 Because it was built from the Jaguar Version, which was also a cartridge based Console.
WoooW if this tech demo runs on a stock hardware, that will even put the snes with super fx2 chip into shame,why i don’t see such amezing tech demos on the snes???
Just look what coders could squeeze out of the genesis,it’s time to see the snes get such treatment as well.just imagine this tech demo running on a stock snes, that would be really mind blowing.
Put simply it’s far more complex to code snes games like this unless your some programmer like John carmack it’s the custom hardware and software it uses as usual Nintendo being dogmatic and exclusive
Also you can run full dos pc doom through a megadrive using that special everdrive pro cartridge which does the work but that option is still very clever the fx chip can’t do that obviously so I guess the sega won out for thinking ahead and being more versatile
@@BFFoundation-ke2pi The 68000 is more powerful than the 65C816 and can be overlooked to 10.7MHz. The DMA "blast processing" is also about 2x the bandwidth.
I'll take this with this framerate any time! And I don't know if the music is from Genesis hardware, but it's amazing!
I hope the crazy SOB that did this demo will do the entire game! 🤩
Things we learn watching stuff like that:
-A little bit more time, investment and effort and we could've had less shitty games and ports in videogame history.
And no deadlines whatsoever
@Matzu-Music Those guys were able to work full time on their projects and had backing by their own company, and uh SEGA. We're really on our own.
how can i help you on that demo?im graph designer dude xD
Really impressive. They might be able to get more fps if they write it (or at least the hot parts of the loop) in assembly language. Set that 68000 heart on fire!
as it was with wolf3d. That port is just perfect.
Next there should be a CD version with the option to switch between the original SC-55 music or the forever badass 3DO music
There are roms called md+ that use cd music no need for sega cd no more
Don't need sega cd there are md+ cd roms
The 12.5MHz CPU on the Sega CD could really make this project work. The Sega CD could also handle all of the sound, music, and scaling of monsters and rockets.
a genuine DOOM for standard sega genesis, unlike megadoom which only runs on everdrive cartridge.
Pretty sure with a smaller and wider screen window there could have been a framerate as good as Zero Tolerance :) The basic CPU of the Mega Drive was quite beefy and 3D was really nice on it.
@KRAFTWERK2K6 The bandwidth here isn't really the shortcoming. What kills us on the frame rate on this project? It's how difficult it is to calculate the start and end points for the lines. I've gone over this code.A dozen times, and there are a few performers hack left to be performed on this engine.
Uhhhh.... I think I can safely say... HOLY FUCKING SHIT, M8! :'0
I share your sentiments!
Some areas of Saturn Doom run about as well as this.
Big props!
Mega32XDoom would be even cooler.
Look for the Doom 32X Resurrection port.
Is there any potential to optimize these 1-2 fps to at least 6-8 fps? It looks impossible (5 times more fps)
Upd
Maybe only if the author takes the optimizations from Master System's Wolfenstein 3d port, i.e. no textures and inaccurate geometry
Yes, we've been looking at ways to further optimize the 68k and C code while making use of the powerful DMA and VDP hardware. It could be possible to get 10-12fps with this engine... or build a new one that cuts some corners and uses the more powerful VDP/DMA to get 20-60fps.
good to see programmers push the limits
Not bad for a 7.6 MHz processor. If that's actually Sega Genesis music, that's impressive too.
7.6mhz to the Super FX 21 MHz and still able to do that is amazing.
The gap is even wider, as the superFX just do more per clock cycle, specially when talking about multiplication operations and drawing pixels on the right format.
The superFX is equivalent to a 68000 running at 30Mhz or something.
@@dan_loup nah it can only run at the designed clock speed. but it does specialize at different tasks. Idk how old you are but it's the Pentium II could play DVD discs but no amount of horse power could early pC brute force that ability.
Ya estamos en la época donde pueden usar los everdrive y aprovechar la torre del poder: Sega CD32X.
DOOM Resurrection uses the 32X, but progress is stalled. I believe that the Sega CD can be used to handle all of the audio.
I hope the development goes on until the game is finished.
One thing is running doom, other is running it fluidly... enough...
With some programmers who know how to use the DMA, VDP features, and code for 68000, I'm pretty sure that we could beat 10fps.
Somehwo, you maed it sound better than the 32x version.
first it was raycasting and now doom
cool
Maybe a turn-based Doom RPG would fit better in this case, even to compensate for the low fps..
But anyway, it's wonderful to see the Genesis / MegaDrive run Doom without any auxiliary chip.
Not the same experience. A bit more tweaks could get us up to 6-10fps, and we've discussed using the VDP more to get even higher frame rates.
Really cool tech demo, but at this framerate it wouldn't be fun to play. Still, just for the sake of "Can it run Doom?" discussions I'd love to see it completed to playable form.
Some official ports (such as Super Nintendo and 3DO) were even worse, but people played them.
I've taken a look at the C code and see a few optimizations is that are available. We could also inline some 68k Assembly.
Update: There are basically two approaches being looked at on this project, if we've got other Genesis programmers out there:
i. Further 68k and C code optimizations for folks out there who know what they're doing or have some knowledge of the Amiga, Atari ST, or other 68k DOOM projects. Possible 50-100% speedup doing these peephole optimizations.
ii. Switching to 128KB mode and using the powerful DMA to draw the vertical lines directly to the frame buffer in VRAM. At 320x160 (with 32 lines reserved for the HUD), that would take up 20KB in the VRAM, leaving 20KB for storing textures, then using the very fast 16-bit VRAM Copy function to draw these vertical lines at 60fps.
While that latter approach would lead to some really severe cutbacks in the final product, I believe that this high frame rate and large image space will more than make up for the artifacts and missing graphical effects. This approach would also allow us to free up a lot of 68k processing time to handle the complex mathematical calculations (especially trigonometric operations) that are preventing us right now from going really fast.
the dither shading is the right technique. Perhaps a couple of fps's can be rescued if the z80 is used for everything that is not graphics.
True, but we need Z80 programmers to get that 5-600,000 IPS out of that CPU, and few people know how to optimize code for it, aside from a few peephole optimizations. And I only remember a handful. Better would be to use LUTs for the hard number crunching and get some 68000 experts to go over the four critical functions.
THis is amazing. ANy word on the expansion packs getting ported over too?
Expansion pack?
Será que esse trabalho terá um final feliz?
Portugues? Italiano? Esperamos que si.
Better frame rate than Hard Drivin
Beautyful
Is development going on at all? Is there a playable demo?
I would really like to play this game on Sega mega drive
There are more comments and ideas posted at the Github page. If you have any knowldge of the inner working of the Genesis/MD or know how to write efficient Assembly, any help would be appreciated.
True. I'm nor sure DMA is the best option for this though. Since the textures must be scaled, I would lookup the texel and directly wtite it to the VDP. This is much faster because otherwise you would have to write to memory and then burst it, which occupies the databus and keeps the CPU from running at its maximum (it doesn't have any L1/L2 cache to work from). But that's just my hunch, I never tried anything like this.
Doing transparency would be impossiblethough, but a workaround is to use both graphics layers.
If I was in my twenties having plenty of time I would give it a try. But fact is I couldn't even finish my Doom 3 port for Wii I started 12 years ago. Tried to pick it up last year but time is too scarce.
DMA can draw vertical strips, and you don't have to increment by one. There's a register where you can choose a different value, and you can change that value at runtime while you're drawing the line.
@@MaxAbramson3ah I lost my message but it went to the root.
Yes the issue with DMA is that it copies from memory. Which means the CPU has to write the strips to memory first. I just propose to write it directly to the VDP instead. Of course VDP has slow 8 bit access and the VDP is bandwidth limited, but since the texture coordinate must be calculated and a texel fetched I don't think the 68000 will write too fast.
DMA solution is interesting when you write to a framebuffer first if you have to deal with transparencies or horizontal fills. But that's not needed for a simple Doom like engine.
@@what9418 20KB frame buffer in VRAM can be written to using both the CPU and DMA. DMA bandwidth is about 4-5x that of the 68000 MOVEM.w and MOVEM.l, but has some limitations. The existing engine writes to RAM, then moves the final result to VRAM, but I believe that we can get a 50-70% speedup just going straight to VRAM. And perhaps another 2-3x speedup. Shadow-Highlight Mode could be used to draw lighting and shadows very quickly by the VDP.
@@MaxAbramson3 yeah the highlighting would definitely enable a cheap, lowres lighting solution.
It would be a great project to work on.
@what9418 S/H Mode is down to the pixel. It could be artifacty, but getting anywhere near 20fps on the old Genny with no extra Sega CD hardware would be a herculean task. 10-12fps is more realistic.
I'm curious how small one can condense and compress all episodes of Doom. Specifically to fit onto a genesis cartridge. If I were ever in charge of such a project, I'd be inclined to release the full thing anonymously somewhere. Considering it's homebrew, you'd likely be able to take down the original link by the time other rom sites are hosting it.
4MB, IIRC. Genesis carts cam theoretically be up to 15MB.
Sorry, don't get me wrong, but I wouldn't expect much of it when you drop in all needed sprites and physics.
From the author: "In the BSP renderer I rewrote several 32-bit operations as 16-bit ones to better suit the 68000 CPU but it is all in C and a bit slow.
I reckon a 68k ASM wizard could have made a DOOM port for the Megadrive / Genesis back in the day just like the SNES port from randallinden."
True, but physics can be scaled down and amount of enemies can be reduced.
Also, you can use a large rom cart to store precalculations of all of the math. Back in the days that would have been too expensive. He is not doing that yet.
You guys can all jump aboard the get hub project and take a look at how things are done. You can even just leave a comment or read some of the ideas that we've written.
It looks and sounds like Doom for NES.
Still more playable than the saturn version
Wow, very not bad!
Está indo bem!
Muchas gracias.
Bem? Portugues?
@@MaxAbramson3 Brasileiro
@@whopoder Eu no fala. Siento.
Now imagine with the SEGA CD.
Has another 12.5 mhz 68000. (For reference the Genesis has a 7.68 mhz 68000)
Sprite scaling and rotation thanks to a special chip.
768K of RAM- 256K for WRAM.
CD (duh)
8 PCM voices.
And then CD32X has the 32X too.
Don't forget the SVP chip, as it is a lot simpler to implement than the Sega CD's hardware, which has a considerable amount of data bottlenecks to deal with (one of the reasons that the Sonic CD special stages have such a low framerate). The CD32X is arguably in an even worse situation.
SegaCD cpu is already used in some form in latest 32x Doom Resurrection version. Also, since this demo is written in C, i believe a proper ASM optimized version would run twice as fast with stock M68000, of course an SVP version would lead at least 20-30 fps, maybe more. Point is, almost all Sega consoles still have untapped potential to be discovered.
this would have definitely been a system Seller for the Mega CD. Especially since it used only the CPUs, which John Carmack always insisted on.
@@KRAFTWERK2K6 yeah.
Plus there’s a 128K mode in the genesis allowing up to 14.8 kilobytes a frame at 60hz or a whopping 34K at 50hz (one of 50hz’s biggest advantages)
@@slashrose3287 oh yeah. Sure Genesis works well with C but when making stuff like this ASM is the way to go
Edit: I actually do know 68000. I’ve been doing some tests on Amiga (see my channel) but I could get my environment set up for Genesis too.
Does it support level wads???
MegaDoom does for the everdrive pro BUT it involves editing the doom wad IE removing and replacing maps and sprites etc.
It’s pretty good, but should have stuck to the Jaguar level maps. If they did that for the SNES, it would have been a better game.
I’m always impressed with what people do today with such old technology though.
I think you can achieve a few shortcuts by storing more lookup tables in ROM. You could easily use 16Mb worth of tables, saves a lot of divides.
Anyways well done so far!
DIVU takes 158 cycles on the 68000. DIVS takes 170 cycles. Trigonometric operations can take longer. IIRC, finding points for polygons takes 2301 cycles, limiting the 68000 to 3300 vertices per second or just 1100 triangles per second (or 700 quads). However, we could use LUTs to get several times that, then use the DMA to draw the actual lines forming those, for 10,000+ flat shaded polygons per second. Using 8x8 sprites as textures, we could simply calculate the location and priority of each sprite and draw those 3D objects front to back (Reverse Painters) and still get fairly impressive 3D--almost PS1 quality.
Strictly for drawing mostly vertical (and a few horizontal) lines for DOOM, Starfox DMA has shown that we can get 15-20fps on the bone stock Genesis.
Why 8x8 sprites?
Div is pretty fast indeed. I'd suggest simple luts for things as 1/Z, inverse tangent, and x/y and scale inputs to fit those luts. Then you can find projection points and scales almost instantly.
@what9418 We definitely went down that rabbit hole. LUTs would probably be 8x8 with one by return, or 64KB. Other LUTs (trigonemtric lookups) would have to be 16-bit with 16-bit result. There doesn't seem to be a big enough speedup on multiplies to justify large LUTs. Even 10x10->8 bit result would consume 1MB out of a maximum of 15MB available. Would definitely appreciate help with the project on GitHub.
@what9418 BTW, DOOM draws vertical lines of texture data from RAM/ROM. Genesis has enough bandwidth to draw about 320x160 at 30fps using the DMA. However, the CPU is rated for 1.3 MIP for everything (offloading some work to the Z80), and calculating the start and stop points is too much work, so LUTs and blank floors/ceilings and other economizations are necessary to get anything near 10fps. I'm reading a book on DOOM engine right now.
If only the Sega G/MD had some sort of Super FX chip equivalent. At least on the good side it's easier to emulate G/MD due to this.
Out of curiosity, would use the svp chip?
That would be a huge project in and of itself. But it sure would look cool if we could do it.
Doom Guy just arrived to the lavatory after holding in it for so long. Too bad there is no toilet bowl...just dull walls covered in excrement.
lol it’s quite authentic looking I think
i would be so pissed if this was released and i didnt even have a genesis. or a super nintendo.
Perhaps if u combine it with the Sega SVP chip that ran virtual racing. You may have a faster version of your game one that can out perform the Super FX2 chip Doom snes version.
Yeah, but the cool thing is getting to push the genesis to its absolute hardware limits. There's something really cool about playing that system, imagining what it's really capable of.
2 fps?
I think we calculated 4-5fps right now. We have a couple of ideas being discussed that could get us another 1fps with one idea and perhaps 2-4 additional making better use of the DMA and VDP. We need programmers, though.
@@MaxAbramson3In any case...keep it up guys, you are very good!
@OrnelloLiborio I'm not the lead programmer here. John Howard has done most of the work to make this possible.
The music is better than the official 32x version but doesn't do much justice with those weak drums
I wonder how much faster this would be if it was used the 3D chip from the Virtua Racing cart. That game is crap anyway, so it would be nice to replace the eeprom in it with this one.
23MIPS, IIRC, but only and extra 128KB of RAM.
Lol, I saw a c64 demo which ran smoother
Do you have the link to the code?
Todavía le falta..
Qual es?
Great, now run it on something that isn't Kega Fusion, like Blastem.
Can't you just reuse Dread for Amiga? It looks better and runs much faster.
Could doom wads he run on top of that engine?
Svp chip
Much better than the 32x port
now do it on the master system.
kek. As impressive as this is, its not possible to get doom playable on a 16bit 68000cpu with 1980s custom chips.
The recent efforts by the amiga fanatics to get Dread-Grind working have resulted in an impressive Wolfenstein flat map 3D engine, but that's nothing new, it was done back in the 1990s on the MegaDrive-Genesis with DukeNukem.
The Genesis has some specialized hardware and 15MB of fast cart ROM that could allow it to beat the Amiga.
There was actually a discussion on a forum. Somewhere about how you might go about making doom on the master system. There might even be a demo.
Se ve fatal si no es 32x
Genesis does... its best... p-please...
With some more System 16 hackers, we might be able to get up to the 10-15fps range. However, doing most of the work with the DMA, VDP, and LUTs might get us a small screen at 20-30fps.
I see why genesis couldn’t handle it!
It’s running on base hardware, that in itself is incredible. Heck even the SNES version had to have the Super FX chip to even run it at an insanely low resolution.
We think that about 10fps is possible with this engine.
Impressive but slooooow....
5 frames per second. Genesis is too weak.
But it’s still have that blast processing goodness
for a 16-bit console it’s incredible
@@protocetid It is not. No enemies, no hit detection, no doors. When you add those the frame rate will be what...1 frame per hour.
@@SonySupporter This console cost 150 USD with 1 pack in game in 91, it's the closest price I could find to the launch of Doom. It’s likely the price went down. Doom required a 486 right? "A 486 PC cost users somewhere north of £2,000 (roughly £4,500 today)."
mega everdrive pro runs full pc doom through the mega drive but that’s a cyclone IV fpga. It also has SVP inbuilt
Credo
Looks terrible
CPU was made in 1979. DOOM is meant for $2,000 PC from 1994 with 4-8MB of RAM. Genesis has 64KB of RAM.
Interested, it's in full 3-D or 2.5-D engine?
It's a direct port of the doom engine, so it depends on what you think Doom is. I personally call it 3D with restrictions :)