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

Lost Planet: Extreme Condition - Colonies Edition · handler “Lost Planet 1 Colonies Edition”

Version 1

Release notes

first release

Released
Size
574 KB
Downloads
35
Check
Verified
SHA-256
76aef9919ba90c53ec55c84f947723d7d4f20b1b2b3f062f350fe1806a0008e6
Download v1 (.nc)All versions

Files 31

PathSize
handler.js14 KB
LostPlanetColonies/Info.txt940 B
LostPlanetColonies/lpeccpatch.ini742 B
LostPlanetColonies/winmm.dll99 KB
LostPlanetColonies/xlive.dll1.0 MB
LostPlanetColonies/XLiveLessNess/profile/defaults/10040002.dat4 B
LostPlanetColonies/XLiveLessNess/profile/defaults/10040003.dat4 B
LostPlanetColonies/XLiveLessNess/profile/defaults/10040004.dat4 B
LostPlanetColonies/XLiveLessNess/profile/defaults/10040005.dat4 B
LostPlanetColonies/XLiveLessNess/profile/defaults/10040006.dat4 B
LostPlanetColonies/XLiveLessNess/profile/defaults/1004000B.dat4 B
LostPlanetColonies/XLiveLessNess/profile/defaults/1004000C.dat4 B
LostPlanetColonies/XLiveLessNess/profile/defaults/1004000D.dat4 B
LostPlanetColonies/XLiveLessNess/profile/defaults/1004000E.dat4 B
LostPlanetColonies/XLiveLessNess/profile/defaults/10040012.dat4 B
LostPlanetColonies/XLiveLessNess/profile/defaults/10040013.dat4 B
LostPlanetColonies/XLiveLessNess/profile/defaults/10040015.dat4 B
LostPlanetColonies/XLiveLessNess/profile/defaults/10040018.dat4 B
LostPlanetColonies/XLiveLessNess/profile/defaults/1004001D.dat4 B
LostPlanetColonies/XLiveLessNess/profile/defaults/1004001E.dat4 B
LostPlanetColonies/XLiveLessNess/profile/defaults/10040022.dat4 B
LostPlanetColonies/XLiveLessNess/profile/defaults/10040023.dat4 B
LostPlanetColonies/XLiveLessNess/profile/defaults/10040024.dat4 B
LostPlanetColonies/XLiveLessNess/profile/defaults/10040026.dat4 B
LostPlanetColonies/XLiveLessNess/profile/defaults/10040027.dat4 B
LostPlanetColonies/XLiveLessNess/profile/defaults/10040028.dat4 B
LostPlanetColonies/XLiveLessNess/profile/defaults/10040029.dat4 B
LostPlanetColonies/XLiveLessNess/profile/defaults/10040038.dat4 B
LostPlanetColonies/XLiveLessNess/profile/defaults/10040039.dat4 B
LostPlanetColonies/XLiveLessNess/profile/defaults/402C0011.dat2 B
LostPlanetColonies/XLiveLessNess/profile/defaults/4064000F.dat2 B

handler.js

Plain text
Hub.Handler.Version = 1; // Released at https://hub.splitscreen.me/ on Mon Aug 03 2026 01:38:19 GMT+0000 (Coordinated Universal Time).
Hub.Handler.Id = "tjm7PGh3XuEqkHHKH";
Hub.Maintainer.Name = "Talos91";
Hub.Maintainer.Id = "eeL7HAz8zJovChWw4";

var answers1 = ["LostPlanetColoniesDX9", "LostPlanetColoniesDX10"];
var answers2 = ["Yes", "No"];
Game.AddOption("Lost Planet Colonies exe", "Select the game's exe to use. The DX10 exe does not work with multiple keyboards/mice.", "API", answers1);
Game.AddOption("Skip logos at startup?", "Applies the custom patch to skip intro logos by LuKeStorm.", "Logos", answers2);

