Software Dreams

:,_.,-~´¨`~ .,:¤:,. ~´¨`~-,._,:

I've got a color reduction utility here, a visual novel engine here, and my bigger projects are on Github.

For a small reference to changing the Free Pascal console IDE's color scheme, see here.

Ultima IX widescreen hack tool

Origin/EA's Ultima: Ascension was a very shiny 3D game in 1999. It's still not half bad, but there are some technical issues that need fixing. One of those is how parts of the interface grow out of proportion when you play in a widescreen resolution.

This little tool will edit the game executable and save games to apply a new default field of view, which the game otherwise wouldn't let you change as freely. A wider field of view makes more of the game world visible at once, and in U9 also makes some interface elements a different size.

Interface example pics Game view example pics

In the above screenshots (click to view in full size!) you can see the same scene with three different FOV settings. From the top: 60 degrees, 90 degrees and 120 degrees. The game's default is 60, and you can see 120 already has significant lens distortion. Values much over 90 degrees may cause the game to grow increasingly unstable, as well - the renderer just can't keep up.

After using this tool to set a new default FOV, note that you can still use the in-game camera controls (Ctrl-Home and Ctrl-End to zoom in and out, Ctrl-Pageup and Ctrl-Pagedown to change the FOV) to make sure the camera is at a comfortable distance from your Avatar, while still benefiting from the properly-sized interface.

Download the tool here. (86kb)
The zip file contains the win32 executable, and the source code for Free Pascal.

Special thanks to the good people at the WSGF for the original hack, to WTF Dragon at the Ultima Codex for connecting people, to Sergorn for quality assurance, and to Iceblade of the premier U9 mod Forgotten World for clever allied reverse-engineering.

Vampire Hunter Girl

This is an engine demo for an interactive fiction game. You know, LOOK AROUND, OPEN DOOR, GET LAMP, PET VAMPIRE, EXPLODE CASTLE...

The full story would tell about the attempt of a young but determined girl to capture this reward. Armed with religious artifacts, sticks of wood, garlic, a refreshing drink, stylish clothing and a handy handguide for beginning monster hunters, she is ready for some serious vampire bashing.

This particular version has 7 rooms to explore and over 60 mobjects to interact with. See if you can find the little brown imp who was traumatised by a previous vampire hunter. There's no real goal written in, but the game events and objects are all in easily editable text files.

You can change configuration options by editing the VAMPGIRL.INI file. Once in-game, type "HELP" for basic adventuring advice.

Vampire Hunter Girl win32 binary (56kb)
Vampire Hunter Girl FPC 3.0.2/win32 source (doesn't include the data files in the binary package)
MoonVideo console management system source code

MoonVideo mk.II

Simple is beautiful.

What does it do?

Although I made this long ago, MoonVideo still compiles fine with Free Pascal 3.0.2, for win32. It is useful for making something like console applications but with a little extra kick, such as roguelikes, interactive fiction, or other games focusing on feature content over eye candy.

MoonVideo FPC 3.0.2/win32 source
Usage instructions
Three font bitmaps


Need a quick hack to read data from MS Excel sheets? I did. The hack was not quick.

This program can read files saved by Excels 97, 2000, XP and 2003 with some success. It mostly skips formatting, and does no formula computations or even direct references to external files – it does, however, use the cached results of formulas and external references that Excel stores. To demonstrate its prowess, Excelsior can dump a loaded workbook's sheet data into very basic RTF-files.

The user interface is non-existent, but the code should be easily extendable and comes with some debug features. It used to compile fine with Free Pascal 2.2.0 and is freely usable for whatever you like, as far as I am concerned. OpenOffice.Org's commendable documentation efforts of the file format were heavily used in getting Excelsior to work.

Excelsior source code, for Free Pascal

MoonSynth v1

Who needs physical instrument modeling when you've got tried and true FM?

MoonSynth is a Win32 program that plays midi files or direct input from your non-musical keyboard. Instruments are synthesized using frequency modulation and to some degree amplitude modulation, although that requires a bit more work. Polyphony has a soft 32-channel limit, but could easily be increased. The user interface is crude and console-based, accepting only keyboard commands, but it's good enough for now.

If you've got anything close to a modern computer with Windows on it, this probably works without trouble. I've tested MoonSynth on 95, 98 and XP, and encountered no problems. Sound is played through DirectSound, so you'll need at least DirectX5 or maybe 7 to be installed. The program isn't properly optimised, but doesn't seem to require much processor power anyway.

Just download and run MOONSYN.EXE to start. If no errors occur, you'll be presented with the text-based interface. Play some sounds by pressing letters and numbers. Kill all playing sounds by pressing space. Type a question mark to load a midi file. Hit the asterisk * to play and stop, and use ESC to quit. However, be warned: all midi instruments use very simple settings so don't expect anything even approximating real instruments. Also, percussion is not implemented in this version.

The old source doesn't even compile anymore, but the binary should still work fine. In the future, I will definitely return to this project, since I'll be needing a sound system for my games and I still love FM as much as ever.

Revision 11 (21-May-2004)
MoonSynth executable
MoonSynth sourcecode, for Free Pascal


Unlike MoonSynth, MoonTracker is a 32-bit protected mode DOS-based module tracker and player that I wrote as a teenager; you can compose and play music with it. To run it on a modern system, you probably want to use DosBox.

It doesn't support any other module formats than MoonTracker's own, since there are so many better players out there. This is not much more than a curiosity, unless you're interested in figuring something out from the source code for a tracker project of your own.

The distinguishing feature of MoonTracker is being a dynamic player. You may remember that LucasArts used a dynamic SysEx-based MIDI music system in some of the best adventure games ever made, including Lechuck's Revenge and Fate of Atlantis. MoonTracker allows similar music manipulation, only with module-based music rather than midi.


Check the included MOONTRAK.TXT for more details.
Or check out a screenshot.
Last version is 1.0 (October 3rd, 2001)
MTRAK10.ZIP (113kb)

Included in the archive are MoonPlayer for playing MoonSoundModules and MakeMSX, a utility to pack several MSM's into one file.

Here's a little something else you can play with...
A sucky dynamic transition demonstration (139kb)
Mimu Muzak 5 and a few other tunes (297kb)

Before you start the program, scan through the configuration file and adjust the settings (mainly IRQ+DMA) to work on your computer. Hit F1 for a help screen if you've never used a tracker before. Any IT users should be right at home, except there's no mouse support.