Demo. Fzero like game on NES.

Discuss technical or other issues relating to programming the Nintendo Entertainment System, Famicom, or compatible systems.

Moderator: Moderators

User avatar
Bregalad
Posts: 8008
Joined: Fri Nov 12, 2004 2:49 pm
Location: Chexbres, VD, Switzerland

Re: Demo. Fzero like game on NES.

Post by Bregalad » Thu Jan 03, 2019 4:14 am

tokumaru wrote: The standard way is also the boring way. I'd rather see something unique, even if it doesn't look great.
Might be "boring", but there's probably a lot of improvements or at least changes that can be made on what has already been done. It's not like Rad Racer or Roadblasters looks "perfect" or anything, but they get the job done. I can't for my life imagine a working racer game based on 8x8 huge pixels or anything in the like. And no, the demo does not look like mode 7. Mode 7 has blocky pixels only when zoomed in, not always.

User avatar
dougeff
Posts: 2826
Joined: Fri May 08, 2015 7:17 pm
Location: DIGDUG
Contact:

Re: Demo. Fzero like game on NES.

Post by dougeff » Thu Jan 03, 2019 10:43 am

Thanks for the input. I will do some improvements. Maybe unroll some loops, or inline some calculations, simplify some things, maybe drop to 20 fps, maybe have 3 layers of attribute/palette shifts or something for depth. Larger map. Etc. etc. So, maybe I'll pop back in a year when all that is done.
nesdoug.com -- blog/tutorial on programming for the NES

User avatar
LightStruk
Posts: 45
Joined: Sat May 04, 2013 6:44 am

Re: Demo. Fzero like game on NES.

Post by LightStruk » Thu Jan 03, 2019 2:30 pm

I think this is terrific. The deformed road technique is not perspective correct, while your technique can be.

You said you wanted 1985 technology, but if you're willing to upgrade to 1989 technology, you can use a mapper with a good scanline counter, like MMC3 or MMC5. That way, you can start VBLANK earlier than line 241, and end it later than line 263, giving you lots more time to update VRAM.

If you use MMC5, you might be able to leverage MMC5's 8x8->16 multiplier to speed up your tile lookups.

Unroll your loops if you haven't already. If you are double-buffering (swapping between the first and second nametables to update the screen), you can write fully unrolled LDA + STA "blts" with known addresses (no indexing) to update your buffers. Takes up more ROM, but if you're using MMC3 or MMC5, you have the space to do that.

You might also consider seeing how much more you can accomplish at 15 or 20 fps. Gamers back then were willing to tolerate low framerates for revolutionary graphics. The home console ports of Hard Drivin' have such low framerates that they look like slide shows, but they were made anyway. Once you have a nice looking result with actual game logic at 15 or 20 fps, you can pick all of our brains for ideas of how to optimize it back up to 30 fps.

A lower framerate would enable 8x8 map tiles instead of 16x16 tiles, and that would look way better (it is 4x the resolution, after all). You can use MMC5's extended attributes mode for that.

User avatar
rainwarrior
Posts: 8006
Joined: Sun Jan 22, 2012 12:03 pm
Location: Canada
Contact:

Re: Demo. Fzero like game on NES.

Post by rainwarrior » Fri Jan 04, 2019 12:55 am

