Chunks and fix-ups for TTO/TTD/TTDP savegames. More...
#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 "saveload_internal.h"
#include "oldloader.h"
#include "table/strings.h"
#include "../table/engines.h"
#include "../table/townname.h"
Go to the source code of this file.
Defines | |
#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. | |
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. | |
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 |
TileIndex * | _animated_tile_list |
The table/list with animated tiles. | |
uint | _animated_tile_count |
The number of animated tiles in the current state. | |
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. | |
static const OldChunks | main_chunk [] |
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.
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 _m, ClrBit(), CopyFromOldName(), Vehicle::current_order, FOR_ALL_VEHICLES, SpecializedVehicle< RoadVehicle, Type >::From(), 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< Tpool >::index, IsCompanyBuildableVehicleType(), Vehicle::IsPrimaryVehicle(), IsTileType(), Order::IsType(), Tile::m5, Order::MakeDummy(), MP_STATION, Vehicle::name, Vehicle::next, RVS_IN_DT_ROAD_STOP, RVSB_IN_DEPOT, RVSB_WORMHOLE, SetBit(), Vehicle::spritenum, RoadVehicle::state, Vehicle::subtype, Vehicle::tile, BaseVehicle::type, VEH_EFFECT, VEH_ROAD, and VEH_SHIP.
static void FixTTDDepots | ( | ) | [static] |
Workaround for SVXConverter bug, depots 252-255 could be invalid
Definition at line 107 of file oldloader_sl.cpp.
References GetDepotIndex(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, and IsDepotTile().
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 352 of file oldloader_sl.cpp.
References _date, EngineInfo::climates, Engine::company_avail, ConvertYMDToDate(), DAYS_TILL_ORIGINAL_BASE_YEAR, Engine::duration_phase_1, Engine::duration_phase_2, Engine::duration_phase_3, ENGINE_AVAILABLE, Vehicle::engine_type, Engine::flags, FOR_ALL_VEHICLES, HasBit(), Engine::intro_date, lengthof, min(), Engine::name, Engine::preview_company_rank, Engine::preview_wait, Engine::reliability, Engine::reliability_final, Engine::reliability_max, Engine::reliability_spd_dec, Engine::reliability_start, StartupOneEngine(), VEH_AIRCRAFT, VEH_ROAD, VEH_SHIP, and VEH_TRAIN.
bool LoadOldVehicle | ( | LoadgameState * | ls, | |
int | num | |||
) |
Load the vehicles of an old style savegame.
So we can set the proper next pointer while loading.
ls | State (buffer) of the currently loaded game. | |
num | The number of vehicles to load. |
Definition at line 1229 of file oldloader_sl.cpp.
References _old_vehicle_multiplier, CargoList< Tinst >::Append(), Order::AssignOrder(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_cargopacket_pool >::CanAllocateItem(), Vehicle::cargo, Vehicle::cargo_type, Vehicle::cur_image, Vehicle::current_order, DEBUG, SpecializedVehicle< Train, Type >::From(), SpecializedStation< Station, false >::Get(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_order_pool >::Get(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, IsInsideMM(), lengthof, LoadChunk(), max(), Vehicle::next, Vehicle::old, Vehicle::orders, ReadByte(), RemapOldStringID(), SGT_TTO, SlErrorCorrupt(), Vehicle::spritenum, BaseVehicle::type, UnpackOldOrder(), VEH_ROAD, VEH_SHIP, VEH_TRAIN, and BaseStation::xy.
static byte RemapTTOColour | ( | byte | tto | ) | [inline, static] |
Lossy remapping of TTO colours to TTD colours. SVXConverter uses the same conversion.
Definition at line 464 of file oldloader_sl.cpp.
References lengthof.
uint _animated_tile_count |
The number of animated tiles in the current state.
Definition at line 20 of file animated_tile.cpp.
Referenced by AddAnimatedTile(), AfterLoadGame(), AnimateAnimatedTiles(), DeleteAnimatedTile(), InitializeAnimatedTiles(), Load_ANIT(), and Save_ANIT().
The table/list with animated tiles.
Definition at line 18 of file animated_tile.cpp.
Referenced by AddAnimatedTile(), AfterLoadGame(), AnimateAnimatedTiles(), DeleteAnimatedTile(), InitializeAnimatedTiles(), Load_ANIT(), and Save_ANIT().
const OldChunks _company_economy_chunk[] [static] |
{ 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 ), OCL_SVAR( OC_INT32, CompanyEconomyEntry, performance_history ), OCL_SVAR( OC_TTD | OC_FILE_I32 | OC_VAR_I64, CompanyEconomyEntry, company_value ), }
Definition at line 888 of file oldloader_sl.cpp.
const OldChunks _company_yearly_chunk[] [static] |
{ OCL_VAR( OC_INT32, 1, &_old_yearly ), }
Definition at line 866 of file oldloader_sl.cpp.
uint16 _disaster_delay |
Delay counter for considering the next disaster.
Definition at line 50 of file disaster_cmd.cpp.
char* _old_name_array |
Location to load the old names to.
Definition at line 45 of file strings_sl.cpp.
Referenced by CopyFromOldName(), InitializeOldNames(), Load_NAME(), and ResetOldNames().
byte _trees_tick_ctr |
Determines when to consider building more trees.
Definition at line 55 of file tree_cmd.cpp.
const OldChunks depot_chunk[] [static] |
{ OCL_SVAR( OC_TILE, Depot, xy ), OCL_VAR ( OC_UINT32, 1, &_old_town_index ), }
Definition at line 661 of file oldloader_sl.cpp.
const OldChunks engine_chunk[] [static] |
{ 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_SVAR( OC_UINT8, Engine, preview_company_rank ), OCL_SVAR( OC_UINT8, Engine, preview_wait ), OCL_CNULL( OC_TTD, 2 ), }
Definition at line 1390 of file oldloader_sl.cpp.
const OldChunks game_difficulty_chunk[] [static] |
{ 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 1443 of file oldloader_sl.cpp.
const OldChunks goods_chunk[] [static] |
{ OCL_VAR ( OC_UINT16, 1, &_waiting_acceptance ), OCL_SVAR( OC_UINT8, GoodsEntry, days_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 689 of file oldloader_sl.cpp.
const OldChunks order_chunk[] [static] |
{ OCL_VAR ( OC_UINT16, 1, &_old_order ), }
Definition at line 614 of file oldloader_sl.cpp.
const OldChunks sign_chunk[] [static] |
{ 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 1360 of file oldloader_sl.cpp.
const OldChunks subsidy_chunk[] [static] |
const OldChunks vehicle_air_chunk[] [static] |
const OldChunks vehicle_disaster_chunk[] [static] |
{ OCL_SVAR( OC_UINT16, DisasterVehicle, image_override ), OCL_SVAR( OC_UINT16, DisasterVehicle, big_ufo_destroyer_target ), OCL_NULL( 6 ), }
Definition at line 1088 of file oldloader_sl.cpp.
const OldChunks vehicle_effect_chunk[] [static] |
{ OCL_SVAR( OC_UINT16, EffectVehicle, animation_state ), OCL_SVAR( OC_UINT8, EffectVehicle, animation_substate ), OCL_NULL( 7 ), }
Definition at line 1079 of file oldloader_sl.cpp.
const OldChunks vehicle_empty_chunk[] [static] |
{ OCL_NULL( 10 ), }
Definition at line 1097 of file oldloader_sl.cpp.
const OldChunks vehicle_road_chunk[] [static] |
{ 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 1046 of file oldloader_sl.cpp.
const OldChunks vehicle_ship_chunk[] [static] |
{ OCL_SVAR( OC_UINT8, Ship, state ), OCL_NULL( 9 ), }
Definition at line 1060 of file oldloader_sl.cpp.