Releases: sc2kfix/sc2kfix
Release 10
Soliloquy
Yeah, I know, I said Release 10 would be out three months ago. I also said six months ago that Release 10 would have a full modding framework, but that's pushed out to Release 11, because I'm terrible at this. Instead, here's a Christmas present!
Going forward, our big focus will be a game reimplementation, but additional modding work will be done on the original game to make sure that as many possible advancements we come up with in the realm of SimCity 2000 modding can be done on the original game in the meantime. That means the SC2X file format, while originally slated for Release 10, is going to be a Release 11 or Release 12 job. The format has changed a bunch while I've been working on it and integrating it into a game from 30 years ago without massively inflating the size of the sc2kfix DLL is going to be a challenge. Many of the more experimental native code modding hooks as well as the Kuroko implementation are being pushed back to Release 11, because they're extremely unstable and we want to get something out before the end of the year.
So, what's in Release 10? Well, it's a rollup of all the various things we've been working on since Release 9. A large number of changes were done in the Release 9 patch cycle through Release 9d, with Release 10 being a mix of further improvements and a stable marker that we've fixed a bunch of stuff based on our reverse engineering work. One of the major accomplishments is the series of critical fixes to WinSCURK by @af-az, which was accomplished by a herculean reverse engineering effort of the pre-MFC Borland C++ framework used in WinSCURK's creation, resulting in fixes allowing the program to run properly on Windows 11. Similar to the issue where GTA: San Andreas is buggier on Windows 11, WinSCURK makes certain assumptions about the Windows 11 ABI that causes it to behave incorrectly, and @af-az's work fixes this. We believe this marks the squashing of all known major bugs in the game; now it's time to find the unknown ones through further reverse engineering.
In addition, we have added several new features to the game. The music engine has been enhanced again with support for FluidSynth, a scenario status screen has been added to make scenario progress more clear, various enhancements to the internals of the plugin have been made, and a prototype modding framework for writing native code mods (DLLs) for the game has been implemented. A small example mod has been added to the repository that outlines how mods work, but full documentation has yet to be written. Work continues on an enhanced scripting system for lightweight modding, which I expect will be more reasonably finished along with the stable mod API/ABI for Release 11. Whenever that is.
Happy holidays, everyone, and may you and your Sims have a happy new year!
Changelog
This is a major release. Upgrading from previous versions of Release 9 to Release 10 is highly recommended. The following changes have been made since Release 9d:
Gameplay Features/Fixes
- The new music engine has been enhanced with first-class support for FluidSynth! Dropping
libfluidsynth-3.dllfrom the latest 32-bit release of FluidSynth (2.4.7-winXP) and its requisite libraries into the same folder as the sc2kfix plugin will enable sc2kfix to load FluidSynth as a module and use it in the music engine. You can then select a SoundFont in the settings dialog and FluidSynth will be directed to that SoundFont for MIDI playback. (@araxestroy) - SCURK has been fixed on Windows 11 24H2 and newer. Pick-and-place should now work as expected. This was caused by a mix of legal ABI changes (the Windows system call ABI can change at any time) and incorrect usage of the API on Maxis' and Borland's part, and was resolved after a period of reverse engineering of the Borland C++ Windows abstraction layer. (@af-az)
- MIDI files and MP3 files can now be manually assigned for playback for each music track. If you want to play different songs from your collection of MIDIs or MP3s in SimCity 2000, you can now do so. We recommend keeping the mood the same, though, so you don't end up with an upbeat ska track playing when your city is being invaded by alien monsters from the year 2000. (@af-az)
- Preliminary native code modding has been added to the game. This is experimental work and you should not play with this unless you know what you are doing. Documentation has yet to be written as the native code interface is still evolving rapidly. If you want to play with this, the sc2kfix Discord server is the best place to chat about it. (@araxestroy)
- sc2kfix will now automatically fix file associations for .sc2 and .scn files in the registry. This restores the last missing feature from the installer, allowing saved game and scenario files to be launched directly from Explorer once again. (@araxestroy)
- A bug in the query dialog display of arcology microsim statistics has been fixed. (@af-az)
- A bug in the query dialog display of transit tiles on the map edge has been fixed. (@af-az)
- A bug in the save city dialog that can cause scenario files to be overwritten has been fixed. (@af-az)
- Army base growth has been tweaked to be more accurate to the DOS and Mac versions. (@af-az)
Plugin Changes
- The floating status dialog has been reimplemented to be more accurate to the DOS and Mac versions. (@af-az)
- The crash dialog and associated stack trace logging has been massively improved. This allows us to more accurately track down crash reasons with significantly less effort than in previous releases. (@araxestroy)
- The
CSimCityApp::BuildSubFramesfunction (formerlyGameDoIdleUpkeep) has been reimplemented in-library. (@af-az) - The animation hooks have been rewritten to improve performance. (@af-az)
- The advanced query dialog now shows tile sprites like the base query dialog. (@af-az)
- The pipe tool now properly refreshes at max zoom. (@araxestroy)
- A setting has been added to automatically queue up a new song after one finishes instead of needing an event to occur. (@af-az)
- A crash related to Air Force base growth has been fixed. (@af-az)
- Various work has been done to fix bugs in the Interactive Demo version of the game. (@af-az)
- The debug-related commands in the console have been enhanced to be more verbose. (@araxestroy)
- The prototype console scripting system has been reimplemented. (@araxestroy)
- A bug preventing the advanced query dialog from working properly on some system has been fixed. (@af-az)
- A bug in the music engine has been fixed allowing track 18 to play properly. (@araxestroy)
- The advanced query dialog has been re-enabled by default. (@araxestroy)
- Hooks for the Smacker codec library will not be loaded on the (unsupported) 1995 CD Collection version of the game. (@araxestroy)
- A few console commands have been cleaned up to provide prettier output. (@araxestroy)
- Separate log files will be created for SimCity 2000 and SCURK so as to not clobber a single log file if you start up SCURK while SimCity 2000 is running. (@af-az)
Internal Changes
- Further reconstruction of the simulation loop has been done in-plugin to improve performance and enable reimplementation and modding. (@af-az, @araxestroy)
- The MFC 3.x helper file has been separated out and included by default in the native code modding framework. (@af-az, @araxestroy)
- Helper files have been added for SCURK and the idiosyncratic Borland C++ class system it uses. (@af-az)
- Several files have been reorganized for structural reasons. The monolith previously known as the mischook file has been split up dramatically into multiple files to make tracking changes easier. Call your cousin Vinnie if you have issues with this. (@af-az, @araxestroy)
- Further demystification of the game's sprite format has been done and exposed to the plugin API. (@af-az)
- The console window is now allocated earlier in the plugin startup process to ensure critical logging can be provided on the console. (@araxestroy)
- The system for expanding
AFX_MSGMAPs has been rewritten to make the process more safe. (@araxestroy) - Cheats and the Maxis debug menu have been moved to their own file. (@araxestroy)
- More detailed information about the running system is logged on startup for bug reporting. (@araxestroy)
- Some of the earliest code has been rewritten to be more sane and less hacky. (@af-az, @araxestroy)
- The default main branch build (Release) does not include Kuroko, and the alternate build (ReleaseKuroko) does. (@araxestroy)
Release 9d
Update 2025-08-14 9am PDT: Windows Defender reported the original build incorrectly as a false positive. The GitHub Actions build has replaced it on the releases page.
Changelog
This is a major patch release. Upgrading from previous versions of Release 9 to Release 9d is highly recommended. The following changes have been made:
Additions/Changes
- The main simulation ticker has been reimplement inside sc2kfix to make fixing bugs easier. (@af-az)
- The floating status window has been rewritten to more accurately resemble the Macintosh/DOS version. (@af-az)
- The crash handler has been significantly improved with better stack traces, stack corruption detection, and better instructions for reporting crashes to the sc2kfix dev team. (@araxestroy)
- sc2kfix will now detect certain types of save file corruption when loading saved games and will attempt to automatically fix them. (@araxestroy)
- The military base growth algorithm has been reimplemented inside sc2kfix to make fixing bugs easier. (@af-az)
- The "Maxis Presents" intro slide from the Macintosh and DOS versions has been restored. (@araxestroy)
- The mod configuration menu option has been removed from the Release 9 branch. (@araxestroy)
- The "skipping in-flight movies" notice that appears if the intro videos are missing will no longer appear if intro video playback has been disabled in the sc2kfix settings. (@af-az)
- Additional command-line arguments for debugging have been added. (@araxestroy, @af-az)
Game/Plugin Fixes
- A number of bugs in the military base growth function have been fixed. (@af-az)
- Switching file types in the Load Game dialog no longer breaks the directory listing. (@araxestroy)
- The update notifier for the Release 9 branch has been modified to prioritize branch-specific updates. (@araxestroy)
- The game's debug menu code has been cleaned up slightly for future work. (@araxestroy, @af-az)
- A bug preventing placement of power lines on slopes under a certain rare set of conditions has been fixed. (@af-az)
- The game will now properly load higher resolution cursors on large displays. (@af-az)
- The animation fix has been rewritten to be less hacky and more performant. (@af-az)
Release 9c
Changelog
This is a patch release. The following issues have been fixed:
- Fixed an issue on certain Windows 10 systems where loading the advanced query dialog would cause the game to crash on startup.
- Fixed a SimCity 2000 bug where the simulation will would enter a broken state when hitting "cancel" on the exit dialog.
- Fixed an issue where font initialization was violating recommended practices for code in DllMain, potentially causing a deadlock when loading the game.
- The crash handler now looks up symbols in modules when unwinding the stack.
- A
-debugallcommand-line argument has been added to turn all debugging on when the game is launched with it.
Release 9b
Changelog
This is a patch release. The following issues have been fixed:
- Settings are now stored in an INI file in the game directory. Existing settings will be migrated from the registry when the game is started.
- Declining a military base no longer crashes the game (this one was my fault, sorry).
- The centering tool no longer rapidly scrolls its way to the void beyond the map if accidentally held down (fixes #8).
- The settings dialog has had some cleanup done to it.
Release 9a
Changelog
This is a patch release. The following issues have been fixed:
- Fixed the placement preview flickering out of existence on Turtle and Llama speeds and not existing at all on Cheetah speeds with the "Display city growth in real-time instead of in batches" setting enabled. Fixes issue #11.
- Fixed the game playing the incorrect theme song in several circumstances.
- Added a crash handler that dumps top-level exception information to sc2kfix.log in the event that SimCity 2000 crashes (instead of the game just abruptly quitting).
Release 9
sc2kfix Release 9
Soliloquy
It's been a hell of a fun two months! sc2kfix has gone from "yep, we can make the game playable" to "we're restoring missing gameplay features" and from a one-person project to a collaborative effort with a website and a reverse engineering wiki. We're also diving deep into the core of the SimCity 2000 game engine, with our understanding of how the game works growing rapidly and the Windows version now functionally reaching feature parity with the DOS and Mac versions.
This release restores the full set of intended military base behaviours as well as the Special Edition videos, while adding a number of quality of life features including a compass, optional MP3-based music playback, new status widget functionality, and tons of development and debugging features. We have a few tenacious minor game bugs to fix still; a minor patch named Release 9a will likely come out between this release and Release 10.
On that note, Release 10 will be a departure from this and previous releases. With the vast majority of missing functionality between the Windows version and the DOS and Mac versions of the game restored and major gameplay bugs patched, our development focus for Release 10 onwards is creating opt-in restorations of gameplay functions described in documentation and developer interviews, as well as enabling and encouraging the creation of new optional gameplay modifications. Release 10 will include a full scripting language tied into hooks into many core parts of the game engine.
In the meantime, please enjoy SimCity 2000 at its most complete with Release 9 of sc2kfix. We hope you have at least twice as much fun playing it as we had putting it all together.
Changelog
Complete set of commits for this release: r8...r9
Gameplay Features
- Maps with coastlines can now have naval bases placed on them. This feature has been recreated from the DOS and Mac versions; for some reason it was missing from the Windows version entirely. Naval bases have a similar effect to the industrial demand cap to seaports with the added bonus of providing three military units for emergency dispatch (@araxestroy)
- The full functionality of army bases has been restored. In the DOS and Mac versions, army bases are supposed to have a grid of internal roads capped with runway cross tiles, which increase the commercial demand cap, similar to how air force base runways do. This was not implemented in the Windows version for reasons known only to history. This behaviour has been restored and is enabled by default. (@araxestroy)
- Intro videos and WillTV interviews have been restored. Videos copied to a
MOVIESfolder in the SimCity 2000 installation directory will be played if the Special Edition CD is not inserted. (@af-az) - Music can now be played from MP3 files instead of MIDI sequencing. If a set of MP3 files exists in the SOUNDS folder and the MP3 playback option is enabled, music will be played from the appropriate MP3 files instead of through the MCI MIDI sequencer interface. (@araxestroy)
- The status widget now displays a compass. (@araxestroy)
- SimCity 2000 will now properly launch via Steam and other third party launchers. (@araxestroy)
- Pressing the middle mouse button in-game will now center the view on the mouse as if the Centering Tool was selected. (@araxestroy)
Plugin Changes
- A batch file -esque scripting language has been added to the console. Check the website and wiki for details. (@araxestroy)
- Development builds are now automatically generated when the GitHub repository is pushed to. (@araxestroy)
- The status widget no longer displays in map editing mode. This corrects its behaviour to match that of the original DOS/Mac status widget. (@af-az)
- The status widget now uses a static bitmap control for the weather icon and changes to a button when the disaster goto button is needed. (@araxestroy)
- The settings dialog has been resized for future expansion and the subdivisions within the settings dialog have been reworked. (@araxestroy, @af-az)
- The update notifier has been updated for the GitHub repository change. (@araxestroy)
- The "Add All Inventions" debug menu option in the game's debug menu now actually works instead of trying and failing to open the help file. (@af-az)
- sc2kfix dialogs and windows now use the Top Secret building as an icon instead of the EXE icon. (@araxestroy)
- A
-skipintrocommand-line argument has been added to skip playing the Special Edition intro videos. (@araxestroy, @af-az) - The "always use console" setting actually works now. (@araxestroy)
Internal Changes
- Copyright and licensing information has been updated to attribute to the sc2kfix Project. (@araxestroy)
- A proper call interface has been devised to allow sc2kfix functions to cleanly call into the SimCity 2000 game engine. Much of the sc2kfix hooking infrastructure has been updated to use these instead of hand-written assembly kludges to call into the game. (@araxestroy)
- A number of function pointers and variables have been updated based on new information from the sc2k-reverse wiki. (@araxestroy and several others)
- The "Show status dialog" menu option has been removed. (@araxestroy)
- A number of casts have been cleaned up. (@araxestroy, @af-az)
- The music and military base hooks have been separated into their own modules. (@araxestroy)
- Log output prefixes have been updated for beautification. (@araxestroy, @af-az)
- sc2kfix now compiles cleanly on Visual C++ 2015. (@af-az)
Release 8
Full Changelog: r7a...r8
Game Fixes
- Four unused songs have been added back into the music rotation. Now you have even more of Sue Kasper's fantastic soundtrack to listen to!
- The game display now updates every in-game day instead of only on the 24th of the month. Now you can really watch your cities grow in real-time! This has the accidentally helpful side effect of slowing down the African Swallow speed to "mostly useless" instead of "entirely useless".
- The game will now show the full in-game date in the title bar instead of just the month and year. Yes, there are only 25 days per month in the SimCity calendar.
- The game will no longer freeze when loading music (see the second line in New Features).
- Additional typos in certain building name strings have been fixed.
New Features
- The floating status bar from the DOS and Mac versions of the game have been reimplemented. It works as in those versions, with the weather icons and the "go to disaster" button integrated the same way. (Thanks @af-az for the goto button implementation!)
- The music engine has been rewritten with multi-threading for improved performance. This should eliminate freezes when the game loads a new music track, as well as potentially allowing for alternate soundtrack formats (eg. MP3/OGG/FLAC) in the future.
- An update notifier has been added. The game's main menu will now show a small notice when there is a new update for sc2kfix available.
- A new detailed query dialog that shows internal simulation data of tiles has been added. Simply hold the Alt key before clicking on a tile with the Query Tool and you'll get every bit of information the tile has to offer that you didn't really care about.
- The order that music is played in can be set to shuffle after each run through the playlist in the settings.
- Settings have been updated with tooltips detailing what they do. Just hover over a setting to see its tooltip.
Internal Changes/Reverse Engineering
- The 1995 CD Collection version of the game has been deprecated due to the sheer difficulty of maintaining the reverse engineering effort as applied to two different builds of the game and the relative rarity of the CD Collection compared to the 1996 Special Edition.
- More types, enums, addresses, and helper functions for working with the simulation state in real-time have been added.
- Three pull requests have been merged as part of this release's development cycle!
- A lot of work went into reverse engineering the simulation engine based on things needed for this release, future gameplay mod plans, as well as suggestions and questions posed by members of the Simtropolis community. There's still an incredible amount of work to be done, but every time a function or two gets figured out or a part of the simulation state gets a definitive name and purpose assigned to it, we get closer to understanding how this 30-year-old game really works on the inside.
Release 7
Full Changelog: r6...r7a
Game Fixes
- Power and water usage calculations are no longer delayed and batched in cities larger than 50,000 Sims. This was originally implemented to save simulation time on 1993 era hardware and is no longer needed.
- Rail and highway neighbor connections now load from saved games properly. No more need to blow up and rebuild your connections when you fire up a saved game!
- Sign rendering has been fixed to use the originally intended font and text alignment.
- The game's sound buffers have been increased from a maximum of 32KiB to 256KiB to accommodate higher quality sound files.
- City names are now properly retained when saving your city.
- The save dialog no longer accidentally silently appends another file extension on Windows 11.
- The budget dialog no longer cuts off and disappears label text.
New Features
- A few higher quality sounds have been ported over other versions of the game. The new sounds are embedded in the DLL and are automatically loaded and played instead of the lower quality on-disk versions. Can be turned off in the settings dialog.
- An improved New City dialog has been added with the ability to change the mayor's name. Your default mayor name from the install and settings dialogs is filled in by default; choosing a different mayor name for a new city does not change your default mayor name.
- Some preliminary map live debugging tools have been added to the console.
- Tooltips have been added to some settings to elaborate on the changes they make.
Release 6
Full Changelog: r5...r6
Hey, early adopters! A bug in the original version of Release 6 breaks the installer. If you're downloading Release 6 for the first time and you see this message, you're downloading the fixed one. This only affected new installs, not existing ones that used a previous version of sc2kfix.
- The military base growth bug has been fixed! Military bases will now grow properly in your city like they do in the DOS and Mac versions of the game.
- The military will no longer give up forever if they can't find a suitable place to build on their first try and will make multiple attempts to find somewhere to place a base before departing unfulfilled.
- A settings dialog has been added under both the Options menu in-game as well as on the main menu when the game is started. You can change your mayor and organization name there, as well as enable or disable optional features.
- An optional feature to let the game continue playing music in the background has been added.
- An optional feature to rewrite some dialog strings for grammatical reasons and to fix ambiguity has been added.
- A cheat from the Windows 3.1 version that was broken in the Windows 95 release has been restored. Sure, you could look at the source code to see what it is, but that would be, uh, cheating.
- You can load default settings by passing
-defaultsto the game's command line. - Some new internal structures have been added to sc2kfix to make it easier to potentially add new features to the game and to enable simulation state to be visible to future mods.
Release 5
Full Changelog: r4...r5
- A debugging console has been added to assist in reverse engineering and, in the future, developing potential gameplay modifications! You can launch the game with the console by passing
-consoleas a command-line argument. - Animations have been fixed in the 1996 Special Edition version of SCURK.
- A hook framework for injecting code detours into SimCity 2000 as well as modifying the behaviour of external winmm.dll calls as they pass through sc2kfix has been added. Documentation can be found in the hooks.md file under the hooks directory.
- The hook framework is only available in the 1996 Special Edition version of the game as it is the most common version distributed.
- sc2kfix now logs all output to a file called sc2kfix.log in the game directory.
- Debugging message boxes have been removed and replaced with console and log file output.
Known issues:
- While not strictly an sc2kfix issue, Windows 11 24H2 seems to have changed something that affects very old MDI applications like SCURK, preventing pick-and-place from working correctly.



