OpenTTD Source: src/saveload/oldloader_sl.cpp File Reference

OpenTTD Source 13.1

Macros | Functions | Variables
oldloader_sl.cpp File Reference
`#include "../stdafx.h"`
`#include "../town.h"`
`#include "../industry.h"`
`#include "../company_func.h"`
`#include "../aircraft.h"`
`#include "../roadveh.h"`
`#include "../ship.h"`
`#include "../train.h"`
`#include "../signs_base.h"`
`#include "../station_base.h"`
`#include "../subsidy_base.h"`
`#include "../debug.h"`
`#include "../depot_base.h"`
`#include "../date_func.h"`
`#include "../vehicle_func.h"`
`#include "../effectvehicle_base.h"`
`#include "../engine_func.h"`
`#include "../company_base.h"`
`#include "../disaster_vehicle.h"`
`#include "../core/smallvec_type.hpp"`
`#include "saveload_internal.h"`
`#include "oldloader.h"`
`#include <array>`
`#include "table/strings.h"`
`#include "../table/engines.h"`
`#include "../table/townname.h"`
`#include "../safeguards.h"`

Go to the source code of this file.

## Macros
#define | FIXNUM(x, y, z) (((((x) << 16) / (y)) + 1) << z)

## Functions
void | FixOldMapArray ()
static void | FixTTDMapArray ()
static void | FixTTDDepots ()
static uint32 | RemapOldTownName (uint32 townnameparts, byte old_town_name_type)
static void | FixOldTowns ()
void | FixOldVehicles ()
| Convert the old style vehicles into something that resembles the old new style savegames. More...
static bool | FixTTOMapArray ()
static bool | FixTTOEngines ()
static void | FixTTOCompanies ()
static byte | RemapTTOColour (byte tto)
static uint | RemapTownIndex (uint x)
static uint | RemapOrderIndex (uint x)
static void | ReadTTDPatchFlags ()
static bool | LoadOldTown (LoadgameState *ls, int num)
static bool | LoadOldOrder (LoadgameState *ls, int num)
static bool | LoadOldAnimTileList (LoadgameState *ls, int num)
static bool | LoadOldDepot (LoadgameState *ls, int num)
static bool | LoadOldGood (LoadgameState *ls, int num)
static bool | LoadOldStation (LoadgameState *ls, int num)
static bool | LoadOldIndustry (LoadgameState *ls, int num)
static bool | LoadOldCompanyYearly (LoadgameState *ls, int num)
static bool | LoadOldCompanyEconomy (LoadgameState *ls, int num)
static bool | LoadOldCompany (LoadgameState *ls, int num)
static bool | LoadOldVehicleUnion (LoadgameState *ls, int num)
bool | LoadOldVehicle (LoadgameState *ls, int num)
| Load the vehicles of an old style savegame. More...
static bool | LoadOldSign (LoadgameState *ls, int num)
static bool | LoadOldEngine (LoadgameState *ls, int num)
static bool | LoadOldEngineName (LoadgameState *ls, int num)
static bool | LoadOldSubsidy (LoadgameState *ls, int num)
static bool | LoadOldGameDifficulty (LoadgameState *ls, int num)
static bool | LoadOldMapPart1 (LoadgameState *ls, int num)
static bool | LoadOldMapPart2 (LoadgameState *ls, int num)
static bool | LoadTTDPatchExtraChunks (LoadgameState *ls, int num)
bool | LoadTTDMain (LoadgameState *ls)
bool | LoadTTOMain (LoadgameState *ls)

## Variables
static bool | _read_ttdpatch_flags
| Have we (tried to) read TTDPatch extra flags?
static uint16 | _old_extra_chunk_nums
| Number of extra TTDPatch chunks.
static byte | _old_vehicle_multiplier
| TTDPatch vehicle multiplier.
static uint8 * | _old_map3
static StringID * | _old_vehicle_names
static Engine * | _old_engines
std::vector< TileIndex > | _animated_tiles
| The table/list with animated tiles.
char * | _old_name_array
| Location to load the old names to.
static uint32 | _old_town_index
static uint16 | _old_string_id
static uint16 | _old_string_id_2
static const OldChunks | town_chunk []
static uint16 | _old_order
static const OldChunks | order_chunk []
static const OldChunks | depot_chunk []
static StationID | _current_station_id
static uint16 | _waiting_acceptance
static uint8 | _cargo_source
static uint8 | _cargo_days
static const OldChunks | goods_chunk []
static const OldChunks | station_chunk []
static const OldChunks | industry_chunk []
static CompanyID | _current_company_id
static int32 | _old_yearly
static const OldChunks | _company_yearly_chunk []
static const OldChunks | _company_economy_chunk []
static const OldChunks | _company_chunk []
static uint32 | _old_order_ptr
static uint16 | _old_next_ptr
static VehicleID | _current_vehicle_id
static const OldChunks | vehicle_train_chunk []
static const OldChunks | vehicle_road_chunk []
static const OldChunks | vehicle_ship_chunk []
static const OldChunks | vehicle_air_chunk []
static const OldChunks | vehicle_effect_chunk []
static const OldChunks | vehicle_disaster_chunk []
static const OldChunks | vehicle_empty_chunk []
static uint16 | _cargo_count
static const OldChunks | vehicle_chunk []
static const OldChunks | sign_chunk []
static const OldChunks | engine_chunk []
static const OldChunks | subsidy_chunk []
static const OldChunks | game_difficulty_chunk []
TileIndex | _cur_tileloop_tile
uint16 | _disaster_delay
| Delay counter for considering the next disaster.
byte | _trees_tick_ctr
| Determines when to consider building more trees.
byte | _age_cargo_skip_counter
| Skip aging of cargo? Used before savegame version 162.
uint8 | _old_diff_level
uint8 | _old_units
static const OldChunks | main_chunk []

