AminetAminet
Search:
85655 packages online
• About
• Recent
• Browse
• Search
• Upload
• Setup
• Services

game/patch/SC2000RTG.lha

Mirror:Random
Showing: ppc-morphos icongeneric icon
No screenshot available
Short:SimCity 2000 retargetable graphics patch
Author: tobi at themaster.de (Tobias 'MastaTabs' Seiler)
Uploader:polluks+aminet sdf org (Stefan Haubenthal)
Type:game/patch
Version:1.5
Architecture:m68k-amigaos
Date:2026-10-05
Requires:The original game
URL:https://codefloe.com/MastaTabs/sc2krtg
Download:game/patch/SC2000RTG.lha - View contents
Readme:game/patch/SC2000RTG.readme
Downloads:6

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.


Contents of game/patch/SC2000RTG.lha
 PERMSSN    UID  GID    PACKED    SIZE  RATIO METHOD CRC     STAMP          NAME
---------- ----------- ------- ------- ------ ---------- ------------ -------------
-rwxr-xr-x  1000/1000     9545   17336  55.1% -lh5- 805a Sep 21 22:21 SC2000RTG/SC2000RTG
-rw-r--r--  1000/1000      687    1059  64.9% -lh5- e994 Sep 21 22:21 SC2000RTG/SC2000MIDI.info
-rwxr-xr-x  1000/1000     8961   15160  59.1% -lh5- 6cce Sep 21 22:21 SC2000RTG/SC2000MIDIPATCH
-rwxr-xr-x  1000/1000     5844    9532  61.3% -lh5- 3068 Sep 21 22:21 SC2000RTG/SCMIDICTL
-rwxr-xr-x  1000/1000    11735   19700  59.6% -lh5- b975 Sep 21 22:21 SC2000RTG/SC2000MIDI
-rw-r--r--  1000/1000      987    2112  46.7% -lh5- e046 Sep 21 22:21 SC2000RTG/patcher/weichen.asm
-rw-r--r--  1000/1000     2779    7767  35.8% -lh5- d0ce Sep 21 22:21 SC2000RTG/patcher/sc2000rtg.c
-rw-r--r--  1000/1000     3289   18370  17.9% -lh5- 5176 Sep 21 22:21 SC2000RTG/patcher/patchdata.h
-rwxr-xr-x  1000/1000     9235   29375  31.4% -lh5- 648f Sep 21 22:21 SC2000RTG/patcher/make_patchlist.py
-rwxr-xr-x  1000/1000     1930    5164  37.4% -lh5- 76da Sep 21 22:21 SC2000RTG/patcher/make_patchdata.py
-rw-r--r--  1000/1000      713    1758  40.6% -lh5- cf40 Sep 21 22:21 SC2000RTG/patcher/hunks.py
-rw-r--r--  1000/1000     1549    3371  46.0% -lh5- bb4b Sep 21 22:21 SC2000RTG/patcher/erweitern.py
-rw-r--r--  1000/1000     3514    7178  49.0% -lh5- 92df Sep 21 22:21 SC2000RTG/patcher/README
-rw-r--r--  1000/1000    24643   71415  34.5% -lh5- 2156 Sep 21 22:21 SC2000RTG/patcher/PATCHES
-rw-r--r--  1000/1000     4055    8146  49.8% -lh5- 7fce Sep 21 22:21 SC2000RTG/patcher/LiesMich
-rw-r--r--  1000/1000     1009    1907  52.9% -lh5- 7cc2 Sep 21 22:21 SC2000RTG/midiplayer/scport.h
-rw-r--r--  1000/1000     1111    2508  44.3% -lh5- 99df Sep 21 22:21 SC2000RTG/midiplayer/scmidictl.c
-rw-r--r--  1000/1000     3385    8473  40.0% -lh5- 1989 Sep 21 22:21 SC2000RTG/midiplayer/sc2000midipatch.c
-rw-r--r--  1000/1000     8065   22216  36.3% -lh5- 5051 Sep 21 22:21 SC2000RTG/midiplayer/sc2000midi.c
-rwxr-xr-x  1000/1000      792    1545  51.3% -lh5- 6472 Sep 21 22:21 SC2000RTG/midiplayer/mkmidi.sh
-rwxr-xr-x  1000/1000     1247    2502  49.8% -lh5- d662 Sep 21 22:21 SC2000RTG/midiplayer/mkinfo.py
-rwxr-xr-x  1000/1000     1980    4417  44.8% -lh5- 1964 Sep 21 22:21 SC2000RTG/midiplayer/midicap.py
-rw-r--r--  1000/1000      446     756  59.0% -lh5- 0e8f Sep 21 22:21 SC2000RTG/midiplayer/make_hookdata.py
-rw-r--r--  1000/1000      521     902  57.8% -lh5- d441 Sep 21 22:21 SC2000RTG/midiplayer/hooktest.c
-rw-r--r--  1000/1000      723    1368  52.9% -lh5- da52 Sep 21 22:21 SC2000RTG/midiplayer/hooktest.asm
-rw-r--r--  1000/1000      584    1407  41.5% -lh5- ea3f Sep 21 22:21 SC2000RTG/midiplayer/hookdata.h
-rw-r--r--  1000/1000     1732    3941  43.9% -lh5- ba1d Sep 21 22:21 SC2000RTG/midiplayer/hook.asm
-rwxr-xr-x  1000/1000     1550    3792  40.9% -lh5- 03b3 Sep 21 22:21 SC2000RTG/midiplayer/cmpmidi.py
-rw-r--r--  1000/1000     1866    4744  39.3% -lh5- a631 Sep 21 22:21 SC2000RTG/midiplayer/camd.h
-rw-r--r--  1000/1000     1810    4126  43.9% -lh5- e048 Sep 21 22:21 SC2000RTG/midiplayer/addhook.py
-rw-r--r--  1000/1000      687    1059  64.9% -lh5- e994 Sep 21 22:21 SC2000RTG/midiplayer/SC2000MIDI.info
-rw-r--r--  1000/1000     3958    7755  51.0% -lh5- c3d9 Sep 21 22:21 SC2000RTG/midiplayer/LIESMICH
-rw-r--r--  1000/1000     2986    6670  44.8% -lh5- fe42 Sep 21 22:21 SC2000RTG/amiga-midi/xmi2mid.py
-rw-r--r--  1000/1000     4663   10726  43.5% -lh5- 5559 Sep 21 22:21 SC2000RTG/amiga-midi/mmd2mid.py
-rw-r--r--  1000/1000     3055    5715  53.5% -lh5- 26b6 Sep 21 22:21 SC2000RTG/amiga-midi/LIESMICH
-rw-r--r--  1000/1000     2772    5616  49.4% -lh5- 96ab Sep 21 22:21 SC2000RTG/README
---------- ----------- ------- ------- ------ ---------- ------------ -------------
 Total        36 files  134408  319588  42.1%            Oct  5 21:51
Page generated in 0.04 seconds
Aminet © 1992-2024 Urban Müller and the Aminet team. Aminet contact address: <aminetaminet net>