This page is a mirror of Tepples' nesdev forum mirror (URL TBD).
Last updated on Oct-18-2019 Download

Mario Kart NES?

Mario Kart NES?
by on (#75808)
Not asking for ROMs, but I was wondering if there were any games out there, hacks or otherwise, for NES that were similar to Super Mario Kart for SNES. Sorry for the dumb ass newbie question.

by on (#75810)
The NES PPU doesn't have mode 7. The closest thing to Mario Kart or Blur (racing with weapons) is RC Pro-Am.

by on (#75812)
What about Rad Racer ? It sure doesn't play like Mario Kart (there is no characters, items etc...) but it's a nice fake 3D racer for the NES.

by on (#75814)
I recall a pirate cart with a motorcycle 'fake 3d' racer with Mario characters.

by on (#75828)
tepples wrote:
The NES PPU doesn't have mode 7. The closest thing to Mario Kart or Blur (racing with weapons) is RC Pro-Am.


The yellow car cheats.

by on (#75829)
Try Galaxy 5000. You might like it.

by on (#75831)
and http://en.wikipedia.org/wiki/Galaxie_500 galaxie 500, while you're at it

by on (#75836)
koitsu wrote:
tepples wrote:
The NES PPU doesn't have mode 7. The closest thing to Mario Kart or Blur (racing with weapons) is RC Pro-Am.


The yellow car cheats.

That's how they keep the game fresh and exciting. ;)

by on (#75849)
Famicom Grand Prix II: 3D Hot Rally could be considered as the spiritual predecessor to Mario Kart. Although it isn't really anything like it except for the Mario/Luigi thing going on and maybe the fact that Soyo Oka worked on both games' soundtracks.

by on (#75854)
tepples wrote:
The NES PPU doesn't have mode 7.

Just out of curiosity, what kind of performance could we expect from a software renderer?

by on (#75855)
Not enough for a fast-paced game, for sure. This was achieved with Z80 @7 MHz, a lot of RAM, and framebuffer directly accessible for CPU at any time, and the code was well optimized.

by on (#75859)
RT-55J wrote:
Just out of curiosity, what kind of performance could we expect from a software renderer?

If you use the type of look-up tables I used in my raycaster, it might just be fast enough to be playable, depending on the resolution you use.

If you use the same size of software pixels as my raycaster (8x2 hardware pixels), the screen area the 3D track occupies is 32x48 software pixels (256x96 hardware pixels) large and there are 256 possible angles, you'd need a 48 pixels in a column x 64 angles x 16 fisheye correction angles x 2 axis = 98304-byte look-up table to render the 3D view. Each track would also occupy a lot of space, because they have to be stored uncompressed if we expect to read pixels from them fast enough. Even if an image is as small as 256x256 pixels that's 65KB or PRG-ROM.

The table would tell you where in the track's raw bitmap to fetch the color of each screen pixel, relative to the camera's position. For each pixel, you'd have to perform two additions, read the pixel from the bitmap and write it to the screen. Finally, you'd have to write the 384 tiles to the name table, but you can do it across multiple VBlanks since there is always a hidden name table.

The logic would go something like this:

Code:
for each of the 32 columns:
   calculate the look-up table pointer based on the absolute and relative angles;
   jump to one of 4 loops depending on the quadrant of the absolute angle;
   for each of the 48 pixels:
      read the horizontal offset from the table;
      add the offset to the camera's horizontal coordinate;
      read the vertical offset from the table;
      add the offset to the camera's vertical coordinate;
      make a pointer to the track's bitmap using the results;
      read the pixel from the bitmap and shift it into the tile buffer;
   next pixel;
next column;

I won't dare guessing how much CPU time that would use, but the bright side is that it would be fairly constant. The fact that you have to bankswitch in order to read each pixel from the bitmap doesn't help, but that's still faster than decompressing data that would fit in a single bank. I think it would be interesting to see a demo of this, even if the results are not good enough to warrant an actual game (pretty much the same case as my raycaster).

by on (#75862)
RLError wrote:
Try Galaxy 5000. You might like it.


You mean the full video title: Chuck E. Cheese in the Galaxy 5000,

BTW: That would make an awesome game!

by on (#75877)
I think you'd have better luck doing something like what Wacky Races does on GBC. I don't want to say it's impossible to do realistic 3D on the NES, but the NES is definitely ill-equipped for it to be practically possible, short of some kind of flashy demoscene-esque demo.

by on (#75878)
Mario Kart-like game could be made with usual pseudo-3d road, actually - that way Street Racer (a Mario Kart clone) was made for Sega Genesis. On SNES it uses Mode7, and on PSX and Saturn it has polygonal 3D. So it looks very different on every system, but plays similarly.

by on (#76172)
Thanks for all the info guys. I'll have to try Galaxy 5000. RC Pro-Am and RC Pro-Am 2 are two of my all time favorites, especially 2 (although I've never gotten to play it with a FourScore or a Satellite).

by on (#76177)
Actually, you know something? There was a raycasting demo for the NES not too terribly long ago. I think you could get something close to Mode 7 by using some simple raycasting. Just, instead of rendering walls (columns of pixels in front of you), you render stuff on the ground (dots on the ground where the "wall" would meet the ground).

The only other idea I had was to do some scanline trickery to exploit the fact that each scanline will have at least 1 section of road on it (if you trace from left to right, you can find a point where the road begins and the road ends). Keep a "table" of road lengths in the nametable, and it'd be somewhat doable.

This is all just theoretical though.

by on (#76182)
Quote:
Actually, you know something? There was a raycasting demo for the NES not too terribly long ago. I think you could get something close to Mode 7 by using some simple raycasting.

My, my, my...

Mode 7 is allow to do matrix transformation on a 2D surface to allow it to look like 3D, but it remains a flat surface you're walking/driving on.

Raycasting comutes vectors and make it look more like 3D.

The "ideal" would be a mode 7 ground and with a second layer of raycased graphics on the top of that, but the SNES isn't really capable to do that (in hardware, if you render everything in software it might become possible).

by on (#76185)
Bregalad wrote:
Mode 7 is allow to do matrix transformation on a 2D surface to allow it to look like 3D, but it remains a flat surface you're walking/driving on.

Raycasting comutes vectors and make it look more like 3D.

Unless I'm wrong, the registers of the matrix transformation are updated on every scanline to give the impression of a 3d plane.

What I just mentioned of course isn't actual mode 7 (it'd just produce an effect similar to what you can produce with mode 7), but with this raycasting idea, you'd at least be able to face a direction that's perpendicular to the road. You can't do that with a simple scanline-warped road. :P

Though, the scanline method I mentioned was based off of my own observations from watching Virtua Racer. Of course, if you have two roads visibly parallel to each other, you'd only be able to "see" the one you're on. You'd see any sharp turns though.

by on (#76190)
Tokumaru did the raycaster Forum Link. Check it out, it's damned impressive.

That said you still are not going to get Mario-Kart style graphics.

It seems like you could use the Rad Racer / Rad Racer II display tricks to accomplish a similar game style. It would not be free-roaming like Mario Kart is, but you could at least do a first-person kart racer with power ups and weapons and such.

by on (#76219)
I was just looking at impressive old games on a different forum and someone posted this video of Toy Story Racer for GBC.

I don't think it's actually rendering anything in 3D, rather it looks like they're playing a highly simplified and compressed full motion video in the background and drawing sprites on top of it.

Would the NES have enough memory to do something like this, even one short track? To me it's more impressive than Rad Racer's trickery or even SNES's Mode 7.

by on (#76221)
Toy Story Racing for GBC is 2MB large. It is not that impressive or interesting as it could seem by first look, actually - it reuses sections of the track animation over and over again, it has some compression artifacts and low framerate.

The same technology was used in Mega Race, and it wasn't very playable too. Mega Race 2 was much better, though, but it used polygonal cars, color lighting, and pixel-resolution Z-buffer, which is very important - major limitation of this technology that without the Z-buffer you have to always put your cars above all the obstacles, which is not always possible, and that's doesn't look good (you can see that in Toy Story). First Mega Race solved that problem easily - just one opponent car at a time, and he always stay close to player and far from the road sides.

by on (#76233)
There's a tech demo of a Stunt Race FX clone for the Gameboy made by some guy that's pretty impressive. The Youtube video has been removed, but you can find the ROM by googling for "gameboy stunt race" (it's PD afaik).