BRR9 Custom Signal Systems - how to do

Step 1

You'll need a subfolder, placed in the BRR folder, for your new signal system. You can create a new empty folder, or you can copy an existing signal system and its contents, if you wish to create your new signal system by modifying one of the existing systems (recommended if you're a beginner and if your new system is more or less similar to one of the existing systems).

Step 2

Now place all the signal/relay bitmaps in the folder of your signal system. You can either create whole new bitmaps or modify existing ones. Note: the bitmaps of other peoples' signal systems are most likely copyrighted, so you must ask permission first from the author, if you intend to distribute the signal system.

The bitmaps must be named in the same fashion as they're named in BVE. For example Signal0.bmp in BVE is the bitmap for 2-light signal showing red aspect. If you want to replace this image with a custom one, the custom bitmaps' name must be Signal0.bmp. You can use Signal0.bmp ... Signal20.bmp and Relay0.bmp ... Relay3.bmp file names.

The bitmaps must be compatible with BVE: the width and height of the image must be 2 raised to X power, and blue (0, 0, 255) is the background color.

Step 3

The name, description, specifications and behaviour of the signal system is written in a file called sigsys.txt in your signal system folder. You'll need to create one from scratch or copy and modify an existing one.

Syntax of the "sigsys.txt" file

The first line in the file contains the name of the signal system, which can be up to 15 characters long. Immediately after the first line is the description and author information of the signal system. This can be up to approx. 500 characters long. The description section is ended with the command #end# , which must be on its own line.

The next section is the speed section, starting with #speeds# command on its own line. This section contains the speed limits for the three aspects (only used in csv-routes), written in the actual csv-commands. (See BVE csv documentation for detailed instructions.) The section is again ended with an #end# command placed on a line of its own.

#signaldef# is the command for starting the signal definition section, #end# ends the section as usual. When using custom signal systems, BRR replaces all csv/rw signal commands of the route file with the contents of this section. You could for example write .Sig -2; "Home"; -2; 6; 1, and all the signal commands in the selected route would be replaced with this piece of text. The problem is that this is csv-command, and would cause problems if the selected route was in rw-format. The maximum length of the #signaldef# section is approx. 2000 characters.

#relaydef# is similar to #signaldef# section, but it concerns relays.

Syntax of #signaldef# and #relaydef# sections

Since the commands for placing a signal and the command parameter separators etc. are different in csv and rw routes, you shouldn't use them. Instead use these:

We could now define the signals like this: §s -2 §p "Home" §p -2 §p 6 §p 1 §e , but this isn't very useful since the routes have signals, which have different names, types and positions. We can "grab" the parameters of the original signal command in the route and use them in the signal definition with these:

To create an exact copy of the original signal of the route, write: §s §a §p §n §p §x §p §y §p §t §e , this copies the parameters of the original command. In the same way write: §r §p §x §p §y §e , in the #relaydef# section to have all the relays of the route to maintain their original form. You'll find brf-commands useful for e.g: testing which type of signal the original signal is, calculating new positions based on the original signal position, etc. but the brf-commands are another story and explained in another documentation. Also take a look at the sigsys.txt files of the other signal systems to learn more.

Warning

Remember that when e.g. testing your signal system, the files will only be swapped back to normal when you start BRR the next time. It's good practice to start and quit BRR after you've returned from BVE during testing. Otherwise you may accidentally end up overwriting one of BVE default signal bitmaps with a custom one.

Back to main page