Page 1 of 3

Best programmed NES games/Games that pushed the limits

Posted: Mon Jun 25, 2012 3:59 pm
by 3gengames
What are your opinions for best NES games as you have learned programming techniques and learned how some games work? My list has to be:

Battletoads, just raw data used for so much animation and such. We're talking 256+ bytes/frame with also NO WRAM at all to work with said unrolled loops.

Recca, huge ammount of sprites and shows great design and good programming as a overly complex sprite engine would normally slow down to a crawl with not as many objects.

And what are yours that you have looked at that just did things that just pushed some limits of the system and design of it to achieve gameplay mechanics that wouldn't normally happen?

Posted: Mon Jun 25, 2012 4:23 pm
by mikejmoffitt
Gimmick!, one of Sunsoft's masterpieces, features extreme levels of detail you would not expect from a Famicom game. Lots of traps and enemies only appear once in the game, there are a lot of superfluous animations and extra graphical sprites that do nothing for the game play, and surprisingly good enemy AI. The physics seem universal across all game objects, and the engine is super-tight and versatile. The audio is great too.

Posted: Mon Jun 25, 2012 5:21 pm
by rainwarrior
I was pretty impressed by Rad Racer, which manages to change the scroll on specifically targeted scanlines many times per frame, without a mapper that would provide any kind of timer. The timing is kept consistent by very carefully constructed code (good thing it isn't using DPCM).

Battletoads has some of that; it does parallax scrolling by a couple of different means; sometimes its with code carefully timed to hit a scanline, sometimes it's with CHR-RAM animation of repetitive tilings. It's also using one of the simplest possible mappers with no additional timing capability.

Posted: Mon Jun 25, 2012 5:29 pm
by tokumaru
Bucky O'Hare uses various techniques throughout the game to simulate multiple background planes, or to seamlessly move huge objects made out of background tiles. Some of the tricks rely on MMC3's scanline counter, but others are just combinations of clever name table layout, CHR animations and carefully placed sprites, and could be performed even in NROM without problems.

Posted: Mon Jun 25, 2012 8:04 pm
by Dwedit
Rad racer uses sprite 0 hit to start everything out.
I think NASIR wrote that game.

Posted: Tue Jun 26, 2012 2:51 pm
by Drag
StarTropics (1 and 2) may not be particularly impressive from a gameplay perspective, but if you ever see the code, it's beautifully written.

Posted: Tue Jun 26, 2012 3:46 pm
by Zepper
tokumaru wrote:Bucky O'Hare uses various techniques throughout the game to simulate multiple background planes
Battletoads too.

Posted: Tue Jun 26, 2012 3:50 pm
by Shiru
Galaxian once impressed me with clever hardware usage. Sprites for background and background for sprites.

Posted: Tue Jun 26, 2012 6:32 pm
by noattack
Maybe an obvious answer, but Super Mario Bros. continues to impress me as I work through its engine. It creates its own sort of priority system to draw background scenery, foreground scenery, terrain, area objects, and enemy objects (all terms from doppelganger's disassembly). THEN sprites go on top of that. It's really clever and helps compress level data into compact byte blocks. There's impressive variety for an NROM game.

Contra has a neat 'cascading' OAM cycling routine (based on observation, not code). There's tons of flicker but then again, there are tons of objects on screen at once too.

Wild Gunman uses a really neat palette cycling routine to check for light gun hits.

Is the Star Tropics source available somewhere?

Posted: Tue Jun 26, 2012 8:50 pm
by Drag
noattack wrote:Is the Star Tropics source available somewhere?
Nah, that was just me stepping through it with a debugger.

However, I discovered the game (at least the second one) uses a routine similar to Duff's device in order to copy strings to $2007. Considering you have precious little vblank time to upload things to the PPU, this is very efficient.

In addition, it uses a fairly efficient routine to update the palette in the middle of the screen (for the status bar).

Posted: Thu Jun 28, 2012 3:48 am
by Denine
Maybe it's not all right to write about unreleased game, but
Dream World Pogie amazed me when I realized that this game "remember" every star taken and every enemy killed. Some levels have more than 100 stars alone.
After some poking in debugger, It become quite clear how, but it's still pretty neat.
What? SMB3 can also do the same? Yes, but it uses WRAM, DWP does not.
Moreover, it remembers everything(stars, powerups, checkpoints, enemies, and even exit door and moving platforms) as flags. Total bytes used is a mere $20, resulting in 256 flags available.

About Battletoads When I played it firrst, I was surprised by number of levels. I mean, it's mapper 7, meaning it have no CHR ROM. I mean, PRG space have to be shared with GFX. Also, more importantly, Battletoads pushed another limit(not related to NES, I think).Frustration limit :wink:

From other games, Maybe Fantastic Adventures Of Dizzy also is worth mentioning. It's not like it have great GFX, or anything. It's just overall. I mean, this game is quite huge. A game where you explore the world and all that dizzy games things. Also the game remembers item location, X and Y (64 items or so).Same for stars collected(250), same trick as in Dream World Pogie, it seems.And all that with no WRAM.

Posted: Thu Jun 28, 2012 6:57 am
by tokumaru
Drag wrote:However, I discovered the game (at least the second one) uses a routine similar to Duff's device in order to copy strings to $2007.
Do you mean something like this?
In addition, it uses a fairly efficient routine to update the palette in the middle of the screen (for the status bar).
Can it do it without visual glitches? That would be really interesting!

Posted: Thu Jun 28, 2012 8:52 am
by rainwarrior
Another one I was really impressed by is the use of CHR-RAM in Solstice. To get the 3D isometric view, it actually masks off pixels of the character sprite in CHR-RAM when you walk behind a block.

Posted: Thu Jun 28, 2012 9:33 am
by Denine
tokumaru wrote:
In addition, it uses a fairly efficient routine to update the palette in the middle of the screen (for the status bar).
Can it do it without visual glitches? That would be really interesting!
If I got the right game then it's nothing special.
Game seems to turn rendering off at scanline no.183, change pallete(via $2006 and $2007 writes). After that it waits until right moment (everything it timed) to turn rendering back on(at Scanline 188). Just the same as Fantastic Dizzy does for it's status bar.
Note: I just took a quick look at the code, I may be mistaken. But I'm pretty sure about what I stated above.

Posted: Thu Jun 28, 2012 9:56 am
by Dwedit
Even "Back to the Future" changes the palette for the status bar, and that is not a good game at all.