Bregalad wrote:Sure Rad Racer uses the MMC1, which is a "special chip", but actually it doesn't use much of the chip, and it uses it mainly for extra memory, so if the game was single-level it could have fitted a NROM cart easily. For a NROM racer from 1985, look at F1-Race (the road is only distorted horizontally, not vertically, as it probably wasn't understood how to do this with the NES at this date).
The MMC1 ability to switch between horizontal and vertical mirroring was used for Rad Racer. This let the sky wrap horizontally on a 1-screen wide area of the nametable, while allowing a 2-screen wide portion of road for the bottom area of the screen. (Layout described here: https://forums.nesdev.com/viewtopic.php?f=2&t=8588)

The FDS had the same capability. I think the Japanese version was originally on (or partly developed for) FDS? Can't recall.

Rad Racer 2 uses 4-screen instead, which bypasses that need for different mirroring types.
koitsu wrote:Surprised not a single person here has mentioned RoadBlasters from Tengen/Beam Software. Like Rad Racer, it also uses MMC1 (in this case, 128KB PRG + 128KB CHR). I'm going off of memory so there's a large chance I'm remembering things wrong, but I think it used precisely-timed PPU writes and reads and/or certain bits in in HBlank, combined with palette cycling and a lot of CHR swapping to give the impression of road movement, plus providing a horizon. There's similarities in the implementation model to Rad Racer and Rad Racer 2, but the result is a lot more impressive given all the other stuff going on. Consider that it's an arcade port as well (and yes, the surrounding environment does have that palette cycling effect even on the arcade).
In terms of 3D racing rendering, I think it's inferior to Rad Racer. The road is flat (no "hills" like Rad Racer) and has an awkward looking "wide" vanishing point. I'm not sure whether to consider that palette cycling field a plus or a minus (kinda ugly, IMO, and the arcade did do something similar but it's much, much smoother... Rad Racer also used palette cycling in a similar way, but just for the road stripes.) The spinning car at the end of the race is kinda neat though.

Its gameplay is maybe slightly more interesting than Rad Racer... but honestly, I'd rather play Hang On than either of these.


Anyway, I think there's a lot of potential for unusual rendering techniques on the NES, and am glad to see another experiment like this, whether or not it immediately manifests as some killer racing game. Please keep on trucking karting.

User avatar
Bregalad
Posts: 8008
Joined: Fri Nov 12, 2004 2:49 pm
Location: Chexbres, VD, Switzerland

Re: Demo. Fzero like game on NES.

Post by Bregalad » Fri Jan 04, 2019 3:08 am

rainwarrior wrote: The MMC1 ability to switch between horizontal and vertical mirroring was used for Rad Racer. This let the sky wrap horizontally on a 1-screen wide area of the nametable, while allowing a 2-screen wide portion of road for the bottom area of the screen. (Layout described here: https://forums.nesdev.com/viewtopic.php?f=2&t=8588)
Ah nice catch, I forgot that, even though I deeply reverse-engineered Rad Racer at some point in my life.
The FDS had the same capability. I think the Japanese version was originally on (or partly developed for) FDS? Can't recall.
Both versions were cartridge but the game was obviously developed with FDS in mind, being based on the engine of 3D Worldrunner which was originally on the FDS - lots of code left-over from the FDS bios, etc...
Rad Racer 2 uses 4-screen instead, which bypasses that need for different mirroring types.
Speaking about Rad Racer 2, I think that, counter intuitively, it looks slightly worse than Rad Racer 1... The stripes on the sides of the road are really not my cup of tea. The carts and scenery looks better though.
Anyway, I think there's a lot of potential for unusual rendering techniques on the NES, and am glad to see another experiment like this, whether or not it immediately manifests as some killer racing game. Please keep on trucking karting.
Definitely. But it should be an improvement on what already exists to be worth doing, IMO.

mkwong98
Posts: 236
Joined: Mon May 30, 2011 9:01 pm

Re: Demo. Fzero like game on NES.

Post by mkwong98 » Fri Jan 04, 2019 4:45 am

The road looks like it is curving up

************************----************************
**********************--------**********************
******************----------------******************
**********--------------------------------**********

Shouldn't it be a straight line?

************************----************************
********************------------********************
****************--------------------****************
************----------------------------************

Fiskbit
Posts: 259
Joined: Sat Nov 18, 2017 9:15 pm

Re: Demo. Fzero like game on NES.

Post by Fiskbit » Fri Jan 04, 2019 6:12 am

I think this looks really cool, and even as-is, I'd probably rather play a racing game like this than Rad Racer. It may not be the prettiest, but the gameplay could be worth it.

Nice work, and I'd love to see improvements on this.

User avatar
dougeff
Posts: 2826
Joined: Fri May 08, 2015 7:17 pm
Location: DIGDUG
Contact:

Re: Demo. Fzero like game on NES.

Post by dougeff » Fri Jan 04, 2019 6:30 am

looks like it is curving up
The map is actually very small, so I manually adjusted the distances per tile. The top most tiles should be further away, but since the map is so small, it would usually be off the map (for the top few tiles), making the resolution look even worse.

Anyway, my manual adjustment was slightly off.
Last edited by dougeff on Fri Jan 04, 2019 6:31 am, edited 1 time in total.
nesdoug.com -- blog/tutorial on programming for the NES

User avatar
FrankenGraphics
Formerly WheelInventor
Posts: 2033
Joined: Thu Apr 14, 2016 2:55 am
Location: Gothenburg, Sweden
Contact:

Re: Demo. Fzero like game on NES.

Post by FrankenGraphics » Fri Jan 04, 2019 6:30 am

Agreeing with fiskbit. I think new gameplay possibilities on the platform trumps pretty graphics. And that’s coming from the impractical, details-obsessed artist.
http://www.frankengraphics.com - personal NES blog

User avatar
tokumaru
Posts: 12003
Joined: Sat Feb 12, 2005 9:43 pm
Location: Rio de Janeiro - Brazil

Re: Demo. Fzero like game on NES.

Post by tokumaru » Fri Jan 04, 2019 9:51 am

I don't know why some of you are wasting time talking about raster distortion racers... That's the standard way to do racers in old consoles and it's been done to death. Some use more advanced techniques, some look better than others, but it's basically the same technique and that technique had nothing to do with what dougeff is doing.
mkwong98 wrote:The road looks like it is curving up
Couldn't this be because of the fisheye distortion that results from calculating distances from the player in concentric circles against an orthogonal grid? That's what happens in raycasters, and you have to correct this by shortening distances for angles that are farther away from the middle of the screen.

In my raycaster I built this correction straight into the look-up tables, so I wouldn't need to do any extra calculations in real time. That drawback of doing this is that my look-up table of distances became 15x larger, because there are 15 angles on each half of the screen.

If your horizontal resolution is 20, your tables would have to be 10x larger to have the fisheye correction built-in.

tepples
Posts: 22288
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: Demo. Fzero like game on NES.

Post by tepples » Fri Jan 04, 2019 11:05 am

Let's suppose it were possible to draw a 24x16 pixel mode 7 view at 30 fps. Would that be a usable resolution and frame rate?

User avatar
tokumaru
Posts: 12003
Joined: Sat Feb 12, 2005 9:43 pm
Location: Rio de Janeiro - Brazil

Re: Demo. Fzero like game on NES.

Post by tokumaru » Fri Jan 04, 2019 11:55 am

I probably wouldn't play it at a resolution that low.

I would rather sacrifice frame rate for resolution. I think these tiny resolutions are fine for testing, but a real game needs to have a little more detail than that.

Just dividing each tile vertically into 2 pixels helps a lot by doubling the vertical resolution, and that's where detail is needed the most, so we can see what's ahead.

User avatar
pubby
Posts: 558
Joined: Thu Mar 31, 2016 11:15 am

Re: Demo. Fzero like game on NES.

Post by pubby » Fri Jan 04, 2019 12:05 pm

Dropping the framerate is fine for a FPS, but in a racing game the effects are really noticeable. 15 FPS looks absolutely terrible and choppy when the player is moving fast, and 20 FPS is only a hair better. Really, 60 FPS is what a racing game should run at, and 30 FPS is the 'okay' compromise.

Anyway, I don't mean to steal Doug's thunder, but did F-FF not have the right technique? I barely got any comments on it.

User avatar
tokumaru
Posts: 12003
Joined: Sat Feb 12, 2005 9:43 pm
Location: Rio de Janeiro - Brazil

Re: Demo. Fzero like game on NES.

Post by tokumaru » Fri Jan 04, 2019 12:15 pm

It didn't help that the game was hidden under a fake screenshot... A lot of people probably haven't even played it because of that.

User avatar
Bregalad
Posts: 8008
Joined: Fri Nov 12, 2004 2:49 pm
Location: Chexbres, VD, Switzerland

Re: Demo. Fzero like game on NES.

Post by Bregalad » Fri Jan 04, 2019 1:49 pm

tokumaru wrote:I don't know why some of you are wasting time talking about raster distortion racers... That's the standard way to do racers in old consoles and it's been done to death. Some use more advanced techniques, some look better than others, but it's basically the same technique and that technique had nothing to do with what dougeff is doing.
What dougeff is doing doesn't even remotely ressemble a road. It looks like a bunch of legos stacked up eachoether. I know pretty graphics are not important, etc... But there we're to the point the resolution is so low it doesn't display anything reconizable.

Post Reply