- 0xdurakiAre you a modder? Do you want to learn how to make game modes and game hacks? You are at the right place. We will take Uplink as an example and explore various things, based on recollection of the source code. The source codes is visible at this link.
Interesting URLs from Introversion (Publisher/Developer):
https://devwiki.introversion.co.ukhttps://devwiki.introversion.co.uk/uplink/index.php (Requires Login)1Game Configuration Data
<path-to-game>\users\options\$HOME/.uplink/$HOME/Library/Application Support/Uplink/optionsGame Save Data
<path-to-game>\users\$HOME/.uplink/$HOME/Library/Application Support/Uplink/Releases by Date (by platform)
For MacOS
On MacOS, specifically when using 2K resolution or above, either via Retina or external display; the font size of Uplink interface becomes to small to read. You can change this behaviour by patching address:
00000001000cdd28 mov ecx, 0xa ; argument #4 for method sub_1000a2da0
What this does is replace the default Uplink UI font size from 9 to 10, making it appear larger on the screen and more easier to read. Looking at the source code, the following item is present:
// taken from: uplink/src/uplink.cpp
void Init_Fonts ()
{
...
success =
(GciLoadTrueTypeFont ( HELVETICA_10, "Dungeon", dungeonFontFilename, 9 ) &
GciLoadTrueTypeFont ( HELVETICA_12, "Dungeon", dungeonFontFilename, 11 ) &
GciLoadTrueTypeFont ( HELVETICA_18, "Dungeon", dungeonFontFilename, 16 ));
The above fixes the first call of GciLoadTrueTypeFont() function, and changing the default mov ecx, 0x9 to mov ecx, 0xa (10). Produce a new binary and run it from MacOS application directory. Voi-la! 🎉
References: uplink/src/uplink.cpp
For Linux
Upon browsing the web I stumbled upon a blog post by Ubuntu Adventures, which provided alternative soultion on fixing the game resolution in the game by changing the launch option arguments using launcher script and a bit of Bash. His solution involved modifying the launch options to include the !graphics_screenwidth and graphics_screenheight arguments which can be set to any desired resolution.
His solution works on Linux Steam-version of the Uplink game. Note that you need to change the cd path to match your Steam/Uplink installation directory and adjust the resolution values as needed - simply replace 1920 and 1080 with your desired resolution.
First, create an empty uplink.sh anywhere you like and make it executable (for example, in your home directory):
$ touch $HOME/uplink.sh
$ chmod +x $HOME/uplink.sh
Now edit the uplink.sh file to include the desired resolution as per original blog post:
$ vim $(HOME)/uplink.sh
# uplink.sh (for 1920x1080 resolution under Linux)
cd /opt/Steam/SteamApps/common/Uplink
./uplink.bin.x86_64 '!graphics_screenwidth' 1920 '!graphics_screenheight' 1080
Some interesting definitions have been identified.
Game World and Mapped Data
Taken from: `https://github.com/vb6mmorpg/uplink-source-code/blob/master/uplink/src/game/data/data.h`
#define WORLD_START_DATE 0, 0, 0, 24, 2, 2010
#define GAME_START_DATE 0, 0, 0, 24, 3, 2010 // ;)
#define PLAYER_START_BALANCE 3000
#define PLAYER_START_GATEWAYNAME "Gateway ALPHA "
#define PLAYER_START_CPUTYPE "CPU ( 60 Ghz )"
#define PLAYER_START_MODEMSPEED 1
#define PLAYER_START_MEMORYSIZE 24
// also see
#define IP_LOCALHOST "127.0.0.1"
// also see
#define TICKSREQUIRED_*
#define TRACESPEED_*
#define HACKDIFFICULTY_*
#define PROB_MISSION_*
#define PAYMENT_*
#define MINDIFFICULTY_*
#define TIME_*
#define MINDIFFICULTY_*
#define MINDIFFICULTY_*
#define MINDIFFICULTY_*
Global App Defines
Taken from: `https://github.com/vb6mmorpg/uplink-source-code/blob/master/uplink/src/app/globals_defines.h`
#define ALPHA 0.85f // Alpha value used for interface
#define ALPHA_DISABLED 0.5 // Alpha value for disabled buttons
//#define CHEATMODES_ENABLED // Eg all-links, all-software, password-bypass etc
Game Data, Titles, World Map Gateways, SW/HW Upgrades
Taken from: `https://github.com/vb6mmorpg/uplink-source-code/blob/master/uplink/src/game/data/data.cpp`
UPLINKRATING []
NEUROMANCERRATING []
PHYSICALGATEWAYLOCATIONS []
SOFTWARE_UPGRADES []
List of other modding ideas I may implement in the future. This section contains other modding details or additions that could be implemented in the future. These includes: adding new local gateway locations (ie. when registering agent) that represents Uplink Corporation office(s),
Adding a new local gateway location (ie. Uplink Corporation office)

Cheat Mode
To open up the cheat mode menu, do the following:
TooManySecrets and any passwordF1 in-game after logging-in and press
F1
to open the cheat mode menuUplink v1.2 and is no longer available (ie. in Steam version)See also: [theunderground]’s Uplink cheat page archived here
Accessing Protovision Game Server
To access the Protovision Game Server which is not possible using the Password Breaker available in the game, use the password joshua and you will be able to log in. This server is actually a reference to the 80’s movie Wargames. When you enter the server, there is a menu with 2x options, the Wargames and Hints. Entering the “Wargames” section will give you a list of games. By clicking on the bottom one (Global Thermonuclear War), you get taken to a World Map with several major cities on it. Clicking on each city will send a red line representing a missile flying towards the city, followed by an explosion. The close button for this screen is underneath the Trace Tracker, and you should have it running while playing. By clicking on the “Hint” menu, you are given a very cryptic message about the Introversion IP, though this doesn’t actually have anything to do with it.
Destroy a Computer/Server
When accessing any Internal machine click on the “Admin” button, then click on the “Console” and type the following commands:
> cd usr
> delete
> cd log
> delete
> cd sys
> delete
> shutdown
Multiple Monitors
The early version of the Uplink game had the ability to use multiple monitors but this feature was removed in later versions due to unstability issues. The multiple monitor feature required two separate game purchases (ie. 2 disks) and a separate license. The option was complex to setup but in essence, gamers were instructed to start the game Uplink on main computer, and go to Network options, then click the “Start Server” button and then load the game using agent account credentials.
On another computer users were required to connect to the network, then enter the Network options and click the “Connect to Server” button. Next, exit the options screen and on the main Title screen, there should be two buttons visible in the top left corner, one showing COMMS and the other showing STATUS. Select whichever one you want the monitor to display and it shuould load the relevant details on the screen.
LAN
The LAN systems were added in later versions of the Uplink game from version 1.2 onwards. In Uplink, a LAN is much of the same as the real LAN - a local area network that interconnects computers in a limited area such as a school, building or office. LAN hacking will require a fast, high-bandwidth gateway to safely navigate the LAN. For optimum performance, about 600Ghz in processing power and 6Gqs of bandwidth will do you fine. Suggestions for a gateway would be a ZION or TRINITY for all round performance. If you need more power in one area though, check out the OMEGA (more Power, less Memory) or the AM-CORE (less Power, more Memory) gateway.
Take a look at Minoriko’s Guide to LAN on Steam community guides. More on LAN can be also found on Modlink’s Uplink LAN guide.
There are no jobs left on the mission board, what now?
If you click the fast forward button in-game (the blue one at the top with the 2x arrows on it), then eventually a new missions will appear in the mission board list.
Save Game
There is no save game feature in the game per se, but it gets saved automatically every few minutes. Unfortunately, if you get caught, it’s game over. There is a workaround to this, since the game state is saved to disk every - either in ~/.uplink (Linux) or other platform-specific locations (see top of this note), it’s possible to manually save the game state and load it back in later using Python or similar scripting solution. The script acts as a backup utility that saves the game state to disk periodically using cron, and can be used to restore the game state in case of a crash, or if you get caugh during gameplay.
The Python script makes a copy of the ~/.uplink directory in the ~/.uplink/backup/ folder every time it runs and it detects that the game is running by checking for the uplink process in the system. If the game is running, the copied backup savedata is annotated with the current timestamp in the filename, so you can easily identify which backup corresponds to which game save. If you get caught, you can simply load the most recent backup to continue playing from where you left off.
#!/usr/bin/env python
import os
import shutil
from datetime import datetime
UPLINK_DIR = "{home}/.uplink".format(home=os.path.expanduser('~'))
def get_timestamp_from_year_to_second():
"""A compact timestamp."""
now = datetime.now()
date = datetime.date(now)
time = datetime.time(now)
template = "{year}_{month:02}_{day:02}_{hour:02}{minute:02}{second:02}"
return template.format(year=date.year, month=date.month, day=date.day,
hour=time.hour, minute=time.minute, second=time.second)
def main():
shutil.mkdir("{home}/.uplink/backup".format(home=os.path.expanduser('~')))
dest = "{home}/.uplink/backup/uplink_{timestamp}".format(home=os.path.expanduser('~'))
dest.format(timestamp=get_timestamp_from_year_to_second())
shutil.copytree(UPLINK_DIR, dest)
#############################################################################
if __name__ == "__main__":
main()
Hacking Save Game
The archived version on downlink’s old website provides a guide on how to hack the save game of Uplink. You will need to use a hex editor and a custom tool from Uplink’s DevCD (redshirt) to modify the save game file.
Miscellaneous
uplink tagged questionsMods from other sources
Downloads
Uplink Soundtrack
Tracks:
00:00 Skaven - Deep in her Eyes
03:11 Timelord - Mystique Part I <timelord@nol.net>
06:50 Timelord - Mystique Part II <http://www.phoenix.net/~dspyre/timelord.html>
14:18 Ryan Cramer - Digital Serenity <rcramer@di.net>
17:59 Dual Crew - Symphonic
22:11 Karsten Koch - The Blue Valley
Unused tracks:
34:14 Hector - Clouds Of Fire <hector@edna.cc.swin.edu.au>
37:13 Timelord - Mystique Part III <timelord@nol.net>
40:39 Dustbin - Pink Noise <www.cbr.avnet.it>
Whole soundtrack is available on YouTube. This video also includes some music which is not used in the game, but was included with the bonus CD.
Bonus CD & Dev CD
Introversion offered two extras for fans - a “Bonus CD” and a “Dev CD”. The Bonus CD file can be downloaded from archived Introversion’s website.
The Bonus CD was originally offered to people who convinced a friend to purchase Uplink. After the turnover was less than expected, the Bonus CD was made available for purchase in June 2002 for US$ 7.00 off Introversion’s site. The initial run of discs eventually ran out, and the CD was later made available for free download.
Introversion also released a “Game Bible” in four hidden parts called “books”. These covered the development of Uplink from conception up to the release of the “Project Nakatomi” patch of the game. The books were hidden on the Bonus CD, website, and as the final reward for solving the “treasure hunt” on Introversion’s site leading up to the release of the Nakatomi patch.
All four books were hidden or encrypted, with clues located on Introversion’s website, or within the game packaging itself (such as the hex string on the back cover). Decrypting the books required some minor “hacking” skills, such as using “one time pad” decryption programs, or “redshirt” programs to extract .dat files hidden inside other files. Personally decrypting the four books was considered a point of pride within the Uplink community, so hints requested on the community forums were intentionally kept obtuse.
See the Modlink’s Bonus Disk website for more interesting information.
Developer Forums
Compiling Uplink Codebase
This guide is intended to get you up and running with the Uplink Dev CD as quickly as possible. We will be assuming you have some knowledge at least of compilers, C++ etc.
Install Uplink Fairly self explanatory really, but you’d be suprised. You won’t be able to run any of the binaries you compile unless you have Uplink installed and ready.
Copy data to Hard Disk You need to copy all the neccesary directories onto your hard disk. The directories you will need are:
/contrib (all external libraries used by Uplink)
/lib (all our own internal libraries used by Uplink)
/source (the main source tree)
Copy those three directories into your Uplink directory on your Hard Disk.
Original information provided by the Uplink Developers Guide, see archived version for more details. In case of any compiling issues, reference to compilation problems guide available here as online archive.
Quick getting started Uplink source-code tour is available via online archive. Directory listing of the developers CD contains contrib ref, docs, lib ref, other, source, and tools ref as described in the archived here.
Other Easter Eggs
Trivia
Uplink trivia and in-game errata. The information provided here is intended to be a quick reference for players who are already familiar with the game.
Important Errata
The Uplink game extras I found around the web. Each trivia entry is contained within a details block, clicking the title will expand the block and reveal the trivia.
In 2002, Introversion released the “Project Nakatomi” patch (v1.21) that included such additions as LAN hacking and a functional in-game IRC chat interface. Project Nakatomi was so named as it was aimed at the “die hard” fans of Uplink: Hacker Elite (Nakatomi Plaza is the skyscraper setting of the film Die Hard).
In keeping with the hacking theme, Introversion created an alternate-reality “treasure hunt” leading up to the release, teasing what Project Nakatomi would be. They underestimated the dedication of their fans however, and through efforts of formed groups such as the “Project Nakatomi Task Force,” fans cracked the first layers of the “treasure hunt” before it was ready! The trail hit an apologetic dead-end message at a secure section of Introversion’s site, and the rest of the hunt had to be added later.
First, do classic missions first because you need heavy software. Fast forward until you see a news that uplink top agent is dead from apparent suicide. After a few days, you will receive an email. It says to stand up against ARC. Poke ARC central database for a long time and an email will come. Reply to the message from ARC. The message subject is named “An offer you can’t refuse”.
You will receive a mission and a email with Revelation attached. Arunmor’s email will arrive shortly (you must fast forward time, or play other missions). Now choose your side.
A get-rich-quickly scheme and approach involves stealing money from a bank using a variety of methods. One of the methods is stealing from the notable bank users by hacking the banks’ admin account. The steps to do this are:
InterNIC and all public access servers.Always clear logs on both ends, and always use monitor (trace tracker) and proxy bypass tools to cover your tracks. Also, you should create an account with the bank you are about to steal from. This lets you transfer the money there, so that you only have to clear the logs at one bank, making the stealing process easy.
Note: Since you are hacking a bank - their security systems are designed to detect and prevent such activity quite fast, you need to make sure you are bouncing through all public access servers from InterNIC to avoid detection; @see this.
There is an Uplink IRC channel at this address. You will see us on there occasionally, so drop in and have a chat.
server: irc.uplinkcorp.net
port: 6667
channel: #uplink or #uplinkcorp
See archived webpage of Uplink’s IRC FAQ for more information.
Cool thing you can do is hack into the Secret Service File Server. You can find the systems IP by hacking the Global Criminal Database and looking under the links. The password is always vu8fks903dhd42e. There are 4 files on the server, named:
The really strange thing is that this game was written before the war in Iraq happened.