Downloading and Installing sc2kfix
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.
- Download the latest release of the sc2kfix plugin. You can keep this file in your Downloads folder for now.
- 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!
- 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.
- If you want to see the intro video and the WillTV interviews (Release 9 and newer), 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.
- Copy the DLL files (winmm.dll, SDL3.dll, libfluidsynth-3.dll, sndfile.dll) from the ZIP archive 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 each DLL alongside the game's simcity.exe executable.
- If you have any mods you want to install, create a folder called mods in your SC2K folder, and then copy them there. Mods take the form of .dll or .lua files, and can sometimes have their own additional support files; check to see if the mods you're installing have a readme for additional details!
- 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.
- Note: Make sure that you don't have compatibility mode enabled on simcity.exe or your shortcut! Enabling compatibility mode instructs Windows to add its own compatbility shims which can interfere with sc2kfix's own modernization fixes in unpredictable ways. If you experience crashes, check to make sure you aren't using compatibility mode before submitting a bug report.
- 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 FluidSynth
sc2kfix Release 11 and newer includes first-class support for high-quality MIDI playback using the FluidSynth software synthesizer engine. By default, FluidSynth will use the Windows General MIDI samples, but if you have a suitable SoundFont file for MIDI playback, you can follow these instructions to use it in SimCity 2000:
- Start SimCity 2000 and open the sc2kfix Settings dialog.
- Under the Audio tab, ensure that the Music Playback Driver is set to FluidSynth
- Click the Browse button next to the FluidSynth SoundFont row to select the .sf2 SoundFont file that you want to play the game's music with, and click OK.
- Click the OK button to save the sc2kfix settings file. sc2kfix will reload FluidSynth with your chosen SoundFont for MIDI playback and restart the current song.
Configuring MP3 Playback
sc2kfix Release 11 and newer also includes first-class support for MP3 playback for music, both for custom mappings as well as semi-official soundtracks such as the SimMelody from SimCity 2000 release, either from tracks in the SOUNDS folder named 10000.mp3 through 10019.mp3 or through specifically mapped paths.
- Start SimCity 2000 and open the sc2kfix Settings dialog.
- Under the Audio tab, ensure that the Music Playback Driver is set to MP3 Playback
- Optional: click the Configure MP3 Tracks button and configure the tracks you want to use. If you've already placed files named 10000.mp3 through 10019.mp3 in the SOUNDS folder, you don't need to do this.
- Click the OK button to save the sc2kfix settings file. sc2kfix will restart the current song from the appropriate MP3 file.
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:
- -bitmode: Forces the game to run with a specific emulated bit depth. Used for specific troubleshooting scenarios. (Since r10-dev)
- -console: Opens a console window along with the game, described in the section "Using the sc2kfix Console". (Since r5-dev)
- -debugall: Forces all sc2kfix modules to run with every debug flag enabled, outputting all possible debugging information to both the console and to the sc2kfix.log file. (Since r9-dev)
- -defaults: Skips loading any configured sc2kfix settings from the registry. Using this argument does not overwrite your existing settings. (Since r8-dev)
- -enableautothingcleanup: Sporadically attempts to clean up extra Things. Used for specific troubleshooting scenarios. (Since r11-dev)
- -experiment=name: Enables extra special experimental code in sc2kfix to help the developers test new and possibly unstable features. (Since r11-dev)
- -noadvquery: Disables the advanced query dialog when querying on a tile with the Alt key held. Used for specific troubleshooting scenarios. (Since r10-dev)
- -noxfix: Disables the use of the new XFIX chunk when saving/loading games. Only useful for troubleshooting specific crashes under the advisement of an sc2kfix developer. (Since r11a-dev)
- -perfmon=name: Enables loads of extra debugging output to profile certain sections of the plugin. Can cause overall performance decreases because of the frequent logging; only use this if directed to do so by an sc2kfix developer! (Since r11-dev)
- -resetfileassociations: Forcibly resets .sc2 and .scn file associations in the registry to the running version of SimCity 2000, and .mif file associations to the corresponding version of SCURK. (Since r10)
- -skipintro: Skips loading the intro videos when the game starts. (Since r9-dev)
- -skipmods: Skips loading native code mods from the mods folder. (Since r10-dev)
- -undebugall: Forces all sc2kfix modules to run with every debug flag disabled. Mostly useful when playing with experimental builds. (Since r10-dev)
General Settings
SimCity 2000 Registration
- Default Mayor Name: This is the default mayor name that populates the New City dialog's Mayor Name text box.
- Organization Name: This is the name that shows up on the "registered to" dialog when the game starts.
- Reset File Associations: Clicking this button forces the Windows File Explorer to re-associate the .sc2 and .scn file extensions with SimCity 2000.
sc2kfix Core Settings
- * Always start the sc2kfix console on game startup: This setting forces sc2kfix to load the development and debugging console regardless of whether or not the -console command-line parameter has been passed to the game. Defaults to off.
- * Check for sc2kfix updates on game startup: When enabled, sc2kfix will check the GitHub repository to see if there is a newer release available, and adds an update notification to the game's main menu if there is one. Defaults to on.
- * Skip loading any installed mods on startup: This setting forces sc2kfix to skip loading any native code or Lua mods on startup, as if the -skipmods command-line parameter has been passed to the game. Defaults to off.
- * Always skip introduction videos: This setting forces sc2kfix to skip past attempting to load and play the Special Edition intro movie, as if the -skipintro command-line parameter has been passed to the game. Defaults to off.
Gameplay Settings
Interface Settings
- Use DOS/Mac style floating dialog instead of status bar: The Windows port of SimCity 2000 uses a status bar docked to the bottom of the game window to show the active tool, city demands/status information, and weather. The DOS and Mac versions instead use a floating window that can be freely moved around and shows the weather as an icon instead of purely as text. sc2kfix reimplements this floating dialog, which this setting enables. Defaults to off.
- Display full SimCalendar date in title bar: SimCity 2000 defaults to showing only the month and year of the simulation in the title bar. Enabling this setting shows the full simulation date in the title bar in real time. Yes, there are only 25 days in a SimCalendar month. Defaults to on.
- Use grammar-corrected and disambiguated dialog strings: A number of dialog messages have typos, poor formatting, or otherwise communicate their meaning in unclear fashions. Enabling this setting reformats these messages for better grammar and clarity. Defaults to on.
- Movie Zoom Level: This drop-down box selects a scaling factor for the intro and WillTV movies, up to 4x original size. Defaults to 1x.
- Configure Key Bindings: This button opens a dialog box allowing you to map custom key bindings for actions, or to reset keybindings to their defaults.
Visual and Performance Settings
- Use new real-time renderer instead of original batched renderer: SimCity 2000 was designed to run on computers several orders of magnitude less powerful than a modern gaming PC, and by default it only updates city growth in the display when the view is moved, zoomed in or out, or on the 24th day of each month. Enabling this setting updates visible tiles every simulated day. Defaults to on.
- Display seasonal and weather effects: Turning this setting on allows the new software renderer to alter the game's colour palette indices on the fly when the weather demands changes to how your city looks. Snowstorms will cause the terrain, trees, and grass to be blanketed in fluffy white stuff, and trees will change colour depending on the season. Defaults to on, though this will reduce performance at African Swallow speeds.
- Use dark underground background: Draws the underground view's background as dark grey instead of light grey to ease the eyes. Defaults to off.
- Only apply forced terrain mode on old cities: Uses the forced terrain mode setting when converting legacy cities to the new format. Defaults to on; has no effect if Forced Terrain Mode is set to None.
- Forced Terrain Mode: This drop-down box selects what terrain colour variation to use as an override. Primarily useful for debugging/testing.
Miscellaneous Settings
- Use more varied terrain generation in the Start New City dialog: Changes the behaviour of pressing Start New City on the main menu to use somewhat randomize the terrain sliders before generating the map for the new city. Defaults to on.
- Enable city backups on save: Automatically makes a backup copy of your existing save file before overwriting it. Defaults to on.
Audio Settings
Music Settings
- Music Playback Driver: This drop-down box selects between the following music playback drivers:
- None: The music engine will not play any music.
- Windows MIDI: The music engine will use the native Windows MIDI sequencer to play music using the native Windows MIDI output chain. This will result in output to a physical MIDI device if present or Windows' native software playback as a fallback.
- FluidSynth: The music engine will use the FluidSynth software syntheizer to play music using the configured SoundFont. If FluidSynth fails to load, the music engine will fall back to the Windows MIDI sequencer. This is the default option.
- MP3 Playback: The music engine will play back user-provided MP3 files in the SOUNDS directory with the same names as the game's MIDI files (eg. 10000.mp3, 10001.mp3, etc.). If this fails, the music engine will fall back to the Windows MIDI sequencer.
- Fun fact! This is my favourite way to play, with MP3s of the SimMelody from SimCity 2000 jazz arrangement of the tracks released on CD in Japan. You should definitely track down a copy for yourself! –@araxestroy
- Configure MIDI Tracks: This button opens a dialog box allowing you to remap each song to a custom MIDI track regardless of location for use with the Windows MIDI sequencer and FluidSynth drivers.
- Configure MP3 Tracks: This button opens a dialog box allowing you to remap each song to a custom MP3 track regardless of location for use with the MP3 playback driver.
- Continue to play music when the game is in the background: This setting prevents SimCity 2000 from stopping the actively-playing song when you alt-tab or minimize the game window. Defaults to on.
- Play next random selection after current music ends: SimCity 2000 waits for an event before starting the next music track. Enabling this setting reduces the delay to as to continually play music with minimal silence. Defaults to off.
- Shuffle music instead of looping predefined playlist: SimCity 2000 has a playlist of songs that it loops through when there's no event-based music playing. Enabling this setting shuffles the playlist after every loop, taking care not to play the same song twice in a row. Defaults to off.
Sound Settings
- * Use higher quality sounds: sc2kfix includes multiple higher quality versions of the vanilla SimCity 2000 sounds from other versions of the game; enabling this setting plays the higher quality versions in place of the original, lower-quality versions from the Windows 95 version. Defaults to on.
Gameplay Mod Settings (In Development)
Mod settings are being moved to a separate menu that is in development as part of the Release 12 development cycle. Check back later.
Native Code Mods (In Development)
This section is in development and is planned for full release in Release 12. Check back later.
Lua Mods (In Development)
This section is in development and is planned for full release in Release 12. Check back later.
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:
- We highly recommend using Visual C++ 2022. sc2kfix currently only uses features from the C++14 standard, but since Visual C++ 2015 reached end of life on October 14, 2025, the build requirements for sc2kfix may be upgraded to C++17 in the near future.
- The only supported MSBuild configuration, Release|x86, is the default one in the solution file. Please do not modify the solution file to build for any other configuration such as Debug|x86.
- Our primary test systems are Windows 11 25H2 and Windows 10 22H2. Limited testing is done on Windows 7 Build 7601. Testing on Windows 7 may be discontinued entirely in the future as extended support for Windows 7 ended on January 14, 2020. Please ensure you are running a supported operating system before submitting any bug reports.
- Support for Linux/Wine systems is best effort.
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 as well as any included mods in the mods/ subdirectory of the build output directory. Copy the winmm.dll output file from the build output directory to your SC2K directory and any optional mods you wish to use to the corresponding mods/ subdirectory, then run SIMCITY.EXE to play the game with your newly-built sc2kfix plugin.
Using the sc2kfix Console
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, and will autocomplete unambiguous command names as you type (much like the Junos CLI).
Suffixing any command with a question mark (?) as an argument will return a list of subcommands or parameters for that command, and will leave the CLI buffer intact so you can continue without needing to retype what you have so far. You can also type a question mark at the root of the command tree to see a list of all root level commands available. If a command has subcommands, it will be suffixed with an ellipsis (...). A command that requires arguments will print Invalid argument. and, like the question mark suffix, will not erase the CLI buffer.
An example session showing usage of some basic console commands follows:
sc2kfix> ? clear Clear the console fixup ... Fix up engine gremlins run ... Run Lua REPL or scripts set ... Modify game and plugin behaviour show ... Display various game and plugin information unset ... Modify game and plugin behaviour sc2kfix> show me the money Invalid argument. sc2kfix> show ? show audio ... Show audio engine info show debug Display enabled debugging options show memory ... Display memory contents show microsim ... Show microsim data show mods Show loaded mods show settings ... Show settings info show sound ... Show audio engine info show version Display sc2kfix and library versions sc2kfix> show version sc2kfix version 0.11-dev - (c) 2025-2026 sc2kfix Project (https://sc2kfix.net) Build info: troy@build.dev.araxes.net 2026-05-24 7:25:22 PM UTC SimCity 2000 version: 1996 Special Edition Lua version: Lua 5.5 Plugin loaded at 0x5B900000 This program includes code from the following projects: Lua is (c) 1994-2025 Lua.org, PUC-Rio; made available under the MIT License FluidSynth is (c) FluidSynth; made available under the LGPL 2.1 license Licenses for third-party code can be found in the sc2kfix repository and distribution under the `thirdparty` directory. The sc2kfix plugin, example mods, and frameworks are released under the terms of the MIT license unless otherwise stated. SimCity 2000 is a registered trademark of Electronic Arts, Inc. sc2kfix> _
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.
sc2kfix> show memory dword ? <address> Address to examine in hexadecimal [count <count>] Number of elements to show (default 1) [decimal] Display integers in decimal instead of hex [octal] Display integers in octal instead of hex sc2kfix> show memory word 0x4CB430 count 16 decimal 0x004CB430: 1943 1955 1983 1973 2034 2052 1923 1931 0x004CB440: 1927 1911 1926 1990 1995 2052 2100 2144 sc2kfix> show memory dword 0x1234 [ERROR] CORE: Segmentation fault caught. Don't do that again. sc2kfix> _
Interacting with Mods
sc2kfix loads native code mods from DLLs in the mods folder on startup if present and if the -skipmods command-line argument isn't passed to SimCity 2000. These mods can be called by hooks in the game code inserted by sc2kfix, and can add new commands to the console. Mods may add subcommands to the set and show console commands.
You can see a list of loaded native code mods with the show mods command, and see the same list with lists of all their hooked functions with the show mods detail command.
Using the Lua REPL
As the Lua programming language is integrated into sc2kfix, the console can be switched over to the Lua REPL by entering the run lua command with no arguments. Once in the REPL, you can access any parts of the plugin and modding framework exposed to Lua in real time. To return to the sc2kfix console, simply type Control-C at the Lua prompt, and sc2kfix will clean up the Lua REPL and virtual machine automatically.
sc2kfix> run lua Type Control-C to exit the Lua REPL. Lua 5.5.0 Copyright (C) 1994-2025 Lua.org, PUC-Rio > if 1 + 1 == 2 then >> print "Hello, world!" >> end Hello, world! > ^C sc2kfix> _
Questions, Comments and Suggestions
Hey, I think I found a bug...
Awesome! The first thing you should do is check the issues section of the sc2kfix GitHub repo to see if the bug you've found has an existing report. If it does, tell us you've encountered the same thing, and post your logs! Every bit of additional context in these kinds of reports helps.
If it's not there, please check to make sure you don't have any compatibility mode settings enabled on SIMCITY.EXE or WINSCURK.EXE, and also double-check to make sure you've followed the procedure in the installation section of the guide. sc2kfix can encounter issues in cases where filesystem write permissions are outside of the expected ranges or are augmented by installable filesystems, such as if your SimCity 2000 install is in a OneDrive or Google Drive folder. We highly recommend using a local, known writable folder for your SimCity 2000 installation to ensure that sc2kfix can operate properly.
Failing this, please open a new issue on GitHub and describe the bug you've encountered to the best of your ability. Screenshots and sc2kfix.log files are critical to helping us figure out what might be causing the problem, and any reproduction steps are appreciated. Using the GitHub issues system allows all members of the development team to respond to your problem, whereas emailing a developer directly can complicate things.
After you've opened an issue on GitHub, if you feel comfortable, join our Discord server and say hi and let us know that you've opened an issue for your bug report. We understand that real-time communications through Discord can be uncomfortable, but we don't bite! Also, our Discord server is a great place to find new experimental builds of sc2kfix if you want to help test the future of SimCity 2000.