I love the 1990-ass design of Railroad Tycoon's save system.
not "which directory do you want to save your game?", but "which drive has your save game disk?"

You know, cause you'd put the game in drive A:, and if you were fancy, you'd save to a blank disk in drive B:

Too poor to have two drives? Gotta swap them to save, then swap back to keep playing.

okay, now that's interesting. So, backstory info:
Railroad Tycoon (1990) stores most images as .PIC files. The format is unknown but seems to start with either 06, 07, 0F, then a 00, then the width and height as uint16s. You can do the VN-trick to decode them: rename your target file to one of the ones the game shows at startup, and it'll display it for you. (credits2.pic, for example)

now when you save your game, it saves two files: RR1.SVE and RR1.MAP.
(The 1 can be 0-5 depending on which slot you save into/if it's an autosave).

Now the obvious guess is that the game saves things like "how much money you have" and "where your trains are" in the .SVE, and the current state of the map in the .MAP file, since the game world dynamically changes over time.

Here's the weird part: The .MAP file? It's actually a PIC!
I started a game in Western-US and saved my game after making a quick railroad, and then renamed my RR1.MAP to CREDITS2.PIC and started the game. This is what I got:

now that's super interesting because PIC files are compressed!

And the game can SAVE them, not just load them! that's unusual for games of this age!

interestingly the images in the MAP files are set to 320x200 (like all the other images), even though they're clearly actually 256x192. I guess it was easier to write a compressor/decompressor that just assumes 320x200.
anyway this also lets me do something I've always kinda wondered about but can finally tell for sure:
Yep, the game is dynamically generating the maps when you start, not just animating them fancy. Here's two starts of a Western-US map:
the rivers are identical, though.
And here's why: The WESTUS.PIC file is used as the base, and as you can see, it's got some basic stuff laid down already:
So the game takes that, then overlays mountains, industries, and cities, using some kind of procedural generation.

that's why it has to save the whole map when you make a save game: because your map is unique.

(and presumably re-generating it from the seed would take too long on some of the computers this game ran on)

arg. I can't easily hack the game's binary because it's compressed using LINK /EXEPACK AND it uses overlays, which apparently means the offsets to the overlays are encoded into the exe... based on the compressed version. So if I decompress it, the game won't load at all.
UNP says the game has 87365 bytes of image and 109305 bytes of overlay.
that's more overlay than non-overlay! HOW MUCH OVERLAY DO YOU NEED, MAN?
okay "unp e -g" seems to have fixed it. the regular mode messed up the overlay, but merging it in fixes it
awesome. I have officially broken it. But I have broken it CAREFULLY.

okay so I hacked it to go into an infinite loop after showing the first image of the intro sequence, then wrote a script to copy every image into the first image of the intro, start dosbox-x, then wait a couple seconds then screenshot it. So I now have all the images.

Here's the faces:

man I thought this game just had a bunch of random white-guy (well, redish-guys) portraits that it matched with some names of historical-guys-who-built-railroads.

NOPE! every name is matched to a face.

Here's all the names from the executable
I don't think these guys actually show up in the game. Interesting.
so according to the manual, the railroad operators come in three flavors: builders, robber barons, and mixed.
But looking at the profiles in the EXE, there's 4 numbers associated with each name, in the range 0-4. There's no correlation that I can see.
Interesting. There appears to be some code for verifying disk sectors: Given that there's no other code that works at the sector-level, I suspect that's disk-based copy protection. Like, they intentionally broke some sectors on the original disks, then made the game fail if those sectors weren't CRC-fails?
which is weird because the game has manual-based copy protection and supports being copied to the hard drive
I'm gonna have to dig up my original disks and image them
ahh, nope. not copy protection: I checked and the game calls this function to see if a disk is valid for saving onto, and it does it by looking if it can see sector #2 on the given disk drive.
help my train has negative horsepower
by manipulating the horsepower, you can get the grade/cars calculation to take some weird turns. This train cannot move if it's on flat ground with only 1 car, but as soon as there's a hill or more cars, it's a speed demon

interestingly, these values don't seem to actually correspond to train performance.

I set my train up to have a very high max speed with lots of (positive) horsepower, and it managed to drive 26 miles at 42 miles an hour.

that's... better than a plain 0-4-0 Grasshopper, but not by the amount you'd expect

@foone I like that it's a bug. Namely, grasshopper 🦗
@foone That usually means the reverser lever is badly connected. /j

@foone
The 1st and 3rd values are higher for builders, the 2nd and 4th ones for robbers. (But the 4th value is even lower for mixed characters than for builders.)

1st value:
robbers: min=0, max=3, avg=1.3, median=1.0
mixed: min=1, max=4, avg=2.3, median=2.5
builders: min=1, max=4, avg=3.1, median=3.5

2nd value:
robbers: min=1, max=4, avg=3.0, median=3.0
mixed: min=1, max=4, avg=2.0, median=1.5
builders: min=0, max=2, avg=1.3, median=1.5

3rd value:
robbers: min=0, max=3, avg=1.1, median=1.0
mixed: min=0, max=4, avg=2.0, median=2.0
builders: min=0, max=4, avg=2.8, median=3.0

4th value:
robbers: min=1, max=4, avg=2.7, median=3.0
mixed: min=0, max=4, avg=1.5, median=1.0
builders: min=1, max=3, avg=1.8, median=1.5

@foone Are these computer-controlled opponents? I'd assume the numbers are parameters for the AI "personalities".
@wkrick that's what I assume too, I just don't know how to correlate them to the 3 canonical personalities
@foone Maybe the 4 numbers don't correlate to the 3 types. Maybe they're additional behaviors that are independent of the 3 types. Did you ever play Monopoly on the SNES? Some AI players would refuse to trade, some would aggressively buy every property, etc... Or maybe they indicate starting parameters like amount of money or something.
@foone Cops and anarchists?
@foone is that a dalek with a cigarette?
@foone curious if this uses the same format as Civ I
@foone are they sprites from Civ1?
@foone ...leftovers from Civilization? I don't recognize those particular units, though, and I'm not sure the game ordering is even right there.
@LionsPhil civilization was later! and I'm not sure these guys are in civilization either, though I don't have a full sprite rip on hand
@foone Interesting! It's known that Civ code was basically "forked" from RR - and since Civ 1 released in 1991, it's possible they already worked on it when RR was still in development 🤔
@foone they actually look according to photos in Wikipedia (as far those who I know). Good portrait work was done here!
@foone All the goldbox games have a lot more overlay than non-overlay 🙂
@foone This exact combination is also why it took so long to develop translation patches for the PC-98 Touhou games.
@foone oof, flashback to working on business software back in the 90s that used overlays
@foone This was one of my favorite games at the time and I had absolutely no idea the maps were different each time!