Arun Tejasvi Chaganty about articles blog thoughts research

Revisit to the Tripfest Era - Transport Tycoon Deluxe

It’s been far too long since I came up with decent material to put up here. Rather than let my blog die, the organic creature that it is, I thought I might as well look deep in my archives of half-baked articles and post something from there. This is one such article that I have no clue why I haven’t published as yet. I wrote it loooong ago, around the time of my rant about PlasmaPong, and is of a similar theme (and no surprise it’s a rant too). Anyways, here it is, in it’s raw un-edited format (oh, the value addition of lazyiness):

Transport Tycoon Deluxe

This game was one of the first simulator games and was the hottest game of the 90’s. Yes, the nineties when everything looked like a DOS game, NFS was like racing cardboard boxes and when Oasis ruled the world. Ok fine, that last point wasn’t true (though I wish it were). Back to the point, TTD was a phenomenal success, but it had a lot of drawbacks. The AI was like playing your three year old brother who shows you all the cards, and will give you that Wild-Draw-Four if you ask him nicely (i.e. threaten to clobber him). The maps were kinda limited and there were quite a few bugs. Enter OpenTTD. This is an open-source implementation of the TTD engine, i.e. every part of the game minus the maps and the vehicles, etc. Imagine this vague Scandanavian dude who actually reverse-engineers TTD. This is not a joke. You have to figure out what the program did by looking at the final assembly instructions for it (actually you only have the condensed assembly instructions that are essentially 1’s and 0’s. But you can go from the assembly to ‘op-code’ and back pretty easily). Just to give you a sample of what the hell that means, this is the op-code for the “Hello World!” program (and I can hear all the CS110 chaps groaning).

#include <stdio.h>  
int main() {  
  printf ("Hello World!\n");  
  return 0;  
}
.LC0:
  .string   "Hello World!"
  .text
  .globl    main
  .type main, @function
main:
.LFB0:
  .cfi_startproc
  pushq %rbp
  .cfi_def_cfa_offset 16
  .cfi_offset 6, -16
  movq  %rsp, %rbp
  .cfi_def_cfa_register 6
  movl  $.LC0, %edi
  call  puts
  movl  $0, %eax
  popq  %rbp
  .cfi_def_cfa 7, 8
  ret
  .cfi_endproc

So you have some clue what kind of pain this guy went through to get this done. His new version features a much improved AI, lots more flexibility for the themes, and more robust code. What does our chap Chris Taylor say? “Meh, foo you, you can’t use my game’s (the Original Transport Tycoon Deluxe) content for your game”. Right now, most sales of TTD are out of stock and most importantly I’d like to say: IT’S A FRIGGIN’ DOS GAME!. The number of people who are willing to pitch in cash to buy something this old is equivalent to the number of people in this world who go to work every day holding a lightning rod to see if they get zapped and transform into the Shocker (from Spiderman). Jesus man, let it GO.