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

Full Spectrum Warrior: Ten Hammers · handler “Full Spectrum Warrior: Ten Hammers”

Version 1 (current)

Release notes

release

Released
Size
2.3 MB
Downloads
34
Check
Verified
SHA-256
3412095223a0f4a860e2b78ac3a1afd571d922db8a4844e17f4bf9bb5d8a6a94
Download v1 (.nc)All versions

Files 7

PathSize
Full Spectrum Warrior Ten Hammers/d3d9.dll168 KB
Full Spectrum Warrior Ten Hammers/d3d9.ini1.1 KB
Full Spectrum Warrior Ten Hammers/dinput81.dll2.3 MB
Full Spectrum Warrior Ten Hammers/FullSpectrumWarriorTenHammersFOVFix.asi1.2 MB
Full Spectrum Warrior Ten Hammers/FullSpectrumWarriorTenHammersFOVFix.ini75 B
Full Spectrum Warrior Ten Hammers/winmm.dll2.3 MB
handler.js4.8 KB

handler.js

Plain text
Hub.Handler.Version = 1; // Released at https://hub.splitscreen.me/ on Sat Feb 07 2026 22:27:24 GMT+0000 (Coordinated Universal Time).
Hub.Handler.Id = "ktypJ4w9bwdGb9mxv";
Hub.Maintainer.Name = "birden";
Hub.Maintainer.Id = "rRycxSn253ZCjQy5C";

Game.FileSymlinkCopyInstead = ["language.cfg"];
Game.FileSymlinkExclusions = ["xinput9_1_0.dll", "d3d9.dll", "d3d9.ini", "dinput8.dll", "FullSpectrumWarriorTenHammersFOVFix.asi", "FullSpectrumWarriorTenHammersFOVFix.ini"];
Game.KillMutex = ["Full Spectrum Warrior 2"];
Game.ExecutableName = "fsw2.exe";
Game.GameName = "Full Spectrum Warrior Ten Hammers";
Game.GUID = "Full Spectrum Warrior Ten Hammers";
Game.SymlinkExe = false;
Game.SymlinkGame = true;
Game.SymlinkFolders = false;
Game.KeepSymLinkOnExit = false;
Game.MaxPlayers = 4;
Game.HandlerInterval = 100;
Game.Hook.ForceFocus = false;
Game.Hook.ForceFocusWindowName = "Full Spectrum Warrior: Ten Hammers";
Game.Hook.DInputEnabled = false;
Game.Hook.XInputEnabled = true;
Game.Hook.XInputReroute = false;
Game.Hook.CustomDllEnabled = false;
Game.XInputPlusDll = ["xinput9_1_0.dll", "xinput1_4.dll", "Dinput.dll", "Dinput8.dll"];
Game.Description =
  "Make a profile for each player and WAIT for the screen to resize into place before selecting one of them.\n\nGo to the controller config menu and set the controller axis and other controllers as they are all over the place.\n\nUse LAN to connec to each other.";

Game.PauseBetweenStarts = 10;
Game.PauseBetweenProcessGrab = 10;

Game.UserProfileSavePath = "AppData\\Roaming\\FSW2";
Game.SteamlessPatch = ["false", "--quiet --keepbind", "5000"];
Game.SetWindowHook = true;
Game.HookFocus = true;

Game.Play = function() {
  Context.CopyScriptFolder(Context.GetFolder(Nucleus.Folder.InstancedGameFolder));

  if (Context.PlayerID == 0) {
    var FIP = "7F 00 00 01";
  }
  if (Context.PlayerID == 1) {
    var FIP = "7F 00 00 02";
  }
  if (Context.PlayerID == 2) {
    var FIP = "7F 00 00 03";
  }
  if (Context.PlayerID == 3) {
    var FIP = "7F 00 00 04";
  }

  //IPs
  Context.PatchFileFindPattern(
    System.IO.Path.Combine(Context.RootFolder, "fsw2.exe"),
    System.IO.Path.Combine(Context.RootFolder, "fsw2.exe"),
    "C7 44 24 14 00 00 00 00 E8 80 01 DD FF 8B 0E 66",
    "C7 44 24 14" + FIP + "E8 80 01 DD FF 8B 0E 66",
    true
  );
  Context.PatchFileFindPattern(
    System.IO.Path.Combine(Context.RootFolder, "fsw2.exe"),
    System.IO.Path.Combine(Context.RootFolder, "fsw2.exe"),
    "C7 44 24 18 00 00 00 00 E8 6A 3C DD FF 8B 16 6A",
    "C7 44 24 18" + FIP + "E8 6A 3C DD FF 8B 16 6A",
    true
  );
  Context.PatchFileFindPattern(
    System.IO.Path.Combine(Context.RootFolder, "fsw2.exe"),
    System.IO.Path.Combine(Context.RootFolder, "fsw2.exe"),
    "00 00 00 00 E8 89 FE DD FF 8B 0E 66 89 44 24 0E",
    FIP + "E8 89 FE DD FF 8B 0E 66 89 44 24 0E",
    true
  );
  Context.PatchFileFindPattern(
    System.IO.Path.Combine(Context.RootFolder, "fsw2.exe"),
    System.IO.Path.Combine(Context.RootFolder, "fsw2.exe"),
    "C7 44 24 18 00 00 00 00 E8 E9 3B DD FF 8B 16 6A",
    "C7 44 24 18" + FIP + "E8 E9 3B DD FF 8B 16 6A",
    true
  );

  //no reg found. needs any reg patch also
  Context.PatchFileFindPattern(
    System.IO.Path.Combine(Context.RootFolder, "fsw2.exe"),
    System.IO.Path.Combine(Context.RootFolder, "fsw2.exe"),
    "74 1B 8B 14 24 52 FF 15 10 00 87 00 32 C0 8B 4C",
    "EB 1B 8B 14 24 52 FF 15 10 00 87 00 32 C0 8B 4C",
    true
  );

  var savePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\FullSpectrumWarriorTenHammersFOVFix.ini";
  Context.ModifySaveFile(savePath, savePath, Nucleus.SaveType.INI, [new Nucleus.IniSaveInfo("Settings", "Width", Context.Width), new Nucleus.IniSaveInfo("Settings", "Height", Context.Height)]);

  var savePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\XInputPlus.ini";
  Context.ModifySaveFile(savePath, savePath, Nucleus.SaveType.INI, [
    new Nucleus.IniSaveInfo("X2DInput", "EnableX2Dinput", true),
    new Nucleus.IniSaveInfo("X2DInput", "RS_X", "X_Rot"),
    new Nucleus.IniSaveInfo("X2DInput", "RS_Y", "Z_Axis"),
    new Nucleus.IniSaveInfo("X2DInput", "LT", "Button5"),
    new Nucleus.IniSaveInfo("X2DInput", "RT", "Button6"),
    new Nucleus.IniSaveInfo("X2DInput", "LB", "POV_DOWN"),
    new Nucleus.IniSaveInfo("X2DInput", "RB", "POV_LEFT")
  ]);

  var savePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\XInputPlus.ini";
  Context.ModifySaveFile(savePath, savePath, Nucleus.SaveType.INI, [
    new Nucleus.IniSaveInfo("ControllerNumber", "Controller1", Context.GamepadId),
    new Nucleus.IniSaveInfo("ControllerNumber", "Controller2", Context.GamepadId),
    new Nucleus.IniSaveInfo("ControllerNumber", "Controller3", Context.GamepadId),
    new Nucleus.IniSaveInfo("ControllerNumber", "Controller4", Context.GamepadId)
  ]);
};