Articles posted June 2005 Older >>


It's been a while since I had anything exciting enough to show pictures of, but here's something interesting. A driving game, running on Sega System 32 hardware, that was not written by Sega, and which doesn't appear to be a hack or a bootleg but a legitimate game in and of itself. It's Slipstream, a racing game by Capcom. Weird!

Pictures: Title Screen Gameplay

Vanity Fair

I'll admit up front: I've never read Vanity Fair, so I can't comment on how this movie compares against the book. However, Vera and I did greatly enjoy Monsoon Wedding, which was also directed by Mira Nair, so we felt this one was worth a shot.

As a period piece, Vanity Fair does a reasonable job, with lush sets and stuffy, uptight people obsessing over class and social order. This kind of thing can be fun when done well (I really enjoyed Gosford Park, for example, even though it was very stuffy and very talky :-), but here it just seemed like a bunch of bitter unlikeable people out to get each other's money when they died.

Having not read the book, I thought Reese Witherspoon did fine as the heroine, though I have heard from others who have read the book that she lacked "bite" as Becky Sharp. I did like the fact that her attempts to rise up the social ladder did not always succeed nor necessarily better her life.

Overall, it was a diverting couple of hours, but not as good as I was hoping. 2.5/4 stars.

Hotel Rwanda

Hotel Rwanda is a tough movie to watch. It is the story of Paul Rusesabagina (played extremely well by Don Cheadle), a manager at a Western-run hotel in Rwanda, who finds himself caught in the crossfire and protecting over a thousand Tutsi refugees from the Hutu militia, as the terrible genocide between the two groups gets underway.

There were a number of powerful and emotional scenes in the film, but the one thing you feel watching this is just how hopeless the situation was. There was a small U.N. peacekeeping force there, but they were hardly enough to have any impact on the violent Hutu mobs that were created and constantly encouraged over the radio to kill the Tutsi "cockroaches". In fact, the radio announcement that launched the killing spree was one of the most haunting things I have heard on film.

Nick Nolte has a small role as one of the U.N. peacekeepers, and Joaquin Phoenix plays one of the sympathetic reporters who ventures out in the midst of the violence to document it, only to report back to Paul that the West just didn't care.

Overall, this is a really good, if difficult, movie, and one of the best I've seen in a while. 4/4 stars.

The Incredibles

Yes, I did manage to see The Incredibles in the theaters when it came out. But like every other Pixar release, this one went straight into my DVD collection as soon as it was released.

As usual, it's quite an excellent film, filled with just the right balance of comedy and drama. I liked the fact that they cranked up the edginess a notch this time and got the dreaded "PG" rating. It also clocks in a bit longer than the typical U.S. animated film, which is nice since I always tend to feel that things end too quickly.

This is the first Pixar movie to focus exclusively on humans, and they did a good job achieving a 3D animated look that doesn't try to convince you that they were attempting photorealism. The only place where it looks like they still have some trouble is with wet hair, but that's only a minor distraction. :-)

Jason Lee was inspired voice casting as Syndrome. But Brad Bird himself steals the show as the voice of the superhero fashion designer.

About the only negative thing I can say is that there weren't any "outtakes" at the end. What's up with that??? And the "outtakes" on the DVD aren't nearly as inspired as those from the other Pixar movies.

But I can't really complain. Overall, the movie is fun, and a total joy to watch. 4/4 stars.

Writing an assembler

Over the weekend I decided to write an assembler. The official impetus for doing it was that there were no known good assemblers for the CPU architecture I'm looking at. The unofficial impetus is that it sounded like fun, especially since I already had a nice expression evaluation engine in the new MAME debugger, and that was half the battle.

Of course, I hadn't written an assembler in 20 years. Which is a good story in itself. 20 years ago I was just a pimply teenager learning how to write assembly code on my IBM PCjr. At the time, the only real assembler available was Microsoft's MASM, which I bought, but which it turned out required so much of my computer's little 128k of memory that it could not assemble anything bigger than a few hundred lines of code.

So I went searching on the local BBS's and came across a cool assembler called (IIRC) a86. This was a shareware assembler written by some guy at Intel, I think. But it was shareware, and expensive shareware at that. Furthermore, the author claimed to have used alternate encodings of instructions in such a way that he could detect if your binary was assembled with his assembler. Well, that sucked.

On the plus side, this assembler had a lot of nice features that MASM was lacking at the time, including support for local labels and no need for a linking step, as well as a much smaller memory footprint. But what to do about this whole shareware business?

Well, as was my typical response to such situations when I was a teenager and had a lot of time on my hands, I decided I could write my own assembler ... in assembly language! It would be fast and would support everything I wanted. In fact, I would make it assemble the exact same syntax as a86, since I liked a86 so much.

So I spent probably a month or two writing an assembler in assembly language. I called it qasm (for 'Q'uick Assembler -- after all, it was hand-coded in assembly language, it had to be fast!) I figured out how to do basic expression evaluation on my own (I didn't do it all that well at the time), and eventually created something that could assemble most of the code I had written while tinkering with a86. Then it was time for the real test.

Using a86, I assembled qasm. Then I took and used it to assemble itself. Finally, I took the that was generated from that step and assembled qasm again, just to be sure that the one that was self-assembled still worked.

I didn't know it at the time, but this is the process of bootstrapping a compiler. If you've ever gone through the process of compiling gcc on your own, you've done it as well. Use an existing tool to compile the compiler, then use the newly-generated compiler to compile itself. Finally, use the compiler that was self-generated to compile itself again as a sanity check.

Anyway, back to the present. Let me just say that assemblers are much easier to write in C. It's also much easier to write architecturally-sound code in C. I'm actually quite proud of how it's turning out. There is a core frontend that can be used to write pretty much any assembler; and there is a target-specific portion that interprets the specific opcodes and generates the machine code. I'll probably release the source once it's available. It would be pretty straightforward to make it into a universal assembler at some point down the road.

But for the moment, I think I'll just stick to getting it working as a v60 assembler. :-)