Articles posted March 2005 Older >>

About a Boy

I was admittedly reluctant to see this movie. I tend to be the person who picks most of the Netflix selections, which mostly works out okay because Vera and I tend to have pretty similar tastes. Plus, I tend to pay more attention to what's coming out than she does. But this was one case where she insisted that we see it, even though it involved the typical little-kid-winning-over-the-heart-of-a-grumpy-adult plot.

But I guess she was right in this case. About a Boy is actually a quite enjoyable and funny movie. A large part of the charm is Hugh Grant's character, who is just so over-the-top selfish, down to the awesomely funny monologues describing his empty shell of a life. Nicholas Hoult, who plays the boy, is also funny and charming in a way that isn't grating or annoying.

Notable cast sighting is Rachel Weisz (from The Mummy) who plays the main love interest.

In the end, I laughed a lot and enjoyed the movie more than I expected. 3/4 stars.


Hmmmm, what can I say about this movie? I'm not exactly a big connoisseur of wire fu martial arts flicks, though I do have to admit to being a big fan of Crouching Tiger Hidden Dragon. But from the trailers last summer, Hero looked to be a damn impressive movie.

Visually it did not disappoint. Lots of intriguing use of color, wind, and special effects all combined to achieve a feast for the eyes. Many of the fight scenes are just downright amazing to watch.

Where I think the movie fell short for me was in plotting and characters; that is, there only the tiniest thread of a plot and a cast of very one dimensional characters. Don't get me wrong — I can appreciate movies where the plot is secondary to the visuals or atmosphere or characters. But in this case, while watching this movie I found myself constantly distracted by it. "Okay, so he killed three assassins, now cut to a series of flashbacks where he takes each of them on." At least Kill Bill, which, let's face it, has a similar plot, didn't take itself so seriously.

In the end, the movie was a bit of a disappointment. Maybe I had read too many hyped up "best movie of the year" type discussions of it. I still have to give it credit for some amazing visuals, but I guess I was just hoping for something more ... substantial. 2.5/4 stars.

Can I use chdman to put a CHD file back onto a hard disk?

Yes you can, at least under Windows. You have to be logged in as administrator, and you have to know which physical volume your target hard disk is mapped as. The easiest way to do that on Windows XP and later is to right click on My Computer and select Manage from the menu. In the Computer Management window, in the tree on the lefthand side, select Disk Management. That will show you a list of all the physical hard disks you have plugged in. They will be listed as "Disk 0", "Disk 1", etc. Make a note of which disk number your target hard disk is.

Once you've done that, it's easy to "image" the CHD file onto the disk. Just use the following syntax:

    chdman -extract imagename.chd \\.\PHYSICALDRIVEn

where "imagename.chd" is the name of the CHD file, and the "n" next to PHYSICALDRIVE is the disk number you figured out above.

This technique has been used by several people to restore dead hard drives on arcade games. Note that you can also use chdman to create a backup of a hard disk image in much the same way:

    chdman -createhd \\.\PHYSICALDRIVEn imagename.chd

Which is how most of the CHD images have been created.


Someone was taking the good stuff when they decided to make this movie. First off, the idea of taking a cartoon like Popeye and trying to extend it into a feature length movie is pretty out there. Add to that the idea of getting Robert Altman to direct it. And then add Robin Williams in a starring role. I have no idea what kind of twisted genius put it all together, but it's definitely one strange movie.

I first saw this one in the theaters back when I was about 10. I don't remember being particularly impressed at the time, but for some reason I could still remember the songs many many years later. I definitely remembered that I thought it was a strange movie, even back then. Thus, I decided that 25 years later, I should probably take another look.

In general, I'd say the movie is definitely not for everyone, but I do have to say that liked it. Then again, I tend to be easily charmed by strange movies (I like Toys as well, if that's any indication :-) The "plot" is razor-thin, but the setting is quaint and the musical numbers are well-done and minimal at the same time. Casting Shelley Duvall as Olive Oyl was a stroke of genius.

Random cast sighting this time was seeing Dennis Franz (of NYPD Blue fame) as one of the local toughs.

If I were to recommend it to others, I would say that it's probably more of a 1.5/4 star movie. But due to its quirkiness and sentimental value, I give it 3/4 stars myself.

Line of Fire conquered — mostly

As you may have noticed, MAME 0.94u5 has been released, and Line of Fire is working now. There were several problems with that particular game, all of which are interesting, and none of which had anything to do with the CPU interleaving that I originally thought was the source of my troubles.

In the end, it mostly came down to the divide chip. As I mentioned previously, the game will sometimes attempt to divide by zero. Now, the divide chip has flags to let you know that you've caused an error, but the game never reads them. It would then take the result of the divide-by-zero, look it up in a table, and use the resulting value in future calculations. The problem is that the table was only ~32 entries long, so when I tried returning 32767 as the result of a divide by zero, it read some random ROM location and used that instead of a valid value. To work around this, I am guessing that divide by zero either returns 0 or 1. I'll have to work with Charles to figure the exact details out.

But all that served to fix was the fast/slow/fast/slow speed at which you moved through the level, and which eventually ended up hanging the game. Once that was all better, the game would hang right near the end of the first level. At least that part was consistent.

First, though, I had to fix the jittery sprites. I was pretty sure there was no way this game would be that poorly done (though at the same time I think the Sega fanboys make a few too many assumptions that Sega would never have graphics glitches in their games). I first started guessing that the divide chip actually didn't do a full 32-bit by 16-bit divide, but rather maybe a 24-bit by 16-bit divide, or some other reduced accuracy version. This actually produced smoother results, but it screwed up a lot of other stuff too. Eventually I noticed that the value 0x8000 was being used as the divisor quite often, while at other times it was using values in the 0x7f00 range. If I treat those values as signed 16-bit values, then the 0x8000 would suddenly flip from +32000 to -32000, which seemed kind of odd. So I tried going back to a full 32-bit by 16-bit divide, but treating the values as unsigned, and suddenly things were much easier to look at.

But back to the hang at the end of level 1. I eventually put a trace on both the CPUs right near the end of the level, in order to see what was happening. It turned out that the main CPU would execute some code, then jump backwards into the middle of an instruction. This is a clear sign that something seriously bad was happening. On a hunch, I tried loading up the Japanese version of the game and looking at the equivalent code. Turns out one word in the World version ROM was wrong. But if the ROM dump was bad, then it wouldn't have passed the memory test in service mode. The only other logical explanation is that there must be a small error in the decryption key for the World version. Hopefully "The Doctor" will figure that out for me.

Related to the divide chip issue was the bug that made GP Rider behave strangely. My original divide chip implementation had us recomputing the results every time the dividend or divisor was changed. But it turns out (and is actually pretty clear from the schematics, now that I've looked at them again) that the divide is actually explicitly triggered by writing to a higher address. The reason this was important for GP Rider is that they would trigger one divide, and then load the dividend for the next divide before reading the result of the previous divide. With my original code, writing the dividend for the second divide was trashing the results of the first divide.

So, at this point, I'm pretty much done with X-board. There's a few small interesting bits left in Super Monaco GP involving extra sound boards, but that's pretty minor. What I'm really hoping is that someday a Last Survivor will show up. I love seeing new rare games come to life again. Even if it probably sucks. ;-)