| Well, I share your love and agree on most of what you put here. My only real point is a software blitter library would permit quite a bit, and be portable. A secondary one was software objects got done quite a lot. C64 is actually one of the worst case scenarios. It had a considerable amount of DMA interrupting the CPU. Apple 2 is a second worst case. No DMA, but addressing from hell. The others, including the VIC 20, run faster and make a few more objects possible. By all means, write for the CPU directly to get what those machines can do. I never implied otherwise. But, if someone wants to explore a little, and wants to use C or Pascal, etc... more can be done than expected. Re: Tearing Yeah, the Apple port of Robotron does all those things, but is also one of the better ports. The action is there solid. So many ports did not actually deliver. Atari 8 bit is pretty terrible. C64 looks nice, but just does not deliver the motion... Sometimes it is about more than looking pretty. |
But it really wouldn't be portable. Maybe you mean the software using it could be portable. Because you'd need to account for totally different memory layouts, totally different initialization, totally different movement rules if you want to avoid color bleeds, palettes ranging from monochrome and up etc. You'd likely end up with about as much code to try to make something like that generic as you would writing separate more optimized versions for each platform.
> A secondary one was software objects got done quite a lot. C64 is actually one of the worst case scenarios. It had a considerable amount of DMA interrupting the CPU.
It had some, but not very much. The 6510 didn't access memory other than every other cycle, so most of the time it ran unhindered. Some things would change this - e.g. it "cost" two clock cycles per raster line for every sprite that was present on that raster line.
It also cost you extra every 8th line when the VIC would need to retrieve new colour data from RAM, but if that was enough to tip things over the line you could "just" cut ~25 lines off the part of the screen you worked with and you'd have freed up more cycles than you lost. Some games certainly did "play games" with the display size, to cut the cost of graphics updates, but the vast majority of those games did that despite not even using bitmap mode.
The reason we didn't use bitmap mode was not DMA, but that character mode + sprites + raster effects was so much faster for most uses.
> But, if someone wants to explore a little, and wants to use C or Pascal, etc... more can be done than expected.
It's not the language per se that is the issue (though most modern languages are awful for 6502 platforms without lots of restrictions due to stack limitations); it is whether or not you write code custom for the specific graphic chips in particular for those architectures, which tends to make up a fairly substantial part of the overall game when you in most cases are looking at single to double digit number of KB including assets.
> Sometimes it is about more than looking pretty.
Yes, but my point is nobody would have accepted the C64 Robotron either already by ~1985. Game quality had moved on. By pure sales numbers alone, the majority of people who remember these platforms fondly today got them after the design of a game like Robotron was already outdated.
I just don't see the appeal of aiming for portability between platforms where what you do to achieve that portability completely eviscerates what people loved about that platform because the lowest common denominator is so far from what people were used to. In that case, just write for the VIC-20 or whatever matches your lowest common denominator directly.