
Sonic Adventure 2: Battle Network is a netplay mod for Sonic Adventure 2 PC which is still very much in early development, and not a Sonic/Mega Man Battle Network crossover, unfortunately.
Originally a stand-alone program, SA2:BN now utilizes the SA2 Mod Loader to check for changed player and input values and synchronizes them with another instance of SA2 over the internet. It also now uses an oh so very slightly modified version of the SFML networking library.
I just changed a line or two to
It is currently in very early stages (it would probably classify as a prototype or proof-of-concept), but so far supports Action Race and Shooting. Treasure Hunting will work if you don't mind emeralds being completely desynced. Anything I didn't mention probably isn't supported either (kart race for example).
I owe a huge thanks to MainMemory for helping me out with a lot of things (such as enabling me to run multiple instances of SA2).
On the same token, let me be clear here. MainMemory did all of the reverse engineering. Without his work, this would not have been possible simply because I wouldn't even know where to start with a disassembly and the like. Not to mention the executable had encrypted data which would make it crash if you tried to attach Cheat Engine's debugger... which MainMemory also cracked. The closest thing I got to reverse engineering was finding the input structure of which MainMemory has already documented for SADX (it's pretty much the same).
And with that, I also have to thank everyone who worked on the cheat table, Sonickidnextgen who wrote the (original) socket library and helped me be less derp at programming (It's still a mess. I'LL CLEAN IT UP LATER I SWEAR!), and everyone who helped me test it. Couldn't have done it without you guys!
Media:
These are old screenshots.
Local testing
Splitscreen toggle
Requirements:
- Windows XP or newer.
- SA2 Mod Loader
- Visual C++ Redistributable for Visual Studio 2013 x86
(Make absolutely sure you download the 32-bit (x86) version regardless of whether or not you have a 64-bit operating system, as this is a 32-bit dll.) - An up and down stream of at least 16KB/sec is recommended. Haven't tested it recently though, so don't take my word for it.
Download:
Installation:
- Extract the SA2 Mod Loader to your SA2 folder, launch the Mod Manager, and click "Install loader"
- Extract the SA2 Battle Network archive to the "mods" folder.
- Re-open the Mod Manager if you closed it, or just click refresh if it was still open.
- Find "SA2 Battle Network" and enable it (by ticking the checkbox to the left)
- Check the "Console" checkbox at the bottom - this is absolutely required for netplay to function without the game freezing.
- If you have MainMemory's Character Select mod, disable it if you want spawn points in multiplayer to function correctly.
Usage:
- If you know how to run a program with command-line arguments, just scroll down to see the arguments.
- In Steam, right click on Sonic Adventure 2, and click "Properties", click the "Local Files" tab, and click "Browse Local Files..."
- Create a shortcut to sonic2app.exe and place it wherever you like
- Right click the shortcut and click Properties.
- In the "Target" box, at the end of the text, add a space followed by the arguments you want (e.g: "sonic2app.exe" -h 27015). Details below.
You must use that shortcut to launch the game in order for it to work. But I know what you're thinking. "Steam has launch options! Can't I just use that?" - but the answer is no. SA2 on Steam will always start the launcher first, so the command line arguments will go to the launcher and not the game.
Note: If you're trying to host and you don't use something like Evolve or Hamachi, you must forward ports on your router for both UDP and TCP protocols (for now). I won't go into detail on how to do this as there are many online resources that give detailed instructions already.
Command line arguments:
- --host (or -h) [port] - Hosts a server on the specified port. When in doubt, use 27015
- --connect (or -c) [address] [port] - Connects to the specified address on the specified port (it can resolve hostnames now!)
- --timeout (or -t) [timeout] - The connection timeout in milliseconds. Default is 15000, minimum is 1000. Currently non-functional.
- --no-specials - Disables special abilities in 2P mode entirely. It doesn't synchronize yet, so both players must use it.
- --keep-active - Keeps the game window active. In other words, it doesn't pause when you click on another program while in window mode. Also available in mod form.
Example: --connect 127.0.0.1 27015 --no-specials
Features:
- Toggle-able splitscreen ingame (Press L+R) (DO NOT use if splitscreen was not already on or the game may crash.)
- Input handler (this makes all the difference in the world)
- Synced upgrades if you want to cheat yourself a bounce bracelet and the like =P
Planned:
- Input handler rewrite 3: The Movie: The Game - Episode 2
- Treasure Hunting support =P
- Configurable 2player specials (ring count requirements, blacklist, etc; e.g speed up only, 50 ring requirement)
- Something everyone has wanted forever



02


