supercat wrote:
Bananmos wrote:
supercat wrote:
The C64 used 1000 bytes to store character data and 1000 bytes of color attributes;
Oh yes, I totally forgot about the color attributes. That makes the VSP trick even more crucial for this port.
Using the even/odd scroll technique would allow the screen to scroll 8 pixels/frame using less than half the CPU time for screen redraws without doing anything exotic. If there are 64 or fewer metatile shapes, copying each metatile left 8 pixels (both character and attribute) would take 26 cycles without any raster splits to assist (5928 total). Using shape raster splits (two interrupts per metatile for a trick known early in the 64's lifetime) could cut that to 24 per tile (5472 total), and FLD raster splits (three interrupts per metatile, using tricks I first saw fairly late in the 64's lifetime) could reduce that to 16 (3648 total). I don't know why VSP should be needed for an SMB-style game when less exotic techniques would cut the CPU overhead to manageable levels.
I think you're missing the point here. The game doesn't have half the screen time or even a quarter to spare - it's already showing significant slowdowns in places, precisely because it is running code that was written for another gaming system, where the 6502 is clocked almost twice as fast.
Yes - as other have pointed out - it's perfectly possible to do a mario-esque game on the C64, and with good coding it's probably feasible to it all with conventional 8-pixels only HW scroll, for greater compatibility. But the point of this port was obviously to make it run the original SMB1 code with all subtle gameplay elements intact, except for the necessary concessions due to the different video/sound hardware.
Making that original SMB1 code (which again, was designed for a CPU clocked almost twice as fast) run on the C64 without introducing even more lag would have required finding some major speed optimization opportunities in the original code. And even if such opportunities were identified, it's highly likely that compromises would need to be made, gameplay would change slightly, and the end product would be a subtly different game.
Personally, I think this port is a beautiful effort, despite having to resort to techniques which lower compatibility. That was one of the sacrifices that were needed to keep the lag down. And to the people who will be running this, I don't think getting either a VSP-friendly C64 model or performing the documented HW mod is out of reach.