Downloading and Installing sc2kfix


Documentation version: 0.9-dev/2025-03-09

The latest release of the sc2kfix plugin can be downloaded from the releases page on the GitHub repository. Click on the "Download sc2kfix" link at the top of this page to open the releases page. The plugin is a single DLL file named winmm.dll.

  1. Download the latest release of the sc2kfix plugin. You can keep this file in your Downloads folder for now.
  2. Hey testers! If you want to try out the latest features as they're developed, check out the automated builds on our GitHub Actions page!
  3. If you are installing a fresh copy of SimCity 2000, insert your Special Edition CD and navigate to the CD drive. Open the WIN95 folder; there should be a folder inside called SC2K. Copy the SC2K folder to somewhere writable on your hard drive, like your desktop, your Documents folder, or a directory other than Program Files that you install games to.
  4. If you want to see the intro video and the WillTV interviews (Release 9 and newer, including 0.9-dev build 2025-03-08), create a folder in the SC2K folder that you copied to your hard drive called MOVIES and copy the .SMK video files from the CD's DATA folder into it.
  5. Copy the winmm.dll that you downloaded in the first step to the SC2K folder that you copied to your hard drive. You should now have a copy of winmm.dll alongside the game's simcity.exe executable.
  6. Optionally, create a shortcut to simcity.exe on your desktop or in your Start Menu for easier access. You can also add simcity.exe as a Non-Steam Game in your Steam library.
  7. If you are running the game on Linux with Wine or Proton, configure your launcher of choice with a DLL override for the winmm library to prefer "native, then built-in" DLL load order.

You are now ready to play SimCity 2000! When you first start the game, sc2kfix will prompt you for a default mayor name and an organization name. These are the "registration" names that the game shows when it launches. The default mayor name is also used to fill out the mayor name in the New City dialog. You can change these at any time in the sc2kfix Settings dialog (see the Configuring sc2kfix section).

Configuring sc2kfix


Every feature and change in sc2kfix can be configured through an in-game settings dialog. You can open the settings dialog from the new sc2kfix Settings button on the main menu, or while playing the game from the Options menu on the menu bar. Settings with an asterisk (*) next to them take effect when the game is restarted.

Pressing the OK button immediately saves your settings and closes the dialog. The Cancel button closes the dialog without saving any settings. The Defaults and Vanilla buttons load (but do not immediately save) the default sc2kfix settings and a minimal, vanilla SimCity 2000 experience respectively.

Command-Line Arguments

sc2kfix adds the following arguments that can be passed to SimCity 2000 when starting it via a shortcut, a launcher (including Steam), or a command line:

Game Settings

Quality of Life / Performance Settings

sc2kfix Core Settings

Interface Settings

Gameplay Mod Settings (In Development)

All settings in this category default to off, and require the game to be restarted to take effect.

Building from Source


sc2kfix has been developed using Visual C++ 2022 and is designed to be built with a current Microsoft C++ compiler and build system. If you want to run the latest cutting-edge version of sc2kfix, you should download the latest CI artifact from the GitHub Actions page. That being said, if you want to download the source code and built it yourself, here are our recommendations:

After cloning the sc2kfix Git repository, you can open the Visual Studio solution file and immediately build the solution to produce the winmm.dll output file that contains the sc2kfix plugin. Copy the winmm.dll output file from the Release directory to your SC2K directory and run SIMCITY.EXE to play the game with your newly-built sc2kfix plugin.

Using the sc2kfix Console


This section is a work in progress.

sc2kfix implements a development and debugging console that can be activated by launching the game with the -console command-line argument. This console integrates a simple scripting system with an interactive command interpreter that will be familiar to anyone with network administration experience. The syntax of the console command interpreter is not entirely unlike that of a Juniper JUNOS or Cisco IOS system.

Suffixing any command with a question mark (?) as an argument will return a list of subcommands or parameters for that command. You can also type a question mark (or the word "help") at the root of the command tree to see a list of all root level commands available:

> ?
  clear      Clear all variables
  echo       Print to console
  help       Display this help
  run        Run console script
  set        Modify game and plugin behaviour
  show       Display various game and plugin information
  unset      Modify game and plugin behaviour
> run ?
  run <filename>   Executes a file as a series of console commands
> show microsim ?
  show microsim <id>   Show specific microsim data
  show microsim list   Show list of provisioned microsims
> _

Memory Protection

The sc2kfix console does its best to protect you from yourself, insofar as any command that takes user parameters to read from/write to memory will catch invalid memory addresses and fail softly, reporting a caught segmentation fault instead of crashing. The console cannot protect you from writing random values to valid memory, however, so if you plan on setting memory values, do note that sc2kfix is not able to stop writes that may corrupt game state and/or any saved cities you may have loaded.

> show memory
Usage:
  show memory <address> [operand_size] [range_size]
    <address>: Address in hexadecimal
    [operand_size]: Optional, one of: { byte, word, dword, range } (default dword)
    [range_size]: Size of range if operand_size is "range" (default 16)
> show memory 0x4CA444
0x004CA444: (dword) 0x000C3661
> show memory 0x1234
[ERROR] CORE: Segmentation fault caught. Don't do that again.
> _

Questions, Comments and Suggestions


This section has not been written yet. Please see the README.md file in the GitHub repository.