Alpha2 posted on Oct 17 2005 at 10:38 PM said:
Wait, wait, wait....
If I recall, that Sega Genesis was always faster then the SNES....
And if genesis is 100% play-able, why isn't SNES?
Is Genesis more powerful?
Alpha2 posted on Oct 17 2005 at 10:38 PM said:
no. it just has fewer special functions. The Genesis didn't have as high a color pallet, it didnt have Mode7 and it had a much simpler sound chip and those are just things I know as a NON-coder.
No, that's not true, Alpha. (at any rate, why would having fewer 'special functions' make the console slower?) Here's the real situation between the MD and SNES.
The Genesis/MegaDrive is enormously faster than the SNES, and of course also more demanding to emulate (though not overly so). It uses a Motorola or Hitachi MC/HD68000 @ 7.67 MHz, and has a helper Zilog Z80 coprocessor (mostly used for sound operations) running at ~3.6 MHz. Its sound synthesis is performed by a Yamaha YM2612 chip (which is able to produce far superior FM audio on-the-fly than the SNES, while the SNES' processing of pre-recorded PCM samples is superior to that of the MD/Gen.), aided by a programmable sound generator like that in the SMS on top of all of it.
The SNES had a 16-bit hack (65c816) of an 8-bit chip (6502) running on a bottlenecked 8-bit bus. It relied primarily on a custom graphics chip to perform functions like hardware scaling/rotation to make up for the anemic processor. For the most part, MD/Gen games were much faster and relied more on reflex-testing gameplay, while SNES games relied more on prettier graphics and more recorded PCM audio instead of on-the-fly generated FM (I prefer the MD's approach and the sound of FM audio, but everyone has their own preference.) The SNES had a much larger color palette (32,768, 256 max onscreen at a time) compared to the MD's 512 colors and 64 max onscreen, however MD games made excellent use of creative dithering and sprite design to avoid being much limited by it-- also the SNES CPU's rather slow sprite arrangement made MD games able to use much larger sprites. The MD's native resolution is 320x224 (almost exactly that of the GP2x) while the SNES' was 256x224 (so it will need to be scaled up, a small detriment to emulation speed as well.) The SNES could run at higher resolutions but it took so long for the CPU to arrange the sprites each frame that the framerate plummeted and made games pitifully slow at this resolution, rather ruining its benefits.
The MD's hardware design, however, was no 'mess', it was elegant and efficient. The parts were selected well, and there were no awkward or peculiar bottlenecks or design flaws. The system even incorporated DMA allowing data to be fetched to RAM without the CPU's intervention-- the SNES had to drop its CPU clockrate from ~2.3 MHz to 1.79 MHz (the speed of the original NES) to read from the cartridge. Ever wonder why SNES games had such long intro credits or level-intro screens? That was actual load time.
If you still think the MD/Genesis was a mess, look at the NeoGeo arcade system, which is industry-renowned. It's almsot identical, with the exception of the CPU clock being higher, and the use of a chip a step up from the YM2612 audio synth chip, in the same generation. It even has a Z80 for the same functions, and uses the same video resolution. They're practically twins with different purposes.
As for emulation of the system, it can be done on an ARM9 @ 200 MHz, with efficient programming. There have been MD/Gen emulators for PocketPCs on XScale processors, one (incomplete) emulator called PicoDrive ran at 100% speed at all times (albeit without sound, that was never added, though not for speed reasons-- the emulator just isn't being maintained) -- on a 300 MHz XScale, with power to spare. Now, an XScale at 300 MHz is very significantly slower than 1 200 MHz ARM9-- XScale is well .. not a very good architecture. It just .. isn't. A rough approximation of XScale to ARM9 performance would be that a 300 MHz XScale is equivalent to a 75 MHz ARM9. Possibly slower. Emulation of the MD at full speed should be no problem, with effective programming, on the GP2x. And if I'm not mistaken, a full speed MD/Gen emulator with sound exists for the GP32 whose ARM9 runs at ~150 MHz-- and there is no forseeable reason why Z80 and YM2612/PSG emulation couldn't be done on the 2nd CPU, the 940T.
As for the Mega CD / Sega CD, the 2nd 68000 @ 12.5 MHz does not appear to be active most of the time, except when some specific functions are occurring (video decoding of Cinepack video like that on Ecco the Dolphin 1/2 (Sonic CD used sequenced tiles, not a video codec) so it's very likely the 2nd CPU would be doing nearly nothing most of the time, while the other helper chips in the Mega CD should not take any enormous speed toll (such as the VDP for functions like scaling/rotation which is almost never used by the games) or audio processing hardware which could probably be replaced by GP2x or SDL-specific code to play back Mp3 or OGG files where appropriate (it's not like you'll actually be playing from a CD, the drive would be emulated and the audio tracks virtual.)
I also see no real reason many of the helper chips could not be emulated on the 940T with some creative programming, or if synchronization of the CPUs across 2 threads is problematic, why at least audio decompression/playback couldn't occur there.
Whew, that was quite a rant. To anyone who read this far, you deserve a medal for putting up with my incessant rambling.