Game.ExecutableContext = ["nativePC"];
Game.KillMutex = ["Type:Mutant|sPlanetMain"];
Game.DirExclusions = ["XLiveLessNess"];
Game.FileSymlinkExclusions = ["steam_appid.txt", "xlive.dll", "winmm.dll", "lpeccpatch.ini", "xinput1_3.dll"];
Game.FileSymlinkCopyInstead = ["LostPlanetColoniesDX10.exe", "LPCLauncher.exe", "LostPlanetColoniesDX9.exe.cfg", "LostPlanetColoniesDX10.exe.cfg", "dinput8.dll"];
Game.NeedsSteamEmulation = false;
Game.CreateSteamAppIdByExe = true;
Game.HandlerInterval = 100;
Game.SymlinkExe = false;
Game.SymlinkGame = true;
Game.SymlinkFolders = true;
Game.ExecutableName = "LostPlanetColoniesDX9.exe";
Game.SteamID = "45720";
Game.GUID = "Lost Planet Colonies";
Game.GameName = "Lost Planet: Extreme Condition Colonies Edition";
Game.MaxPlayers = 16;
Game.MaxPlayersOneMonitor = 16;
Game.LauncherTitle = "XLLN #1 v1.6.0.1";
Game.SetTopMostAtEnd = true;
Game.Hook.ForceFocus = true;
Game.Hook.ForceFocusWindowName = "Lost Planet Colonies Ver 1.0.2.0";
Game.HasDynamicWindowTitle = true;
Game.ResetWindows = true;
Game.SetForegroundWindowElsewhere = true;
Game.Hook.DInputEnabled = false;
Game.Hook.XInputEnabled = false;
Game.Hook.XInputReroute = false;
Game.XInputPlusDll = ["xinput1_3.dll"];
Game.Hook.CustomDllEnabled = false;
Game.UserProfileSavePath = "AppData\\Local\\CAPCOM\\lostplanetcolonies";
Game.Description =
  "IMPORTANT: For the latest Colonies Edition that uses GFWL in Steam not the regular Extreme Condition. Make sure the game launches and works correctly in your PC before using this. Create a GFWL battle online game in one instance and join in the others using quick match or custom match. If you use keyboards/mice after all the instances have launched, resized and positioned correctly, press the END key once to lock the input for all instances to have their own cursor, you need to left click each mouse to make the emulated cursors appear after locking the input. Press the END key again to unlock the input when you finish playing. You can also use CTRL+Q to close Nucleus and all its instances when the input is unlocked. Connecting the instances in the same PC is only possible thanks to the great work of the XLiveLessNess dev: https://gitlab.com/GlitchyScripts/xlivelessness.";
Game.PauseBetweenContextAndLaunch = 2;
Game.PauseBetweenProcessGrab = 5;
Game.PauseBetweenStarts = 25;

//USS deprecated options:

Game.HookSetCursorPos = false;
Game.HookGetCursorPos = false;
Game.HookGetKeyState = false;
Game.HookGetAsyncKeyState = false;
Game.HookGetKeyboardState = false;
Game.HookFilterRawInput = false;
Game.HookFilterMouseMessages = false;
Game.HookUseLegacyInput = false;
Game.HookDontUpdateLegacyInMouseMsg = false;
Game.HookMouseVisibility = false;

Game.SendNormalMouseInput = false;
Game.SendNormalKeyboardInput = false;
Game.SendScrollWheel = false;
Game.ForwardRawKeyboardInput = false;
Game.ForwardRawMouseInput = false;
Game.HookReRegisterRawInput = false;
Game.HookReRegisterRawInputMouse = false;
Game.HookReRegisterRawInputKeyboard = false;
Game.DrawFakeMouseCursor = false;

//ProtoInput:

Game.SupportsMultipleKeyboardsAndMice = true;

Game.ProtoInput.InjectStartup = false;
Game.ProtoInput.InjectRuntime_RemoteLoadMethod = false;
Game.ProtoInput.InjectRuntime_EasyHookMethod = true;
Game.ProtoInput.InjectRuntime_EasyHookStealthMethod = false;

Game.LockInputAtStart = false;
Game.LockInputSuspendsExplorer = true;
Game.ProtoInput.FreezeExternalInputWhenInputNotLocked = false;
Game.LockInputToggleKey = 0x23;

Game.ProtoInput.RenameHandlesHook = false;
Game.ProtoInput.RenameHandles = [];
Game.ProtoInput.RenameNamedPipes = [];

