
I'm still working on the
Popeye World Record for Nintendo. My last update was on April 25th, where I really didn't have much progress at all. Setting a world record is very difficult when you're displaced. It's even more difficult without a television!
Although I'm still displaced, I finally got a television, and have been mulling the Popeye World Record again. Like most things I've been studying it programmatically - looking at how the programmers actually designed the game and to look for flaws in it for an advantage. Not necessary glitches as that would distract from earing an actual record, but more along the lines of knowing how the AI was designed.
I haven't been able to figure it out completely but I am certain that Bluto can be controlled. He only has a few "modes" to which he operates:
- Search: When he's "looking back and forth for Popeye"
- Chase: When he walks in the direction of Popeye
- Attack Above: Jumping up to hit Popeye
- Attack Below: Reaching down to hit Popeye
- Throw Bottle: Throwing a bottle
To determine what triggers each of these events simply takes some studying. If the modes are triggered by events within the game then it should be pretty easy to figure out. However if there is a random element to it, it will be more difficult.
It seems pretty obvious that the direction of "Chase" is simply a matter of determining if Popeye is to the right or left of Bluto and simply to start moving in that direction. Never once have I observed Bluto to walk in the opposite direction of Popeye when they are on the same level platform after completing a "Search Sequence" (unless of course you've eaten the spinach.) This is the easiest of the AI to figure out (If Popeye is LEFT of Bluto then Walk Left, else Walk Right).
"Search" seems to be the most difficult for me to figure out. What the heck actually triggers Bluto into "Search Mode"? I'm suspecting it has something to do with the animation frame that Popeye is currently standing in but I haven't been able to prove it. This is actually important to figure out because if you can trigger Bluto into "Search Mode" on the first stage while under the barrel you can knock it down for big points. The lower down on the screen Bluto is the higher the point value becomes. Of course the timing becomes more difficult too.
Again however, if these events are triggered randomly, such as a random number generator then it won't do much good to decipher the AI... infact it might be impossible to do so.
There is two ways that this can be figured out. The first is to use a debugger on an emulated version of the game, but thats the cheap and chump way to do it. The honest way to do it is to try to create a pattern not unlike the PacMan pattern. If you can move around the first stage in a predetermined way and have Bluto follow exactly each and every time then you can be certain that its not random.
Having the next two days off will give me ample opportunity to experiment!
Labels: Popeye