## Detailed Description

Chunks and fix-ups for TTO/TTD/TTDP savegames. TTO loader code is based on SVXConverter by Roman Vetter.

Definition in file oldloader_sl.cpp.

## Function Documentation

## ◆ FixOldVehicles()

void FixOldVehicles | ( |  | ) |

Convert the old style vehicles into something that resembles the old new style savegames.

Then AfterLoadGame can handle the rest of the conversion.

Definition at line 171 of file oldloader_sl.cpp.

References CopyFromOldName(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool >::GetIfValid(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool >::Iterate(), and VEH_EFFECT.

## ◆ FixTTDDepots()

static void FixTTDDepots | ( |  | ) |
| static

Workaround for SVXConverter bug, depots 252-255 could be invalid

Definition at line 110 of file oldloader_sl.cpp.

References GetDepotIndex(), IsDepotTile(), and Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_depot_pool >::Iterate().

## ◆ FixTTOEngines()

static bool FixTTOEngines | ( |  | ) |
| static

TTD->TTO remapping of engines; 255 means there is no equivalent. SVXConverter uses (almost) the same table.

TTO->TTD remapping of engines. SVXConverter uses the same table.

Definition at line 350 of file oldloader_sl.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool >::Iterate(), and lengthof.

## ◆ LoadOldVehicle()

bool LoadOldVehicle | ( | LoadgameState * | ls,
|  | int | num
| ) |  |

Load the vehicles of an old style savegame.

So we can set the proper next pointer while loading.

Parameters

  ls | State (buffer) of the currently loaded game.
  num | The number of vehicles to load.

Returns
  True iff loading went without problems.

Definition at line 1222 of file oldloader_sl.cpp.

## ◆ RemapTTOColour()

static byte RemapTTOColour | ( | byte | tto | ) |
| inlinestatic

Lossy remapping of TTO colours to TTD colours. SVXConverter uses the same conversion.

Definition at line 462 of file oldloader_sl.cpp.

## Variable Documentation

## ◆ _company_economy_chunk

const OldChunks _company_economy_chunk[]
| static

Initial value:
= {
OCL_SVAR( OC_FILE_I32 | OC_VAR_I64, CompanyEconomyEntry, income ),
OCL_SVAR( OC_FILE_I32 | OC_VAR_I64, CompanyEconomyEntry, expenses ),
OCL_SVAR( OC_INT32, CompanyEconomyEntry, delivered_cargo[NUM_CARGO - 1] ),
OCL_SVAR( OC_INT32, CompanyEconomyEntry, performance_history ),
OCL_SVAR( OC_TTD | OC_FILE_I32 | OC_VAR_I64, CompanyEconomyEntry, company_value ),
}

Definition at line 881 of file oldloader_sl.cpp.

## ◆ _company_yearly_chunk

const OldChunks _company_yearly_chunk[]
| static

Initial value:
= {
OCL_VAR( OC_INT32, 1, &_old_yearly ),
}

Definition at line 859 of file oldloader_sl.cpp.

## ◆ depot_chunk

const OldChunks depot_chunk[]
| static

Initial value:
= {
OCL_SVAR( OC_TILE, Depot, xy ),
OCL_VAR ( OC_UINT32, 1, &_old_town_index ),
}

Definition at line 653 of file oldloader_sl.cpp.

## ◆ engine_chunk

const OldChunks engine_chunk[]
| static

Initial value:
= {
OCL_SVAR( OC_UINT16, Engine, company_avail ),
OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Engine, intro_date ),
OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Engine, age ),
OCL_SVAR( OC_UINT16, Engine, reliability ),
OCL_SVAR( OC_UINT16, Engine, reliability_spd_dec ),
OCL_SVAR( OC_UINT16, Engine, reliability_start ),
OCL_SVAR( OC_UINT16, Engine, reliability_max ),
OCL_SVAR( OC_UINT16, Engine, reliability_final ),
OCL_SVAR( OC_UINT16, Engine, duration_phase_1 ),
OCL_SVAR( OC_UINT16, Engine, duration_phase_2 ),
OCL_SVAR( OC_UINT16, Engine, duration_phase_3 ),
OCL_NULL( 1 ),
OCL_SVAR( OC_UINT8, Engine, flags ),
OCL_NULL( 1 ),
OCL_SVAR( OC_UINT8, Engine, preview_wait ),
OCL_CNULL( OC_TTD, 2 ),
}

