Best programmed NES games/Games that pushed the limits
Moderator: Moderators
Best programmed NES games/Games that pushed the limits
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?
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?
Last edited by 3gengames on Thu Jun 28, 2012 9:37 pm, edited 3 times in total.
- mikejmoffitt
- Posts: 1352
- Joined: Sun May 27, 2012 8:43 pm
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.
- rainwarrior
- Posts: 8062
- Joined: Sun Jan 22, 2012 12:03 pm
- Location: Canada
- Contact:
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.
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.
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.
Battletoads too.tokumaru wrote:Bucky O'Hare uses various techniques throughout the game to simulate multiple background planes
Zepper
RockNES author
RockNES author
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?
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?
Nah, that was just me stepping through it with a debugger.noattack wrote:Is the Star Tropics source available somewhere?
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).
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
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.
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
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.
Do you mean something like this?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.
Can it do it without visual glitches? That would be really interesting!In addition, it uses a fairly efficient routine to update the palette in the middle of the screen (for the status bar).
- rainwarrior
- Posts: 8062
- Joined: Sun Jan 22, 2012 12:03 pm
- Location: Canada
- Contact:
If I got the right game then it's nothing special.tokumaru wrote:Can it do it without visual glitches? That would be really interesting!In addition, it uses a fairly efficient routine to update the palette in the middle of the screen (for the status bar).
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.