First post, by kjliew
Since I am now fully committed to playing all 3 installments of Mechwarriors 2 series with 3D acceleration on QEMU, I also did some research on how to get into the multiplayer games. QEMU already delivered robust networking backends and frontend emulation of various models Ethernet adapters. For NetMech/3Dfx (Pentium/Wn9x version is known to be compatible), the local LAN play works right out of box due to its support of WinSock TCP in addition to WinSock IPX. As long as the VM instances are on the same IP subnet, they can see one another to host/join a game. Titanium MercsNet is a different story as it ditched the standard DirectPlay and go with propriety ANET2 libraries. It adds null-modem support but dropped TCP-based multiplayers in favor of Battle.Net service, but IPX remains.
With the help of IPXEMU, I managed to get both games working with IPX from within QEMU. IPXEMU seems to be simple enough and all one needs to do is to patch the relevant DLLs on the guest OS Win98SE. It already included a DLL patcher to patch DPWSOCKX.DLL, but forgot to include DPWSOCK.DLL which is the interface for WinSock 1.0 IPX used by NetMech/3Dfx. Hence, it is as simple as patching DPWSOCK.DLL similar to how DPWSOCKX.DLL was patched. The later was used by DXDIAG network DirectPlay test.
For Titanium MercsNet with its propriety ANET2 libraries, I had identified the DLL to patch - WIPX2.DLL. Thereafter, Titanium MercsNet works, yay! 😀
As far as my testing goes, they won't play over Internet. Or perhaps I haven't figured out how to make it play over Internet. Looking at the debug log from IPXEMU, it seemed that there were broadcasts to 255.255.255.255:8787 before the host/client found each other and started communicating at each IP address with various different ports. I guess that was probably the reason for them to be at the same IP subnet.
I am not savvy at networking/routing. If anyone has any ideas on how to make IPXEMU work over Internet, please feel free to chip in your ideas. Thanks!