Older blog entries for DrCode (starting at number 5)


I may have overdone the combat code; the Avatar is getting into battles with the cats when you double-click on them.

Otherwise, progress is really good, with Tristan finishing the intro. screen and menu, and Ryan figuring out a bunch of NPC flags that I'd been ignorant of, and using them to fix the movement code. Meanwhile, I've partially figured out how theft is determined, and have (mostly) finished implementing support for poison and hunger. My next plan is to fix a few bugs (which some of my latest 'improvements' seemed to have caused), and then work more on the rendering algorithm (fixing glitches and maybe speeding it up a bit).


Not a bad time to be looking for a new job (not that I am, in case anyone I work with is reading this; this is all just observation). But finding a job these days is almost a full-time job in itself, as most places want to interview you for 6-8 hours. Not that I would know this first-hand; it's just something I've heard.


No more Mr. Nice-monster! With about 10 lines of code, the monsters with 'hostile' alignment now attack you when you get near. I'm probably going to add a cheat code to make them nice again, as it makes plot-testing much easier.

Meanwhile, Tristan is separating out code to make working on Serpent Isle easier, and the other developers are working on audio. It still amazes me how large this project has grown, especially since Exult was originally just going to be a landscape browser. I was a bit dubious about writing open-source at first; but it certainly is cool getting all this help from really talented people from all over the world.


Fixed most of the plot and conversation bugs that Ryan found, and managed to play all the way through the Skara Brae sequence. My guesses (the most recent in a long line) about the ABRT and CATCH opcodes seem to be working. I'm starting to feel really confident about Exult being fully capable of playing Ultima7, especially with six other really capable developers contributing to the project.

So.... how does one get more certifications? The only one so far is from Dancer, one of Exult's lead developers.


...sucks!:-) Anyone need a C++ developer in the Portland, OR area? For a code sample of around 40K lines-of-code, grab the source at exult.sourceforge.net.

Exult (Ultima7 engine)

Our newest team member, Ryan, has not only been fixing lots of my poorly-hacked code, but has also been playing through the game, and finding lots of plot-related bugs. For me, this means more work on the Usecode-interpreter, which has been the most frustrating, and the most satisfying, part of this project.

And I think I've got the solution to most of the problems. First, the ABRT opcode, which I was interpreting the same as a RET, is really like a 'throw' in Java; it not only returns, but passes its effect upwards to the caller. In addition, the 0x4 opcode, which I was interpreting as a 'jmp-if-done', is really a 'catch', and the previously 'unknown' opcode, 0x40, is always the target of a 'catch'. So if a called function returns with an ABRT, control should pass immediately there. I'll give this all a try tonight.

World News

I'm a news junkie, and have been following the Middle East peace talks almost hourly. It's depressing, but I see no way the two sides can compromise on Jerusalem when both have religious reasons for their claims. My proposal (which, of course, nobody really cares about:-)) would be for them to share sovereignty, with a city council made up of representatives from both sides, and an integrated police force.

I know it seems improbable that the two sides could ever trust each other to do something like that. But then, weren't Britain and France mortal enemies for hundreds of years, with each claiming the other's territory?

Exult (Ultima7)

We're in the cleaning-up phase, which for me, means playing the game and looking for holes. My main enhancement over the weekend was getting teleports to work. In addition, I fixed a bug that allowed monsters to walk through walls, smoothed out the walking animation, and fixed a combat bug where your character wouldn't attack when you wanted.

As usual, testing the above revealed more unsupported game features: traps, sleep fields, poison fields. These appear to be instances of 'type 1' eggs, which I had thought were only used for creating monsters. So... more reverse-engineering is required here to figure out the data format.


Took my daughter to see Pokemon2000. Actually, it wasn't bad at all, with an almost RPG'ish sort of plot. And some really nice animation.

Exult (an SDL-based engine for playing Ultima7)

Seeing great progress in all areas. Suddenly, the Midi's sound great, thanks to Dancer and Ryan. Tristan's got the intro. movie working beautifully, including the Guardian's speech. And I finally have the horses facing the right direction when you turn the carriage (yes, one of the major advances in comp. sci!)

So what's left before we can release an Alpha:

    1. Implement the starting menus.
    2. Finish the combat system.

Kind of scary to think that after more than two years, this project may actually be finished. And it's even scarier to think about all the bug-fixing, testing, and cleanup to be done before it's really finished.


After nearly 20 years, I'm reading Lord of the Rings again. The first time I read it, as a teen, it was great. But when I read it the second time a few years later, it seemed contrived. Now that I'm somewhat (but not a whole lot) more mature, I'm enjoying it more than ever, and see why it's inspired so many writers and game designers.

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!