UPDATE: x0rfbserver has disappeared from the web.  No worries, however, as x11vnc is an excellent replacement.

I’ve just discovered the joy of x0rfbserver.  I always had trouble understanding why the unix VNC’s wouldn’t allow exporting of a pre-existing X session.  With x0rfbserver, you can export your existing X session to another computer.  This is how WinVNC works under Win32 - it’s handy in certain cases when you don’t own a KVM switch.

You’ll need to install the xclass and rfb rpms.  I couldn’t find any for RedHat, but the Connectiva i386 ones worked like a charm.

Note: After using it for a few hours, it seems like it can be a bit crashy at times.  I have an SSH window open that I use to restart it on the other machine.  I’m still hooked!

Read full post

This is the prototype Bochs GUI that I’m working on. Many Windows users judge the quality of a program by the “Windows-ness” of its interface. Bochs is a powerful tool, but as the current Bochs interface looks archaic (despite it’s full-featuredness), it may potentially turn off a number of users. My goal is to create a UI that feels rich and native to a Win32 user, without needing major modifications to Bochs.


(UPDATE) Newer screenshots:

Here is a summary of my project goals:

  • Hosting multiple (simultaneous) simulators
  • Allow simulator window to auto-fit virtual machine’s current resolution or to operate in full-screen, matching resultion mode
  • Easier (wizard?) configuration of devices by “adding hardware”, rather than configuring all possible devices
  • Single-click launch of a virtual machine (.bochs file?) from Explorer
  • Explicit input capture mode with keyboard-shortcut capture escape (Ctrl+Alt)
  • Support for sending “Windows” key, Alt+Tab and Ctrl+Alt+Del (via Ctrl+Alt+Ins) to virtual machine

The changes required to support this are in win32.cpp only. I’ve added an environment variable to specify the parent window of the simulation window, as well as a number of custom messages that the simulation window sends its parent. If the environment variable is set, bochs assumes that it is being hosted within a different control and it hides the main win32 GUI window.

The patches are far too ugly to send right now (though they are small). I’m hoping that someone can help me integrate this cleanly into Bochs without disrupting the use of the standard Bochs Win32 interface.

I decided not to enhance the wxWindows port of Bochs because I thought I could make use of a number of .NET toolkits to create a rich UI. Since I’ve been using C# exclusively lately, this was a natural fit for me. It does limit the users of the system to those with the .NET framework installed, but as this was included in one of the recent batches of critical updates, it should be installed on a number of systems.

Read full post

I managed to find a copy of Death Match on an old CD.  It took me a little while to the program running.  The first thing that came up was a copy protection scheme that I had written into it.  At the time it was written, most commercial games had a lookup sheet that you would need to consult to get the program to run.

I had written up a scheme where each letter would map to a different symbol.  For instance, the letter A maps to .  The screenshot below illustrates what a user would see:

The 6-character mapped character string was then looked up in a table of words and compared to the word that the user entered.  I had originally compressed Death Match with an executable compressor called “PKLITE”.  Because of this, I couldn’t just hex-edit the executable and locate the string table.  Luckily, I hadn’t protected the compressed version, so PKLITE allowed me to decompress it:

C:\old\pklite>pklite -x \old\dthmatch\dthmatch.exe
PKLITE (tm)   Executable File Compressor   Version 1.12    6-15-91
Copyright 1990-1991 PKWARE Inc.  All Rights Reserved.  Patent Pending
Original Size: 39929  Expanded 
Size: 112672

Once I had done that, it was a simple matter of using notepad to grab the string translations from the executable.

After that, I used The Gimp to create PNG files of each letter and created an HTML file to map the 6-character codes to the appropriate words.  I was then greeted with the title screen and main menu!

Getting the game to run properly is a bit tricky.  Bochs seemed to freeze in the main menu and running it under Windows 2000 seemed to result in corrupted graphics in a number of places.  I think I might be missing a few files that might be important.  Once I scour the remaining floppies, I should be able to discover which files are missing.

Update: I discovered that the code “LEMMEIN” works for any of the codes as well.  You can see it in the screenshot of notepad above.

Read full post