DerTrueForce wrote:
320x200 graphics, with 256 programmable colours and a text generator.
Some kind of PSG(Comparable to the SID, or better). Sampled audio capability is preferable, but not strictly necessary.
8-button controller(built-in or otherwise).
Cartridge media, and some kind of serial link for direct binary upload.
That seems realistic.
Sprites like in the C64 might be useful, although not necessary if you have a pretty fast processor.
Sprites can be somewhat limiting in what they provide. They were introduced to support games such as Ms. Pacman or Centipede in which you have a few objects (Ms. Pacman and the ghosts, or in Centipede the laser-cannon, the centipede segments and the spider), and these objects don't change their shape at all (or very little; Ms. Pacman would alternate between open-mouth and close-mouth, and the spider would flap its legs up and down).
Sprites were introduced at the time of the 1 or 2 Mhz. 6502, or the 2 or 4 Mhz. Z80. In those days, a game such as Ms. Pacman or Centipede really pushed the limits of the processor.
I doubt that sprites would be very useful for the Mario game though. Mario and Yoshi aren't such simple objects as Ms. Pacman or the spider --- they can't really be represented by a sprite that floats across the screen.
DerTrueForce wrote:
The 65816 would be my choice. ...
Given that it can be clocked to 10MHz within its specs, I would say that even if the SNES is incapable of running Mario without tricks, this would likely be able to run a similar title without such things, just due to the sheer speed increase. It is difficult to find existing hardware that doesn't exceed this by a substantial amount, which could be an advantage or a disadvantage, depending on how you look at it.
- For the sound, it would be nice to be able to do more than just a SID, to have more voices, generate sine waves, and apply filters to each individual voice if desired, but this would call for some custom hardware. Either an FPGA or CPLD would be necessary for that. Such hardware could make implementing sampled audio substantially easier as well.
I agree that you need a processor that can support multiple 64KB segments easily. This rules out both the 65c02 and that PIC chip. I think that PIC chip is more oriented toward supporting a GUI than it is to being the basis for a game-machine (the device-overview says: "Ideal for Graphical interface applications"). It has much higher resolution than what you are describing, but is much more limited in the use of color --- you said 320x200 (40x25 text), which is the same as the C64, but you said 256 colors which is a lot more than the C64 had --- the PIC chip has 640x480 (80x60 text), which is makes it a business-machine not a game-machine.
The PIC chip is very impressive! I don't think it is a good choice for a game-machine though --- I doubt that MicroChip cares about game-machines anyway (because teenagers don't have any money).
Is there a soft-core version of the 65c816? I would expect the game-machine to use an FPGA so that sound, especially speech-synthesis, can have hardware support --- an 8-bit processor with hardware support for sound should be able to out-perform an ARM Cortex that does everything in software --- that is the advantage of the FPGA, to boost the speed of highly repetitive processing that drags down a system when done in software.
People seem to like speech synthesis --- look at the popularity of the Furby, etc. --- people want to pretend that their robot has emotions, so the robot either needs facial expressions or speech (speech is realistic).
Also, an FPGA could provide a somewhat improved version of the 65c816. For example, the M65c02A has an OSX prebyte that causes instructions that normally use S to use X instead. This allows PHA PLA etc. to work using X as the stack-pointer. Also, the powerful addressing-modes available for S can be used with X also. This would allow Forth to use X as the data-stack and S as the return-stack. Perhaps that unused WDM instruction could be put to use as OSX --- William Mensch doesn't like prebytes because he thinks they bloat the machine-code (this was a lot of people's complaint against the MC6809) --- one prebyte wouldn't be so bad though!
I would think that teenagers could learn 65c816 assembly-language --- you have two stacks, X and S, and you have two registers A and Y --- shouldn't be a brain-buster!
A Forth system would either support local variables, or support >R data, but it can't support both because there is no register available for use as the local-frame pointer. I would go with local variables, and forget about >R etc. that tend to result in hard-to-read source-code --- >R were introduced to Forth by Charles Moore in the 1970s as a somewhat crude step toward local variables --- actual local variables would be better.
Given the OSX prebyte, I could write a pretty powerful Forth system for the 65c816!
I think there already are C or Pascal compilers available for the 65c816 for people who don't like Forth.