Is Super Mario Bros. the most challenging game ever?

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
Is Super Mario Bros. the most challenging game ever?
by on (#22022)
No, I don't mean in terms of finishing it. We all know that it can be done in under five minutes by using pipe warping. But I mean in terms of getting it to run on your new emulator.

Maybe not, but it seems to me that there has been a lot of topics lately all relating to Super Mario Bros. emulation. When I think about it, the game requires an emulator to have almost all PPU requirements. Here is a list of what I know it needs.

1. JMP Indirect (CPU)

A lot of emulator authors get this wrong when they start out. I know that this was the bane of my early days. It led the game to freeze at the very beginning before anything was rendered to the screen. This obviously causes the PC to become undefined.

2. Palette Mirroring

Many people seem to be confused when they see most of the SMB title screen black, as they still believe that $3F00, is mirrored to $3F04, $3F08, $3F0C, $3F10, $3F14, $3F18 and $3F1C.

3. Sprite #0 Hit Detection

This is one of the most difficult things to emulate, and SMB requires it to run the game at all times. This had me stumped for months as to why SMB would not run on my emulator at all, and if not emulated, the game just hangs on the title screen. Even when it is emulated, I sometimes had a problem when Mario jumped and he became on the same horizontal line as Sprite #0, then the scrolling would flicker for a few seconds.

4. 1 Byte PPU Read Delay

If this is not emulated then the title screen does not display the logo. Also Mario is incorrectly drawn on the screen (when is small he is either invisible, or headless!).

5. Scrolling

For me, SMB represents, the most demanding scrolling accuracy. I know that it does not scroll vertically, but if you do not use loopy's documents to emulate scrolling, then the menu bar at the top flickers half of the time.

So IMO, SMB is the best game to test an emulators accuracy out on (other than a blargg test ROM). Can anyone else suggest a game that has a similar effect?

by on (#22023)
Among games that do not use an ASIC mapper, Rare's Battletoads is even more challenging to get working.

by on (#22024)
SMB really isn't that much special compared to other NES games (I don't think it uses any techniques that aren't commonly found in games, except maybe $2007 reading). I think the reason you see a lot of questions about SMB is because that's one of the first games people try to get working. In most cases, if SMB isn't working, a large number of other games will also fail (assuming you have the correct dump of SMB, of course).

by on (#22025)
Battletoads & Double Dragon requires proper $2007 emulation too (latched reads).