author | bjarni |
Wed, 26 Jan 2005 11:23:54 +0000 | |
changeset 1177 | 6adbf59f59a3 |
parent 1093 | e8d26c7dc42f |
child 1209 | a1ac96655b79 |
permissions | -rw-r--r-- |
0 | 1 |
#include "stdafx.h" |
2 |
#include "ttd.h" |
|
507
8aa8100b0b22
(svn r815) Include strings.h only in the files which need it.
tron
parents:
436
diff
changeset
|
3 |
#include "table/strings.h" |
679
e959706a3e4d
(svn r1117) Move map arrays and some related macros into their own files map.c and map.h
tron
parents:
577
diff
changeset
|
4 |
#include "map.h" |
0 | 5 |
#include "town.h" |
6 |
#include "industry.h" |
|
7 |
#include "station.h" |
|
8 |
#include "economy.h" |
|
9 |
#include "player.h" |
|
10 |
#include "engine.h" |
|
11 |
#include "vehicle.h" |
|
988
2482369a61ff
(svn r1486) -Codechange: moved all 'signs' stuff to signs.c/h and prepared it for
truelight
parents:
974
diff
changeset
|
12 |
#include "signs.h" |
0 | 13 |
|
14 |
extern byte _name_array[512][32]; |
|
15 |
extern TileIndex _animated_tile_list[256]; |
|
392
3657d06c6564
(svn r584) -newgrf: Increase chance to get a TTDPatch savegame using custom GRF files loaded (pasky)
darkvater
parents:
206
diff
changeset
|
16 |
extern uint16 _custom_sprites_base; |
0 | 17 |
|
923
865f9716f7f5
(svn r1411) -Fix: structure packing in the OS/2 version (eg, with the old loader).
truelight
parents:
920
diff
changeset
|
18 |
#if defined(_MSC_VER) || defined(__WATCOMC__) |
0 | 19 |
#pragma pack(push, 1) |
20 |
#endif |
|
21 |
||
22 |
typedef struct { |
|
23 |
uint16 string_id; |
|
24 |
uint16 x; |
|
25 |
uint16 right; |
|
26 |
uint16 y; |
|
27 |
uint16 bottom; |
|
28 |
uint16 duration; |
|
29 |
uint32 params[2]; |
|
30 |
} GCC_PACK OldTextEffect; |
|
31 |
assert_compile(sizeof(OldTextEffect) == 0x14); |
|
32 |
||
33 |
typedef struct { |
|
34 |
uint16 xy; |
|
35 |
uint16 population; |
|
36 |
uint16 townnametype; |
|
37 |
uint32 townnameparts; |
|
38 |
byte grow_counter; |
|
39 |
byte sort_index; |
|
40 |
int16 sign_left, sign_top; |
|
41 |
byte namewidth_1, namewidth_2; |
|
42 |
uint16 flags12; |
|
43 |
uint16 radius[5]; |
|
44 |
uint16 ratings[8]; |
|
45 |
uint32 have_ratings; |
|
46 |
uint32 statues; |
|
47 |
uint16 num_houses; |
|
48 |
byte time_until_rebuild; |
|
49 |
byte growth_rate; |
|
50 |
uint16 new_max_pass, new_max_mail; |
|
51 |
uint16 new_act_pass, new_act_mail; |
|
52 |
uint16 max_pass, max_mail; |
|
53 |
uint16 act_pass, act_mail; |
|
54 |
byte pct_pass_transported, pct_mail_transported; |
|
4
cad62d5f9708
(svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents:
0
diff
changeset
|
55 |
uint16 new_act_food, new_act_water; |
cad62d5f9708
(svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents:
0
diff
changeset
|
56 |
uint16 act_food, act_water; |
0 | 57 |
byte road_build_months; |
58 |
byte fund_buildings_months; |
|
4
cad62d5f9708
(svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents:
0
diff
changeset
|
59 |
// unused bytes at the end of the Town Struct |
0 | 60 |
uint32 unk56; |
61 |
uint32 unk5A; |
|
62 |
} GCC_PACK OldTown; |
|
63 |
assert_compile(sizeof(OldTown) == 0x5E); |
|
64 |
||
65 |
typedef struct { |
|
66 |
uint16 xy; |
|
67 |
uint32 town; |
|
68 |
} GCC_PACK OldDepot; |
|
69 |
assert_compile(sizeof(OldDepot) == 0x6); |
|
70 |
||
71 |
typedef struct { |
|
72 |
uint32 price; |
|
73 |
uint16 frac; |
|
74 |
} GCC_PACK OldPrice; |
|
75 |
assert_compile(sizeof(OldPrice) == 0x6); |
|
76 |
||
77 |
typedef struct { |
|
78 |
uint32 price; |
|
79 |
uint16 frac; |
|
80 |
uint16 unused; |
|
81 |
} GCC_PACK OldPaymentRate; |
|
82 |
assert_compile(sizeof(OldPaymentRate) == 8); |
|
83 |
||
84 |
typedef struct { |
|
85 |
uint16 waiting_acceptance; |
|
86 |
byte days_since_pickup; |
|
87 |
byte rating; |
|
88 |
byte enroute_from; |
|
89 |
byte enroute_time; |
|
90 |
byte last_speed; |
|
91 |
byte last_age; |
|
92 |
} GCC_PACK OldGoodsEntry; |
|
93 |
assert_compile(sizeof(OldGoodsEntry) == 8); |
|
94 |
||
95 |
typedef struct { |
|
96 |
uint16 xy; |
|
97 |
uint32 town; |
|
98 |
uint16 bus_tile, lorry_tile, train_tile, airport_tile, dock_tile; |
|
99 |
byte platforms; |
|
100 |
byte alpha_order_obsolete; // alpha_order is obsolete since savegame format 4 |
|
101 |
byte namewidth_1, namewidth_2; |
|
102 |
uint16 string_id; |
|
103 |
int16 sign_left, sign_top; |
|
104 |
uint16 had_vehicle_of_type; |
|
105 |
OldGoodsEntry goods[12]; |
|
106 |
byte time_since_load, time_since_unload; |
|
107 |
byte delete_ctr; |
|
108 |
byte owner; |
|
109 |
byte facilities; |
|
110 |
byte airport_type; |
|
111 |
byte truck_stop_status, bus_stop_status; |
|
123
d550772c61e6
(svn r124) Prepared code for removal of block_months variable in next major savegame version
dominik
parents:
4
diff
changeset
|
112 |
byte blocked_months_obsolete; |
0 | 113 |
byte unk85; |
114 |
uint16 airport_flags; |
|
115 |
uint16 last_vehicle; |
|
116 |
uint32 unk8A; |
|
117 |
} GCC_PACK OldStation; |
|
118 |
assert_compile(sizeof(OldStation) == 0x8E); |
|
119 |
||
120 |
typedef struct { |
|
121 |
uint16 xy; |
|
122 |
uint32 town; |
|
123 |
byte width; |
|
124 |
byte height; |
|
125 |
byte produced_cargo[2]; |
|
126 |
uint16 cargo_waiting[2]; |
|
127 |
byte production_rate[2]; |
|
128 |
byte accepts_cargo[3]; |
|
129 |
byte prod_level; |
|
130 |
uint16 last_mo_production[2]; |
|
131 |
uint16 last_mo_transported[2]; |
|
132 |
byte pct_transported[2]; |
|
133 |
uint16 total_production[2]; |
|
134 |
uint16 total_transported[2]; |
|
135 |
byte type; |
|
136 |
byte owner; |
|
137 |
byte color_map; |
|
138 |
byte last_prod_year; |
|
139 |
uint16 counter; |
|
140 |
byte was_cargo_delivered; |
|
141 |
byte nothing; |
|
142 |
uint32 unk2E; |
|
143 |
uint32 unk32; |
|
144 |
} GCC_PACK OldIndustry; |
|
145 |
assert_compile(sizeof(OldIndustry) == 0x36); |
|
146 |
||
147 |
typedef struct { |
|
148 |
int32 cost[13]; |
|
149 |
} GCC_PACK OldPlayerExpenses; |
|
150 |
assert_compile(sizeof(OldPlayerExpenses) == 0x34); |
|
151 |
||
152 |
typedef struct { |
|
153 |
int32 income; |
|
154 |
int32 expenses; |
|
155 |
uint32 delivered_cargo; |
|
156 |
uint32 performance_history; |
|
157 |
uint32 company_value; |
|
158 |
} GCC_PACK OldPlayerEconomy; |
|
159 |
assert_compile(sizeof(OldPlayerEconomy) == 0x14); |
|
160 |
||
161 |
typedef struct { |
|
162 |
uint16 spec_tile; |
|
163 |
uint16 use_tile; |
|
164 |
byte rand_rng; |
|
165 |
byte cur_rule; |
|
166 |
byte unk6; |
|
167 |
byte unk7; |
|
168 |
byte buildcmd_a; |
|
169 |
byte buildcmd_b; |
|
170 |
byte direction; |
|
171 |
byte cargo; |
|
172 |
byte unused[8]; |
|
173 |
} GCC_PACK OldAiBuildRec; |
|
174 |
assert_compile(sizeof(OldAiBuildRec) == 0x14); |
|
175 |
||
176 |
typedef struct { |
|
177 |
uint16 tile; |
|
178 |
byte data; |
|
179 |
} GCC_PACK OldAiBannedTile; |
|
180 |
assert_compile(sizeof(OldAiBannedTile) == 3); |
|
181 |
||
182 |
typedef struct { |
|
183 |
uint16 name_1; |
|
184 |
uint32 name_2; |
|
185 |
uint32 face; |
|
186 |
uint16 pres_name_1; |
|
187 |
uint32 pres_name_2; |
|
188 |
uint32 money; |
|
189 |
uint32 loan; |
|
190 |
byte color; |
|
191 |
byte money_fract; |
|
192 |
byte quarters_of_bankrupcy; |
|
193 |
byte bankrupt_asked; |
|
194 |
uint32 bankrupt_value; |
|
195 |
uint16 bankrupt_timeout; |
|
196 |
uint32 cargo_types; |
|
197 |
OldPlayerExpenses expenses[3]; |
|
198 |
OldPlayerEconomy economy[24 + 1]; |
|
199 |
uint16 inaugurated_date; |
|
200 |
uint16 last_build_coordinate; |
|
201 |
byte num_valid_stat_ent; |
|
202 |
byte ai_state; |
|
203 |
byte unused; |
|
204 |
byte ai_state_mode; |
|
205 |
uint16 ai_state_counter; |
|
206 |
uint16 ai_timeout_counter; |
|
207 |
OldAiBuildRec ai_src, ai_dst, ai_mid1, ai_mid2; |
|
208 |
byte unused_2[20]; |
|
209 |
byte ai_cargo_type; |
|
210 |
byte ai_num_wagons; |
|
211 |
byte ai_build_kind; |
|
212 |
byte ai_num_build_rec; |
|
213 |
byte ai_num_loco_to_build; |
|
214 |
byte ai_num_want_fullload; |
|
215 |
byte unused_3[14]; |
|
216 |
uint16 ai_loco_id; // NOT USED |
|
217 |
uint16 ai_wagonlist[9]; |
|
218 |
byte ai_order_list_blocks[20]; |
|
219 |
uint16 ai_start_tile_a; |
|
220 |
uint16 ai_start_tile_b; |
|
221 |
uint16 ai_cur_tile_a; |
|
222 |
uint16 ai_cur_tile_b; |
|
223 |
byte ai_start_dir_a; |
|
224 |
byte ai_start_dir_b; |
|
225 |
byte ai_cur_dir_a; |
|
226 |
byte ai_cur_dir_b; |
|
227 |
byte ai_banned_tile_count; |
|
228 |
OldAiBannedTile banned_tiles[16]; |
|
229 |
byte ai_railtype_to_use; |
|
230 |
byte ai_route_type_mask; |
|
231 |
byte block_preview; |
|
232 |
byte ai_tick; |
|
233 |
byte max_railtype; |
|
234 |
uint16 location_of_house; |
|
235 |
byte share_owners[4]; |
|
236 |
uint32 unk3AA; |
|
237 |
uint32 unk3AE; |
|
238 |
} GCC_PACK OldPlayer; |
|
239 |
assert_compile(sizeof(OldPlayer) == 0x3B2); |
|
240 |
||
241 |
typedef struct { |
|
242 |
byte track; |
|
243 |
byte force_proceed; |
|
244 |
uint16 crash_anim_pos; |
|
245 |
byte railtype; |
|
246 |
} GCC_PACK OldVehicleRailUnion; |
|
247 |
assert_compile(sizeof(OldVehicleRailUnion) == 5); |
|
248 |
||
249 |
typedef struct { |
|
250 |
byte unk0; |
|
251 |
byte targetairport; |
|
252 |
uint16 crashed_counter; |
|
253 |
byte state; |
|
254 |
} GCC_PACK OldVehicleAirUnion; |
|
255 |
assert_compile(sizeof(OldVehicleAirUnion) == 5); |
|
256 |
||
257 |
typedef struct { |
|
258 |
byte state; |
|
259 |
byte frame; |
|
260 |
uint16 unk2; |
|
261 |
byte overtaking; |
|
262 |
byte overtaking_ctr; |
|
263 |
uint16 crashed_ctr; |
|
264 |
byte reverse_ctr; |
|
265 |
} GCC_PACK OldVehicleRoadUnion; |
|
266 |
assert_compile(sizeof(OldVehicleRoadUnion) == 9); |
|
267 |
||
268 |
typedef struct { |
|
269 |
uint16 unk0; |
|
270 |
byte unk2; |
|
271 |
} GCC_PACK OldVehicleSpecialUnion; |
|
272 |
assert_compile(sizeof(OldVehicleSpecialUnion) == 3); |
|
273 |
||
274 |
typedef struct { |
|
275 |
uint16 image_override; |
|
276 |
uint16 unk2; |
|
277 |
} GCC_PACK OldVehicleDisasterUnion; |
|
278 |
assert_compile(sizeof(OldVehicleDisasterUnion) == 4); |
|
279 |
||
280 |
typedef struct { |
|
281 |
byte state; |
|
875
5e2f5be507ee
(svn r1356) -Fix: [1092363] missing GCC_PACK in oldloader.c (thx hafken)
darkvater
parents:
817
diff
changeset
|
282 |
} GCC_PACK OldVehicleShipUnion; |
0 | 283 |
assert_compile(sizeof(OldVehicleShipUnion) == 1); |
284 |
||
285 |
typedef union { |
|
286 |
OldVehicleRailUnion rail; |
|
287 |
OldVehicleAirUnion air; |
|
288 |
OldVehicleRoadUnion road; |
|
289 |
OldVehicleSpecialUnion special; |
|
290 |
OldVehicleDisasterUnion disaster; |
|
291 |
OldVehicleShipUnion ship; |
|
292 |
byte pad[10]; |
|
293 |
} GCC_PACK OldVehicleUnion; |
|
294 |
assert_compile(sizeof(OldVehicleUnion) == 10); |
|
295 |
||
296 |
typedef struct { |
|
297 |
byte type; |
|
298 |
byte subtype; |
|
299 |
uint16 next_hash; // NOLOAD, calculated automatically. |
|
300 |
uint16 index; // NOLOAD, calculated automatically. |
|
301 |
uint32 schedule_ptr; |
|
302 |
byte next_order, next_order_param; |
|
303 |
byte num_orders; |
|
304 |
byte cur_order_index; |
|
305 |
uint16 dest_tile; |
|
306 |
uint16 load_unload_time_rem; |
|
307 |
uint16 date_of_last_service; |
|
308 |
uint16 service_interval; |
|
309 |
byte last_station_visited; |
|
310 |
byte tick_counter; |
|
311 |
uint16 max_speed; |
|
312 |
uint16 x_pos, y_pos; |
|
313 |
byte z_pos; |
|
314 |
byte direction; |
|
315 |
byte x_offs, y_offs; |
|
316 |
byte sprite_width, sprite_height, z_height; |
|
317 |
byte owner; |
|
318 |
uint16 tile; |
|
319 |
uint16 cur_image; |
|
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
123
diff
changeset
|
320 |
|
0 | 321 |
int16 left_coord, right_coord, top_coord, bottom_coord; // NOLOAD, calculated automatically. |
322 |
uint16 vehstatus; |
|
323 |
uint16 cur_speed; |
|
324 |
byte subspeed; |
|
325 |
byte acceleration; |
|
326 |
byte progress; |
|
327 |
byte cargo_type; |
|
328 |
uint16 capacity; |
|
329 |
uint16 number_of_pieces; |
|
330 |
byte source_of_pieces; |
|
331 |
byte days_in_transit; |
|
332 |
uint16 age_in_days, max_age_in_days; |
|
333 |
byte build_year; |
|
334 |
byte unitnumber; |
|
335 |
uint16 engine_type; |
|
336 |
byte spritenum; |
|
337 |
byte day_counter; |
|
338 |
byte breakdowns_since_last_service; |
|
339 |
byte breakdown_ctr, breakdown_delay, breakdown_chance; |
|
340 |
uint16 reliability, reliability_spd_dec; |
|
341 |
uint32 profit_this_year, profit_last_year; |
|
342 |
uint16 next_in_chain; |
|
343 |
uint32 value; |
|
344 |
uint16 string_id; |
|
345 |
OldVehicleUnion u; |
|
346 |
byte unused[20]; |
|
347 |
} GCC_PACK OldVehicle; |
|
348 |
assert_compile(sizeof(OldVehicle) == 0x80); |
|
349 |
||
350 |
typedef struct { |
|
351 |
byte name[32]; |
|
352 |
} GCC_PACK OldName; |
|
353 |
||
354 |
typedef struct { |
|
355 |
uint16 text; |
|
356 |
int16 x,y,z; |
|
357 |
byte namewidth_1, namewidth_2; |
|
358 |
int16 sign_left, sign_top; |
|
359 |
} GCC_PACK OldSign; |
|
360 |
assert_compile(sizeof(OldSign) == 0xE); |
|
361 |
||
362 |
typedef struct { |
|
363 |
uint16 player_avail; |
|
364 |
uint16 intro_date; |
|
365 |
uint16 age; |
|
366 |
uint16 reliability, reliability_spd_dec, reliability_start, reliability_max, reliability_final; |
|
367 |
uint16 duration_phase_1, duration_phase_2, duration_phase_3; |
|
368 |
byte lifelength; |
|
369 |
byte flags; |
|
370 |
byte preview_player; |
|
371 |
byte preview_wait; |
|
372 |
byte railtype; |
|
373 |
byte unk1B; |
|
374 |
} GCC_PACK OldEngine; |
|
375 |
assert_compile(sizeof(OldEngine) == 0x1C); |
|
376 |
||
377 |
typedef struct { |
|
378 |
byte cargo_type; |
|
379 |
byte age; |
|
380 |
byte from; |
|
381 |
byte to; |
|
382 |
} GCC_PACK OldSubsidy; |
|
383 |
assert_compile(sizeof(OldSubsidy) == 4); |
|
384 |
||
385 |
typedef struct { |
|
386 |
uint16 max_no_competitors; |
|
387 |
uint16 competitor_start_time; |
|
388 |
uint16 number_towns; |
|
389 |
uint16 number_industries; |
|
390 |
uint16 max_loan; |
|
391 |
uint16 initial_interest; |
|
392 |
uint16 vehicle_costs; |
|
393 |
uint16 competitor_speed; |
|
394 |
uint16 competitor_intelligence; |
|
395 |
uint16 vehicle_breakdowns; |
|
396 |
uint16 subsidy_multiplier; |
|
397 |
uint16 construction_cost; |
|
398 |
uint16 terrain_type; |
|
399 |
uint16 quantity_sea_lakes; |
|
400 |
uint16 economy; |
|
401 |
uint16 line_reverse_mode; |
|
402 |
uint16 disasters; |
|
403 |
} GCC_PACK OldGameSettings; |
|
404 |
assert_compile(sizeof(OldGameSettings) == 0x22); |
|
405 |
||
406 |
typedef struct { |
|
407 |
uint16 date; |
|
408 |
uint16 date_fract; |
|
409 |
||
410 |
OldTextEffect te_list[30]; // NOLOAD: not so important. |
|
411 |
uint32 seed_1, seed_2; |
|
412 |
||
413 |
OldTown town_list[70]; |
|
414 |
uint16 order_list[5000]; |
|
415 |
||
416 |
uint16 animated_tile_list[256]; |
|
417 |
uint32 ptr_to_next_order; |
|
418 |
OldDepot depots[255]; |
|
419 |
||
420 |
uint32 cur_town_ptr; |
|
421 |
uint16 timer_counter; |
|
422 |
uint16 land_code; // NOLOAD: never needed in game |
|
423 |
uint16 age_cargo_skip_counter; |
|
424 |
uint16 tick_counter; |
|
425 |
uint16 cur_tileloop_tile; |
|
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
123
diff
changeset
|
426 |
|
0 | 427 |
OldPrice prices[49]; |
428 |
OldPaymentRate cargo_payment_rates[12]; |
|
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
123
diff
changeset
|
429 |
|
0 | 430 |
byte map_owner[256*256]; |
431 |
byte map2[256*256]; |
|
432 |
uint16 map3[256*256]; |
|
433 |
byte map_extra[256*256/4]; |
|
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
123
diff
changeset
|
434 |
|
0 | 435 |
OldStation stations[250]; |
436 |
OldIndustry industries[90]; |
|
437 |
OldPlayer players[8]; |
|
438 |
OldVehicle vehicles[850]; |
|
439 |
OldName names[500]; |
|
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
123
diff
changeset
|
440 |
|
0 | 441 |
uint16 vehicle_position_hash[0x1000]; // NOLOAD, calculated automatically. |
442 |
||
443 |
OldSign signs[40]; |
|
444 |
OldEngine engines[256]; |
|
445 |
||
446 |
uint16 vehicle_id_ctr_day; |
|
447 |
OldSubsidy subsidies[8]; |
|
448 |
||
449 |
uint16 next_competitor_start; |
|
450 |
||
451 |
uint16 saved_main_scrollpos_x, saved_main_scrollpos_y, saved_main_scrollpos_zoom; |
|
452 |
uint32 maximum_loan, maximum_loan_unround; |
|
453 |
uint16 economy_fluct; |
|
454 |
uint16 disaster_delay; |
|
455 |
||
456 |
//NOLOAD. These are calculated from InitializeLandscapeVariables |
|
457 |
uint16 cargo_names_s[12], cargo_names_p[12], cargo_names_long_s[12], cargo_names_long_p[12], cargo_names_short[12]; |
|
458 |
uint16 cargo_sprites[12]; |
|
459 |
||
460 |
uint16 engine_name_strings[256]; |
|
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
123
diff
changeset
|
461 |
|
0 | 462 |
//NOLOAD. These are calculated from InitializeLandscapeVariables |
463 |
uint16 railveh_by_cargo_1[12], railveh_by_cargo_2[12], railveh_by_cargo_3[12]; |
|
464 |
uint16 roadveh_by_cargo_start[12]; |
|
465 |
byte roadveh_by_cargo_count[12]; |
|
466 |
uint16 ship_of_type_start[12]; |
|
467 |
byte ship_of_type_count[12]; |
|
468 |
||
469 |
byte human_player_1, human_player_2; //NOLOAD. Calculated automatically. |
|
470 |
byte station_tick_ctr; |
|
471 |
byte currency; |
|
472 |
byte use_kilometers; |
|
473 |
byte cur_player_tick_index; |
|
474 |
byte cur_year, cur_month; //NOLOAD. Calculated automatically. |
|
475 |
byte player_colors[8]; //NOLOAD. Calculated automatically |
|
476 |
||
477 |
byte inflation_amount; |
|
478 |
byte inflation_amount_payment_rates; |
|
479 |
byte interest_rate; |
|
480 |
||
481 |
byte avail_aircraft; |
|
482 |
byte road_side; |
|
483 |
byte town_name_type; |
|
484 |
OldGameSettings game_diff; |
|
485 |
byte difficulty_level; |
|
486 |
byte landscape_type; |
|
487 |
byte trees_tick_ctr; |
|
488 |
byte vehicle_design_names; |
|
489 |
byte snow_line_height; |
|
490 |
||
491 |
byte new_industry_randtable[32]; // NOLOAD. Not needed due to different code design. |
|
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
123
diff
changeset
|
492 |
|
0 | 493 |
//NOLOAD. Initialized by InitializeLandscapeVariables |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
123
diff
changeset
|
494 |
byte cargo_weights[12]; |
0 | 495 |
byte transit_days_table_1[12]; |
496 |
byte transit_days_table_2[12]; |
|
497 |
||
498 |
byte map_type_and_height[256*256]; |
|
499 |
byte map5[256*256]; |
|
500 |
} GCC_PACK OldMain; |
|
501 |
assert_compile(sizeof(OldMain) == 487801 + 256*256*2); |
|
502 |
||
923
865f9716f7f5
(svn r1411) -Fix: structure packing in the OS/2 version (eg, with the old loader).
truelight
parents:
920
diff
changeset
|
503 |
#if defined(_MSC_VER) || defined(__WATCOMC__) |
0 | 504 |
#pragma pack(pop) |
505 |
#endif |
|
506 |
||
507 |
#define REMAP_TOWN_IDX(x) (x - (0x0459154 - 0x0458EF0)) / sizeof(OldTown) |
|
919
b0d6c7642f99
(svn r1407) -Codechange: changed a lot around _stations, _vehicles, _towns and _industries
truelight
parents:
875
diff
changeset
|
508 |
#define REMAP_TOWN_PTR(x) GetTown( REMAP_TOWN_IDX(x) ) |
0 | 509 |
|
510 |
#define REMAP_ORDER_IDX(x) (x - (0x045AB08 - 0x0458EF0)) / sizeof(uint16) |
|
511 |
||
512 |
typedef struct LoadSavegameState { |
|
513 |
int8 mode; |
|
514 |
byte rep_char; |
|
515 |
||
516 |
size_t count; |
|
517 |
size_t buffer_count; |
|
518 |
FILE *fin; |
|
519 |
||
520 |
byte *buffer_cur; |
|
521 |
||
522 |
byte buffer[4096]; |
|
523 |
||
524 |
} LoadSavegameState; |
|
525 |
||
526 |
static LoadSavegameState *_cur_state; |
|
527 |
||
1093
e8d26c7dc42f
(svn r1594) Convert all undefined parameter lists to (void) and add the appropriate warning flags in the Makefile
tron
parents:
1035
diff
changeset
|
528 |
static byte GetSavegameByteFromBuffer(void) |
0 | 529 |
{ |
530 |
LoadSavegameState *lss = _cur_state; |
|
531 |
||
532 |
if (lss->buffer_count == 0) { |
|
533 |
int count = fread(lss->buffer, 1, 4096, lss->fin) ; |
|
534 |
/* if (count == 0) { |
|
535 |
memset(lss->buffer, 0, sizeof(lss->buffer)); |
|
536 |
count = 4096; |
|
537 |
}*/ |
|
538 |
assert(count != 0); |
|
539 |
lss->buffer_count = count; |
|
540 |
lss->buffer_cur = lss->buffer; |
|
541 |
} |
|
542 |
||
543 |
lss->buffer_count--; |
|
544 |
return *lss->buffer_cur++; |
|
545 |
} |
|
546 |
||
1093
e8d26c7dc42f
(svn r1594) Convert all undefined parameter lists to (void) and add the appropriate warning flags in the Makefile
tron
parents:
1035
diff
changeset
|
547 |
static byte DecodeSavegameByte(void) |
0 | 548 |
{ |
549 |
LoadSavegameState *lss = _cur_state; |
|
550 |
int8 x; |
|
551 |
||
552 |
if (lss->mode < 0) { |
|
553 |
if (lss->count != 0) { |
|
554 |
lss->count--; |
|
555 |
return lss->rep_char; |
|
556 |
} |
|
557 |
} else if (lss->mode > 0) { |
|
558 |
if (lss->count != 0) { |
|
559 |
lss->count--; |
|
560 |
return GetSavegameByteFromBuffer(); |
|
561 |
} |
|
562 |
} |
|
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
123
diff
changeset
|
563 |
|
0 | 564 |
x = GetSavegameByteFromBuffer(); |
565 |
if (x >= 0) { |
|
566 |
lss->count = x; |
|
567 |
lss->mode = 1; |
|
568 |
return GetSavegameByteFromBuffer(); |
|
569 |
} else { |
|
570 |
lss->mode = -1; |
|
571 |
lss->count = -x; |
|
572 |
lss->rep_char = GetSavegameByteFromBuffer(); |
|
573 |
return lss->rep_char; |
|
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
123
diff
changeset
|
574 |
} |
0 | 575 |
} |
576 |
||
577 |
static void LoadSavegameBytes(void *p, size_t count) |
|
578 |
{ |
|
579 |
byte *ptr = (byte*)p; |
|
580 |
assert(count > 0); |
|
581 |
do { |
|
582 |
*ptr++ = DecodeSavegameByte(); |
|
583 |
} while (--count); |
|
584 |
} |
|
585 |
||
4
cad62d5f9708
(svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents:
0
diff
changeset
|
586 |
extern uint32 GetOldTownName(uint32 townnameparts, byte old_town_name_type); |
cad62d5f9708
(svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents:
0
diff
changeset
|
587 |
|
919
b0d6c7642f99
(svn r1407) -Codechange: changed a lot around _stations, _vehicles, _towns and _industries
truelight
parents:
875
diff
changeset
|
588 |
static void FixTown(OldTown *o, int num, byte town_name_type) |
0 | 589 |
{ |
919
b0d6c7642f99
(svn r1407) -Codechange: changed a lot around _stations, _vehicles, _towns and _industries
truelight
parents:
875
diff
changeset
|
590 |
Town *t; |
920 | 591 |
uint i = 0; |
919
b0d6c7642f99
(svn r1407) -Codechange: changed a lot around _stations, _vehicles, _towns and _industries
truelight
parents:
875
diff
changeset
|
592 |
|
0 | 593 |
do { |
973
5352a6b57a2e
(svn r1468) -Fix: really old maps do load again (Darkvater / TrueLight)
truelight
parents:
970
diff
changeset
|
594 |
if (o->xy == 0) |
5352a6b57a2e
(svn r1468) -Fix: really old maps do load again (Darkvater / TrueLight)
truelight
parents:
970
diff
changeset
|
595 |
continue; |
5352a6b57a2e
(svn r1468) -Fix: really old maps do load again (Darkvater / TrueLight)
truelight
parents:
970
diff
changeset
|
596 |
|
919
b0d6c7642f99
(svn r1407) -Codechange: changed a lot around _stations, _vehicles, _towns and _industries
truelight
parents:
875
diff
changeset
|
597 |
t = GetTown(i); |
b0d6c7642f99
(svn r1407) -Codechange: changed a lot around _stations, _vehicles, _towns and _industries
truelight
parents:
875
diff
changeset
|
598 |
|
0 | 599 |
t->xy = o->xy; |
600 |
t->population = o->population; |
|
601 |
t->townnametype = o->townnametype; |
|
602 |
t->townnameparts = o->townnameparts; |
|
4
cad62d5f9708
(svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents:
0
diff
changeset
|
603 |
// Random TownNames |
cad62d5f9708
(svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents:
0
diff
changeset
|
604 |
if (IS_INT_INSIDE(o->townnametype, 0x20C1, 0x20C2 + 1)) { |
cad62d5f9708
(svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents:
0
diff
changeset
|
605 |
t->townnametype = SPECSTR_TOWNNAME_ENGLISH + town_name_type; |
cad62d5f9708
(svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents:
0
diff
changeset
|
606 |
if (o->xy) |
cad62d5f9708
(svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents:
0
diff
changeset
|
607 |
t->townnameparts = GetOldTownName(o->townnameparts, town_name_type); |
cad62d5f9708
(svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents:
0
diff
changeset
|
608 |
} |
0 | 609 |
|
610 |
t->grow_counter = o->grow_counter; |
|
611 |
t->flags12 = o->flags12; |
|
612 |
memcpy(t->ratings,o->ratings,sizeof(t->ratings)); |
|
613 |
t->have_ratings = o->have_ratings; |
|
614 |
t->statues = o->statues; |
|
615 |
t->num_houses = o->num_houses; |
|
616 |
t->time_until_rebuild = o->time_until_rebuild; |
|
617 |
t->growth_rate = o->growth_rate; |
|
618 |
t->new_max_pass = o->new_max_pass; |
|
619 |
t->new_max_mail = o->new_max_mail; |
|
620 |
t->new_act_pass = o->new_act_pass; |
|
621 |
t->new_act_mail = o->new_act_mail; |
|
622 |
t->max_pass = o->max_pass; |
|
623 |
t->max_mail = o->max_mail; |
|
624 |
t->act_pass = o->act_pass; |
|
625 |
t->act_mail = o->act_mail; |
|
626 |
t->pct_pass_transported = o->pct_pass_transported; |
|
627 |
t->pct_mail_transported = o->pct_mail_transported; |
|
628 |
t->new_act_food = o->new_act_food; |
|
4
cad62d5f9708
(svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents:
0
diff
changeset
|
629 |
t->new_act_water = o->new_act_water; |
0 | 630 |
t->act_food = o->act_food; |
4
cad62d5f9708
(svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents:
0
diff
changeset
|
631 |
t->act_water = o->act_water; |
0 | 632 |
t->road_build_months = o->road_build_months; |
633 |
t->fund_buildings_months = o->fund_buildings_months; |
|
919
b0d6c7642f99
(svn r1407) -Codechange: changed a lot around _stations, _vehicles, _towns and _industries
truelight
parents:
875
diff
changeset
|
634 |
} while (i++,o++,--num); |
0 | 635 |
} |
636 |
||
919
b0d6c7642f99
(svn r1407) -Codechange: changed a lot around _stations, _vehicles, _towns and _industries
truelight
parents:
875
diff
changeset
|
637 |
static void FixIndustry(OldIndustry *o, int num) |
0 | 638 |
{ |
919
b0d6c7642f99
(svn r1407) -Codechange: changed a lot around _stations, _vehicles, _towns and _industries
truelight
parents:
875
diff
changeset
|
639 |
Industry *i; |
b0d6c7642f99
(svn r1407) -Codechange: changed a lot around _stations, _vehicles, _towns and _industries
truelight
parents:
875
diff
changeset
|
640 |
uint j = 0; |
b0d6c7642f99
(svn r1407) -Codechange: changed a lot around _stations, _vehicles, _towns and _industries
truelight
parents:
875
diff
changeset
|
641 |
|
0 | 642 |
do { |
973
5352a6b57a2e
(svn r1468) -Fix: really old maps do load again (Darkvater / TrueLight)
truelight
parents:
970
diff
changeset
|
643 |
if (o->xy == 0) |
5352a6b57a2e
(svn r1468) -Fix: really old maps do load again (Darkvater / TrueLight)
truelight
parents:
970
diff
changeset
|
644 |
continue; |
5352a6b57a2e
(svn r1468) -Fix: really old maps do load again (Darkvater / TrueLight)
truelight
parents:
970
diff
changeset
|
645 |
|
919
b0d6c7642f99
(svn r1407) -Codechange: changed a lot around _stations, _vehicles, _towns and _industries
truelight
parents:
875
diff
changeset
|
646 |
i = GetIndustry(j); |
b0d6c7642f99
(svn r1407) -Codechange: changed a lot around _stations, _vehicles, _towns and _industries
truelight
parents:
875
diff
changeset
|
647 |
|
0 | 648 |
i->xy = o->xy; |
649 |
i->town = REMAP_TOWN_PTR(o->town); |
|
650 |
i->width = o->width; |
|
651 |
i->height = o->height; |
|
652 |
i->produced_cargo[0] = o->produced_cargo[0]; |
|
653 |
i->produced_cargo[1] = o->produced_cargo[1]; |
|
654 |
i->cargo_waiting[0] = o->cargo_waiting[0]; |
|
655 |
i->cargo_waiting[1] = o->cargo_waiting[1]; |
|
656 |
i->production_rate[0] = o->production_rate[0]; |
|
657 |
i->production_rate[1] = o->production_rate[1]; |
|
658 |
i->accepts_cargo[0] = o->accepts_cargo[0]; |
|
659 |
i->accepts_cargo[1] = o->accepts_cargo[1]; |
|
660 |
i->accepts_cargo[2] = o->accepts_cargo[2]; |
|
661 |
i->prod_level = o->prod_level; |
|
662 |
i->last_mo_production[0] = o->last_mo_production[0]; |
|
663 |
i->last_mo_production[1] = o->last_mo_production[1]; |
|
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
123
diff
changeset
|
664 |
|
0 | 665 |
i->last_mo_transported[0] = o->last_mo_transported[0]; |
666 |
i->last_mo_transported[1] = o->last_mo_transported[1]; |
|
667 |
i->last_mo_transported[2] = o->last_mo_transported[2]; |
|
668 |
||
669 |
i->pct_transported[0] = o->pct_transported[0]; |
|
670 |
i->pct_transported[1] = o->pct_transported[1]; |
|
671 |
||
672 |
i->total_production[0] = o->total_production[0]; |
|
673 |
i->total_production[1] = o->total_production[1]; |
|
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
123
diff
changeset
|
674 |
|
0 | 675 |
i->total_transported[0] = i->total_transported[0]; |
676 |
i->total_transported[1] = i->total_transported[1]; |
|
677 |
||
678 |
i->type = o->type; |
|
679 |
i->owner = o->owner; |
|
680 |
i->color_map = o->color_map; |
|
681 |
i->last_prod_year = o->last_prod_year; |
|
682 |
i->counter = o->counter; |
|
683 |
i->was_cargo_delivered = o->was_cargo_delivered; |
|
919
b0d6c7642f99
(svn r1407) -Codechange: changed a lot around _stations, _vehicles, _towns and _industries
truelight
parents:
875
diff
changeset
|
684 |
} while (j++,o++,--num); |
0 | 685 |
} |
686 |
||
687 |
static void FixGoodsEntry(GoodsEntry *g, OldGoodsEntry *o, int num) |
|
688 |
{ |
|
689 |
do { |
|
690 |
g->waiting_acceptance = o->waiting_acceptance; |
|
691 |
g->days_since_pickup = o->days_since_pickup; |
|
692 |
g->rating = o->rating; |
|
693 |
g->enroute_from = o->enroute_from; |
|
694 |
g->enroute_time = o->enroute_time; |
|
695 |
g->last_speed = o->last_speed; |
|
696 |
g->last_age = o->last_age; |
|
697 |
} while (g++,o++,--num); |
|
698 |
} |
|
699 |
||
919
b0d6c7642f99
(svn r1407) -Codechange: changed a lot around _stations, _vehicles, _towns and _industries
truelight
parents:
875
diff
changeset
|
700 |
static void FixStation(OldStation *o, int num) |
0 | 701 |
{ |
919
b0d6c7642f99
(svn r1407) -Codechange: changed a lot around _stations, _vehicles, _towns and _industries
truelight
parents:
875
diff
changeset
|
702 |
Station *s; |
b0d6c7642f99
(svn r1407) -Codechange: changed a lot around _stations, _vehicles, _towns and _industries
truelight
parents:
875
diff
changeset
|
703 |
uint i = 0; |
b0d6c7642f99
(svn r1407) -Codechange: changed a lot around _stations, _vehicles, _towns and _industries
truelight
parents:
875
diff
changeset
|
704 |
|
0 | 705 |
do { |
973
5352a6b57a2e
(svn r1468) -Fix: really old maps do load again (Darkvater / TrueLight)
truelight
parents:
970
diff
changeset
|
706 |
if (o->xy == 0) |
5352a6b57a2e
(svn r1468) -Fix: really old maps do load again (Darkvater / TrueLight)
truelight
parents:
970
diff
changeset
|
707 |
continue; |
5352a6b57a2e
(svn r1468) -Fix: really old maps do load again (Darkvater / TrueLight)
truelight
parents:
970
diff
changeset
|
708 |
|
919
b0d6c7642f99
(svn r1407) -Codechange: changed a lot around _stations, _vehicles, _towns and _industries
truelight
parents:
875
diff
changeset
|
709 |
s = GetStation(i); |
b0d6c7642f99
(svn r1407) -Codechange: changed a lot around _stations, _vehicles, _towns and _industries
truelight
parents:
875
diff
changeset
|
710 |
|
0 | 711 |
s->xy = o->xy; |
712 |
s->town = REMAP_TOWN_PTR(o->town); |
|
713 |
s->bus_tile = o->bus_tile; |
|
714 |
s->lorry_tile = o->lorry_tile; |
|
715 |
s->train_tile = o->train_tile; |
|
716 |
s->airport_tile = o->airport_tile; |
|
717 |
s->dock_tile = o->dock_tile; |
|
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
123
diff
changeset
|
718 |
|
0 | 719 |
if (o->train_tile) { |
720 |
int w = (o->platforms >> 3) & 0x7; |
|
721 |
int h = (o->platforms & 0x7); |
|
722 |
if (_map5[o->train_tile]&1) intswap(w,h); |
|
723 |
s->trainst_w = w; |
|
724 |
s->trainst_h = h; |
|
725 |
} |
|
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
123
diff
changeset
|
726 |
|
0 | 727 |
s->string_id = RemapOldStringID(o->string_id); |
728 |
s->had_vehicle_of_type = o->had_vehicle_of_type; |
|
729 |
FixGoodsEntry(s->goods, o->goods, lengthof(o->goods)); |
|
730 |
s->time_since_load = o->time_since_load; |
|
731 |
s->time_since_unload = o->time_since_unload; |
|
732 |
s->delete_ctr = o->delete_ctr; |
|
733 |
s->owner = o->owner; |
|
734 |
s->facilities = o->facilities; |
|
735 |
s->airport_type = o->airport_type; |
|
736 |
s->truck_stop_status = o->truck_stop_status; |
|
737 |
s->bus_stop_status = o->bus_stop_status; |
|
123
d550772c61e6
(svn r124) Prepared code for removal of block_months variable in next major savegame version
dominik
parents:
4
diff
changeset
|
738 |
s->blocked_months_obsolete = o->blocked_months_obsolete; |
0 | 739 |
s->airport_flags = o->airport_flags; |
740 |
s->last_vehicle = o->last_vehicle; |
|
919
b0d6c7642f99
(svn r1407) -Codechange: changed a lot around _stations, _vehicles, _towns and _industries
truelight
parents:
875
diff
changeset
|
741 |
} while (i++,o++,--num); |
0 | 742 |
} |
743 |
||
744 |
static void FixDepot(Depot *n, OldDepot *o, int num) |
|
745 |
{ |
|
746 |
do { |
|
974 | 747 |
if (o->xy == 0) |
748 |
continue; |
|
749 |
||
0 | 750 |
n->town_index = REMAP_TOWN_IDX(o->town); |
751 |
n->xy = o->xy; |
|
752 |
} while (n++,o++,--num); |
|
753 |
} |
|
754 |
||
1024
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
988
diff
changeset
|
755 |
static void FixOrder(uint16 *o, int num) |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
988
diff
changeset
|
756 |
{ |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
988
diff
changeset
|
757 |
Order *order; |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
988
diff
changeset
|
758 |
int i; |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
988
diff
changeset
|
759 |
|
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
988
diff
changeset
|
760 |
for (i = 0; i < num; ++i) { |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
988
diff
changeset
|
761 |
order = GetOrder(i); |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
988
diff
changeset
|
762 |
AssignOrder(order, UnpackOldOrder(*o)); |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
988
diff
changeset
|
763 |
/* Recover the next list */ |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
988
diff
changeset
|
764 |
if (i > 0 && order->type != OT_NOTHING) |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
988
diff
changeset
|
765 |
GetOrder(i - 1)->next = order; |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
988
diff
changeset
|
766 |
|
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
988
diff
changeset
|
767 |
o++; |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
988
diff
changeset
|
768 |
} |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
988
diff
changeset
|
769 |
} |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
988
diff
changeset
|
770 |
|
919
b0d6c7642f99
(svn r1407) -Codechange: changed a lot around _stations, _vehicles, _towns and _industries
truelight
parents:
875
diff
changeset
|
771 |
static void FixVehicle(OldVehicle *o, int num) |
0 | 772 |
{ |
919
b0d6c7642f99
(svn r1407) -Codechange: changed a lot around _stations, _vehicles, _towns and _industries
truelight
parents:
875
diff
changeset
|
773 |
Vehicle *n; |
b0d6c7642f99
(svn r1407) -Codechange: changed a lot around _stations, _vehicles, _towns and _industries
truelight
parents:
875
diff
changeset
|
774 |
uint i = 0; |
b0d6c7642f99
(svn r1407) -Codechange: changed a lot around _stations, _vehicles, _towns and _industries
truelight
parents:
875
diff
changeset
|
775 |
|
0 | 776 |
do { |
973
5352a6b57a2e
(svn r1468) -Fix: really old maps do load again (Darkvater / TrueLight)
truelight
parents:
970
diff
changeset
|
777 |
if (o->type == 0) |
5352a6b57a2e
(svn r1468) -Fix: really old maps do load again (Darkvater / TrueLight)
truelight
parents:
970
diff
changeset
|
778 |
continue; |
5352a6b57a2e
(svn r1468) -Fix: really old maps do load again (Darkvater / TrueLight)
truelight
parents:
970
diff
changeset
|
779 |
|
919
b0d6c7642f99
(svn r1407) -Codechange: changed a lot around _stations, _vehicles, _towns and _industries
truelight
parents:
875
diff
changeset
|
780 |
n = GetVehicle(i); |
b0d6c7642f99
(svn r1407) -Codechange: changed a lot around _stations, _vehicles, _towns and _industries
truelight
parents:
875
diff
changeset
|
781 |
|
0 | 782 |
n->type = o->type; |
783 |
n->subtype = o->subtype; |
|
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
123
diff
changeset
|
784 |
|
0 | 785 |
if (o->schedule_ptr == 0xFFFFFFFF || o->schedule_ptr == 0) { |
1024
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
988
diff
changeset
|
786 |
n->orders = NULL; |
0 | 787 |
} else { |
1024
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
988
diff
changeset
|
788 |
n->orders = GetOrder(REMAP_ORDER_IDX(o->schedule_ptr)); |
0 | 789 |
} |
790 |
||
555
eec6c0294435
(svn r955) Replace uint16 for orders with struct Order
tron
parents:
507
diff
changeset
|
791 |
n->current_order.type = o->next_order & 0x0f; |
eec6c0294435
(svn r955) Replace uint16 for orders with struct Order
tron
parents:
507
diff
changeset
|
792 |
n->current_order.flags = o->next_order >> 4; |
eec6c0294435
(svn r955) Replace uint16 for orders with struct Order
tron
parents:
507
diff
changeset
|
793 |
n->current_order.station = o->next_order_param; |
0 | 794 |
n->num_orders = o->num_orders; |
795 |
n->cur_order_index = o->cur_order_index; |
|
796 |
n->dest_tile = o->dest_tile; |
|
797 |
n->load_unload_time_rem = o->load_unload_time_rem; |
|
798 |
n->date_of_last_service = o->date_of_last_service; |
|
799 |
n->service_interval = o->service_interval; |
|
800 |
n->last_station_visited = o->last_station_visited; |
|
801 |
n->tick_counter = o->tick_counter; |
|
802 |
n->max_speed = o->max_speed; |
|
803 |
n->x_pos = o->x_pos; |
|
804 |
n->y_pos = o->y_pos; |
|
805 |
n->z_pos = o->z_pos; |
|
806 |
n->direction = o->direction; |
|
807 |
n->x_offs = o->x_offs; |
|
808 |
n->y_offs = o->y_offs; |
|
809 |
n->sprite_width = o->sprite_width; |
|
810 |
n->sprite_height = o->sprite_height; |
|
811 |
n->z_height = o->z_height; |
|
812 |
n->owner = o->owner; |
|
813 |
n->tile = o->tile; |
|
814 |
n->cur_image = o->cur_image; |
|
392
3657d06c6564
(svn r584) -newgrf: Increase chance to get a TTDPatch savegame using custom GRF files loaded (pasky)
darkvater
parents:
206
diff
changeset
|
815 |
if (o->cur_image >= 0x2000) // TTDPatch maps sprites from 0x2000 up. |
3657d06c6564
(svn r584) -newgrf: Increase chance to get a TTDPatch savegame using custom GRF files loaded (pasky)
darkvater
parents:
206
diff
changeset
|
816 |
n->cur_image -= 0x2000 - _custom_sprites_base; |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
123
diff
changeset
|
817 |
|
0 | 818 |
n->vehstatus = o->vehstatus; |
819 |
n->cur_speed = o->cur_speed; |
|
820 |
n->subspeed = o->subspeed; |
|
821 |
n->acceleration = o->acceleration; |
|
822 |
n->progress = o->progress; |
|
823 |
n->cargo_type = o->cargo_type; |
|
824 |
n->cargo_cap = o->capacity; |
|
825 |
n->cargo_count = o->number_of_pieces; |
|
826 |
n->cargo_source = o->source_of_pieces; |
|
827 |
n->cargo_days = o->days_in_transit; |
|
828 |
n->age = o->age_in_days; |
|
829 |
n->max_age = o->max_age_in_days; |
|
830 |
n->build_year = o->build_year; |
|
831 |
n->unitnumber = o->unitnumber; |
|
832 |
n->engine_type = o->engine_type; |
|
392
3657d06c6564
(svn r584) -newgrf: Increase chance to get a TTDPatch savegame using custom GRF files loaded (pasky)
darkvater
parents:
206
diff
changeset
|
833 |
switch (o->spritenum) { |
3657d06c6564
(svn r584) -newgrf: Increase chance to get a TTDPatch savegame using custom GRF files loaded (pasky)
darkvater
parents:
206
diff
changeset
|
834 |
case 0xfd: n->spritenum = 0xfd; break; |
3657d06c6564
(svn r584) -newgrf: Increase chance to get a TTDPatch savegame using custom GRF files loaded (pasky)
darkvater
parents:
206
diff
changeset
|
835 |
case 0xff: n->spritenum = 0xfe; break; |
3657d06c6564
(svn r584) -newgrf: Increase chance to get a TTDPatch savegame using custom GRF files loaded (pasky)
darkvater
parents:
206
diff
changeset
|
836 |
default: n->spritenum = o->spritenum >> 1; break; |
3657d06c6564
(svn r584) -newgrf: Increase chance to get a TTDPatch savegame using custom GRF files loaded (pasky)
darkvater
parents:
206
diff
changeset
|
837 |
} |
0 | 838 |
n->day_counter = o->day_counter; |
839 |
n->breakdowns_since_last_service = o->breakdowns_since_last_service; |
|
840 |
n->breakdown_ctr = o->breakdown_ctr; |
|
841 |
n->breakdown_delay = o->breakdown_delay; |
|
842 |
n->breakdown_chance = o->breakdown_chance; |
|
843 |
n->reliability = o->reliability; |
|
844 |
n->reliability_spd_dec = o->reliability_spd_dec; |
|
845 |
n->profit_this_year = o->profit_this_year; |
|
846 |
n->profit_last_year = o->profit_last_year; |
|
919
b0d6c7642f99
(svn r1407) -Codechange: changed a lot around _stations, _vehicles, _towns and _industries
truelight
parents:
875
diff
changeset
|
847 |
n->next = (o->next_in_chain == 0xFFFF) ? NULL : GetVehicle(o->next_in_chain); |
0 | 848 |
n->value = o->value; |
849 |
n->string_id = RemapOldStringID(o->string_id); |
|
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
123
diff
changeset
|
850 |
|
0 | 851 |
switch(o->type) { |
852 |
case VEH_Train: |
|
853 |
n->u.rail.track = o->u.rail.track; |
|
854 |
n->u.rail.force_proceed = o->u.rail.force_proceed; |
|
855 |
n->u.rail.crash_anim_pos = o->u.rail.crash_anim_pos; |
|
856 |
n->u.rail.railtype = o->u.rail.railtype; |
|
857 |
break; |
|
858 |
||
859 |
case VEH_Road: |
|
860 |
n->u.road.state = o->u.road.state; |
|
861 |
n->u.road.frame = o->u.road.frame; |
|
862 |
n->u.road.unk2 = o->u.road.unk2; |
|
863 |
n->u.road.overtaking = o->u.road.overtaking; |
|
864 |
n->u.road.overtaking_ctr = o->u.road.overtaking_ctr; |
|
865 |
n->u.road.crashed_ctr = o->u.road.crashed_ctr; |
|
866 |
n->u.road.reverse_ctr = o->u.road.reverse_ctr; |
|
867 |
break; |
|
868 |
case VEH_Ship: |
|
869 |
n->u.ship.state = o->u.ship.state; |
|
870 |
break; |
|
871 |
case VEH_Aircraft: |
|
872 |
n->u.air.crashed_counter = o->u.air.crashed_counter; |
|
873 |
n->u.air.pos = o->u.air.unk0; |
|
874 |
n->u.air.targetairport = o->u.air.targetairport; |
|
875 |
n->u.air.state = o->u.air.state; |
|
876 |
break; |
|
877 |
case VEH_Special: |
|
878 |
n->u.special.unk0 = o->u.special.unk0; |
|
879 |
n->u.special.unk2 = o->u.special.unk2; |
|
880 |
n->subtype = o->subtype >> 1; |
|
881 |
break; |
|
882 |
case VEH_Disaster: |
|
883 |
n->u.disaster.image_override = o->u.disaster.image_override; |
|
884 |
n->u.disaster.unk2 = o->u.disaster.unk2; |
|
885 |
break; |
|
886 |
} |
|
919
b0d6c7642f99
(svn r1407) -Codechange: changed a lot around _stations, _vehicles, _towns and _industries
truelight
parents:
875
diff
changeset
|
887 |
} while (i++,o++,--num); |
1024
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
988
diff
changeset
|
888 |
|
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
988
diff
changeset
|
889 |
/* Check for shared orders, and link them correctly */ |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
988
diff
changeset
|
890 |
{ |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
988
diff
changeset
|
891 |
Vehicle *v; |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
988
diff
changeset
|
892 |
|
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
988
diff
changeset
|
893 |
FOR_ALL_VEHICLES(v) { |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
988
diff
changeset
|
894 |
Vehicle *u; |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
988
diff
changeset
|
895 |
|
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
988
diff
changeset
|
896 |
if (v->type == 0) |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
988
diff
changeset
|
897 |
continue; |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
988
diff
changeset
|
898 |
|
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
988
diff
changeset
|
899 |
FOR_ALL_VEHICLES_FROM(u, v->index + 1) { |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
988
diff
changeset
|
900 |
if (u->type == 0) |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
988
diff
changeset
|
901 |
continue; |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
988
diff
changeset
|
902 |
|
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
988
diff
changeset
|
903 |
/* If a vehicle has the same orders, add the link to eachother |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
988
diff
changeset
|
904 |
in both vehicles */ |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
988
diff
changeset
|
905 |
if (v->orders == u->orders) { |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
988
diff
changeset
|
906 |
v->next_shared = u; |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
988
diff
changeset
|
907 |
u->prev_shared = v; |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
988
diff
changeset
|
908 |
break; |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
988
diff
changeset
|
909 |
} |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
988
diff
changeset
|
910 |
} |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
988
diff
changeset
|
911 |
} |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
988
diff
changeset
|
912 |
} |
0 | 913 |
} |
914 |
||
915 |
static void FixSubsidy(Subsidy *n, OldSubsidy *o, int num) |
|
916 |
{ |
|
917 |
do { |
|
918 |
n->age = o->age; |
|
919 |
n->cargo_type = o->cargo_type; |
|
920 |
n->from = o->from; |
|
921 |
n->to = o->to; |
|
922 |
} while (n++,o++,--num); |
|
923 |
} |
|
924 |
||
925 |
static void FixEconomy(PlayerEconomyEntry *n, OldPlayerEconomy *o) |
|
926 |
{ |
|
927 |
n->company_value = o->company_value; |
|
928 |
n->delivered_cargo = o->delivered_cargo; |
|
929 |
n->income = -o->income; |
|
930 |
n->expenses = -o->expenses; |
|
931 |
n->performance_history = o->performance_history; |
|
932 |
} |
|
933 |
||
934 |
static void FixAiBuildRec(AiBuildRec *n, OldAiBuildRec *o) |
|
935 |
{ |
|
936 |
n->spec_tile = o->spec_tile; |
|
937 |
n->use_tile = o->use_tile; |
|
938 |
n->rand_rng = o->rand_rng; |
|
939 |
n->cur_building_rule = o->cur_rule; |
|
940 |
n->unk6 = o->unk6; |
|
941 |
n->unk7 = o->unk7; |
|
942 |
n->buildcmd_a = o->buildcmd_a; |
|
943 |
n->buildcmd_b = o->buildcmd_b; |
|
944 |
n->direction = o->direction; |
|
945 |
n->cargo = o->cargo; |
|
946 |
} |
|
947 |
||
4
cad62d5f9708
(svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents:
0
diff
changeset
|
948 |
static void FixPlayer(Player *n, OldPlayer *o, int num, byte town_name_type) |
0 | 949 |
{ |
950 |
int i, j; |
|
951 |
int x = 0; |
|
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
123
diff
changeset
|
952 |
|
0 | 953 |
do { |
954 |
n->name_1 = RemapOldStringID(o->name_1); |
|
955 |
n->name_2 = o->name_2; |
|
4
cad62d5f9708
(svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents:
0
diff
changeset
|
956 |
/* In every Old TTD(Patch) game Player1 (0) is human, and all others are AI |
cad62d5f9708
(svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents:
0
diff
changeset
|
957 |
* (Except in .SV2 savegames, which were 2 player games, but we are not fixing |
cad62d5f9708
(svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents:
0
diff
changeset
|
958 |
* that |
cad62d5f9708
(svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents:
0
diff
changeset
|
959 |
*/ |
cad62d5f9708
(svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents:
0
diff
changeset
|
960 |
|
cad62d5f9708
(svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents:
0
diff
changeset
|
961 |
if (x == 0) { |
cad62d5f9708
(svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents:
0
diff
changeset
|
962 |
if (o->name_1 == 0) // if first player doesn't have a name, he is 'unnamed' |
cad62d5f9708
(svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents:
0
diff
changeset
|
963 |
n->name_1 = STR_SV_UNNAMED; |
cad62d5f9708
(svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents:
0
diff
changeset
|
964 |
} else { |
cad62d5f9708
(svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents:
0
diff
changeset
|
965 |
n->is_ai = 1; |
cad62d5f9708
(svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents:
0
diff
changeset
|
966 |
} |
cad62d5f9708
(svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents:
0
diff
changeset
|
967 |
|
cad62d5f9708
(svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents:
0
diff
changeset
|
968 |
if (o->name_1 != 0) |
cad62d5f9708
(svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents:
0
diff
changeset
|
969 |
n->is_active = true; |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
123
diff
changeset
|
970 |
|
0 | 971 |
n->face = o->face; |
972 |
n->president_name_1 = o->pres_name_1; |
|
973 |
n->president_name_2 = o->pres_name_2; |
|
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
123
diff
changeset
|
974 |
|
0 | 975 |
n->money64 = n->player_money = o->money; |
976 |
n->current_loan = o->loan; |
|
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
123
diff
changeset
|
977 |
|
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
123
diff
changeset
|
978 |
// Correct money for scenario loading. |
0 | 979 |
// It's always 893288 pounds (and no loan), if not corrected |
980 |
if(o->money==0xda168) |
|
981 |
n->money64 = n->player_money = n->current_loan =100000; |
|
982 |
||
983 |
n->player_color = o->color; |
|
984 |
_player_colors[x] = o->color; |
|
985 |
x++; |
|
986 |
||
987 |
n->player_money_fraction = o->money_fract; |
|
988 |
n->quarters_of_bankrupcy = o->quarters_of_bankrupcy; |
|
989 |
n->bankrupt_asked = o->bankrupt_asked; |
|
990 |
n->bankrupt_value = o->bankrupt_value; |
|
991 |
n->bankrupt_timeout = o->bankrupt_timeout; |
|
992 |
n->cargo_types = o->cargo_types; |
|
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
123
diff
changeset
|
993 |
|
0 | 994 |
for(i=0; i!=3; i++) |
995 |
for(j=0; j!=13; j++) |
|
996 |
n->yearly_expenses[i][j] = o->expenses[i].cost[j]; |
|
997 |
||
998 |
FixEconomy(&n->cur_economy, &o->economy[0]); |
|
999 |
for(i=0; i!=24; i++) FixEconomy(&n->old_economy[i], &o->economy[i+1]); |
|
970
492ca84ecc6c
(svn r1465) -Fix: [1099101] starting year patch goes out of range. Clamped year between 1920-2090 as wel as adding defines for it.
darkvater
parents:
959
diff
changeset
|
1000 |
n->inaugurated_year = o->inaugurated_date - MAX_YEAR_BEGIN_REAL; |
0 | 1001 |
n->last_build_coordinate = o->last_build_coordinate; |
1002 |
n->num_valid_stat_ent = o->num_valid_stat_ent; |
|
1003 |
||
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
123
diff
changeset
|
1004 |
/* Not good, since AI doesn't have a vehicle assigned as |
4
cad62d5f9708
(svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents:
0
diff
changeset
|
1005 |
* in p->ai.cur_veh and thus will crash on certain actions. |
cad62d5f9708
(svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents:
0
diff
changeset
|
1006 |
* Best is to set state to AiStateVehLoop (2) |
cad62d5f9708
(svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents:
0
diff
changeset
|
1007 |
* n->ai.state = o->ai_state; |
cad62d5f9708
(svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents:
0
diff
changeset
|
1008 |
*/ |
cad62d5f9708
(svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents:
0
diff
changeset
|
1009 |
n->ai.state = 2; |
0 | 1010 |
n->ai.state_mode = o->ai_state_mode; |
1011 |
n->ai.state_counter = o->ai_state_counter; |
|
1012 |
n->ai.timeout_counter = o->ai_timeout_counter; |
|
1013 |
n->ai.banned_tile_count = o->ai_banned_tile_count; |
|
1014 |
n->ai.railtype_to_use = o->ai_railtype_to_use; |
|
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
123
diff
changeset
|
1015 |
|
0 | 1016 |
FixAiBuildRec(&n->ai.src, &o->ai_src); |
1017 |
FixAiBuildRec(&n->ai.dst, &o->ai_dst); |
|
1018 |
FixAiBuildRec(&n->ai.mid1, &o->ai_mid1); |
|
1019 |
FixAiBuildRec(&n->ai.mid2, &o->ai_mid2); |
|
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
123
diff
changeset
|
1020 |
|
0 | 1021 |
n->ai.cargo_type = o->ai_cargo_type; |
1022 |
n->ai.num_wagons = o->ai_num_wagons; |
|
1023 |
n->ai.num_build_rec = o->ai_num_build_rec; |
|
1024 |
n->ai.num_loco_to_build = o->ai_num_loco_to_build; |
|
1025 |
n->ai.num_want_fullload = o->ai_num_want_fullload; |
|
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
123
diff
changeset
|
1026 |
|
0 | 1027 |
for(i=0; i!=9; i++) n->ai.wagon_list[i] = o->ai_wagonlist[i]; |
1028 |
memcpy(n->ai.order_list_blocks, o->ai_order_list_blocks, 20); |
|
1029 |
n->ai.start_tile_a = o->ai_start_tile_a; |
|
1030 |
n->ai.start_tile_b = o->ai_start_tile_b; |
|
1031 |
n->ai.cur_tile_a = o->ai_cur_tile_a; |
|
1032 |
n->ai.cur_tile_b = o->ai_cur_tile_b; |
|
1033 |
n->ai.start_dir_a = o->ai_start_dir_a; |
|
1034 |
n->ai.start_dir_b = o->ai_start_dir_b; |
|
1035 |
n->ai.cur_dir_a = o->ai_cur_dir_a; |
|
1036 |
n->ai.cur_dir_b = o->ai_cur_dir_b; |
|
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
123
diff
changeset
|
1037 |
|
0 | 1038 |
for(i=0; i!=16; i++) { |
1039 |
n->ai.banned_tiles[i] = o->banned_tiles[i].tile; |
|
1040 |
n->ai.banned_val[i] = o->banned_tiles[i].data; |
|
1041 |
} |
|
1042 |
||
1043 |
n->ai.build_kind = o->ai_build_kind; |
|
1044 |
n->ai.route_type_mask = o->ai_route_type_mask; |
|
1045 |
n->ai.tick = o->ai_tick; |
|
1046 |
||
1047 |
n->block_preview = o->block_preview; |
|
1048 |
n->max_railtype = (o->max_railtype == 0) ? 1 : o->max_railtype; |
|
1049 |
n->location_of_house = o->location_of_house; |
|
1050 |
if (o->location_of_house == 0xFFFF) n->location_of_house = 0; |
|
1051 |
||
1052 |
n->share_owners[0] = o->share_owners[0]; |
|
1053 |
n->share_owners[1] = o->share_owners[1]; |
|
1054 |
n->share_owners[2] = o->share_owners[2]; |
|
1055 |
n->share_owners[3] = o->share_owners[3]; |
|
1056 |
||
1057 |
if (o->ai_state == 2) { |
|
1058 |
n->ai.cur_veh = NULL; |
|
1059 |
} |
|
1060 |
} while (n++,o++,--num); |
|
1061 |
} |
|
1062 |
||
1063 |
static void FixName(OldName *o, int num) |
|
1064 |
{ |
|
1065 |
int i; |
|
1066 |
for(i=0; i!=num; i++) { |
|
1067 |
memcpy(_name_array[i], o[i].name, sizeof(o[i].name)); |
|
1068 |
} |
|
1069 |
} |
|
1070 |
||
988
2482369a61ff
(svn r1486) -Codechange: moved all 'signs' stuff to signs.c/h and prepared it for
truelight
parents:
974
diff
changeset
|
1071 |
static void FixSign(OldSign *o, int num) |
0 | 1072 |
{ |
988
2482369a61ff
(svn r1486) -Codechange: moved all 'signs' stuff to signs.c/h and prepared it for
truelight
parents:
974
diff
changeset
|
1073 |
SignStruct *n; |
2482369a61ff
(svn r1486) -Codechange: moved all 'signs' stuff to signs.c/h and prepared it for
truelight
parents:
974
diff
changeset
|
1074 |
uint i = 0; |
2482369a61ff
(svn r1486) -Codechange: moved all 'signs' stuff to signs.c/h and prepared it for
truelight
parents:
974
diff
changeset
|
1075 |
|
0 | 1076 |
do { |
988
2482369a61ff
(svn r1486) -Codechange: moved all 'signs' stuff to signs.c/h and prepared it for
truelight
parents:
974
diff
changeset
|
1077 |
if (o->text == 0) |
2482369a61ff
(svn r1486) -Codechange: moved all 'signs' stuff to signs.c/h and prepared it for
truelight
parents:
974
diff
changeset
|
1078 |
continue; |
2482369a61ff
(svn r1486) -Codechange: moved all 'signs' stuff to signs.c/h and prepared it for
truelight
parents:
974
diff
changeset
|
1079 |
|
2482369a61ff
(svn r1486) -Codechange: moved all 'signs' stuff to signs.c/h and prepared it for
truelight
parents:
974
diff
changeset
|
1080 |
n = GetSign(i); |
2482369a61ff
(svn r1486) -Codechange: moved all 'signs' stuff to signs.c/h and prepared it for
truelight
parents:
974
diff
changeset
|
1081 |
|
0 | 1082 |
n->str = o->text; |
1083 |
n->x = o->x; |
|
1084 |
n->y = o->y; |
|
1085 |
n->z = o->z; |
|
988
2482369a61ff
(svn r1486) -Codechange: moved all 'signs' stuff to signs.c/h and prepared it for
truelight
parents:
974
diff
changeset
|
1086 |
} while (i++,o++,--num); |
0 | 1087 |
} |
1088 |
||
1089 |
static void FixEngine(Engine *n, OldEngine *o, int num) |
|
1090 |
{ |
|
1091 |
int i = 0; |
|
1092 |
||
1093 |
do { |
|
1094 |
n->player_avail = o->player_avail; |
|
1095 |
n->intro_date = o->intro_date; |
|
1096 |
n->age = o->age; |
|
1097 |
if ((i >= 27 && i < 54) || (i >= 57 && i < 84) || (i >= 89 && i < 116)) |
|
1098 |
n->age = 0xffff; |
|
1099 |
n->reliability = o->reliability; |
|
1100 |
n->reliability_spd_dec = o->reliability_spd_dec; |
|
1101 |
n->reliability_start = o->reliability_start; |
|
1102 |
n->reliability_max = o->reliability_max; |
|
1103 |
n->reliability_final = o->reliability_final; |
|
1104 |
n->duration_phase_1 = o->duration_phase_1; |
|
1105 |
n->duration_phase_2 = o->duration_phase_2; |
|
1106 |
n->duration_phase_3 = o->duration_phase_3; |
|
1107 |
n->lifelength = o->lifelength; |
|
1108 |
n->flags = o->flags; |
|
1109 |
n->preview_player = o->preview_player; |
|
1110 |
n->preview_wait = o->preview_wait; |
|
1111 |
n->railtype = o->railtype; |
|
1112 |
} while (n++,o++,i++,--num); |
|
1113 |
} |
|
1114 |
||
410 | 1115 |
static void FixGameDifficulty(GameDifficulty *n, OldGameSettings *o) |
0 | 1116 |
{ |
1117 |
n->max_no_competitors = o->max_no_competitors; |
|
1118 |
n->competitor_start_time = o->competitor_start_time; |
|
1119 |
n->number_towns = o->number_towns; |
|
1120 |
n->number_industries = o->number_industries; |
|
1121 |
n->max_loan = o->max_loan; |
|
1122 |
n->initial_interest = o->initial_interest; |
|
1123 |
n->vehicle_costs = o->vehicle_costs; |
|
1124 |
n->competitor_speed = o->competitor_speed; |
|
1125 |
n->competitor_intelligence = o->competitor_intelligence; |
|
1126 |
n->vehicle_breakdowns = o->vehicle_breakdowns; |
|
1127 |
n->subsidy_multiplier = o->subsidy_multiplier; |
|
1128 |
n->construction_cost = o->construction_cost; |
|
1129 |
n->terrain_type = o->terrain_type; |
|
1130 |
n->quantity_sea_lakes = o->quantity_sea_lakes; |
|
1131 |
n->economy = o->economy; |
|
1132 |
n->line_reverse_mode = o->line_reverse_mode; |
|
1133 |
n->disasters = o->disasters; |
|
1134 |
} |
|
1135 |
||
436
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1136 |
#ifdef TTD_BIG_ENDIAN |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1137 |
/* This function fixes the endiannes issues on Big Endian machines. |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1138 |
* Obviously only uint16 (WORD) and uint32 (LONG WORD) 's are fixed |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1139 |
* since these are different on Big Endian machines. A single byte has |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1140 |
* the same ordening */ |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1141 |
static void FixEndianness(OldMain *m) |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1142 |
{ |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1143 |
int i; |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1144 |
m->date = BSWAP16(m->date); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1145 |
m->date_fract = BSWAP16(m->date_fract); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1146 |
m->seed_1 = BSWAP32(m->seed_1); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1147 |
m->seed_2 = BSWAP32(m->seed_2); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1148 |
|
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1149 |
/* ----------- TOWNS ----------- */ |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1150 |
for (i = 0; i < 70; i++) { // OldTown town_list[70]; |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1151 |
int j; |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1152 |
m->town_list[i].xy = BSWAP16(m->town_list[i].xy); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1153 |
m->town_list[i].population = BSWAP16(m->town_list[i].population); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1154 |
m->town_list[i].townnametype = BSWAP16(m->town_list[i].townnametype); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1155 |
m->town_list[i].townnameparts = BSWAP32(m->town_list[i].townnameparts); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1156 |
m->town_list[i].sign_left = BSWAP16(m->town_list[i].sign_left); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1157 |
m->town_list[i].sign_top = BSWAP16(m->town_list[i].sign_top); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1158 |
m->town_list[i].flags12 = BSWAP16(m->town_list[i].flags12); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1159 |
for (j = 0; j < 5; j++) // uint16 radius[5]; |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1160 |
m->town_list[i].radius[j] = BSWAP16(m->town_list[i].radius[j]); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1161 |
for (j = 0; j < 8; j++) // uint16 ratings[8]; |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1162 |
m->town_list[i].ratings[j] = BSWAP16(m->town_list[i].ratings[j]); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1163 |
m->town_list[i].have_ratings = BSWAP32(m->town_list[i].have_ratings); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1164 |
m->town_list[i].statues = BSWAP32(m->town_list[i].statues); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1165 |
m->town_list[i].num_houses = BSWAP16(m->town_list[i].num_houses); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1166 |
m->town_list[i].new_max_pass = BSWAP16(m->town_list[i].new_max_pass); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1167 |
m->town_list[i].new_max_mail = BSWAP16(m->town_list[i].new_max_mail); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1168 |
m->town_list[i].new_act_pass = BSWAP16(m->town_list[i].new_act_pass); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1169 |
m->town_list[i].new_act_mail = BSWAP16(m->town_list[i].new_act_mail); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1170 |
m->town_list[i].max_pass = BSWAP16(m->town_list[i].max_pass); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1171 |
m->town_list[i].max_mail = BSWAP16(m->town_list[i].max_mail); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1172 |
m->town_list[i].act_pass = BSWAP16(m->town_list[i].act_pass); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1173 |
m->town_list[i].act_mail = BSWAP16(m->town_list[i].act_mail); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1174 |
m->town_list[i].new_act_food = BSWAP16(m->town_list[i].new_act_food); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1175 |
m->town_list[i].new_act_water = BSWAP16(m->town_list[i].new_act_water); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1176 |
m->town_list[i].act_food = BSWAP16(m->town_list[i].act_food); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1177 |
m->town_list[i].act_water = BSWAP16(m->town_list[i].act_water); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1178 |
m->town_list[i].unk56 = BSWAP32(m->town_list[i].unk56); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1179 |
m->town_list[i].unk5A = BSWAP32(m->town_list[i].unk5A); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1180 |
} |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1181 |
|
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1182 |
/* ----------- ORDER LIST ----------- */ |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1183 |
for (i = 0; i < 5000; i++) // uint16 order_list[5000]; |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1184 |
m->order_list[i] = BSWAP16(m->order_list[i]); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1185 |
|
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1186 |
/* ----------- ANIMATED TILE LIST ----------- */ |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1187 |
for (i = 0; i < 256; i++) // uint16 animated_tile_list[256]; |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1188 |
m->animated_tile_list[i] = BSWAP16(m->animated_tile_list[i]); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1189 |
|
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1190 |
m->ptr_to_next_order = BSWAP32(m->ptr_to_next_order); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1191 |
|
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1192 |
/* ----------- DEPOTS ----------- */ |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1193 |
for (i = 0; i < 255; i++) { // OldDepot depots[255]; |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1194 |
m->depots[i].xy = BSWAP16(m->depots[i].xy); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1195 |
m->depots[i].town = BSWAP32(m->depots[i].town); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1196 |
} |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1197 |
|
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1198 |
m->cur_town_ptr = BSWAP32(m->cur_town_ptr); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1199 |
m->timer_counter = BSWAP16(m->timer_counter); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1200 |
m->land_code = BSWAP16(m->land_code); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1201 |
m->age_cargo_skip_counter = BSWAP16(m->age_cargo_skip_counter); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1202 |
m->tick_counter = BSWAP16(m->tick_counter); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1203 |
m->cur_tileloop_tile = BSWAP16(m->cur_tileloop_tile); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1204 |
|
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1205 |
/* ----------- PRICES ----------- */ |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1206 |
for (i = 0; i < 49; i++) { // OldPrice prices[49]; |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1207 |
m->prices[i].price = BSWAP32(m->prices[i].price); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1208 |
m->prices[i].frac = BSWAP16(m->prices[i].frac); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1209 |
} |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1210 |
|
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1211 |
/* ----------- CARGO PAYMENT RATES ----------- */ |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1212 |
for (i = 0; i < 12; i++) { // OldPaymentRate cargo_payment_rates[12]; |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1213 |
m->cargo_payment_rates[i].price = BSWAP32(m->cargo_payment_rates[i].price); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1214 |
m->cargo_payment_rates[i].frac = BSWAP16(m->cargo_payment_rates[i].frac); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1215 |
m->cargo_payment_rates[i].unused = BSWAP16(m->cargo_payment_rates[i].unused); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1216 |
} |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1217 |
|
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1218 |
/* ----------- MAP3 ----------- */ |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1219 |
for (i = 0; i < (256*256); i++) // uint16 map3[256*256]; |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1220 |
m->map3[i] = BSWAP16(m->map3[i]); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1221 |
|
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1222 |
/* ----------- STATIONS ----------- */ |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1223 |
for (i = 0; i < 250; i++) { // OldStation stations[250]; |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1224 |
int j; |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1225 |
m->stations[i].xy = BSWAP16(m->stations[i].xy); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1226 |
m->stations[i].town = BSWAP32(m->stations[i].town); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1227 |
m->stations[i].bus_tile = BSWAP16(m->stations[i].bus_tile); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1228 |
m->stations[i].lorry_tile = BSWAP16(m->stations[i].lorry_tile); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1229 |
m->stations[i].train_tile = BSWAP16(m->stations[i].train_tile); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1230 |
m->stations[i].airport_tile = BSWAP16(m->stations[i].airport_tile); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1231 |
m->stations[i].dock_tile = BSWAP16(m->stations[i].dock_tile); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1232 |
m->stations[i].string_id = BSWAP16(m->stations[i].string_id); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1233 |
m->stations[i].sign_left = BSWAP16(m->stations[i].sign_left); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1234 |
m->stations[i].sign_top = BSWAP16(m->stations[i].sign_top); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1235 |
m->stations[i].had_vehicle_of_type = BSWAP16(m->stations[i].had_vehicle_of_type); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1236 |
for (j = 0; j < 12; j++) // OldGoodsEntry goods[12]; |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1237 |
m->stations[i].goods[j].waiting_acceptance = BSWAP16(m->stations[i].goods[j].waiting_acceptance); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1238 |
m->stations[i].airport_flags = BSWAP16(m->stations[i].airport_flags); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1239 |
m->stations[i].last_vehicle = BSWAP16(m->stations[i].last_vehicle); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1240 |
m->stations[i].unk8A = BSWAP32(m->stations[i].unk8A); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1241 |
} |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1242 |
|
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1243 |
/* ----------- INDUSTRIES ----------- */ |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1244 |
for (i = 0; i < 90; i++) { // OldIndustry industries[90]; |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1245 |
m->industries[i].xy = BSWAP16(m->industries[i].xy); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1246 |
m->industries[i].town = BSWAP32(m->industries[i].town); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1247 |
m->industries[i].cargo_waiting[0] = BSWAP16(m->industries[i].cargo_waiting[0]); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1248 |
m->industries[i].cargo_waiting[1] = BSWAP16(m->industries[i].cargo_waiting[1]); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1249 |
|
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1250 |
m->industries[i].last_mo_production[0] = BSWAP16(m->industries[i].last_mo_production[0]); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1251 |
m->industries[i].last_mo_production[1] = BSWAP16(m->industries[i].last_mo_production[1]); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1252 |
|
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1253 |
m->industries[i].last_mo_transported[0] = BSWAP16(m->industries[i].last_mo_transported[0]); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1254 |
m->industries[i].last_mo_transported[1] = BSWAP16(m->industries[i].last_mo_transported[1]); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1255 |
|
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1256 |
m->industries[i].total_production[0] = BSWAP16(m->industries[i].total_production[0]); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1257 |
m->industries[i].total_production[1] = BSWAP16(m->industries[i].total_production[1]); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1258 |
|
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1259 |
m->industries[i].total_transported[0] = BSWAP16(m->industries[i].total_transported[0]); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1260 |
m->industries[i].total_transported[1] = BSWAP16(m->industries[i].total_transported[1]); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1261 |
m->industries[i].counter = BSWAP16(m->industries[i].counter); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1262 |
m->industries[i].unk2E = BSWAP32(m->industries[i].unk2E); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1263 |
m->industries[i].unk32 = BSWAP32(m->industries[i].unk32); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1264 |
} |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1265 |
|
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1266 |
/* ----------- PLAYERS ----------- */ |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1267 |
for (i = 0; i < 8; i++) { // OldPlayer players[8]; |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1268 |
int j, k; |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1269 |
m->players[i].name_1 = BSWAP16(m->players[i].name_1); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1270 |
m->players[i].name_2 = BSWAP32(m->players[i].name_2); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1271 |
m->players[i].face = BSWAP32(m->players[i].face); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1272 |
m->players[i].pres_name_1 = BSWAP16(m->players[i].pres_name_1); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1273 |
m->players[i].pres_name_2 = BSWAP32(m->players[i].pres_name_2); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1274 |
m->players[i].money = BSWAP32(m->players[i].money); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1275 |
m->players[i].loan = BSWAP32(m->players[i].loan); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1276 |
m->players[i].bankrupt_value = BSWAP32(m->players[i].bankrupt_value); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1277 |
m->players[i].bankrupt_timeout = BSWAP16(m->players[i].bankrupt_timeout); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1278 |
m->players[i].cargo_types = BSWAP32(m->players[i].cargo_types); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1279 |
|
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1280 |
for (j = 0; j < 3; j++) { // OldPlayerExpenses expenses[3]; |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1281 |
for (k = 0; k < 13; k++) |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1282 |
m->players[i].expenses[j].cost[k] = BSWAP32(m->players[i].expenses[j].cost[k]); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1283 |
} |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1284 |
|
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1285 |
for (j = 0; j < (24 + 1); j++) { // OldPlayerEconomy economy[24 + 1]; |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1286 |
m->players[i].economy->income = BSWAP32(m->players[i].economy->income); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1287 |
m->players[i].economy->expenses = BSWAP32(m->players[i].economy->expenses); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1288 |
m->players[i].economy->delivered_cargo = BSWAP32(m->players[i].economy->delivered_cargo); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1289 |
m->players[i].economy->performance_history = BSWAP32(m->players[i].economy->performance_history); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1290 |
m->players[i].economy->company_value = BSWAP32(m->players[i].economy->company_value); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1291 |
} |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1292 |
|
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1293 |
m->players[i].inaugurated_date = BSWAP16(m->players[i].inaugurated_date); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1294 |
m->players[i].last_build_coordinate = BSWAP16(m->players[i].last_build_coordinate); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1295 |
m->players[i].ai_state_counter = BSWAP16(m->players[i].ai_state_counter); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1296 |
m->players[i].ai_timeout_counter = BSWAP16(m->players[i].ai_timeout_counter); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1297 |
|
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1298 |
// OldAiBuildRec ai_src, ai_dst, ai_mid1, ai_mid2; |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1299 |
m->players[i].ai_src.spec_tile = BSWAP16(m->players[i].ai_src.spec_tile); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1300 |
m->players[i].ai_src.use_tile = BSWAP16(m->players[i].ai_src.use_tile); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1301 |
m->players[i].ai_dst.spec_tile = BSWAP16(m->players[i].ai_dst.spec_tile); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1302 |
m->players[i].ai_dst.use_tile = BSWAP16(m->players[i].ai_dst.use_tile); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1303 |
m->players[i].ai_mid1.spec_tile = BSWAP16(m->players[i].ai_mid1.spec_tile); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1304 |
m->players[i].ai_mid1.use_tile = BSWAP16(m->players[i].ai_mid1.use_tile); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1305 |
m->players[i].ai_mid2.spec_tile = BSWAP16(m->players[i].ai_mid2.spec_tile); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1306 |
m->players[i].ai_mid2.use_tile = BSWAP16(m->players[i].ai_mid2.use_tile); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1307 |
|
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1308 |
m->players[i].ai_loco_id = BSWAP16(m->players[i].ai_loco_id); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1309 |
|
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1310 |
for (j = 0; j < 9; j++) |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1311 |
m->players[i].ai_wagonlist[j] = BSWAP16(m->players[i].ai_wagonlist[j]); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1312 |
m->players[i].ai_start_tile_a = BSWAP16(m->players[i].ai_start_tile_a); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1313 |
m->players[i].ai_start_tile_b = BSWAP16(m->players[i].ai_start_tile_b); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1314 |
m->players[i].ai_cur_tile_a = BSWAP16(m->players[i].ai_cur_tile_a); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1315 |
m->players[i].ai_cur_tile_b = BSWAP16(m->players[i].ai_cur_tile_b); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1316 |
for (j = 0; j < 16; j++) // OldAiBannedTile banned_tiles[16]; |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1317 |
m->players[i].banned_tiles[j].tile= BSWAP16(m->players[i].banned_tiles[j].tile); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1318 |
m->players[i].location_of_house = BSWAP16(m->players[i].location_of_house); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1319 |
m->players[i].unk3AA = BSWAP32(m->players[i].unk3AA); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1320 |
m->players[i].unk3AE = BSWAP32(m->players[i].unk3AE); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1321 |
} |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1322 |
|
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1323 |
/* ----------- VEHICLES ----------- */ |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1324 |
for (i = 0; i < 850; i++) { // OldVehicle vehicles[850]; |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1325 |
m->vehicles[i].next_hash = BSWAP16(m->vehicles[i].next_hash); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1326 |
m->vehicles[i].index = BSWAP16(m->vehicles[i].index); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1327 |
m->vehicles[i].schedule_ptr = BSWAP32(m->vehicles[i].schedule_ptr); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1328 |
m->vehicles[i].dest_tile = BSWAP16(m->vehicles[i].dest_tile); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1329 |
m->vehicles[i].load_unload_time_rem = BSWAP16(m->vehicles[i].load_unload_time_rem); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1330 |
m->vehicles[i].date_of_last_service = BSWAP16(m->vehicles[i].date_of_last_service); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1331 |
m->vehicles[i].service_interval = BSWAP16(m->vehicles[i].service_interval); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1332 |
m->vehicles[i].max_speed = BSWAP16(m->vehicles[i].max_speed); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1333 |
m->vehicles[i].x_pos = BSWAP16(m->vehicles[i].x_pos); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1334 |
m->vehicles[i].y_pos = BSWAP16(m->vehicles[i].y_pos); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1335 |
m->vehicles[i].tile = BSWAP16(m->vehicles[i].tile); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1336 |
m->vehicles[i].cur_image = BSWAP16(m->vehicles[i].cur_image); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1337 |
m->vehicles[i].left_coord = BSWAP16(m->vehicles[i].left_coord); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1338 |
m->vehicles[i].right_coord = BSWAP16(m->vehicles[i].right_coord); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1339 |
m->vehicles[i].top_coord = BSWAP16(m->vehicles[i].top_coord); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1340 |
m->vehicles[i].bottom_coord = BSWAP16(m->vehicles[i].bottom_coord); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1341 |
m->vehicles[i].vehstatus = BSWAP16(m->vehicles[i].vehstatus); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1342 |
m->vehicles[i].cur_speed = BSWAP16(m->vehicles[i].cur_speed); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1343 |
m->vehicles[i].capacity = BSWAP16(m->vehicles[i].capacity); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1344 |
m->vehicles[i].number_of_pieces = BSWAP16(m->vehicles[i].number_of_pieces); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1345 |
m->vehicles[i].age_in_days = BSWAP16(m->vehicles[i].age_in_days); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1346 |
m->vehicles[i].max_age_in_days = BSWAP16(m->vehicles[i].max_age_in_days); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1347 |
m->vehicles[i].engine_type = BSWAP16(m->vehicles[i].engine_type); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1348 |
m->vehicles[i].reliability = BSWAP16(m->vehicles[i].reliability); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1349 |
m->vehicles[i].reliability_spd_dec = BSWAP16(m->vehicles[i].reliability_spd_dec); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1350 |
m->vehicles[i].profit_this_year = BSWAP32(m->vehicles[i].profit_this_year); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1351 |
m->vehicles[i].profit_last_year = BSWAP32(m->vehicles[i].profit_last_year); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1352 |
m->vehicles[i].next_in_chain = BSWAP16(m->vehicles[i].next_in_chain); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1353 |
m->vehicles[i].value = BSWAP32(m->vehicles[i].value); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1354 |
m->vehicles[i].string_id = BSWAP16(m->vehicles[i].string_id); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1355 |
|
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1356 |
// OldVehicleUnion u; |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1357 |
switch (m->vehicles[i].type) { |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1358 |
case VEH_Train: |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1359 |
m->vehicles[i].u.rail.crash_anim_pos = BSWAP16(m->vehicles[i].u.rail.crash_anim_pos); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1360 |
break; |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1361 |
case VEH_Aircraft: |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1362 |
m->vehicles[i].u.air.crashed_counter = BSWAP16(m->vehicles[i].u.air.crashed_counter); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1363 |
break; |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1364 |
case VEH_Road: |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1365 |
m->vehicles[i].u.road.unk2 = BSWAP16(m->vehicles[i].u.road.unk2); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1366 |
m->vehicles[i].u.road.crashed_ctr = BSWAP16(m->vehicles[i].u.road.crashed_ctr); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1367 |
break; |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1368 |
case VEH_Special: |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1369 |
m->vehicles[i].u.special.unk0 = BSWAP16(m->vehicles[i].u.special.unk0); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1370 |
break; |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1371 |
case VEH_Disaster: |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1372 |
m->vehicles[i].u.disaster.image_override = BSWAP16(m->vehicles[i].u.disaster.image_override); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1373 |
m->vehicles[i].u.disaster.unk2 = BSWAP16(m->vehicles[i].u.disaster.unk2); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1374 |
break; |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1375 |
} |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1376 |
} |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1377 |
|
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1378 |
/* ----------- SIGNS ----------- */ |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1379 |
for (i = 0; i < 40; i++) { // OldSign signs[40]; |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1380 |
m->signs[i].text = BSWAP16(m->signs[i].text); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1381 |
m->signs[i].x = BSWAP16(m->signs[i].x); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1382 |
m->signs[i].y = BSWAP16(m->signs[i].y); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1383 |
m->signs[i].z = BSWAP16(m->signs[i].z); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1384 |
m->signs[i].sign_left = BSWAP16(m->signs[i].sign_left); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1385 |
m->signs[i].sign_top = BSWAP16(m->signs[i].sign_top); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1386 |
} |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1387 |
|
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1388 |
/* ----------- ENGINES ----------- */ |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1389 |
for (i = 0; i < 256; i++) { // OldEngine engines[256]; |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1390 |
m->engines[i].player_avail = BSWAP16(m->engines[i].player_avail); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1391 |
m->engines[i].intro_date = BSWAP16(m->engines[i].intro_date); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1392 |
m->engines[i].age = BSWAP16(m->engines[i].age); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1393 |
m->engines[i].reliability = BSWAP16(m->engines[i].reliability); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1394 |
m->engines[i].reliability_spd_dec = BSWAP16(m->engines[i].reliability_spd_dec); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1395 |
m->engines[i].reliability_start = BSWAP16(m->engines[i].reliability_start); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1396 |
m->engines[i].reliability_max = BSWAP16(m->engines[i].reliability_max); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1397 |
m->engines[i].reliability_final = BSWAP16(m->engines[i].reliability_final); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1398 |
m->engines[i].duration_phase_1 = BSWAP16(m->engines[i].duration_phase_1); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1399 |
m->engines[i].duration_phase_2 = BSWAP16(m->engines[i].duration_phase_2); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1400 |
m->engines[i].duration_phase_3 = BSWAP16(m->engines[i].duration_phase_3); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1401 |
} |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1402 |
|
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1403 |
m->vehicle_id_ctr_day = BSWAP16(m->vehicle_id_ctr_day); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1404 |
|
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1405 |
m->next_competitor_start = BSWAP16(m->next_competitor_start); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1406 |
m->saved_main_scrollpos_x = BSWAP16(m->saved_main_scrollpos_x); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1407 |
m->saved_main_scrollpos_y = BSWAP16(m->saved_main_scrollpos_y); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1408 |
m->saved_main_scrollpos_zoom = BSWAP16(m->saved_main_scrollpos_zoom); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1409 |
m->maximum_loan = BSWAP32(m->maximum_loan); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1410 |
m->maximum_loan_unround = BSWAP32(m->maximum_loan_unround); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1411 |
m->economy_fluct = BSWAP16(m->economy_fluct); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1412 |
m->disaster_delay = BSWAP16(m->disaster_delay); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1413 |
|
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1414 |
for (i = 0; i < 256; i++) // uint16 engine_name_strings[256]; |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1415 |
m->engine_name_strings[i] = BSWAP16(m->engine_name_strings[i]); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1416 |
|
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1417 |
/* ----------- GAME SETTINGS ----------- */ |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1418 |
m->game_diff.max_no_competitors = BSWAP16(m->game_diff.max_no_competitors); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1419 |
m->game_diff.competitor_start_time = BSWAP16(m->game_diff.competitor_start_time); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1420 |
m->game_diff.number_towns = BSWAP16(m->game_diff.number_towns); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1421 |
m->game_diff.number_industries = BSWAP16(m->game_diff.number_industries); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1422 |
m->game_diff.max_loan = BSWAP16(m->game_diff.max_loan); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1423 |
m->game_diff.initial_interest = BSWAP16(m->game_diff.initial_interest); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1424 |
m->game_diff.vehicle_costs = BSWAP16(m->game_diff.vehicle_costs); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1425 |
m->game_diff.competitor_speed = BSWAP16(m->game_diff.competitor_speed); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1426 |
m->game_diff.competitor_intelligence= BSWAP16(m->game_diff.competitor_intelligence); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1427 |
m->game_diff.vehicle_breakdowns = BSWAP16(m->game_diff.vehicle_breakdowns); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1428 |
m->game_diff.subsidy_multiplier = BSWAP16(m->game_diff.subsidy_multiplier); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1429 |
m->game_diff.construction_cost = BSWAP16(m->game_diff.construction_cost); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1430 |
m->game_diff.terrain_type = BSWAP16(m->game_diff.terrain_type); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1431 |
m->game_diff.quantity_sea_lakes = BSWAP16(m->game_diff.quantity_sea_lakes); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1432 |
m->game_diff.economy = BSWAP16(m->game_diff.economy); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1433 |
m->game_diff.line_reverse_mode = BSWAP16(m->game_diff.line_reverse_mode); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1434 |
m->game_diff.disasters = BSWAP16(m->game_diff.disasters); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1435 |
} |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1436 |
#endif |
0 | 1437 |
|
1438 |
// loader for old style savegames |
|
1439 |
bool LoadOldSaveGame(const char *file) |
|
1440 |
{ |
|
1441 |
LoadSavegameState lss; |
|
1442 |
OldMain *m; |
|
695
561b806c0477
(svn r1144) Don't rely on sizeof() to determine the map size, use MapSize() instead
tron
parents:
679
diff
changeset
|
1443 |
uint map_size; |
959
b031d88c76f3
(svn r1451) Fix some of the signed/unsigned comparison warnings
tron
parents:
923
diff
changeset
|
1444 |
uint i; |
0 | 1445 |
|
1446 |
_cur_state = &lss; |
|
1447 |
memset(&lss, 0, sizeof(lss)); |
|
1448 |
||
1449 |
lss.fin = fopen(file, "rb"); |
|
1450 |
if (lss.fin == NULL) return false; |
|
1451 |
||
4
cad62d5f9708
(svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents:
0
diff
changeset
|
1452 |
/* B - byte 8bit (1) |
cad62d5f9708
(svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents:
0
diff
changeset
|
1453 |
* W - word 16bit (2 bytes) |
cad62d5f9708
(svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents:
0
diff
changeset
|
1454 |
* L - 'long' word 32bit (4 bytes) |
cad62d5f9708
(svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents:
0
diff
changeset
|
1455 |
*/ |
cad62d5f9708
(svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents:
0
diff
changeset
|
1456 |
fseek(lss.fin, 49, SEEK_SET); // 47B TITLE, W Checksum - Total 49 |
0 | 1457 |
|
4
cad62d5f9708
(svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents:
0
diff
changeset
|
1458 |
/* Load the file into memory |
cad62d5f9708
(svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents:
0
diff
changeset
|
1459 |
* Game Data 0x77179 + L4 (256x256) + L5 (256x256) |
cad62d5f9708
(svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents:
0
diff
changeset
|
1460 |
*/ |
0 | 1461 |
m = (OldMain *)malloc(sizeof(OldMain)); |
1462 |
LoadSavegameBytes(m, sizeof(OldMain)); |
|
436
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1463 |
#ifdef TTD_BIG_ENDIAN |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1464 |
FixEndianness(m); |
6d8fb39a154f
(svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
darkvater
parents:
410
diff
changeset
|
1465 |
#endif |
0 | 1466 |
|
1467 |
// copy sections of it to our datastructures. |
|
695
561b806c0477
(svn r1144) Don't rely on sizeof() to determine the map size, use MapSize() instead
tron
parents:
679
diff
changeset
|
1468 |
map_size = MapSize(); |
561b806c0477
(svn r1144) Don't rely on sizeof() to determine the map size, use MapSize() instead
tron
parents:
679
diff
changeset
|
1469 |
memcpy(_map_owner, m->map_owner, map_size); |
561b806c0477
(svn r1144) Don't rely on sizeof() to determine the map size, use MapSize() instead
tron
parents:
679
diff
changeset
|
1470 |
memcpy(_map_type_and_height, m->map_type_and_height, map_size); |
561b806c0477
(svn r1144) Don't rely on sizeof() to determine the map size, use MapSize() instead
tron
parents:
679
diff
changeset
|
1471 |
memcpy(_map5, m->map5, map_size); |
561b806c0477
(svn r1144) Don't rely on sizeof() to determine the map size, use MapSize() instead
tron
parents:
679
diff
changeset
|
1472 |
for (i = 0; i != map_size; i++) { |
817
4f9377b7fd2b
(svn r1288) -Codechange: changed _map2 to an uint16. It is still saved and loaded as
truelight
parents:
696
diff
changeset
|
1473 |
_map2[i] = m->map2[i]; |
0 | 1474 |
_map3_lo[i] = m->map3[i] & 0xFF; |
1475 |
_map3_hi[i] = m->map3[i] >> 8; |
|
1476 |
} |
|
695
561b806c0477
(svn r1144) Don't rely on sizeof() to determine the map size, use MapSize() instead
tron
parents:
679
diff
changeset
|
1477 |
memcpy(_map_extra_bits, m->map_extra, map_size / 4); |
0 | 1478 |
|
1479 |
// go through the tables and see if we can find any ttdpatch presignals. Then convert those to our format. |
|
695
561b806c0477
(svn r1144) Don't rely on sizeof() to determine the map size, use MapSize() instead
tron
parents:
679
diff
changeset
|
1480 |
for (i = 0; i != map_size; i++) { |
1035
0a170deb6e33
(svn r1536) Move GET_TILEHEIGHT, GET_TILETYPE and IS_TILETYPE to map.h, turn them into inline functions and add some asserts
tron
parents:
1024
diff
changeset
|
1481 |
if (IsTileType(i, MP_RAILWAY) && (_map5[i] & 0xC0) == 0x40) { |
0 | 1482 |
// this byte is always zero in real ttd. |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
123
diff
changeset
|
1483 |
if (_map3_hi[i]) { |
0 | 1484 |
// convert ttdpatch presignal format to openttd presignal format. |
1485 |
_map3_hi[i] = (_map3_hi[i] >> 1) & 7; |
|
1486 |
} |
|
1487 |
} |
|
1488 |
} |
|
1489 |
||
919
b0d6c7642f99
(svn r1407) -Codechange: changed a lot around _stations, _vehicles, _towns and _industries
truelight
parents:
875
diff
changeset
|
1490 |
FixTown(m->town_list, lengthof(m->town_list), m->town_name_type); |
b0d6c7642f99
(svn r1407) -Codechange: changed a lot around _stations, _vehicles, _towns and _industries
truelight
parents:
875
diff
changeset
|
1491 |
FixIndustry(m->industries, lengthof(m->industries)); |
b0d6c7642f99
(svn r1407) -Codechange: changed a lot around _stations, _vehicles, _towns and _industries
truelight
parents:
875
diff
changeset
|
1492 |
FixStation(m->stations, lengthof(m->stations)); |
0 | 1493 |
|
1494 |
FixDepot(_depots, m->depots, lengthof(m->depots)); |
|
1024
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
988
diff
changeset
|
1495 |
FixOrder(m->order_list, lengthof(m->order_list)); |
919
b0d6c7642f99
(svn r1407) -Codechange: changed a lot around _stations, _vehicles, _towns and _industries
truelight
parents:
875
diff
changeset
|
1496 |
FixVehicle(m->vehicles, lengthof(m->vehicles)); |
0 | 1497 |
FixSubsidy(_subsidies, m->subsidies, lengthof(m->subsidies)); |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
123
diff
changeset
|
1498 |
|
4
cad62d5f9708
(svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents:
0
diff
changeset
|
1499 |
FixPlayer(_players, m->players, lengthof(m->players), m->town_name_type); |
0 | 1500 |
FixName(m->names, lengthof(m->names)); |
988
2482369a61ff
(svn r1486) -Codechange: moved all 'signs' stuff to signs.c/h and prepared it for
truelight
parents:
974
diff
changeset
|
1501 |
FixSign(m->signs, lengthof(m->signs)); |
0 | 1502 |
FixEngine(_engines, m->engines, lengthof(m->engines)); |
1503 |
||
1504 |
_opt.diff_level = m->difficulty_level; |
|
1505 |
_opt.currency = m->currency; |
|
1506 |
_opt.kilometers = m->use_kilometers; |
|
1507 |
_opt.town_name = m->town_name_type; |
|
392
3657d06c6564
(svn r584) -newgrf: Increase chance to get a TTDPatch savegame using custom GRF files loaded (pasky)
darkvater
parents:
206
diff
changeset
|
1508 |
_opt.landscape = m->landscape_type & 0xf; |
0 | 1509 |
_opt.snow_line = m->snow_line_height; |
1510 |
_opt.autosave = 0; |
|
1511 |
_opt.road_side = m->road_side; |
|
1512 |
FixGameDifficulty(&_opt.diff, &m->game_diff); |
|
1513 |
||
1514 |
// Load globals |
|
1515 |
_date = m->date; |
|
1516 |
_date_fract = m->date_fract; |
|
1517 |
_tick_counter = m->tick_counter; |
|
1518 |
_vehicle_id_ctr_day = m->vehicle_id_ctr_day; |
|
1519 |
_age_cargo_skip_counter = m->age_cargo_skip_counter; |
|
1520 |
_avail_aircraft = m->avail_aircraft; |
|
1521 |
_cur_tileloop_tile = m->cur_tileloop_tile; |
|
1522 |
_disaster_delay = m->disaster_delay; |
|
1523 |
_station_tick_ctr = m->station_tick_ctr; |
|
206 | 1524 |
_random_seeds[0][0] = m->seed_1; |
1525 |
_random_seeds[0][1] = m->seed_2; |
|
0 | 1526 |
_cur_town_ctr = REMAP_TOWN_IDX(m->cur_town_ptr); |
1527 |
_cur_player_tick_index = m->cur_player_tick_index; |
|
1528 |
_next_competitor_start = m->next_competitor_start; |
|
1529 |
_trees_tick_ctr = m->trees_tick_ctr; |
|
1530 |
_saved_scrollpos_x = m->saved_main_scrollpos_x; |
|
1531 |
_saved_scrollpos_y = m->saved_main_scrollpos_y; |
|
1532 |
_saved_scrollpos_zoom = m->saved_main_scrollpos_zoom; |
|
1533 |
||
1534 |
// Load economy stuff |
|
1535 |
_economy.max_loan = m->maximum_loan; |
|
1536 |
_economy.max_loan_unround = m->maximum_loan_unround; |
|
1537 |
_economy.fluct = m->economy_fluct; |
|
1538 |
_economy.interest_rate = m->interest_rate; |
|
1539 |
_economy.infl_amount = m->inflation_amount; |
|
1540 |
_economy.infl_amount_pr = m->inflation_amount_payment_rates; |
|
1541 |
||
695
561b806c0477
(svn r1144) Don't rely on sizeof() to determine the map size, use MapSize() instead
tron
parents:
679
diff
changeset
|
1542 |
for (i = 0; i != lengthof(m->animated_tile_list); ++i) |
561b806c0477
(svn r1144) Don't rely on sizeof() to determine the map size, use MapSize() instead
tron
parents:
679
diff
changeset
|
1543 |
_animated_tile_list[i] = m->animated_tile_list[i]; |
0 | 1544 |
memcpy(_engine_name_strings, m->engine_name_strings, sizeof(m->engine_name_strings)); |
1545 |
||
1546 |
for(i=0; i!=lengthof(m->prices); i++) { |
|
1547 |
((uint32*)&_price)[i] = m->prices[i].price; |
|
1548 |
_price_frac[i] = m->prices[i].frac; |
|
1549 |
} |
|
1550 |
||
1551 |
for(i=0; i!=lengthof(m->cargo_payment_rates); i++) { |
|
1552 |
_cargo_payment_rates[i] = -(int32)m->cargo_payment_rates[i].price; |
|
1553 |
_cargo_payment_rates_frac[i] = m->cargo_payment_rates[i].frac; |
|
1554 |
} |
|
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
123
diff
changeset
|
1555 |
|
0 | 1556 |
free(m); |
1557 |
fclose(lss.fin); |
|
1558 |
return true; |
|
1559 |
} |
|
1560 |
||
1561 |
void GetOldSaveGameName(char *title, const char *file) |
|
1562 |
{ |
|
1563 |
FILE *f; |
|
1564 |
||
1565 |
f = fopen(file, "rb"); |
|
1566 |
title[0] = 0; |
|
1567 |
title[48] = 0; |
|
1568 |
||
1569 |
if (!f) return; |
|
1570 |
if (fread(title, 1, 48, f) != 48) title[0] = 0; |
|
1571 |
fclose(f); |
|
1572 |
} |
|
1573 |
||
1574 |
void GetOldScenarioGameName(char *title, const char *file) |
|
1575 |
{ |
|
1576 |
GetOldSaveGameName(title, file); |
|
1577 |
} |