Thought I'd throw up a little update on Mr. Pac McClone here since I'm still plodding along on this project, albeit slowly.
As you know, this particular game has been kicking my ass. It seemed like it was going to be rather simple, with me spending most of the time on AI/enhanced graphics, but just getting his movement down has proved a huge challenge. (*Note: when I say enhanced graphics, I mean only slightly better than the original - I'm no artist!). At any rate, a major problem for me has been keeping little Mr. Pac aligned on even boundaries so he stays within legal moving space and doesn't overlap onto the blue border pieces. I tried everything I could think of, tripled checked my math, and no matter what, as he moved, he began to drift a little bit. It wasn't bad at first, a pixel here, and a pixel there. The problem reared its ugly head in a major fashion though as you continued to move around because the drift was cumulative. In other words, the more you moved around, the further he drifted, and the more into the border pieces he got. It seemed really strange to me because I couldn't find a problem in the math, or the collision detection, which does work.
Then, last night, after working on the project again for a little bit, and having laid down to go to sleep, while reading a book, the answer hit me all at once. I've been looking for the problem in the wrong place all along. The problem isn't in how he moves, or the math (at least I think, we'll find out for sure a little later as I do more work), the problem is created because of when he is allowed to move.
One of the big play factors for the original game is that Mr. Pac McClone can turn before he actually hits the corner - the ghosts on the other hand, can not, they must travel all the way to the center of 'valid' space before they are allowed to make their cornering move. For a detailed explanation of this behavior, see: http://home.comcast.net/~jpittman2/pacman/pacmandossier.html
I've relied heavily on that particular game outline to keep things as close to the original as possible, and as you can see, Mr. Pac is allowed to make his cornering move anywhere within a 4 pixel range as he approaches, enters, and passes through the grid boundaries. My code mimics this behavior almost exactly, but I failed to take into account that he may not be grid aligned when he makes that cornering move. So if he corners 1 pixel early, it throws off the entire coordinate system and creates the cumulative effect so prominent in my versions so far.
Long story summarized.. my entire project has been off because I was looking in the wrong place for the problem. Anywho's I'm going to try and get some more work done today, and maybe I'll have an actual correctly working version up here soon!