| Software blitting to a bitmap was too slow to be viable on most of the supported machines. Bitmap mode was only used for a very few games on the 8-bit versions of these due to how slow it was. On some of these you'd have to fake bitmap mode with custom character sets. E.g. the VIC-20 can at most give you around 160x160 pixels using redefined character sets. Conversely on the Amiga you have no other choice but to use bitmaps. So just trying to blit in anything remotely portable manner would be a problem in itself. E.g. on the Amiga you can place things anywhere you want. On the C64 you'd place things on character boundaries (or take seconds to draw images, like a few adventure games that used bitmap mode did), and if you needed smoother movements you'd either smooth-scroll the entire screen or have two different versions of graphics, or use hardware sprites (even sometimes for background features). If you want a common lowest denominator you pretty much end up with a mostly text-display (~22x23 characters unless you ditch the VIC-20), monochrome, unless you ditch the PETs, only beeps for sound, unless you ditch the PETs, 4-5KB total for code and assets (unless you ditch the VIC-20 and some of the PETs) and so on. It might be a "fun" exercise for the sake of it to see what the best you could do in a portable manner, but it would really boil down to what the best you could do on one of the most memory-limited PETs is, I suspect. I mean you certainly could do Infocom style text adventures... Small ones anyway. If you cut it down to the NES, C64 and Amiga (and maybe Plust4), then you'd be able to start doing something somewhat more interesting, but the architectures are still so wildly different that you'd end up something unable to stretch the capabilities of any one of them. For slow-ish moving strategy dominated games it might work. E.g. Sid Meier's Pirates! was partly written in BASIC on the C64, and while the Amiga port is an upgrade it's a small-ish upgrade (more colours, higher resolution mainly). That kind of game would be feasible to do portably if you exclude the VIC20's and PET's, and stick to C64-level graphics. Games like Defender of the Crown, likewise, though they'd lose the graphics quality on the Amiga that was 90% of the appeal of the Cinemaware titles on the Amiga (though ironically, Defender of the Crown is often considered better on the C64 (and some other platforms) - they fixed various parts of the strategy elements of the game). |
That is the only way things got done on the Apple 2.
Look at this:
https://youtu.be/t7_hvzIaqxk
On an Apple 2, using both pages of bitmap memory, it was possible to move some objects reasonably back in the day with p code Pascal. Several of us did that in high school.
A compiled version, straight to ASM would do better. What I linked was the peak possible with hand coded blitters.
There is a low, middle ground that is useful. If one can include a library, written in ASM for each machine, more is possible.
Plus 4, C64, Atari 8 bit, Apple 2, Color Computer, and others all supported a 4 color bitmap, ranging from 128 to over 160 pixels.
Tons of games were written for those machines using software objects. NES does not quite fit here, though I suppose it could. I have not programmed it for a bitmap.
I think there is a wide range of expectations here. There is also groups of 8 bitters. Nothing but text is truly portable across them.
The basics I mentioned aren't AAA title grade. They can be fun grade, depending. And on the more capable 8 bit machines, possible.
Edit: you mentioned, stretch the capabilities. Yeah, I was not speaking to that at all.
Doing a stretch type work will pretty much take assembly language.
But, there are exceptions. Take a look at this Apple 2 project.
PLASMA is a high level, ish high code density environment, coupled with 6502 assembly. Perfect for big RPG games.
https://m.facebook.com/LawlessLegends/
Plasma itself is pretty interesting from an 8 bit development standpoint.