Lets get realistic...
The best emulation loop I've ever seen for any processor was the ARM running 6502 code at about a 4:1 ratio. Thats a 4MHz ARM running 6502 code at 1MHz. That was, however, without interrupt servicing or emulating any other external hardware. I believe the rule-of-thumb is 10:1 for any given processor. To handle a complex CPU like the 68000, you're looking at about 72MHz (the actual speed was 7.16MHz, double the colourburst) needed for the processor alone.
The SEGA Genesis emulation needs 144MHz to run at full speed. That's a good starting point for comparison. That's 20-times the speed of the CPU alone - but the Genesis employed a simple standard screen mode with a fixed number of sprites and a non-unified memory architecture. The sound was provided by a simple FM chip which is only a notch above Apple II sound (send beeps faster or slower with a 1uF cap). Even with the pedantic Z80 being emulated, the Genesis is a far cry from an Amiga. Anyway, for comparison;
The Amiga display supported a myriad of display modes, truely limited only by the programmers imagination. The basic resolutions were 320H up to 64 colours, or 640H up to 16 colours. This could be either 200 (NTSC) or 256 (PAL) lines long, or doubled if interlaced. Then, you could change some palette entries on the horizontal refresh. Or change the resolution on the fly. Or the base pointer to repleat scanlines, move back up the display (to create cool mirror effects easily), and more. This was all done by the copper - a colourburst clocked processor which changed anyone Amiga register per cycle. ECS chipsets added the ability to also control the blitter with the copper allowing CPU-less line graphics, etc. Additionally there were funky modes like HAM, which allowed 4096 colour screens and various software hacks for even 4096 colour hires screens, or horizontall splite lowres-hires screens, interlaced sprites and more.
To emulate this behaviour accurately, you need cycle exact emulation. That means, at 3.58MHz, you need to run one copper instruction, perform a DMA fetch for video (and other) data, convert that to a native display format (16bit RGB) and then emit that to the LCD display. Even if you cheat by doing a scanline at a time, you're probably talking about 20-30 instructions per cycle (thats like 7000 instructions to emit a correct scanline), or upwards of 100MHz consumed for the copper/display routine. I need to emphasise that this is IDEAL situations - Fellow approached this level of efficiency. WinUAE does not.
Then there's the blitter - which makes the bitblt on modern PCs look simple. It supports huge DMA moves, with four channels and optional combinational logic to be applied to each source and/or destination. It also included simple line drawing and the strange xor fill. This would need to be emulated too. On the Amiga, there was no speed drop when performing a blit - it operated in conjuction with everything else.
Sprites. Wow, did some people know how to abuse these. I still don't know how games like Blood Money make use of 19 sprites, each much larger than the "allowed" Amiga sprite dimensions, with many one one scanline, with no flicker. Sprites were DMA objects and could also check for pixel-level collisions which eachother and/or the playfield. Oh yeah - dual playfields. You could split the bit planes and have, for example, a 2 bit background bitmap, and a 4 bit foreground. Each playfield could be infront or behind sprites, and playing with this in real time made for some cool effects (like unsprites).
Sheesh. I haven't even mentioned sound yet. Stupid PCM on the Genesis. Awesome 8bit four channel sound on the Amiga, with 6bit volume control. While "lame" to some PC users, this could do things PC cards still can't do - like play any sample at any playback rate without the CPU. For example, a piano sound could be sampled at C, but played back at any note with zero (absolutely ZERO) CPU interference. Then came all the tricks - like playing with the volume and mixing stereo channels to get 14bit DMA sound. Sounded pretty good too. Probably the most trivial component in the Amiga... LOL. It also supported C64 like mixing where one channel could modify the other channels frequency or volume, etc...
Then there's diskdrive emulation, joystick, keyboard and mouse control. It should be mentioned that the Amiga had an actual quadrature decoder in the system, not on the mouse itself. You could actually read and monitor these signals.
All things said, I would expect the GP32 to fall short on ever comming close to an Amiga. Atari users like to say their systems were just as complex - maybe sometimes almost as capable (though Blood Money on the Atari shows that no, no it's not), but not even close to as complex. Whether this is a good thing or not is subjective - the Amiga could do things PC still don't (pull down screens anyone?) - but it all came at a price.
I'd venture to guess, hell, I'd even wager (and I'd pony up a lot!!) that not only could a full speed Amiga500 emulator never be made for a GP32, I would add that neither could it be on any handheld platform available today or in the near future. 600MHz ARM isn't enough. A custom graphics chip may help, but not much. And FPGA on a handheld isn't realistic yet.
TTFN.
-- nonarKitten
Winterkid posted on Dec 28 2004 at 10:38 PM said:
Even if you could emulate the 68000 at 7MHz, you'd have to have a whole separate subroutine for each custom chip, Paula, Agnus, Denise, and Gary, emulate the hardware also... Mouse/Joy/Floppy...
If we take a REALISTIC look at it, it would be a huge chunk of cycles just to get the GARY (graphics) and DENISE (sound) chips working fast enough to keep up. I'm guessing at LEAST 25MHz per chip for decent emulation. AGNUS and PAULA are memory handling and I/O control through two other chips, designated EVEN CIA and ODD CIA. *Shrug* I have no idea what to give those chips. For the sake of argument, we'll give 'em 25MHz for both of them. So far, that's about 75MHz dedicated to sorting out the custom chips alone. To emulate the 68000 itself, I'm guessing about 50MHz at least.
Even at 166MHz that only leaves about 40 MHz to handle the Real-time clock, floppy emulation (auto-insert notification), O/S rom handling and any O/S ROM patching routines that need to run. Also I have no clue if the graphics chip (GARY) handles the mouse cursor routines, so you might have to put some cpu time into that.
Even if it were possible, it would run so slow, I'd be amazed if you have enough RAM left or enough CPU speed to run anything.
I know nothing about coding or programming, but I've owned 3 Amigas, all the A500 type, 2 with HD's.
EDIT: (NOTE: Small chance I MAY have gotten DENISE and PAULA chips reversed, but I doubt it. Still effectively the values and amounts just reverse too)