Archive for October, 2010

AAO conversion – revealing anew the complexities of phoenix wright

Thursday, October 28th, 2010

It continues to amaze me how complex these systems (Phoenix Wright emulators) can be. Each one is trying very hard to reverse engineer the original games and make something that can replicate the experience in a pleasing way. There are also concerns about how well people can actually use the systems to realize their vision for a fan case, as well as how far off the beaten track you are able to go in terms of new features that weren’t in the original games. Though every developer who has embarked on a journey to create a Phoenix Wright engine has had the exact same template to work from, the amount of ways to approach the problem are many.

As I write a converter from Ace Attorney Online to PyWright, I am surprised at how often an assumption I made was wrong. Just today I realized that the code I was outputting for cross examinations was missing a lot of things. The cursory job I had done with them before seemed to work for my first test, and I left it alone for a while. But it turns out my simple test was the only accurate cross exam converted. A lot of the code it outputs needed to be reversed – it was putting the failure message right after the statements, causing it to show the failure every time. Also, the labels for certain situations were in the wrong places, and the counciler messages were tricky to get just right as well.

In the process, I even found one area of AAO I can improve on. The “RetourCI” command in AAO appears after a failure message, such as presenting the wrong evidence, or pressing a statement without text defined. (I think in AAO you HAVE to have text defined in order to press, no?) Anyway, the argument passed to RetourCI seems to always be the first line of a cross examination. I could be wrong, but this means that in all AAO games, if you present the wrong evidence, it will restart the cross exam from the begining, instead of continuing the next statement. Correct me if I’m wrong, but I couldn’t find any controls to make RetourCI go to the next statement. But when I convert, I can easily translate “RetourCI” into “resume” which is the PyWright command for exactly that behavior. It might be something unas could add in the future :)

Anyway, my point is, even though the general idea behind a Phoenix Wright engine is very simple; when you start getting into details it’s astounding how much hidden complexity there is, and how many different ways there are to approach those problems. I discovered this when I first wrote PyWright, but I am discovering it even more, as I explore someone else’s ideas and approaches.

I think writing another zelda engine would have been easier :)

Anyway, I think I am approaching the home stretch with the AAO converter. Barring any real showstoppers, it should be ready in a week (along with PyWright 0.977, knock on wood). Also, it is tuned for aao v5, but when unas upgrades he often updates all of the games automatically. A good way to ensure your game will be able to be converted, even when he switches to v6, is to make a backup. You can do this by opening your game in play mode, in aao, and then saving the web page html. In firefox, you can do this by file->save page as->web page, complete. Make a folder for it to keep it tidy.

What I’m working on 10-23-2010

Saturday, October 23rd, 2010

Here’s what I’m working on:

0.976 release announcement missing, 0.977 on the horizon

Wednesday, October 20th, 2010

In anticipation of 0.977 which is coming soon, I thought I should probably post a 0.976 annoucement for archives sake. I really have let this website slide, and no one comments on the forums any more. It happens. I’ll try to keep in touch more often!

So here it is: 0.976 is available for dowload, and has been for a while now. It is only a bugfix release, so not too exciting, but if you are still using 0.975 you really should upgrade. Some nasty bugs in that version…

0.977 will be out before the month is over. There are some nifty new special effects available, some tools to aid in finding errors in your game, and I changed how the resolution works so that it is a bit more flexible and standard. Also, this release should be fully unicode compatible, so all of you non-english PyWright users can make cases in your native language!