Ascii Sector Wiki

Mod for ASCII Sector 0.7.2 that redecorates the Nexus ship's interior to make it look better and to have fewer annoying obstacles in the way every time you walk from the hatch to the cockpit. No gameplay change i.e. ship won't get faster or anything, it's just how it looks inside. Savegames remain valid.

Only tested with Linux; in theory it should work on Win and Mac, too, if you manage to get a bash script to run. Save the code to a file, mark it as executable and run it in ASCII Sector's top directory. The script makes a backup of the one file it changes, still, no guarantees. Feedback welcome.

See more detailed description at start of patch itself.

#!/bin/bash -e
test $# = 0 ||exec cat <<\EOF
 Improved interior design of the Nexus ship of ASCII Sector 0.7.2.   --JR03/2021

 Main reason was to remove obstacles to get faster from hatch to cockpit, so
 annoying on every single stop: Shortened big walls in middle of ship, I kept
 bumping into them. Removed separator between conference room and stern area, no
 more needing to navigate doors. Aligned cockpit door with console, just run
 through and launch. Moved table so it's less in the way and looks better. Moved
 door in left big wall upwards to make it less pointless; faster path to cargo
 bay. Would've loved to move locker closer to cockpit in case of intruders, but
 locker locations are hardcoded in the binary. No wonder it's closed source,
 code must be a mess!

 Also changes to make ship look nicer: Each cabin got a window, except the one
 in the ship's center; made that bigger instead, added 2nd chair and plant. Also
 special vantage point with panorama window and chairs for stargazing. :) Ship
 also more symmetrical now. Lots more plants. Bigger cockpit with 2nd console
 and larger windows. Shaved off cargo bay corridor to improve field of view from
 cockpit, before, pilot would stare against outside of corridor wall. Had to
 move cargo console, otherwise scooped up passenger could get trapped if cargo
 was almost full. Larger cargo bay door to get to console easier. Moved other
 cargo corridor door sternwards, because corridor stub didn't look good. Added
 window in conference area.

 Savegames remain valid, unless you're standing inside a Nexus somewhere that's
 about to be turned from open space to a wall. Only tested on Linux, but ship
 data files identical on Win and Mac, so patch should work just the same if you
 can somehow manage this bash script to run. On Win you'd appearently need to
 install the "Windows Subsystem for Linux" first? Does this include 'stat', 'cp'
 and 'dd', too? Mac can run bash, I've read, but I have no clue where the files
 are located, so the script will likely not find them. Feedback welcome.

 On Linux, as far as I can tell, everything is fine. The script does some basic
 checking and backs up the file before changing. Still, use at your own risk.
EOF

unset ALT FILE
while read ADDR DATA; do
	test -n "$ADDR" -a "${ADDR#\#}" = "$ADDR" ||continue #skip comment
	set -- $DATA
	# ALT/FILE lines declare (expected) sizes and names of files following
	# data lines apply to. ALTs are optional alternative patches for the
	# concluding FILE i.e. 0-∞ ALTs + 1 FILE form a group from which exactly
	# 1 patch must apply. If ALTs aren't followed by their own data lines
	# then those of the following ALTs or the final FILE are used.
	# ALTs/FILEs can't have comments, file names might include a '#'.
	if [ "$ADDR" = ALT -o "$ADDR" = FILE ]; then
		SIZE="$1"; shift
		# We only 'stat' file size, change to 'cksum' if needed.
		if [ ! -f "$*" ] || [ "$(stat -c%s "$*")" != "$SIZE" ]; then
			# No match
			if [ "$ADDR" = FILE -a -z "$ALT" ]; then
				echo "Error: No suitable '$*'. Aborted!" >&2
				exit 1
			fi
			test "$ALT" = open ||unset FILE #end of data
			test "$ADDR" = FILE &&unset ALT #end of group
			continue
		fi
		# Match
		if [ -n "$ALT" ]; then
			echo "Error: '$*' ambiguous. Aborted!" >&2
			exit 1
		fi
		FILE="$*" #expecting data
		test "$ADDR" = ALT &&ALT=open #group matched
		if [ ! -w "$FILE" ]; then
			echo "Error: Can't write '$FILE'. Aborted!" >&2
			exit 1
		fi
		if [ -e "$FILE.bak" ]; then
			echo "Backup '$FILE.bak' already exists. Bailing out!" >&2
			exit 1
		fi
		cp -av "$FILE" "$FILE.bak"
	else
		test -n "$FILE" ||continue #data doesn't apply, skip
		test "$ALT" = open &&ALT=applying
		for DATA; do
			test "${DATA#\#}" = "$DATA" ||break #skip comment
			echo -ne "\\x$DATA"
		done | dd seek=$((0x$ADDR)) bs=1 of="$FILE" conv=notrunc status=none
	fi
