SimCity 2000 AGA -- patches and tools
=====================================
Two independent patches for the Amiga (AGA) release of SimCity 2000, and the
sources that produce them.
NEITHER PATCH CONTAINS THE GAME. You supply your own original executable; the
patchers read it, check it, and write a new file next to it. Your original is
never written to. If a check fails, nothing is written at all.
SC2000RTG 1.5 -- run it on a graphics card
------------------------------------------
SimCity 2000 AGA renders its map with a software chunky-to-planar conversion
straight into the eight bitplane pointers of the screen's BitMap. On a
Picasso96 / RTG screen there are no bitplanes, so the render loop scribbles
over Picasso96's own structures and takes the machine down.
SC2000RTG decides at run time whether the screen is planar or chunky and, on
a chunky screen, copies the already-chunky pixels straight into the
framebuffer. On a native planar screen the original code path runs untouched,
so one binary does both, and it stays V39 (Kickstart 3.0) clean.
The game also renders into an off-screen bitmap whenever the target is not the
map window -- the preview pictures in the power plant and arcology choosers
are drawn that way -- and converts that bitmap to chunky and back around the
drawing. On RTG the bitmap is already chunky, so both conversions were wrong
and the previews came out as eight narrow slices side by side. The patch
gates both conversions on the same planar/chunky test.
One thing it fixes has nothing to do with RTG. The port's palette put a
near-black dark green at colour 9, where the Mac original has white, and
sixteen of the game's own pictures use colour 9 as a white highlight -- the
weather icons draw their raindrops and snowflakes with it, and came out
speckled with black dots. Colour 9 is now white.
It also makes the screenmode requester list 8-bit modes only, lets the screen,
window and map view open at the full size of whichever mode you pick instead
of a fixed 640x512, and centres the Maxis logo on the startup screen.
SC2000RTG [FROM] [TO] [FORCE]
FROM original executable (default: SimCity2000)
TO patched file to write (default: SimCity2000.RTG)
FORCE overwrite TO if it exists
Hold either SHIFT key while the game starts to get the screenmode requester.
Full details in patcher/README (German: patcher/LiesMich); every changed byte
with before/after disassembly is in patcher/PATCHES.
SC2000MIDI 1.0 -- MT-32 and General MIDI music
----------------------------------------------
The DOS Special Edition shipped Maxis' own MT-32 arrangements, and the song
numbers are identical across the Amiga, Mac and DOS releases. SC2000MIDI is a
small background program that plays standard MIDI files through camd.library.
SC2000MIDIPATCH puts a hook in the game that tells it which song to start.
SC2000MIDIPATCH [FROM] [TO] [FORCE]
If you want both patches, run SC2000RTG first and SC2000MIDIPATCH second.
Not the other way round: SC2000RTG knows its builds by size and checksum and
refuses a file that has already been changed, while SC2000MIDIPATCH searches
for an instruction sequence and so is the one that can come afterwards.
If SC2000MIDI is not running -- no camd.library, no MIDI driver in DEVS:midi/,
or you simply did not start it -- the hook finds no port and the game plays
its own Amiga music exactly as before. The fallback costs nothing and cannot
fail.
SC2000MIDI is configured through the Tooltypes in its icon (MODE, LOCATION,
MIDIDIR, DEVICE, CAMDLIB, VOLUME, LOOP, DEBUG); the same names work as shell
arguments. SCMIDICTL sends PLAY, STOP and QUIT by hand, for testing.
Details in midiplayer/LIESMICH (German).
What is in this archive
-----------------------
README this file
SC2000RTG the RTG patcher
SC2000MIDIPATCH the MIDI patcher
SC2000MIDI the MIDI player
SC2000MIDI.info its icon, carrying the Tooltypes
SCMIDICTL send PLAY / STOP / QUIT by hand
patcher/ SC2000RTG: source, patch tables, documentation
midiplayer/ SC2000MIDI, SCMIDICTL, SC2000MIDIPATCH: sources and
the game-side hook in 68k assembly
amiga-midi/ scripts that convert the game's own music to MIDI
The music itself is not in this archive, and neither is anything else out of
the game.
Recognised builds
-----------------
Four builds are recognised and each gets its own patch set. They are told
apart by size and checksum, so a file that is not one of them, or one that has
already been patched, is rejected rather than corrupted.
0.031 German (Oct 28 1994), 377400 bytes
0.031 English (Oct 27 1994), 374904 bytes
0.037 German (Jan 28 1995), 378096 bytes -- Maxis' own SimPatch update
0.037 English (Jul 3 2016), 375724 bytes -- the same update applied to
the English 0.031; supported,
but not tested on hardware
Building
--------
Both patchers are plain C and build for AmigaOS with vbcc:
vc +aos68k -O2 sc2000rtg.c -o SC2000RTG
midiplayer/mkmidi.sh builds everything on that side: it assembles the
game-side hook, turns it into hookdata.h, and builds SC2000MIDI, SCMIDICTL
and SC2000MIDIPATCH. Both patchers also compile for the host with cc, which
is how they are tested.
Licence and credit
------------------
SimCity 2000 is copyright Maxis. This is an unofficial patch; it ships no
part of the game beyond the byte differences it has to apply.
|