Game port progress

My last post about Curse of the Azure Bonds was at the beginning on November, and that was quite a productive month. In December I didn’t touch the code at all and I have been doing some work in the last week.

During my holiday in Gisborne I found a copy of the original Forgotten Realms: Azure Bonds book, and seeing this lying on my desk has encouraged me to keep working. So far it appears to be a lucky charm. The evening I started work again on this project, I decided I was going to have a brake through, and that’s just what happened. I worked out how three blocks of functions where related and the shape of the underlying data structure used to manage sprite animation. All max five frames of it.

Sunday evening I was working of the layout of the interrupt structures, and once I had most of those correctly identified I started using the Ralf Brown Interrupt List to decode what the function where doing. I then used the Visual Studio 2005 refactor tools to rename variables/functions so the code made more sense.

Tonight I was working mainly on another memory structure that purpose I have yet to decipher, but it removed a lot of errors once the related variables became Struct_XXXX (which is a class) verses byte[]/short[]/int/object. I also went on a rampage fixing “Cannot implicitly convert type ‘type1’ to ‘type2’. An explicit conversion exists (are you missing a cast?)” type errors.

Currently there are 14,403 Lines of Assembly to translate, 1,066 Errors to remove and 2 Warnings to solve. Thus at the last three months rates, it will take another year to complete this project.

Windows Live Messenger 8.0 Beta

I got an invite to the Messenger Beta today from Nathan, and my largest pet peeve has been fixed, renaming contacts. No longer will I ponder which “Dan” is this Dan. Nor will the long quote names from Hanky annoy me. Having asked for this for a while it’s great to have it completed.

Now that I slow down, I notice it’s a full Contact management system. Hmmm I wonder if I can also store non messenger contacts and replace Plaxo…

Updates:

Things that seem odd so far :

If the Window Frame is hidden the app title gets squashed by the “Change Color Scheme”, “Show Menu”, “Minimize”, “Maximize”, “Close”. The oddest thing is how is get squashed, the “Windows Live” has higher z-order than the “Messenger”, and the icons collection also have higher z-order than “Messenger”. The Messenger seems to get equally squash at both ends, so you lose the first and last letters. When the app loses focus, the “Windows Live” changes to a dull grey, but the truncated “Messenger” is still in white showing off the bad layout. As space becomes a premium, I would think the “Change Color Scheme” should disappear (off to a menu) as it’s not really top level functionality as it only affects the single title box. Funnier still is as the app gets skinner, the “Windows Live” + windows icon start to get scaled. The dulling appears to be done with alpha channel so it appears to fade even more as is scaled down.

Next noticed UI oddness, is when also in the Window Frame hidden mode, if you drag the window, the outline box is the original Framed Window, and as I don’t have the window drawn through move operations is makes it impossible to place the window at the top of the screen. It appears to have no desktop edge docking. Well it does, it doesn’t let me put any part of the app outside the visible area of the desktop. This is what I used to-do to hide the annoying ads placed at the bottom. The problem with this placement locking is there is wasted space where the Hidden Window Frame used to be. So I might as well have it turn on…

Now I would have put all this into the feedback, but when I click the feedback link, Fire Fox opens and shows me a This Service is Currently Not Available screen, but if I click the Beta Invitations link it opens IE. So it if the error is that the feedback page is IE only it seems odd for them not to use IE to open the page.

Howl’s Moving Castle

Today I took Mahalia to see this movie, and having loved the book as a child, and just finished reading it to her last week. Honestly I was disappointed by this film.

The visual quality was great (except for Calcifer looked draw by a five year old) but the plot must have been lost in translation.

It wasn’t like the major gist of the book was kept, it was more akin to the 1996 remake of Remeo and Juliet, maybe with the some of the cast swapping roles to spice it up more. I’m just not sure what to complain about first. Compared to Hitch Hikers Guide to the Galaxy where you just know it had to be heavily abridged, thus some rewriting in the middle was required, and a happy ending slapped on the end, but here… oh I’m still lost for words.

I guess what I trying to say is the movie was good, but not faithful to the book, and the book is an enchanting story. So if you go see the film, please also read the book, or just read the book.

Back from Holiday

My family and I have been on holiday for the last two weeks, I lovely time was had by all. Now the driving is finished (2,300 km) I’m glad to be back. But I’m not so keen to jump back into work again.

Luck I’m not going until Tuesday.

So I’ll post some pictures later, and get back into it all.

TopCoder SRM 280

On Thursday afternoon I took part in my first SRM for a while. The first problem UniqueDigits had me stumped for quite some time. My initial solution look like this, but took too long, and then I couldn’t figure out how to do it in a fast way. I finally chose to use four loops for each digit and reduce the loop case when duplication was found. So my solution looked like this. Havening taken 34:29 I earned 131.17/250 points for this problem.

