Posted: Thu Sep 20, 2007 3:54 am
This should be possible on a Genesis. You have to lay out the tiles so you can treat the display as a bitmap with a weird pixel layout. A lot of Mode 7 style games only have the lower 1/3 to 1/2 of the screen show the floor. The rest could be a scrolling tilemap. The rotation values are only calculated for the 4 points on the screen, and interpolated down the left and right edge (if I remember correctly) using a DDA line routine. It can all be done in fixed point math. On the Genesis, you could treat both nibbles of the pixel as one big pixel, or even a 2x2 pixel group to futher improve performance. You would want to use rasters to change the color palette on the floor. And, you would probably have to use two different tilemaps, and sets of tiles, to allow for double buffering. I don't think this routines would run anywhere near 30 or 60 fps.
Scaling stuff on the ground, such as trees, is going to be very difficult, unless you have a bunch of prescaled sprites. You probably could use the interpolated values to find the location of objects on the screen, based on their position on the ground.
I did something like this years ago on a 486-33. It was fairly taxing on that system.
Another idea would be to use a normal nibble pixel layout, and find a way to DMA the graphics into the correct Genesis format (using the address increment register). That would be roughly 9.5k to 12k per screen used in ram, and you would need two. This is for a 256x75 or 320x75 area.
Scaling stuff on the ground, such as trees, is going to be very difficult, unless you have a bunch of prescaled sprites. You probably could use the interpolated values to find the location of objects on the screen, based on their position on the ground.
I did something like this years ago on a 486-33. It was fairly taxing on that system.
Another idea would be to use a normal nibble pixel layout, and find a way to DMA the graphics into the correct Genesis format (using the address increment register). That would be roughly 9.5k to 12k per screen used in ram, and you would need two. This is for a 256x75 or 320x75 area.