Hello everyone! My SA-1 ROM hacks are known mostly as performance improvement patches. Games that used to run poorly either with slowdown (Gradius III, Super R-Type) or low frame rate (Race Drivin') are transformed into games that runs with much better performance thanks to the 10.74 MHz base clock.
SA-1, however, is not (only) a performance chip for the SNES. It's an enhancement chip. The base clock, being 3-4x higher than the SNES CPU for sure helps a lot in the performance aspect, but we also have other features (pipeline processing, 16-bit data bus, larger RAM, bitmap mode, 32-bit arithmetic operators, etc.) that together the higher base CPU clock which can make games not only run faster, but also better.
Super Mario World with SA-1 is a good example. SA-1 removes slowdown from the game, for sure! But it also enhances the experience as well by: 1. Reducing level loading times; 2. Increasing sprite limit from 4~12 to 22 sprites; 3. Increasing HDMA frame rate from 15 to 60 FPS; and much more. While these are mostly smaller details for the original game (there's only a few places in the game that the extra sprites makes a difference), for the SMW hacking community you can see the SA-1 chip playing a bit role by allowing custom levels that has flexibility similar to Mario Maker thanks to the SA-1 chip.
In practice, SimCity doesn't have slowdown. The interface can feel a little slow, but it doesn't slowdown or start struggling out of nothing. The performance for placing new zones, building/destroying terrain, etc., doesn't take more or less time depending on what city you're working on. The cursor doesn't freeze or start slowing down.
But we all know that the interface could be smoother, that city simulation could be faster and hey, it would be nice if all the graphs/maps loaded faster or if they could be wider or even full screen.
That's what the SA-1 patch will be focusing on SimCity.
I'm sure the first thing we all do before creating a city is choosing a new map. Unfortunately, this process takes a little time: once you pick a number, the "please wait..." screen appears and after about 10 seconds the map appears, as you can see on below pictures.


And I'm sure you want to play with a cool map, but waiting 10 seconds every time you pick a new number makes the experience a little disappointing. Just choosing SA-1 chip already makes this drop to 2.5 seconds, but with little more optimization we can push to less than 1 second. That's a greater experience!

By default SimCity has three simulation speeds. Four if you count the "pause" option to stop simulation. For the SA-1 version, we will keep the "slowest" speed with the same pacing as the original version. The "middle" speed will act similarly to the "fast" speed, useful if you wanna simulate the city faster but wants to pay attention to any small detail. The "fast" speed will use SA-1 CPU at 100% power -- the sky (or "CTOP", for enthusiasts) is the limit - we expect simulation to be between 10-20x faster than original, thanks to the possibility of using SA-1 32-bit arithmetic operations, which is what makes the simulation very slow on the original version.
In addition, in the original version the SNES CPU has to alternate between city simulation and user interface every frame, effectively at 30 FPS. With SA-1 CPU, that's no longer needed: city simulation goes to the SA-1 CPU (10.74 MHz). User interface will stay on the SNES CPU (3.58 MHz). Both will run in parallel, at the same time, effectively getting both clocks together at 14.32 MHz.

SimCity SA-1 will support SNES mouse. Both in emulation (PC) and on real hardware, you will be able to plug on the second port a mouse. Mouse will let you interact with the user interface in a similar manner that modern simulation games does (SimCity 4, City Skylines). You will still be able to use the SNES joypad as well for accessing additional functions, as well if you prefer playing in the traditional way.

SA-1 has a exclusive bitmap drawing function. This makes bitmap processing ~20x faster since you don't need to convert a bitmap to bitplane. Graphs and maps will be very benefit from this, as they take several seconds to load.

Another feature that I'm working is to be able to load data at full screen if desired -- or even loading them above the map (using transparency effects, similar to what SimCity 4 allows), so you can spot directly where the police radius is low or where the land value is low.
A new saving algorithm is being developed for the SA-1 version. Instead of having a fixed limit of 2 saves, the SA-1 chip will compress the maps and store them similar to a file system, allowing you to save more than 2 maps in the same game file. The SA-1 will additionally save the game metadata so if you load a new map, you will not have the "power outage" bug that often downgrades the ranking of your city and zoned areas.

Only having two saves files? That's the past now.
While I can't promise that how many maps we will be able to store (this will depend on how much RAM must be moved to BW-RAM, SA-1 backup/work RAM), the compression will definitely allow a better usage of the RAM area and will allow you to keep your beloved "Megalopolis" city while building your scenarios without erasing anything.
These are the improvements I thought it would be useful for an initial SA-1 version of the game. Of course, I'm open for additional ideas and if there's anything I missed, please let me know! I'm always accepting suggestions and being feasible, specially with the additional power from SA-1, can be definitely implemented.
The list of workstreams on the SA-1 version currently looks like this:
1. Game disassembly (done);
2. Game analysis (done);
3. BW-RAM/I-RAM remap files (done);
4. Moving game main logic to SA-1 CPU + SA-1 arithmetic circuit (in progress);
5. Moving image/visual parts to SA-1 bitmap circuit (to do);
6. New save memory model (in progress);
7. New save system algorithm (to do);
8. Full screen / real time map plotting system (to do);
Working with SNES games, originally written in assembly and adjusting everything to use another processor (SA-1) requires a lot of time. If you like my work and is interested in getting SimCity SA-1 done, please consider supporting me. There are multiple options for supporting me on Patreon, as well PayPal if you are interested (my PayPal e-mail is vitor.vilela.mario@gmail.com).
Supporting me will allow to me upgrade my current hardware (right now I'm working on a laptop with one additional monitor screen), as well will let me focus on the projects without worrying about bills. That will allow to speed up SimCity SA-1 as well future projects (e.g. SimCity widescreen). Super Metroid SA-1 is also on the radar, but that game will depend on a better hardware due of the complexity of the ROM and the involved simulation needed.
That's all for today. Thanks for reading. I'm always open for comments and feedback.
Renato
2024-12-25 20:19:33 +0000 UTC