I am not so sure. It is just Motorola 68000 at 7.67 MHz.
How powerful is my Sony Ericsson K790 or C905 compared to the Amiga? I have a misappropriated Nokia version of Angry Birds running on them.
Anyway, I'm going to take a stab at this and probably be thoroughly decimated in the process.
Each object has its own physics, relationships to other objects and the ground. As such, each object would have to know various things about itself, including (but not limited to) orientation, center of gravity, velocity, damage, and proximity to other objects around it, and make movement calculations accordingly. It would need to know when it touches other objects and tell them they've been touched (or untouched, for that matter) and with what velocity. Objects would also have to be able to render themselves. This works both ways when two or more touching objects are in motion as they'll be some good discussion between them on which way they're all going. Objects sitting on other objects, but otherwise stationary, would need to know they don't need to tell other objects they've been touched, just that they are touched and have added a certain amount of potential to them, on down the line.
It's a bit more complicated than that, of course. From my perspective, I would approach this by making each object its own "task," each communicating with the other only when necessary to discuss their touched, untouched, or confirm touching disposition. I would suspect a good mutli-tasking engine should handle this quite well, though I would expect certain slow downs (for instance, even though they are fairly simple and don't know about each other, 92 lost rings in Sonic the Hedgehog would bring the game to a near stop.)
That sound even close? Anyway, it's been an idea I've toyed around with for a while for an 8-bit system but have not had the time to start anything more than pseudo-code.