Game.ProtoInput.RegisterRawInputHook = false;
Game.ProtoInput.GetRawInputDataHook = false;
Game.ProtoInput.MessageFilterHook = true;
Game.ProtoInput.GetCursorPosHook = false;
Game.ProtoInput.SetCursorPosHook = false;
Game.ProtoInput.GetKeyStateHook = false;
Game.ProtoInput.GetAsyncKeyStateHook = false;
Game.ProtoInput.GetKeyboardStateHook = false;
Game.ProtoInput.CursorVisibilityHook = false;
Game.ProtoInput.ClipCursorHook = true;
Game.ProtoInput.FocusHooks = true;
Game.ProtoInput.DrawFakeCursor = false;
Game.ProtoInput.ClipCursorHookCreatesFakeClip = false;
Game.ProtoInput.EnableToggleFakeCursorVisibilityShortcut = false;
Game.ProtoInput.DontShowCursorWhenImageUpdated = true;

Game.ProtoInput.RawInputFilter = false;
Game.ProtoInput.MouseMoveFilter = false;
Game.ProtoInput.MouseActivateFilter = true;
Game.ProtoInput.WindowActivateFilter = false;
Game.ProtoInput.WindowActvateAppFilter = false;
Game.ProtoInput.MouseWheelFilter = true;
Game.ProtoInput.MouseButtonFilter = false;
Game.ProtoInput.KeyboardButtonFilter = false;

Game.ProtoInput.SendMouseWheelMessages = true;
Game.ProtoInput.SendMouseButtonMessages = true;
Game.ProtoInput.SendMouseMovementMessages = true;
Game.ProtoInput.SendKeyboardButtonMessages = true;
Game.ProtoInput.XinputHook = true;
Game.ProtoInput.UseOpenXinput = true;
Game.ProtoInput.UseDinputRedirection = false;
Game.ProtoInput.DinputDeviceHook = false;
Game.ProtoInput.DinputHookAlsoHooksGetDeviceState = false;