Definition at line 1385 of file oldloader_sl.cpp.

## ◆ game_difficulty_chunk

const OldChunks game_difficulty_chunk[]
| static

Initial value:
= {
OCL_SVAR( OC_FILE_U16 | OC_VAR_U8, DifficultySettings, max_no_competitors ),
OCL_NULL( 2),
OCL_SVAR( OC_FILE_U16 | OC_VAR_U8, DifficultySettings, number_towns ),
OCL_SVAR( OC_FILE_U16 | OC_VAR_U8, DifficultySettings, industry_density ),
OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, DifficultySettings, max_loan ),
OCL_SVAR( OC_FILE_U16 | OC_VAR_U8, DifficultySettings, initial_interest ),
OCL_SVAR( OC_FILE_U16 | OC_VAR_U8, DifficultySettings, vehicle_costs ),
OCL_SVAR( OC_FILE_U16 | OC_VAR_U8, DifficultySettings, competitor_speed ),
OCL_NULL( 2),
OCL_SVAR( OC_FILE_U16 | OC_VAR_U8, DifficultySettings, vehicle_breakdowns ),
OCL_SVAR( OC_FILE_U16 | OC_VAR_U8, DifficultySettings, subsidy_multiplier ),
OCL_SVAR( OC_FILE_U16 | OC_VAR_U8, DifficultySettings, construction_cost ),
OCL_SVAR( OC_FILE_U16 | OC_VAR_U8, DifficultySettings, terrain_type ),
OCL_SVAR( OC_FILE_U16 | OC_VAR_U8, DifficultySettings, quantity_sea_lakes ),
OCL_SVAR( OC_FILE_U16 | OC_VAR_U8, DifficultySettings, economy ),
OCL_SVAR( OC_FILE_U16 | OC_VAR_U8, DifficultySettings, line_reverse_mode ),
OCL_SVAR( OC_FILE_U16 | OC_VAR_U8, DifficultySettings, disasters ),
}

Definition at line 1438 of file oldloader_sl.cpp.

## ◆ goods_chunk

const OldChunks goods_chunk[]
| static

Initial value:
= {
OCL_VAR ( OC_UINT16, 1, &_waiting_acceptance ),
OCL_SVAR( OC_UINT8, GoodsEntry, time_since_pickup ),
OCL_SVAR( OC_UINT8, GoodsEntry, rating ),
OCL_VAR ( OC_UINT8, 1, &_cargo_source ),
OCL_VAR ( OC_UINT8, 1, &_cargo_days ),
OCL_SVAR( OC_UINT8, GoodsEntry, last_speed ),
OCL_SVAR( OC_UINT8, GoodsEntry, last_age ),
}

Definition at line 681 of file oldloader_sl.cpp.

## ◆ order_chunk

const OldChunks order_chunk[]
| static

Initial value:
= {
OCL_VAR ( OC_UINT16, 1, &_old_order ),
}

Definition at line 610 of file oldloader_sl.cpp.

## ◆ sign_chunk

const OldChunks sign_chunk[]
| static

Initial value:
= {
OCL_VAR ( OC_UINT16, 1, &_old_string_id ),
OCL_SVAR( OC_FILE_U16 | OC_VAR_I32, Sign, x ),
OCL_SVAR( OC_FILE_U16 | OC_VAR_I32, Sign, y ),
OCL_SVAR( OC_FILE_U16 | OC_VAR_I8, Sign, z ),
OCL_NULL( 6 ),
}

Definition at line 1355 of file oldloader_sl.cpp.

## ◆ subsidy_chunk

const OldChunks subsidy_chunk[]
| static

Initial value:
= {
OCL_SVAR( OC_UINT8, Subsidy, cargo_type ),
OCL_SVAR( OC_UINT8, Subsidy, remaining ),
OCL_SVAR( OC_FILE_U8 | OC_VAR_U16, Subsidy, src ),
OCL_SVAR( OC_FILE_U8 | OC_VAR_U16, Subsidy, dst ),
}

