Small DLL made with MASM32 to provide helper functions for parsing a VB6 Long (Int32) as Uint32.

A VB6 demonstration of how to monintor a directory for changes with asynchronous notifications.

A VB6 keyboard remapper I wrote back in 2003. It was popular enough to get mentioned in PC World at one point. You can still find it on some ancient freeware sites, but the source code was never published until now!

These are some modules that support the game modding utilities I wrote for KotOR, KotOR2, Jade Empire, and The Witcher between 2004 and 2008. Based on Bioware's documentation for Neverwinter Nights file formats and some reverse engineering, these modules provide manipulation tools for file formats including BIF/KEY, ERF, GFF, RIM, TLK, TPC, and 2DA.

I was recently attempting to copy some multi TB files across servers and decided I wanted better feedback from my copying utilities so I made one. This VB6 console application makes use of Karl Peterson's mconsole.bas to perform unbuffered file I/O from a command prompt. Current speed and time estimates are provided along with tthe ability to resume an interrupted copy.

I don't remember what set me off, but I was tired of VB6's poor handling of version numbering. Its IDE provides Major, Minor, and Revision fields but lacks Build. Worse, it puts Revision into the Build field upon compilation and sets Revision to zero. I set off to first create an editor that would set the Revision correctly and populate the Build with the file's creation date as Julian date.

Perl had some easy to use modules for that, but I decided I wanted something tiny -- a little exe built in assembly that I could maybe turn into a VB6 plug-in. Holy cow. Spelunking into the structure of a PE file with a hex editor and mediocre assembly skills was a good challenge. Eventually I created PEVerEditor.exe that weighed in at about 16Kb. That was small enough to fit into a VB6 resource file.

I had never made an Add-in for VB6 IDE before. Like the PE structure, its documentation was very old and difficult to pick apart. I did eventually get a DLL that, once registered, could be loaded/started from the VB6 Add-in Manager. It creates a little button on the toolbar that will perform a full compile of the existing project you have open, and then modify the new executable to have the proper version and build numbers.