Game.ProtoInput.EnableFocusMessageLoop = false;
//Game.ProtoInput.FocusLoopIntervalMilliseconds = 40000;
//Game.ProtoInput.FocusLoop_WM_ACTIVATE = true;
//Game.ProtoInput.FocusLoop_WM_ACTIVATEAPP = true;
//Game.ProtoInput.FocusLoop_WM_NCACTIVATE = true;
//Game.ProtoInput.FocusLoop_WM_SETFOCUS = true;
//Game.ProtoInput.FocusLoop_WM_MOUSEACTIVATE = true;
Game.ProtoInput.BlockedMessages = [0x0008, 0x02a3, 0x02a1]; //Blocks WM_KILLFOCUS, WM_MOUSEHOVER and WM_MOUSELEAVE.

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

  Context.CopyFolder(Context.ScriptFolder + "\\XLiveLessNess", Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\XLiveLessNess");

  var number = Context.PlayerID + 1;
  var port = Context.PlayerID + 20;
  var VideoConfig = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\XLiveLessNess\\xlln-config-" + number + ".ini";
  Context.ModifySaveFile(VideoConfig, VideoConfig, Nucleus.SaveType.INI, [
    new Nucleus.IniSaveInfo("XLLN-Config-Version:1.6.0.1", "xlive_username_p1", Context.Nickname),
    new Nucleus.IniSaveInfo("XLLN-Config-Version:1.6.0.1", "xlive_user_live_enabled_p1", 1),
    new Nucleus.IniSaveInfo("XLLN-Config-Version:1.6.0.1", "xlive_user_online_enabled_p1", 1),
    new Nucleus.IniSaveInfo("XLLN-Config-Version:1.6.0.1", "xlive_user_auto_login_p1", 1)
  ]);

  var api = Context.Options["API"];
  var logos = Context.Options["Logos"];

  if (api == "LostPlanetColoniesDX9") {
    //Context.DPIHandling = Nucleus.DPIHandling.InvScaled;
  }

  if (api == "LostPlanetColoniesDX10") {
    Game.ExecutableToLaunch = "LostPlanetColoniesDX10.exe";

    Game.ExecutableName = "LostPlanetColoniesDX10.exe";
  }

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

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

  var VideoConfig = Context.NucleusUserRoot + "\\AppData\\Local\\CAPCOM\\lostplanetcolonies\\config.ini";
  Context.ModifySaveFile(VideoConfig, VideoConfig, Nucleus.SaveType.INI, [
    new Nucleus.IniSaveInfo("DISPLAY", "Resolution", Context.Width + "x" + Context.Height),
    new Nucleus.IniSaveInfo("DISPLAY", "FullScreen", "OFF"),
    new Nucleus.IniSaveInfo("DISPLAY", "AdjustAspect", "OFF")
  ]);

  if (Context.NumControllers < 5) {
    //><

    Game.ProtoInput.XinputHook = false;
    Game.ProtoInput.UseOpenXinput = false;

    var savePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\XInputPlus.ini";
    Context.ModifySaveFile(savePath, savePath, Nucleus.SaveType.INI, [new Nucleus.IniSaveInfo("Vibration", "EnableTriggerVibration", true)]);
  } else {
    System.IO.File.Delete(Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\xinput1_3.dll");

    Game.ProtoInput.XinputHook = true;
    Game.ProtoInput.UseOpenXinput = true;
  }

  Game.ProtoInput.OnInputLocked = function() {
    for (var i = 0; i < PlayerList.Count; i++) {
      var player = PlayerList[i];

      ProtoInput.InstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.GetCursorPosHookID);
      ProtoInput.InstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.SetCursorPosHookID);
      ProtoInput.InstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.GetKeyStateHookID);
      ProtoInput.InstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.GetAsyncKeyStateHookID);
      ProtoInput.InstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.GetKeyboardStateHookID);
      ProtoInput.InstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.CursorVisibilityStateHookID);
      ProtoInput.InstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.GetRawInputDataHookID);
      ProtoInput.InstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.RegisterRawInputHookID);
      //ProtoInput.InstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.MessageFilterHookID);

      //Avoid the mouse move filter unless absolutely necessary as it can massively affect performance if the game gets primary input from mouse move messages.
      //ProtoInput.EnableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.MouseMoveFilterID);

      ProtoInput.EnableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.RawInputFilterID);
      //ProtoInput.EnableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.MouseActivateFilterID);
      ProtoInput.EnableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.WindowActivateFilterID);
      ProtoInput.EnableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.WindowActivateAppFilterID);
      //ProtoInput.EnableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.MouseWheelFilterID);
      ProtoInput.EnableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.MouseButtonFilterID);
      ProtoInput.EnableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.KeyboardButtonFilterID);

      ProtoInput.SetDrawFakeCursor(player.ProtoInputInstanceHandle, true);

      ProtoInput.StartFocusMessageLoop(player.ProtoInputInstanceHandle, 0, true, true, false, false, true);

      System.Threading.Thread.Sleep(1000);

      ProtoInput.StopFocusMessageLoop(player.ProtoInputInstanceHandle);
    }
  };

  Game.ProtoInput.OnInputUnlocked = function() {
    for (var i = 0; i < PlayerList.Count; i++) {
      var player = PlayerList[i];

      ProtoInput.UninstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.GetCursorPosHookID);
      ProtoInput.UninstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.SetCursorPosHookID);
      ProtoInput.UninstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.GetKeyStateHookID);
      ProtoInput.UninstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.GetAsyncKeyStateHookID);
      ProtoInput.UninstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.GetKeyboardStateHookID);
      ProtoInput.UninstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.CursorVisibilityStateHookID);
      ProtoInput.UninstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.GetRawInputDataHookID);
      ProtoInput.UninstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.RegisterRawInputHookID);
      //ProtoInput.UninstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.MessageFilterHookID);

      ProtoInput.DisableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.RawInputFilterID);
      ProtoInput.DisableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.MouseMoveFilterID);
      //ProtoInput.DisableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.MouseActivateFilterID);
      ProtoInput.DisableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.WindowActivateFilterID);
      ProtoInput.DisableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.WindowActivateAppFilterID);
      //ProtoInput.DisableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.MouseWheelFilterID);
      ProtoInput.DisableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.MouseButtonFilterID);
      ProtoInput.DisableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.KeyboardButtonFilterID);

      ProtoInput.StartFocusMessageLoop(player.ProtoInputInstanceHandle, 8000, true, true, false, false, false);
    }
  };
};