Skip to content

devloic/Simitone

 
 

Repository files navigation

Simitone — Linux Port

This is a Linux port of riperiperi/Simitone, the alternative C# frontend for The Sims 1 based on FreeSO.

The upstream project only supports Windows. This fork makes the Simitone.Windows entry project build and run natively on Linux (and, in principle, macOS) on .NET 9 + MonoGame DesktopGL, with no Wine required at runtime.

You still need a legitimate copy of The Sims: Complete Collection (or equivalent install with GameData/, UserData/). Simitone reads the original game's data files — it does not redistribute any assets.


What this fork changes

Area Change
Simitone.Windows.csproj TargetFramework is now conditional: net9.0-windows on Windows, net9.0 everywhere else. UseWindowsForms, MonoGame.Framework.WindowsDX, the FSO.IDE project reference, the ApplicationIcon, and the CopyMonoGameDLLs build target are gated to Windows only. OutputType changed from WinExe to Exe.
Program.cs Removed System.Windows.Forms and System.Drawing. BitmapReader now uses SixLabors.ImageSharp for cross-platform image decoding. Fatal-error MessageBox replaced with Console.Error. The -ide flag is wrapped in #if WINDOWS. FSOEnvironment.Linux is now set from the detected platform instead of being hard-coded false.
GameStartProxy.cs Dropped stray using System.Windows.Forms;.
run-linux.sh New helper script that builds/launches the game with sensible defaults.

All transitive FreeSO projects (FSO.Client, FSO.UI, FSO.SimAntics, FSO.LotView, etc.) were already net9.0 — only the entry project needed work.

FSO.IDE (the in-game IFF editor, invoked with -ide) is not built on Linux because it is WinForms-based. The -ide flag prints a notice and continues.


Building on Linux

Prerequisites

  • .NET SDK 9.0 (dotnet --list-sdks should show a 9.x entry)
  • Standard build tools (git, bash)
  • Runtime libraries pulled in automatically by MonoGame.DesktopGL — on Debian/Ubuntu/Mint these are typically already present:
    • SDL2, OpenAL — bundled inside the published build under runtimes/linux-x64/native/
    • OpenGL (libGL.so.1)

Clone (with the FreeSO submodule)

git clone --recurse-submodules https://github.com/devloic/Simitone.git
cd Simitone

or, if you already cloned without --recurse-submodules:

git submodule update --init --depth 1

Build

dotnet build -c Release Client/Simitone/Simitone.Windows/Simitone.Windows.csproj

The output lands in Client/Simitone/Simitone.Windows/bin/Release/net9.0/. Expect ~750 NU1701 warnings from legacy .NET Framework NuGet packages (harmless) and 0 errors.


Running

Point Simitone at your The Sims 1 install

Pick whichever is convenient:

a) Symlink the install as game1/ next to the binary

ln -sfn "/path/to/The Sims" Client/Simitone/Simitone.Windows/bin/Release/net9.0/game1

If the install lives inside a Wine prefix, that works fine — Simitone reads the files directly and never invokes Wine:

ln -sfn "$HOME/.wine/drive_c/Program Files (x86)/Maxis/The Sims" \
        Client/Simitone/Simitone.Windows/bin/Release/net9.0/game1

b) Pass -path at launch

dotnet Client/Simitone/Simitone.Windows/bin/Release/net9.0/Simitone.dll \
       -gl -path"/path/to/The Sims/"

c) Use the helper script

./run.sh                                   # auto-detects common locations
TS1_PATH="/path/to/The Sims" ./run.sh      # explicit
./run.sh -3d -aa -hz144                    # extra flags forwarded to Simitone

run.sh builds the project if needed, finds your TS1 install (including inside a Wine prefix), symlinks it as game1/ next to the binary, and launches with the OpenGL backend.

Useful flags

Flag Meaning
-gl Force OpenGL backend. Recommended on Linux.
-3d Enable 3D rendering.
-aa Antialiasing.
-jit AOT-compile object SimAntics.
-hz<N> Target refresh rate, e.g. -hz144.
-lang<N> Language code.
-path<dir> TS1 install path.
-nosound Avoid on Linux — there is a pre-existing null deref in UINeighbourhoodSelectionPanel when audio is disabled.

Known issues / caveats

  • -nosound crashes at the neighborhood selection screen (pre-existing upstream bug, unrelated to the port).
  • No -ide on Linux — FSO.IDE is WinForms and excluded from the Linux build.
  • The native apphost (./Simitone) needs DOTNET_ROOT exported on some distros if you didn't install .NET in /usr/share/dotnet. The dotnet Simitone.dll form always works.
  • System.Drawing.Common is not in the dependency graph on Linux; any future code that pulls it in will need an ImageSharp equivalent.

Upstream

If you're on Windows, use the official build:

This fork's goal is narrowly to keep a working Linux build. Functional changes (gameplay, content) belong upstream.


Why "Simitone"?

Simitone → Semitone → musical term → C# → a note.

(Original explanation preserved from the upstream README.)

About

Linux port of Simitone (alternative C# frontend for The Sims 1, based on FreeSO). Builds and runs natively on .NET 9 + MonoGame DesktopGL — no Wine required.

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • C# 99.5%
  • Shell 0.5%