Summary — Week 11

SPOILERS IN VIDEO! (0:22 – 0:31)

As announced last week, the timer bugs are no more!

The original game used ticks of 18.2Hz instead of milliseconds for example, so while this little helper converted ticks to milliseconds it was not always easy to recognize what number actually represented a time value.

For instance, I assumed that a variable named time would most likely be the perfect candidate. Oh, how wrong I was. It actually stored the remaining days until the ship arrives at its destination. Do not ask how long it took me to figure this out although comparing time with energy should have made me wary.. (1,2,3)

Adjusting the brightness of the palette was more an issue of rendering order. While the function worked fine it either did a buffer swap too early or the brightness was restored to its previous state by the following draw call.

By removing most special cases it not only simplified the function but also fixed most issues. I did a side by side comparison with the original game and couldn’t find any difference. (1)

What was different though is that I couldn’t interact with anything in the ship’s hold anymore. Apparently it hasn’t been working for a while.. Originally an uninitialized object was identified by checking if its name string points to NULL but I misread it as a check if the first char is 0 (empty string). Unfortunately, objects without a name can still be valid what messed up the traversal of objects in a room. (1)

After running in circles for a while a few important features like RTL and save/load support were implemented. Unfortunately, state serialization still shows puzzling behavior that I haven’t figured out how to solve yet. (1,2,3)

(Source: https://www.youtube.com/watch?v=XfLRdzZyPZE)