Skip to content
Beta: this is a preview of the new SplitScreen.Me. Data may be reset before launch.

Bionic Commando · handler “Bionic Commando 2009”

Version 1 (current)

Release notes

First Release

Released
Size
752 KB
Downloads
230
Check
Verified
SHA-256
ee6df5bb04b1d3c558e97a9b5a0fb8d6757264a2e6544d8e230ef49a53b8ea9b
Download v1 (.nc)All versions

Files 5

PathSize
BionicCommando/BCFix.ini53 B
BionicCommando/BCFix32.dll1.6 MB
BionicCommando/BCFix32.exe954 KB
BionicCommando/EasyHook32.dll225 KB
handler.js4.9 KB

handler.js

Plain text
Hub.Handler.Version = 1; // Released at https://hub.splitscreen.me/ on Sat Jun 15 2024 20:10:02 GMT+0000 (Coordinated Universal Time).
Hub.Handler.Id = "ChW4w8x4D6hRyketb";
Hub.Maintainer.Name = "Talos91";
Hub.Maintainer.Id = "eeL7HAz8zJovChWw4";

Game.ExecutableContext = ["binkw32.dll"];
Game.KillMutex = ["Type:Event|Grin Engine Game"];
Game.DirSymlinkExclusions = ["data\\settings"];
Game.FileSymlinkExclusions = ["steam_api.dll", "steam_appid.txt", "steam_interfaces.txt", "local_save.txt", "EasyHook32.dll", "BCFix32.dll", "BCFix32.exe", "BCFix.ini", "xinput1_3.dll"];
Game.FileSymlinkCopyInstead = ["binkw32.dll", "renderer_settings.xml", "controls.xml", "context.xml", "dieselx.cfg", "NxCooking.dll"];
Game.RequiresAdmin = false;
Game.UseNucleusEnvironment = true;
Game.UseGoldberg = true;
Game.GoldbergNoLocalSave = true;
Game.HandlerInterval = 100;
Game.SymlinkExe = false;
Game.SymlinkGame = true;
Game.SymlinkFolders = true;
Game.ExecutableName = "bionic_commando.exe";
Game.SteamID = "21670";
Game.GUID = "Bionic Commando";
Game.GameName = "Bionic Commando (2009)";
Game.MaxPlayers = 8;
Game.MaxPlayersOneMonitor = 8;
Game.LauncherTitle = "";
Game.ExecutableToLaunch = "BCFix32.exe";
Game.HideTaskbar = false;
Game.NotTopMost = true;
Game.StartArguments = "-nointro -s";
Game.Hook.ForceFocus = true;
Game.Hook.ForceFocusWindowName = "Bionic Commando";
Game.FakeFocus = true;
Game.FakeFocusInterval = 8000;
Game.SendFakeFocusMsg = true;
Game.KeyboardPlayerSkipFakeFocus = true;
Game.HookFocus = false;
Game.ResetWindows = true;
Game.Hook.DInputEnabled = false;
Game.Hook.XInputEnabled = true;
Game.Hook.XInputReroute = false;
Game.XInputPlusDll = ["xinput1_3.dll"];
Game.Hook.CustomDllEnabled = false;
Game.SupportsKeyboard = true;
Game.UserProfileSavePath = "AppData\\Roaming\\Goldberg SteamEmu Saves\\21670\\remote";
Game.UserProfileSavePathNoCopy = true;
Game.Description =
  "Host a  multiplayer LAN game in the first instance and join in the others. Alt-tab to and click on the keyboard instance in the title screen to control it with kb/m, make sure you don't that for gamepad instances.";
Game.PauseBetweenProcessGrab = 20;
Game.PauseBetweenContextAndLaunch = 5;
Game.PauseBetweenStarts = 25;

Game.Play = function() {
  var path = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\data\\settings\\renderer_settings.xml";
  Context.ChangeXmlAttributeValue(path, "//d3d_device", "resolution", Context.Width + " " + Context.Height);
  Context.ChangeXmlAttributeValue(path, "//d3d_device", "windowed", "true");
  Context.ChangeXmlAttributeValue(path, "//d3d_device", "aspect_ratio", Context.AspectRatioDecimal);

  //Context.EditRegKey("HKEY_LOCAL_MACHINE", "SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters", "Hostname", Context.Nickname, Nucleus.RegType.String);

  var savePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\XInputPlus.ini";
  Context.ModifySaveFile(savePath, savePath, Nucleus.SaveType.INI, [new Nucleus.IniSaveInfo("Vibration", "EnableTriggerVibration", true)]);

  var interfaces = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\steam_interfaces.txt";
  var lines = [
    "SteamClient008",
    "SteamGameServer009",
    "SteamUser012",
    "SteamFriends005",
    "SteamUtils004",
    "SteamMatchMaking007",
    "SteamMatchMakingServers001",
    "STEAMUSERSTATS_INTERFACE_VERSION006",
    "STEAMAPPS_INTERFACE_VERSION003",
    "SteamNetworking003",
    "STEAMREMOTESTORAGE_INTERFACE_VERSION002",
    "SteamMasterServerUpdater001"
  ];
  Context.WriteTextFile(interfaces, lines);

  var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\EasyHook32.dll");
  var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "EasyHook32.dll");
  System.IO.File.Copy(savePkgOrigin, savePath, true);

  var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\BCFix32.dll");
  var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "BCFix32.dll");
  System.IO.File.Copy(savePkgOrigin, savePath, true);

  var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\BCFix32.exe");
  var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "BCFix32.exe");
  System.IO.File.Copy(savePkgOrigin, savePath, true);

  var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\BCFix.ini");
  var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "BCFix.ini");
  System.IO.File.Copy(savePkgOrigin, savePath, true);

  var videoconfig = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\BCFix.ini");
  Context.ModifySaveFile(videoconfig, videoconfig, Nucleus.SaveType.INI, [
    new Nucleus.IniSaveInfo("Settings", "TargetHostname", Context.Nickname),
    new Nucleus.IniSaveInfo("Settings", "PortOffset", Context.PlayerID)
  ]);
};