The second problem CompletingBrackets I understood straight away. A simple traverse the input and count the brackets, +1 for a [ and -1 for a ]. After a ] if the count is -1, add a [ to the output string, and set count to 0. At the end add the required number of ] to bring the count back to 0. So my solution was this, in a time of 5:02 for 484.83/500 points.

The third problem GroupingNumbers spent ages decided how to track the information. I decided to use a simple recursion method as the max dataset was 9 numbers. And I submitted my soultion with 1 minutes to spare. It passed all the test datasets, but felt too long on my work PC. With only one minute to spend I didn’t have the time to speed it up. It ended up failing in system test, on the fourth test case. So for 31:22 worth of work I didn’t get my 554.55 points.

One of the things that puzzles my was in the system test results it showed FAILED - Result: “” when the function returned a double. Later in the practise room I found that test runs will tell you that your solution timed out, but the system test doesn’t. While in the practice room I reviewed misof’s practice solution. It used the same block of code to calc the best (all though much more compact) but he used a lookup table to manage the group allocation. At the end of his while loop he had the lookup table iteration code. At first it looked like a permutation mixer, but when I single step through the code, it was a simple accumulator but it stop the first time the last digit was altered. This was one of the ideas I had of speeding up my code. It did not remove all duplication, but it turn the code from a n^2 to a (n-1)^2 size problem, which was enough.

<Edited 17 Jan 2006 to removed unwanted <TD> tag that messed up the formatting>

Deskbank File Format

After looking into the file formats for bank transactions the other day, I was wishing that Westpac had some form of public API to call. When it struck me that one of my own family works on the Westpac DeskBank support team.

So I emailed off asking for information. I got the reply that yes the file format was documented. But no public access was available.

In case anyone is looking at the file format and wanting to understand it better, the support team seem to give the document away, but it can also now be found here.

Google MD5 searches

I have been getting a few search from Google on MD5 like this one, http://www.google.de/search in which I noticed this freshmeat project, by Dave Hope.

So I download the code, and reviewed it. Brute force it correct, almost brute fumble, worst crime against CPUs every where is:

  • Converting the resulting hash to ASCII and using printf for each attempt.
    Close runner ups are:
  • Then there is the multiple use of strlen, when you have an outer loop with an integer already holding the length of the string been processed.
  • Doing a string compare on the ASCII result string vs the original.

With those limitations in place, you can safely assume the code will never get past ~9 character passwords, thus you could re-shuffle the code as I did when I did this exact same thing. But publishing this code as a tool seems premature.

While picking on the sins, what with the #include “Functions.c” inside the main function. I can only assume this is yet another useful GCC 3.x feature, but is very ugly. Why not just put three prototypes before main (only one is actually needed) and put the block of code below.

<\Rant> back to work for now…

Well maybe not, just noticed on the English version of that search, that the freshmeat project is the first item, but is also 1 1/2 years old. sigh.

Block BBQ

The fine folks from Computer Concepts Limited held a block BBQ on Wednesday afternoon. It was good weather and a beer and some sausages went down well.

Having driven past their office a few times, it was cool to chat with the director Bruce.

Robert Cringley has had a series of articles (1,2,3 that I found from Rod Drury (nice shirt by the way)) about Google Containers, but the coolest thing was Computer Concepts have this exact thing. They worked out that it was cheaper to build a server room in a 20ft container than build a fire proof server room. It wasn’t completely internally self-contained like the Google idea, but it had external diesel generator and dual air conditioning. It looked really cool, and had glass sliding door behind the normal container doors, so you could see inside.

So we (there where a few of us there) now know what they do: High availability data hosting, server monitoring/maintenance, network and DBA work.

The Inmates Are Running The Asylum

I found it very inspiring. It gave me new vocabulary and mindset for looking at software development, the ideas of Personas and Goals.

For products at work and the products that were developed at ATR, I have seen where both these have been taken into account and not. I find the concepts give me new a framework to hang past success and the lack of these ideas attributable to failures/short-comings.

One thing I’m currently thinking is how to marry the upfront Interaction Design with methodologies like XP, but I think it works. The interaction objectives become the goals of the agile development, compared to features/tasks.

This new perspective has been interesting, already this week I have listened to feature requests not from the usual ‘how much time and effort’ and ‘what are they really asking to-do’ angles, but now also, ‘what is their goal, and how will the feature help in this’. When I stop and think about the personas using our application, what are their goals, I see how badly we are servicing some personas. There is so much more that can be done to assist the user the personas.

So in summary I’d recommend the book to users of software, but more over to developers.