Technical

Install XP for physical system with vmware (stop 0x0000007B boot error)

Sometimes you want to install windows on a spare disk for some gaming without it eating your Linux partition or interrupting your other activities. If you happen to have vmware, there is a way to accomplish this.

Disclaimer: This installation is somewhat advanced as it requires you to improvise around the specifics of your system and success depends on your hardware. If you are uncertain the low tech way of unplugging your Linux drives and installing it on the remaining windows drive may be a better way to go.

Ingredients: Linux (I used Debian Etch), vmware (I used workstation 6.5), windows XP CD or iso, a spare hard disk, and a motherboard with a somewhat standard HD controller.

  1. In vmware, create a new image that uses your intended windows physical disk. In my case vmware had some trouble picking up my /dev/hda, so ln -sv hda sdc and then referring to /dev/sdc as physical disk allowed me to use it.
  2. Install XP on your physical disk.
  3. Since the virtual controller is different from your own, you’ll have to install some drivers by hand so your physical device will boot properly. (You’ll get a nasty blue screen stop 0x0000007B boot error otherwise) Visit http://support.microsoft.com/kb/314082/ and follow the instructions listed under ‘more information’ about adding to the registry and copying drivers under vmware.
  4. Add your new drive to grub menu.lst (usually located in /boot/grub/): (In this case, hd1,0 is my windows drive, make sure your drive is listed in device.map or it wont work

Title Microsoft Windows XP
map (hd0,0) (hd1,0)
map (hd1,0) (hd0,0)
rootnoverify(hd1,0)
savedefault
makeactive
chainloader +1

Thats all there is too it! After booting Windows will need to install drivers for everything, even your USB controller, so you might have to revert to a PS2 keyboard during this part.

Progress!

To avoid spending time on the supporting logic (mainly, graphics, frameworks, etc), and to go cross-platform from the start, I decided to pick a language where I could focus on the game logic instead; Java. As an added benefit refactoring is a breeze with Eclipse.

Graphics

Coming from a MUD background, and having some experience with the effort that goes into graphics, using ascii appeals immensely. I decided to skip pure terminal output using jcurses, and to go with opengl, using the lwjgl library. Its a lot less work to set up, and allows some nifty tricks we wouldn’t be able to do otherwise.

As a total newbie with graphics under java This tutorial saved me a lot of time setting up lwjgl.

To the right you see the result of this first iteration. I finished locations, combining locations into chambers, queue rooms for digging, and basic A* pathfinding. Four happy dwarf Mind Flayers are digging out my new chamber. Note the Elder Brain sitting in its chamber.

Chamber Algorithm

The Chamber algorithm is interesting. Based on artificial borders (doors, etc) the algorithm assigns newly digged out locations to chambers, creating new chambers as needed. (See picture, each room floor tile appears in a different style). If a location is removed from a chamber, or if two nearby chambers are merged the algorithm disbands the room and reassigns all the rooms within to a new chamber.

Doing this will allow us to divine chamber function depending on its dimensions and the objects within it. It does require a player to properly enclose a room, but that’s a small price to pay.

With the basics in place its time to work on some gameplay elements, next!