Please note that earlier versions (as far back as v0.4b) are available for download if required at https://www.dropbox.com/sh/wvruss55cfzdvgw/AAApyZeGaIRyJAtS6clOuo0La?dl=0
Only significant changes listed (latest changes first)
Version 2.0.0 Beta (23/08/17)
The major change here is compilation using Embarcadero’s new (free) C++ Builder compiler version 10.2. It’s released as an experimental version because although I’ve tested it quite thoroughly there may well be things that I’ve missed that will only come to light during operation. Please let me know of any problems or unexpected behaviour.
Some minor changes have also been introduced as follows:
Railway file loading: The dropdown box has been removed. I and others found this a bit tedious so now all railways are displayed together whether .dev or .rly files, making loading quicker and easier. Just be sure to select the one you want!
Timetable change: ‘Fjo’ (finish join other train) has been added as an option immediately after ‘Snt’ to allow empty stock to be picked up. Richard Gaede asked about this some time ago and I hadn’t until then realised that it wasn’t possible.
Help system: This is now up to date using .chm files. The earlier Windows Help system has been discontinued and wouldn’t work on newer operating systems.
Train information: ‘Show status’ and ‘Show timetable’ are now active on startup so they don’t have to be selected. I always keep these active during operation and I suspect others do too, so it seems sensible for them to be available immediately. If the aren’t wanted then they can be hidden in the normal way
Version 1.3.2 (04/07/15)
A few fairly obscure errors have been reported and discovered since the last version over two years ago and these are corrected in this version.
Fault reported by Glenn Mitchell 14/04/13. Failure occurs when try to set automatic signal routes prior to operation if there exists a junction where there’s a preferred direction set on the through track but not on the diverging track, and where the diverging track links to a signal. Corrected by disallowing an automatic route in these circumstances.
Found that could set a route across a fouled diagonal (i.e. where a route is already set on the diagonal track) if the route start element is adjacent to the diagonal. This was because fouled diagonal checks were not made for first element, but these are now included.
Fault reported by Ian Walker 18/04/13. Timetable edit screen stays up when click cancel on file open dialogue panel – should go back to base mode. Now corrected.
Fault reported by John Phillipson 09/04/15 relating to a train split. This was traced to a program error where an area of memory could be overwritten after the new train was added following a split under some circumstances. The functions requiring changes were quite extensive so as well as local testing they were compiled as a pre-release beta version that John kindly tested over the following weeks without any new problems coming to light.
Fault reported by Carwyn Thomas 24/05/15. An incorrect SPAD was given when a train passed the last signal before a continuation, and when he tried to remove the train under signaller control an error was generated. There were two faults involved, one relating to the train removal – due to the front of the train having passed out of the continuation and the program trying to access the front element, which of course no longer existed. Corrections were made to the relevant functions. The SPAD error was found to be due to two trains exiting the same continuation in quick succession, when the second train passed a signal facing in the opposite direction when the last signal before the exit was still in course of changing back to green after the first train had exited. This was also corrected following investigation.
Version 1.3.1 (30/03/13)
A number of errors have been fixed in this version as follows:
- Letter keys (‘a’, ‘d’, ‘w’, & ‘s’) entered in distance/speed boxes were also found to move the screen viewpoint which was not required in these circumstances.
- The miles/chains & speed conversion boxes stayed on screen after distance setting when another button was clicked in Build/Modify mode.
- The program locked up if points were in course of changing when it was deactivated by another program becoming active. Changing points are now cancelled when the program deactivates.
- A train’s maximum running speed is set to a joining train’s maximum speed if it is less than the current train’s maximum speed, but if the joining train is a service continuation then its maximum speed is zero until it appears on screen, and in this situation the maximum speed of the joined train is set to the minimum value which is 10km/h, which is not what is required. This version corrects this error, which came to light during development of Ian Walker’s Chiltern Railway. Hence when that railway is published this latest version will be required to operate that railway properly.
Version 1.3.0 (28/10/12)
This version corrects a number of obscure faults and includes keyboard navigation using either the cursor (arrow) keys or, for left hand use, ‘w’ (up), ‘s’ (down), ‘a’ (left) and ‘d’ (right). My thanks are due to an anonymous user for suggesting navigation using the keyboard.
The faults corrected are:
- If a train was removed by the signaller when occupying an automatic signals route then the signals stayed as they were when the train was present. This version resets the signals.
- If a train entered the start of an automatic signals route under signaller control and stopped when occupying one or two elements, then changed direction and moved back out again, the first signal stayed at red. This version resets the signal.
- Train status information has been changed to show speeds in whole numbers of km/h rather than including the first decimal point. This has been found to reduce (slightly) the flickering that occurs when this information is visible. The flickering is due to the screen refresh processes that are part of the Windows operating system and there seems to be little that can be done in the application software – I’ve tried but with only limited success!
Version 1.2.0 Beta (24/06/12)
The main new feature from the users’ perspective is the addition of a ‘Preset automatic signal routes’ button that is available when ‘Operate railway’ is selected and ‘Pre-start’ mode is entered. This was added in response to a recent suggestion by Keith Hazelton (GoonerKeith) and because I was already making other significant changes to the routing functions as described below. The new button appears as in place of the ‘Call-on’ button which isn’t needed in pre-start mode. The call-on button now appears when the ‘Run’ button is clicked. When the new button is clicked automatic signal routes are set on all track sections without points, crossovers, ground signals or level crossings that have single preferred directions set and that lie between non-ground signals or between continuations and non-ground signals. Hopefully this feature will save a lot of time in setting up these routes manually. The new button is available providing there are no existing routes present.
Other changes were made to correct a number of errors involving diagonal crossovers that I had noticed and I am sure others had too although though no-one had complained. These all relate to situations where there are crossing diagonals, i.e. diagonal track elements that cross other diagonals. There are lots of combinations of these – for example :-
The significant thing here is that routes and trains that cross at these points never occupy the same track element at the same time, as they do if they cross at a normal single-element crossover. I had taken account of these situations when setting routes – checks are made for an existing route at a crossing diagonal, but had completely overlooked related situations, i.e. that trains should crash if they meet at such a crossing; a route shouldn’t be settable through a train that is using such a crossing; and an existing route should be cancelled if a train crosses it at such a crossing. All these omissions came to light while playing with the simple Mile Oak railway that is used in the timetable tutorials. You can imagine I’m sure how I groaned when I made the discovery.
At the same time I decided to change a number of things that had been annoying me, and I’m sure you too. The first was to keep the existing train and track information settings (show or hide) when new session files are loaded. Previously they reverted to ‘hide’, and had to be reset to ‘show’ each time. Now they start off as hidden when the program is first started, then remain as set by the user until the program is terminated. The second was to allow an unrestricted route to be created into an occupied platform for a train waiting at a signal and still allow it to be called on. Previously all points into the platform had to be set manually, and any route (apart from an automatic signals route) , would prevent the call-on being offered. Now it’s much easier to create the route and have that set all the points. Third was to prevent an automatic signal route from being created from buffers – otherwise there’d be no way of allowing a train to reach the buffers! This now matches the corresponding restriction of preventing such a route being set into buffers which was present before. Why I didn’t prevent both at the same time I don’t know. I also noticed that if the ‘About’ box was displayed in pre-start mode, then when it was removed the mode reverted to paused mode. Now the mode stays the same as it was before the box is shown.
As you can see there have been many changes, and hence the ‘beta’ version. I have done a lot of testing of the changes and new functions, but as ever I can’t test exhaustively, so there may well be errors still present that I hope you will tell me about if you find them – thanks.
Version 1.1.4 (23/04/12)
This version corrects two errors and makes one minor change. 1. Location name error corrected: in earlier versions if a named location consisted of a single element, and the name was erased or changed, the text of the original name remained on screen and had to be erased separately. 2. Performance log error corrected: in earlier versions if one or more trains crashed or derailed then the filed performace summary stated that no score could be allocated because there had been no arrivals or departures, whether or not there had been. 3. Minor change: if the ‘NEW HOME’ button is clicked in zoomed-in mode the program now advises that a change has been made before exiting, to allow the railway to be resaved. This saves the amended home position.
Version 1.1.3 (24/12/11)
This introduces a new check that prevents railways being operated with two adjacent level crossing on the same track. Earlier versions had permitted this but very strange things happened during operation when routes were set and trains attempted to go across the crossings. If a railway is loaded into this version that has two adjacent level crossings saved by an earlier version, then a message will be given saying that the railway will be loaded as a new railway. The ‘link track’ button will reveal the offending crossings so that they can be removed. My thanks to Bjorn Verzijlbergh for notifying me of this error.
Version 1.1.2 (04/07/11)
Two errors have been corrected in this version – both notified to me by Matt Blades – many thanks Matt:-
Firstly a fault prevented automatic or preferred direction signal routes being set in certain fairly unusual circumstances – due to an internal program test giving a false positive. The test has now been corrected.
Secondly Matt noticed that if the window was changed while a route was being set, then on returning to railway.exe the program froze. The deactivation detection routine in the program has now been improved to detect this situation and to cancel the route being set.
Version 1.1.1 (27/04/11)
An error has been corrected whereby a session that had been saved with a regional setting (Control Panel – Regional and Language Options) that used commas for decimal points rather than full stops would fail to load. Thanks for Jorge for notifying me of this error. A correction has been made so that a session file should always load correctly with the same regional setting that was used when saving it. Note though that a session file saved on a computer with a regional setting different to that on which it is to be loaded will fail on loading if it uses a different decimal point character. In this case first change the regional setting to the country of origin of the session file, load the file, then change the setting back to normal and immediately resave the session. The newly saved version should then load normally.
It had been noticed that level crossings displayed as always open horizontally on saved bitmap railway images regardless of track direction. That has been corrected in this version.
Version 1.1.0 (13/04/11)
The main change in this version is the addition of level crossings. Details of their operation are given in the user manual in section 3.1.1 on page 8, and in program help in section 3.1.1. Note that if earlier versions of the program try to load railways or sessions containing level crossings, the load will fail.
Other minor changes are as follows:-
Routes may now be cancelled without route locking if the first train on the section is stopped.
It was noticed that the screen grid did not expand for resolutions higher than 1024 x 768, now it does.
Location naming functions have been tidied up – earlier, when combining two named locations the second name stayed on screen, now it is deleted; and earlier it was possible to give a timetabled location the same name as a continuation, now it isn’t.
The appearance of diagonal ground signals has been improved as the sloping top didn’t stand out well enough.
Version 1.0.0 (02/03/11)
The program is judged to be stable enough now after almost a year of beta testing to be released as a production version. The GNU version numbering system ‘a.b.c’ is used where ‘a’ represents the major version number, ‘b’ a minor version number, and ‘c’ a minor patch or bug fix.
The only change from beta v0.6c is a change to the performance scoring system, after I realised that I had failed to penalise incorrect exits, unexpected exits, and missed events other than missed stops. These are all now incorporated, so a session file loaded and then immediately resaved will be seen to give a different (and lower) performance score if any of these events had occurred during the session.
Version beta 0.6c (20/02/11)
In the last version (0.6b) the revised headcode validity checker was left in an incorrect state. In effect it failed to discriminate between a time and a headcode, with the result that chronological timetables (created when exporting timetables) became completely corrupted. This version corrects the error.
Version beta 0.6b (13/02/11)
There are three enhancements, two changes, and two error corrections in this version.
Enhancements: 1) Train headcodes are now much less restricted. Any alphanumeric character (upper or lower case letters or digits) may appear in any of the four headcode positions. The only condition is that repeating services that have headcode digit increases between repeats must have digits as the last two characters of the headcode. This change is because there are increasing numbers of railways being developed that don’t use the standard British ‘digit letter digit digit’ format. Note that timetables that use this feature will fail to load into earlier versions of railway.exe. Note that the earlier requirement to add “;0000” after the timetable start time to allow (slightly) less restricted headcodes is no longer necessary. 2) The train status floating window now includes, for repeating services, information about the repeat number. This takes the form of ‘First service’, or Repeat service no. 1′, Repeat service no. 2′ etc. This has been included because trains that join must have corresponding (i.e. the same) repeat numbers, as well as the correct headcodes, and this feature allows any discrepancy to be seen. 3) Performance scoring has been added at the end of the performance log. Points are deducted for late running based on overall lateness, and increasingly severe deductions are made for missed stops, SPAD risks, actual SPADs, derailments and crashes. A percentage score is given along with a rating, which runs from ‘Perfect’ to ‘Abysmal’, or, if there has been a crash, to ‘Catastrophic’.
Changes: 1) Formerly when a timetable had been loaded for operation, and then a timetable was loaded into the timetable editor, the loaded timetable stayed in place. However changes made to the editing timetable also affected the loaded timetable, which could cause problems in some cases. Therefore, now, whenever a timetable is loaded into the timetable editor any other loaded timetable is removed, and to resume operation a timetable must be loaded again. 2) During timetable editing, when pasting entries, the current (highlighted) entry remained at the same position as before the paste. Now the current entry changes to the pasted entry (as it does when new entries are inserted).
Corrections: 1) Glenn had reported problems with trains failing to join correctly when operating Plenwell IECC. The reason was found to be failure on my part to update the ‘Running’ status of trains that were continuation services from earlier services. In fact the ‘Running’ status was only correct for trains that were created using codes ‘Snt’ or ‘Snt-sh’, all other start codes continued to use ‘Not started’ as the status, which was clearly incorrect. I fear that others will have found this error but probably blamed their timetables when they should have blamed me! My apologies to all that have been affected by this error, and my thanks to Glenn for reporting it. 2) An error log file was sent in by Rander of the UKTrainSim forum, which occurred during timetable development. This was traced to a failure on my part to update the current entry pointer correctly after a new entry insertion. In most cases there would be no error, but in some cases, when the array of entries in memory becomes too big for its current location the program moves the entire array to a different area of memory. In these cases the current pointer would point to some random place that had nothing to do with the entry array, and an error would be the result. This has now been corrected – thanks Rander. Again I suspect that others may well have been frustrated by this error during timetable dveleopment, so again I offer my apologies to those affected.
Version beta 0.6a (31/01/11)
The program now adapts the displayed railway size to the screen resolution for resolutions higher than 1024 x 768.
Corrects an error discovered by NajamUddin (my thanks again to him for reporting this) on calling a train on. If the platform element where the train was to arrive was a set of points, then the program could fail due to a coding error.
Version beta 0.6 (27/01/11)
Incorporated two and three-aspect signals and ground signals. Note that railways saved in earlier versions will load in this version with all signals four-aspect, and railways with two and three-aspect or ground signals saved in this version and then loaded into earlier program versions will have all signals shown as four-aspect.
Incorporated a variable speed timetable clock feature and the ability to increment the clock.
The user manual and help files have been updated to explain these new features.
Added a HP/KW converter to the timetable create/edit screen.
Corrected an error that could occur when a train was created on a route that was in course of building – thanks to NajamUddin for bringing this to my attention.
Corrected a rounding error in the performance log whereby hours could display one too high when near the end of the hour (e.g. 07:59 could display as 08:59).
Set a minimum track element speed limit of 10km/h, and also set the lowest value for a train’s maximum speed of 10km/h. With lower values a ‘divide by zero’ error sometimes occurred during the train speed calculation due to approximations made in that calculation. Note that on loading railways saved in earlier program versions any speed limit that is less than 10km/h will be set to 10km/h, and on loading earlier timetables any maximum train speed that is less than 10km/h will be set to 10km/h.
It was noticed that speed limits and track lengths for diverging point legs were ignored by the program, this version corrects those errors.
It was noticed that after a train had passed under a bridge when the top track had a route set, the route colour was redisplayed incorrectly. This version corrects that error.
Version beta 0.5 (08/01/11)
Added distance and speed converters from imperial units to metric units to facilitate track element length and speed limit entries during track building, and train speed entries during timetable compilation.
Corrected a fault that could occur when creating formatted timetables. Hour entries could be too low in some circumstances (e.g. could read 07:00 when should read 08:00). This was due to a failure to round correctly when converting from floating point to integer values.
Improved preferred direction and route searching to ensure that all possible directions from the starting element are searched properly. Formerly, when there were many possible routes in one direction from a given starting element the search could fail, and other – probably better – directions would then not be searched.
Version beta 0.4e (16/12/10)
Added the ability to move the screen viewpoint by larger amounts by holding the Shift key down when clicking the navigation buttons. This will reduce the number of clicks needed when navigating large railways. The user manual and help files have also been updated accordingly.
Version beta 0.4d (29/11/10)
Corrects a fault that prevents routes and preferred directions being set across widely separated gaps. Thanks to Mark for notifying me of this error.
Also corrects a fault where if zoom out when moving to a follow-on preferred direction element the program stops with a ‘can’t set focus’ error when click to zoom back in again.
Section 6 of user manual & help file changed slightly to add that trains will stop for trains in front if they are at a timetabled stop location.
Version beta 0.4c
Corrects a fault whereby when two or more trains exited the railway within the same clock cycle (50mSec) one or more of the trains would still register as present on the last track element but would not exist in the train list. If the mouse then hovered over that track element with train information enabled an error would occur and the program would stop. My thanks to Craig for bringing this error to my attention.
Updated my email address to email@example.com in the quick start guide.
Information added to point 5 in section 5.11 of the help file and the user manual relating to the behaviour of signaller controlled trains.
Version beta 0.4b (26/07/10)
All this does is change the email address in the program’s error message from ‘firstname.lastname@example.org’ to ‘email@example.com’, so there is no real need for existing users to download it.
Version beta 0.4a (20/07/10)
The program is now released under the GNU General Public License version 3 [note American spelling for consistency]. This is in preparation for publication of the source files which should be within a week or two. On first loading the program a message to this effect is given.
In v0.4 when I made non-station named location (blue square) lengths 100m I overlooked the fact that these could be placed without track being present, and placing in this way then caused a fault (as did pasting areas of railway that included such locations after cutting or copying). That fault has now been corrected. [I wish I could correct a fault without creating a new one – or two!]
Problems had been reported where session files failed to pass the integrity check on subsequent attempts to load. This was due to the stored temporary timetable file being incompatible with stored train information and is thought to be due to a single ‘timetable.tmp’ file being created for all timetable loads, rather than a unique timetable file for each timetable load. The current version creates unique files of the form ‘TmpTT<n>.tmp’ where ‘<n>’ is a number, and these should be deleted automatically when the program ends.
Version beta 0.4 (11/07/10)
Corrected a fault in the train split function – could receive a false linking error with the original code.
Version 0.3 introduced an automatic cancel of routes consisting of a single element. However another fault was discovered with this process in that if such a single element was selected for the start of a new route, and was cancelled before the new route was completed, then on the subsequent attempt to complete the new route a failure would occur. This has now been corrected.
The zoom-out screen navigation has been changed to 60 elements from 30. This makes for faster review of large railways in zoom-out mode.
The calling-on function has been improved in that checks are now made for any existing routes elements or conflicting routes before the call-on is offered, and when accepted an unrestricted route is set into the platform.
The route setting functions have been changed to search first in the direction of ‘set’ leading points. This means that if there are two or more possible routes between the start and end points, or a route cannot be found by the program because the search would take too long, then one or more sets of points can be changed to link track elements along the desired route.
It was found that named location track lengths were not fixed at 100m (as platforms are), though the distance calculation treated them as though they were 100m. These are now fixed at 100m.
The help file and user manual have been updated to reflect and explain the above changes.
Version beta 0.3a (27/06/10)
The last release introduced an automatic cancel of routes consisting of a single element. However if such a single element route was in course of being extended when it was cancelled, the route extension failed and the program raised an error. I had overlooked this possibility at the time of the first modification. The effect was again found by Richard – my thanks go again to him for the discovery.
A couple of errors were also found in the timetable reload function. I had failed to update it when the normal timetable load function was modified some time earlier.
Version beta 0.3 (21/06/10)
It was discovered that after a train had been introduced into the railway at a position that was already on a non-automatic signal route and it then moved forwards and left a gap in the route, if an attempt was made to extend the route the program crashed – thanks to Richard for notifying me of this fault. The program now cancels any non-automatic signal route that lies behind a newly introduced train if the train starts on the route.
Another change is that the program automatically removes any routes that just consist of a single element – these are left when a train stops at a signal that ends a route. This is tidier as sometimes the train changes direction and moves away, leaving the single route element isolated.
Another error was discovered in that if a complete loop of routes was attempted to be created consisting of mixed automatic signal routes and other types, then the program locked up as it went into an endless loop trying to set signals but never reaching the end of the route. A check is now included to prevent this happening.
The help files and the user manual have also been updated to clarify a number of complex timetable functions, and also some errors have been corrected.
Version beta 0.2e (13/06/10)
I discovered that if a railway was saved using menu items ‘File’ then ‘Save railway’ (rather than by using the ‘save railway’ button with the blue disk icon) the saved file would fail an integrity check on attempting to reload and therefore be unusable. No-one had reported this error so perhaps everyone uses the button rather than the menu. However if anyone has such unusable railways please send them to me at firstname.lastname@example.org and I’ll fix them and return them to you.
Also added is the ability to move the viewpoint by 2 elements at a time by holding down the control (Ctrl) key when a ‘move viewpoint’ button is clicked. This allows much finer control of the railway position on the screen. Corresponding changes have been made to the user manual and the help file.
Version beta 0.2d (29/05/10)
When a train tries to move under timetable control when facing buffers, a message should be given via the performance log to advise the user that it can’t move. Instead an error was generated because an internal check had been missed out. This version corrects the error. By coincidence this error was reported by two different people in the same week – thanks to both James and Matt. At the same time I changed the gap flashing behaviour (right click on a gap it and both it and its matching gap flash red and green respectively) so that gaps won’t flash when a train is present on either gap. This was altered because the flashing interfered with the train display.
Version beta 0.2c (15/05/10)
Corrections made to the image generation functions. In some circumstances earlier versions generated distorted images.
Version beta 0.2b (13/05/10)
Timetable validation errors corrected – thanks to Colin for notifying me of these.
User manual and help files updated to clarify the timetable requirements.
Version beta 0.2a
In making the change to the timetable and clock times I used a different function to generate the time display, and also used this function in filenames for session and operating images. Unfortunately they included the colon (:) character, which isn’t permitted in filenames and these saves therefore failed. These have now been changed to use the stop (.) character and the saves succeed.
Version beta 0.2
Train found to jump forward for signaller command step-forward-one-element. Corrected to accelerate and brake smoothly.
More detailed checks added prior to file loading.
It had been possible to add multiple non-station named location elements at the same location (for example by a sensitive mouse that delivered two or more clicks when it should only have delivered one). The effect was not visible on screen but it would cause subsequent railway file load failures. This has now been corrected, and files that would not load previously because of this problem will now load, because duplicate entries are ignored. Thanks to Michael for bringing this error to my attention.
The timetable clock now displays from 00:00:00 to 95:59:59, i.e four full days, before resetting to 00:00:00, in order to make it clearer when the time has run past midnight on the first day. Time entries in the timetable are also now correspondingly valid from 00:00 to 95:59.
Sections 3.3 and 5 of the help file and user manual updated to add more information relating to non-station named locations and to reflect the above timetable time changes.
Version beta 0.1d
Time displays used the Windows regional setting, which was correct for ‘English (UK)’ but not for other settings. On computers having non UK regional settings the timetable clock did not display correctly, and, worse, performance logfiles and session files could not be saved or loaded. Thanks to Simon for bringing this error to my attention.
Help file and user manual section 6.3 updated to include a warning about running two railway.exe programs at the same time, which could cause session files to be saved incorrectly.