Right, I've had a play around with it. And unfortunately, it's not working yet.
The main issue with the databases seems to be the way in which we're moving the files.
<technical stuff>
In datafiles.c, we're calling MoveFileExA, which in turn calls SHGetFolderPathW. SHGetFolderPathW is usually located within shell32.dll. From what I can tell, Internet Explorer 4 used to ship with a file called shfolder.dll, which contained the SHGetFolderPathW routine. The following paragraph from MSDN sums it up:
On systems preceeding those including Shell32.dll version 5.0 (Windows Millennium Edition (Windows Me) and Windows 2000), SHGetFolderPath was obtained through SHFolder.dll, distributed with Microsoft Internet Explorer 4.0 and later versions. SHFolder.dll always calls the current platform's version of this function. If that fails, it will try to simulate the appropriate behavior. SHFolder.dll continues to be included for backward compatibility, though the function is now implemented in Shell32.dll.
From what I can see, and I shall admit, I haven't looked very far, this function simply does not exist in shell32.dll, and is not simulated by shfolder.dll, thus causing the database problems. Other projects seemed to be having exactly the same problem, namely TortoiseSVN, and because of it, they have taken the same approach as us.
</technical stuff>
I guess the alternative to get around that situation would be to use MySQL with UseRDB enabled. Probably not an ideal situation, and you'd get bombarded with messages about not being able to backup the databases.
Apart from that, everything seemed to load correctly. No DLL errors or access violations during start up. I have a copy of Anope compiled against the Visual C++ 8 runtimes (.NET 2.0 to me and you) if you want them. They seemed to work fine on the copy of Windows 98SE that I was running.
Sorry that this hasn't really helped much, but it goes a way to clarify the problems that we have experienced with working on older versions of Windows.
Edit: For reference purposes, and for anyone who may want to attempt to get Win98 support in the future, here's a small log of the issue.
00:00:50.262: Loaded "c:\windows\system\SHELL32.DLL" at address 0x7FCB0000 by thread 1. Successfully hooked module.
00:00:50.272: DllMain(0x7FCB0000, DLL_PROCESS_ATTACH, 0x00000000) in "c:\windows\system\SHELL32.DLL" called by thread 1.
00:00:50.281: DllMain(0x7FCB0000, DLL_PROCESS_ATTACH, 0x00000000) in "c:\windows\system\SHELL32.DLL" returned 1 (0x1) by thread 1.
00:00:50.292: LoadLibraryA("shell32.dll") returned 0x7FCB0000 by thread 1.
00:00:50.312: GetProcAddress(0x7FCB0000 [c:\windows\system\SHELL32.DLL], "SHGetFolderPathA") called from "c:\windows\system\WININET.DLL" at address 0x7021D711 and returned NULL by thread 1. Error: The specified module could not be found (126).
00:00:50.332: LoadLibraryA("shfolder.dll") called from "c:\windows\system\WININET.DLL" at address 0x7021D72F by thread 1.
00:00:50.456: Loaded "c:\windows\system\SHFOLDER.DLL" at address 0x71930000 by thread 1. Successfully hooked module.
00:00:50.466: DllMain(0x71930000, DLL_PROCESS_ATTACH, 0x00000000) in "c:\windows\system\SHFOLDER.DLL" called by thread 1.
00:00:50.475: DllMain(0x71930000, DLL_PROCESS_ATTACH, 0x00000000) in "c:\windows\system\SHFOLDER.DLL" returned 1 (0x1) by thread 1.
00:00:50.490: LoadLibraryA("shfolder.dll") returned 0x71930000 by thread 1.
00:00:50.517: GetProcAddress(0x71930000 [c:\windows\system\SHFOLDER.DLL], "SHGetFolderPathA") called from "c:\windows\system\WININET.DLL" at address 0x7021D73C and returned 0x7193280B by thread 1.
00:00:50.541: LoadLibraryA("shell32.dll") called from "c:\windows\system\SHFOLDER.DLL" at address 0x719317AB by thread 1.
00:00:50.551: LoadLibraryA("shell32.dll") returned 0x7FCB0000 by thread 1.
00:00:50.572: GetProcAddress(0x7FCB0000 [c:\windows\system\SHELL32.DLL], "SHGetFolderPathW") called from "c:\windows\system\SHFOLDER.DLL" at address 0x719317BD and returned NULL by thread 1. Error: The specified module could not be found (126).
[Edited on 23-6-2006 by heinz]