I don't think I would call this undefined behavior... the behavior is defined by what happens on the hardware when it's executed! There are many, many classical effects on raster hardware which are accomplished by changing registers within the horizontal blanking period... copper bars, mode 7, certain paralax scrolling. When you're on a resource limited system it becomes an art to get the most out of the platform. Lo…
Zelda Screen Transitions Are Undefined Behaviour
51–60 of 101 posts
Re: Zelda Screen Transitions Are Undefined Behaviour
#52Warning, 33 megabytes of (great) GIFs.
Just doing it now, converting all the animations to WebP makes it 1.6MB. and it works in all current browsers.
Re: Zelda Screen Transitions Are Undefined Behaviour
#53Re: Zelda Screen Transitions Are Undefined Behaviour
#54I actually had to wrestle with this exact effect while working on wideNES [1]. By saving a screenshot of the screen at each frame alongside with it's PPUSCROLL value, it's possible to gradually build-up a map of the level as it's explored. Moreover, on subsequent playthroughs of the same level, it's possible to sync the map with the on-screen action, effectively enabling a "widescreen" mode for old NES games (with ce…
*Note to mobile/metered internet users: first link contains 30MB+ of gif images, click at own risk.
Re: Zelda Screen Transitions Are Undefined Behaviour
#55The NES designers goofed and made the size of the view window (nametable) 240 pixels tall. This makes vertical scrolling awkward as it throws a non-power-of-two divisor into the math. The NES doesn't have a division instruction - only bit shifts, so having to divide by 240 is a real pain! Also, Y-scrolling wasn't completely figured out until late in the NES's life. The register writes needed to do so are very strange…
I believe that's one of the reasons that games such as Super Mario Bros 3 used additional hardware in the cartridge to do the y scrolling. The memory mapper had special support for just y scrolling and scanline counting. http://wiki.nesdev.com/w/index.php/MMC3
Re: Zelda Screen Transitions Are Undefined Behaviour
#56I actually had to wrestle with this exact effect while working on wideNES [1]. By saving a screenshot of the screen at each frame alongside with it's PPUSCROLL value, it's possible to gradually build-up a map of the level as it's explored. Moreover, on subsequent playthroughs of the same level, it's possible to sync the map with the on-screen action, effectively enabling a "widescreen" mode for old NES games (with ce…
You could probably run an async loop which slices up painted frames and compares hashes of the slices to find identical slices to anchor and stitch similar frames together, still maintaining separate layers in case a better match is found later on. Something like that should solve for games like SMB.
Re: Zelda Screen Transitions Are Undefined Behaviour
#57The NES designers goofed and made the size of the view window (nametable) 240 pixels tall. This makes vertical scrolling awkward as it throws a non-power-of-two divisor into the math. The NES doesn't have a division instruction - only bit shifts, so having to divide by 240 is a real pain! Also, Y-scrolling wasn't completely figured out until late in the NES's life. The register writes needed to do so are very strange…
Re: Zelda Screen Transitions Are Undefined Behaviour
#58Earlier quoted context omitted.
Given that the NES had NMI and the 2600 didn't, I think that NMI probably should have been wired to horizontal blank to begin with. I'm sure that there is some reason why this wasn't done, but I can't understand why.
That would have wasted precious cycles for games that didn’t need it. The ‘n’ in NMI stands for non-maskable.
Re: Zelda Screen Transitions Are Undefined Behaviour
#59Earlier quoted context omitted.
The catch about developing things back then is that you were working with duct tape and chicken wire. The 6502 CPU was developed literally by creating a hand drawn design. Each transistor laid out created additional complexity that humans had to understand. Therefore, making it as simple as possible by reducing the gates used to a minimum was important. This also meant that not all combinations inputs were valid (or…
This reminder of undocumented behavior reminded me of The story of Mel, a Real Programmer. See http://www.pbm.com/~lindahl/mel.html
Re: Zelda Screen Transitions Are Undefined Behaviour
#60I don't think I would call this undefined behavior... the behavior is defined by what happens on the hardware when it's executed! There are many, many classical effects on raster hardware which are accomplished by changing registers within the horizontal blanking period... copper bars, mode 7, certain paralax scrolling. When you're on a resource limited system it becomes an art to get the most out of the platform. Lo…