Definition at line 1421 of file oldloader_sl.cpp.

## ◆ vehicle_air_chunk

const OldChunks vehicle_air_chunk[]
| static

Initial value:
= {
OCL_SVAR( OC_UINT8, Aircraft, pos ),
OCL_SVAR( OC_FILE_U8 | OC_VAR_U16, Aircraft, targetairport ),
OCL_SVAR( OC_UINT16, Aircraft, crashed_counter ),
OCL_SVAR( OC_UINT8, Aircraft, state ),
OCL_NULL( 5 ),
}

Definition at line 1061 of file oldloader_sl.cpp.

## ◆ vehicle_disaster_chunk

const OldChunks vehicle_disaster_chunk[]
| static

Initial value:
= {
OCL_SVAR( OC_UINT16, DisasterVehicle, image_override ),
OCL_SVAR( OC_UINT16, DisasterVehicle, big_ufo_destroyer_target ),
OCL_NULL( 6 ),
}

Definition at line 1081 of file oldloader_sl.cpp.

## ◆ vehicle_effect_chunk

const OldChunks vehicle_effect_chunk[]
| static

Initial value:
= {
OCL_SVAR( OC_UINT16, EffectVehicle, animation_state ),
OCL_SVAR( OC_UINT8, EffectVehicle, animation_substate ),
OCL_NULL( 7 ),
}

Definition at line 1072 of file oldloader_sl.cpp.

## ◆ vehicle_empty_chunk

const OldChunks vehicle_empty_chunk[]
| static

Initial value:
= {
OCL_NULL( 10 ),
}

Definition at line 1090 of file oldloader_sl.cpp.

## ◆ vehicle_road_chunk

const OldChunks vehicle_road_chunk[]
| static

Initial value:
= {
OCL_SVAR( OC_UINT8, RoadVehicle, state ),
OCL_SVAR( OC_UINT8, RoadVehicle, frame ),
OCL_SVAR( OC_UINT16, RoadVehicle, blocked_ctr ),
OCL_SVAR( OC_UINT8, RoadVehicle, overtaking ),
OCL_SVAR( OC_UINT8, RoadVehicle, overtaking_ctr ),
OCL_SVAR( OC_UINT16, RoadVehicle, crashed_ctr ),
OCL_SVAR( OC_UINT8, RoadVehicle, reverse_ctr ),
OCL_NULL( 1 ),
}

Definition at line 1039 of file oldloader_sl.cpp.

## ◆ vehicle_ship_chunk

const OldChunks vehicle_ship_chunk[]
| static

Initial value:
= {
OCL_SVAR( OC_UINT8, Ship, state ),
OCL_NULL( 9 ),
}

Definition at line 1053 of file oldloader_sl.cpp.

## ◆ vehicle_train_chunk

const OldChunks vehicle_train_chunk[]
| static

Initial value:
= {
OCL_SVAR( OC_UINT8, Train, track ),
OCL_SVAR( OC_UINT8, Train, force_proceed ),
OCL_SVAR( OC_UINT16, Train, crash_anim_pos ),
OCL_SVAR( OC_UINT8, Train, railtype ),
OCL_NULL( 5 ),
}

Definition at line 1028 of file oldloader_sl.cpp.

RoadVehicle
Buses, trucks and trams belong to this class.
Definition: roadveh.h:107
DifficultySettings
Settings related to the difficulty of the game.
Definition: settings_type.h:74
Engine
Definition: engine_base.h:36
CompanyEconomyEntry
Statistics about the economy.
Definition: company_base.h:23
Aircraft
Aircraft, helicopters, rotors and their shadows belong to this class.
Definition: aircraft.h:74
Subsidy
Struct about subsidies, offered and awarded.
Definition: subsidy_base.h:22
Train
'Train' is either a loco or a wagon.
Definition: train.h:88
DisasterVehicle
Disasters, like submarines, skyrangers and their shadows, belong to this class.
Definition: disaster_vehicle.h:37
Ship
All ships have this type.
Definition: ship.h:26
GoodsEntry
Stores station stats for a single cargo.
Definition: station_base.h:167
NUM_CARGO
@ NUM_CARGO
Maximal number of cargo types in a game.
Definition: cargo_type.h:65
Sign
Definition: signs_base.h:22
EffectVehicle
A special vehicle is one of the following:
Definition: effectvehicle_base.h:24
Depot
Definition: depot_base.h:19
OC_TTD
@ OC_TTD
chunk is valid ONLY for TTD savegames
Definition: oldloader.h:42