done <<\EOF

# Nexus ship data
ALT  4199 Resources/data/205.shp
FILE 4199 data/205.shp
# Char map
0053 9B 74 9D 82 D5 84 EE FC 25 DD 55 11 F5 2D E0 7B 03 FC 8C 30 EF AF EC BA
006B 71 48 3D 5B 7D 9B D8 AE C0 62 43 BD CB E0 C5 AA F5 62 C5 49 3E EA 4E 91
0083 00 61 F6 56 35 B8 DC D2 C3 87 12 B8 1D F4 13 C6 D3 7F 14 0B 34 7D E7 D9
009B 1D B8 B2 E2 43 11 C0 93 BF 4B FB 4A 5D D5 24 AD BC CE 97 9E 2F 4C ED 20
00B3 B0 21 BD 2F FC DA AA 10 20 32 59 5C 8B A2 3B 67 68 BF 03 14 EA D8 BB F9
00CB 1E 17 E8 EE 8F 22 FD C4 74 5D 30 20 BE 55 98 CA 34 D1 CE 7F A4 5B 2D 62
00E3 5A 01 57 83 60 95 16 B9 D2 48 9D FC 7D 12 1C 59 1C E4 9F 5E 7D 25
0111 B4 FA 23 47 D0 80 C1 B6 EF B4 0F AF 97 ED 2D DD CE 4C 74 B9 32 A4 C2 2F
0129 82 88 86 93 38 82 F0 CD 30 7B 6A A7 1B B9 1B 75 A6 E2 5E 53 E4 BD A5 2D
0141 A6 E3 DE 4C 3F A9 CF C9 F1 82 FE 3E 35 71 93 CE 66 B6 30 86 B1 03 CD 08
0159 95 FC 3A 57 67 6E F2 80 F3 59 02 F5 7F 5E CC FE F3 E3 2C 96 26 E4 01 00
0171 94 42 FD 82 B7 20 3C 49 8B 48 D6 BC 21 B3 E9 FA A5 82 21 24 C4 70 11 60
0189 BD 40 06 EB DB 04 A0 41 BA AE B6 6F 28 09 ED 95 6D 74 A0 95 1E 34 C0 2D
01A1 41 C5 E2 08 E3 D4 38 E0 0D CB C5 3C B4 BE C6 B7 74 AB 90 31 49 E6 F9 3F
01B9 14 FE 98 2B 7E EF F9 89 B3 C9 A4 7C B9 A3 5A 00 62 14 07 37 46 44 B8 31
01D1 57 02 33 23 12 B3 A1 66 79 8F BA E9 D4 3E 6E 27 DF 9F 23 8B 59 34 D8 2E
01E9 5A A2 64 9F C1 02 02 C6 80
01F8 1D CA 1F 73 47 0E 35 11 8F BF 27 B4 4A B9 C3 0F A3 EE 45 98 0B 7B 7B DF
0210 CE EC 00 84 DC 7A E5 03 C7 01 1D 2C D1 04 67 AB 54 0C 8B F5 0A AB 65 5C
0228 02 23 25 D7 DD F9 D6 F6 29 14 CD 5B 99 89 01 CC C1 9A 50 ED 74 D1 07 8F
0240 DB 53 DE 0C 7C 07 95 C2 C4 CC CD 01 87 CA EB CB FE A2 80 6F 51 7A B3 75
0258 1C 9B 1C 22 8B 72 F4 6B B6 34 5B 7E 46 A7 ED 53 E8 D2 E5 70 F2 A8 4A ED
0270 A8 51 79 A9 0A A7 CE B3 97 94 73 A2 FD 82 9E 97 3B 76 2E A8 84 A7 57 A8
0288 EA 9D D0 DB BA 97 3B 70 3A 19 18 91 0E 8E 36 0A 94 2D 1D 26 BA BE 41 9B
02A0 EC 57 9A B9 8D 99 65 AC C3 38 2F 30 AE 7D 73 8B 8A B6 4A 20 23 1F 1A 3B
02B8 C2 91 85 F9 3A 22 DA EB 89 92 C0 ED FC 34 47 C5 81 BE 5C 56 13 84 4C 81
02D0 A5 92 54 B6 C7 EF CE A6 1D 9F 86 C0 60 A6 FC 51 71 2F A2 F2 7F CE B6 1B
02E8 FB 79 81
0396 23 7E A2 BA D6 81 F3 39 F0 DB C0 E8 3C CD 73 0E AE DC 08 7F 23 E5 95 F4
03AE 59 7A 74 D1 5B 03 9A 6E C4 02 A2 2E 36 56 B0 C0 0E 2B 05 68 C6 B2 E9 1D
03C6 F6 2A B2 16 2B 17 87 5B 66 31 E8 13 A1 82 1E 06 08 29 36 52 E5 F8 E3 28
03DE 84 BA 9E 40 BA BD
# Color map
058E C5 30 68 A5 72 66 F4 EE A8 C6 93 B3 D8 BB 3C 2F B9 69 E8 86 AF 28 ED FC
05A6 B4 91 B5 A3 D9 D7 4F D9 D3 3C E5 5C 5E 91 BA E5 D2 49 04 2A 34 B9 09 C7
05BE CF 44 FA B4 20 4E 0B C3 F5 5C F8 C9 F3 DE 9C 09 0A 86 06 FA 03 90 69 51
05DC AC 1B 5A 64 B1 08 B5 A7 A5 8D F1 EC 25 9E 7E 2E FD 5F 82 31 9D D6 C5 2F
05F4 2F 4E D8 59 BE 89 05 C9 B9 BC 1A 38 DF 66 A3 A5 8F 75 A0 E0 A5 E6 6D 77
060C 6B 74 96 38 80 A1 8A FC FC 17 0D 9B 8C 46 BB 88 63 CD A7 D8 CA 99 3F CA
0624 4D A4 B3 39 61 85 F1 FE 64 D2 F5 9C CE 1A 33 92 20 F8 90 A0 01 10 55 99
063C 94 D9 3F 5A 98 75 4F EB 32 B0 A7 1A 57 BE A6 0E 65 C4 E6 C4 DA FB 16 5A
0654 3D BB 89 E2 C3 3A 64 B1 EE 58 A4 82 BE 0C F0 2B 58 C6 AE 6F A1 80 C8 B5
066C 4F 7C 19 DB 51 38 C9 FA 79 0B C8 6E 8B EC 31 07 3C 4E 64 78 37 F0 FB 7A
0684 03 59 2F 02 18 D8 3B 40 C5 7F D8 F9 FC D1 89 EC 9C 39 66 CA C4 F1 41 E6
069C FB 77 EE F3 C6 FE D6 C3 4C C9 70 07 F3 CE 6F 61 1B 28 7D 9E 3F 25 41 16
06B4 A1 0A 02 42 F8 06 A4 FF 2A DB 9E 54 D2 E5 A5 71 8C 5D 44 0A 4C 5A F7 61
06CC 3F 32 AC
06D3 55 BF 2E B2 C4 16 84 2D 47 AD 1E DB 6E 88 88 92 A1 55 6C E2 06 9F 33 86
06EB 5B E4 C5 5F 9B BB 4D 16 0F B5 00 03 CF 1F 47 BC F1 29 21 A0 EC 85 1A 32
0703 17 CE 24 48 04 9C 21 97 42 77 01 3F AA 2A 38 09 2E 92 F9 DB 1B A5 41 4A
071B 56 15 00 2E 32 75 2A E0 38 A8 CB 58 EC D4 C0 62 0D 40 D0 A1 B9 A8 EF 24
0733 77 7F 50 E9 E7 7A 2C 2A 38 5C 66 20 29 51 1D AC 37 E6 07 DB CC 5F 2C AE
074B 5E 11 27 13 B5 A9 2A AF 3C 81 29 67 76 FA 73 A3 43 BF A9 6F 8A 77 8C 12
0763 3B 6F 21 63 79 47 D2 E2 31 FE 21 E5 BF 35 3E 3B DE 29 DA 1B 5D B9 F7 4A
077B 02 0C DE FB A3 CA 3A 5D E2 0E 7B D1 56 C1 04 00 F6 8C DE A7 D5 11 8C 3A
0793 DE E5 CA 85 AC E2 C4 DF BF D3 6B 25 79 F1 F1 B8 90 99 FB 5D 66 6D C9 89
07AB 32 46 D4 87 60 FE 58 4E 3E 09 E8 E0 DC 7F 35 37 D9 AE 6D B7 A3 78 86 27
07C3 9D 2F D2 1B A5
07D6 A5 3E 02 A2 D6 20 06 43 02 03 CD FC E0 03 35 4C 99 55 60 7B 0E B3 58 F9
07EE D7 65 15 AE 5B 20 5E 54 CD A3 7A A3 A2 FD 67 20 51 4A 25 E9 55 F6 EC 54
0806 A5 0C 84 55 D0 BA 5A 73 33 E3 C4 DE 69 AE 73 ED E6 06 CD D2 E4 34 C5 6E
081E B6 38 5B 7E 6C B1 E2 3A 2A 2E 9F F2 93 5C 6A CC F7 06 87 87 A1 FB B1 67
0836 DA C5 85 BB 17 10 D2 1C EB B4 F6 9D 46 41 11 9B 99 8A 2F 6F 86 F4 EA 6C
084E 9A 9B 0E 4A C2 08 A1 35 93 A1 54 ED F2 14 33 90 AA D0 C5 87 CB 86 28 0B
0866 A9 36 97 5D EB DE F7 A2 5A 07 3C 1C D9 EA 36 FD 56 90 63 C4 B7 61 06 D7
087E CC 5C 56 E0 87 C1 F4 00 0B 7F 8C 8B 75 A3 4B 09 1A F8 98 84 64 3B F5 4C
0896 98 4C 18 F9 16 F1 69 A6 0E 4B 44 60 6D 95 E3 52 F9 02 4B 5E CF DC F0 96
08AE 73 8F F1 F2 BF 74 82 8B C2 E2 69 E6 48 E3 86 4F 06 1E C6
08F1 50 5F AE 41 32 0C DE 6B 8A 78 22 4C 4D 3B DE 54 46 FC C5 8A B5 F0 D6 D9
0909 8A 15 76 69 F1 CA 22 84 EA E8 1E 15 1C AE 2D F0 54 BF FD D1 A3 60 8B A7
0921 A9 8D 88 27 F9 1D 5E F1 94 F6 0C B0 13 7A D9 CF 98 E9 0C 2E 62 2A 44 65
0939 29 1F 34 DA 17 75 9E 6C 48 6C ED B4 F6 C7 AE 3C F5 4D 18 8B C9 C7 AF BC
0951 AE D1 4E 44 6F 8E 65 B1 58 9A E7 0C 9A 79 4C 05 1A EB 4D 03 54 7A 9C BD
0969 32 C9 B3 86 53 E7 34 61 CF CA CE DA FF 52 55 E8 C5 E2 9B 20 16 A5 B9 52
0981 93 73 9A 83 04 35 B3 EC 2F FD 5E 01 36 E7 71 FF 32 58 D1 C0 32 E3 91 98
0999 AB BA 2C CF AA 83 9E 9D F5 DA 51 98 A2 FA 3D C1 D5 B7 D0 A6 5A F3 82 0C
09B1 98 B6 98 3F 38 94 76 BD D4
# Room map
0B30 70 86 F7 DC 3B 88 6E E6 A7 D5 D3 8E D5 99 1D D9 AB 46 7E 3F 30 5B 55 D8
0B48 87 D5 36 F6 C5 69 D3 E8 AA 4D 6F 1B AD CA 59 2D 01 38 45 67 B0 89 CE 63
0B60 47 21 F0 61 80 40 87 E5 78 5C 09 5C 3A 84 3B F7 B5 B6 F6 9B 27 A1 74 55
0B78 F0 62 BA 85 44 5E B0 FB ED D7 1A 44 42 F1 EB 1C 40 9E 14 D9 FE E2 98 D2
0B90 4E 9D 8D BA 02 A3 A6 21 17 3C 31 2C 0C 37 01 3B E4 83 D6 D5 4E 9A B8 84
0BA8 02 C2 07 EE
0BCD D2 8F FB 43 63 43 14 44 F7 9E 99 53 31 43 2E 29 0B 37 39 D7 93 54 45 9E
0BE5 C7 E6 96 53 F2 17 09 54 AA D0 FA 0F 7A 32 7C 10 54 B9 E9 61 71 D4 E0 97
0BFD 73 04 AA CF AD 50 BE 01 37 8D E8 F2 13 DB 7F FA 6D 1B 2F D7 8C 08 1D E2
0C15 67 4C 71 2C BF 04 77 DB 8D 73 B0 88 F4 9C E2 56 D3 F7 62 34 AD A4 D7 6F
0C2D A6 72 77 62 5B F8 C1 93 E1 54 9A 8E 14 58 FB A5 35 10 7F 6B CD 2F 50 B0
0C45 51 AA C0 E5 15 83 25 28 73 7E 4B DD 4C B1 62 B0 46 9E B2 82 8B 3E 67 2A
0C5D 5A B8 6E 95 44 64 BB 9E 24 0B B3 76 B0 70 AF 40 BA 1E 1C 11 DE 91 A6 19
0C75 A8 3D 71 B6 FF A9 53 EC DF A7 41 F4 F9 FA 39 41 A1 ED CF 8B 12 93 A8 CF
0C8D 9D 19 DB 30 57 C4 60 58 B3 3E 6B F1 53 F1 48 C1 9C D5 7F F7 C7 5C C4 69
0CAC B1 67 C0 7A 7A F0 CA 09 DF CA 91 E5 30 85 58 2F 7C FC E4 A0 58 C8 6F 60
0CC4 83 14 B8 14 5F 3C 06 6F A9 D2 70 8A E8 55 26 AE 98 1E B3 6F 10 30 0A D5
0CDC B2 97 D1 04 4D 6F 5F A2 44 08 A9 D1 55 3E DE A3 4C 0C DB D9 6B 98 FC 14
0CF4 7B 94 A4 CC B1 4D D8 4D 3A DD 3E 4A C6 54 50 42 2D FF 7B C2 01 14 85 6D
0D0C EB 97 23 B0 67 7E 2B 3D 4C 6F B9 33 D5 4B D9 6E F0 7E D7 95 C8 51 2A F9
0D24 B9 78 1E 52 21 2C AD F3 89 33 9D C1 94 D9 81 34 20 7F 1C 6E 63 D9 CD 7E
0D3C 7B 7A 4A 7C 71 CF ED 70 8D 5B 89 1E CB 13 66 93 F5 FF E6 B7 F3 CD 15 ED
0D54 05 62 93 CD FE 28 59 83 A3 48 5B 82 D6 D5 01 31 3A 17 D6 46 03 31 37 88
0D6C D2 49 F9 33 0A 6F EB CB 62 62 EA FB DE 96 11 90 C2 C0 59 71 30 C3 C9 D4
0D84 9F B3 C1 69 82 B6 0D ED 53 1D 4D B8 7A DF 07 1A 51 EC 8A BF 6A 03 86 99
0D9C 99 51 54 F0 95 0F A0 01 8D E7 F3 49 0E DD 0F 44 CF E4 3C 51 F3 72 E7 37
0DB4 7F CE C0 9F D8 1E D0 80 5B C2 B4 AC 0C D4 88 1F 9F 90 8B 45 0C 7B D9 46
0DCC B5 5D 53 E7 E1 38 D4 73 7C 80 0A 25 69 8D E8 54 4D DA 13 93 1B 89 15 68
0DE4 DE 2A 32 9D F8 B3 F7 07 25 01 EA E9 32 0A 74 67 A4 D9 D6 E3 8B A6 90 DD
0DFC 8B 65 E8 7C BF 55 66 E6 F4 74 1B 93 B4 55 10 10 FE EC 47 3E B1 80 CA B1
0E14 5E 91 80 C9 AC 70 04 97 27 B8 F1 ED BA A9 E4 49 E9 BC 72 73 CC 81 EE A4
0E2C D3 B7 F0 DA 24 7B EB 6C 5F 4C FD 01 61 DC C6 C1 F6 09 DA 26 FB 3C 12 19
0E44 F6 A5 0C 76 02 02 2B 85 F4 BC 22 8F 43 8A F8 7E 67 BA 2E 5B A1 5B DA 67
0E5C 5E 83 55 CD 9C B8 55 07 97 24 01 EB 68 3B 04 AA C5 14 D6 FD 52 97 FC A0
0E74 2E 56 85 D4 0C 27 DA 11 E9 FB 8E CD 09 DC 67 41 6D 6C 04 7B C1 D8 10 37
0E8C 56 6F E5 9D 88 EB F6 EF 16 32 6C

EOF
echo "Done."