I literally:
1. Saw this article headline about a polygon rendering engine on the Mega Drive
2. Thought, oh this is going to be good
3. Made some tea
4. Settled in to enjoy it.
Not only did I love the demo and your article, you cleared up a longstanding mystery to me. I know that Another World (aka Out of This World) and Flashback (intro only) used similar techniques to render "canned" or "pre-baked" polygon animations on the Mega Drive, but I knew literally nothing about how that was possible. Thanks to you, now I have some kind of idea. Were you inspired by those games, to pull off this awesome effect in your demo? (BTW, you achieved a much better frame rate AND did it without borders... totally badass)
Last but not least, thank you for the inspiration. I'm not a graphics programmer but I am a programmer and I have always been inspired by demos ever since the days of Future Crew. Coders like you inspire coders like me to better ourselves and be unafraid of challenges.
The other was Gunstar Heroes, where the first boss is made of 3D cubes. See here at 4:00: https://youtu.be/9v3B1hzMwnQ?t=240
I'm just interested if you know or can guess anything about how the "3D" might have been done in those.
I noticed the cubes are always aligned perfectly to the axis. And they have an isomorphic projection so the cube is always the same height (although that shouldn't be strictly necessary) as it's rotating. I also noticed the cubes never seem to get smaller if they are closer to the background.
Because of this you could just have a series of sprites each showing the cube in a different angle of rotation.
Now all you need to do is properly position a bunch of sprite (16 cubes + head) and it looks like a bunch of cubes that are actually drawn in 3-D. It wouldn't surprise me if they have some small table of the X/Y positions of the cubes precomputed so they don't have to do that in real time.
In fact since every cube is always rotated at the same angle you could just have one sprite in the system table and update it every frame.
That's my guess anyway. Clever sprite trickery.
It wouldn't surprise me if F1 uses something closer to what is described in the article (although much less capable).
F1 on the Mega Drive owes its existence to an earlier game for the Atari ST, Vroom [5]. The brainchild behind that game, "Dan McRae", talks in a video interview [3] about how he arrived at that particular version of the game from his earlier revisions on older platforms -- where techniques shown in Lou's Pseudo 3d Page [4] apply, to more advanced techniques [6] similar to the ones presented in this submission.
F1 on the Mega Drive was done by the same dev studio that collaborated with McRae on Vroom, and at least one of the same programmers, but presumably had to do some advanced tilemap trickery specific to the console. Unfortunately, compared to other games in this series, there is very little information on the technical aspects of the Mega Drive version.
[1] http://www.hardcoregaming101.net/gunstarheroes/gunstarheroes... [2] http://www.racketboy.com/retro/sega/genesis/best-sega-genesi... [3] https://youtu.be/ZTd-fFScLGA [4] http://www.extentofthejam.com/pseudo/ [5] https://youtu.be/ZTd-fFScLGA?t=7m33s [6] https://youtu.be/ZTd-fFScLGA?t=10m28s
The rotation of the character is just made of different sprites.
I took a quick look at F1 just now though. The way it makes use of the nametable and patterns is very similar to what I do. There are precomputed fully solid patterns at a fixed location and the non-solid patterns seem to be bump allocated.
It makes use of both layers though, drawing the street on one and everything else on the other. I think it uses per scanline scrolling to apply correct perspective to the street.
I can't say anything about how it actually renders into the tile map for now. That would require a lot more than looking at the VDP (graphics chip) debugger in an emulator.
There actually was an extension I did, that was scrapped because it just didn't look good. At some point there was support for dithering. That helps with the low color precision of the Mega Drive (3-bit/channel). It only supported 50% checkerboard dither though, which looked odd when animated. I toyed with some ideas on how to improve upon that and discussed them within our demo group, but in the end the decision was to not use dithering.
P.S. Impressive demo, kudos :-)
As the biggest part (but not all) of the demoscene is based in Europe, most demos target PAL hardware. The same is true for our demo group. NTSC ports can be very difficult if not impossible as PAL often does have a slight advantage in CPU cycles per frame. This is also the case on the Mega Drive.
Porting the polygon renderer shouldn't be a problem as it renders in an off-screen CPU RAM buffer. In the worst case it would have to skip more frames, having a lower effective framerate.
A lot of the other effects have very critical timing though. I've been told that porting some of them to NTSC is just impossible.
60Hz V-blank DMA: 7524 50Hz V-blank DMA: 17622
That's at 320x224 resolution for both. I don't know how much this affects this one demo in particular, but for other things it can be a little annoying sometimes to be bandwidth-starved.