mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-08-13 17:49:10 +00:00
Compare commits
1150 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
a82f21f24d | ||
|
46908fb63a | ||
|
8efa99f445 | ||
|
c6251426d9 | ||
|
9026736cc1 | ||
|
b7a2166962 | ||
|
8ea68421b1 | ||
afc5962881 | |||
|
9239381d56 | ||
9dded61af9 | |||
8fbc5c090b | |||
|
00bdd316d7 | ||
|
f34284f1a0 | ||
c77659c995 | |||
|
e6877d0823 | ||
|
beba12f9d6 | ||
|
95fd4ec649 | ||
0fa41c7493 | |||
60cbcf0742 | |||
|
e38a4e1e57 | ||
|
5965f184c2 | ||
|
db20c7f461 | ||
|
e2e8872e82 | ||
|
4750d2836c | ||
|
b1c31f9500 | ||
|
a6879e9180 | ||
|
5eb7d49024 | ||
|
69c0332813 | ||
|
b11942cf44 | ||
|
ef6995e8d4 | ||
|
c0fd2b969b | ||
683778fd7a | |||
63eeadef17 | |||
|
e526b2ccd3 | ||
b61ef7e0d2 | |||
120d76c5c1 | |||
|
316ecb07ee | ||
|
2c21f52e1d | ||
|
0a8e9e9757 | ||
|
6bfec89fcf | ||
|
1f39a31eb7 | ||
|
abc0325ef1 | ||
|
54451a18c6 | ||
|
d3e9e8c2ce | ||
|
0b340fd376 | ||
|
05b3467021 | ||
|
88f2084646 | ||
|
1303aba5ea | ||
124650c554 | |||
|
685af3629e | ||
|
9ae1726eed | ||
|
3f0268b4b3 | ||
|
cf7a1fc8c6 | ||
|
7a9782e6f4 | ||
6a1f217d30 | |||
174b0da90f | |||
|
a2c4f9314d | ||
|
652289972e | ||
|
0a5b3b955c | ||
79d2acff24 | |||
|
e3a082ce7c | ||
213c490e73 | |||
4e17e2bc6e | |||
56a69f1de7 | |||
64726d5213 | |||
712936745a | |||
|
2fb4575f5f | ||
|
5e9d39e8bc | ||
490d6ad51f | |||
38e93182c5 | |||
|
3a97b541af | ||
|
80dd397ce4 | ||
47596d3eda | |||
|
f7f1efc84f | ||
|
383e2d1082 | ||
|
aefe44e67e | ||
|
1de8e1b801 | ||
54c5bac8f7 | |||
|
948de16255 | ||
|
88c5122b39 | ||
|
eb46a89855 | ||
|
39cda89e85 | ||
|
8016b8b3e9 | ||
|
4ac81b3ebb | ||
|
d9b4ada7e9 | ||
|
1a663d9efc | ||
93a6fd42d1 | |||
|
c61acc7fc1 | ||
c91e0058c2 | |||
5a5944867d | |||
5d3ccae6c5 | |||
e0c2ad1b65 | |||
3c047b124e | |||
b62452903a | |||
|
8139b14e9c | ||
|
5e40338543 | ||
|
90a4737bf6 | ||
|
b242a04c7d | ||
|
780593ae60 | ||
cbaf52fbe1 | |||
|
c3bc7d657e | ||
63fe6c6598 | |||
|
7ecfae8f7f | ||
|
1447661d20 | ||
9ad5112628 | |||
|
76f983a8e7 | ||
|
50a0cf1915 | ||
|
03264059e4 | ||
|
adb50cebcc | ||
|
9b99b95955 | ||
7ac17f5ae4 | |||
c2e4a8c9bf | |||
|
93c6398810 | ||
|
6ff02f0615 | ||
|
919d7accd7 | ||
|
fa2bea7394 | ||
|
d24a9dfe98 | ||
|
77ab6f8ec7 | ||
|
0bb395b21d | ||
195fd0dc60 | |||
|
91eee793e1 | ||
87ebfe1227 | |||
|
f240f61fb2 | ||
eeae4512ae | |||
|
13962a8475 | ||
|
7e1e2756d4 | ||
|
4adb91202d | ||
fde5bd0ccf | |||
|
00d28a500d | ||
56a6d7aec8 | |||
69928df3f0 | |||
|
fb1b6fa47a | ||
|
690d1dd6a4 | ||
|
456e67ac1c | ||
|
673f6753e9 | ||
5ab1a73a8a | |||
|
8a6e03c4d2 | ||
6733b71300 | |||
6dfe36b5cd | |||
de9f54ccc1 | |||
|
66d23e3e86 | ||
|
19fa960d83 | ||
|
21f009dc78 | ||
|
21d8636722 | ||
|
ba55f93f41 | ||
|
c4fe46a475 | ||
|
45ce517105 | ||
|
6ca637b8c1 | ||
|
349cbee6e9 | ||
84961034e4 | |||
|
ef7e47a53a | ||
|
aadcf40b9b | ||
|
548ec05a48 | ||
|
ebe84b9d4c | ||
|
1585eb1a3e | ||
|
7c31a32c2b | ||
|
4919c8db13 | ||
5dc377244d | |||
3a4b6b476b | |||
57734fd85d | |||
|
1f182c44c9 | ||
|
045503e728 | ||
c0c8fb25fb | |||
|
830ed6be61 | ||
|
46d97239c4 | ||
|
412e6132b6 | ||
|
6b5ebe2b09 | ||
aa737715dd | |||
|
75d3054ae4 | ||
cac2f6226c | |||
22f33fdd08 | |||
|
13af2b88b4 | ||
|
4d5d21be76 | ||
|
148e5b41d6 | ||
|
2ff10327d7 | ||
|
748d72202a | ||
|
0df95811ce | ||
|
70e1c57f81 | ||
d242875d27 | |||
|
6e21190858 | ||
|
13b7e8774d | ||
|
0151fe998a | ||
|
887e524e06 | ||
|
8c0bfb4637 | ||
|
b7ed49af33 | ||
|
5b74118ae7 | ||
|
de1278290b | ||
|
d03cb80346 | ||
|
37bb2c9308 | ||
|
5e4f76f2f9 | ||
|
62d6cd75ba | ||
bfdad9ad1b | |||
|
db2c0ccae0 | ||
e3b440c9c5 | |||
4764d1c45e | |||
|
9fc430a920 | ||
b1e40b6b56 | |||
64878320cc | |||
0b10678050 | |||
|
8e7fe3973f | ||
33e3f49161 | |||
0749a291c4 | |||
|
bf5898018f | ||
|
de5614a4d8 | ||
|
5f8354f358 | ||
|
c511b0e801 | ||
|
cd757ecbf4 | ||
|
faee0737e0 | ||
|
67c6f945fb | ||
cca952d94b | |||
e21ade375e | |||
0f37a683a2 | |||
9de12521ec | |||
ea4ea62816 | |||
|
bdf0dc67e9 | ||
9dc36057eb | |||
e8f1c446a6 | |||
c9d801a98d | |||
|
011257dc88 | ||
fa53abe864 | |||
|
0bca363401 | ||
|
5a5861f245 | ||
|
8418e27403 | ||
0355f887d9 | |||
9e9d485713 | |||
12b6fe47c7 | |||
21dc725762 | |||
|
1e5a6765d9 | ||
|
029c48cf4a | ||
|
d814dd3434 | ||
|
aa63517c92 | ||
|
19be1f4ace | ||
|
96c5e5e73a | ||
|
bb9b8eb464 | ||
|
8e02b7952b | ||
23960d0f2c | |||
|
ba38a7ca65 | ||
|
530bdf33cc | ||
67633606b0 | |||
e982b9131e | |||
|
8334a57332 | ||
90c7ef96ca | |||
|
2fcd4e61db | ||
|
a1c3781010 | ||
48fb575502 | |||
498ca6e4eb | |||
|
7c6e10dbfc | ||
|
6a56a4ce84 | ||
|
b22fbfbe3d | ||
310fa1af88 | |||
fe37b40385 | |||
|
9f458ecb10 | ||
|
64f1847bec | ||
|
9c6ac309e0 | ||
|
b28a678436 | ||
|
654b635f6f | ||
|
80c7965c65 | ||
b60b193a6d | |||
6e5b90f4f7 | |||
256b94a03d | |||
|
3e0e3cfac1 | ||
|
2084779b5a | ||
|
a5836874ef | ||
|
a18b0eba5b | ||
|
36e299fb6d | ||
|
65782af2f4 | ||
b6de8c0930 | |||
1334cfb3e5 | |||
|
e76fd99c47 | ||
|
9fa827ed78 | ||
|
255fa6e1a8 | ||
|
4158c077cd | ||
|
564077719a | ||
225790892d | |||
|
479f13fc41 | ||
|
c33596fe4a | ||
|
05da5a177c | ||
|
f744dea0ff | ||
|
f0290d5de7 | ||
|
43852baace | ||
|
b934cdf0ab | ||
|
4b256fed36 | ||
|
0240e90169 | ||
|
db924a4681 | ||
|
ed325ada88 | ||
|
7292591967 | ||
|
636fcc2cc0 | ||
c3dbe836b4 | |||
41d47926b1 | |||
|
48b334cf97 | ||
|
9ce92521c1 | ||
|
628af2fabc | ||
|
226dbcb422 | ||
|
9d75600ac0 | ||
|
5ad73e4029 | ||
|
e71f7cf277 | ||
f35b135e17 | |||
4daaec1a94 | |||
81330b8d6e | |||
1c725fce47 | |||
|
60da05cf2a | ||
|
4e9e115760 | ||
|
f37304f9f5 | ||
|
08ffa16d51 | ||
|
07a40df9ab | ||
|
0e0476184e | ||
|
98308fe260 | ||
|
d8ccad91f9 | ||
|
1623cb553b | ||
|
6535abb88b | ||
|
fe8c24e081 | ||
|
2d981a4b2c | ||
|
1106534262 | ||
|
ee84f98f1e | ||
|
5a09337c20 | ||
|
91315a7a39 | ||
6b0a467a50 | |||
7284b593c7 | |||
8b64204418 | |||
7af53d7588 | |||
b98887c4a0 | |||
ebddd596c7 | |||
6a38a3f5df | |||
|
29b6b74ee1 | ||
|
9f0ad7e269 | ||
|
3f28e0cf53 | ||
|
8e5a8d3ec3 | ||
|
2cf9405aa2 | ||
|
34c438d7ad | ||
|
823c5bfa3b | ||
|
ca7ee34502 | ||
89f0017a67 | |||
|
750927372f | ||
|
52a66e4dd3 | ||
|
f4b8a67aed | ||
|
efc44466d6 | ||
|
4fc1b2baae | ||
5ff0c24993 | |||
|
9aecbac2b4 | ||
|
96854b2b8b | ||
|
0f9d1019e6 | ||
|
82e530b517 | ||
|
06cd561cea | ||
|
65746a0275 | ||
|
c80608a83c | ||
|
fa95af2da8 | ||
|
f99f993e99 | ||
c693463c29 | |||
806e7d25dd | |||
59fe4f28c8 | |||
ead9c9eab5 | |||
15320a37b9 | |||
2a8fa5fef9 | |||
|
916e911806 | ||
|
e34a6c58ea | ||
|
a0293d313d | ||
|
ad5a9daed5 | ||
|
e934f09f02 | ||
|
5e51d9ee82 | ||
|
effb7da5b4 | ||
|
c304aa50e9 | ||
|
1db66a285e | ||
|
edb7adf183 | ||
|
19a2f84943 | ||
|
15a7f9da9d | ||
|
13056aedbc | ||
|
96b961c69a | ||
|
c0a655225d | ||
|
7b5e7aa14f | ||
|
92d3358db5 | ||
|
4fbfe34e36 | ||
|
175829b8b5 | ||
|
0e7af55ef7 | ||
|
b8b6954fb5 | ||
|
cb60a5e57f | ||
|
d6c06de5ad | ||
|
12ba56c5a3 | ||
|
0aa69693c6 | ||
|
9e30054de9 | ||
|
16a91130a7 | ||
|
49ab02c084 | ||
|
391bc45c41 | ||
|
4a255e879a | ||
|
d8f6c80696 | ||
|
d447394638 | ||
|
e61904c3e6 | ||
|
e8f9975409 | ||
|
e902a1cc57 | ||
|
c540d72445 | ||
|
8890926b0d | ||
|
65bc7123d1 | ||
|
28ff1be85b | ||
|
3be6ab555c | ||
|
cab39ff47f | ||
|
2ab4b5dd03 | ||
|
2978388153 | ||
|
777cfe5611 | ||
|
863b80e880 | ||
|
68b5b11b7c | ||
|
32ce1ce347 | ||
|
4bf216993a | ||
|
8d7cd6a526 | ||
|
05a93c121c | ||
|
c63f0b3005 | ||
|
cd44e33f4e | ||
|
587c2149b6 | ||
|
3b8db31a49 | ||
|
88894166e8 | ||
|
b93fad7481 | ||
|
d64a0a6696 | ||
|
206694a4f2 | ||
|
59e4913a0f | ||
|
eab3aa16aa | ||
|
868c6f924a | ||
|
af4a21bd82 | ||
|
9e30fbab34 | ||
|
cb1fcc4765 | ||
|
1ee20fac9a | ||
|
810887af30 | ||
|
c618a7c093 | ||
|
c84b9913bd | ||
|
f35a59fd38 | ||
|
16a36dffa0 | ||
|
476643bfa5 | ||
|
86bea59962 | ||
|
1a1204472e | ||
|
68e6b5531a | ||
|
6accbf9afc | ||
|
278a705bbb | ||
|
71cda6ca1d | ||
|
6950ea0ba7 | ||
|
16cc482d57 | ||
|
4ba73dac95 | ||
|
ccd9d77b94 | ||
|
9b560eaa51 | ||
|
e66cec8f86 | ||
|
8859381d30 | ||
|
32b9ee7063 | ||
|
81b2ddd0ab | ||
|
0c619b7c4b | ||
|
1e68b9b3e6 | ||
|
4703cd433d | ||
|
b3b89257f7 | ||
|
5029cd6f28 | ||
|
18ca3e8660 | ||
|
b3dc90af58 | ||
|
264e60529f | ||
|
bb7353c02a | ||
|
1778b2d66e | ||
|
ca5f73b196 | ||
|
b5028efc1f | ||
|
52ed3bcbaa | ||
|
e0c0394e37 | ||
|
f5b1115039 | ||
|
b9273cbe07 | ||
|
f3dbb3f676 | ||
|
350395a6c2 | ||
|
50efaa2372 | ||
|
25ab9c1997 | ||
|
47ff673664 | ||
|
eff09c43cd | ||
|
bddf25c36a | ||
|
42b00c3b39 | ||
|
e00908f5e9 | ||
|
fbfa4eb592 | ||
|
9cf999bca7 | ||
|
8a70101e7f | ||
|
25a060b4ae | ||
|
662dcc3c31 | ||
|
060248a422 | ||
|
fec44b0d09 | ||
|
41fb7cb15e | ||
|
59a1614ba0 | ||
|
eed0da60a2 | ||
|
1a73c39838 | ||
|
ca5b68145a | ||
|
94961732a3 | ||
|
8137d14d33 | ||
|
bb086f9240 | ||
|
560b01f307 | ||
|
4b0b4e0643 | ||
|
6391d49277 | ||
|
703e7f8fc7 | ||
|
df92a056df | ||
|
d839526365 | ||
|
50d930298d | ||
|
a53e4d8fe5 | ||
|
27c4f5517f | ||
|
004f54f4c8 | ||
af043df5a3 | |||
|
5df3a65074 | ||
|
74eb77f0a8 | ||
|
b34a1f372f | ||
|
67f6bcdc9b | ||
|
a53f13cff6 | ||
|
8c0a6bbc4f | ||
|
41a620c1a7 | ||
|
16cf577b61 | ||
|
76f788124b | ||
|
4bd281cef3 | ||
|
9627577596 | ||
|
64dac65e20 | ||
|
b885f62676 | ||
bf8d7df736 | |||
5db883fbe9 | |||
65548c37a8 | |||
|
8090580f77 | ||
|
a4eccd8076 | ||
|
d418d30947 | ||
|
8975318286 | ||
|
0bca1c53c9 | ||
|
6a3d411fa1 | ||
|
38443bab0b | ||
|
8fc1517515 | ||
|
bc1b34d1a2 | ||
|
2f5cb9e4fc | ||
|
6a6ffddc5f | ||
|
2a868b9f3b | ||
|
a3d1950b65 | ||
|
63898f61b0 | ||
|
93469a92f2 | ||
|
3014213186 | ||
|
f70544074c | ||
|
85ef5acf29 | ||
|
ae13f88c12 | ||
|
8bbf06e0d4 | ||
|
5a11c6a036 | ||
|
88b77a7883 | ||
|
2ed0e30a8f | ||
|
f86dc6867e | ||
|
210afa3701 | ||
|
491a884944 | ||
|
4a35409e0f | ||
|
8f278b3405 | ||
|
6cf4d7d3ef | ||
|
4189cb85ba | ||
|
d01c09fb73 | ||
|
31ac11bddb | ||
|
85ebe20a76 | ||
|
6a9df285d0 | ||
|
2aacddd412 | ||
|
5f86e1a390 | ||
|
e1b9187e9b | ||
|
dbfc417e65 | ||
|
6c02c19931 | ||
11ab3c4ea2 | |||
|
7eca4a9b47 | ||
|
336d6cab68 | ||
|
9fc3212679 | ||
|
dc8fff2c4d | ||
|
6298b96571 | ||
|
889175f7ad | ||
|
458bc90678 | ||
|
7fed8fe004 | ||
|
38f29fd5d6 | ||
|
388bca6a42 | ||
|
4fb76db42f | ||
|
11ba094582 | ||
|
1a5a95aa49 | ||
|
21ac11548a | ||
|
10d8b83038 | ||
|
ae467ffc8a | ||
|
4099506093 | ||
|
574f547aca | ||
|
5ab06ef8a3 | ||
|
a1b7812c7e | ||
|
11a846e3d5 | ||
|
276192f714 | ||
|
836d25e738 | ||
|
f5f2125238 | ||
c2a7728084 | |||
|
7ae1e3e1e2 | ||
|
470ed2643e | ||
|
11d1690acb | ||
|
20b0f0f90b | ||
|
71450881fc | ||
|
cd966f3810 | ||
|
eec3f40931 | ||
|
33829dc6ab | ||
|
768a31bfe3 | ||
|
a4278c302b | ||
|
f4394debdc | ||
|
2b662b448c | ||
|
25dbc6542c | ||
|
0bd1022238 | ||
408cee123d | |||
|
e7ce490155 | ||
|
5de2628862 | ||
|
a8080f14a9 | ||
|
458e441a4c | ||
|
e2fa4b71c6 | ||
|
921101ed06 | ||
|
2ae9df7248 | ||
|
f946b3da56 | ||
|
1c2d29e1a3 | ||
eaa32f5ad5 | |||
|
b91e85003e | ||
|
d86416af7a | ||
|
2406500140 | ||
|
3e910a5969 | ||
|
a6300fe70b | ||
|
ce51e54d26 | ||
|
255549250f | ||
|
3fc9c9522d | ||
|
e1a164b531 | ||
|
6df7ced343 | ||
|
17257b9620 | ||
|
306b999cf4 | ||
a07394a63a | |||
4cebebcf68 | |||
42b43c9983 | |||
cad47bbefe | |||
8a7de36463 | |||
|
7bd2fa3516 | ||
|
fb54dd04a1 | ||
|
d738e980d0 | ||
|
7935ac16d1 | ||
|
228f8fba55 | ||
|
663ab7450f | ||
|
fef8b831a9 | ||
|
61515c9abd | ||
|
52655b5849 | ||
|
99a39c842c | ||
|
b902e01e10 | ||
|
9959cd9522 | ||
|
bb5584c835 | ||
|
cfb8092397 | ||
|
3f40cd505d | ||
|
79a551a83c | ||
|
944f785be8 | ||
|
fa87212a76 | ||
|
a6b18f0d92 | ||
|
eb2603a5e7 | ||
|
a806424ec1 | ||
|
683b46a5b5 | ||
|
19f5a6cbb0 | ||
|
430e20f7e4 | ||
|
bb809e35ce | ||
|
e172794947 | ||
|
76cccc64c9 | ||
|
0165fe1283 | ||
|
aef69443e7 | ||
|
85adde7485 | ||
|
8d8b9a026a | ||
cfe6a8ea4f | |||
|
913119487f | ||
|
8e4bce58ea | ||
|
34b63930f5 | ||
|
692c753865 | ||
|
e7cc53ed62 | ||
|
6ff81b908e | ||
|
e0ae67cefa | ||
|
a4df8bc246 | ||
|
4d5396980a | ||
|
8c531f1278 | ||
|
86012e10ea | ||
|
5c5267726f | ||
|
e8de33a61f | ||
3b32075e8a | |||
|
f4f9e18790 | ||
|
9175c349da | ||
4d6a5fbec4 | |||
|
88be2413ce | ||
|
a72117111e | ||
|
6d31478988 | ||
|
00c1603256 | ||
|
ce6761a6de | ||
|
079f774fd7 | ||
|
413ece9b51 | ||
|
7dd6027194 | ||
|
4851feb102 | ||
|
f240274b7e | ||
|
158eed669a | ||
|
bd18951db1 | ||
|
aaf7e98c77 | ||
|
43338b8a45 | ||
|
a5382d8dd8 | ||
|
af4b52aff6 | ||
|
2ec775b964 | ||
|
ae5628e903 | ||
|
f06061aa3b | ||
|
34cc1f8b7c | ||
|
82d4f6c60a | ||
|
62d79900ec | ||
|
6ac079020b | ||
|
192770e6da | ||
|
e0a62a9e55 | ||
|
3701b8685a | ||
|
e47f646cb3 | ||
|
17bd580630 | ||
|
66f67ac5ac | ||
|
dd6b82d6b2 | ||
|
e61435774b | ||
|
4b1a42c703 | ||
|
6c3902ac41 | ||
|
964d310cda | ||
|
f670277ff5 | ||
|
4971678f52 | ||
|
74b7f0a9aa | ||
|
fa587ad3cc | ||
|
27bfb1df8f | ||
|
4bfd277017 | ||
|
afa3e15afe | ||
|
97c0594ced | ||
|
19076c24c1 | ||
|
11c592ef0f | ||
|
f84ad5f7c0 | ||
|
81f25d4736 | ||
|
de961e14fb | ||
|
41b28d7194 | ||
|
080f7b3cba | ||
|
328a4ff00d | ||
|
09d4735679 | ||
|
080d57d97a | ||
|
8c458c153d | ||
|
55a503e6f2 | ||
|
c6eb633d18 | ||
|
043274afd6 | ||
|
5558899621 | ||
|
07d841d0ef | ||
|
d9d669dcf8 | ||
|
7c406f0d9d | ||
|
4fc178aebd | ||
|
db54db00df | ||
|
91464af737 | ||
|
ebe6564e8b | ||
|
59dd7be686 | ||
|
6eac63622e | ||
|
8f3dbd2efc | ||
8c0d5b2ffd | |||
dacd8d87ef | |||
50fb460203 | |||
86829c54c4 | |||
|
d4301cd7b6 | ||
|
6fc26a00fe | ||
|
b1b15c83fe | ||
|
dd567c6105 | ||
|
b36e70cba8 | ||
|
0c43d6903a | ||
|
6886b156d2 | ||
|
ef6adb0030 | ||
|
844da806c7 | ||
|
98c2fa87e6 | ||
|
09f41da863 | ||
|
4882c1d617 | ||
|
6e3bb4dd90 | ||
|
60aa3074e3 | ||
|
62d072b57c | ||
|
1298e3c94a | ||
|
d7ef54268d | ||
|
2e20751c5f | ||
|
1bc6fdef31 | ||
|
0d1cc32b19 | ||
|
ced7d2a4ec | ||
|
b69c0acca2 | ||
|
43be9c80b1 | ||
|
873e3ed27f | ||
|
0fac4a751a | ||
|
470d136358 | ||
|
42392fd7b5 | ||
|
c14f23a03d | ||
|
6f36c52736 | ||
|
c722cb26b8 | ||
|
e856e3cca8 | ||
|
f2a22573d5 | ||
|
6347e5f11e | ||
|
2202544474 | ||
|
a9992e1751 | ||
|
135ad9c6c9 | ||
|
82ae414e8d | ||
|
146e4eddb6 | ||
|
40d7a628ff | ||
|
4fca142bfb | ||
|
4cfccc7e85 | ||
|
539f6f50f7 | ||
|
6cf47d2280 | ||
|
83c2158e7c | ||
|
9499e93a67 | ||
|
f43f4981e3 | ||
|
7726f2d330 | ||
|
28be179d4a | ||
|
24a1b82840 | ||
|
96b1ac9d09 | ||
|
56ffa35511 | ||
|
f3fbf6beb8 | ||
|
016a68815d | ||
|
6d08d054ef | ||
|
6b46133a2a | ||
|
dc649f2738 | ||
|
6dec889306 | ||
|
b56453f93b | ||
|
1dd6930507 | ||
|
74e1fe130c | ||
|
88726f71b6 | ||
|
13d0296e7c | ||
|
2aa806842f | ||
|
09abccd316 | ||
|
80dffae130 | ||
|
61c68f906d | ||
|
1afb3a91f8 | ||
|
a04076ba41 | ||
|
062c736437 | ||
|
a6e7f1142b | ||
|
2eae80bbfe | ||
|
b4b98e5165 | ||
|
19bae485b0 | ||
|
ccf7580eb8 | ||
|
8220a8a971 | ||
|
a682962719 | ||
|
64c5f00429 | ||
|
3eae9aba79 | ||
|
4c50ecd958 | ||
|
35d8c37102 | ||
|
80d10598c1 | ||
|
bb02505fb3 | ||
|
594f1237ce | ||
|
0d45181118 | ||
|
23cff64f66 | ||
|
5f1073ae42 | ||
|
6bd9fafc0e | ||
|
683c08b3be | ||
|
e57e6fdb42 | ||
|
7174f04322 | ||
|
a1f5b35e1b | ||
|
43a917420b | ||
|
b4adecdab3 | ||
|
8dfa9bddd7 | ||
|
661ad02c95 | ||
|
f1b833dcb8 | ||
|
7a6e51dbdc | ||
08fe8459c3 | |||
c973f65acb | |||
|
3c3693583d | ||
|
ccf8b384af | ||
|
62eb2f1739 | ||
|
8b031f6c89 | ||
|
aa241d073a | ||
|
60ec55b483 | ||
0d13f793f2 | |||
|
144604a29e | ||
|
be21185988 | ||
|
1644ef5f2d | ||
|
67b25f4acf | ||
bf4499c643 | |||
1eef97674c | |||
9bc27c9a72 | |||
39fa3c7cbd | |||
|
9a7fa689a1 | ||
27033a2231 | |||
d51defb0b9 | |||
86430757bf | |||
|
5594f262c7 | ||
|
36ad20f369 | ||
a9a7abf26c | |||
06785c9df2 | |||
54025df392 | |||
efe201d1df | |||
|
31cbcd6de1 | ||
dac0a3e86e | |||
|
0cf3266280 | ||
|
610bdbd68b | ||
65d77ff317 | |||
d934ef9b00 | |||
|
2385f4adbc | ||
65fef84855 | |||
19d56a33e8 | |||
bcc5c9f81d | |||
902663176d | |||
c5660b58d9 | |||
|
0d8ae4d6f4 | ||
|
1fa25f128f | ||
73ea8cdb21 | |||
|
e8ea4748ed | ||
c3ae3989c2 | |||
2e27a35f1b | |||
6d0f8ec7b9 | |||
5951d2406e | |||
890a44f130 | |||
67ab0450dd | |||
f3cbe98156 | |||
3c7dc746d5 | |||
2a555480bd | |||
4f9fd074b8 | |||
|
8c49f7b98a | ||
|
49c0facf2e | ||
|
da608f6214 | ||
|
2f1d808781 | ||
|
dda71fab19 | ||
|
319de74d99 | ||
|
85ed4975bf | ||
|
ad88588481 | ||
|
19188818ea | ||
|
36d709e047 | ||
ed01e81c42 | |||
ff26c6393e | |||
|
5e728da075 | ||
|
cb2e84454f | ||
|
ac735cfaac | ||
|
11b9fbbe66 | ||
d31f9a83e7 | |||
86eae807be | |||
c55f586df8 | |||
3aad5abfe9 | |||
3109f158a6 | |||
|
afcef7faa6 | ||
|
ca3aaf8f6d | ||
|
15032bd765 | ||
|
9fa6e3d83a | ||
|
b1fe837b8e | ||
|
d5f82bf55b | ||
|
9184b32978 | ||
|
24786a71ee | ||
|
f21798c1ba | ||
|
4e13285274 | ||
|
fa8d85b632 | ||
|
5846aa5bfc | ||
|
b5d1e58b0e | ||
|
1a9e1c5e91 | ||
|
a18ead5c67 | ||
|
c4e87a7fdb | ||
|
f73f1f730b | ||
|
db0f10a73f | ||
|
6e0e88af20 | ||
|
1b9139efe8 | ||
|
a09cc8dda0 | ||
|
2bb80d280c | ||
|
fc4c4d080c | ||
|
a56e2bccd0 | ||
|
f4da8ece0c | ||
|
9ad09627ad | ||
|
b264dd2a8d | ||
|
07254a238d | ||
|
dcc240f826 | ||
|
325a46e8ed | ||
|
e8635aca1a | ||
|
8d5fae919c | ||
|
92905a3deb | ||
|
7f1c176706 | ||
|
7d6d3897db | ||
|
0c5b6dcddd | ||
|
ae815ecf1b | ||
|
505ba65922 | ||
|
12dd8e8713 | ||
|
ecd579f3ae | ||
|
bcc2c7d06e | ||
|
ff0a90674d | ||
|
115fba1b92 | ||
|
bdcafc7f99 | ||
|
99a058b6e6 | ||
|
1d67a4e88d | ||
|
a23f707f92 | ||
|
7b553d255e | ||
|
08b4255b67 | ||
|
1aedadb49b | ||
|
ec9a920aab | ||
|
6696e5c4e1 | ||
|
8ad28478a3 | ||
|
1446d916f0 | ||
|
a3b356e057 | ||
|
4df712589c | ||
|
b363a639aa | ||
|
5267b60027 | ||
|
b6b02108f7 | ||
|
b2b5079fc7 | ||
|
4823b0bca1 | ||
|
1824df90bf | ||
|
de23dd0a1e | ||
|
46bfc8c295 | ||
|
a4fdb3ecce | ||
|
9cccde26e5 | ||
|
f882a5aa00 | ||
|
3419bff4ed | ||
|
eae9234c07 | ||
|
6f8241d8e9 | ||
|
4342798ff5 | ||
|
9afb705125 | ||
|
1a92b0c7c3 | ||
|
b25afb239a | ||
|
2c8b84f21d | ||
|
9cba45bf18 | ||
|
41e5e7626e | ||
|
3ad11afb48 | ||
|
447ef95618 | ||
|
4b8b9e1cb1 | ||
|
aa88218d86 | ||
|
63c8f8c6c4 | ||
|
a4159b8d54 | ||
|
b760d0cdf0 | ||
|
c69989b722 | ||
|
cb8d8164bd | ||
|
416d7ef76e | ||
|
1cf260afbe | ||
|
decef06ae3 | ||
|
69966b6322 | ||
|
149adc9cc1 | ||
|
108a0fc0d7 | ||
|
3ee06b036e | ||
|
10293c5fb1 | ||
|
acc817b3f5 | ||
|
ddca928488 | ||
|
ad43465c31 | ||
|
58fdd3ac98 | ||
|
662c019136 | ||
|
60a3cc0734 | ||
|
002251942c | ||
|
aa1cce38ca | ||
|
476b2b0e8c | ||
|
d9bfe88261 | ||
|
94b3965989 | ||
|
51052f4961 | ||
|
c83306391e | ||
|
b2fe2c6e3d | ||
|
30574a7cad | ||
|
31f046bd9b | ||
|
dd190397d6 | ||
|
117e73751c | ||
|
c175067ed9 | ||
|
d2393b4f6c | ||
|
f5409c713b | ||
|
7c4e5242ba | ||
|
a6d1d128da | ||
|
88dd4d11b4 | ||
|
0d2c341040 | ||
|
eb04875640 | ||
|
0d9741b1b1 | ||
|
b5ad532e28 | ||
|
071518f571 | ||
|
d7ee0b6fee | ||
|
5385104ed6 | ||
|
ac6793dace | ||
|
0adfb1ac6f | ||
|
4001f6215e | ||
|
6f201ce4a8 | ||
|
597380e099 | ||
|
df9a9f074a | ||
|
88bdf482c0 | ||
|
75ad6d0100 | ||
|
2d7201781b | ||
|
5969685954 | ||
|
d6cd3b1605 | ||
|
95bb103a23 | ||
|
caf3379746 | ||
|
bc08fe7c5f | ||
|
0bf3372882 | ||
|
c6ac071619 | ||
|
2fa0fdb176 | ||
|
3b8ede5ebe | ||
|
087ed1e999 | ||
|
9135f7130e | ||
|
d6812947f3 | ||
|
a52864ef27 | ||
|
9156d7bf34 | ||
|
8e90072d3b | ||
|
ddc9205212 | ||
|
cff2b49365 | ||
|
3cb7d9703b | ||
|
4d1843a95e | ||
|
ca6493f2e6 | ||
|
f7a0ee9a15 | ||
|
1c1ba859eb | ||
|
b2fb19cc19 | ||
|
e56707bd4e | ||
|
a5b7800aca | ||
|
ed27cec094 | ||
|
7a180dbb4e | ||
|
fa236c704e | ||
|
bc432a0f43 | ||
|
1f4489c266 | ||
|
49fe24b03f | ||
|
f769305d7d | ||
|
022b284064 | ||
|
e2426b22fa | ||
|
bcdae9a093 | ||
|
14533f073b | ||
|
e956422f48 | ||
|
ac6312d33c | ||
|
6fbc2863a8 | ||
|
8a68031ab0 | ||
|
d874cef678 | ||
|
403c393ef0 | ||
|
2782993dd7 | ||
|
37e263e4fa | ||
|
ee9a54c0a0 | ||
|
4bd149d05a | ||
|
a2edf52b41 | ||
|
d90686f021 | ||
|
b0c56f3432 | ||
|
dac94c7cbc | ||
|
7d4754a4f8 | ||
|
cfca6922e7 | ||
|
d8b465f556 | ||
|
d188d02384 | ||
|
cade383f9b | ||
|
ebb6e38075 | ||
|
8084f39bf3 | ||
|
4fc43b510d | ||
|
914d4616ca | ||
|
c0c1a4cded | ||
|
1b84d893e0 | ||
|
13a86497ea | ||
|
9aa33862a7 | ||
|
97e6981e39 | ||
|
46b7ac7b48 | ||
|
b996fdf656 | ||
|
dd6fb63598 | ||
|
ccd08c8c80 | ||
|
21646b7f48 | ||
|
36d91f8c02 | ||
|
7ccc54949e | ||
|
7ef304da46 | ||
|
576005b714 | ||
|
53982003ee | ||
|
668fb3f658 | ||
|
9a05a688a7 | ||
|
9ea3e42768 | ||
|
463a16f1b0 | ||
|
0cb97c31ae | ||
|
3911792ca1 | ||
|
d57835c7ae | ||
|
9777f50fac | ||
|
64a955245d | ||
|
72231514cb | ||
|
b1da8e1d1d | ||
|
2c3a429290 | ||
|
e8b6b02bc2 | ||
|
b8189977b4 | ||
|
da7978a08c | ||
|
7e29551ae0 | ||
|
31bd5a09b6 | ||
|
7e59cf588d | ||
|
208d83f9d3 | ||
|
31340d91f9 | ||
|
b80b75593b | ||
|
4f5d6f7952 | ||
|
6931d1df51 | ||
|
9884b2c72c | ||
|
901a073f8b | ||
|
ebee9fa418 | ||
|
5931616e71 | ||
|
13d6cec802 | ||
|
ac4ecbf4ee | ||
|
c4b8629119 | ||
|
a42832afb7 | ||
|
7c15190ec2 | ||
|
f985aefde4 | ||
|
0475afca71 | ||
|
14be8a4301 | ||
|
8e2e9fbb23 | ||
|
8c6bda994e | ||
|
0c7c0ada78 |
13
.dorpsgek.yml
Normal file
13
.dorpsgek.yml
Normal file
@@ -0,0 +1,13 @@
|
||||
notifications:
|
||||
push:
|
||||
irc:
|
||||
- openttd
|
||||
- openttd.notice
|
||||
pull-request:
|
||||
irc:
|
||||
- openttd
|
||||
- openttd.notice
|
||||
issue:
|
||||
irc:
|
||||
- openttd
|
||||
- openttd.notice
|
9
.editorconfig
Normal file
9
.editorconfig
Normal file
@@ -0,0 +1,9 @@
|
||||
root = true
|
||||
|
||||
[*]
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
[*.{c,cpp,h,hpp}]
|
||||
indent_style = tab
|
||||
charset = utf-8
|
7
.github/ISSUE_TEMPLATE.md
vendored
Normal file
7
.github/ISSUE_TEMPLATE.md
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
## Version of OpenTTD
|
||||
|
||||
## Expected result
|
||||
|
||||
## Actual result
|
||||
|
||||
## Steps to reproduce
|
34
.github/stale.yml
vendored
Normal file
34
.github/stale.yml
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
daysUntilClose: 7
|
||||
staleLabel: stale
|
||||
closeComment: false
|
||||
exemptMilestones: true
|
||||
exemptAssignees: true
|
||||
|
||||
issues:
|
||||
daysUntilStale: 60
|
||||
exemptLabels:
|
||||
- pinned
|
||||
- security
|
||||
- "good first issue"
|
||||
- regression
|
||||
markComment: >
|
||||
This issue has been automatically marked as stale because it has not had any activity in the last two months.
|
||||
|
||||
If you believe the issue is still relevant, please test on the latest nightly and report back.
|
||||
|
||||
It will be closed if no further activity occurs within 7 days.
|
||||
|
||||
Thank you for your contributions.
|
||||
|
||||
pulls:
|
||||
daysUntilStale: 30
|
||||
exemptLabels:
|
||||
- pinned
|
||||
markComment: >
|
||||
This pull request has been automatically marked as stale because it has not had any activity in the last month.
|
||||
|
||||
Please feel free to give a status update now, ping for review, or re-open when it's ready.
|
||||
|
||||
It will be closed if no further activity occurs within 7 days.
|
||||
|
||||
Thank you for your contributions.
|
8
.gitignore
vendored
8
.gitignore
vendored
@@ -7,6 +7,7 @@ bin/ai/*
|
||||
bin/baseset/*
|
||||
!bin/baseset/openttd.grf
|
||||
!bin/baseset/opntitle.dat
|
||||
!bin/baseset/orig_extra.grf
|
||||
!bin/baseset/orig_*.obg
|
||||
!bin/baseset/orig_*.obs
|
||||
!bin/baseset/no_sound.obs
|
||||
@@ -17,14 +18,19 @@ bin/scripts/*
|
||||
!bin/scripts/*.example
|
||||
!bin/scripts/readme.txt
|
||||
|
||||
*.aps
|
||||
bundle/*
|
||||
bundles/*
|
||||
docs/aidocs/*
|
||||
docs/gamedocs/*
|
||||
docs/source/*
|
||||
.kdev4
|
||||
.kdev4/*
|
||||
*.kdev4
|
||||
media/openttd.desktop
|
||||
media/openttd.desktop.install
|
||||
objs/*
|
||||
projects/.vs
|
||||
projects/Debug
|
||||
projects/Release
|
||||
projects/*.ncb
|
||||
@@ -33,6 +39,8 @@ projects/*.sdf
|
||||
projects/*.opensdf
|
||||
projects/*.vcproj.*.user
|
||||
projects/*.vcxproj.user
|
||||
projects/*.VC.db
|
||||
projects/*.VC.opendb
|
||||
src/rev.cpp
|
||||
src/os/windows/ottdres.rc
|
||||
|
||||
|
@@ -1,6 +1,7 @@
|
||||
syntax: glob
|
||||
|
||||
.svn
|
||||
*.aps
|
||||
bin/baseset/openttd.32.bmp
|
||||
bin/lang/*
|
||||
bin/openttd*
|
||||
@@ -13,12 +14,16 @@ config.pwd
|
||||
docs/aidocs/*
|
||||
docs/gamedocs/*
|
||||
docs/source/*
|
||||
.kdev4
|
||||
.kdev4/*
|
||||
*.kdev4
|
||||
Makefile
|
||||
Makefile.am
|
||||
Makefile.bundle
|
||||
media/openttd.desktop
|
||||
media/openttd.desktop.install
|
||||
objs/*
|
||||
projects/.vs
|
||||
projects/*.ncb
|
||||
projects/*.suo
|
||||
projects/*.sdf
|
||||
|
181
CONTRIBUTING.md
Normal file
181
CONTRIBUTING.md
Normal file
@@ -0,0 +1,181 @@
|
||||
|
||||
# Contributing to OpenTTD
|
||||
|
||||
Looking to contribute something to OpenTTD? **Here's how you can help.**
|
||||
|
||||
Please take a moment to review this document in order to make the contribution process easy and effective for everyone involved.
|
||||
|
||||
Following these guidelines helps to communicate that you respect the time of the developers managing and developing this open source project. In return, they should reciprocate that respect in addressing your issue or assessing patches and features.
|
||||
|
||||
|
||||
## Using the issue tracker
|
||||
|
||||
The [issue tracker](https://github.com/OpenTTD/OpenTTD/issues) is the preferred channel for [bug reports](#bug-reports), but please respect the following restrictions:
|
||||
|
||||
* Please **do not** use the issue tracker for help playing or using OpenTTD. Please try [irc](https://wiki.openttd.org/IRC_channel), or the [forums](https://www.tt-forums.net/)
|
||||
|
||||
* Please **do not** derail or troll issues. Keep the discussion on topic and respect the opinions of others.
|
||||
|
||||
* Please **do not** post comments consisting solely of "+1" or ":thumbsup:".
|
||||
Use [GitHub's "reactions" feature](https://github.com/blog/2119-add-reactions-to-pull-requests-issues-and-comments) instead. We reserve the right to delete comments which violate this rule.
|
||||
|
||||
* Please **do not** open issues or pull requests regarding add-on content in NewGRF, GameScripts, AIs, etc. These are created by third-parties. Please try [irc](https://wiki.openttd.org/IRC_channel) or the [forums](https://www.tt-forums.net/) to discuss these.
|
||||
|
||||
## Bug reports
|
||||
|
||||
A bug is a _demonstrable problem_ that is caused by the code in the repository.
|
||||
Good bug reports are extremely helpful, so thanks!
|
||||
|
||||
Guidelines for bug reports:
|
||||
|
||||
0. Please don't report issues with games where you changed NewGRFs.
|
||||
|
||||
1. Please don't report issues with modified versions of OpenTTD (patchpacks and similar).
|
||||
|
||||
2. **Use the GitHub issue search** --- check if the issue has already been
|
||||
reported.
|
||||
|
||||
3. **Check if the issue has been fixed** --- try to reproduce it using the latest `nightly` build of OpenTTD, available from https://www.openttd.org
|
||||
|
||||
4. **Isolate the problem** --- ideally create reproduceable steps with an attached savegame and screenshots. Try to use few or no NewGRFs, AIs etc if possible.
|
||||
|
||||
A good bug report shouldn't leave others needing to chase you up for more information.
|
||||
Please try to be as detailed as possible in your report.
|
||||
|
||||
* What is your environment?
|
||||
* What steps will reproduce the issue?
|
||||
* Which operating system(s) experience the problem?
|
||||
* What would you expect to be the outcome?
|
||||
|
||||
All these details will help people to fix any potential bugs.
|
||||
|
||||
Example:
|
||||
|
||||
> Short and descriptive example bug report title
|
||||
>
|
||||
> A summary of the issue and the OS environment in which it occurs. If
|
||||
> suitable, include the steps required to reproduce the bug.
|
||||
>
|
||||
> 1. This is the first step
|
||||
> 2. This is the second step
|
||||
> 3. Further steps, etc.
|
||||
>
|
||||
> Attached savegame
|
||||
> Attached screenshots showing the issue
|
||||
> Crashlogs if the bug causes a crash
|
||||
>
|
||||
> Any other information you want to share that is relevant to the issue being
|
||||
> reported. This might include the lines of code that you have identified as
|
||||
> causing the bug, and potential solutions (and your opinions on their
|
||||
> merits).
|
||||
|
||||
## Feature requests
|
||||
|
||||
Before opening a feature request, please take a moment to find out whether your idea fits with the scope and aims of the project.
|
||||
|
||||
It's up to *you* to make a strong case to convince the project's developers of the merits of this feature.
|
||||
|
||||
Please provide as much detail and context as possible. This means don't request for a solution, but describe the problem you see and how/why you think it should be fixed.
|
||||
|
||||
For feature request we have a strict policy.
|
||||
|
||||
Keeping issues around with "a good idea" or "not really a bug but we should maybe fix it" turns out to have the reversed effect: nobody looks at it anymore.
|
||||
|
||||
Although we really appreciate feedback and ideas, we will close feature requests that we don't expect to fulfill in the next year.
|
||||
|
||||
Many of those ideas etc do have a place on the [forums](https://www.tt-forums.net); and if enough people like it, someone will stand up and make it.
|
||||
|
||||
It's usually best discuss in [irc](https://wiki.openttd.org/IRC_channel) before opening a feature request or working on a large feature in a fork.
|
||||
Discussion in irc can take time, but it can be productive and avoid disappointment :)
|
||||
|
||||
## Pull requests
|
||||
|
||||
Good pull requests—patches, improvements, new features—are a fantastic help.
|
||||
They should remain focused in scope and avoid containing unrelated commits.
|
||||
|
||||
**Please ask first** before embarking on any significant pull request (e.g. implementing features, refactoring code, porting to a different language), otherwise you risk spending a lot of time working on something that the project's developers might not want to merge into the project.
|
||||
|
||||
Please adhere to the [coding guidelines](#code-guidelines) used throughout the project (indentation, accurate comments, etc.) and any other requirements (such as test coverage).
|
||||
|
||||
Adhering to the following process is the best way to get your work included in the project:
|
||||
|
||||
1. [Fork](https://help.github.com/fork-a-repo/) the project, clone your fork, and configure the remotes:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/<your-username>/OpenTTD.git openttd
|
||||
git clone https://github.com/OpenTTD/OpenTTD-git-hooks.git openttd_hooks
|
||||
cd openttd
|
||||
git remote add upstream https://github.com/OpenTTD/OpenTTD.git
|
||||
cd .git/hooks
|
||||
ln -s ../../../openttd_hooks/hooks/* .
|
||||
```
|
||||
|
||||
2. If you cloned a while ago, get the latest changes from upstream:
|
||||
|
||||
```bash
|
||||
git fetch upstream
|
||||
```
|
||||
|
||||
3. Create a new topic branch (off the main project development branch) to
|
||||
contain your feature, change, or fix:
|
||||
|
||||
```bash
|
||||
git checkout upstream/master -b <topic-branch-name>
|
||||
```
|
||||
|
||||
4. Commit your changes in logical chunks. Please adhere to these [git commit message guidelines](https://wiki.openttd.org/Commit_style#Commit_message) or your code is unlikely to be merged into the main project.
|
||||
Use Git's [interactive rebase](https://help.github.com/articles/interactive-rebase) feature to tidy up your commits before making them public.
|
||||
|
||||
5. Locally rebase the upstream development branch into your topic branch:
|
||||
|
||||
```bash
|
||||
git fetch upstream
|
||||
git rebase upstream/master
|
||||
```
|
||||
|
||||
6. Push your topic branch up to your fork the first time:
|
||||
|
||||
```bash
|
||||
git push --set-upstream origin <topic-branch-name>
|
||||
```
|
||||
|
||||
And any time after that:
|
||||
|
||||
```bash
|
||||
git push
|
||||
```
|
||||
|
||||
7. [Open a Pull Request](https://help.github.com/articles/using-pull-requests/) with a clear title and description against the `master` branch.
|
||||
|
||||
**IMPORTANT**: By submitting a patch, you agree to the [License](#license).
|
||||
|
||||
### Privacy Notice
|
||||
|
||||
We would like to make you aware that contributing to OpenTTD via git will permanently store the name and email address you provide as well as the actual changes and the time and date you made it inside git's version history.
|
||||
|
||||
This is inevitable, because it is a main feature of git. If you are concerned about your privacy, we strongly recommend to use "Anonymous <anonymous@openttd.org>" as the git commit author. We might refuse anonymous contributions if malicious intent is suspected.
|
||||
|
||||
Please note that the contributor identity, once given, is used for copyright verification and to provide proof should a malicious commit be made. As such, the [EU GDPR](https://www.eugdpr.org/key-changes.html) "right to be forgotten" does not apply, as this is an overriding legitimate interest.
|
||||
|
||||
Please also note that your commit is public and as such will potentially be processed by many third-parties. Git's distributed nature makes it impossible to track where exactly your commit, and thus your personal data, will be stored and be processed. If you would not like to accept this risk, please do either commit anonymously or refrain from contributing to the OpenTTD project.
|
||||
|
||||
### Pull request validation
|
||||
|
||||
Continuous integration (CI) tools monitor pull requests, and help us identify build and code quality issues.
|
||||
|
||||
The results of the CI tests will show on your pull request.
|
||||
|
||||
By clicking on Details you can further zoom in; in case of a failure it will show you why it failed. In case of success it will report how awesome you were.
|
||||
|
||||
## Code guidelines
|
||||
|
||||
[Code style](https://wiki.openttd.org/Coding_style) must be adhered to for pull requests to be accepted
|
||||
|
||||
## License
|
||||
|
||||
By contributing your code, you agree to license your contribution under the [GPL v2](https://github.com/OpenTTD/OpenTTD/blob/master/COPYING).
|
||||
|
||||
### Attribution of this Contributing Guide
|
||||
|
||||
This contributing guide is adapted from [Bootstrap](https://github.com/twbs/bootstrap/blob/master/CONTRIBUTING.md) under the [Creative Commons Attribution 3.0 Unported License](https://github.com/twbs/bootstrap/blob/master/docs/LICENSE) terms for Bootstrap documentation.
|
||||
The GDPR notice is adapted from [rsyslog](https://github.com/rsyslog/rsyslog/blob/master/CONTRIBUTING.md) under the [GNU General Public License](https://github.com/rsyslog/rsyslog/blob/master/COPYING).
|
2
COPYING
2
COPYING
@@ -1,5 +1,5 @@
|
||||
This is the license which applies to OpenTTD with the exception of some
|
||||
3rd party modules. See readme.txt for details
|
||||
3rd party modules. See README.md for details
|
||||
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
|
173
Doxyfile
173
Doxyfile
@@ -8,9 +8,14 @@
|
||||
#---------------------------------------------------------------------------
|
||||
# Project related configuration options
|
||||
#---------------------------------------------------------------------------
|
||||
DOXYFILE_ENCODING = UTF-8
|
||||
PROJECT_NAME = OpenTTD
|
||||
PROJECT_NUMBER =
|
||||
PROJECT_BRIEF =
|
||||
PROJECT_LOGO =
|
||||
OUTPUT_DIRECTORY = docs/source/
|
||||
CREATE_SUBDIRS = NO
|
||||
CREATE_SUBDIRS = YES
|
||||
ALLOW_UNICODE_NAMES = NO
|
||||
OUTPUT_LANGUAGE = English
|
||||
BRIEF_MEMBER_DESC = YES
|
||||
REPEAT_BRIEF = YES
|
||||
@@ -32,22 +37,42 @@ STRIP_FROM_PATH = ./
|
||||
STRIP_FROM_INC_PATH =
|
||||
SHORT_NAMES = NO
|
||||
JAVADOC_AUTOBRIEF = YES
|
||||
QT_AUTOBRIEF = NO
|
||||
MULTILINE_CPP_IS_BRIEF = NO
|
||||
INHERIT_DOCS = YES
|
||||
DISTRIBUTE_GROUP_DOC = NO
|
||||
SEPARATE_MEMBER_PAGES = NO
|
||||
TAB_SIZE = 2
|
||||
ALIASES =
|
||||
TCL_SUBST =
|
||||
OPTIMIZE_OUTPUT_FOR_C = YES
|
||||
OPTIMIZE_OUTPUT_JAVA = NO
|
||||
OPTIMIZE_FOR_FORTRAN = NO
|
||||
OPTIMIZE_OUTPUT_VHDL = NO
|
||||
EXTENSION_MAPPING =
|
||||
MARKDOWN_SUPPORT = YES
|
||||
TOC_INCLUDE_HEADINGS = 0
|
||||
AUTOLINK_SUPPORT = YES
|
||||
BUILTIN_STL_SUPPORT = NO
|
||||
CPP_CLI_SUPPORT = NO
|
||||
SIP_SUPPORT = NO
|
||||
IDL_PROPERTY_SUPPORT = YES
|
||||
DISTRIBUTE_GROUP_DOC = NO
|
||||
GROUP_NESTED_COMPOUNDS = NO
|
||||
SUBGROUPING = YES
|
||||
INLINE_GROUPED_CLASSES = NO
|
||||
INLINE_SIMPLE_STRUCTS = NO
|
||||
TYPEDEF_HIDES_STRUCT = NO
|
||||
LOOKUP_CACHE_SIZE = 0
|
||||
#---------------------------------------------------------------------------
|
||||
# Build related configuration options
|
||||
#---------------------------------------------------------------------------
|
||||
EXTRACT_ALL = NO
|
||||
EXTRACT_PRIVATE = YES
|
||||
EXTRACT_PACKAGE = NO
|
||||
EXTRACT_STATIC = YES
|
||||
EXTRACT_LOCAL_CLASSES = YES
|
||||
EXTRACT_LOCAL_METHODS = YES
|
||||
EXTRACT_ANON_NSPACES = YES
|
||||
HIDE_UNDOC_MEMBERS = NO
|
||||
HIDE_UNDOC_CLASSES = NO
|
||||
HIDE_FRIEND_COMPOUNDS = NO
|
||||
@@ -55,11 +80,17 @@ HIDE_IN_BODY_DOCS = NO
|
||||
INTERNAL_DOCS = NO
|
||||
CASE_SENSE_NAMES = YES
|
||||
HIDE_SCOPE_NAMES = NO
|
||||
HIDE_COMPOUND_REFERENCE= NO
|
||||
SHOW_INCLUDE_FILES = YES
|
||||
SHOW_GROUPED_MEMB_INC = NO
|
||||
FORCE_LOCAL_INCLUDES = NO
|
||||
INLINE_INFO = YES
|
||||
SORT_MEMBER_DOCS = YES
|
||||
SORT_BRIEF_DOCS = NO
|
||||
SORT_MEMBERS_CTORS_1ST = NO
|
||||
SORT_GROUP_NAMES = NO
|
||||
SORT_BY_SCOPE_NAME = NO
|
||||
STRICT_PROTO_MATCHING = NO
|
||||
GENERATE_TODOLIST = YES
|
||||
GENERATE_TESTLIST = YES
|
||||
GENERATE_BUGLIST = YES
|
||||
@@ -67,22 +98,27 @@ GENERATE_DEPRECATEDLIST= YES
|
||||
ENABLED_SECTIONS =
|
||||
MAX_INITIALIZER_LINES = 30
|
||||
SHOW_USED_FILES = YES
|
||||
SHOW_DIRECTORIES = YES
|
||||
SHOW_FILES = YES
|
||||
SHOW_NAMESPACES = YES
|
||||
FILE_VERSION_FILTER =
|
||||
LAYOUT_FILE =
|
||||
CITE_BIB_FILES =
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to warning and progress messages
|
||||
# Configuration options related to warning and progress messages
|
||||
#---------------------------------------------------------------------------
|
||||
QUIET = NO
|
||||
WARNINGS = YES
|
||||
WARN_IF_UNDOCUMENTED = YES
|
||||
WARN_IF_DOC_ERROR = YES
|
||||
WARN_NO_PARAMDOC = NO
|
||||
WARN_AS_ERROR = NO
|
||||
WARN_FORMAT = "$file:$line: $text"
|
||||
WARN_LOGFILE =
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the input files
|
||||
# Configuration options related to the input files
|
||||
#---------------------------------------------------------------------------
|
||||
INPUT = ./src/
|
||||
INPUT_ENCODING = UTF-8
|
||||
FILE_PATTERNS = *.c \
|
||||
*.cc \
|
||||
*.cxx \
|
||||
@@ -93,31 +129,38 @@ FILE_PATTERNS = *.c \
|
||||
RECURSIVE = YES
|
||||
EXCLUDE =
|
||||
EXCLUDE_SYMLINKS = NO
|
||||
EXCLUDE_PATTERNS = */3rdparty */.svn */script/api
|
||||
EXCLUDE_PATTERNS = */3rdparty \
|
||||
*/script/api
|
||||
EXCLUDE_SYMBOLS =
|
||||
EXAMPLE_PATH =
|
||||
EXAMPLE_PATTERNS = *
|
||||
EXAMPLE_RECURSIVE = NO
|
||||
IMAGE_PATH =./docs/
|
||||
IMAGE_PATH = ./docs/
|
||||
INPUT_FILTER =
|
||||
FILTER_PATTERNS =
|
||||
FILTER_SOURCE_FILES = NO
|
||||
FILTER_SOURCE_PATTERNS =
|
||||
USE_MDFILE_AS_MAINPAGE =
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to source browsing
|
||||
# Configuration options related to source browsing
|
||||
#---------------------------------------------------------------------------
|
||||
SOURCE_BROWSER = YES
|
||||
INLINE_SOURCES = NO
|
||||
STRIP_CODE_COMMENTS = YES
|
||||
REFERENCED_BY_RELATION = YES
|
||||
REFERENCES_RELATION = YES
|
||||
REFERENCES_LINK_SOURCE = YES
|
||||
SOURCE_TOOLTIPS = YES
|
||||
USE_HTAGS = NO
|
||||
VERBATIM_HEADERS = YES
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the alphabetical class index
|
||||
# Configuration options related to the alphabetical class index
|
||||
#---------------------------------------------------------------------------
|
||||
ALPHABETICAL_INDEX = NO
|
||||
COLS_IN_ALPHA_INDEX = 5
|
||||
IGNORE_PREFIX =
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the HTML output
|
||||
# Configuration options related to the HTML output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_HTML = YES
|
||||
HTML_OUTPUT = html
|
||||
@@ -125,19 +168,58 @@ HTML_FILE_EXTENSION = .html
|
||||
HTML_HEADER =
|
||||
HTML_FOOTER =
|
||||
HTML_STYLESHEET =
|
||||
HTML_ALIGN_MEMBERS = YES
|
||||
GENERATE_HTMLHELP = YES
|
||||
HTML_EXTRA_STYLESHEET =
|
||||
HTML_EXTRA_FILES =
|
||||
HTML_COLORSTYLE_HUE = 220
|
||||
HTML_COLORSTYLE_SAT = 100
|
||||
HTML_COLORSTYLE_GAMMA = 80
|
||||
HTML_TIMESTAMP = NO
|
||||
HTML_DYNAMIC_MENUS = YES
|
||||
HTML_DYNAMIC_SECTIONS = NO
|
||||
HTML_INDEX_NUM_ENTRIES = 100
|
||||
GENERATE_DOCSET = NO
|
||||
DOCSET_FEEDNAME = "Doxygen generated docs"
|
||||
DOCSET_BUNDLE_ID = org.doxygen.Project
|
||||
DOCSET_PUBLISHER_ID = org.doxygen.Publisher
|
||||
DOCSET_PUBLISHER_NAME = Publisher
|
||||
GENERATE_HTMLHELP = NO
|
||||
CHM_FILE =
|
||||
HHC_LOCATION =
|
||||
GENERATE_CHI = NO
|
||||
CHM_INDEX_ENCODING =
|
||||
BINARY_TOC = NO
|
||||
TOC_EXPAND = YES
|
||||
GENERATE_QHP = NO
|
||||
QCH_FILE =
|
||||
QHP_NAMESPACE = org.doxygen.Project
|
||||
QHP_VIRTUAL_FOLDER = doc
|
||||
QHP_CUST_FILTER_NAME =
|
||||
QHP_CUST_FILTER_ATTRS =
|
||||
QHP_SECT_FILTER_ATTRS =
|
||||
QHG_LOCATION =
|
||||
GENERATE_ECLIPSEHELP = NO
|
||||
ECLIPSE_DOC_ID = org.doxygen.Project
|
||||
DISABLE_INDEX = NO
|
||||
ENUM_VALUES_PER_LINE = 4
|
||||
GENERATE_TREEVIEW = YES
|
||||
ENUM_VALUES_PER_LINE = 4
|
||||
TREEVIEW_WIDTH = 250
|
||||
EXT_LINKS_IN_WINDOW = NO
|
||||
FORMULA_FONTSIZE = 10
|
||||
FORMULA_TRANSPARENT = YES
|
||||
USE_MATHJAX = NO
|
||||
MATHJAX_FORMAT = HTML-CSS
|
||||
MATHJAX_RELPATH = https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/
|
||||
MATHJAX_EXTENSIONS =
|
||||
MATHJAX_CODEFILE =
|
||||
SEARCHENGINE = NO
|
||||
SERVER_BASED_SEARCH = NO
|
||||
EXTERNAL_SEARCH = NO
|
||||
SEARCHENGINE_URL =
|
||||
SEARCHDATA_FILE = searchdata.xml
|
||||
EXTERNAL_SEARCH_ID =
|
||||
EXTRA_SEARCH_MAPPINGS =
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the LaTeX output
|
||||
# Configuration options related to the LaTeX output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_LATEX = NO
|
||||
LATEX_OUTPUT = latex
|
||||
@@ -147,12 +229,18 @@ COMPACT_LATEX = NO
|
||||
PAPER_TYPE = a4wide
|
||||
EXTRA_PACKAGES =
|
||||
LATEX_HEADER =
|
||||
LATEX_FOOTER =
|
||||
LATEX_EXTRA_STYLESHEET =
|
||||
LATEX_EXTRA_FILES =
|
||||
PDF_HYPERLINKS = NO
|
||||
USE_PDFLATEX = NO
|
||||
LATEX_BATCHMODE = NO
|
||||
LATEX_HIDE_INDICES = NO
|
||||
LATEX_SOURCE_CODE = NO
|
||||
LATEX_BIB_STYLE = plain
|
||||
LATEX_TIMESTAMP = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the RTF output
|
||||
# Configuration options related to the RTF output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_RTF = NO
|
||||
RTF_OUTPUT = rtf
|
||||
@@ -160,27 +248,33 @@ COMPACT_RTF = NO
|
||||
RTF_HYPERLINKS = NO
|
||||
RTF_STYLESHEET_FILE =
|
||||
RTF_EXTENSIONS_FILE =
|
||||
RTF_SOURCE_CODE = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the man page output
|
||||
# Configuration options related to the man page output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_MAN = NO
|
||||
MAN_OUTPUT = man
|
||||
MAN_EXTENSION = .3
|
||||
MAN_SUBDIR =
|
||||
MAN_LINKS = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the XML output
|
||||
# Configuration options related to the XML output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_XML = NO
|
||||
XML_OUTPUT = xml
|
||||
XML_SCHEMA =
|
||||
XML_DTD =
|
||||
XML_PROGRAMLISTING = YES
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options for the AutoGen Definitions output
|
||||
# Configuration options related to the DOCBOOK output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_DOCBOOK = NO
|
||||
DOCBOOK_OUTPUT = docbook
|
||||
DOCBOOK_PROGRAMLISTING = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options for the AutoGen Definitions output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_AUTOGEN_DEF = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the Perl module output
|
||||
# Configuration options related to the Perl module output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_PERLMOD = NO
|
||||
PERLMOD_LATEX = NO
|
||||
@@ -195,42 +289,67 @@ EXPAND_ONLY_PREDEF = YES
|
||||
SEARCH_INCLUDES = YES
|
||||
INCLUDE_PATH =
|
||||
INCLUDE_FILE_PATTERNS =
|
||||
PREDEFINED = ENABLE_NETWORK WITH_ZLIB WITH_LZO WITH_LZMA WITH_SDL WITH_PNG WITH_FONTCONFIG WITH_FREETYPE WITH_ICU UNICODE _UNICODE _GNU_SOURCE FINAL=
|
||||
PREDEFINED = ENABLE_NETWORK \
|
||||
WITH_ZLIB \
|
||||
WITH_LZO \
|
||||
WITH_LZMA \
|
||||
WITH_SDL \
|
||||
WITH_PNG \
|
||||
WITH_FONTCONFIG \
|
||||
WITH_FREETYPE \
|
||||
WITH_ICU_SORT \
|
||||
WITH_ICU_LAYOUT \
|
||||
UNICODE \
|
||||
_UNICODE \
|
||||
_GNU_SOURCE \
|
||||
FINAL=
|
||||
EXPAND_AS_DEFINED =
|
||||
SKIP_FUNCTION_MACROS = YES
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration::additions related to external references
|
||||
# Configuration options related to external references
|
||||
#---------------------------------------------------------------------------
|
||||
TAGFILES =
|
||||
GENERATE_TAGFILE = objs/openttd.tag
|
||||
ALLEXTERNALS = NO
|
||||
EXTERNAL_GROUPS = YES
|
||||
EXTERNAL_PAGES = YES
|
||||
PERL_PATH = /usr/bin/perl
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the dot tool
|
||||
#---------------------------------------------------------------------------
|
||||
CLASS_DIAGRAMS = YES
|
||||
MSCGEN_PATH =
|
||||
DIA_PATH =
|
||||
HIDE_UNDOC_RELATIONS = YES
|
||||
HAVE_DOT = NO
|
||||
DOT_NUM_THREADS = 0
|
||||
DOT_FONTNAME = Helvetica
|
||||
DOT_FONTSIZE = 10
|
||||
DOT_FONTPATH =
|
||||
CLASS_GRAPH = YES
|
||||
COLLABORATION_GRAPH = YES
|
||||
GROUP_GRAPHS = YES
|
||||
UML_LOOK = NO
|
||||
UML_LIMIT_NUM_FIELDS = 10
|
||||
TEMPLATE_RELATIONS = NO
|
||||
INCLUDE_GRAPH = YES
|
||||
INCLUDED_BY_GRAPH = YES
|
||||
CALL_GRAPH = NO
|
||||
CALLER_GRAPH = NO
|
||||
GRAPHICAL_HIERARCHY = YES
|
||||
DIRECTORY_GRAPH = YES
|
||||
DOT_IMAGE_FORMAT = png
|
||||
INTERACTIVE_SVG = NO
|
||||
DOT_PATH =
|
||||
DOTFILE_DIRS =
|
||||
MSCFILE_DIRS =
|
||||
DIAFILE_DIRS =
|
||||
PLANTUML_JAR_PATH =
|
||||
PLANTUML_CFG_FILE =
|
||||
PLANTUML_INCLUDE_PATH =
|
||||
DOT_GRAPH_MAX_NODES = 50
|
||||
MAX_DOT_GRAPH_DEPTH = 1000
|
||||
DOT_TRANSPARENT = NO
|
||||
DOT_MULTI_TARGETS = NO
|
||||
GENERATE_LEGEND = YES
|
||||
DOT_CLEANUP = YES
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration::additions related to the search engine
|
||||
#---------------------------------------------------------------------------
|
||||
SEARCHENGINE = NO
|
||||
|
@@ -12,15 +12,15 @@
|
||||
# The revision is needed for the bundle name and creating an OSX application bundle.
|
||||
# Detect the revision
|
||||
VERSIONS := $(shell AWK="$(AWK)" "$(ROOT_DIR)/findversion.sh")
|
||||
REV := $(shell echo "$(VERSIONS)" | cut -f 1 -d' ')
|
||||
VERSION := $(shell echo "$(VERSIONS)" | cut -f 1 -d' ')
|
||||
|
||||
# Make sure we have something in REV
|
||||
ifeq ($(REV),)
|
||||
REV := norev000
|
||||
# Make sure we have something in VERSION
|
||||
ifeq ($(VERSION),)
|
||||
VERSION := norev000
|
||||
endif
|
||||
|
||||
ifndef BUNDLE_NAME
|
||||
BUNDLE_NAME = openttd-custom-$(REV)-$(OS)
|
||||
BUNDLE_NAME = openttd-custom-$(VERSION)-$(OS)
|
||||
endif
|
||||
|
||||
# An OSX application bundle needs the data files, lang files and openttd executable in a different location.
|
||||
@@ -54,7 +54,7 @@ ifdef OSXAPP
|
||||
$(Q)mkdir -p "$(BUNDLE_DIR)/$(OSXAPP)/Contents/Resources"
|
||||
$(Q)echo "APPL????" > "$(BUNDLE_DIR)/$(OSXAPP)/Contents/PkgInfo"
|
||||
$(Q)cp "$(ROOT_DIR)/os/macosx/openttd.icns" "$(BUNDLE_DIR)/$(OSXAPP)/Contents/Resources/openttd.icns"
|
||||
$(Q)$(ROOT_DIR)/os/macosx/plistgen.sh "$(BUNDLE_DIR)/$(OSXAPP)" "$(REV)"
|
||||
$(Q)$(ROOT_DIR)/os/macosx/plistgen.sh "$(BUNDLE_DIR)/$(OSXAPP)" "$(VERSION)"
|
||||
$(Q)cp "$(ROOT_DIR)/os/macosx/splash.png" "$(BASESET_DIR)"
|
||||
endif
|
||||
ifeq ($(OS),UNIX)
|
||||
@@ -69,7 +69,7 @@ endif
|
||||
$(Q)cp "$(BIN_DIR)/baseset/opntitle.dat" "$(BASESET_DIR)/"
|
||||
$(Q)cp "$(BIN_DIR)/baseset/"*.obm "$(BASESET_DIR)/"
|
||||
$(Q)cp "$(BIN_DIR)/lang/"*.lng "$(LANG_DIR)/"
|
||||
$(Q)cp "$(ROOT_DIR)/readme.txt" "$(BUNDLE_DIR)/"
|
||||
$(Q)cp "$(ROOT_DIR)/README.md" "$(BUNDLE_DIR)/"
|
||||
$(Q)cp "$(ROOT_DIR)/COPYING" "$(BUNDLE_DIR)/"
|
||||
$(Q)cp "$(ROOT_DIR)/known-bugs.txt" "$(BUNDLE_DIR)/"
|
||||
$(Q)cp "$(ROOT_DIR)/docs/multiplayer.txt" "$(BUNDLE_DIR)/docs/"
|
||||
@@ -84,11 +84,11 @@ endif
|
||||
$(Q)cp "$(BIN_DIR)/scripts/"* "$(BUNDLE_DIR)/scripts/"
|
||||
ifdef MENU_DIR
|
||||
$(Q)cp "$(ROOT_DIR)/media/openttd.desktop" "$(BUNDLE_DIR)/media/"
|
||||
$(Q)$(AWK) -f "$(ROOT_DIR)/media/openttd.desktop.translation.awk" "$(SRC_DIR)/lang/"*.txt | $(SORT) | $(AWK) -f "$(ROOT_DIR)/media/openttd.desktop.filter.awk" >> "$(BUNDLE_DIR)/media/openttd.desktop"
|
||||
$(Q)$(AWK) -f "$(ROOT_DIR)/media/openttd.desktop.translation.awk" "$(SRC_DIR)/lang/"*.txt | LC_ALL=C $(SORT) | $(AWK) -f "$(ROOT_DIR)/media/openttd.desktop.filter.awk" >> "$(BUNDLE_DIR)/media/openttd.desktop"
|
||||
$(Q)sed s/=openttd/=$(BINARY_NAME)/g "$(BUNDLE_DIR)/media/openttd.desktop" > "$(ROOT_DIR)/media/openttd.desktop.install"
|
||||
endif
|
||||
ifeq ($(TTD), openttd.exe)
|
||||
$(Q)unix2dos "$(BUNDLE_DIR)/docs/"* "$(BUNDLE_DIR)/readme.txt" "$(BUNDLE_DIR)/COPYING" "$(BUNDLE_DIR)/changelog.txt" "$(BUNDLE_DIR)/known-bugs.txt"
|
||||
$(Q)unix2dos "$(BUNDLE_DIR)/docs/"* "$(BUNDLE_DIR)/README.md" "$(BUNDLE_DIR)/COPYING" "$(BUNDLE_DIR)/changelog.txt" "$(BUNDLE_DIR)/known-bugs.txt"
|
||||
ifeq ($(OS), DOS)
|
||||
$(Q)cp "$(ROOT_DIR)/os/dos/cwsdpmi/cwsdpmi.txt" "$(BUNDLE_DIR)/docs/"
|
||||
ifndef STRIP
|
||||
@@ -151,15 +151,15 @@ bundle_lha: bundle
|
||||
|
||||
bundle_dmg: bundle
|
||||
@echo '[BUNDLE] Creating $(BUNDLE_NAME).dmg'
|
||||
$(Q)mkdir -p "$(BUNDLES_DIR)/OpenTTD $(REV)"
|
||||
$(Q)cp -R "$(BUNDLE_DIR)/" "$(BUNDLES_DIR)/OpenTTD $(REV)"
|
||||
$(Q)hdiutil create -ov -format UDZO -srcfolder "$(BUNDLES_DIR)/OpenTTD $(REV)" "$(BUNDLES_DIR)/$(BUNDLE_NAME).dmg"
|
||||
$(Q)rm -fr "$(BUNDLES_DIR)/OpenTTD $(REV)"
|
||||
$(Q)mkdir -p "$(BUNDLES_DIR)/OpenTTD $(VERSION)"
|
||||
$(Q)cp -R "$(BUNDLE_DIR)/" "$(BUNDLES_DIR)/OpenTTD $(VERSION)"
|
||||
$(Q)hdiutil create -ov -format UDZO -srcfolder "$(BUNDLES_DIR)/OpenTTD $(VERSION)" "$(BUNDLES_DIR)/$(BUNDLE_NAME).dmg"
|
||||
$(Q)rm -fr "$(BUNDLES_DIR)/OpenTTD $(VERSION)"
|
||||
|
||||
bundle_exe: all
|
||||
@echo '[BUNDLE] Creating $(BUNDLE_NAME).exe'
|
||||
$(Q)mkdir -p "$(BUNDLES_DIR)"
|
||||
$(Q)unix2dos "$(ROOT_DIR)/docs/"*.txt "$(ROOT_DIR)/readme.txt" "$(ROOT_DIR)/COPYING" "$(ROOT_DIR)/changelog.txt" "$(ROOT_DIR)/known-bugs.txt"
|
||||
$(Q)unix2dos "$(ROOT_DIR)/docs/"*.txt "$(ROOT_DIR)/README.md" "$(ROOT_DIR)/COPYING" "$(ROOT_DIR)/changelog.txt" "$(ROOT_DIR)/known-bugs.txt"
|
||||
$(Q)cd $(ROOT_DIR)/os/windows/installer && makensis.exe //DVERSION_INCLUDE=version_$(PLATFORM).txt install.nsi
|
||||
$(Q)mv $(ROOT_DIR)/os/windows/installer/*$(PLATFORM).exe "$(BUNDLES_DIR)/$(BUNDLE_NAME).exe"
|
||||
|
||||
@@ -188,7 +188,7 @@ endif
|
||||
$(Q)install -m 644 "$(BUNDLE_DIR)/scripts/"* "$(INSTALL_DATA_DIR)/scripts"
|
||||
ifndef DO_NOT_INSTALL_DOCS
|
||||
$(Q)install -d "$(INSTALL_DOC_DIR)"
|
||||
$(Q)install -m 644 "$(BUNDLE_DIR)/docs/"* "$(BUNDLE_DIR)/readme.txt" "$(BUNDLE_DIR)/known-bugs.txt" "$(INSTALL_DOC_DIR)"
|
||||
$(Q)install -m 644 "$(BUNDLE_DIR)/docs/"* "$(BUNDLE_DIR)/README.md" "$(BUNDLE_DIR)/known-bugs.txt" "$(INSTALL_DOC_DIR)"
|
||||
endif
|
||||
ifndef DO_NOT_INSTALL_CHANGELOG
|
||||
$(Q)install -d "$(INSTALL_DOC_DIR)"
|
||||
|
@@ -42,24 +42,31 @@ MD5SUM := $(shell [ "$(OS)" = "OSX" ] && echo "md5 -r" || echo "md5sum")
|
||||
NFO_FILES := $(GRF_DIR)/*.nfo $(GRF_DIR)/rivers/*.nfo
|
||||
PNG_FILES := $(GRF_DIR)/*.png $(GRF_DIR)/rivers/*.png
|
||||
|
||||
# Build the GRF.
|
||||
ifdef GRFCODEC
|
||||
all: $(BIN_DIR)/openttd.grf $(BIN_DIR)/orig_dos.obg $(BIN_DIR)/orig_dos_de.obg $(BIN_DIR)/orig_win.obg $(BIN_DIR)/orig_dos.obs $(BIN_DIR)/orig_win.obs $(BIN_DIR)/no_sound.obs $(BIN_DIR)/orig_win.obm $(BIN_DIR)/no_music.obm
|
||||
else
|
||||
all:
|
||||
endif
|
||||
# List of target files.
|
||||
OBT_FILES := $(BIN_DIR)/orig_dos.obg
|
||||
OBT_FILES += $(BIN_DIR)/orig_dos_de.obg
|
||||
OBT_FILES += $(BIN_DIR)/orig_win.obg
|
||||
OBT_FILES += $(BIN_DIR)/orig_dos.obs
|
||||
OBT_FILES += $(BIN_DIR)/orig_win.obs
|
||||
OBT_FILES += $(BIN_DIR)/no_sound.obs
|
||||
OBT_FILES += $(BIN_DIR)/orig_dos.obm
|
||||
OBT_FILES += $(BIN_DIR)/orig_win.obm
|
||||
OBT_FILES += $(BIN_DIR)/no_music.obm
|
||||
OBT_FILES += $(BIN_DIR)/orig_tto.obm
|
||||
|
||||
# Make sure the sprites directory exists.
|
||||
$(OBJS_DIR)/sprites:
|
||||
$(Q)-mkdir "$@"
|
||||
# Build the GRF.
|
||||
all: $(OBT_FILES)
|
||||
ifdef GRFCODEC
|
||||
all: $(BIN_DIR)/openttd.grf $(BIN_DIR)/orig_extra.grf
|
||||
endif
|
||||
|
||||
$(OBJS_DIR)/langfiles.tmp: $(LANG_DIR)/*.txt
|
||||
$(E) '$(STAGE) Collecting baseset translations'
|
||||
$(Q) cat $^ > $@
|
||||
|
||||
$(BIN_DIR)/%.obg: $(BASESET_DIR)/%.obg $(BIN_DIR)/openttd.grf $(OBJS_DIR)/langfiles.tmp $(BASESET_DIR)/translations.awk
|
||||
$(BIN_DIR)/%.obg: $(BASESET_DIR)/%.obg $(BIN_DIR)/orig_extra.grf $(OBJS_DIR)/langfiles.tmp $(BASESET_DIR)/translations.awk
|
||||
$(E) '$(STAGE) Updating $(notdir $@)'
|
||||
$(Q) sed 's/^OPENTTD.GRF = *[0-9a-f]*$$/OPENTTD.GRF = '`$(MD5SUM) $(BIN_DIR)/openttd.grf | sed 's@ .*@@'`'/' $< > $@.tmp
|
||||
$(Q) sed 's/^ORIG_EXTRA.GRF = *[0-9a-f]*$$/ORIG_EXTRA.GRF = '`$(MD5SUM) $(BIN_DIR)/orig_extra.grf | sed 's@ .*@@'`'/' $< > $@.tmp
|
||||
$(Q) awk -v langfiles='$(OBJS_DIR)/langfiles.tmp' -f $(BASESET_DIR)/translations.awk $@.tmp >$@
|
||||
$(Q) rm $@.tmp
|
||||
|
||||
@@ -71,9 +78,14 @@ $(BIN_DIR)/%.obm: $(BASESET_DIR)/%.obm $(OBJS_DIR)/langfiles.tmp $(BASESET_DIR)/
|
||||
$(E) '$(STAGE) Updating $(notdir $@)'
|
||||
$(Q) awk -v langfiles='$(OBJS_DIR)/langfiles.tmp' -f $(BASESET_DIR)/translations.awk $< >$@
|
||||
|
||||
# Guard against trying to run GRFCODEC/NFORENUM without either being set.
|
||||
ifdef GRFCODEC
|
||||
ifdef NFORENUM
|
||||
|
||||
# Compile extra grf
|
||||
$(BIN_DIR)/openttd.grf: $(PNG_FILES) $(NFO_FILES) $(OBJS_DIR)/sprites $(GRF_DIR)/assemble_nfo.awk
|
||||
$(BIN_DIR)/openttd.grf: $(PNG_FILES) $(NFO_FILES) $(GRF_DIR)/assemble_nfo.awk
|
||||
$(E) '$(STAGE) Assembling openttd.nfo'
|
||||
$(Q)-mkdir -p $(OBJS_DIR)/sprites
|
||||
$(Q)-cp $(PNG_FILES) $(OBJS_DIR)/sprites 2> /dev/null
|
||||
$(Q) awk -f $(GRF_DIR)/assemble_nfo.awk $(GRF_DIR)/openttd.nfo > $(OBJS_DIR)/sprites/openttd.nfo
|
||||
$(Q) $(NFORENUM) -s $(OBJS_DIR)/sprites/openttd.nfo
|
||||
@@ -81,9 +93,23 @@ $(BIN_DIR)/openttd.grf: $(PNG_FILES) $(NFO_FILES) $(OBJS_DIR)/sprites $(GRF_DIR)
|
||||
$(Q) $(GRFCODEC) -n -s -e -p1 $(OBJS_DIR)/openttd.grf
|
||||
$(Q)cp $(OBJS_DIR)/openttd.grf $(BIN_DIR)/openttd.grf
|
||||
|
||||
# The copy operation of PNG_FILES is duplicated from the target 'openttd.grf', thus those targets may not run in parallel.
|
||||
$(BIN_DIR)/orig_extra.grf: $(PNG_FILES) $(NFO_FILES) $(GRF_DIR)/assemble_nfo.awk | $(BIN_DIR)/openttd.grf
|
||||
$(E) '$(STAGE) Assembling orig_extra.nfo'
|
||||
$(Q)-mkdir -p $(OBJS_DIR)/sprites
|
||||
$(Q)-cp $(PNG_FILES) $(OBJS_DIR)/sprites 2> /dev/null
|
||||
$(Q) awk -f $(GRF_DIR)/assemble_nfo.awk $(GRF_DIR)/orig_extra.nfo > $(OBJS_DIR)/sprites/orig_extra.nfo
|
||||
$(Q) $(NFORENUM) -s $(OBJS_DIR)/sprites/orig_extra.nfo
|
||||
$(E) '$(STAGE) Compiling orig_extra.grf'
|
||||
$(Q) $(GRFCODEC) -n -s -e -p1 $(OBJS_DIR)/orig_extra.grf
|
||||
$(Q)cp $(OBJS_DIR)/orig_extra.grf $(BIN_DIR)/orig_extra.grf
|
||||
|
||||
endif
|
||||
endif
|
||||
|
||||
# Clean up temporary files.
|
||||
clean:
|
||||
$(Q)rm -f *.bak *.grf
|
||||
$(Q)rm -f *.bak *.grf $(OBT_FILES)
|
||||
|
||||
# Clean up temporary files
|
||||
mrproper: clean
|
||||
|
@@ -152,7 +152,7 @@ mrproper:
|
||||
distclean: mrproper
|
||||
|
||||
maintainer-clean: distclean
|
||||
$(Q)rm -f $(BIN_DIR)/baseset/openttd.grf $(BIN_DIR)/baseset/*.obg $(BIN_DIR)/baseset/*.obs $(BIN_DIR)/baseset/*.obm
|
||||
$(Q)rm -f $(BIN_DIR)/baseset/openttd.grf $(BIN_DIR)/baseset/orig_extra.grf $(BIN_DIR)/baseset/*.obg $(BIN_DIR)/baseset/*.obs $(BIN_DIR)/baseset/*.obm
|
||||
|
||||
depend:
|
||||
@for dir in $(SRC_DIRS); do \
|
||||
|
@@ -6,7 +6,6 @@
|
||||
# See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
STRGEN = !!STRGEN!!
|
||||
ENDIAN_CHECK = !!ENDIAN_CHECK!!
|
||||
SRC_DIR = !!SRC_DIR!!
|
||||
LANG_DIR = !!LANG_DIR!!
|
||||
BIN_DIR = !!BIN_DIR!!
|
||||
@@ -25,11 +24,6 @@ ifeq ($(LANG_SUPPRESS), yes)
|
||||
LANG_ERRORS = >/dev/null 2>&1
|
||||
endif
|
||||
|
||||
# Make sure endian_host.h is reachable as if it was in the src/ dir
|
||||
CFLAGS_BUILD += -I $(LANG_OBJS_DIR)
|
||||
|
||||
ENDIAN_TARGETS := endian_host.h endian_target.h $(ENDIAN_CHECK)
|
||||
|
||||
# Check if we want to show what we are doing
|
||||
ifdef VERBOSE
|
||||
Q =
|
||||
@@ -43,19 +37,19 @@ RES := $(shell mkdir -p $(BIN_DIR)/lang )
|
||||
|
||||
all: table/strings.h $(LANGS)
|
||||
|
||||
strgen_base.o: $(SRC_DIR)/strgen/strgen_base.cpp $(SRC_DIR)/strgen/strgen.h endian_host.h $(SRC_DIR)/table/control_codes.h $(SRC_DIR)/table/strgen_tables.h $(SRC_DIR)/safeguards.h
|
||||
strgen_base.o: $(SRC_DIR)/strgen/strgen_base.cpp $(SRC_DIR)/strgen/strgen.h $(SRC_DIR)/table/control_codes.h $(SRC_DIR)/table/strgen_tables.h $(SRC_DIR)/safeguards.h
|
||||
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
|
||||
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSTRGEN -c -o $@ $<
|
||||
|
||||
strgen.o: $(SRC_DIR)/strgen/strgen.cpp $(SRC_DIR)/strgen/strgen.h endian_host.h $(SRC_DIR)/table/control_codes.h $(SRC_DIR)/table/strgen_tables.h $(SRC_DIR)/safeguards.h
|
||||
strgen.o: $(SRC_DIR)/strgen/strgen.cpp $(SRC_DIR)/strgen/strgen.h $(SRC_DIR)/table/control_codes.h $(SRC_DIR)/table/strgen_tables.h $(SRC_DIR)/safeguards.h
|
||||
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
|
||||
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSTRGEN -c -o $@ $<
|
||||
|
||||
string.o: $(SRC_DIR)/string.cpp endian_host.h $(SRC_DIR)/safeguards.h
|
||||
string.o: $(SRC_DIR)/string.cpp $(SRC_DIR)/safeguards.h
|
||||
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
|
||||
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSTRGEN -c -o $@ $<
|
||||
|
||||
alloc_func.o: $(SRC_DIR)/core/alloc_func.cpp endian_host.h $(SRC_DIR)/safeguards.h
|
||||
alloc_func.o: $(SRC_DIR)/core/alloc_func.cpp $(SRC_DIR)/safeguards.h
|
||||
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
|
||||
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSTRGEN -c -o $@ $<
|
||||
|
||||
@@ -80,21 +74,11 @@ $(LANGS): %.lng: $(LANG_DIR)/%.txt $(STRGEN) lang/english.txt
|
||||
$(E) '$(STAGE) Compiling language $(*F)'
|
||||
$(Q)./$(STRGEN) $(STRGEN_FLAGS) -s $(LANG_DIR) -d $(LANG_OBJS_DIR) $< $(LANG_ERRORS) && cp $@ $(BIN_DIR)/lang || true # Do not fail all languages when one fails
|
||||
|
||||
# The targets to compile the endian-code
|
||||
|
||||
endian_host.h: $(ENDIAN_CHECK)
|
||||
$(E) '$(STAGE) Testing endianness for host'
|
||||
$(Q)./$(ENDIAN_CHECK) > $@
|
||||
|
||||
$(ENDIAN_CHECK): $(SRC_DIR)/endian_check.cpp
|
||||
$(E) '$(STAGE) Compiling and Linking $@'
|
||||
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) $(LDFLAGS_BUILD) $< -o $@
|
||||
|
||||
depend:
|
||||
|
||||
clean:
|
||||
$(E) '$(STAGE) Cleaning up language files'
|
||||
$(Q)rm -f strgen.o string.o alloc_func.o getoptdata.o table/strings.h $(STRGEN) $(LANGS) $(LANGS:%=$(BIN_DIR)/lang/%) lang/english.* $(ENDIAN_TARGETS)
|
||||
$(Q)rm -f strgen_base.o strgen.o string.o alloc_func.o getoptdata.o table/strings.h $(STRGEN) $(LANGS) $(LANGS:%=$(BIN_DIR)/lang/%) lang/english.*
|
||||
|
||||
mrproper: clean
|
||||
$(Q)rm -rf $(BIN_DIR)/lang
|
||||
|
@@ -6,7 +6,6 @@
|
||||
# See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
SETTINGSGEN = !!SETTINGSGEN!!
|
||||
ENDIAN_CHECK = !!ENDIAN_CHECK!!
|
||||
SRC_DIR = !!SRC_DIR!!
|
||||
CXX_BUILD = !!CXX_BUILD!!
|
||||
CFLAGS_BUILD = !!CFLAGS_BUILD!!
|
||||
@@ -15,8 +14,6 @@ LDFLAGS_BUILD = !!LDFLAGS_BUILD!!
|
||||
STAGE = !!STAGE!!
|
||||
SETTING_OBJS_DIR = !!SETTING_OBJS_DIR!!
|
||||
|
||||
ENDIAN_TARGETS := endian_host.h endian_target.h $(ENDIAN_CHECK)
|
||||
|
||||
# Check if we want to show what we are doing
|
||||
ifdef VERBOSE
|
||||
Q =
|
||||
@@ -32,7 +29,7 @@ settingsgen.o: $(SRC_DIR)/settingsgen/settingsgen.cpp $(SRC_DIR)/string_func.h $
|
||||
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
|
||||
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSETTINGSGEN -c -o $@ $<
|
||||
|
||||
alloc_func.o: $(SRC_DIR)/core/alloc_func.cpp endian_host.h $(SRC_DIR)/safeguards.h
|
||||
alloc_func.o: $(SRC_DIR)/core/alloc_func.cpp $(SRC_DIR)/safeguards.h
|
||||
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
|
||||
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSETTINGSGEN -c -o $@ $<
|
||||
|
||||
@@ -40,7 +37,7 @@ getoptdata.o: $(SRC_DIR)/misc/getoptdata.cpp $(SRC_DIR)/misc/getoptdata.h $(SRC_
|
||||
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/misc/%.cpp=%.cpp)'
|
||||
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSETTINGSGEN -c -o $@ $<
|
||||
|
||||
string.o: $(SRC_DIR)/string.cpp endian_host.h $(SRC_DIR)/safeguards.h
|
||||
string.o: $(SRC_DIR)/string.cpp $(SRC_DIR)/safeguards.h
|
||||
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
|
||||
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSETTINGSGEN -c -o $@ $<
|
||||
|
||||
@@ -57,21 +54,11 @@ table/settings.h: $(SETTINGSGEN) $(SRC_DIR)/table/settings.h.preamble $(SRC_DIR)
|
||||
@mkdir -p table
|
||||
$(Q)./$(SETTINGSGEN) -o table/settings.h -b $(SRC_DIR)/table/settings.h.preamble -a $(SRC_DIR)/table/settings.h.postamble $(SRC_DIR)/table/*.ini
|
||||
|
||||
# The targets to compile the endian-code
|
||||
|
||||
endian_host.h: $(ENDIAN_CHECK)
|
||||
$(E) '$(STAGE) Testing endianness for host'
|
||||
$(Q)./$(ENDIAN_CHECK) > $@
|
||||
|
||||
$(ENDIAN_CHECK): $(SRC_DIR)/endian_check.cpp
|
||||
$(E) '$(STAGE) Compiling and Linking $@'
|
||||
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) $(LDFLAGS_BUILD) $< -o $@
|
||||
|
||||
depend:
|
||||
|
||||
clean:
|
||||
$(E) '$(STAGE) Cleaning up settings files'
|
||||
$(Q)rm -f settingsgen.o alloc_func.o getoptdata.o ini_load.o $(SETTINGSGEN) $(ENDIAN_TARGETS) table/settings.h
|
||||
$(Q)rm -f settingsgen.o alloc_func.o getoptdata.o string.o ini_load.o $(SETTINGSGEN) table/settings.h
|
||||
|
||||
mrproper: clean
|
||||
|
||||
|
@@ -29,9 +29,7 @@ SCRIPT_SRC_DIR = !!SCRIPT_SRC_DIR!!
|
||||
MEDIA_DIR = !!MEDIA_DIR!!
|
||||
TTD = !!TTD!!
|
||||
STRGEN = !!STRGEN!!
|
||||
ENDIAN_CHECK = !!ENDIAN_CHECK!!
|
||||
DEPEND = !!DEPEND!!
|
||||
ENDIAN_FORCE = !!ENDIAN_FORCE!!
|
||||
OS = !!OS!!
|
||||
STAGE = !!STAGE!!
|
||||
MAKEDEPEND = !!MAKEDEPEND!!
|
||||
@@ -40,7 +38,6 @@ SORT = !!SORT!!
|
||||
AWK = !!AWK!!
|
||||
CONFIG_CACHE_COMPILER = $(SRC_OBJS_DIR)/!!CONFIG_CACHE_COMPILER!!
|
||||
CONFIG_CACHE_LINKER = $(SRC_OBJS_DIR)/!!CONFIG_CACHE_LINKER!!
|
||||
CONFIG_CACHE_ENDIAN = $(SRC_OBJS_DIR)/!!CONFIG_CACHE_ENDIAN!!
|
||||
CONFIG_CACHE_SOURCE = $(SRC_OBJS_DIR)/!!CONFIG_CACHE_SOURCE!!
|
||||
CONFIG_CACHE_VERSION = $(SRC_OBJS_DIR)/!!CONFIG_CACHE_VERSION!!
|
||||
|
||||
@@ -52,19 +49,16 @@ OBJS := $(OBJS_C) $(OBJS_CPP) $(OBJS_MM) $(OBJS_RC)
|
||||
SRCS := !!SRCS!!
|
||||
|
||||
# All C-files depend on those 3 files
|
||||
FILE_DEP := $(CONFIG_CACHE_COMPILER) endian_target.h
|
||||
FILE_DEP := $(CONFIG_CACHE_COMPILER)
|
||||
# Create all dirs and subdirs
|
||||
RES := $(shell mkdir -p $(BIN_DIR) $(sort $(dir $(OBJS))))
|
||||
|
||||
# Make sure endian_target.h is reasable as if it was in the src/ dir
|
||||
CFLAGS += -I $(SRC_OBJS_DIR) -I $(LANG_OBJS_DIR) -I $(SETTING_OBJS_DIR)
|
||||
CFLAGS_MAKEDEP += -I $(SRC_OBJS_DIR) -I $(LANG_OBJS_DIR) -I $(SETTING_OBJS_DIR)
|
||||
ifdef SCRIPT_SRC_DIR
|
||||
CFLAGS_MAKEDEP += -I $(SCRIPT_SRC_DIR)
|
||||
endif
|
||||
|
||||
ENDIAN_TARGETS := endian_target.h $(ENDIAN_CHECK)
|
||||
|
||||
# Check if we want to show what we are doing
|
||||
ifdef VERBOSE
|
||||
Q =
|
||||
@@ -94,26 +88,28 @@ VERSIONS := $(shell AWK="$(AWK)" "$(ROOT_DIR)/findversion.sh")
|
||||
MODIFIED := $(shell echo "$(VERSIONS)" | cut -f 3 -d' ')
|
||||
|
||||
# Use autodetected revisions
|
||||
REV := $(shell echo "$(VERSIONS)" | cut -f 1 -d' ')
|
||||
REV_NR := $(shell echo "$(VERSIONS)" | cut -f 2 -d' ')
|
||||
VERSION := $(shell echo "$(VERSIONS)" | cut -f 1 -d' ')
|
||||
ISODATE := $(shell echo "$(VERSIONS)" | cut -f 2 -d' ')
|
||||
GITHASH := $(shell echo "$(VERSIONS)" | cut -f 4 -d' ')
|
||||
ISTAG := $(shell echo "$(VERSIONS)" | cut -f 5 -d' ')
|
||||
ISSTABLETAG := $(shell echo "$(VERSIONS)" | cut -f 6 -d' ')
|
||||
|
||||
# Make sure we have something in REV and REV_NR
|
||||
ifeq ($(REV),)
|
||||
REV := norev000
|
||||
# Make sure we have something in VERSION and ISODATE
|
||||
ifeq ($(VERSION),)
|
||||
VERSION := norev000
|
||||
endif
|
||||
ifeq ($(REV_NR),)
|
||||
REV_NR := 0
|
||||
ifeq ($(ISODATE),)
|
||||
ISODATE := 00000000
|
||||
endif
|
||||
|
||||
# This helps to recompile if flags change
|
||||
RES := $(shell if [ "`cat $(CONFIG_CACHE_COMPILER) 2>/dev/null`" != "$(CFLAGS) $(CXXFLAGS)" ]; then echo "$(CFLAGS) $(CXXFLAGS)" > $(CONFIG_CACHE_COMPILER); fi )
|
||||
RES := $(shell if [ "`cat $(CONFIG_CACHE_LINKER) 2>/dev/null`" != "$(LDFLAGS) $(LIBS)" ]; then echo "$(LDFLAGS) $(LIBS)" > $(CONFIG_CACHE_LINKER); fi )
|
||||
RES := $(shell if [ "`cat $(CONFIG_CACHE_ENDIAN) 2>/dev/null`" != "$(ENDIAN_FORCE)" ]; then echo "$(ENDIAN_FORCE)" > $(CONFIG_CACHE_ENDIAN); fi )
|
||||
|
||||
# If there is a change in the source-file-list, make sure we recheck the deps
|
||||
RES := $(shell if [ "`cat $(CONFIG_CACHE_SOURCE) 2>/dev/null`" != "$(SRCS)" ]; then echo "$(SRCS)" > $(CONFIG_CACHE_SOURCE); fi )
|
||||
# If there is a change in the revision, make sure we recompile rev.cpp
|
||||
RES := $(shell if [ "`cat $(CONFIG_CACHE_VERSION) 2>/dev/null`" != "$(REV) $(MODIFIED)" ]; then echo "$(REV) $(MODIFIED)" > $(CONFIG_CACHE_VERSION); fi )
|
||||
RES := $(shell if [ "`cat $(CONFIG_CACHE_VERSION) 2>/dev/null`" != "$(VERSION) $(MODIFIED)" ]; then echo "$(VERSION) $(MODIFIED)" > $(CONFIG_CACHE_VERSION); fi )
|
||||
|
||||
ifndef MAKEDEPEND
|
||||
# The slow, but always correct, dep-check
|
||||
@@ -121,7 +117,7 @@ DEP_MASK := %.d
|
||||
DEPS := $(OBJS:%.o=%.d)
|
||||
|
||||
# Only include the deps if we are compiling everything
|
||||
ifeq ($(filter $(ENDIAN_TARGETS) %.o clean mrproper, $(MAKECMDGOALS)),)
|
||||
ifeq ($(filter %.o clean mrproper, $(MAKECMDGOALS)),)
|
||||
-include $(DEPS)
|
||||
else
|
||||
# In case we want to compile a single target, include the .d file for it
|
||||
@@ -155,7 +151,7 @@ DEP_MASK :=
|
||||
DEPS := Makefile.dep
|
||||
|
||||
# Only include the deps if we are not cleaning
|
||||
ifeq ($(filter $(ENDIAN_TARGETS) depend clean mrproper, $(MAKECMDGOALS)),)
|
||||
ifeq ($(filter depend clean mrproper, $(MAKECMDGOALS)),)
|
||||
-include Makefile.dep
|
||||
endif
|
||||
|
||||
@@ -166,6 +162,19 @@ $(SRC_OBJS_DIR)/$(DEPEND): $(SRC_DIR)/depend/depend.cpp
|
||||
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) $(LDFLAGS_BUILD) -o $@ $<
|
||||
endif
|
||||
|
||||
# Macro for invoking a command on groups of 100 words at a time
|
||||
# (analogous to xargs(1)). The macro invokes itself recursively
|
||||
# until the list of words is depleted.
|
||||
#
|
||||
# Usage: $(call xargs,COMMAND,LIST)
|
||||
#
|
||||
# COMMAND should be a shell command to which the words will be
|
||||
# appended as arguments in groups of 100.
|
||||
define xargs
|
||||
$(1) $(wordlist 1,100,$(2))
|
||||
$(if $(word 101,$(2)),$(call xargs,$(1),$(wordlist 101,$(words $(2)),$(2))))
|
||||
endef
|
||||
|
||||
# Make sure that only 'make depend' ALWAYS triggers a recheck
|
||||
ifeq ($(filter depend, $(MAKECMDGOALS)),)
|
||||
Makefile.dep: $(FILE_DEP) $(SRCS:%=$(SRC_DIR)/%) $(CONFIG_CACHE_SOURCE) $(DEP)
|
||||
@@ -177,14 +186,7 @@ endif
|
||||
$(Q)touch Makefile.dep.tmp
|
||||
|
||||
# Calculate the deps via makedepend
|
||||
$(Q)$(MAKEDEPEND) -f$(SRC_OBJS_DIR)/Makefile.dep.tmp -o.o -Y -v -- $(CFLAGS_MAKEDEP) -- $(SRCS:%=$(SRC_DIR)/%) 2>/dev/null
|
||||
|
||||
# Convert x:/... paths to /x/... for mingw
|
||||
ifeq ($(OS), MINGW)
|
||||
@cat Makefile.dep.tmp | sed 's@/\([a-zA-Z]\):\/@\/\1\/@g' > Makefile.dep.tmp.mingw
|
||||
@cp Makefile.dep.tmp.mingw Makefile.dep.tmp
|
||||
@rm -f Makefile.dep.tmp.mingw
|
||||
endif
|
||||
$(call xargs,$(Q)$(MAKEDEPEND) -f$(SRC_OBJS_DIR)/Makefile.dep.tmp -o.o -Y -v -a -- $(CFLAGS_MAKEDEP) -- 2>/dev/null,$(SRCS:%=$(SRC_DIR)/%))
|
||||
|
||||
# Remove all comments and includes that don't start with $(SRC_DIR)
|
||||
# Remove $(SRC_DIR) from object-file-name
|
||||
@@ -210,7 +212,7 @@ endif
|
||||
{ \
|
||||
print $$0 \
|
||||
} \
|
||||
' < Makefile.dep.tmp | sed 's@ *@ @g;s@ $$@@' | $(SORT) > Makefile.dep
|
||||
' < Makefile.dep.tmp | sed 's@ *@ @g;s@ $$@@' | LC_ALL=C $(SORT) > Makefile.dep
|
||||
|
||||
$(Q)rm -f Makefile.dep.tmp Makefile.dep.tmp.bak
|
||||
|
||||
@@ -251,7 +253,7 @@ $(OBJS_MM): %.o: $(SRC_DIR)/%.mm $(DEP_MASK) $(FILE_DEP)
|
||||
|
||||
$(OBJS_RC): %.o: $(SRC_DIR)/%.rc $(FILE_DEP)
|
||||
$(E) '$(STAGE) Compiling resource $(<:$(SRC_DIR)/%.rc=%.rc)'
|
||||
$(Q)$(WINDRES) -o $@ -I `basename $<` $<
|
||||
$(Q)$(WINDRES) -o $@ $<
|
||||
|
||||
$(BIN_DIR)/$(TTD): $(TTD)
|
||||
$(Q)cp $(TTD) $(BIN_DIR)/$(TTD)
|
||||
@@ -264,14 +266,7 @@ endif
|
||||
|
||||
$(TTD): $(OBJS) $(CONFIG_CACHE_LINKER)
|
||||
$(E) '$(STAGE) Linking $@'
|
||||
ifeq ($(OS), PSP)
|
||||
# Because of a bug in the PSP GCC tools, linking via CXX results
|
||||
# in total chaos and more problems then you can handle. So we need
|
||||
# CC to link OpenTTD for PSP
|
||||
$(Q)+$(CC_HOST) $(LDFLAGS) $(OBJS) $(LIBS) -o $@
|
||||
else
|
||||
$(Q)+$(CXX_HOST) $(LDFLAGS) $(OBJS) $(LIBS) -o $@
|
||||
endif
|
||||
ifdef STRIP
|
||||
$(Q)$(STRIP) $@
|
||||
endif
|
||||
@@ -280,23 +275,13 @@ ifeq ($(OS), DOS)
|
||||
$(Q)$(ROOT_DIR)/os/dos/make_dos_binary_selfcontained.sh $(SRC_OBJS_DIR)/$@
|
||||
endif
|
||||
|
||||
# The targets to compile the endian-code
|
||||
|
||||
endian_target.h: $(ENDIAN_CHECK) $(CONFIG_CACHE_ENDIAN)
|
||||
$(E) '$(STAGE) Testing endianness for target'
|
||||
$(Q)./$(ENDIAN_CHECK) $(ENDIAN_FORCE) > $@
|
||||
|
||||
$(ENDIAN_CHECK): $(SRC_DIR)/endian_check.cpp
|
||||
$(E) '$(STAGE) Compiling and Linking $@'
|
||||
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) $(LDFLAGS_BUILD) $< -o $@
|
||||
|
||||
# Revision files
|
||||
|
||||
$(SRC_DIR)/rev.cpp: $(CONFIG_CACHE_VERSION) $(SRC_DIR)/rev.cpp.in
|
||||
$(Q)cat $(SRC_DIR)/rev.cpp.in | sed "s@\!\!REVISION\!\!@$(REV_NR)@g;s@!!VERSION!!@$(REV)@g;s@!!MODIFIED!!@$(MODIFIED)@g;s@!!DATE!!@`date +%d.%m.%y`@g" > $(SRC_DIR)/rev.cpp
|
||||
$(Q)cat $(SRC_DIR)/rev.cpp.in | sed "s@\!\!ISODATE\!\!@$(ISODATE)@g;s@!!VERSION!!@$(VERSION)@g;s@!!MODIFIED!!@$(MODIFIED)@g;s@!!DATE!!@`date +%d.%m.%y`@g;s@!!GITHASH!!@$(GITHASH)@g;s@!!ISTAG!!@$(ISTAG)@g;s@!!ISSTABLETAG!!@$(ISSTABLETAG)@g" > $(SRC_DIR)/rev.cpp
|
||||
|
||||
$(SRC_DIR)/os/windows/ottdres.rc: $(CONFIG_CACHE_VERSION) $(SRC_DIR)/os/windows/ottdres.rc.in
|
||||
$(Q)cat $(SRC_DIR)/os/windows/ottdres.rc.in | sed "s@\!\!REVISION\!\!@$(REV_NR)@g;s@!!VERSION!!@$(REV)@g;s@!!DATE!!@`date +%d.%m.%y`@g" > $(SRC_DIR)/os/windows/ottdres.rc
|
||||
$(Q)cat $(SRC_DIR)/os/windows/ottdres.rc.in | sed "s@\!\!ISODATE\!\!@$(ISODATE)@g;s@!!VERSION!!@$(VERSION)@g;s@!!DATE!!@`date +%d.%m.%y`@g;s@!!GITHASH!!@$(GITHASH)@g;s@!!ISTAG!!@$(ISTAG)@g;s@!!ISSTABLETAG!!@$(ISSTABLETAG)@g" > $(SRC_DIR)/os/windows/ottdres.rc
|
||||
|
||||
FORCE:
|
||||
|
||||
@@ -304,7 +289,7 @@ depend: $(DEPS)
|
||||
|
||||
clean:
|
||||
$(E) '$(STAGE) Cleaning up object files'
|
||||
$(Q)rm -f $(DEPS) $(OBJS) $(TTD) $(DEPEND) $(TTD:%=$(BIN_DIR)/%) $(BIN_DIR)/baseset/openttd.32.bmp $(CONFIG_CACHE_COMPILER) $(CONFIG_CACHE_LINKER) $(CONFIG_CACHE_ENDIAN) $(CONFIG_CACHE_SOURCE) $(ENDIAN_TARGETS)
|
||||
$(Q)rm -f $(DEPS) $(OBJS) $(TTD) $(DEPEND) $(TTD:%=$(BIN_DIR)/%) $(BIN_DIR)/baseset/openttd.32.bmp $(CONFIG_CACHE_COMPILER) $(CONFIG_CACHE_LINKER) $(CONFIG_CACHE_SOURCE)
|
||||
|
||||
mrproper: clean
|
||||
$(Q)rm -f $(SRC_DIR)/rev.cpp $(SRC_DIR)/os/windows/ottdres.rc
|
||||
|
839
README.md
Normal file
839
README.md
Normal file
@@ -0,0 +1,839 @@
|
||||
# OpenTTD
|
||||
|
||||
## Table of contents
|
||||
|
||||
- 1.0) [About](#10-about)
|
||||
- 2.0) [Contacting](#20-contacting)
|
||||
- 2.1) [Reporting bugs](#21-reporting-bugs)
|
||||
- 2.2) [Reporting desyncs](#22-reporting-desyncs)
|
||||
- 3.0) [Supported platforms](#30-supported-platforms)
|
||||
- 4.0) [Installing and running OpenTTD](#40-installing-and-running-openttd)
|
||||
- 4.1) [(Required) 3rd party files](#41-required-3rd-party-files)
|
||||
- 4.2) [OpenTTD directories](#42-openttd-directories)
|
||||
- 4.3) [Portable installations (portable media)](#43-portable-installations-portable-media)
|
||||
- 4.4) [Files in tar (archives)](#44-files-in-tar-archives)
|
||||
- 5.0) [OpenTTD features](#50-openttd-features)
|
||||
- 5.1) [Logging of potentially dangerous actions](#51-logging-of-potentially-dangerous-actions)
|
||||
- 5.2) [Frame rate and performance metrics](#52-frame-rate-and-performance-metrics)
|
||||
- 6.0) [Configuration file](#60-configuration-file)
|
||||
- 7.0) [Compiling](#70-compiling)
|
||||
- 7.1) [Required/optional libraries](#71-requiredoptional-libraries)
|
||||
- 7.2) [Supported compilers](#72-supported-compilers)
|
||||
- 7.3) [Compilation of base sets](#73-compilation-of-base-sets)
|
||||
- 8.0) [Translating](#80-translating)
|
||||
- 8.1) [Translation](#81-translation)
|
||||
- 8.2) [Previewing](#82-previewing)
|
||||
- 9.0) [Troubleshooting](#90-troubleshooting)
|
||||
- 10.0) [Licensing](#100-licensing)
|
||||
- X.X) [Credits](#xx-credits)
|
||||
|
||||
## 1.0) About
|
||||
|
||||
OpenTTD is a transport simulation game based upon the popular game Transport
|
||||
Tycoon Deluxe, written by Chris Sawyer. It attempts to mimic the original
|
||||
game as closely as possible while extending it with new features.
|
||||
|
||||
OpenTTD is licensed under the GNU General Public License version 2.0,
|
||||
but includes some 3rd party software under different licenses. See the
|
||||
section "Licensing" below for details.
|
||||
|
||||
## 2.0) Contacting
|
||||
|
||||
The easiest way to contact the OpenTTD team is by submitting bug reports or
|
||||
posting comments in our forums. You can also chat with us on IRC (#openttd
|
||||
on irc.oftc.net).
|
||||
|
||||
The OpenTTD homepage is https://www.openttd.org.
|
||||
|
||||
You can also find the OpenTTD forums at
|
||||
[https://www.tt-forums.net](https://www.tt-forums.net/viewforum.php?f=55).
|
||||
|
||||
### 2.1) Reporting bugs
|
||||
|
||||
First of all, check whether the bug is not already known. Do this by looking
|
||||
through the file called 'known-bugs.txt' which is distributed with OpenTTD
|
||||
like this readme.
|
||||
|
||||
For tracking our bugs we are using GitHub's issue tracker. You can find
|
||||
the tracker at https://github.com/OpenTTD/OpenTTD/issues. Before actually
|
||||
reporting take a look through the already reported bugs there to see if
|
||||
the bug is already known. The 'known-bugs.txt' file might be a bit outdated
|
||||
at the moment you are reading it as only bugs known before the release
|
||||
are documented there. Also look through the recently closed bugs.
|
||||
|
||||
When you are sure it is not already reported you should:
|
||||
|
||||
- Make sure you are running a recent version, i.e. run the latest stable or
|
||||
nightly based on where you found the bug.
|
||||
- Make sure you are not running a non-official binary, like a patch pack.
|
||||
When you are playing with a patch pack you should report any bugs to the
|
||||
forum thread related to that patch pack.
|
||||
- Make it reproducible for the developers. In other words, create a savegame
|
||||
in which you can reproduce the issue once loaded. It is very useful to give
|
||||
us the crash.dmp, crash.sav, crash.log and crash screenshot which are
|
||||
created on crashes.
|
||||
- Check whether the bug is already reported on our bug tracker. This includes
|
||||
searching for recently closed bug reports as the bug might already be fixed.
|
||||
|
||||
After you have done all that you can report the bug. Please include the
|
||||
following information in your bug report:
|
||||
|
||||
- OpenTTD version (PLEASE test the latest Git revision/nightly build)
|
||||
- Bug details, including instructions how to reproduce it
|
||||
- Platform (Windows, Linux, FreeBSD, …) and compiler (including version) if
|
||||
you compiled OpenTTD yourself.
|
||||
- The processor architecture of your OS (32-bit Windows, 64-bit Windows,
|
||||
Linux on an ARM, Mac OS X on a PowerPC, etc.)
|
||||
- Attach a saved game **and** a screenshot if possible
|
||||
- If this bug only occurred recently please note the last version without
|
||||
the bug and the first version including the bug. That way we can fix it
|
||||
quicker by looking at the changes made.
|
||||
- Attach crash.dmp, crash.log and crash.sav. These files are usually created
|
||||
next to your openttd.cfg. The crash handler will tell you the location.
|
||||
|
||||
### 2.2) Reporting desyncs
|
||||
|
||||
As desyncs are hard to make reproducible OpenTTD has the ability to log all
|
||||
actions done by clients so we can replay the whole game in an effort to make
|
||||
desyncs better reproducible. You need to turn this ability on. When turned
|
||||
on an automatic savegame will be made once the map has been constructed in
|
||||
the 'save/autosave' directory, see OpenTTD directories to know where to find
|
||||
this directory. Furthermore the log file 'commands-out.log' will be created
|
||||
and all actions will be written to there.
|
||||
|
||||
To enable the desync debugging you need to set the debug level for 'desync'
|
||||
to at least 1. You do this by starting OpenTTD with '`-d desync=<level>`' as
|
||||
parameter or by typing '`debug_level desync=<level>`' in OpenTTD's internal
|
||||
console.
|
||||
The desync debug levels are:
|
||||
|
||||
- 0: nothing.
|
||||
- 1: dumping of commands to 'commands-out.log'.
|
||||
- 2: same as 1 plus checking vehicle caches and dumping that too.
|
||||
- 3: same as 2 plus monthly saves in autosave.
|
||||
- 4 and higher: same as 3
|
||||
|
||||
Restarting OpenTTD will overwrite 'commands-out.log'. OpenTTD will not remove
|
||||
the savegames (dmp_cmds_*.sav) made by the desync debugging system, so you
|
||||
have to occasionally remove them yourself!
|
||||
|
||||
The naming format of the desync savegames is as follows:
|
||||
dmp_cmds_XXXXXXXX_YYYYYYYY.sav. The XXXXXXXX is the hexadecimal representation
|
||||
of the generation seed of the game and YYYYYYYY is the hexadecimal
|
||||
representation of the date of the game. This sorts the savegames by game and
|
||||
then by date making it easier to find the right savegames.
|
||||
|
||||
When a desync has occurred with the desync debugging turned on you should file
|
||||
a bug report with the following files attached:
|
||||
|
||||
- commands-out.log as it contains all the commands that were done
|
||||
- the last saved savegame (search for the last line beginning with
|
||||
'save: dmp_cmds_' in commands-out.log). We use this savegame to check
|
||||
whether we can quickly reproduce the desync. Otherwise we will need …
|
||||
- the first saved savegame (search for the first line beginning with 'save'
|
||||
where the first part, up to the last underscore '_', is the same). We need
|
||||
this savegame to be able to reproduce the bug when the last savegame is not
|
||||
old enough. If you loaded a scenario or savegame you need to attach that.
|
||||
- optionally you can attach the savegames from around 50%, 75%, 85%, 90% and
|
||||
95% of the game's progression. We can use these savegames to speed up the
|
||||
reproduction of the desync, but we should be able to reproduce these
|
||||
savegames based on the first savegame and commands-out.log.
|
||||
- in case you use any NewGRFs you should attach the ones you used unless
|
||||
we can easily find them ourselves via bananas or when they are in the
|
||||
#openttdcoop pack.
|
||||
|
||||
Do NOT remove the dmp_cmds savegames of a desync you have reported until the
|
||||
desync has been fixed; if you, by accident, send us the wrong savegames we
|
||||
will not be able to reproduce the desync and thus will be unable to fix it.
|
||||
|
||||
## 3.0) Supported platforms
|
||||
|
||||
OpenTTD has been ported to several platforms and operating systems. It should
|
||||
not be very difficult to port it to a new platform. The currently working
|
||||
platforms are:
|
||||
|
||||
- BeOS (SDL or Allegro)
|
||||
- DOS (Allegro)
|
||||
- FreeBSD (SDL)
|
||||
- Linux (SDL or Allegro)
|
||||
- macOS (universal) (Cocoa video and sound drivers)
|
||||
- MorphOS (SDL)
|
||||
- OpenBSD (SDL)
|
||||
- OS/2 (SDL)
|
||||
- Windows (Win32 GDI (faster) or SDL or Allegro)
|
||||
|
||||
## 4.0) Installing and running OpenTTD
|
||||
|
||||
Installing OpenTTD is fairly straightforward. Either you have downloaded an
|
||||
archive which you have to extract to a directory where you want OpenTTD to
|
||||
be installed, or you have downloaded an installer, which will automatically
|
||||
extract OpenTTD in the given directory.
|
||||
|
||||
OpenTTD looks in multiple locations to find the required data files (described
|
||||
in section 4.2). Installing any 3rd party files into a 'shared' location has
|
||||
the advantage that you only need to do this step once, rather than copying the
|
||||
data files into all OpenTTD versions you have.
|
||||
|
||||
Savegames, screenshots, etc are saved relative to the config file (openttd.cfg)
|
||||
currently being used. This means that if you use a config file in one of the
|
||||
shared directories, savegames will reside in the save/ directory next to the
|
||||
openttd.cfg file there.
|
||||
|
||||
If you want savegames and screenshots in the directory where the OpenTTD binary
|
||||
resides, simply have your config file in that location. But if you remove this
|
||||
config file, savegames will still be in this directory (see notes in
|
||||
section 4.2 'OpenTTD directories')
|
||||
|
||||
OpenTTD comes without AIs, so if you want to play with AIs you have to download
|
||||
them. The easiest way is via the 'Check Online Content' button in the main menu.
|
||||
You can select some AIs that you think are compatible with your playing style.
|
||||
Another way is manually downloading the AIs from the forum although then you
|
||||
need to make sure that you install all the required AI libraries too; they get
|
||||
automatically selected (and downloaded) if you get the AIs via the 'Check
|
||||
Online Content'. If you do not have an AI but have configured OpenTTD to start
|
||||
an AI a message will be shown that the 'dummy' AI has been started.
|
||||
|
||||
### 4.1) (Required) 3rd party files
|
||||
|
||||
Before you run OpenTTD, you need to put the game's data files into a baseset/
|
||||
directory which can be located in various places addressed in the following
|
||||
section.
|
||||
|
||||
For OpenTTD you need to acquire some third party data files. For this you have
|
||||
the choice of using the original Transport Tycoon Deluxe data files or a set
|
||||
of free data files.
|
||||
|
||||
Do NOT copy files included with OpenTTD into 'shared' directories (explained in
|
||||
the following sections) as sooner or later you will run into graphical glitches
|
||||
when using other versions of the game.
|
||||
|
||||
#### 4.1.1) Free graphics and sound files
|
||||
|
||||
The free data files, split into OpenGFX for graphics, OpenSFX for sounds and
|
||||
OpenMSX for music can be found at:
|
||||
|
||||
- https://www.openttd.org/download-opengfx for OpenGFX
|
||||
- https://www.openttd.org/download-opensfx for OpenSFX
|
||||
- https://www.openttd.org/download-openmsx for OpenMSX
|
||||
|
||||
Please follow the readme of these packages about the installation procedure.
|
||||
The Windows installer can optionally download and install these packages.
|
||||
|
||||
#### 4.1.2) Original Transport Tycoon Deluxe graphics and sound files
|
||||
|
||||
If you want to play with the original Transport Tycoon Deluxe data files you
|
||||
have to copy the data files from the CD-ROM into the baseset/ directory. It
|
||||
does not matter whether you copy them from the DOS or Windows version of
|
||||
Transport Tycoon Deluxe. The Windows install can optionally copy these files.
|
||||
You need to copy the following files:
|
||||
- sample.cat
|
||||
- trg1r.grf or TRG1.GRF
|
||||
- trgcr.grf or TRGC.GRF
|
||||
- trghr.grf or TRGH.GRF
|
||||
- trgir.grf or TRGI.GRF
|
||||
- trgtr.grf or TRGT.GRF
|
||||
|
||||
#### 4.1.3) Original Transport Tycoon Deluxe music
|
||||
|
||||
If you want the Transport Tycoon Deluxe music, copy the appropriate files from
|
||||
the original game into the baseset folder.
|
||||
- TTD for Windows: All files in the gm/ folder (gm_tt00.gm up to gm_tt21.gm)
|
||||
- TTD for DOS: The GM.CAT file
|
||||
- Transport Tycoon Original: The GM.CAT file, but rename it to GM-TTO.CAT
|
||||
|
||||
#### 4.1.4) AIs
|
||||
|
||||
If you want AIs use the in-game content downloader. If for some reason that is
|
||||
not possible or you want to use an AI that has not been uploaded to the content
|
||||
download system download the tar file and place it in the ai/ directory. If the
|
||||
AI needs libraries you will have to download those too and put them in the
|
||||
ai/library/ directory. All AIs and AI Libraries that have been uploaded to
|
||||
the content download system can be found at https://noai.openttd.org/downloads.
|
||||
The AIs and libraries can be found their in the form of .tar.gz packages.
|
||||
OpenTTD can read inside tar files but it does not extract .tar.gz files by itself.
|
||||
|
||||
To figure out which libraries you need for an AI you have to start the AI and
|
||||
wait for an error message to pop up. The error message will tell you
|
||||
'could not find library "lib-name"'. Download that library and try again.
|
||||
|
||||
#### 4.1.5) Game scripts
|
||||
|
||||
If you want an extra challenge in OpenTTD you can download so-called game
|
||||
scripts via the in-game content downloader. These game scripts have varying
|
||||
functionality, though they can generally influence town growth, subsidies, add
|
||||
goals to reach or provide a different ranking system.
|
||||
|
||||
If you download a game script manually you have to follow the same rules as for
|
||||
AIs, except that game scripts are placed in the game/ directory instead of the
|
||||
ai/ directory.
|
||||
|
||||
### 4.2) OpenTTD directories
|
||||
|
||||
OpenTTD uses its own directory to store its required 3rd party base set files
|
||||
(see section 4.1 'Required 3rd party files') and non-compulsory extension and
|
||||
configuration files. See below for their proper place within this OpenTTD main
|
||||
data directory.
|
||||
|
||||
The main OpenTTD directories can be found in various locations, depending on
|
||||
your operating system:
|
||||
|
||||
1. The current working directory (from where you started OpenTTD)
|
||||
|
||||
For non-Windows operating systems OpenTTD will not scan for files in this
|
||||
directory if it is your personal directory, i.e. '~/', or when it is the
|
||||
root directory, i.e. '/'.
|
||||
|
||||
2. Your personal directory
|
||||
- Windows:
|
||||
- `C:\My Documents\OpenTTD` (95, 98, ME)
|
||||
- `C:\Documents and Settings\<username>\My Documents\OpenTTD` (2000, XP)
|
||||
- `C:\Users\<username>\Documents\OpenTTD` (Vista, 7, 8.1, 10)
|
||||
- macOS: `~/Documents/OpenTTD`
|
||||
- Linux: `$XDG_DATA_HOME/openttd` which is usually `~/.local/share/openttd`
|
||||
when built with XDG base directory support, otherwise `~/.openttd`
|
||||
3. The shared directory
|
||||
- Windows:
|
||||
- `C:\Documents and Settings\All Users\Shared Documents\OpenTTD` (2000, XP)
|
||||
- `C:\Users\Public\Documents\OpenTTD` (Vista, 7, 8.1, 10)
|
||||
- macOS: `/Library/Application Support/OpenTTD`
|
||||
- Linux: not available
|
||||
4. The binary directory (where the OpenTTD executable is)
|
||||
- Windows: `C:\Program Files\OpenTTD`
|
||||
- Linux: `/usr/games`
|
||||
5. The installation directory (Linux only)
|
||||
- Linux: `/usr/share/games/openttd`
|
||||
6. The application bundle (macOS only)
|
||||
|
||||
It includes the OpenTTD files (grf+lng) and it will work as long as they
|
||||
are not touched
|
||||
|
||||
Different types of data or extensions go into different subdirectories of the
|
||||
chosen main OpenTTD directory:
|
||||
|
||||
| data type | directory | additional info |
|
||||
| ------------------- | ----------------- | --------------------------- |
|
||||
| Config File | (no subdirectory) | |
|
||||
| Screenshots | screenshot | |
|
||||
| Base Graphics | baseset | (or a subdirectory thereof) |
|
||||
| Sound Sets | baseset | (or a subdirectory thereof) |
|
||||
| NewGRFs | newgrf | (or a subdirectory thereof) |
|
||||
| 32bpp Sets | newgrf | (or a subdirectory thereof) |
|
||||
| Music Sets | baseset | (or a subdirectory thereof) |
|
||||
| AIs | ai | (or a subdirectory thereof) |
|
||||
| AI Libraries | ai/library | (or a subdirectory thereof) |
|
||||
| Game Scripts (GS) | game | (or a subdirectory thereof) |
|
||||
| GS Libraries | game/library | (or a subdirectory thereof) |
|
||||
| Savegames | save | |
|
||||
| Automatic Savegames | save/autosave | |
|
||||
| Scenarios | scenario | |
|
||||
|
||||
The (automatically created) directory content_download is for OpenTTD's internal
|
||||
use and no files should be added to it or its subdirectories manually.
|
||||
|
||||
#### Notes:
|
||||
|
||||
- Linux in the previous list means .deb, but most paths should be similar for
|
||||
others.
|
||||
- The previous search order is also used for NewGRFs and openttd.cfg.
|
||||
- If openttd.cfg is not found, then it will be created using the 2, 4, 1, 3,
|
||||
5 order. When built with XDG base directory support, openttd.cfg will be
|
||||
created in $XDG_CONFIG_HOME/openttd which is usually ~/.config/openttd.
|
||||
- Savegames will be relative to the config file only if there is no save/
|
||||
directory in paths with higher priority than the config file path, but
|
||||
autosaves and screenshots will always be relative to the config file.
|
||||
Unless the configuration file is in $XDG_CONFIG_HOME/openttd, then all
|
||||
other files will be saved under $XDG_DATA_HOME/openttd.
|
||||
|
||||
#### The preferred setup:
|
||||
|
||||
Place 3rd party files in shared directory (or in personal directory if you do
|
||||
not have write access on shared directory) and have your openttd.cfg config
|
||||
file in personal directory (where the game will then also place savegames and
|
||||
screenshots).
|
||||
|
||||
### 4.3) Portable installations (portable media)
|
||||
|
||||
You can install OpenTTD on external media so you can take it with you, i.e.
|
||||
using a USB key, or a USB HDD, etc.
|
||||
Create a directory where you shall store the game in (i.e. OpenTTD/).
|
||||
Copy the binary (OpenTTD.exe, OpenTTD.app, openttd, etc), baseset/ and your
|
||||
openttd.cfg to this directory.
|
||||
You can copy binaries for any operating system into this directory, which will
|
||||
allow you to play the game on nearly any computer you can attach the external
|
||||
media to.
|
||||
As always - additional grf files are stored in the newgrf/ dir (for details,
|
||||
again, see section 4.1).
|
||||
|
||||
### 4.4) Files in tar (archives)
|
||||
|
||||
OpenTTD can read files that are in an uncompressed tar (archive), which
|
||||
makes it easy to bundle files belonging to the same script, NewGRF or base
|
||||
set. Music sets are the only exception as they cannot be stored in a tar
|
||||
file due to being played by external applications.
|
||||
|
||||
OpenTTD sees each tar archive as the 'root' of its search path. This means that
|
||||
having a file with the same path in two different tar files means that one
|
||||
cannot be opened, after all only one file will be found first. As such it is
|
||||
advisable to put an uniquely named folder in the root of the tar and put all the
|
||||
content in that folder. For example, all downloaded content has a path that
|
||||
concatenates the name of the content and the version, which makes the path
|
||||
unique. For custom tar files it is advised to do this as well.
|
||||
|
||||
The normal files are also referred to by their relative path from the search
|
||||
directory, this means that also normal files could hide files in a tar as
|
||||
long as the relative path from the search path of the normal file is the
|
||||
same as the path in the tar file. Again it is advised to have an unique path
|
||||
to the normal file so they do not collide with the files from other tar
|
||||
files.
|
||||
|
||||
## 5.0) OpenTTD features
|
||||
|
||||
OpenTTD has a lot of features going beyond the original Transport Tycoon Deluxe
|
||||
emulation. Unfortunately, there is currently no comprehensive list of features,
|
||||
but there is a basic features list on the web, and some optional features can be
|
||||
controlled through the Advanced Settings dialog. We also implement some
|
||||
features known from [TTDPatch](https://www.ttdpatch.net).
|
||||
|
||||
Several important non-standard controls:
|
||||
|
||||
- Ctrl modifies many commands and makes them more powerful. For example Ctrl
|
||||
clicking on signals with the build signal tool changes their behaviour,
|
||||
holding Ctrl while the track build tool is activated changes it to the track
|
||||
removal tool, and so on. See https://wiki.openttd.org/Hidden_features
|
||||
for a non-comprehensive list or look at the tooltips.
|
||||
- Ingame console. More information at https://wiki.openttd.org/Console
|
||||
- Hovering over a GUI element shows tooltips. This can be changed to right click
|
||||
via the advanced settings.
|
||||
|
||||
### 5.1) Logging of potentially dangerous actions
|
||||
|
||||
OpenTTD is a complex program, and together with NewGRF, it may show a buggy
|
||||
behaviour. But not only bugs in code can cause problems. There are several
|
||||
ways to affect game state possibly resulting in program crash or multiplayer
|
||||
desyncs.
|
||||
|
||||
Easier way would be to forbid all these unsafe actions, but that would affect
|
||||
game usability for many players. We certainly do not want that.
|
||||
However, we receive bug reports because of this. To reduce time spent with
|
||||
solving these problems, these potentially unsafe actions are logged in
|
||||
the savegame (including crash.sav). Log is stored in crash logs, too.
|
||||
|
||||
Information logged:
|
||||
|
||||
- Adding / removing / changing order of NewGRFs
|
||||
- Changing NewGRF parameters, loading compatible NewGRF
|
||||
- Changing game mode (scenario editor <-> normal game)
|
||||
- Loading game saved in a different OpenTTD / TTDPatch / Transport Tycoon Deluxe /
|
||||
original Transport Tycoon version
|
||||
- Running a modified OpenTTD build
|
||||
- Changing settings affecting NewGRF behaviour (non-network-safe settings)
|
||||
- Triggering NewGRF bugs
|
||||
|
||||
No personal information is stored.
|
||||
|
||||
You can show the game log by typing 'gamelog' in the console or by running
|
||||
OpenTTD in debug mode.
|
||||
|
||||
### 5.2) Frame rate and performance metrics
|
||||
|
||||
The Help menu in-game has a function to open the Frame rate window. This
|
||||
window shows various real-time performance statistics, measuring what parts
|
||||
of the game require the most processing power currently.
|
||||
|
||||
A summary of the statistics can also be retrieved from the console with the
|
||||
`fps` command. This is especially useful on dedicated servers, where the
|
||||
administrator might want to determine what's limiting performance in a slow
|
||||
game.
|
||||
|
||||
The frame rate is given as two figures, the simulation rate and the graphics
|
||||
frame rate. Usually these are identical, as the screen is rendered exactly
|
||||
once per simulated tick, but in the future there might be support for graphics
|
||||
and simulation running at different rates. When the game is paused, the
|
||||
simulation rate drops to zero.
|
||||
|
||||
In addition to the simulation rate, a game speed factor is also calculated.
|
||||
This is based on the target simulation speed, which is 30 milliseconds per
|
||||
game tick. At that speed, the expected frame rate is 33.33 frames/second, and
|
||||
the game speed factor is how close to that target the actual rate is. When
|
||||
the game is in fast forward mode, the game speed factor shows how much
|
||||
speed up is achieved.
|
||||
|
||||
The lower part of the window shows timing statistics for individual parts of
|
||||
the game. The times shown are short-term and long-term averages of how long
|
||||
it takes to process one tick of game time, all figures are in milliseconds.
|
||||
|
||||
Clicking a line in the lower part of the window opens a graph window, giving
|
||||
detailed readings on each tick simulated by the game.
|
||||
|
||||
The following is an explanation of the different statistics:
|
||||
|
||||
- *Game loop* - Total processing time used per simulated "tick" in the game.
|
||||
This includes all pathfinding, world updates, and economy handling.
|
||||
- *Cargo handling* - Time spent loading/unloading cargo at stations, and
|
||||
industries and towns sending/retrieving cargo from stations.
|
||||
- *Train ticks*, *Road vehicle ticks*, *Ship ticks*, *Aircraft ticks* -
|
||||
Time spent on pathfinding and other processing for each player vehicle type.
|
||||
- *World ticks* - Time spent on other world/landscape processing. This
|
||||
includes towns growing, building animations, updates of farmland and trees,
|
||||
and station rating updates.
|
||||
- *GS/AI total*, *Game script*, and *AI players* - Time spent running logic
|
||||
for game scripts and AI players. The total may show as less than the current
|
||||
sum of the individual scripts, this is because AI players at lower
|
||||
difficulty settings do not run every game tick, and hence contribute less
|
||||
to the average across all ticks. Keep in mind that the "Current" figure is
|
||||
also an average, just only over short term.
|
||||
- *Link graph delay* - Time overruns of the cargo distribution link graph
|
||||
update thread. Usually the link graph is updated in a background thread,
|
||||
but these updates need to synchronise with the main game loop occasionally,
|
||||
if the time spent on link graph updates is longer than the time taken to
|
||||
otherwise simulate the game while it was updating, these delays are counted
|
||||
in this figure.
|
||||
- *Graphics rendering* - Total time spent rendering all graphics, including
|
||||
both GUI and world viewports. This typically spikes when panning the view
|
||||
around, and when more things are happening on screen at once.
|
||||
- *World viewport rendering* - Isolated time spent rendering just world
|
||||
viewports. If this figure is significantly lower than the total graphics
|
||||
rendering time, most time is spent rendering GUI than rendering world.
|
||||
- *Video output* - Speed of copying the rendered graphics to the display
|
||||
adapter. Usually this should be very fast (in the range of 0-3 ms), large
|
||||
values for this can indicate a graphics driver problem.
|
||||
- *Sound mixing* - Speed of mixing active audio samples together. Usually
|
||||
this should be very fast (in the range of 0-3 ms), if it is slow, consider
|
||||
switching to the NoSound set.
|
||||
|
||||
If the frame rate window is shaded, the title bar will instead show just the
|
||||
current simulation rate and the game speed factor.
|
||||
|
||||
## 6.0) Configuration file
|
||||
|
||||
The configuration file for OpenTTD (openttd.cfg) is in a simple Windows-like
|
||||
.INI format. It is mostly undocumented. Almost all settings can be changed
|
||||
ingame by using the 'Advanced Settings' window.
|
||||
When you cannot find openttd.cfg you should look in the directories as
|
||||
described in section 4.2. If you do not have an openttd.cfg OpenTTD will
|
||||
create one after closing.
|
||||
|
||||
## 7.0) Compiling
|
||||
|
||||
### Windows:
|
||||
|
||||
You need Microsoft Visual Studio 2015 Update 3 or more recent. Open the project file
|
||||
and it should build automatically. In case you want to build with SDL support
|
||||
you need to add WITH_SDL to the project settings.
|
||||
|
||||
PNG (WITH_PNG), ZLIB (WITH_ZLIB), LZO (WITH_LZO), Freetype (WITH_FREETYPE) and
|
||||
LZMA (WITH_LZMA) support is enabled by default. For these to work you need their
|
||||
development files. To get them just use vcpkg from https://github.com/Microsoft/vcpkg
|
||||
using x86-windows-static and x64-windows-static triplets.
|
||||
For more help with VS see docs/Readme_Windows_MSVC.md.
|
||||
|
||||
You can also build it using the Makefile with MSYS/MinGW or Cygwin/MinGW.
|
||||
Please read the Makefile for more information.
|
||||
|
||||
### Solaris, FreeBSD, OpenBSD:
|
||||
|
||||
Use '`gmake`', but do a '`./configure`' before the first build.
|
||||
|
||||
### Linux/Unix:
|
||||
|
||||
OpenTTD can be built with GNU '`make`'. On non-GNU systems it is called '`gmake`'.
|
||||
However, for the first build one has to do a '`./configure`' first.
|
||||
|
||||
### macOS:
|
||||
|
||||
Use '`make`' or Xcode (which will then call make for you)
|
||||
This will give you a binary for your CPU type (PPC/Intel)
|
||||
However, for the first build one has to do a '`./configure`' first.
|
||||
To make a universal binary type '`./configure --enabled-universal`'
|
||||
instead of '`./configure`'.
|
||||
|
||||
### BeOS:
|
||||
|
||||
Use '`make`', but do a '`./configure`' before the first build.
|
||||
|
||||
### MorphOS:
|
||||
|
||||
Use '`make`'. However, for the first build one has to do a '`./configure`'
|
||||
first. Note that you need the MorphOS SDK, latest libnix updates (else C++
|
||||
parts of OpenTTD will not build) and the powersdl.library SDK. Optionally libz,
|
||||
libpng and freetype2 developer files.
|
||||
|
||||
### OS/2:
|
||||
|
||||
A comprehensive GNU build environment is required to build the OS/2 version.
|
||||
See the docs/Readme_OS2.txt file for more information.
|
||||
|
||||
### DOS:
|
||||
|
||||
A build environment with DJGPP is needed as well as libraries such as
|
||||
Allegro, zlib and libpng, which all can be downloaded from the DJGPP
|
||||
website. Compilation is straight forward: use '`make`', but do a '`./configure`'
|
||||
before the first build. The build binary will need cwsdpmi.exe to be in
|
||||
the same directory as the openttd executable. cwsdpmi.exe can be found in
|
||||
the os/dos/cwsdpmi subdirectory. If you compile with stripping turned on a
|
||||
binary will be generated that does not need cwsdpmi.exe by adding the
|
||||
cswdstub.exe to the created OpenTTD binary.
|
||||
|
||||
### 7.1) Required/optional libraries
|
||||
|
||||
The following libraries are used by OpenTTD for:
|
||||
|
||||
- libSDL/liballegro: hardware access (video, sound, mouse)
|
||||
- zlib: (de)compressing of old (0.3.0-1.0.5) savegames, content downloads,
|
||||
heightmaps
|
||||
- liblzo2: (de)compressing of old (pre 0.3.0) savegames
|
||||
- liblzma: (de)compressing of savegames (1.1.0 and later)
|
||||
- libpng: making screenshots and loading heightmaps
|
||||
- libfreetype: loading generic fonts and rendering them
|
||||
- libfontconfig: searching for fonts, resolving font names to actual fonts
|
||||
- libicu: handling of right-to-left scripts (e.g. Arabic and Persian) and
|
||||
natural sorting of strings.
|
||||
|
||||
OpenTTD does not require any of the libraries to be present, but without
|
||||
liblzma you cannot open most recent savegames and without zlib you cannot
|
||||
open most older savegames or use the content downloading system.
|
||||
Without libSDL/liballegro on non-Windows and non-macOS machines you have
|
||||
no graphical user interface; you would be building a dedicated server.
|
||||
|
||||
### 7.2) Supported compilers
|
||||
|
||||
The following compilers are known to compile OpenTTD:
|
||||
|
||||
- Microsoft Visual C++ (MSVC) 2015, 2017 and 2019.
|
||||
- GNU Compiler Collection (GCC) 3.3 - 4.4, 4.6 - 4.8.
|
||||
- Versions 4.1 and earlier give bogus warnings about uninitialised variables.
|
||||
- Versions 4.4, 4.6 give bogus warnings about freeing non-heap objects.
|
||||
- Versions 4.6 and later give invalid warnings when lto is enabled.
|
||||
- Intel C++ Compiler (ICC) 12.0.
|
||||
- Clang/LLVM 2.9 - 3.0
|
||||
Version 2.9 gives bogus warnings about code nonconformity.
|
||||
|
||||
The following compilers are known not to compile OpenTTD:
|
||||
|
||||
- Microsoft Visual C++ (MSVC) 2013 and earlier.
|
||||
These old versions do not support modern C++ language features.
|
||||
- GNU Compiler Collection (GCC) 3.2 and earlier.
|
||||
These old versions fail due to OpenTTD's template usage.
|
||||
- GNU Compiler Collection (GCC) 4.5. It optimizes enums too aggressively.
|
||||
See https://github.com/OpenTTD/OpenTTD/issues/5513 and references therein.
|
||||
- Intel C++ Compiler (ICC) 11.1 and earlier.
|
||||
- Version 10.0 and earlier fail a configure check and fail with recent
|
||||
system headers.
|
||||
- Version 10.1 fails to compile station_gui.cpp.
|
||||
- Version 11.1 fails with an internal error when compiling network.cpp.
|
||||
- Clang/LLVM 2.8 and earlier.
|
||||
- (Open) Watcom.
|
||||
|
||||
If any of these compilers can compile OpenTTD again, please let us know.
|
||||
Patches to support more compilers are welcome.
|
||||
|
||||
### 7.3) Compilation of base sets
|
||||
|
||||
To recompile the extra graphics needed to play with the original Transport
|
||||
Tycoon Deluxe graphics you need GRFCodec (which includes NFORenum) as well.
|
||||
GRFCodec can be found at https://www.openttd.org/download-grfcodec.
|
||||
The compilation of these extra graphics does generally not happen, unless
|
||||
you remove the graphics file using '`make maintainer-clean`'.
|
||||
|
||||
Re-compilation of the base sets, thus also use of '`--maintainer-clean`' can
|
||||
leave the repository in a modified state as different grfcodec versions can
|
||||
cause binary differences in the resulting grf. Also translations might have
|
||||
been added for the base sets which are not yet included in the base set
|
||||
information files. Use the configure option '`--without-grfcodec`' to avoid
|
||||
modification of the base set files by the build process.
|
||||
|
||||
## 8.0) Translating
|
||||
|
||||
See https://www.openttd.org/development for up-to-date information.
|
||||
|
||||
The use of the online Translator service, located at
|
||||
https://translator.openttd.org, is highly encouraged. For getting an account
|
||||
simply follow the guidelines in the FAQ of the translator website.
|
||||
|
||||
If for some reason the website is down for a longer period of time, the
|
||||
information below might be of help.
|
||||
|
||||
Please contact the translations manager (https://www.openttd.org/contact)
|
||||
before beginning the translation process! This avoids double work, as
|
||||
someone else may have already started translating to the same language.
|
||||
|
||||
### 8.1) Translation
|
||||
|
||||
So, now that you have notified the development team about your intention to
|
||||
translate (You did, right? Of course you did.) you can pick up english.txt
|
||||
(found in the Git repository under /src/lang) and translate.
|
||||
|
||||
You must change the first two lines of the file appropriately:
|
||||
|
||||
##name English-Name-Of-Language
|
||||
##ownname Native-Name-Of-Language
|
||||
|
||||
Note: Do not alter the following parts of the file:
|
||||
|
||||
- String identifiers (the first word on each line)
|
||||
- Parts of the strings which are in curly braces (such as {STRING})
|
||||
- Lines beginning with ## (such as ##id), other than the first two lines
|
||||
of the file
|
||||
|
||||
### 8.2) Previewing
|
||||
|
||||
In order to view the translation in the game, you need to compile your language
|
||||
file with the strgen utility. As this utility is tailored to a specific OpenTTD
|
||||
version, you need to compile it yourself. Just take the normal OpenTTD sources
|
||||
and build that. During the build process the strgen utility will be made.
|
||||
|
||||
strgen is a command-line utility. It takes the language filename as parameter.
|
||||
|
||||
Example:
|
||||
|
||||
strgen lang/german.txt
|
||||
|
||||
This results in compiling german.txt and produces another file named german.lng.
|
||||
Any missing strings are replaced with the English strings. Note that it looks
|
||||
for english.txt in the lang subdirectory, which is where your language file
|
||||
should also be.
|
||||
|
||||
That is all! You should now be able to select the language in the game options.
|
||||
|
||||
## 9.0) Troubleshooting
|
||||
|
||||
To see all startup options available to you, start OpenTTD with the
|
||||
'`./openttd -h`' option. This might help you tweak some of the settings.
|
||||
|
||||
If the game is acting strange and you feel adventurous you can try the
|
||||
'`-d [[<name>=]<level>]`' flag, where the higher levels will give you more
|
||||
debugging output. The 'name' variable can help you to display only some type of
|
||||
debugging messages. This is mostly undocumented so best is to look in the
|
||||
source code file debug.c for the various debugging types. For more information
|
||||
look at https://wiki.openttd.org/Command_line.
|
||||
|
||||
The most frequent problem is missing data files. Please install OpenGFX and
|
||||
possibly OpenSFX and OpenMSX. See section 4.1.1 for more information.
|
||||
|
||||
Under certain circumstance, especially on Ubuntu OpenTTD can be extremely slow
|
||||
and/or freeze. See known-bugs.txt for more information and how to solve this
|
||||
problem on your computer.
|
||||
|
||||
Under Windows 98 and lower it is impossible to use a dedicated server; it will
|
||||
fail to start. Perhaps this is for the better because those OSes are not known
|
||||
for their stability.
|
||||
|
||||
With the added support for font-based text selecting a non-latin language can
|
||||
result in lots of question marks ('?') being shown on screen. Please open your
|
||||
configuration file (openttd.cfg - see Section 4.2 for where to find it)
|
||||
and add a suitable font for the small, medium and / or large font, e.g.:
|
||||
|
||||
small_font = "Tahoma"
|
||||
medium_font = "Tahoma"
|
||||
large_font = "Tahoma"
|
||||
|
||||
You should use a font name like 'Tahoma' or a path to the desired font.
|
||||
|
||||
Any NewGRF file used in a game is stored inside the savegame and will refuse to
|
||||
load if you do not have that NewGRF file available. A list of missing files can
|
||||
be viewed in the NewGRF window accessible from the file load dialogue window.
|
||||
|
||||
You can try to obtain the missing files from that NewGRF dialogue or – if they
|
||||
are not available online – you can search manually through our
|
||||
[forum's graphics development section](https://www.tt-forums.net/viewforum.php?f=66)
|
||||
or [GRFCrawler](https://grfcrawler.tt-forums.net). Put the NewGRF files in
|
||||
OpenTTD's newgrf folder (see section 4.2 'OpenTTD directories') and rescan the
|
||||
list of available NewGRFs. Once you have all missing files, you are set to go.
|
||||
|
||||
## 10.0) Licensing
|
||||
|
||||
OpenTTD is licensed under the GNU General Public License version 2.0. For
|
||||
the complete license text, see the file 'COPYING'. This license applies
|
||||
to all files in this distribution, except as noted below.
|
||||
|
||||
The squirrel implementation in src/3rdparty/squirrel is licensed under
|
||||
the Zlib license. See src/3rdparty/squirrel/COPYRIGHT for the complete
|
||||
license text.
|
||||
|
||||
The md5 implementation in src/3rdparty/md5 is licensed under the Zlib
|
||||
license. See the comments in the source files in src/3rdparty/md5 for
|
||||
the complete license text.
|
||||
|
||||
The implementations of Posix getaddrinfo and getnameinfo for OS/2 in
|
||||
src/3rdparty/os2 are distributed partly under the GNU Lesser General Public
|
||||
License 2.1, and partly under the (3-clause) BSD license. The exact licensing
|
||||
terms can be found in src/3rdparty/os2/getaddrinfo.c resp.
|
||||
src/3rdparty/os2/getnameinfo.c.
|
||||
|
||||
The exe2coff implementation in os/dos/exe2coff is available under the
|
||||
GPL, with a number of additional terms. See os/dos/exe2coff/copying and
|
||||
os/dos/exe2coff/copying.dj for the exact licensing terms.
|
||||
|
||||
The CWSDPMI implementation in os/dos/cwsdpmi is distributed under a
|
||||
custom binary-only license that prohibits modification. The exact
|
||||
licensing terms can be found in os/dos/cwsdpmi/cwsdpmi.txt. The sources
|
||||
for these files can be downloaded at its author site, at
|
||||
http://homer.rice.edu/~sandmann/cwsdpmi/csdpmi5s.zip.
|
||||
|
||||
CONTRIBUTING.md is adapted from
|
||||
[Bootstrap](https://github.com/twbs/bootstrap/blob/master/CONTRIBUTING.md)
|
||||
under the [Creative Commons Attribution 3.0 Unported
|
||||
License](https://github.com/twbs/bootstrap/blob/master/docs/LICENSE)
|
||||
terms for Bootstrap documentation.
|
||||
|
||||
## X.X) Credits
|
||||
|
||||
### The OpenTTD team (in alphabetical order):
|
||||
|
||||
- Grzegorz Duczyński (adf88) - General coding (since 1.7.2)
|
||||
- Albert Hofkamp (Alberth) - GUI expert (since 0.7)
|
||||
- Matthijs Kooijman (blathijs) - Pathfinder-guru, Debian port (since 0.3)
|
||||
- Ulf Hermann (fonsinchen) - Cargo Distribution (since 1.3)
|
||||
- Christoph Elsenhans (frosch) - General coding (since 0.6)
|
||||
- Loïc Guilloux (glx) - Windows Expert (since 0.4.5)
|
||||
- Michael Lutz (michi_cc) - Path based signals (since 0.7)
|
||||
- Niels Martin Hansen (nielsm) - Music system, general coding (since 1.9)
|
||||
- Owen Rudge (orudge) - Forum host, OS/2 port (since 0.1)
|
||||
- Peter Nelson (peter1138) - Spiritual descendant from newGRF gods (since 0.4.5)
|
||||
- Ingo von Borstel (planetmaker) - General coding, Support (since 1.1)
|
||||
- Remko Bijker (Rubidium) - Lead coder and way more (since 0.4.5)
|
||||
- José Soler (Terkhen) - General coding (since 1.0)
|
||||
- Leif Linse (Zuu) - AI/Game Script (since 1.2)
|
||||
|
||||
### Inactive Developers:
|
||||
|
||||
- Jean-François Claeys (Belugas) - GUI, newindustries and more (0.4.5 - 1.0)
|
||||
- Bjarni Corfitzen (Bjarni) - macOS port, coder and vehicles (0.3 - 0.7)
|
||||
- Victor Fischer (Celestar) - Programming everywhere you need him to (0.3 - 0.6)
|
||||
- Jaroslav Mazanec (KUDr) - YAPG (Yet Another Pathfinder God) ;) (0.4.5 - 0.6)
|
||||
- Jonathan Coome (Maedhros) - High priest of the NewGRF Temple (0.5 - 0.6)
|
||||
- Attila Bán (MiHaMiX) - WebTranslator 1 and 2 (0.3 - 0.5)
|
||||
- Zdeněk Sojka (SmatZ) - Bug finder and fixer (0.6 - 1.3)
|
||||
- Christoph Mallon (Tron) - Programmer, code correctness police (0.3 - 0.5)
|
||||
- Patric Stout (TrueBrain) - NoProgrammer (0.3 - 1.2), sys op (active)
|
||||
- Thijs Marinussen (Yexo) - AI Framework, General (0.6 - 1.3)
|
||||
|
||||
### Retired Developers:
|
||||
|
||||
- Tamás Faragó (Darkvater) - Ex-Lead coder (0.3 - 0.5)
|
||||
- Dominik Scherer (dominik81) - Lead programmer, GUI expert (0.3 - 0.3)
|
||||
- Emil Djupfeld (egladil) - macOS port (0.4 - 0.6)
|
||||
- Simon Sasburg (HackyKid) - Bug fixer (0.4 - 0.4.5)
|
||||
- Ludvig Strigeus (ludde) - Original author of OpenTTD, main coder (0.1 - 0.3)
|
||||
- Cian Duffy (MYOB) - BeOS port / manual writing (0.1 - 0.3)
|
||||
- Petr Baudiš (pasky) - Many patches, newgrf support, etc. (0.3 - 0.3)
|
||||
- Benedikt Brüggemeier (skidd13) - Bug fixer and code reworker (0.6 - 0.7)
|
||||
- Serge Paquet (vurlix) - 2nd contributor after ludde (0.1 - 0.3)
|
||||
|
||||
### Thanks to:
|
||||
|
||||
- Josef Drexler - For his great work on TTDPatch.
|
||||
- Marcin Grzegorczyk - For his TTDPatch work and documentation of Transport Tycoon Deluxe internals and track foundations
|
||||
- Stefan Meißner (sign_de) - For his work on the console
|
||||
- Mike Ragsdale - OpenTTD installer
|
||||
- Christian Rosentreter (tokai) - MorphOS / AmigaOS port
|
||||
- Richard Kempton (RichK67) - Additional airports, initial TGP implementation
|
||||
- Alberto Demichelis - Squirrel scripting language
|
||||
- L. Peter Deutsch - MD5 implementation
|
||||
- Michael Blunck - For revolutionizing TTD with awesome graphics
|
||||
- George - Canal graphics
|
||||
- Andrew Parkhouse (andythenorth) - River graphics
|
||||
- David Dallaston (Pikka) - Tram tracks
|
||||
- All Translators - For their support to make OpenTTD a truly international game
|
||||
- Bug Reporters - Thanks for all bug reports
|
||||
- Chris Sawyer - For an amazing game!
|
73
azure-pipelines-ci.yml
Normal file
73
azure-pipelines-ci.yml
Normal file
@@ -0,0 +1,73 @@
|
||||
trigger:
|
||||
- master
|
||||
- release/*
|
||||
pr:
|
||||
- master
|
||||
- release/*
|
||||
|
||||
jobs:
|
||||
- job: windows
|
||||
displayName: 'Windows'
|
||||
pool:
|
||||
vmImage: 'VS2017-Win2016'
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
Win32:
|
||||
BuildPlatform: 'Win32'
|
||||
Win64:
|
||||
BuildPlatform: 'x64'
|
||||
|
||||
steps:
|
||||
- template: azure-pipelines/templates/ci-git-rebase.yml
|
||||
- template: azure-pipelines/templates/windows-dependencies.yml
|
||||
- template: azure-pipelines/templates/ci-opengfx.yml
|
||||
- template: azure-pipelines/templates/windows-build.yml
|
||||
parameters:
|
||||
BuildPlatform: $(BuildPlatform)
|
||||
- script: |
|
||||
call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x86
|
||||
cd projects
|
||||
call regression.bat
|
||||
displayName: 'Test'
|
||||
|
||||
- job: linux
|
||||
displayName: 'Linux'
|
||||
pool:
|
||||
vmImage: 'ubuntu-16.04'
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
commit-checker:
|
||||
Tag: 'commit-checker'
|
||||
linux-amd64-clang-3.8:
|
||||
Tag: 'linux-amd64-clang-3.8'
|
||||
linux-amd64-gcc-6:
|
||||
Tag: 'linux-amd64-gcc-6'
|
||||
linux-i386-gcc-6:
|
||||
Tag: 'linux-i386-gcc-6'
|
||||
|
||||
steps:
|
||||
- template: azure-pipelines/templates/ci-git-rebase.yml
|
||||
# The dockers already have the dependencies installed
|
||||
# The dockers already have OpenGFX installed
|
||||
- template: azure-pipelines/templates/linux-build.yml
|
||||
parameters:
|
||||
Image: compile-farm-ci
|
||||
Tag: $(Tag)
|
||||
|
||||
- job: macos
|
||||
displayName: 'MacOS'
|
||||
pool:
|
||||
vmImage: 'macOS-10.13'
|
||||
|
||||
variables:
|
||||
MACOSX_DEPLOYMENT_TARGET: 10.9
|
||||
|
||||
steps:
|
||||
- template: azure-pipelines/templates/ci-git-rebase.yml
|
||||
- template: azure-pipelines/templates/osx-dependencies.yml
|
||||
- template: azure-pipelines/templates/ci-opengfx.yml
|
||||
- template: azure-pipelines/templates/osx-build.yml
|
||||
- script: 'make regression'
|
||||
displayName: 'Test'
|
10
azure-pipelines-release-stable.yml
Normal file
10
azure-pipelines-release-stable.yml
Normal file
@@ -0,0 +1,10 @@
|
||||
trigger:
|
||||
branches:
|
||||
include:
|
||||
- refs/tags/*
|
||||
pr: none
|
||||
|
||||
jobs:
|
||||
- template: azure-pipelines/templates/release.yml
|
||||
parameters:
|
||||
IsStableRelease: true
|
7
azure-pipelines-release.yml
Normal file
7
azure-pipelines-release.yml
Normal file
@@ -0,0 +1,7 @@
|
||||
trigger: none
|
||||
pr: none
|
||||
|
||||
jobs:
|
||||
- template: azure-pipelines/templates/release.yml
|
||||
parameters:
|
||||
IsStableRelease: false
|
16
azure-pipelines/changelog.sh
Executable file
16
azure-pipelines/changelog.sh
Executable file
@@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
|
||||
tag=$(git describe --tags 2>/dev/null)
|
||||
|
||||
# If we are a tag, show the part of the changelog till (but excluding) the last stable
|
||||
if [ -n "$tag" ]; then
|
||||
grep='^[0-9]\.[0-9]\.[0-9][^-]'
|
||||
next=$(cat changelog.txt | grep '^[0-9]' | awk 'BEGIN { show="false" } // { if (show=="true") print $0; if ($1=="'$tag'") show="true"} ' | grep "$grep" | head -n1 | sed 's/ .*//')
|
||||
cat changelog.txt | awk 'BEGIN { show="false" } /^[0-9].[0-9].[0-9]/ { if ($1=="'$next'") show="false"; if ($1=="'$tag'") show="true";} // { if (show=="true") print $0 }'
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# In all other cases, show the git log of the last 7 days
|
||||
revdate=$(git log -1 --pretty=format:"%ci")
|
||||
last_week=$(date -u -d "$revdate -7days" +"%Y-%m-%d %H:%M")
|
||||
git log --after="${last_week}" --pretty=fuller
|
60
azure-pipelines/manifest.sh
Executable file
60
azure-pipelines/manifest.sh
Executable file
@@ -0,0 +1,60 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -ex
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
echo "Usage: $0 <folder-with-bundles>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
FOLDER=$1
|
||||
|
||||
if [ ! -e .version ] || [ ! -e .release_date ]; then
|
||||
echo "This script should be executed in the root of an extracted source tarball"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Find the name based on the version
|
||||
if [ -e .is_stable ]; then
|
||||
isTesting=$(cat .version | grep "RC\|beta" || true)
|
||||
if [ -z "${isTesting}" ]; then
|
||||
NAME="stable"
|
||||
else
|
||||
NAME="testing"
|
||||
fi
|
||||
else
|
||||
NAME=$(cat .version | cut -d- -f2 | cut -d- -f-2)
|
||||
fi
|
||||
|
||||
# Convert the date to a YAML date
|
||||
DATE=$(cat .release_date | tr ' ' T | sed 's/TUTC/:00-00:00/')
|
||||
VERSION=$(cat .version)
|
||||
BASE="openttd-${VERSION}"
|
||||
|
||||
echo "name: ${NAME}" >> manifest.yaml
|
||||
echo "date: ${DATE}" >> manifest.yaml
|
||||
echo "base: ${BASE}-" >> manifest.yaml
|
||||
echo "files:" >> manifest.yaml
|
||||
|
||||
error=""
|
||||
for i in $(ls ${FOLDER} | grep -v ".txt$\|.md$\|sum$" | sort); do
|
||||
if [ -n "$(echo $i | grep pdb.xz)" ]; then continue; fi
|
||||
if [ -n "$(echo $i | grep dbg.deb)" ]; then continue; fi
|
||||
|
||||
if [ ! -e ${FOLDER}/$i.md5sum ] || [ ! -e ${FOLDER}/$i.sha1sum ] || [ ! -e ${FOLDER}/$i.sha256sum ]; then
|
||||
echo "ERROR: missing checksum file for ${i}" 1>&2
|
||||
error="y"
|
||||
continue
|
||||
fi
|
||||
|
||||
echo "- id: $i" >> manifest.yaml
|
||||
echo " size: $(stat -c"%s" ${FOLDER}/$i)" >> manifest.yaml
|
||||
echo " md5sum: $(cat ${FOLDER}/$i.md5sum | cut -d\ -f1)" >> manifest.yaml
|
||||
echo " sha1sum: $(cat ${FOLDER}/$i.sha1sum | cut -d\ -f1)" >> manifest.yaml
|
||||
echo " sha256sum: $(cat ${FOLDER}/$i.sha256sum | cut -d\ -f1)" >> manifest.yaml
|
||||
done
|
||||
|
||||
if [ -n "${error}" ]; then
|
||||
echo "ERROR: exiting due to earlier errors" 1>&2
|
||||
exit 1
|
||||
fi
|
10
azure-pipelines/templates/ci-git-rebase.yml
Normal file
10
azure-pipelines/templates/ci-git-rebase.yml
Normal file
@@ -0,0 +1,10 @@
|
||||
steps:
|
||||
# Rebase to target branch for every PR. This means users don't have to
|
||||
# rebase every time target branch changes. As long as the PR applies cleanly, we
|
||||
# will validate it.
|
||||
- bash: |
|
||||
git config user.email 'info@openttd.org'
|
||||
git config user.name 'OpenTTD CI'
|
||||
git rebase origin/${SYSTEM_PULLREQUEST_TARGETBRANCH}
|
||||
displayName: 'Rebase to target branch'
|
||||
condition: and(succeeded(), eq(variables['Build.Reason'], 'PullRequest'))
|
8
azure-pipelines/templates/ci-opengfx.yml
Normal file
8
azure-pipelines/templates/ci-opengfx.yml
Normal file
@@ -0,0 +1,8 @@
|
||||
steps:
|
||||
- bash: |
|
||||
set -ex
|
||||
cd bin/baseset
|
||||
curl -L https://binaries.openttd.org/extra/opengfx/0.5.2/opengfx-0.5.2-all.zip > opengfx-0.5.2-all.zip
|
||||
unzip opengfx-0.5.2-all.zip
|
||||
rm -f opengfx-0.5.2-all.zip
|
||||
displayName: 'Install OpenGFX'
|
36
azure-pipelines/templates/linux-build.yml
Normal file
36
azure-pipelines/templates/linux-build.yml
Normal file
@@ -0,0 +1,36 @@
|
||||
parameters:
|
||||
Image: ''
|
||||
Tag: ''
|
||||
ContainerCommand: ''
|
||||
|
||||
steps:
|
||||
# 'envVars' in the 'Docker@1' task is a bit funky. When you want to use a
|
||||
# variable, you have to quote it. But the quote is also sent directly to
|
||||
# Docker and ends up in the variable, which you don't want. To work around
|
||||
# this, we set the correct variable first (which becomes an env-variable), and
|
||||
# pass that env-variable through to Docker. We cannot use the normal
|
||||
# 'variables' entry, as we are a template. So that results in this bit of
|
||||
# Bash code. Not because it is pretty, but it is the only way we found that
|
||||
# works.
|
||||
- bash: |
|
||||
echo "##vso[task.setvariable variable=TARGET_BRANCH]${SYSTEM_PULLREQUEST_TARGETBRANCH}"
|
||||
echo "Target branch is ${SYSTEM_PULLREQUEST_TARGETBRANCH}"
|
||||
displayName: "Set target branch"
|
||||
condition: and(succeeded(), eq(variables['Build.Reason'], 'PullRequest'))
|
||||
|
||||
- task: Docker@1
|
||||
${{ if eq(parameters.Image, 'compile-farm') }}:
|
||||
displayName: 'Build'
|
||||
${{ if eq(parameters.Image, 'compile-farm-ci') }}:
|
||||
displayName: 'Build and test'
|
||||
# Run the commit-checker only if it is a Pull Request
|
||||
condition: and(succeeded(), or(not(contains(variables['Agent.JobName'], 'commit-checker')), eq(variables['Build.Reason'], 'PullRequest')))
|
||||
inputs:
|
||||
command: 'Run an image'
|
||||
imageName: openttd/${{ parameters.Image }}:${{ parameters.Tag }}
|
||||
volumes: '$(Build.SourcesDirectory):$(Build.SourcesDirectory)'
|
||||
workingDirectory: '$(Build.SourcesDirectory)'
|
||||
containerCommand: ${{ parameters.ContainerCommand }}
|
||||
runInBackground: false
|
||||
envVars: |
|
||||
TARGET_BRANCH
|
5
azure-pipelines/templates/linux-claim-bundles.yml
Normal file
5
azure-pipelines/templates/linux-claim-bundles.yml
Normal file
@@ -0,0 +1,5 @@
|
||||
steps:
|
||||
# Because we run the compile in a docker (under root), we are not owner
|
||||
# of the 'bundles' folder. Fix that by executing a chown on it.
|
||||
- bash: sudo chown -R $(id -u):$(id -g) bundles
|
||||
displayName: 'Claim bundles folder back'
|
5
azure-pipelines/templates/osx-build.yml
Normal file
5
azure-pipelines/templates/osx-build.yml
Normal file
@@ -0,0 +1,5 @@
|
||||
steps:
|
||||
- script: './configure PKG_CONFIG_PATH=/usr/local/lib/pkgconfig --enable-static'
|
||||
displayName: 'Configure'
|
||||
- script: 'make -j2'
|
||||
displayName: 'Build'
|
12
azure-pipelines/templates/osx-dependencies.yml
Normal file
12
azure-pipelines/templates/osx-dependencies.yml
Normal file
@@ -0,0 +1,12 @@
|
||||
steps:
|
||||
- script: |
|
||||
set -ex
|
||||
HOMEBREW_NO_AUTO_UPDATE=1 brew install pkg-config lzo xz libpng freetype
|
||||
# Remove the dynamic libraries of these libraries, to ensure we use
|
||||
# the static versions. That is important, as it is unlikely any
|
||||
# end-user has these brew libraries installed.
|
||||
rm /usr/local/Cellar/lzo/*/lib/*.dylib
|
||||
rm /usr/local/Cellar/xz/*/lib/*.dylib
|
||||
rm /usr/local/Cellar/libpng/*/lib/*.dylib
|
||||
rm /usr/local/Cellar/freetype/*/lib/*.dylib
|
||||
displayName: 'Install dependencies'
|
19
azure-pipelines/templates/release-bundles.yml
Normal file
19
azure-pipelines/templates/release-bundles.yml
Normal file
@@ -0,0 +1,19 @@
|
||||
parameters:
|
||||
CalculateChecksums: true
|
||||
|
||||
steps:
|
||||
- ${{ if eq(parameters.CalculateChecksums, true) }}:
|
||||
- bash: |
|
||||
set -ex
|
||||
cd bundles
|
||||
for i in $(ls); do
|
||||
openssl dgst -r -md5 -hex $i > $i.md5sum
|
||||
openssl dgst -r -sha1 -hex $i > $i.sha1sum
|
||||
openssl dgst -r -sha256 -hex $i > $i.sha256sum
|
||||
done
|
||||
displayName: 'Calculate checksums'
|
||||
- task: PublishBuildArtifacts@1
|
||||
displayName: 'Publish bundles'
|
||||
inputs:
|
||||
PathtoPublish: bundles/
|
||||
ArtifactName: bundles
|
20
azure-pipelines/templates/release-fetch-source.yml
Normal file
20
azure-pipelines/templates/release-fetch-source.yml
Normal file
@@ -0,0 +1,20 @@
|
||||
# Fetch the source tarball as prepared by an earlier job. In there is the
|
||||
# version predefined. This ensures we are all going to compile the same
|
||||
# source with the same version.
|
||||
|
||||
steps:
|
||||
- checkout: none
|
||||
- task: DownloadBuildArtifacts@0
|
||||
displayName: 'Download source'
|
||||
inputs:
|
||||
downloadType: specific
|
||||
itemPattern: 'bundles/openttd-*-source.tar.xz'
|
||||
downloadPath: '$(Build.ArtifactStagingDirectory)'
|
||||
- bash: tar --xz -xf ../a/bundles/openttd-*-source.tar.xz --strip-components=1
|
||||
displayName: 'Extracting source'
|
||||
- bash: |
|
||||
set -e
|
||||
VERSION=$(cat .version)
|
||||
echo "${VERSION}"
|
||||
echo "##vso[build.updatebuildnumber]${VERSION}"
|
||||
displayName: 'Change BuildNumber to version'
|
20
azure-pipelines/templates/release-manifest.yml
Normal file
20
azure-pipelines/templates/release-manifest.yml
Normal file
@@ -0,0 +1,20 @@
|
||||
parameters:
|
||||
IsStableRelease: false
|
||||
|
||||
steps:
|
||||
- task: DownloadBuildArtifacts@0
|
||||
displayName: 'Download all bundles'
|
||||
inputs:
|
||||
downloadType: specific
|
||||
itemPattern: 'bundles/*'
|
||||
downloadPath: '$(Build.ArtifactStagingDirectory)'
|
||||
- ${{ if eq(parameters.IsStableRelease, true) }}:
|
||||
- script: |
|
||||
touch .is_stable
|
||||
displayName: 'Mark as stable release'
|
||||
- script: |
|
||||
set -ex
|
||||
./azure-pipelines/manifest.sh ../a/bundles/
|
||||
mkdir -p bundles
|
||||
mv manifest.yaml bundles/
|
||||
displayName: 'Create manifest.yaml'
|
35
azure-pipelines/templates/release-prepare-source.yml
Normal file
35
azure-pipelines/templates/release-prepare-source.yml
Normal file
@@ -0,0 +1,35 @@
|
||||
# Set the revisions, and remove the VCS files.
|
||||
# This ensures everything else picks up on the predefined versions, and not
|
||||
# that because of some build process the version all of a sudden changes.
|
||||
|
||||
steps:
|
||||
- script: |
|
||||
set -ex
|
||||
|
||||
if [ -n "${SYSTEM_PULLREQUEST_PULLREQUESTNUMBER}" ]; then
|
||||
# We are triggered from a GitHub Pull Request
|
||||
git checkout -B pr${SYSTEM_PULLREQUEST_PULLREQUESTNUMBER}
|
||||
elif [ "${BUILD_SOURCEBRANCHNAME}" = "merge" ] || [ "${BUILD_SOURCEBRANCHNAME}" = "head" ]; then
|
||||
# We are manually triggered based on a GitHub Pull Request
|
||||
PULLREQUESTNUMBER=$(echo ${BUILD_SOURCEBRANCH} | cut -d/ -f3)
|
||||
git checkout -B pr${PULLREQUESTNUMBER}
|
||||
else
|
||||
git checkout -B ${BUILD_SOURCEBRANCHNAME}
|
||||
fi
|
||||
|
||||
./findversion.sh > .ottdrev
|
||||
./azure-pipelines/changelog.sh > .changelog
|
||||
TZ='UTC' date +"%Y-%m-%d %H:%M UTC" > .release_date
|
||||
cat .ottdrev | cut -f 1 -d$'\t' > .version
|
||||
echo "Release Date: $(cat .release_date)"
|
||||
echo "Revision: $(cat .ottdrev)"
|
||||
echo "Version: $(cat .version)"
|
||||
displayName: 'Create version files'
|
||||
- script: |
|
||||
set -e
|
||||
VERSION=$(cat .version)
|
||||
echo "${VERSION}"
|
||||
echo "##vso[build.updatebuildnumber]${VERSION}"
|
||||
displayName: 'Change BuildNumber to version'
|
||||
- script: find . -iname .hg -or -iname .git -or -iname .svn | xargs rm -rf
|
||||
displayName: 'Remove VCS information'
|
183
azure-pipelines/templates/release.yml
Normal file
183
azure-pipelines/templates/release.yml
Normal file
@@ -0,0 +1,183 @@
|
||||
parameters:
|
||||
# If this is false, not all targets are triggered. For example:
|
||||
# The NSIS installer for Windows and the creation of debs only work for
|
||||
# releases. Not for any other type of binary. So they are skilled if this
|
||||
# is set to false.
|
||||
IsStableRelease: false
|
||||
|
||||
jobs:
|
||||
- job: source
|
||||
displayName: 'Source'
|
||||
pool:
|
||||
vmImage: 'ubuntu-16.04'
|
||||
|
||||
steps:
|
||||
- template: release-prepare-source.yml
|
||||
- script: |
|
||||
set -ex
|
||||
|
||||
# Rename the folder to openttd-NNN-source
|
||||
mkdir openttd-$(Build.BuildNumber)
|
||||
find . -maxdepth 1 -not -name . -not -name openttd-$(Build.BuildNumber) -exec mv {} openttd-$(Build.BuildNumber)/ \;
|
||||
# Copy back release_date, as it is needed for the template 'release-bundles'
|
||||
cp openttd-$(Build.BuildNumber)/.release_date .release_date
|
||||
|
||||
mkdir bundles
|
||||
tar --xz -cf bundles/openttd-$(Build.BuildNumber)-source.tar.xz openttd-$(Build.BuildNumber)
|
||||
zip -9 -r -q bundles/openttd-$(Build.BuildNumber)-source.zip openttd-$(Build.BuildNumber)
|
||||
displayName: 'Create bundle'
|
||||
- template: release-bundles.yml
|
||||
|
||||
- job: meta
|
||||
displayName: 'Metadata'
|
||||
pool:
|
||||
vmImage: 'ubuntu-16.04'
|
||||
dependsOn: source
|
||||
|
||||
steps:
|
||||
- template: release-fetch-source.yml
|
||||
- script: |
|
||||
set -ex
|
||||
|
||||
mkdir -p bundles
|
||||
cp .changelog bundles/changelog.txt
|
||||
cp .release_date bundles/released.txt
|
||||
cp README.md bundles/README.md
|
||||
displayName: 'Copy meta files'
|
||||
- template: release-bundles.yml
|
||||
parameters:
|
||||
CalculateChecksums: false
|
||||
|
||||
- job: docs
|
||||
displayName: 'Docs'
|
||||
pool:
|
||||
vmImage: 'ubuntu-16.04'
|
||||
dependsOn: source
|
||||
|
||||
steps:
|
||||
- template: release-fetch-source.yml
|
||||
- template: linux-build.yml
|
||||
parameters:
|
||||
Image: compile-farm
|
||||
ContainerCommand: '$(Build.BuildNumber)'
|
||||
Tag: docs
|
||||
- template: linux-claim-bundles.yml
|
||||
- template: release-bundles.yml
|
||||
|
||||
- job: windows
|
||||
displayName: 'Windows'
|
||||
pool:
|
||||
vmImage: 'VS2017-Win2016'
|
||||
dependsOn: source
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
Win32:
|
||||
BuildPlatform: 'Win32'
|
||||
BundlePlatform: 'win32'
|
||||
Win64:
|
||||
BuildPlatform: 'x64'
|
||||
BundlePlatform: 'win64'
|
||||
|
||||
steps:
|
||||
- template: release-fetch-source.yml
|
||||
- template: windows-dependencies.yml
|
||||
- template: windows-dependency-zip.yml
|
||||
- ${{ if eq(parameters.IsStableRelease, true) }}:
|
||||
- template: windows-dependency-nsis.yml
|
||||
- template: windows-build.yml
|
||||
parameters:
|
||||
BuildPlatform: $(BuildPlatform)
|
||||
- bash: |
|
||||
set -ex
|
||||
make -f Makefile.msvc bundle_pdb bundle_zip PLATFORM=$(BundlePlatform) BUNDLE_NAME=openttd-$(Build.BuildNumber)-windows-$(BundlePlatform)
|
||||
displayName: 'Create bundles'
|
||||
- ${{ if eq(parameters.IsStableRelease, true) }}:
|
||||
- bash: |
|
||||
set -ex
|
||||
# NSIS will be part of the Hosted image in the next update. Till then, we set the PATH ourself
|
||||
export PATH="${PATH}:/c/Program Files (x86)/NSIS"
|
||||
make -f Makefile.msvc bundle_exe PLATFORM=$(BundlePlatform) BUNDLE_NAME=openttd-$(Build.BuildNumber)-windows-$(BundlePlatform)
|
||||
displayName: 'Create installer bundle'
|
||||
- template: release-bundles.yml
|
||||
|
||||
- ${{ if eq(parameters.IsStableRelease, true) }}:
|
||||
- job: linux_stable
|
||||
displayName: 'Linux'
|
||||
pool:
|
||||
vmImage: 'ubuntu-16.04'
|
||||
dependsOn: source
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
linux-ubuntu-xenial-i386-gcc:
|
||||
Tag: 'linux-ubuntu-xenial-i386-gcc'
|
||||
linux-ubuntu-xenial-amd64-gcc:
|
||||
Tag: 'linux-ubuntu-xenial-amd64-gcc'
|
||||
linux-ubuntu-bionic-i386-gcc:
|
||||
Tag: 'linux-ubuntu-bionic-i386-gcc'
|
||||
linux-ubuntu-bionic-amd64-gcc:
|
||||
Tag: 'linux-ubuntu-bionic-amd64-gcc'
|
||||
linux-debian-jessie-i386-gcc:
|
||||
Tag: 'linux-debian-jessie-i386-gcc'
|
||||
linux-debian-jessie-amd64-gcc:
|
||||
Tag: 'linux-debian-jessie-amd64-gcc'
|
||||
linux-debian-stretch-i386-gcc:
|
||||
Tag: 'linux-debian-stretch-i386-gcc'
|
||||
linux-debian-stretch-amd64-gcc:
|
||||
Tag: 'linux-debian-stretch-amd64-gcc'
|
||||
|
||||
steps:
|
||||
- template: release-fetch-source.yml
|
||||
- template: linux-build.yml
|
||||
parameters:
|
||||
Image: compile-farm
|
||||
ContainerCommand: '$(Build.BuildNumber)'
|
||||
Tag: $(Tag)
|
||||
- template: linux-claim-bundles.yml
|
||||
- template: release-bundles.yml
|
||||
|
||||
- job: macos
|
||||
displayName: 'MacOS'
|
||||
pool:
|
||||
vmImage: 'macOS-10.13'
|
||||
dependsOn: source
|
||||
|
||||
variables:
|
||||
MACOSX_DEPLOYMENT_TARGET: 10.9
|
||||
|
||||
steps:
|
||||
- template: release-fetch-source.yml
|
||||
- template: osx-dependencies.yml
|
||||
- template: osx-build.yml
|
||||
- script: 'make bundle_zip bundle_dmg BUNDLE_NAME=openttd-$(Build.BuildNumber)-macosx'
|
||||
displayName: 'Create bundles'
|
||||
- template: release-bundles.yml
|
||||
|
||||
- job: manifest
|
||||
displayName: 'Manifest'
|
||||
pool:
|
||||
vmImage: 'ubuntu-16.04'
|
||||
dependsOn:
|
||||
- source
|
||||
- docs
|
||||
- windows
|
||||
- ${{ if eq(parameters.IsStableRelease, true) }}:
|
||||
- linux_stable
|
||||
- macos
|
||||
# "Skipped" is not a status, and is not succeeded. So it seems to be
|
||||
# considered failed. So we trigger if all the earlier jobs are done (which
|
||||
# might be succeeded, failed, or skipped), and run this job. This is not
|
||||
# optimal, but given the rules, it is the only way to get this to work (as
|
||||
# some jobs might be skipped).
|
||||
condition: succeededOrFailed()
|
||||
|
||||
steps:
|
||||
- template: release-fetch-source.yml
|
||||
- template: release-manifest.yml
|
||||
${{ if eq(parameters.IsStableRelease, true) }}:
|
||||
parameters:
|
||||
IsStableRelease: true
|
||||
- template: release-bundles.yml
|
||||
parameters:
|
||||
CalculateChecksums: false
|
11
azure-pipelines/templates/windows-build.yml
Normal file
11
azure-pipelines/templates/windows-build.yml
Normal file
@@ -0,0 +1,11 @@
|
||||
parameters:
|
||||
BuildPlatform: ''
|
||||
|
||||
steps:
|
||||
- task: VSBuild@1
|
||||
displayName: 'Build'
|
||||
inputs:
|
||||
solution: 'projects/openttd_vs141.sln'
|
||||
platform: ${{ parameters.BuildPlatform }}
|
||||
configuration: Release
|
||||
maximumCpuCount: true
|
14
azure-pipelines/templates/windows-dependencies.yml
Normal file
14
azure-pipelines/templates/windows-dependencies.yml
Normal file
@@ -0,0 +1,14 @@
|
||||
steps:
|
||||
- bash: |
|
||||
set -ex
|
||||
|
||||
curl -L https://github.com/OpenTTD/CompileFarm/releases/download/latest/windows-dependencies.zip > windows-dependencies.zip
|
||||
unzip windows-dependencies.zip
|
||||
rm -f windows-dependencies.zip
|
||||
|
||||
mv windows-dependencies/installed /c/vcpkg/
|
||||
rm -rf windows-dependencies
|
||||
displayName: 'Install dependencies'
|
||||
workingDirectory: $(Build.ArtifactStagingDirectory)
|
||||
- script: c:\vcpkg\vcpkg.exe integrate install
|
||||
displayName: 'Integrate vcpkg'
|
26
azure-pipelines/templates/windows-dependency-nsis.yml
Normal file
26
azure-pipelines/templates/windows-dependency-nsis.yml
Normal file
@@ -0,0 +1,26 @@
|
||||
parameters:
|
||||
condition: true
|
||||
|
||||
steps:
|
||||
- bash: |
|
||||
set -ex
|
||||
|
||||
mkdir nsis-plugin; cd nsis-plugin
|
||||
curl -L https://devs.openttd.org/~truebrain/nsis-plugins/Nsis7z.zip > Nsis7z.zip
|
||||
unzip Nsis7z.zip
|
||||
cp -R Plugins/* "/c/Program Files (x86)/NSIS/Plugins/"
|
||||
cd ..; rm -rf nsis-plugin
|
||||
|
||||
mkdir nsis-plugin; cd nsis-plugin
|
||||
curl -L https://devs.openttd.org/~truebrain/nsis-plugins/NsisGetVersion.zip > NsisGetVersion.zip
|
||||
unzip NsisGetVersion.zip
|
||||
cp -R Plugins/* "/c/Program Files (x86)/NSIS/Plugins/x86-ansi/"
|
||||
cd ..; rm -rf nsis-plugin
|
||||
|
||||
mkdir nsis-plugin; cd nsis-plugin
|
||||
curl -L https://devs.openttd.org/~truebrain/nsis-plugins/NsisFindProc.zip > NsisFindProc.zip
|
||||
unzip NsisFindProc.zip
|
||||
cp -R *.dll "/c/Program Files (x86)/NSIS/Plugins/x86-ansi/"
|
||||
cd ..; rm -rf nsis-plugin
|
||||
displayName: 'Install NSIS with the 7z, GetVersion, and FindProc plugins'
|
||||
condition: and(succeeded(), ${{ parameters.condition }})
|
5
azure-pipelines/templates/windows-dependency-zip.yml
Normal file
5
azure-pipelines/templates/windows-dependency-zip.yml
Normal file
@@ -0,0 +1,5 @@
|
||||
steps:
|
||||
- bash: |
|
||||
set -ex
|
||||
choco install zip
|
||||
displayName: 'Install zip'
|
@@ -367,3 +367,17 @@ AIOrder.AIOF_UNLOAD_FLAGS <- AIOrder.OF_UNLOAD_FLAGS
|
||||
AIOrder.AIOF_LOAD_FLAGS <- AIOrder.OF_LOAD_FLAGS
|
||||
AIOrder.AIOF_DEPOT_FLAGS <- AIOrder.OF_DEPOT_FLAGS
|
||||
AIOrder.AIOF_INVALID <- AIOrder.OF_INVALID
|
||||
|
||||
/* 1.9 adds a vehicle type parameter. */
|
||||
AIBridge._GetName <- AIBridge.GetName;
|
||||
AIBridge.GetName <- function(bridge_id)
|
||||
{
|
||||
return AIBridge._GetName(bridge_id, AIVehicle.VT_RAIL);
|
||||
}
|
||||
|
||||
/* 1.9 adds parent_group_id to CreateGroup function */
|
||||
AIGroup._CreateGroup <- AIGroup.CreateGroup;
|
||||
AIGroup.CreateGroup <- function(vehicle_type)
|
||||
{
|
||||
return AIGroup._CreateGroup(vehicle_type, AIGroup.GROUP_INVALID);
|
||||
}
|
||||
|
@@ -119,3 +119,17 @@ AIOrder.AIOF_UNLOAD_FLAGS <- AIOrder.OF_UNLOAD_FLAGS
|
||||
AIOrder.AIOF_LOAD_FLAGS <- AIOrder.OF_LOAD_FLAGS
|
||||
AIOrder.AIOF_DEPOT_FLAGS <- AIOrder.OF_DEPOT_FLAGS
|
||||
AIOrder.AIOF_INVALID <- AIOrder.OF_INVALID
|
||||
|
||||
/* 1.9 adds a vehicle type parameter. */
|
||||
AIBridge._GetName <- AIBridge.GetName;
|
||||
AIBridge.GetName <- function(bridge_id)
|
||||
{
|
||||
return AIBridge._GetName(bridge_id, AIVehicle.VT_RAIL);
|
||||
}
|
||||
|
||||
/* 1.9 adds parent_group_id to CreateGroup function */
|
||||
AIGroup._CreateGroup <- AIGroup.CreateGroup;
|
||||
AIGroup.CreateGroup <- function(vehicle_type)
|
||||
{
|
||||
return AIGroup._CreateGroup(vehicle_type, AIGroup.GROUP_INVALID);
|
||||
}
|
||||
|
@@ -56,3 +56,17 @@ AIOrder.AIOF_UNLOAD_FLAGS <- AIOrder.OF_UNLOAD_FLAGS
|
||||
AIOrder.AIOF_LOAD_FLAGS <- AIOrder.OF_LOAD_FLAGS
|
||||
AIOrder.AIOF_DEPOT_FLAGS <- AIOrder.OF_DEPOT_FLAGS
|
||||
AIOrder.AIOF_INVALID <- AIOrder.OF_INVALID
|
||||
|
||||
/* 1.9 adds a vehicle type parameter. */
|
||||
AIBridge._GetName <- AIBridge.GetName;
|
||||
AIBridge.GetName <- function(bridge_id)
|
||||
{
|
||||
return AIBridge._GetName(bridge_id, AIVehicle.VT_RAIL);
|
||||
}
|
||||
|
||||
/* 1.9 adds parent_group_id to CreateGroup function */
|
||||
AIGroup._CreateGroup <- AIGroup.CreateGroup;
|
||||
AIGroup.CreateGroup <- function(vehicle_type)
|
||||
{
|
||||
return AIGroup._CreateGroup(vehicle_type, AIGroup.GROUP_INVALID);
|
||||
}
|
||||
|
@@ -8,3 +8,17 @@
|
||||
*/
|
||||
|
||||
AILog.Info("1.2 API compatibility in effect.");
|
||||
|
||||
/* 1.9 adds a vehicle type parameter. */
|
||||
AIBridge._GetName <- AIBridge.GetName;
|
||||
AIBridge.GetName <- function(bridge_id)
|
||||
{
|
||||
return AIBridge._GetName(bridge_id, AIVehicle.VT_RAIL);
|
||||
}
|
||||
|
||||
/* 1.9 adds parent_group_id to CreateGroup function */
|
||||
AIGroup._CreateGroup <- AIGroup.CreateGroup;
|
||||
AIGroup.CreateGroup <- function(vehicle_type)
|
||||
{
|
||||
return AIGroup._CreateGroup(vehicle_type, AIGroup.GROUP_INVALID);
|
||||
}
|
||||
|
@@ -8,3 +8,17 @@
|
||||
*/
|
||||
|
||||
AILog.Info("1.3 API compatibility in effect.");
|
||||
|
||||
/* 1.9 adds a vehicle type parameter. */
|
||||
AIBridge._GetName <- AIBridge.GetName;
|
||||
AIBridge.GetName <- function(bridge_id)
|
||||
{
|
||||
return AIBridge._GetName(bridge_id, AIVehicle.VT_RAIL);
|
||||
}
|
||||
|
||||
/* 1.9 adds parent_group_id to CreateGroup function */
|
||||
AIGroup._CreateGroup <- AIGroup.CreateGroup;
|
||||
AIGroup.CreateGroup <- function(vehicle_type)
|
||||
{
|
||||
return AIGroup._CreateGroup(vehicle_type, AIGroup.GROUP_INVALID);
|
||||
}
|
||||
|
@@ -8,3 +8,17 @@
|
||||
*/
|
||||
|
||||
AILog.Info("1.4 API compatibility in effect.");
|
||||
|
||||
/* 1.9 adds a vehicle type parameter. */
|
||||
AIBridge._GetName <- AIBridge.GetName;
|
||||
AIBridge.GetName <- function(bridge_id)
|
||||
{
|
||||
return AIBridge._GetName(bridge_id, AIVehicle.VT_RAIL);
|
||||
}
|
||||
|
||||
/* 1.9 adds parent_group_id to CreateGroup function */
|
||||
AIGroup._CreateGroup <- AIGroup.CreateGroup;
|
||||
AIGroup.CreateGroup <- function(vehicle_type)
|
||||
{
|
||||
return AIGroup._CreateGroup(vehicle_type, AIGroup.GROUP_INVALID);
|
||||
}
|
||||
|
@@ -8,3 +8,17 @@
|
||||
*/
|
||||
|
||||
AILog.Info("1.5 API compatibility in effect.");
|
||||
|
||||
/* 1.9 adds a vehicle type parameter. */
|
||||
AIBridge._GetName <- AIBridge.GetName;
|
||||
AIBridge.GetName <- function(bridge_id)
|
||||
{
|
||||
return AIBridge._GetName(bridge_id, AIVehicle.VT_RAIL);
|
||||
}
|
||||
|
||||
/* 1.9 adds parent_group_id to CreateGroup function */
|
||||
AIGroup._CreateGroup <- AIGroup.CreateGroup;
|
||||
AIGroup.CreateGroup <- function(vehicle_type)
|
||||
{
|
||||
return AIGroup._CreateGroup(vehicle_type, AIGroup.GROUP_INVALID);
|
||||
}
|
||||
|
@@ -6,3 +6,19 @@
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
AILog.Info("1.6 API compatibility in effect.");
|
||||
|
||||
/* 1.9 adds a vehicle type parameter. */
|
||||
AIBridge._GetName <- AIBridge.GetName;
|
||||
AIBridge.GetName <- function(bridge_id)
|
||||
{
|
||||
return AIBridge._GetName(bridge_id, AIVehicle.VT_RAIL);
|
||||
}
|
||||
|
||||
/* 1.9 adds parent_group_id to CreateGroup function */
|
||||
AIGroup._CreateGroup <- AIGroup.CreateGroup;
|
||||
AIGroup.CreateGroup <- function(vehicle_type)
|
||||
{
|
||||
return AIGroup._CreateGroup(vehicle_type, AIGroup.GROUP_INVALID);
|
||||
}
|
||||
|
24
bin/ai/compat_1.7.nut
Normal file
24
bin/ai/compat_1.7.nut
Normal file
@@ -0,0 +1,24 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
AILog.Info("1.7 API compatibility in effect.");
|
||||
|
||||
/* 1.9 adds a vehicle type parameter. */
|
||||
AIBridge._GetName <- AIBridge.GetName;
|
||||
AIBridge.GetName <- function(bridge_id)
|
||||
{
|
||||
return AIBridge._GetName(bridge_id, AIVehicle.VT_RAIL);
|
||||
}
|
||||
|
||||
/* 1.9 adds parent_group_id to CreateGroup function */
|
||||
AIGroup._CreateGroup <- AIGroup.CreateGroup;
|
||||
AIGroup.CreateGroup <- function(vehicle_type)
|
||||
{
|
||||
return AIGroup._CreateGroup(vehicle_type, AIGroup.GROUP_INVALID);
|
||||
}
|
24
bin/ai/compat_1.8.nut
Normal file
24
bin/ai/compat_1.8.nut
Normal file
@@ -0,0 +1,24 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
AILog.Info("1.8 API compatibility in effect.");
|
||||
|
||||
/* 1.9 adds a vehicle type parameter. */
|
||||
AIBridge._GetName <- AIBridge.GetName;
|
||||
AIBridge.GetName <- function(bridge_id)
|
||||
{
|
||||
return AIBridge._GetName(bridge_id, AIVehicle.VT_RAIL);
|
||||
}
|
||||
|
||||
/* 1.9 adds parent_group_id to CreateGroup function */
|
||||
AIGroup._CreateGroup <- AIGroup.CreateGroup;
|
||||
AIGroup.CreateGroup <- function(vehicle_type)
|
||||
{
|
||||
return AIGroup._CreateGroup(vehicle_type, AIGroup.GROUP_INVALID);
|
||||
}
|
8
bin/ai/compat_1.9.nut
Normal file
8
bin/ai/compat_1.9.nut
Normal file
@@ -0,0 +1,8 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
@@ -6,7 +6,7 @@ class Regression extends AIInfo {
|
||||
function GetShortName() { return "REGR"; }
|
||||
function GetDescription() { return "This runs regression-tests on some commands. On the same map the result should always be the same."; }
|
||||
function GetVersion() { return 1; }
|
||||
function GetAPIVersion() { return "1.6"; }
|
||||
function GetAPIVersion() { return "1.9"; }
|
||||
function GetDate() { return "2007-03-18"; }
|
||||
function CreateInstance() { return "Regression"; }
|
||||
}
|
||||
|
@@ -43,11 +43,11 @@ for tst in $tests; do
|
||||
if [ -n "$gdb" ]; then
|
||||
$gdb ./openttd -x -c ai/regression/regression.cfg $params -g $sav
|
||||
else
|
||||
./openttd -x -c ai/regression/regression.cfg $params -g $sav -d script=2 -d misc=9 2>&1 | awk '{ gsub("0x(\\(nil\\)|0+)(x0)?", "0x00000000", $0); gsub("^dbg: \\[script\\]", "", $0); gsub("^ ", "ERROR: ", $0); gsub("ERROR: \\[1\\] ", "", $0); gsub("\\[P\\] ", "", $0); print $0; }' | grep -v '^dbg: \[.*\]' > tmp.regression
|
||||
./openttd -x -c ai/regression/regression.cfg $params -g $sav -d script=2 -d misc=9 2>&1 | awk '{ gsub("0x(\\(nil\\)|0+)(x0)?", "0x00000000", $0); gsub("^dbg: \\[script\\]", "", $0); gsub("^ ", "ERROR: ", $0); gsub("ERROR: \\[1\\] ", "", $0); gsub("\\[P\\] ", "", $0); print $0; }' | grep -v '^dbg: \[.*\]' > $tst/tmp.regression
|
||||
fi
|
||||
|
||||
if [ -z "$gdb" ]; then
|
||||
res="`diff -ub $tst/result.txt tmp.regression`"
|
||||
res="`diff -ub $tst/result.txt $tst/tmp.regression`"
|
||||
if [ -z "$res" ]; then
|
||||
echo "passed!"
|
||||
else
|
||||
@@ -58,14 +58,14 @@ for tst in $tests; do
|
||||
fi
|
||||
|
||||
rm $tst/info.nut
|
||||
|
||||
if [ "$1" != "-k" ]; then
|
||||
rm -f $tst/tmp.regression
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -f scripts/game_start.scr.regression ]; then
|
||||
mv scripts/game_start.scr.regression scripts/game_start.scr
|
||||
fi
|
||||
|
||||
if [ "$1" != "-k" ]; then
|
||||
rm -f tmp.regression
|
||||
fi
|
||||
|
||||
exit $ret
|
||||
|
154
bin/ai/regression/run.vbs
Normal file
154
bin/ai/regression/run.vbs
Normal file
@@ -0,0 +1,154 @@
|
||||
Option Explicit
|
||||
|
||||
' $Id$
|
||||
'
|
||||
' This file is part of OpenTTD.
|
||||
' OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
' OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
' See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Dim FSO
|
||||
Set FSO = CreateObject("Scripting.FileSystemObject")
|
||||
|
||||
Function GetTestList()
|
||||
Dim retests, i, tests, dir
|
||||
Set retests = New RegExp
|
||||
Set GetTestList = CreateObject("Scripting.Dictionary")
|
||||
|
||||
retests.Pattern = "ai/regression/tst_*"
|
||||
retests.Global = True
|
||||
For i = 0 To WScript.Arguments.Count - 1
|
||||
Dim test
|
||||
test = "ai/regression/tst_" & WScript.Arguments.Item(i)
|
||||
If FSO.FolderExists(test) Then
|
||||
retests.Pattern = test
|
||||
Exit For
|
||||
End If
|
||||
Next
|
||||
|
||||
For Each dir In FSO.GetFolder("ai/regression/").SubFolders
|
||||
Dim name
|
||||
name = "ai/regression/" & dir.Name
|
||||
If retests.Test(name) Then
|
||||
GetTestList.Add name, name
|
||||
End If
|
||||
Next
|
||||
End Function
|
||||
|
||||
Function GetParams()
|
||||
GetParams = "-snull -mnull -vnull:ticks=30000"
|
||||
If WScript.Arguments.Count = 0 Then Exit Function
|
||||
If WScript.Arguments.Item(0) <> "-r" Then Exit Function
|
||||
GetParams = ""
|
||||
End Function
|
||||
|
||||
Sub FilterFile(filename)
|
||||
Dim lines, filter, file
|
||||
|
||||
Set file = FSO.OpenTextFile(filename, 1)
|
||||
If Not file.AtEndOfStream Then
|
||||
lines = file.ReadAll
|
||||
End If
|
||||
file.Close
|
||||
|
||||
Set filter = New RegExp
|
||||
filter.Global = True
|
||||
filter.Multiline = True
|
||||
filter.Pattern = "0x(\(nil\)|0+)(x0)?"
|
||||
lines = filter.Replace(lines, "0x00000000")
|
||||
filter.Pattern = "^dbg: \[script\]"
|
||||
lines = filter.Replace(lines, "")
|
||||
filter.Pattern = "^ "
|
||||
lines = filter.Replace(lines, "ERROR: ")
|
||||
filter.Pattern = "ERROR: \[1\] \[P\] "
|
||||
lines = filter.Replace(lines, "")
|
||||
filter.Pattern = "^dbg: .*\r\n"
|
||||
lines = filter.Replace(lines, "")
|
||||
|
||||
Set file = FSO.OpenTextFile(filename, 2)
|
||||
file.Write lines
|
||||
file.Close
|
||||
End Sub
|
||||
|
||||
Function CompareFiles(filename1, filename2)
|
||||
Dim file, lines1, lines2
|
||||
Set file = FSO.OpenTextFile(filename1, 1)
|
||||
If Not file.AtEndOfStream Then
|
||||
lines1 = file.ReadAll
|
||||
End IF
|
||||
file.Close
|
||||
Set file = FSO.OpenTextFile(filename2, 1)
|
||||
If Not file.AtEndOfStream Then
|
||||
lines2 = file.ReadAll
|
||||
End IF
|
||||
file.Close
|
||||
CompareFiles = (lines1 = lines2)
|
||||
End Function
|
||||
|
||||
Function RunTest(test, params, ret)
|
||||
Dim WshShell, oExec, sav, command
|
||||
Set WshShell = CreateObject("WScript.Shell")
|
||||
|
||||
' Make sure that only one info.nut is present for each test run. Otherwise openttd gets confused.
|
||||
FSO.CopyFile "ai/regression/regression_info.nut", test & "/info.nut"
|
||||
|
||||
sav = test & "/test.sav"
|
||||
If Not FSO.FileExists(sav) Then
|
||||
sav = "ai/regression/empty.sav"
|
||||
End If
|
||||
|
||||
command = ".\openttd -x -c ai/regression/regression.cfg " & params & " -g " & sav & " -d script=2 -d misc=9"
|
||||
' 2>&1 must be after >tmp.regression, else stderr is not redirected to the file
|
||||
WshShell.Run "cmd /c " & command & " >"& test & "/tmp.regression 2>&1", 0, True
|
||||
|
||||
FilterFile test & "/tmp.regression"
|
||||
|
||||
If CompareFiles(test & "/result.txt", test & "/tmp.regression") Then
|
||||
RunTest = "passed!"
|
||||
Else
|
||||
RunTest = "failed!"
|
||||
ret = 1
|
||||
End If
|
||||
|
||||
FSO.DeleteFile test & "/info.nut"
|
||||
|
||||
If WScript.Arguments.Count > 0 Then
|
||||
If WScript.Arguments.Item(0) = "-k" Then
|
||||
Exit Function
|
||||
End If
|
||||
End If
|
||||
|
||||
FSO.DeleteFile test & "/tmp.regression"
|
||||
End Function
|
||||
|
||||
On Error Resume Next
|
||||
WScript.StdOut.WriteLine ""
|
||||
If Err.Number <> 0 Then
|
||||
WScript.Echo "This script must be started with cscript."
|
||||
WScript.Quit 1
|
||||
End If
|
||||
On Error Goto 0
|
||||
|
||||
If Not FSO.FileExists("ai/regression/run.vbs") Then
|
||||
WScript.Echo "Make sure you are in the root of OpenTTD before starting this script."
|
||||
WScript.Quit 1
|
||||
End If
|
||||
|
||||
If FSO.FileExists("scripts/game_start.scr") Then
|
||||
FSO.MoveFile "scripts/game_start.scr", "scripts/game_start.scr.regression"
|
||||
End If
|
||||
|
||||
Dim params, test, ret
|
||||
params = GetParams()
|
||||
ret = 0
|
||||
|
||||
For Each test in GetTestList()
|
||||
WScript.StdOut.Write "Running " & test & "... "
|
||||
WScript.StdOut.WriteLine RunTest(test, params, ret)
|
||||
Next
|
||||
|
||||
If FSO.FileExists("scripts/game_start.scr.regression") Then
|
||||
FSO.MoveFile "scripts/game_start.scr.regression", "scripts/game_start.scr"
|
||||
End If
|
||||
|
||||
WScript.Quit ret
|
@@ -253,7 +253,11 @@ function Regression::Bridge()
|
||||
if (AIBridge.IsValidBridge(i)) j++;
|
||||
print(" Bridge " + i);
|
||||
print(" IsValidBridge(): " + AIBridge.IsValidBridge(i));
|
||||
print(" GetName(): " + AIBridge.GetName(i));
|
||||
print(" GetName():");
|
||||
print(" VT_RAIL: " + AIBridge.GetName(i, AIVehicle.VT_RAIL));
|
||||
print(" VT_ROAD: " + AIBridge.GetName(i, AIVehicle.VT_ROAD));
|
||||
print(" VT_WATER: " + AIBridge.GetName(i, AIVehicle.VT_WATER));
|
||||
print(" VT_AIR: " + AIBridge.GetName(i, AIVehicle.VT_AIR));
|
||||
print(" GetMaxSpeed(): " + AIBridge.GetMaxSpeed(i));
|
||||
print(" GetPrice(): " + AIBridge.GetPrice(i, 5));
|
||||
print(" GetMaxLength(): " + AIBridge.GetMaxLength(i));
|
||||
@@ -570,7 +574,7 @@ function Regression::Group()
|
||||
local vehicle = AIVehicle.BuildVehicle(10000, 116);
|
||||
print(" AIVehicle.BuildVehicle(): " + vehicle);
|
||||
print(" GetNumEngines(): " + AIGroup.GetNumEngines(AIGroup.GROUP_ALL, 116));
|
||||
local group = AIGroup.CreateGroup(AIVehicle.VT_ROAD);
|
||||
local group = AIGroup.CreateGroup(AIVehicle.VT_ROAD, AIGroup.GROUP_INVALID);
|
||||
print(" CreateGroup(): " + group);
|
||||
print(" MoveVehicle(): " + AIGroup.MoveVehicle(group, vehicle));
|
||||
print(" GetNumEngines(): " + AIGroup.GetNumEngines(group, 116));
|
||||
@@ -1018,7 +1022,36 @@ function Regression::Rail()
|
||||
print(" BuildRail(): " + AIRail.BuildRail(10002, 10003, 10006));
|
||||
print(" HasTransportType(): " + AITile.HasTransportType(10005, AITile.TRANSPORT_RAIL));
|
||||
print(" HasTransportType(): " + AITile.HasTransportType(10006, AITile.TRANSPORT_RAIL));
|
||||
print(" RemoveRail(): " + AIRail.RemoveRail(10005, 10004, 10001));
|
||||
print(" RemoveRail(): " + AIRail.RemoveRail(10006, 10005, 10002));
|
||||
print(" HasTransportType(): " + AITile.HasTransportType(10004, AITile.TRANSPORT_RAIL));
|
||||
print(" HasTransportType(): " + AITile.HasTransportType(10005, AITile.TRANSPORT_RAIL));
|
||||
print(" BuildRailTrack(): " + AIRail.BuildRailTrack(6200, AIRail.RAILTRACK_NE_SW));
|
||||
print(" RemoveRailTrack(): " + AIRail.RemoveRailTrack(6200, AIRail.RAILTRACK_NW_NE));
|
||||
print(" RemoveRailTrack(): " + AIRail.RemoveRailTrack(6200, AIRail.RAILTRACK_NE_SW));
|
||||
print(" BuildRail(): " + AIRail.BuildRail(6200, 6200 + 256, 6200 + (256 * 4)));
|
||||
print(" HasTransportType(): " + AITile.HasTransportType(6200 + (256 * 3), AITile.TRANSPORT_RAIL));
|
||||
print(" HasTransportType(): " + AITile.HasTransportType(6200 + (256 * 4), AITile.TRANSPORT_RAIL));
|
||||
print(" RemoveRail(): " + AIRail.RemoveRail(6200 + (256 * 3), 6200 + (256 * 2), 6200 - 256));
|
||||
print(" HasTransportType(): " + AITile.HasTransportType(6200 + (256 * 3), AITile.TRANSPORT_RAIL));
|
||||
print(" HasTransportType(): " + AITile.HasTransportType(6200 + (256 * 4), AITile.TRANSPORT_RAIL));
|
||||
print(" BuildRailTrack(): " + AIRail.BuildRail(14706, 14705, 12907));
|
||||
print(" HasTransportType(): " + AITile.HasTransportType(13421, AITile.TRANSPORT_RAIL));
|
||||
print(" HasTransportType(): " + AITile.HasTransportType(14191, AITile.TRANSPORT_RAIL));
|
||||
print(" RemoveRail(): " + AIRail.RemoveRail(12907, 13163, 14706));
|
||||
print(" HasTransportType(): " + AITile.HasTransportType(13421, AITile.TRANSPORT_RAIL));
|
||||
print(" HasTransportType(): " + AITile.HasTransportType(14191, AITile.TRANSPORT_RAIL));
|
||||
print(" BuildRailTrack(): " + AIRail.BuildRailTrack(61533, AIRail.RAILTRACK_NW_SW));
|
||||
print(" BuildRailTrack(): " + AIRail.BuildRailTrack(61533, AIRail.RAILTRACK_NE_SE));
|
||||
print(" BuildRailTrack(): " + AIRail.BuildRailTrack(61533, AIRail.RAILTRACK_NW_NE));
|
||||
print(" BuildRailTrack(): " + AIRail.BuildRailTrack(61533, AIRail.RAILTRACK_SW_SE));
|
||||
print(" BuildRailTrack(): " + AIRail.BuildRailTrack(61533, AIRail.RAILTRACK_NE_SW));
|
||||
print(" DemolishTile(): " + AITile.DemolishTile(61533));
|
||||
print(" BuildRailTrack(): " + AIRail.BuildRailTrack(61533, AIRail.RAILTRACK_NE_SW));
|
||||
print(" BuildRailTrack(): " + AIRail.BuildRailTrack(61533, AIRail.RAILTRACK_NW_SE));
|
||||
print(" BuildRailTrack(): " + AIRail.BuildRailTrack(61533, AIRail.RAILTRACK_NW_NE));
|
||||
print(" BuildRailTrack(): " + AIRail.BuildRailTrack(61533, AIRail.RAILTRACK_SW_SE));
|
||||
print(" DemolishTile(): " + AITile.DemolishTile(61533));
|
||||
print(" BuildRailTrack(): " + AIRail.BuildRailTrack(61533, AIRail.RAILTRACK_NW_SE));
|
||||
|
||||
print(" Depot");
|
||||
print(" IsRailTile(): " + AIRail.IsRailTile(33411));
|
||||
@@ -1053,6 +1086,31 @@ function Regression::Rail()
|
||||
print(" IsRailStationTile(): " + AIRail.IsRailStationTile(7957));
|
||||
print(" IsRailStationTile(): " + AIRail.IsRailStationTile(7958));
|
||||
print(" IsRailStationTile(): " + AIRail.IsRailStationTile(7959));
|
||||
|
||||
print(" Waypoint");
|
||||
print(" BuildRailTrack(): " + AIRail.BuildRailTrack(12646, AIRail.RAILTRACK_NW_SE));
|
||||
print(" BuildRailTrack(): " + AIRail.BuildRailTrack(12648, AIRail.RAILTRACK_NE_SW));
|
||||
print(" BuildRailTrack(): " + AIRail.BuildRailTrack(12650, AIRail.RAILTRACK_NW_NE));
|
||||
print(" BuildRailWaypoint(): " + AIRail.BuildRailWaypoint(12644));
|
||||
print(" BuildRailWaypoint(): " + AIRail.BuildRailWaypoint(12646));
|
||||
print(" BuildRailWaypoint(): " + AIRail.BuildRailWaypoint(12648));
|
||||
print(" BuildRailWaypoint(): " + AIRail.BuildRailWaypoint(12650));
|
||||
print(" IsRailWaypointTile(): " + AIRail.IsRailWaypointTile(12644));
|
||||
print(" IsRailWaypointTile(): " + AIRail.IsRailWaypointTile(12646));
|
||||
print(" IsRailWaypointTile(): " + AIRail.IsRailWaypointTile(12648));
|
||||
print(" IsRailWaypointTile(): " + AIRail.IsRailWaypointTile(12650));
|
||||
print(" RemoveRailWaypointTileRectangle():" + AIRail.RemoveRailWaypointTileRectangle(12644, 12646, false));
|
||||
print(" RemoveRailWaypointTileRectangle():" + AIRail.RemoveRailWaypointTileRectangle(12648, 12650, true));
|
||||
print(" IsRailWaypointTile(): " + AIRail.IsRailWaypointTile(12644));
|
||||
print(" IsRailWaypointTile(): " + AIRail.IsRailWaypointTile(12646));
|
||||
print(" IsRailWaypointTile(): " + AIRail.IsRailWaypointTile(12648));
|
||||
print(" IsRailWaypointTile(): " + AIRail.IsRailWaypointTile(12650));
|
||||
print(" HasTransportType(): " + AITile.HasTransportType(12644, AITile.TRANSPORT_RAIL));
|
||||
print(" HasTransportType(): " + AITile.HasTransportType(12646, AITile.TRANSPORT_RAIL));
|
||||
print(" HasTransportType(): " + AITile.HasTransportType(12648, AITile.TRANSPORT_RAIL));
|
||||
print(" HasTransportType(): " + AITile.HasTransportType(12650, AITile.TRANSPORT_RAIL));
|
||||
print(" DemolishTile(): " + AITile.DemolishTile(12648));
|
||||
print(" DemolishTile(): " + AITile.DemolishTile(12650));
|
||||
}
|
||||
|
||||
function Regression::Road()
|
||||
@@ -1441,7 +1499,7 @@ function Regression::TileList()
|
||||
print(" " + i + " => " + list.GetValue(i));
|
||||
}
|
||||
|
||||
list = AITileList_StationType(4, AIStation.STATION_BUS_STOP);
|
||||
list = AITileList_StationType(6, AIStation.STATION_BUS_STOP);
|
||||
print("");
|
||||
print("--TileList_StationType--");
|
||||
print(" Count(): " + list.Count());
|
||||
|
@@ -867,105 +867,165 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
||||
--Bridge--
|
||||
Bridge -1
|
||||
IsValidBridge(): false
|
||||
GetName(): (null : 0x00000000)
|
||||
GetName():
|
||||
VT_RAIL: (null : 0x00000000)
|
||||
VT_ROAD: (null : 0x00000000)
|
||||
VT_WATER: (null : 0x00000000)
|
||||
VT_AIR: (null : 0x00000000)
|
||||
GetMaxSpeed(): -1
|
||||
GetPrice(): -1
|
||||
GetMaxLength(): -1
|
||||
GetMinLength(): -1
|
||||
Bridge 0
|
||||
IsValidBridge(): true
|
||||
GetName(): Wooden rail bridge
|
||||
GetName():
|
||||
VT_RAIL: Wooden rail bridge
|
||||
VT_ROAD: Wooden road bridge
|
||||
VT_WATER: Aqueduct
|
||||
VT_AIR: (null : 0x00000000)
|
||||
GetMaxSpeed(): 32
|
||||
GetPrice(): 450
|
||||
GetMaxLength(): 66
|
||||
GetMinLength(): 2
|
||||
Bridge 1
|
||||
IsValidBridge(): true
|
||||
GetName(): Concrete rail bridge
|
||||
GetName():
|
||||
VT_RAIL: Concrete rail bridge
|
||||
VT_ROAD: Concrete road bridge
|
||||
VT_WATER: Aqueduct
|
||||
VT_AIR: (null : 0x00000000)
|
||||
GetMaxSpeed(): 48
|
||||
GetPrice(): 630
|
||||
GetMaxLength(): 4
|
||||
GetMinLength(): 2
|
||||
Bridge 2
|
||||
IsValidBridge(): true
|
||||
GetName(): Steel girder rail bridge
|
||||
GetName():
|
||||
VT_RAIL: Steel girder rail bridge
|
||||
VT_ROAD: Steel girder road bridge
|
||||
VT_WATER: Aqueduct
|
||||
VT_AIR: (null : 0x00000000)
|
||||
GetMaxSpeed(): 64
|
||||
GetPrice(): 811
|
||||
GetMaxLength(): 7
|
||||
GetMinLength(): 2
|
||||
Bridge 3
|
||||
IsValidBridge(): true
|
||||
GetName(): Reinforced concrete suspension rail bridge
|
||||
GetName():
|
||||
VT_RAIL: Reinforced concrete suspension rail bridge
|
||||
VT_ROAD: Reinforced concrete suspension road bridge
|
||||
VT_WATER: Aqueduct
|
||||
VT_AIR: (null : 0x00000000)
|
||||
GetMaxSpeed(): 80
|
||||
GetPrice(): 946
|
||||
GetMaxLength(): 12
|
||||
GetMinLength(): 4
|
||||
Bridge 4
|
||||
IsValidBridge(): true
|
||||
GetName(): Steel suspension rail bridge
|
||||
GetName():
|
||||
VT_RAIL: Steel suspension rail bridge
|
||||
VT_ROAD: Steel suspension road bridge
|
||||
VT_WATER: Aqueduct
|
||||
VT_AIR: (null : 0x00000000)
|
||||
GetMaxSpeed(): 96
|
||||
GetPrice(): 1042
|
||||
GetMaxLength(): 66
|
||||
GetMinLength(): 5
|
||||
Bridge 5
|
||||
IsValidBridge(): true
|
||||
GetName(): Steel suspension rail bridge
|
||||
GetName():
|
||||
VT_RAIL: Steel suspension rail bridge
|
||||
VT_ROAD: Steel suspension road bridge
|
||||
VT_WATER: Aqueduct
|
||||
VT_AIR: (null : 0x00000000)
|
||||
GetMaxSpeed(): 112
|
||||
GetPrice(): 1081
|
||||
GetMaxLength(): 66
|
||||
GetMinLength(): 5
|
||||
Bridge 6
|
||||
IsValidBridge(): true
|
||||
GetName(): Steel cantilever rail bridge
|
||||
GetName():
|
||||
VT_RAIL: Steel cantilever rail bridge
|
||||
VT_ROAD: Steel cantilever road bridge
|
||||
VT_WATER: Aqueduct
|
||||
VT_AIR: (null : 0x00000000)
|
||||
GetMaxSpeed(): 160
|
||||
GetPrice(): 1261
|
||||
GetMaxLength(): 9
|
||||
GetMinLength(): 5
|
||||
Bridge 7
|
||||
IsValidBridge(): true
|
||||
GetName(): Steel cantilever rail bridge
|
||||
GetName():
|
||||
VT_RAIL: Steel cantilever rail bridge
|
||||
VT_ROAD: Steel cantilever road bridge
|
||||
VT_WATER: Aqueduct
|
||||
VT_AIR: (null : 0x00000000)
|
||||
GetMaxSpeed(): 208
|
||||
GetPrice(): 1306
|
||||
GetMaxLength(): 10
|
||||
GetMinLength(): 5
|
||||
Bridge 8
|
||||
IsValidBridge(): true
|
||||
GetName(): Steel cantilever rail bridge
|
||||
GetName():
|
||||
VT_RAIL: Steel cantilever rail bridge
|
||||
VT_ROAD: Steel cantilever road bridge
|
||||
VT_WATER: Aqueduct
|
||||
VT_AIR: (null : 0x00000000)
|
||||
GetMaxSpeed(): 240
|
||||
GetPrice(): 1396
|
||||
GetMaxLength(): 11
|
||||
GetMinLength(): 5
|
||||
Bridge 9
|
||||
IsValidBridge(): true
|
||||
GetName(): Steel girder rail bridge
|
||||
GetName():
|
||||
VT_RAIL: Steel girder rail bridge
|
||||
VT_ROAD: Steel girder road bridge
|
||||
VT_WATER: Aqueduct
|
||||
VT_AIR: (null : 0x00000000)
|
||||
GetMaxSpeed(): 256
|
||||
GetPrice(): 1351
|
||||
GetMaxLength(): 4
|
||||
GetMinLength(): 2
|
||||
Bridge 10
|
||||
IsValidBridge(): false
|
||||
GetName(): (null : 0x00000000)
|
||||
GetName():
|
||||
VT_RAIL: (null : 0x00000000)
|
||||
VT_ROAD: (null : 0x00000000)
|
||||
VT_WATER: (null : 0x00000000)
|
||||
VT_AIR: (null : 0x00000000)
|
||||
GetMaxSpeed(): -1
|
||||
GetPrice(): -1
|
||||
GetMaxLength(): -1
|
||||
GetMinLength(): -1
|
||||
Bridge 11
|
||||
IsValidBridge(): false
|
||||
GetName(): (null : 0x00000000)
|
||||
GetName():
|
||||
VT_RAIL: (null : 0x00000000)
|
||||
VT_ROAD: (null : 0x00000000)
|
||||
VT_WATER: (null : 0x00000000)
|
||||
VT_AIR: (null : 0x00000000)
|
||||
GetMaxSpeed(): -1
|
||||
GetPrice(): -1
|
||||
GetMaxLength(): -1
|
||||
GetMinLength(): -1
|
||||
Bridge 12
|
||||
IsValidBridge(): false
|
||||
GetName(): (null : 0x00000000)
|
||||
GetName():
|
||||
VT_RAIL: (null : 0x00000000)
|
||||
VT_ROAD: (null : 0x00000000)
|
||||
VT_WATER: (null : 0x00000000)
|
||||
VT_AIR: (null : 0x00000000)
|
||||
GetMaxSpeed(): -1
|
||||
GetPrice(): -1
|
||||
GetMaxLength(): -1
|
||||
GetMinLength(): -1
|
||||
Bridge 13
|
||||
IsValidBridge(): false
|
||||
GetName(): (null : 0x00000000)
|
||||
GetName():
|
||||
VT_RAIL: (null : 0x00000000)
|
||||
VT_ROAD: (null : 0x00000000)
|
||||
VT_WATER: (null : 0x00000000)
|
||||
VT_AIR: (null : 0x00000000)
|
||||
GetMaxSpeed(): -1
|
||||
GetPrice(): -1
|
||||
GetMaxLength(): -1
|
||||
@@ -1292,7 +1352,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
||||
GetRunningCost(): 820
|
||||
GetPower(): 300
|
||||
GetWeight(): 47
|
||||
GetMaxTractiveEffort(): 139
|
||||
GetMaxTractiveEffort(): 136
|
||||
GetVehicleType(): 0
|
||||
GetRailType(): 0
|
||||
GetRoadType(): -1
|
||||
@@ -1436,7 +1496,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
||||
GetRunningCost(): 1968
|
||||
GetPower(): 1000
|
||||
GetWeight(): 131
|
||||
GetMaxTractiveEffort(): 388
|
||||
GetMaxTractiveEffort(): 381
|
||||
GetVehicleType(): 0
|
||||
GetRailType(): 0
|
||||
GetRoadType(): -1
|
||||
@@ -1454,7 +1514,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
||||
GetRunningCost(): 2296
|
||||
GetPower(): 1200
|
||||
GetWeight(): 162
|
||||
GetMaxTractiveEffort(): 480
|
||||
GetMaxTractiveEffort(): 471
|
||||
GetVehicleType(): 0
|
||||
GetRailType(): 0
|
||||
GetRoadType(): -1
|
||||
@@ -7253,7 +7313,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
||||
IsBuoyTile(): false
|
||||
IsLockTile(): false
|
||||
IsCanalTile(): false
|
||||
GetBankBalance(): 479851
|
||||
GetBankBalance(): 479664
|
||||
BuildWaterDepot(): true
|
||||
BuildDock(): true
|
||||
BuildBuoy(): true
|
||||
@@ -7266,7 +7326,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
||||
IsBuoyTile(): true
|
||||
IsLockTile(): true
|
||||
IsCanalTile(): true
|
||||
GetBankBalance(): 465257
|
||||
GetBankBalance(): 465070
|
||||
|
||||
--AIWaypointList(BUOY)--
|
||||
Count(): 1
|
||||
@@ -7285,7 +7345,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
||||
IsBuoyTile(): false
|
||||
IsLockTile(): false
|
||||
IsCanalTile(): false
|
||||
GetBankBalance(): 459862
|
||||
GetBankBalance(): 459675
|
||||
BuildWaterDepot(): true
|
||||
BuildDock(): true
|
||||
|
||||
@@ -7334,6 +7394,35 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
||||
HasTransportType(): true
|
||||
HasTransportType(): false
|
||||
RemoveRail(): true
|
||||
HasTransportType(): false
|
||||
HasTransportType(): false
|
||||
BuildRailTrack(): true
|
||||
RemoveRailTrack(): false
|
||||
RemoveRailTrack(): true
|
||||
BuildRail(): true
|
||||
HasTransportType(): true
|
||||
HasTransportType(): false
|
||||
RemoveRail(): true
|
||||
HasTransportType(): true
|
||||
HasTransportType(): false
|
||||
BuildRailTrack(): true
|
||||
HasTransportType(): true
|
||||
HasTransportType(): true
|
||||
RemoveRail(): true
|
||||
HasTransportType(): false
|
||||
HasTransportType(): false
|
||||
BuildRailTrack(): false
|
||||
BuildRailTrack(): false
|
||||
BuildRailTrack(): true
|
||||
BuildRailTrack(): true
|
||||
BuildRailTrack(): false
|
||||
DemolishTile(): true
|
||||
BuildRailTrack(): true
|
||||
BuildRailTrack(): false
|
||||
BuildRailTrack(): false
|
||||
BuildRailTrack(): false
|
||||
DemolishTile(): true
|
||||
BuildRailTrack(): true
|
||||
Depot
|
||||
IsRailTile(): false
|
||||
BuildRailDepot(): false
|
||||
@@ -7362,6 +7451,30 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
||||
IsRailStationTile(): false
|
||||
IsRailStationTile(): false
|
||||
IsRailStationTile(): false
|
||||
Waypoint
|
||||
BuildRailTrack(): true
|
||||
BuildRailTrack(): true
|
||||
BuildRailTrack(): true
|
||||
BuildRailWaypoint(): false
|
||||
BuildRailWaypoint(): true
|
||||
BuildRailWaypoint(): true
|
||||
BuildRailWaypoint(): false
|
||||
IsRailWaypointTile(): false
|
||||
IsRailWaypointTile(): true
|
||||
IsRailWaypointTile(): true
|
||||
IsRailWaypointTile(): false
|
||||
RemoveRailWaypointTileRectangle():true
|
||||
RemoveRailWaypointTileRectangle():true
|
||||
IsRailWaypointTile(): false
|
||||
IsRailWaypointTile(): false
|
||||
IsRailWaypointTile(): false
|
||||
IsRailWaypointTile(): false
|
||||
HasTransportType(): false
|
||||
HasTransportType(): false
|
||||
HasTransportType(): true
|
||||
HasTransportType(): true
|
||||
DemolishTile(): true
|
||||
DemolishTile(): true
|
||||
|
||||
--RailTypeList--
|
||||
Count(): 1
|
||||
@@ -7485,9 +7598,9 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
||||
GetName(0): Look, a station
|
||||
GetLocation(1): 29253
|
||||
GetLocation(1000): -1
|
||||
GetStationID(33411): 4
|
||||
GetStationID(33411): 6
|
||||
GetStationID(34411): 65535
|
||||
GetStationID(33411): 4
|
||||
GetStationID(33411): 6
|
||||
HasRoadType(3, TRAM): false
|
||||
HasRoadType(3, ROAD): false
|
||||
HasRoadType(33411, TRAM): false
|
||||
|
@@ -1,99 +0,0 @@
|
||||
; $Id$
|
||||
;
|
||||
; This represents more or less nothingness
|
||||
;
|
||||
[metadata]
|
||||
name = NoMusic
|
||||
shortname = NULL
|
||||
version = 0
|
||||
fallback = true
|
||||
description = A music pack without actual music.
|
||||
description.af_ZA = 'n Musiek stel sonder enige musiek.
|
||||
description.ar_EG = مجموعة موسيقى بدون موسيقى
|
||||
description.be_BY = "Пусты" набор музычнага афармлення, які не зьмяшчае ніякай музыкі.
|
||||
description.bg_BG = Празен музикален пакет.
|
||||
description.ca_ES = Una llista de música sense cap peça.
|
||||
description.cs_CZ = Prázná hudební sada.
|
||||
description.cy_GB = Pecyn cerddoriaeth heb unrhyw gerddoriaeth ynddo.
|
||||
description.da_DK = En musikpakke uden musik.
|
||||
description.de_DE = Ein Musikset ohne Musik.
|
||||
description.el_GR = Ένα πάκετο μουσικής χωρίς πραγματική μουσική.
|
||||
description.en_AU = A music pack without actual music.
|
||||
description.en_US = A music pack without actual music.
|
||||
description.es_ES = Un conjunto de música vacío.
|
||||
description.et_EE = Muusikakogu ilma muusikata.
|
||||
description.fi_FI = Musiikkipaketti, jossa ei ole musiikkia.
|
||||
description.fr_FR = Un pack de musiques sans musiques.
|
||||
description.ga_IE = Pacáiste ceoil gan aon cheol iarbhír ann.
|
||||
description.gd_GB = Pacaid ciùil anns nach eil fonn sam bith.
|
||||
description.gl_ES = Un conxunto de músicas sen ningunha música.
|
||||
description.hr_HR = Glazbeni paket bez ikakve glazbe.
|
||||
description.hu_HU = Zenei alapcsomag zene nélkül.
|
||||
description.id_ID = Paket musik tanpa musik sungguhan.
|
||||
description.is_IS = Tónlistarpakki sem er í raun án tónlistar.
|
||||
description.it_IT = Un pacchetto musicale non contenente alcuna musica.
|
||||
description.ja_JP = 空の音楽パック
|
||||
description.ko_KR = 실제 음악이 없는 음악 목록입니다.
|
||||
description.la_VA = Sarcina musicae sine ulla musica.
|
||||
description.lb_LU = E Musikpack ouni aktuell Musik.
|
||||
description.lt_LT = Muzikos pakas be muzikos.
|
||||
description.lv_LV = Mūzikas kopa bez mūzikas
|
||||
description.nb_NO = En musikkpakke uten noe musikk.
|
||||
description.nl_NL = Een muziekset zonder muziek.
|
||||
description.nn_NO = Ei musikkpakke utan noko musikk.
|
||||
description.pl_PL = Zestaw utworów muzycznych nie zawierający żadnej muzyki.
|
||||
description.pt_BR = Um pacote de músicas sem músicas.
|
||||
description.pt_PT = Um conjunto de música vazio.
|
||||
description.ro_RO = Un set de muzică fără muzică inclusă.
|
||||
description.ru_RU = "Пустой" набор музыкального оформления, не содержащий никакой музыки.
|
||||
description.sk_SK = Sada hudby neobsahujúca hudbu.
|
||||
description.sl_SI = Glasbeni paket z vključeno glasbo.
|
||||
description.sr_RS = Prazan skup muzičkih numera.
|
||||
description.sv_SE = Ett musikpaket utan någon musik.
|
||||
description.ta_IN = இசை இல்லாத இசைத்தொகுப்பு.
|
||||
description.th_TH = ชุดเพลงประกอบแบบไม่มีเสียงเพลง
|
||||
description.tr_TR = Müzik içermeyen boş bir müzik paketi.
|
||||
description.uk_UA = Порожній набір музики.
|
||||
description.vi_VN = Gói âm nhạc này không có nhạc nào.
|
||||
description.zh_CN = 一个没有实际内容的音乐包.
|
||||
description.zh_TW = 不含任何音樂的音樂集。
|
||||
|
||||
[files]
|
||||
theme =
|
||||
old_0 =
|
||||
old_1 =
|
||||
old_2 =
|
||||
old_3 =
|
||||
old_4 =
|
||||
old_5 =
|
||||
old_6 =
|
||||
old_7 =
|
||||
old_8 =
|
||||
old_9 =
|
||||
new_0 =
|
||||
new_1 =
|
||||
new_2 =
|
||||
new_3 =
|
||||
new_4 =
|
||||
new_5 =
|
||||
new_6 =
|
||||
new_7 =
|
||||
new_8 =
|
||||
new_9 =
|
||||
ezy_0 =
|
||||
ezy_1 =
|
||||
ezy_2 =
|
||||
ezy_3 =
|
||||
ezy_4 =
|
||||
ezy_5 =
|
||||
ezy_6 =
|
||||
ezy_7 =
|
||||
ezy_8 =
|
||||
ezy_9 =
|
||||
|
||||
[md5s]
|
||||
|
||||
[names]
|
||||
|
||||
[origin]
|
||||
default = This file was part of your OpenTTD installation.
|
@@ -1,67 +0,0 @@
|
||||
; $Id$
|
||||
;
|
||||
; This represents more or less nothingness
|
||||
;
|
||||
[metadata]
|
||||
name = NoSound
|
||||
shortname = NULL
|
||||
version = 2
|
||||
fallback = true
|
||||
description = A sound pack without any sounds.
|
||||
description.af_ZA = 'n Klank stel sonder enige klanke.
|
||||
description.ar_EG = مجموعة صوت بدوت اصوات مضافة
|
||||
description.be_BY = "Пусты" набор гукавога афармленьня, які не зьмяшчае ніякіх гукаў.
|
||||
description.bg_BG = Празен звуков пакет.
|
||||
description.ca_ES = Una llista de sons buida.
|
||||
description.cs_CZ = Prázdná sada zvuků.
|
||||
description.cy_GB = Pecyn sain heb unrhyw effeithiau sain ynddo.
|
||||
description.da_DK = En lydpakke uden lyde.
|
||||
description.de_DE = Basissounds ohne Sound.
|
||||
description.el_GR = Ένα πάκετο ήχων χώρις ήχους.
|
||||
description.en_AU = A sound pack without any sounds.
|
||||
description.en_US = A sound pack without any sounds.
|
||||
description.es_ES = Un conjunto de sonidos vacío.
|
||||
description.et_EE = Helikogu ilma helideta.
|
||||
description.eu_ES = Soinurik gabeko soinu pakete bat
|
||||
description.fi_FI = Äänipaketti, jossa ei ole ääniä.
|
||||
description.fr_FR = Un pack de sons sans sons.
|
||||
description.ga_IE = Pacáiste fuaimeanna gan aon fhuaimeanna ann.
|
||||
description.gd_GB = Pacaid fhuaimean anns nach eil fuaim sam bith.
|
||||
description.gl_ES = Un conxunto de sons sen ningún son
|
||||
description.hr_HR = Zvučni paket bez ikakvih zvukova.
|
||||
description.hu_HU = Hang alapcsomag hangok nélkül.
|
||||
description.id_ID = Paket efek suara tanpa suara apapun.
|
||||
description.is_IS = Hljóðpakki án hljóðs.
|
||||
description.it_IT = Un pacchetto sonoro non contenente alcun suono.
|
||||
description.ja_JP = 空の効果音パック
|
||||
description.ko_KR = 아무런 효과음도 없는 효과음 팩입니다.
|
||||
description.la_VA = Sarcina sonorum sine ullis sonis.
|
||||
description.lb_LU = E Soundpack ouni iergendee Sound.
|
||||
description.lt_LT = Garsų pakas be jokių garsų.
|
||||
description.nb_NO = En lydpakke uten noen lyder.
|
||||
description.nl_NL = Een geluidset zonder geluid.
|
||||
description.nn_NO = Ei lydpakke utan nokon lydar.
|
||||
description.pl_PL = Zestaw dźwięków nie zawierający żadnych dźwięków.
|
||||
description.pt_BR = Um pacote de sons sem sons.
|
||||
description.pt_PT = Um conjunto de sons vazio.
|
||||
description.ro_RO = Un set de sunete fără nici un sunet inclus.
|
||||
description.ru_RU = "Пустой" набор звукового оформления, не содержащий никаких звуков.
|
||||
description.sk_SK = Zvuková sada neobsahujúca zvuky.
|
||||
description.sl_SI = Zvočni paket brez zvoka.
|
||||
description.sr_RS = Prazan skup zvukova.
|
||||
description.sv_SE = Ett ljudpaket utan några ljud.
|
||||
description.ta_IN = ஒலிகள் இல்லாத ஒலி தொகுப்பு.
|
||||
description.th_TH = ชุดเสียงแบบไร้เสียง
|
||||
description.tr_TR = Ses içermeyen boş bir ses kümesi.
|
||||
description.uk_UA = Порожній набір звуків.
|
||||
description.vi_VN = Gói âm thanh này không có âm thanh nào.
|
||||
description.zh_CN = 一个空的音效包.
|
||||
description.zh_TW = 不含任何音效的音效集。
|
||||
|
||||
[files]
|
||||
samples =
|
||||
|
||||
[md5s]
|
||||
|
||||
[origin]
|
||||
default = This file was part of your OpenTTD installation.
|
Binary file not shown.
Binary file not shown.
@@ -1,79 +0,0 @@
|
||||
; $Id$
|
||||
;
|
||||
; This represents the original graphics as on the non-German Transport
|
||||
; Tycoon Deluxe DOS CD.
|
||||
;
|
||||
[metadata]
|
||||
name = original_dos
|
||||
shortname = TTDD
|
||||
version = 1
|
||||
palette = DOS
|
||||
description = Original Transport Tycoon Deluxe DOS edition graphics.
|
||||
description.af_ZA = Oorspronklike Transport Tycoon Deluxe DOS uitgawe grafieke.
|
||||
description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الرسومية نسخة الدوس
|
||||
description.be_BY = Арыґінальная ґрафіка з Transport Tycoon Deluxe для DOS.
|
||||
description.bg_BG = Оригинални графики на Transport Tycoon Deluxe за DOS.
|
||||
description.ca_ES = Gràfics originals del Transport Tycoon Deluxe pel DOS.
|
||||
description.cs_CZ = Původní sada grafik Transport Tycoon Deluxe (verze pro DOS).
|
||||
description.cy_GB = Graffeg gwreiddiol fersiwn DOS o Transport Tycoon Deluxe.
|
||||
description.da_DK = Originalgrafik fra Transport Tycoon Deluxe DOS-version.
|
||||
description.de_DE = Original Transport Tycoon Deluxe DOS Basisgrafiken.
|
||||
description.el_GR = Αρχικά γραφικά από το Transport Tycoon Deluxe έκδοση DOS.
|
||||
description.en_AU = Original Transport Tycoon Deluxe DOS edition graphics.
|
||||
description.en_US = Original Transport Tycoon Deluxe DOS edition graphics.
|
||||
description.es_ES = Gráficos originales de Transport Tycoon Deluxe versión DOS.
|
||||
description.et_EE = Algse Transport Tycoon Deluxe DOSi versiooni graafika.
|
||||
description.fi_FI = Alkuperäiset Transport Tycoon Deluxen DOS-version grafiikat.
|
||||
description.fr_FR = Graphiques originaux de Transport Tycoon Deluxe (version DOS).
|
||||
description.ga_IE = Grafaicí bunaidhTransport Tycoon Deluxe, eagrán DOS.
|
||||
description.gd_GB = Grafaigeachd aig an deasachadh DOS tùsail aig Transport Tycoon Deluxe.
|
||||
description.gl_ES = Graficos da edición orixinal de Transport Tycoon Deluxe para DOS.
|
||||
description.hr_HR = Originalna grafika za Transport Tycoon Deluxe DOS izdanje.
|
||||
description.hu_HU = Az eredeti Transport Tycoon Deluxe DOS verziójának grafikája.
|
||||
description.id_ID = Grafik orisinil Transport Tycoon Deluxe versi DOS.
|
||||
description.is_IS = Upprunalega grafíkin úr Transport Tycoon Deluxe DOS útgáfunni.
|
||||
description.it_IT = Grafica originale di Transport Tycoon Deluxe, edizione DOS.
|
||||
description.ja_JP = Transport Tycoon Deluxe オリジナル版 グラフィック (DOS)
|
||||
description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 도스 에디션의 그래픽입니다.
|
||||
description.la_VA = Graphica ex editione originale Transport Tycoon Deluxe DOS.
|
||||
description.lb_LU = Original Transport Tycoon Deluxe DOS Editioun Grafik.
|
||||
description.lt_LT = Originali Transport Tycoon Deluxe DOS leidimo grafika.
|
||||
description.nb_NO = Original grafikk fra Transport Tycoon Deluxe for DOS.
|
||||
description.nl_NL = Originele graphics van de Transport Tycoon Deluxe DOS-versie.
|
||||
description.nn_NO = Original grafikk frå Transport Tycoon Deluxe for DOS.
|
||||
description.pl_PL = Oryginalna edycja grafik dla Transport Tycoon Deluxe DOS.
|
||||
description.pt_BR = Gráficos Originais do Transport Tycoon Deluxe, Edição DOS.
|
||||
description.pt_PT = Gráficos originais da edição DOS de Transport Tycoon Deluxe.
|
||||
description.ro_RO = Setul grafic original al Transport Tycoon Deluxe pentru DOS.
|
||||
description.ru_RU = Оригинальная графика из Transport Tycoon Deluxe для DOS.
|
||||
description.sk_SK = Pôvodná grafika Transport Tycoon Deluxe (DOS).
|
||||
description.sl_SI = Originalna grafika Transport Tycoon Deluxe za različico DOS.
|
||||
description.sr_RS = Originalni skup grafika Transport Tycoon Deluxe DOS izdanja.
|
||||
description.sv_SE = Originalgrafiken från Transport Tycoon Deluxe, DOS-utgåvan.
|
||||
description.ta_IN = அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் DOS பதிப்பு அசைவூட்டங்கள்.
|
||||
description.th_TH = กราฟฟิกต้นตำหรับของ Transport Tycoon Deluxe DOS edition
|
||||
description.tr_TR = Özgün Transport Tycoon Deluxe DOS sürümü grafikleri.
|
||||
description.uk_UA = Оригінальна графіка з Transport Tycoon Deluxe DOS edition.
|
||||
description.vi_VN = Đồ họa gốc từ phiên bản Transport Tycoon Deluxe trên DOS
|
||||
description.zh_CN = 运输大亨DOS豪华版原版图形包.
|
||||
description.zh_TW = 原版 Transport Tycoon Deluxe DOS 版的圖形。
|
||||
|
||||
[files]
|
||||
base = TRG1.GRF
|
||||
logos = TRGI.GRF
|
||||
arctic = TRGC.GRF
|
||||
tropical = TRGH.GRF
|
||||
toyland = TRGT.GRF
|
||||
extra = OPENTTD.GRF
|
||||
|
||||
[md5s]
|
||||
TRG1.GRF = 9311676280e5b14077a8ee41c1b42192
|
||||
TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8
|
||||
TRGC.GRF = ed446637e034104c5559b32c18afe78d
|
||||
TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9
|
||||
TRGT.GRF = e30e8a398ae86c03dc534a8ac7dfb3b6
|
||||
OPENTTD.GRF = 505d96061556d3bb5cec6234096ec5bc
|
||||
|
||||
[origin]
|
||||
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
|
||||
OPENTTD.GRF = This file was part of your OpenTTD installation.
|
@@ -1,67 +0,0 @@
|
||||
; $Id$
|
||||
;
|
||||
; This represents the original sounds as on the Transport
|
||||
; Tycoon Deluxe DOS CD.
|
||||
;
|
||||
[metadata]
|
||||
name = original_dos
|
||||
shortname = TTDO
|
||||
version = 0
|
||||
description = Original Transport Tycoon Deluxe DOS edition sounds.
|
||||
description.af_ZA = Oorspronklike Transport Tycoon Deluxe DOS uitgawe klanke.
|
||||
description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الصوتية نسخة الدوس
|
||||
description.be_BY = Арыґінальны набор гукавога афармленьня з гульні Transport Tycoon Deluxe для DOS.
|
||||
description.bg_BG = Оригинални звуци на Transport Tycoon Deluxe за DOS.
|
||||
description.ca_ES = Sons originals del Transport Tycoon Deluxe pel DOS.
|
||||
description.cs_CZ = Původní sada zvuků Transport Tycoon Deluxe (verze pro DOS).
|
||||
description.cy_GB = Effeithiau sain gwreiddiol fersiwn DOS o Transport Tycoon Deluxe.
|
||||
description.da_DK = Originallyd fra Transport Tycoon Deluxe DOS-version.
|
||||
description.de_DE = Original Transport Tycoon Deluxe DOS Basissounds.
|
||||
description.el_GR = Αρχικοί ήχοι από το Transport Tycoon Deluxe έκδοση DOS.
|
||||
description.en_AU = Original Transport Tycoon Deluxe DOS edition sounds.
|
||||
description.en_US = Original Transport Tycoon Deluxe DOS edition sounds.
|
||||
description.es_ES = Sonidos originales de Transport Tycoon Deluxe versión DOS.
|
||||
description.et_EE = Algse Transport Tycoon Deluxe DOSi versiooni helid.
|
||||
description.fi_FI = Alkuperäiset Transport Tycoon Deluxen DOS-version äänet.
|
||||
description.fr_FR = Sons originaux de Transport Tycoon Deluxe (version DOS).
|
||||
description.ga_IE = Fuaimeanna bunaidh Transport Tycoon Deluxe, eagrán DOS.
|
||||
description.gd_GB = Fuaimean aig an deasachadh DOS tùsail aig Transport Tycoon Deluxe.
|
||||
description.gl_ES = Sons da edición orixinal de Transport Tycoon Deluxe para DOS.
|
||||
description.hr_HR = Originalni zvukovi za Transport Tycoon Deluxe DOS izdanje.
|
||||
description.hu_HU = Az eredeti Transport Tycoon Deluxe DOS verziójának hangjai.
|
||||
description.id_ID = Efek suara orisinil Transport Tycoon Deluxe versi DOS.
|
||||
description.is_IS = Upprunalega hljóðið úr Transport Tycoon Deluxe DOS útgáfunni.
|
||||
description.it_IT = Suoni originali di Transport Tycoon Deluxe, edizione DOS.
|
||||
description.ja_JP = Transport Tycoon Deluxe オリジナル版 効果音 (DOS)
|
||||
description.ko_KR = 오리지널 트랜스포트 타이쿤 도스 에디션의 효과음입니다.
|
||||
description.la_VA = Soni ex editione originale Transport Tycoon Deluxe DOS.
|
||||
description.lb_LU = Original Transport Tycoon Deluxe DOS Editioun Sound.
|
||||
description.lt_LT = Originalūs Transport Tycoon Deluxe DOS leidimo garsai.
|
||||
description.nb_NO = Originale lyder fra Transport Tycoon Deluxe for DOS.
|
||||
description.nl_NL = Originele geluiden van de Transport Tycoon Deluxe DOS-versie.
|
||||
description.nn_NO = Originale lydar frå Transport Tycoon Deluxe for DOS.
|
||||
description.pl_PL = Oryginalna edycja dźwięków dla Transport Tycoon Deluxe DOS.
|
||||
description.pt_BR = Sons Originais do Transport Tycoon Deluxe, Edição DOS.
|
||||
description.pt_PT = Sons originais da edição DOS de Transport Tycoon Deluxe.
|
||||
description.ro_RO = Setul de sunete original al Transport Tycoon Deluxe pentru DOS.
|
||||
description.ru_RU = Оригинальный набор звукового оформления из игры Transport Tycoon Deluxe для DOS.
|
||||
description.sk_SK = Pôvodné zvuky Transport Tycoon Deluxe (DOS).
|
||||
description.sl_SI = Originalni zvoki Transport Tycoon Deluxe različice DOS.
|
||||
description.sr_RS = Originalni skup zvukova Transport Tycoon Deluxe DOS izdanja.
|
||||
description.sv_SE = Originalljuden från Transport Tycoon Deluxe, DOS-utgåvan.
|
||||
description.ta_IN = அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் DOS பதிப்பு ஒலிகள்.
|
||||
description.th_TH = เสียงต้นตำหรับของ Transport Tycoon Deluxe DOS edition
|
||||
description.tr_TR = Özgün Transport Tycoon Deluxe DOS sürümü sesleri.
|
||||
description.uk_UA = Оригінальний набір звуків з Transport Tycoon Deluxe DOS edition.
|
||||
description.vi_VN = Âm thanh gốc từ phiên bản Transport Tycoon Deluxe trên DOS
|
||||
description.zh_CN = 运输大亨DOS豪华版原版音效包.
|
||||
description.zh_TW = 原版 Transport Tycoon Deluxe DOS 版的音效。
|
||||
|
||||
[files]
|
||||
samples = SAMPLE.CAT
|
||||
|
||||
[md5s]
|
||||
SAMPLE.CAT = 422ea3dd074d2859bb51639a6e0e85da
|
||||
|
||||
[origin]
|
||||
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
|
@@ -1,79 +0,0 @@
|
||||
; $Id$
|
||||
;
|
||||
; This represents the original graphics as on the German Transport
|
||||
; Tycoon Deluxe DOS CD. It contains one broken sprite.
|
||||
;
|
||||
[metadata]
|
||||
name = original_dos_de
|
||||
shortname = TTDD
|
||||
version = 0
|
||||
palette = DOS
|
||||
description = Original Transport Tycoon Deluxe DOS (German) edition graphics.
|
||||
description.af_ZA = Oorspronklike Transport Tycoon Deluxe DOS (German) uitgawe grafieke.
|
||||
description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الالمانية نسخة الدوس
|
||||
description.be_BY = Арыґінальная ґрафіка зь нямецкай версіі Transport Tycoon Deluxe для DOS.
|
||||
description.bg_BG = Оригинални графики на Transport Tycoon Deluxe за DOS (немски) .
|
||||
description.ca_ES = Gràfics originals del Transport Tycoon Deluxe (alemany) pel DOS.
|
||||
description.cs_CZ = Původní sada grafik Transport Tycoon Deluxe (německá verze pro DOS).
|
||||
description.cy_GB = Graffeg gwreiddiol fersiwn DOS (Almaenig) o Transport Tycoon Deluxe.
|
||||
description.da_DK = Originalgrafik fra Transport Tycoon Deluxe DOS (Tysk) version.
|
||||
description.de_DE = Original Transport Tycoon Deluxe DOS (Deutsch) Basisgrafiken.
|
||||
description.el_GR = Αρχικά γραφικά από το Transport Tycoon Deluxe έκδοση DOS (Γερμανικό).
|
||||
description.en_AU = Original Transport Tycoon Deluxe DOS (German) edition graphics.
|
||||
description.en_US = Original Transport Tycoon Deluxe DOS (German) edition graphics.
|
||||
description.es_ES = Gráficos originales de Transport Tycoon Deluxe versión DOS (Alemán).
|
||||
description.et_EE = Algse Transport Tycoon Deluxe DOSi (Saksa) versiooni graafika.
|
||||
description.fi_FI = Alkuperäiset Saksassa julkaistun Transport Tycoon Deluxen DOS-version grafiikat.
|
||||
description.fr_FR = Graphiques originaux de Transport Tycoon Deluxe (version DOS allemande).
|
||||
description.ga_IE = Grafaicí bunaidhTransport Tycoon Deluxe, eagrán DOS (Gearmánach).
|
||||
description.gd_GB = Grafaigeachd aig an deasachadh DOS (Gearmailteach) tùsail aig Transport Tycoon Deluxe.
|
||||
description.gl_ES = Graficos da edición orixinal (alemá) de Transport Tycoon Deluxe para DOS.
|
||||
description.hr_HR = Originalna grafika za Transport Tycoon Deluxe DOS (Njemački) izdanje.
|
||||
description.hu_HU = Az eredeti Transport Tycoon Deluxe DOS (német) verziójának grafikája.
|
||||
description.id_ID = Grafik orisinil Transport Tycoon Deluxe versi DOS (Jerman).
|
||||
description.is_IS = Upprunalega grafíkin úr Transport Tycoon Deluxe DOS (þýsku) útgáfunni.
|
||||
description.it_IT = Grafica originale di Transport Tycoon Deluxe (tedesco), edizione DOS.
|
||||
description.ja_JP = Transport Tycoon Deluxe オリジナル版 グラフィック (DOS・ドイツ版)
|
||||
description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 도스 에디션(독일)의 그래픽입니다.
|
||||
description.la_VA = Graphica ex editione originale Transport Tycoon Deluxe DOS (Germanica).
|
||||
description.lb_LU = Original Transport Tycoon Deluxe DOS (Däitsch) Editioun Grafik.
|
||||
description.lt_LT = Originali Transport Tycoon Deluxe DOS (Vokiečių) leidimo grafika.
|
||||
description.nb_NO = Original grafikk fra Transport Tycoon Deluxe for DOS (tysk).
|
||||
description.nl_NL = Originele graphics van de Duitse Transport Tycoon Deluxe DOS-versie.
|
||||
description.nn_NO = Original grafikk frå Transport Tycoon Deluxe for DOS (tysk).
|
||||
description.pl_PL = Oryginalna edycja grafik dla Transport Tycoon Deluxe DOS (German).
|
||||
description.pt_BR = Gráficos Originais do Transport Tycoon Deluxe, Edição DOS alemã.
|
||||
description.pt_PT = Gráficos originais da edição DOS (Alemã) de Transport Tycoon Deluxe.
|
||||
description.ro_RO = Setul grafic original al Transport Tycoon Deluxe pentru DOS (ediţia germană).
|
||||
description.ru_RU = Оригинальная графика из немецкой версии Transport Tycoon Deluxe для DOS.
|
||||
description.sk_SK = Pôvodná grafika Transport Tycoon Deluxe (DOS) (v jazyku nemčina).
|
||||
description.sl_SI = Originalna grafika Transport Tycoon Deluxe za nemško različico DOS.
|
||||
description.sr_RS = Originalni skup grafika nemačkog Transport Tycoon Deluxe DOS izdanja.
|
||||
description.sv_SE = Originalgrafiken från Transport Tycoon Deluxe, DOS-utgåvan (tyska).
|
||||
description.ta_IN = அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் DOS (செருமன்) பதிப்பு அசைவூட்டங்கள்.
|
||||
description.th_TH = กราฟฟิกต้นตำหรับของ Transport Tycoon Deluxe DOS (German) edition
|
||||
description.tr_TR = Özgün Transport Tycoon Deluxe DOS (Almanca) sürümü grafikleri.
|
||||
description.uk_UA = Оригінальна графіка з Transport Tycoon Deluxe DOS edition (німецького).
|
||||
description.vi_VN = Đồ họa gốc từ phiên bản Transport Tycoon Deluxe trên DOS (tiếng Đức)
|
||||
description.zh_CN = 运输大亨DOS豪华德语版原版图形包.
|
||||
description.zh_TW = 原版 Transport Tycoon Deluxe DOS 版 (德國版) 的圖形。
|
||||
|
||||
[files]
|
||||
base = TRG1.GRF
|
||||
logos = TRGI.GRF
|
||||
arctic = TRGC.GRF
|
||||
tropical = TRGH.GRF
|
||||
toyland = TRGT.GRF
|
||||
extra = OPENTTD.GRF
|
||||
|
||||
[md5s]
|
||||
TRG1.GRF = 9311676280e5b14077a8ee41c1b42192
|
||||
TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8
|
||||
TRGC.GRF = ed446637e034104c5559b32c18afe78d
|
||||
TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9
|
||||
TRGT.GRF = fcde1d7e8a74197d72a62695884b909e
|
||||
OPENTTD.GRF = 505d96061556d3bb5cec6234096ec5bc
|
||||
|
||||
[origin]
|
||||
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
|
||||
OPENTTD.GRF = This file was part of your OpenTTD installation.
|
BIN
bin/baseset/orig_extra.grf
Normal file
BIN
bin/baseset/orig_extra.grf
Normal file
Binary file not shown.
@@ -1,79 +0,0 @@
|
||||
; $Id$
|
||||
;
|
||||
; This represents the original graphics as on the Transport
|
||||
; Tycoon Deluxe for Windows CD.
|
||||
;
|
||||
[metadata]
|
||||
name = original_windows
|
||||
shortname = TTDW
|
||||
version = 0
|
||||
palette = Windows
|
||||
description = Original Transport Tycoon Deluxe Windows edition graphics.
|
||||
description.af_ZA = Oorspronklike Transport Tycoon Deluxe Windows uitgawe grafieke.
|
||||
description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الرسومية نسخة وندوز
|
||||
description.be_BY = Арыґінальная ґрафіка з Transport Tycoon Deluxe для Windows.
|
||||
description.bg_BG = Оригинални графики на Transport Tycoon Deluxe за Windows.
|
||||
description.ca_ES = Gràfics originals del Transport Tycoon Deluxe pel Windows.
|
||||
description.cs_CZ = Původní sada grafik Transport Tycoon Deluxe (verze pro Windows).
|
||||
description.cy_GB = Graffeg gwreiddiol fersiwn Windows o Transport Tycoon Deluxe.
|
||||
description.da_DK = Originalgrafik fra Transport Tycoon Deluxe Windows-version.
|
||||
description.de_DE = Original Transport Tycoon Deluxe Windows Basisgrafiken.
|
||||
description.el_GR = Αρχικά γραφικά από το Transport Tycoon Deluxe έκδοση Windows.
|
||||
description.en_AU = Original Transport Tycoon Deluxe Windows edition graphics.
|
||||
description.en_US = Original Transport Tycoon Deluxe Windows edition graphics.
|
||||
description.es_ES = Gráficos originales de Transport Tycoon Deluxe versión Windows.
|
||||
description.et_EE = Algse Transport Tycoon Deluxe Windowsi versiooni graafika.
|
||||
description.fi_FI = Alkuperäiset Transport Tycoon Deluxen Windows-version grafiikat.
|
||||
description.fr_FR = Graphiques originaux de Transport Tycoon Deluxe (version Windows).
|
||||
description.ga_IE = Grafaicí bunaidhTransport Tycoon Deluxe, eagrán Windows.
|
||||
description.gd_GB = Grafaigeachd aig an deasachadh Windows tùsail aig Transport Tycoon Deluxe.
|
||||
description.gl_ES = Graficos da edición orixinal de Transport Tycoon Deluxe para Windows.
|
||||
description.hr_HR = Originalna grafika za Transport Tycoon Deluxe Windows izdanje.
|
||||
description.hu_HU = Az eredeti Transport Tycoon Deluxe Windows verziójának grafikája.
|
||||
description.id_ID = Grafik orisinil Transport Tycoon Deluxe versi Windows.
|
||||
description.is_IS = Upprunalega grafíkin úr Transport Tycoon Deluxe Windows útgáfunni.
|
||||
description.it_IT = Grafica originale di Transport Tycoon Deluxe, edizione Windows.
|
||||
description.ja_JP = Transport Tycoon Deluxe オリジナル版 グラフィック (Windows)
|
||||
description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 윈도 에디션의 그래픽입니다.
|
||||
description.la_VA = Graphica ex editione originale Transport Tycoon Deluxe Windows.
|
||||
description.lb_LU = Original Transport Tycoon Deluxe Windows Editioun Grafik.
|
||||
description.lt_LT = Originali Transport Tycoon Deluxe Windows leidimo grafika.
|
||||
description.nb_NO = Original grafikk fra Transport Tycoon Deluxe for Windows.
|
||||
description.nl_NL = Originele graphics van de Transport Tycoon Deluxe Windows-versie.
|
||||
description.nn_NO = Original grafikk frå Transport Tycoon Deluxe for Windows.
|
||||
description.pl_PL = Oryginalna edycja grafik dla Transport Tycoon Deluxe Windows.
|
||||
description.pt_BR = Gráficos Originais do Transport Tycoon, Edição Windows.
|
||||
description.pt_PT = Gráficos originais da edição Windows de Transport Tycoon Deluxe.
|
||||
description.ro_RO = Setul grafic original al Transport Tycoon Deluxe pentru Windows.
|
||||
description.ru_RU = Оригинальная графика из Transport Tycoon Deluxe для Windows.
|
||||
description.sk_SK = Pôvodná grafika Transport Tycoon Deluxe (Windows).
|
||||
description.sl_SI = Originalna grafika Transport Tycoon Deluxe za različico oken(windows).
|
||||
description.sr_RS = Originalni skup grafika Transport Tycoon Deluxe Windows izdanja.
|
||||
description.sv_SE = Originalgrafiken från Transport Tycoon Deluxe, Windows-utgåvan.
|
||||
description.ta_IN = அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் விண்டோஸ் பதிப்பு அசைவூட்டங்கள்.
|
||||
description.th_TH = กราฟฟิกต้ำตำหรับของ Transport Tycoon Deluxe Windows edition
|
||||
description.tr_TR = Özgün Transport Tycoon Deluxe Windows sürümü grafikleri.
|
||||
description.uk_UA = Оригінальна графіка з Transport Tycoon Deluxe Windows edition.
|
||||
description.vi_VN = Đồ họa gốc từ phiên bản Transport Tycoon Deluxe trên Windows
|
||||
description.zh_CN = 运输大亨Windows豪华版原版图形包.
|
||||
description.zh_TW = 原版 Transport Tycoon Deluxe Windows 版的圖形。
|
||||
|
||||
[files]
|
||||
base = TRG1R.GRF
|
||||
logos = TRGIR.GRF
|
||||
arctic = TRGCR.GRF
|
||||
tropical = TRGHR.GRF
|
||||
toyland = TRGTR.GRF
|
||||
extra = OPENTTD.GRF
|
||||
|
||||
[md5s]
|
||||
TRG1R.GRF = b04ce593d8c5016e07473a743d7d3358
|
||||
TRGIR.GRF = 0c2484ff6be49fc63a83be6ab5c38f32
|
||||
TRGCR.GRF = 3668f410c761a050b5e7095a2b14879b
|
||||
TRGHR.GRF = 06bf2b7a31766f048baac2ebe43457b1
|
||||
TRGTR.GRF = de53650517fe661ceaa3138c6edb0eb8
|
||||
OPENTTD.GRF = 505d96061556d3bb5cec6234096ec5bc
|
||||
|
||||
[origin]
|
||||
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
|
||||
OPENTTD.GRF = This file was part of your OpenTTD installation.
|
@@ -1,143 +0,0 @@
|
||||
; $Id$
|
||||
;
|
||||
; This represents the original music as on the Transport
|
||||
; Tycoon Deluxe for Windows CD.
|
||||
;
|
||||
[metadata]
|
||||
name = original_windows
|
||||
shortname = TTDW
|
||||
version = 1
|
||||
description = Original Transport Tycoon Deluxe Windows edition music.
|
||||
description.af_ZA = Oorspronklike Transport Tycoon Deluxe Windows uitgawe musiek.
|
||||
description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الموسيقية نسخة وندوز
|
||||
description.be_BY = Арыґінальны набор музычнага афармленьня з гульні Transport Tycoon Deluxe для Windows.
|
||||
description.bg_BG = Оригинална музика на Transport Tycoon Deluxe за Windows.
|
||||
description.ca_ES = Música original del Transport Tycoon Deluxe pel Windows.
|
||||
description.cs_CZ = Původní hudba Transport Tycoon Deluxe (verze pro Windows).
|
||||
description.cy_GB = Cerddoriaeth gwreiddiol fersion Windows o Transport Tycoon Deluxe.
|
||||
description.da_DK = Originalmusik fra Transport Tycoon Deluxe Windows-version.
|
||||
description.de_DE = Original Transport Tycoon Deluxe Windows Musikset.
|
||||
description.el_GR = Αρχική μουσική από το Transport Tycoon Deluxe έκδοση Windows.
|
||||
description.en_AU = Original Transport Tycoon Deluxe Windows edition music.
|
||||
description.en_US = Original Transport Tycoon Deluxe Windows edition music.
|
||||
description.es_ES = Música original de Transport Tycoon Deluxe versión Windows.
|
||||
description.et_EE = Algse Transport Tycoon Deluxe Windowsi versiooni muusika.
|
||||
description.fi_FI = Alkuperäinen Transport Tycoon Deluxen Windows-version musiikki.
|
||||
description.fr_FR = Musiques originales de Transport Tycoon Deluxe (version Windows).
|
||||
description.ga_IE = Ceol bunaidh Transport Tycoon Deluxe, eagrán Windows.
|
||||
description.gd_GB = Ceòl aig an deasachadh Windows tùsail aig Transport Tycoon Deluxe.
|
||||
description.gl_ES = Música da edición orixinal de Transport Tycoon Deluxe para Windows.
|
||||
description.hr_HR = Originalna glazba za Transport Tycoon Deluxe Windows izdanje.
|
||||
description.hu_HU = Az eredeti Transport Tycoon Deluxe Windows verziójának zenéje.
|
||||
description.id_ID = Musik pengiring orisinil Transport Tycoon Deluxe versi Windows.
|
||||
description.is_IS = Upprunalega tónlistin úr Transport Tycoon Deluxe Windows útgáfunni.
|
||||
description.it_IT = Musica originale di Transport Tycoon Deluxe, edizione Windows.
|
||||
description.ja_JP = Transport Tycoon Deluxe オリジナル版 音楽 (Windows)
|
||||
description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 윈도 에디션의 음악입니다.
|
||||
description.la_VA = Musica ex editione originale Transport Tycoon Deluxe Windows.
|
||||
description.lb_LU = Original Transport Tycoon Deluxe Windows Editioun Musik.
|
||||
description.lt_LT = Originali Transport Tycoon Deluxe Windows leidimo muzika.
|
||||
description.lv_LV = Oriģinālā Transport Tycoon Deluxe Windows izdevuma mūzika.
|
||||
description.nb_NO = Original musikk fra Transport Tycoon Deluxe for Windows.
|
||||
description.nl_NL = Originele muziek van de Transport Tycoon Deluxe Windows-versie.
|
||||
description.nn_NO = Original musikk frå Transport Tycoon Deluxe for Windows.
|
||||
description.pl_PL = Oryginalna edycja utworów muzycznych w Transport Tycoon Deluxe Windows.
|
||||
description.pt_BR = Música Original do Transport Tycoon Deluxe, Edição Windows
|
||||
description.pt_PT = Música original da edição Windows de Transport Tycoon Deluxe.
|
||||
description.ro_RO = Setul de muzică original al Transport Tycoon Deluxe pentru Windows.
|
||||
description.ru_RU = Оригинальный набор музыкального оформления из игры Transport Tycoon Deluxe для Windows.
|
||||
description.sk_SK = Pôvodná hudba z Transport Tycoon Deluxe (Windows).
|
||||
description.sl_SI = Originalna glasba Transport Tycoon Deluxe različice oken(windows).
|
||||
description.sr_RS = Originalni skup muzičkih numera Transport Tycoon Deluxe Windows izdanja.
|
||||
description.sv_SE = Originalmusiken från Transport Tycoon Deluxe, Windows-utgåvan.
|
||||
description.ta_IN = அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் விண்டோஸ் பதிப்பு இசை.
|
||||
description.th_TH = เพลงต้นตำหรับชอง Transport Tycoon Deluxe Windows edition
|
||||
description.tr_TR = Özgün Transport Tycoon Deluxe Windows sürümü müzikleri.
|
||||
description.uk_UA = Оригінальна музика з Transport Tycoon Deluxe Windows edition.
|
||||
description.vi_VN = Nhạc gốc từ phiên bản Transport Tycoon Deluxe trên Windows
|
||||
description.zh_CN = Transport Tycoon Deluxe(运输大亨Windows豪华版)的原版音乐包
|
||||
description.zh_TW = 原版 Transport Tycoon Deluxe Windows 版的音樂。
|
||||
|
||||
[files]
|
||||
theme = GM_TT00.GM
|
||||
old_0 = GM_TT02.GM
|
||||
old_1 = GM_TT06.GM
|
||||
old_2 = GM_TT03.GM
|
||||
old_3 = GM_TT12.GM
|
||||
old_4 = GM_TT08.GM
|
||||
old_5 = GM_TT13.GM
|
||||
old_6 = GM_TT14.GM
|
||||
old_7 = GM_TT10.GM
|
||||
old_8 =
|
||||
old_9 =
|
||||
new_0 = GM_TT04.GM
|
||||
new_1 = GM_TT01.GM
|
||||
new_2 = GM_TT05.GM
|
||||
new_3 = GM_TT15.GM
|
||||
new_4 = GM_TT11.GM
|
||||
new_5 = GM_TT16.GM
|
||||
new_6 = GM_TT09.GM
|
||||
new_7 =
|
||||
new_8 =
|
||||
new_9 =
|
||||
ezy_0 = GM_TT18.GM
|
||||
ezy_1 = GM_TT19.GM
|
||||
ezy_2 = GM_TT21.GM
|
||||
ezy_3 = GM_TT17.GM
|
||||
ezy_4 = GM_TT20.GM
|
||||
ezy_5 = GM_TT07.GM
|
||||
ezy_6 =
|
||||
ezy_7 =
|
||||
ezy_8 =
|
||||
ezy_9 =
|
||||
|
||||
[md5s]
|
||||
GM_TT00.GM = 45cfec1b9d8c7a0ad45e755833cbf221
|
||||
GM_TT01.GM = ab14ed3392d848abd2a2e90a9d75d121
|
||||
GM_TT02.GM = dd4f696e4be5987ce738257b08b50171
|
||||
GM_TT03.GM = a1bfde23343df9e4063419bf29c166b8
|
||||
GM_TT04.GM = 4e6943aa0c455203d76c79389054747d
|
||||
GM_TT05.GM = cee281cb85a2e2343552d97640545a47
|
||||
GM_TT06.GM = 26d1de5efa8675f94065784e9d539e49
|
||||
GM_TT07.GM = 6f2691e17558f552ec4c565e4ab7139c
|
||||
GM_TT08.GM = a42bf2cb3340a822f1a69646fc7a487d
|
||||
GM_TT09.GM = eb35761a58a8df3c59ed8929cce13916
|
||||
GM_TT10.GM = 42fecd686720a785d20a78590c466a82
|
||||
GM_TT11.GM = 50ef1ef02e49d2112786dd45e69dc3ee
|
||||
GM_TT12.GM = 4ce707a0e0e72419f0681dd9bd95271b
|
||||
GM_TT13.GM = e765753be29d889ec818f38009103619
|
||||
GM_TT14.GM = 270e2d63bd32b95a4d007ce15a6ce45f
|
||||
GM_TT15.GM = 89e116a1c0c69f1845cc903a9bfbe460
|
||||
GM_TT16.GM = f824e2371b3bedfe61aad4b9c62dd6be
|
||||
GM_TT17.GM = 1b23eebb0796c1ab99cd97fa7082cf7b
|
||||
GM_TT18.GM = 15650de3bad645d0e88c4f5c7a2df92a
|
||||
GM_TT19.GM = 7aec079e15bd09588660b85545ac4dfc
|
||||
GM_TT20.GM = 1509097889dee617aa1e9a1738a5a930
|
||||
GM_TT21.GM = a8d0aaad02e1a762d8d54cf81da56bab
|
||||
|
||||
[names]
|
||||
GM_TT00.GM = Tycoon DELUXE Theme
|
||||
GM_TT01.GM = Snarl Up
|
||||
GM_TT02.GM = Easy Driver
|
||||
GM_TT03.GM = Little Red Diesel
|
||||
GM_TT04.GM = City Groove
|
||||
GM_TT05.GM = Aliens Ate My Railway
|
||||
GM_TT06.GM = Stoke It
|
||||
GM_TT07.GM = Don't Walk!
|
||||
GM_TT08.GM = Sawyer's Tune
|
||||
GM_TT09.GM = Fell Apart On Me
|
||||
GM_TT10.GM = Can't Get There From Here
|
||||
GM_TT11.GM = Hard Drivin'
|
||||
GM_TT12.GM = Road Hog
|
||||
GM_TT13.GM = Hold That Train!
|
||||
GM_TT14.GM = Broomer's Oil Rag
|
||||
GM_TT15.GM = Goss Groove
|
||||
GM_TT16.GM = Small Town
|
||||
GM_TT17.GM = Cruise Control
|
||||
GM_TT18.GM = Stroll On
|
||||
GM_TT19.GM = Funk Central
|
||||
GM_TT20.GM = Jammit
|
||||
GM_TT21.GM = Movin' On
|
||||
|
||||
[origin]
|
||||
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
|
@@ -1,67 +0,0 @@
|
||||
; $Id$
|
||||
;
|
||||
; This represents the original sounds as on the Transport
|
||||
; Tycoon Deluxe for Windows CD.
|
||||
;
|
||||
[metadata]
|
||||
name = original_windows
|
||||
shortname = TTDO
|
||||
version = 0
|
||||
description = Original Transport Tycoon Deluxe Windows edition sounds.
|
||||
description.af_ZA = Oorspronklike Transport Tycoon Deluxe Windows uitgawe klanke.
|
||||
description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الصوتية نسخة وندوز
|
||||
description.be_BY = Арыґінальны набор гукавога афармленьня з гульні Transport Tycoon Deluxe для Windows.
|
||||
description.bg_BG = Оригинални звуци на Transport Tycoon Deluxe за Windows.
|
||||
description.ca_ES = Sons originals del Transport Tycoon Deluxe pel Windows.
|
||||
description.cs_CZ = Původní sada zvuků Transport Tycoon Deluxe (verze pro Windows).
|
||||
description.cy_GB = Effeithiau sain gwreiddiol fersiwn Windows o Transport Tycoon Deluxe.
|
||||
description.da_DK = Originallyd fra Transport Tycoon Deluxe Windows-version.
|
||||
description.de_DE = Original Transport Tycoon Deluxe Windows Basissounds.
|
||||
description.el_GR = Αρχικοί ήχοι από το Transport Tycoon Deluxe έκδοση Windows.
|
||||
description.en_AU = Original Transport Tycoon Deluxe Windows edition sounds.
|
||||
description.en_US = Original Transport Tycoon Deluxe Windows edition sounds.
|
||||
description.es_ES = Sonidos originales de Transport Tycoon Deluxe versión Windows.
|
||||
description.et_EE = Algse Transport Tycoon Deluxe Windowsi versiooni helid.
|
||||
description.fi_FI = Alkuperäiset Transport Tycoon Deluxen Windows-version äänet.
|
||||
description.fr_FR = Sons originaux de Transport Tycoon Deluxe (version Windows).
|
||||
description.ga_IE = Fuaimeanna bunaidh Transport Tycoon Deluxe, eagrán Windows.
|
||||
description.gd_GB = Fuaimean aig an deasachadh Windows tùsail aig Transport Tycoon Deluxe.
|
||||
description.gl_ES = Sons da edición orixinal de Transport Tycoon Deluxe para Windows.
|
||||
description.hr_HR = Originalni zvukovi za Transport Tycoon Deluxe Windows izdanje.
|
||||
description.hu_HU = Az eredeti Transport Tycoon Deluxe Windows verziójának hangjai.
|
||||
description.id_ID = Efek suara orisinil Transport Tycoon Deluxe versi Windows.
|
||||
description.is_IS = Upprunalega hljóðið úr Transport Tycoon Deluxe Windows útgáfunni.
|
||||
description.it_IT = Suoni originali di Transport Tycoon Deluxe, edizione Windows.
|
||||
description.ja_JP = Transport Tycoon Deluxe オリジナル版 効果音 (Windows)
|
||||
description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 윈도 에디션의 효과음입니다.
|
||||
description.la_VA = Soni ex editione originale Transport Tycoon Deluxe Windows.
|
||||
description.lb_LU = Original Transport Tycoon Deluxe Windows Editioun Sound.
|
||||
description.lt_LT = Originalūs Transport Tycoon Deluxe Windows leidimo garsai.
|
||||
description.nb_NO = Originale lyder fra Transport Tycoon Deluxe for Windows.
|
||||
description.nl_NL = Originele geluiden van de Transport Tycoon Deluxe Windows-versie.
|
||||
description.nn_NO = Originale lydar frå Transport Tycoon Deluxe for Windows.
|
||||
description.pl_PL = Oryginalna edycja dźwięków dla Transport Tycoon Deluxe Windows.
|
||||
description.pt_BR = Sons Originais do Transport Tycoon Deluxe, Edição Windows.
|
||||
description.pt_PT = Sons originais da edição Windows de Transport Tycoon Deluxe.
|
||||
description.ro_RO = Setul de sunete original al Transport Tycoon Deluxe pentru Windows.
|
||||
description.ru_RU = Оригинальный набор звукового оформления из игры Transport Tycoon Deluxe для Windows.
|
||||
description.sk_SK = Pôvodné zvuky Transport Tycoon Deluxe (Windows).
|
||||
description.sl_SI = Originalni zvoki Transport Tycoon Deluxe različice oken(windows).
|
||||
description.sr_RS = Originalni skup zvukova Transport Tycoon Deluxe Windows izdanja.
|
||||
description.sv_SE = Originalljuden från Transport Tycoon Deluxe, Windows-utgåvan.
|
||||
description.ta_IN = அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் விண்டோஸ் பதிப்பு ஒலிகள்.
|
||||
description.th_TH = เสียงต้นตำหรับของ Transport Tycoon Deluxe Windows edition
|
||||
description.tr_TR = Özgün Transport Tycoon Deluxe Windows sürümü sesleri.
|
||||
description.uk_UA = Оригінальний набір звуків з Transport Tycoon Deluxe Windows edition.
|
||||
description.vi_VN = Âm thanh gốc từ phiên bản Transport Tycoon Deluxe trên Windows
|
||||
description.zh_CN = Transport Tycoon Deluxe Windows (运输大亨Windows豪华版)的原版音效包.
|
||||
description.zh_TW = 原版 Transport Tycoon Deluxe Windows 版的音效。
|
||||
|
||||
[files]
|
||||
samples = SAMPLE.CAT
|
||||
|
||||
[md5s]
|
||||
SAMPLE.CAT = 9212e81e72badd4bbe1eaeae66458e10
|
||||
|
||||
[origin]
|
||||
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
|
@@ -23,3 +23,10 @@ GSNews.Create <- function(type, text, company)
|
||||
{
|
||||
return GSNews._Create(type, text, company, GSNews.NR_NONE, 0);
|
||||
}
|
||||
|
||||
/* 1.9 adds a vehicle type parameter. */
|
||||
GSBridge._GetName <- GSBridge.GetName;
|
||||
GSBridge.GetName <- function(bridge_id)
|
||||
{
|
||||
return GSBridge._GetName(bridge_id, GSVehicle.VT_RAIL);
|
||||
}
|
||||
|
@@ -23,3 +23,10 @@ GSNews.Create <- function(type, text, company)
|
||||
{
|
||||
return GSNews._Create(type, text, company, GSNews.NR_NONE, 0);
|
||||
}
|
||||
|
||||
/* 1.9 adds a vehicle type parameter. */
|
||||
GSBridge._GetName <- GSBridge.GetName;
|
||||
GSBridge.GetName <- function(bridge_id)
|
||||
{
|
||||
return GSBridge._GetName(bridge_id, GSVehicle.VT_RAIL);
|
||||
}
|
||||
|
@@ -15,3 +15,10 @@ GSNews.Create <- function(type, text, company)
|
||||
{
|
||||
return GSNews._Create(type, text, company, GSNews.NR_NONE, 0);
|
||||
}
|
||||
|
||||
/* 1.9 adds a vehicle type parameter. */
|
||||
GSBridge._GetName <- GSBridge.GetName;
|
||||
GSBridge.GetName <- function(bridge_id)
|
||||
{
|
||||
return GSBridge._GetName(bridge_id, GSVehicle.VT_RAIL);
|
||||
}
|
||||
|
@@ -8,3 +8,10 @@
|
||||
*/
|
||||
|
||||
GSLog.Info("1.5 API compatibility in effect.");
|
||||
|
||||
/* 1.9 adds a vehicle type parameter. */
|
||||
GSBridge._GetName <- GSBridge.GetName;
|
||||
GSBridge.GetName <- function(bridge_id)
|
||||
{
|
||||
return GSBridge._GetName(bridge_id, GSVehicle.VT_RAIL);
|
||||
}
|
||||
|
@@ -6,3 +6,12 @@
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
GSLog.Info("1.6 API compatibility in effect.");
|
||||
|
||||
/* 1.9 adds a vehicle type parameter. */
|
||||
GSBridge._GetName <- GSBridge.GetName;
|
||||
GSBridge.GetName <- function(bridge_id)
|
||||
{
|
||||
return GSBridge._GetName(bridge_id, GSVehicle.VT_RAIL);
|
||||
}
|
||||
|
17
bin/game/compat_1.7.nut
Normal file
17
bin/game/compat_1.7.nut
Normal file
@@ -0,0 +1,17 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
GSLog.Info("1.7 API compatibility in effect.");
|
||||
|
||||
/* 1.9 adds a vehicle type parameter. */
|
||||
GSBridge._GetName <- GSBridge.GetName;
|
||||
GSBridge.GetName <- function(bridge_id)
|
||||
{
|
||||
return GSBridge._GetName(bridge_id, GSVehicle.VT_RAIL);
|
||||
}
|
17
bin/game/compat_1.8.nut
Normal file
17
bin/game/compat_1.8.nut
Normal file
@@ -0,0 +1,17 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
GSLog.Info("1.8 API compatibility in effect.");
|
||||
|
||||
/* 1.9 adds a vehicle type parameter. */
|
||||
GSBridge._GetName <- GSBridge.GetName;
|
||||
GSBridge.GetName <- function(bridge_id)
|
||||
{
|
||||
return GSBridge._GetName(bridge_id, GSVehicle.VT_RAIL);
|
||||
}
|
8
bin/game/compat_1.9.nut
Normal file
8
bin/game/compat_1.9.nut
Normal file
@@ -0,0 +1,8 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
369
changelog.txt
369
changelog.txt
@@ -1,3 +1,372 @@
|
||||
1.9.2 (2019-07-07)
|
||||
------------------------------------------------------------------------
|
||||
- Change: Set default setting in server browser of "Advertised" to "Yes" (#7568)
|
||||
- Change: Allow building road stops over self-owned one-way/blocked road (#7547)
|
||||
- Fix #7463: Promote scroll mode setting to basic category (#7586)
|
||||
- Fix: Inconsistent GUI scaling (#7539)
|
||||
- Fix #7491: Send company update admin message when bankruptcy counter changes (#7492)
|
||||
- Fix #7553: Check bounds when loading strings (#7554)
|
||||
- Fix: Really increase the maximum number of GameScript texts to 64k (#7555)
|
||||
- Fix: Crash when attempting to load old save game with GRFs set (#7546)
|
||||
- Fix #6507: Don't try to load invalid depots from older savegames (#7546)
|
||||
- Fix: Railtype bits were moved too late, leading to rails under bridges losing their type (#7546)
|
||||
- Fix: Bounds check access to railtype_map (#7529)
|
||||
- Fix: Spurious errors when using more than 32 railtypes (#7533)
|
||||
- Fix #7633: Allow zero-cost track conversion to succeed (#7634)
|
||||
- Fix #7577: Check if linkgraph station index is valid before dereferencing (#7583)
|
||||
- Fix #7224: Drag and drop vehicle group creation does not work correctly (#7581)
|
||||
- Fix #7570: Show Github URL in the crashlog window (#7571)
|
||||
- Fix: Clicking on scrollbar 'thumb' moved position up instantly (#7549)
|
||||
- Fix #7255: Prevent crashlog corruption by only printing the 32 most recent news messages (#7542)
|
||||
- Fix #5685: Check for free wagons in ScriptVehicleList (#7617)
|
||||
- Fix: Make GSGoal.QuestionClient work correctly at least for clients with ID < 2**16 (#7560)
|
||||
- Fix #6666: Mismatched parentheses in RTL languages (#7480)
|
||||
- Fix: [Windows] Various reliability and correctness improvements to MIDI on Windows (#7620)
|
||||
|
||||
|
||||
1.9.1 (2019-04-08)
|
||||
------------------------------------------------------------------------
|
||||
- Fix #6564: Enforce types of arguments for station name strings (#7419)
|
||||
- Fix #7433: Don't use AirportSpec substitute if it's not enabled (#7435)
|
||||
- Fix #7447, #7466, #7476: Missing NewGRF strings due to Action 4 feature check skipping pseudo-feature 48 (#7449)
|
||||
- Fix #6222: Advanced sprite layout sometimes showed incorrect railtype ground tile. (#7460)
|
||||
- Fix #7439: CompanyRemoveReason overwritten by ClientID (#7465)
|
||||
- Fix: [Windows] Incorrect error handling could lead to cascading error windows (#7482)
|
||||
- Fix #7478: Don't remove NewGRF objects on company take-over. (#7483)
|
||||
|
||||
|
||||
1.9.0 (2019-04-01)
|
||||
------------------------------------------------------------------------
|
||||
- Fix #7411: Use industry production callback (if used) on initial industry cargo generation (#7412)
|
||||
|
||||
|
||||
1.9.0-RC2 (2019-03-24)
|
||||
------------------------------------------------------------------------
|
||||
- Fix #7400: WaterClass for tree tiles was not converted for old saves preventing industry creation (#7405)
|
||||
- Fix: Filtered file list did not scroll properly (#7402)
|
||||
- Fix #7391: Don't invalidate go to depot orders of non-aircraft when invalidating hangar orders that happen to share IDs (#7392)
|
||||
- Fix #7386: Measurement tooltip for tunnels, aqueducts & docks did not display or flickered (#7389)
|
||||
- Fix: Wrong company performance rating when money exceeds INT_MAX (#7382)
|
||||
- Fix: Permit loading of industry production callback with invalid cargo type (#7364)
|
||||
- Fix: Spelling for a few real town names (#7338)
|
||||
- Fix: Runway too short for large aircraft message should not depend on plane crashes setting (#7325)
|
||||
- Fix #7334: Ship lost after crossing bridge due to path cache not being consumed while on final bridge end (#7335)
|
||||
|
||||
|
||||
1.9.0-RC1 (2019-03-03)
|
||||
------------------------------------------------------------------------
|
||||
- Add: Various AI/GS functions for vehicle groups (#7225)
|
||||
- Change: Synchronise introduction date and reliability randomness across vehicles with the same base introduction date (#7147)
|
||||
- Change: Allow towns to build bridges over rails and one-way roads (#7291)
|
||||
- Fix: Detection of coast tiles with trees on them (#7309)
|
||||
- Fix: Emergency netsave saved the title game instead of the broken game in question (#7298)
|
||||
- Fix: Company livery window showed incorrect groups when opened in multiplayer (#7288)
|
||||
- Fix: Unable to select last group in open livery window (#7283)
|
||||
- Fix: Goto hangar orders were not invalidated when rebuilding airports (#7100)
|
||||
|
||||
|
||||
1.9.0-beta3 (2019-02-24)
|
||||
------------------------------------------------------------------------
|
||||
- Feature: Option to adjust font size separately from GUI size (#7003)
|
||||
- Feature: Increase maximum number of orders from 64000 to ~16.7m (#7220)
|
||||
- Add: Show performance of AI and GS in framerate window
|
||||
- Add: News menu entry and shortcut for deleting all messages (#7240)
|
||||
- Change: [OSX] Improved scrolling behaviour when using touchpads
|
||||
- Change: Add scrollbar to cargo legend in cargo payment rates window
|
||||
- Change: Owner of vehicle with exclusive transport rights may now load cargo from neutral stations (#7256)
|
||||
- Change: Improved UI behaviour when dragging sound volume sliders with the mouse (#7227)
|
||||
- Change: Use selected vehicle group as parent when creating a new group (#7224)
|
||||
- Change: Use SlErrorCorrupt() on pool index error when loading a savegame, instead of terminating (#7219)
|
||||
- Change: Skip reliability decay if servicing is disabled
|
||||
- Fix: Remove desert around lakes upon generation
|
||||
- Fix: Re-sorting file list did not update filtered rows
|
||||
- Fix #7159: Waiting time at red one-way signals was too short
|
||||
- Fix #7189: Fluidsynth volume gain too high
|
||||
- Fix #7004: Cargo flow legend was not properly refreshed after zooming (#7265)
|
||||
- Fix: Possibility to modify wrong AI/GS settings when switching AI/GS scripts around (#7090, #7091)
|
||||
- Fix: Use more descriptive "spectator" strings for story book and goal dropdown menus
|
||||
- Fix #6599: Disable build and rename button in build vehicle window when no vehicle is selected
|
||||
- Fix: Do not mangle tagged revision strings for network revision strings
|
||||
- Fix #7151: AI start date deviation was still applied when not set to a random AI (#7223)
|
||||
- Fix #7197: Invalidate depot buttons when necessary (#7212)
|
||||
- Doc: [AI] UnshareOrders empties the orders list of the vehicle
|
||||
|
||||
|
||||
1.9.0-beta2 (2019-02-09)
|
||||
------------------------------------------------------------------------
|
||||
- Fix: Non-Windows builds did not get correct git hash
|
||||
|
||||
|
||||
1.9.0-beta1 (2019-02-09)
|
||||
------------------------------------------------------------------------
|
||||
Note: OpenTTD was migrated to GitHub for 1.9, so SVN revision and FlySpray numbers have been replaced with Pull Requests and Issue numbers
|
||||
- Feature: Group liveries, and livery window usability enhancements (#7108)
|
||||
- Feature: Overhaul of music system, support MPSMIDI music files (TTD DOS/TTO) (#6839)
|
||||
- Feature: [Win32] Rewritten DMusic and WinMM music drivers
|
||||
- Feature: [Win32] New XAudio2 sound driver
|
||||
- Feature: [Linux] New Fluidsynth music driver
|
||||
- Feature: Framerate display window (#6822)
|
||||
- Feature: [NewGRF] Ability for industries & houses to produce and/or accept up to 16 different cargoes
|
||||
- Feature #6610: Allow towns to build houses on road turns (#6758)
|
||||
- Feature: Replace independent map scrolling GUI settings with single option, and add choice to not lock cursor position when scrolling (#6756)
|
||||
- Feature #6459: API for querying network clients from GS (#6736)
|
||||
- Feature: New Russian Ruble & Mexican Peso as currencies (#6678, #7035)
|
||||
- Feature #4186: Append '(City)' after city names in the town directory
|
||||
- Feature #986: Automatic save when losing connection to a network game
|
||||
- Add: [NewGRF] Flag to hide rail types from construction (#7118)
|
||||
- Add: [NewGRF] Airport animation trigger for plane landing (#6334)
|
||||
- Add #4115: Default starting company colour setting (#6998)
|
||||
- Add: Mixer feature for streaming sampled music
|
||||
- Add #6460: [AI] start_date parameter for Random AIs on new game
|
||||
- Add: BACKSPACE can be mapped as a hotkey
|
||||
- Add: 32bpp SSE2 blitter palette animator (#6795)
|
||||
- Change: Make ships turn slowly when changing direction and stop when going up or down a lock (#7065, #7150)
|
||||
- Change: Improve ship pathfinder performance
|
||||
- Change: Decouple GUI timing from game ticks (#6780)
|
||||
- Change: Desert tiles are now half-desert if a neighboured tile is non-desert or sea/coast (#4754)
|
||||
- Change: Gradually slow down aircraft speed on breakdown (#6932)
|
||||
- Change: [NewGRF] Increase rail type & cargo type limits to 64
|
||||
- Change: [NewGRF] Increase size of persistent storage to 256
|
||||
- Change: [NewGRF] Use last OpenTTD SVN revision in NewGRF version number (#6843)
|
||||
- Change: Clone tool in depot window now behaves like clone button in vehicle window (#6754)
|
||||
- Change #6397: Keep town growth rate in sync with house count
|
||||
- Change: Scale default FreeType font size selection by UI zoom level
|
||||
- Change: [OSX] Reversed pinch to zoom behaviour
|
||||
- Change: Switch town growth rate and counter to actual game ticks (#6763)
|
||||
- Change: Non-tag revisions are now named '<commitdate>-<branch>-g<shorthash><modified>'
|
||||
- Change: Rewrite several bits of documentation in markdown
|
||||
- Fix: Reinitialise graph GUI on game restart (#7191)
|
||||
- Fix: Potential crash during shutdown after unpacking downloaded content (#7185)
|
||||
- Fix #6584: Text layout in engine preview dialogue
|
||||
- Fix #6636: Airplanes could be sent to helicopter station depots
|
||||
- Fix: Deadlock when launched with -n switch (#7103)
|
||||
- Fix: Various corrections to town names in non-English languages (#7038, 7141)
|
||||
- Fix: Only consider airport tiles when placing (for non-rectangular airports) (#6613)
|
||||
- Fix: Spelling fixes on some Latin American town names
|
||||
- Fix #7001: Pathfinders should see standard road stations as tiles where to reverse
|
||||
- Fix #6676: Prevent helicopters from stopping in midair during some kinds of landing
|
||||
- Fix: Remove need to use Ctrl+Click when building stations next to competitors (#6906)
|
||||
- Fix: [NewGRF] Make VA2 operator 11 (ror) behave well-defined when rotating by 0 bits
|
||||
- Fix #4109: Add more water checks to the Oil Rig layout
|
||||
- Fix #6938: Incorrect value for "Cost to Clear" was displayed for Company Headquarters in tile inspector (#6939)
|
||||
- Fix #6920: Make 9.8m/s^2 a common constant for TE-calculation
|
||||
- Fix #6892: [Script] CONFIG_RANDOM did not use the full parameter range (#6902)
|
||||
- Fix #6622: News message when GS constructs a town had empty company name
|
||||
- Fix: [NewGRF] Action7 variable 0x85 had no bounds checks
|
||||
- Fix #6875: Depot building cost did not include foundation build cost (#6883)
|
||||
- Fix: Some pixels in ship autoreplace icon (sprite 106) were transparent
|
||||
- Fix: Poor contrast in cargo dest flow legend window cargo labels
|
||||
- Fix #6553: Make viewport button text unambiguous
|
||||
- Fix: [OSX] Setting mouse-wheel to scroll the map does not disable pinch to zoom
|
||||
- Fix #6969: Account for BOM when reading script files
|
||||
- Fix #6898: Ability to use seeds above INT_MAX (#6936)
|
||||
- Fix #6659: Bus stations could be demolished when not in demolish mode (#6815)
|
||||
- Fix: One-way roads could be over-built by road stops regardless of road owner
|
||||
- Fix: Use name of cargo instead of Passengers/Mail in town statistics (#6801)
|
||||
- Fix: Prevent ships moving into docks after finishing (un)loading (#6791)
|
||||
- Fix: Tractive effort was slightly too high as per NewGRF spec (#6785)
|
||||
- Fix #6465: Add {NORMAL_FONT} and {MONO_FONT} control codes to GS strings (#6726)
|
||||
- Fix: Four group action icons were misplaced and cropped
|
||||
- Remove: PSP, WinCE support
|
||||
|
||||
|
||||
1.8.0 (2018-04-01)
|
||||
------------------------------------------------------------------------
|
||||
(None)
|
||||
|
||||
|
||||
1.8.0-RC1 (2018-03-21)
|
||||
------------------------------------------------------------------------
|
||||
- Feature: [GFX] Climate-specific Action5 extra airport sprites [FS#6664] (r27976)
|
||||
- Feature: Draw vertical separators at tile distance in the train depot GUI (r27938, r27899)
|
||||
- Feature: [Build] MSVC 2017 project file generator. Most noticeable, std:c++latest is enabled (r27920, r27919, r27918, r27917)
|
||||
- Feature: [Build] Project file generator for kdevelop 4/5 [FS#6577] (r27897)
|
||||
- Feature: Add option to close windows with right click [FS#4950] (r27826, r27825)
|
||||
- Feature: Vehicle Group Info: Add profits and occupancy display to group vehicle list (r27822)
|
||||
- Feature: Display aircraft type in vehicle preview/purchase/detail windows (r27802, r27799, r27797)
|
||||
- Change: [NewGRF] Various performance improvements to resolving VA2 (r27989, r27985, r27984, r27983, r27982)
|
||||
- Change: [NewGRF] Increase maximum allowed vehicle sprite size to reduce clipping of ships (r27987)
|
||||
- Change: Check companies for bankruptcy before subtracting reoccuring monthly costs [FS#6679] (r27981)
|
||||
- Change: [GFX] Replace the office building sprite on various toyland airports with a better fitting sprite [FS#6664] (r27977)
|
||||
- Change: [GFX] The switch-toolbar icon contained pixels from the fire cycle. Replace the whole icon with a new version [FS#6654] (r27961)
|
||||
- Change: Reword texts in industry view, when stockpiling is used (r27952)
|
||||
- Change: Remove the gap between windows when positioning them after opening [FS#6568] (r27934, r27900)
|
||||
- Change: [Build] Enable usage of static_assert for MSVC (r27916)
|
||||
- Change: [Build] Preserve PKG_CONFIG_PATH and PKG_CONFIG_LIBDIR environment variables in config.cache file [FS#6614] (r27902)
|
||||
- Change: Do not cancel headquarter construction and engine-preview-query when shift-clicking (r27889)
|
||||
- Change: Parse extmidi command string for parameters to pass on (r27834)
|
||||
- Change: Draw images in centre of buttons (r27829, r27821)
|
||||
- Fix: Store the map variety setting in the savegame like the other mapgen settings, so restarting maps considers it [FS#6673] (r27978)
|
||||
- Fix: Hair selection was missing one option [FS#6642] (r27975)
|
||||
- Fix: Avoid tile operations outside map border when building lock [FS#6662] (r27973)
|
||||
- Fix: Catenary sprites got mixed up for depots [FS#6670] (r27972)
|
||||
- Fix: Make automatic window-positioning RTL-aware (r27934, r27900)
|
||||
- Fix: Automatic window-positioning now uses GUI-scale/style dependent sizes/distances instead of fixed pixel values (r27934, r27900)
|
||||
- Fix: [NewGRF] While executing random triggers, var 5F should include the new triggers (r27928)
|
||||
- Fix: [NewGRF] Reset used random triggers only after all A123 chains have been resolved, so that all RA2 in all chains can test the shared triggers (r27928)
|
||||
- Fix: [NewGRF] Industry random triggers are stored per tile, even when randomising the shared random bits of the parent industry (r27928)
|
||||
- Fix: [NPF] Reserved track bits were not accounted for when trying to find any safe position (r27912)
|
||||
- Fix: Do not modify argv[0] [FS#6575] (r27886)
|
||||
- Fix: Do not search directories when opening ini files as we already have their full path [FS#6421] (r27816)
|
||||
- Fix: Road tunnel/bridge heads have no trackbits wrt. catenary drawing (r27812)
|
||||
|
||||
|
||||
1.7.2 (2017-12-24)
|
||||
------------------------------------------------------------------------
|
||||
(None)
|
||||
|
||||
|
||||
1.7.2-RC1 (2017-12-11)
|
||||
------------------------------------------------------------------------
|
||||
- Change: When train depots have a horizontal scrollbar, allow scrolling 1 tile beyond the longest train, so you can actually attach a wagon at the end (r27937)
|
||||
- Fix: When moving wagons in the depot, the drag highlight did not exactly match the length of the dragged wagon chain (r27936)
|
||||
- Fix: [Win32] Right mouse scrolling didn't work properly with the Windows 10 Fall Creators Update [FS#6629] (r27935)
|
||||
- Fix: Forest, candyfloss forest and battery farm skipped the first animation frame [FS#6639] (r27932)
|
||||
- Fix: Glyphs in range U+0020 to U+00FF may only be defined in orig_extra.grf, not in openttd.grf [FS#6620] (r27915)
|
||||
- Fix: 'unban' console command was not handling IPv6 adresses properly (r27914, r27913)
|
||||
- Fix: Keep the 'link' between industry chain and smallmap windows whenever possible [FS#6585] (r27905)
|
||||
- Fix: When the last vehicle is removed from a shared orders group, hide the 'Stop sharing' button in the vehicle orders window [FS#6593] (r27904)
|
||||
- Fix: Tooltip of 'increase service interval' said 'decrease' [FS#6606] (r27895)
|
||||
- Fix: Console command parser passed invalid strings to the debug output, if command lines had many parameters [FS#6576] (r27884, r27883)
|
||||
|
||||
|
||||
1.7.1 (2017-06-13)
|
||||
------------------------------------------------------------------------
|
||||
(None)
|
||||
|
||||
|
||||
1.7.1-RC1 (2017-05-04)
|
||||
------------------------------------------------------------------------
|
||||
- Fix: Add missing game script event for ships arriving at a station [FS#6560] (r27859, r27858)
|
||||
- Fix: StringID truncation to 16 bits broke string remapping test [FS#6555] (r27851)
|
||||
- Fix: Infinite loop in pathfinder when checking safe waiting position from a waypoint [FS#5926] (r27846)
|
||||
- Fix: [YAPF] Consider depot as destination before reversing path and applying penalty (r27843)
|
||||
- Fix: Don't consider locks or ship depots as clear water when placing industries (r27841)
|
||||
- Fix: Small news window's fake caption was not sized to fit its text (r27838)
|
||||
- Fix: Black remap did nothing in 8bpp-simple blitter (r27837)
|
||||
- Fix: Misaligned resize icon due to widget bounds being inclusive (r27831)
|
||||
- Fix: Update viewport sign dimensions when changing GUI zoom level (r27827, r27819)
|
||||
- Fix: Vehicle viewport is not user scrollable so flag window as such (r27823)
|
||||
- Fix: Allow dropdown to be drawn above origin widget even with scrollbar (r27820)
|
||||
- Fix: 32bpp-anim blitters assumed that pitch and width of the screen were equal [FS#6545] (r27796)
|
||||
- Fix: Chat text background overflowed due to missing padding [FS#6526] (r27794)
|
||||
- Fix: Failed to load lzo compressed savegames sometimes [FS#6450] (r27793)
|
||||
- Fix: [Win32] Mark OpenTTD as DPI-aware to avoid OS window scaling that breaks mouse input [FS#6366] (r27791, r27790)
|
||||
- Fix: [NewGRF] Get vehicle load amount after executing new cargo trigger [FS#6536] (r27788)
|
||||
- Fix: AI configuration changed incorrect parameter when some parameters are hidden [FS#6479] (r27787, r27786)
|
||||
- Fix: Buoys not always drawn after being placed depending on zoom level [FS#6508] (r27785)
|
||||
- Fix: Allow rail conversion even if ship is on tile [FS#6505] (r27784)
|
||||
|
||||
|
||||
1.7.0 (2017-04-01)
|
||||
------------------------------------------------------------------------
|
||||
(None)
|
||||
|
||||
|
||||
1.7.0-RC1 (2017-03-11)
|
||||
------------------------------------------------------------------------
|
||||
- Feature: [NewGRF] Extend the DCxx range to D800-DFFF (r27769)
|
||||
- Feature: [NewGRF, script] Increase the maximum number of GameScript texts to 64k, and NewGRF texts to 512k (r27758)
|
||||
- Feature: [NewGRF] CB 37 results 0x0401 and 0x0800-0BFF for improved control of display of input cargos in the industry GUI (r27751)
|
||||
- Feature: Sprites missing in outdated basesets are now provided by openttd.grf (r27732, r27731, r27730)
|
||||
- Feature: [NewGRF] String command 9A 1E to print the name of a cargo type (r27707, r27706)
|
||||
- Feature: [Debug] Assign descriptive names to threads [FS#6471] (r27674, r27673, r27670)
|
||||
- Feature: [NewGRF] Allow composing vehicles from multiple sprites (r27668)
|
||||
- Change: Enable realistic train and road vehicle acceleration by default (r27760)
|
||||
- Change: Hide the drive-in stops from the tram station picker (r27734)
|
||||
- Change: Do not count static NewGRF when checking for the maximum number of NewGRFs in a game (r27729)
|
||||
- Change: Limit waypoint area by maximum station spread during dragging (r27710)
|
||||
- Change: [Build] Re-enable Wnarrowing for gcc 4.9+ [FS#6532] (r27709, r27703)
|
||||
- Change: List railtype of rail tiles explicitly in the tile info window (r27686)
|
||||
- Change: Re-arrange the autoreplace GUI for trains, and do not filter it by railtype by default (r27683)
|
||||
- Change: Various performance improvements to CargoDist and LinkGraphs (r27682, r27681, r27614, r27613, r27612, r27611)
|
||||
- Change: Improve randomisation of rough land appearance (r27657)
|
||||
- Change: [Build] Enable C++11 for clang 3.3 (r27654)
|
||||
- Fix: Insufficient thread synchronisation when switching blitters lead to crashes [FS#6510] (r27775)
|
||||
- Fix: Enabling palette animation for 32bpp blitters while paused skipped initialisation of the palette and resulted in black windows [FS#5889] (r27774)
|
||||
- Fix: Intro games other than the traditional nightly one would cause townname NewGRFs to not get activated in the game options [FS#5819] (r27772)
|
||||
- Fix: Some variables were not reset between loading old savegames, which made loading them fail [FS#6540] (r27770)
|
||||
- Fix: Removing secondary roadtypes from bridges was factor 2 too cheap [FS#6538] (r27746)
|
||||
- Fix: Extra viewports did not center on the selected tile [FS#6537] (r27743)
|
||||
- Fix: [Build] Building on newer OSX versions with newer SDKs [FS#6295, FS#6502] (r27727, r27675)
|
||||
- Fix: Improve error message when trying to build rail track over a depot (r27726)
|
||||
- Fix: Rescanning NewGRF in-game could break the loaded NewGRF, if very many NewGRF were in use (r27721)
|
||||
- Fix: Text could overflow various GUI elements [FS#6527] (r27713)
|
||||
- Fix: Memory leak when reloading NewGRF (r27690, r27688, r27687)
|
||||
- Fix: When removing objects of bankrupt companies the tiles may revert to canal. In that case also check the ownership of the canal [FS#6511] (r27656)
|
||||
- Fix: Make the console file commands operate independent of the save/load GUI (r27645)
|
||||
- Fix: When dragging vehicles in group or depot GUI, draw the complete articulated vehicle (r27632)
|
||||
- Fix: When dragging multiple vehicles in the depot, make the destination gap as long as the chain instead of just considering the first vehicle (r27629)
|
||||
- Fix: [Build] Change the GCC version detection so that it works with two-digit and truncated versions [FS#6487] (r27623, r27616)
|
||||
- Fix: Do not hide filtered and highlighted industries by overlapping tiles in the zoomed-out smallmap (r27622, r27621, r27620)
|
||||
- Fix: [Script] Kill scripts, when a non-suspendable valuator call takes way too long [FS#6473] (r27594)
|
||||
|
||||
|
||||
1.6.1 (2016-07-01)
|
||||
------------------------------------------------------------------------
|
||||
- Fix: Compilation and optimisation issues with GCC6 (r27606, r27605, r27595)
|
||||
- Fix: Compilation with --disable-network [FS#6481] (r27602)
|
||||
- Fix: [NewGRF] shift-and-add-divide/modulo varadjusts use signed division/modulo (r27600)
|
||||
- Fix: Company 0 could accept engine previews before they were offered (r27598)
|
||||
|
||||
|
||||
1.6.1-RC1 (2016-06-01)
|
||||
------------------------------------------------------------------------
|
||||
- Feature: Mexican Spanish (r27564, r27553, r27552)
|
||||
- Change: Performance improvement for dedicated servers by skipping drawing calls earlier in the process [FS#6402] (r27579)
|
||||
- Fix: Automatic servicing of road vehicles compared path finder costs with tile distances, thus vehicles went to depots which were factor 100 too far away [FS#6410] (r27586)
|
||||
- Fix: Enforce a non-zero load amount for all vehicles, so that vehicles can process their cargo reservations [FS#6437] (r27585, r27584)
|
||||
- Fix: Do not decrease the column width of depot windows when vehicles with high unitnumbers leave [FS#6415] (r27583)
|
||||
- Fix: Button size computation in script configuration window [FS#6461] (r27581)
|
||||
- Fix: [NewGRF] Set date of last service on construction also for wagons and articulated parts [FS#6395] (r27580)
|
||||
- Fix: Vehicles could not be hidden from the purchase list when they were in exclusive preview [FS#6454] (r27578)
|
||||
- Fix: Dock and roadstop picker, client list and town authority window did not auto-resize according to their content when they were positioned at the bottom of the screen [FS#6386] (r27577)
|
||||
- Fix: Various incorrect but uncritical size computations in the content client [FS#6449] (r27576, r27570)
|
||||
- Fix: Memory leak when disabling palette animation [FS#6404] (r27575)
|
||||
- Fix: [NewGRF] The house id as returned by house variable 66 was incorrect when querying neighboured tiles [FS#6432] (r27574)
|
||||
- Fix: [Build] Compilation failure with gcc 6.1 due to headers included after safeguards.h [FS#6467] (r27573)
|
||||
- Fix: Convenience savegame bump to distinguish 1.6 savegames from 1.5 savegames [FS#6442] (r27572)
|
||||
- Fix: [Build] Force sorting to be locale independent, so files are always ordered the same and by that token better diff-able (r27562, r27558)
|
||||
- Fix: Typos in comments and string (r27561, r27560)
|
||||
- Fix: [Build] bashism that caused different CFLAGS with bash vs dash (r27557)
|
||||
- Fix: Use a more appropiate sound effect for convert-rail (r27547)
|
||||
- Fix: Remove SetFill from vehicle GUI buttons, so that the viewport is resized instead of them in case of long window titles (r27546)
|
||||
- Fix: [Script] Generation of API wrappers (r27545, r27544, r27543)
|
||||
- Fix: [Windows] ICU got disabled for Windows builds, breaking RTL support [FS#6427] (r27542)
|
||||
- Fix: [NewGRF] Station spritelayouts did not accept the var10 flag for the palette [FS#6435] (r27534)
|
||||
|
||||
|
||||
1.6.0 (2016-04-01)
|
||||
------------------------------------------------------------------------
|
||||
(None)
|
||||
|
||||
|
||||
1.6.0-RC1 (2016-03-01)
|
||||
------------------------------------------------------------------------
|
||||
- Feature: [NewGRF] Allow custom sound IDs in RV property 0x12, ship property 0x10 and aircraft property 0x12 (r27507)
|
||||
- Feature: When viewing online content of a particular type, hide content of other types unless they have been (auto)selected for download (r27469, r27468, r27444)
|
||||
- Feature: [NewGRF] Move sprite 8 positions in sprite aligner with ctrl+click [FS#6241] (r27451)
|
||||
- Feature: Lower the sell-vehicle and sell-chain buttons in the train depot GUI while dragging a vehicle over it [FS#6391] (r27450, r27446)
|
||||
- Feature: Make the object placement GUI an independent window (r27438, r27397, r27346)
|
||||
- Feature: [Build] Project files and compilation with MSVC2015 (r27385, r27382, r27381, r27380, r27379)
|
||||
- Feature: [NewGRF] Allow railtype NewGRF to define separate sprites for the fences on either track side [FS#6315] (r27354, r27343)
|
||||
- Feature: [NewGRF] Increase the maximum amount of industry types to 128 per NewGRF and 240 in total (r27279)
|
||||
- Feature: Make Ctrl+Remove-Roadstop also remove the road, just like for rail stations [FS#6252] (r27251)
|
||||
- Change: [NewGRF] Allow static NewGRF to enable the second rocky tile set (r27497)
|
||||
- Change: Round loading percentage in loading indicators and conditional orders towards 50%, so that 0% and 100% mean completely empty or full (r27426)
|
||||
- Change: [Build] Rework the configure system to make more use of pkg-config (r27377:r27366, r27361, r27360)
|
||||
- Change: Enable YAPF cache debugging with desync debug level 2 (r27332)
|
||||
- Change: [strgen] Default plural subparameter position for CARGO_xxx string control codes is subparameter 1 (r27295)
|
||||
- Change: [NewGRF] Translate industry variable A6 (r27267)
|
||||
- Change: Do not consider cargo that is already being loaded as waiting cargo wrt. the station rating [FS#6165] (r27256)
|
||||
- Change: Tune down terrain generation to reduce amount of long slopes (r27230)
|
||||
- Change: Generate more detailed curves at the coast (r27229)
|
||||
- Change: Slightly more water in the non-custom sea levels (r27228)
|
||||
- Change: Be more lenient about road stop removal when at least one stop could be removed [FS#6262] (r27225)
|
||||
- Fix: [Win32] Stdin/out/err need to be re-assigned differently if the runtime lib of MSVC2015 is used (r27481)
|
||||
- Fix: [Haiku] On Haiku use the appropriate system variable to obtain the include dir [FS#6401] (r27472)
|
||||
|
||||
|
||||
1.5.3 (2015-12-01)
|
||||
------------------------------------------------------------------------
|
||||
(None)
|
||||
|
474
config.lib
474
config.lib
@@ -31,7 +31,6 @@ set_default() {
|
||||
awk="awk"
|
||||
pkg_config="pkg-config"
|
||||
os="DETECT"
|
||||
endian="AUTO"
|
||||
cpu_type="DETECT"
|
||||
config_log="config.log"
|
||||
prefix_dir="/usr/local"
|
||||
@@ -58,8 +57,8 @@ set_default() {
|
||||
enable_translator="0"
|
||||
enable_unicode="1"
|
||||
enable_console="1";
|
||||
enable_assert="1"
|
||||
enable_strip="0"
|
||||
enable_assert="0"
|
||||
enable_strip="1"
|
||||
enable_universal="0"
|
||||
enable_osx_g5="0"
|
||||
enable_cocoa_quartz="1"
|
||||
@@ -78,17 +77,19 @@ set_default() {
|
||||
enable_builtin_depend="1"
|
||||
with_makedepend="0"
|
||||
with_direct_music="1"
|
||||
with_xaudio2="1"
|
||||
with_sort="1"
|
||||
with_iconv="1"
|
||||
with_midi=""
|
||||
with_midi_arg=""
|
||||
with_libtimidity="1"
|
||||
with_fluidsynth="1"
|
||||
with_freetype="1"
|
||||
with_fontconfig="1"
|
||||
with_icu_layout="1"
|
||||
with_icu_sort="1"
|
||||
static_icu="0"
|
||||
with_psp_config="1"
|
||||
with_uniscribe="1"
|
||||
with_threads="1"
|
||||
with_distcc="1"
|
||||
with_ccache="1"
|
||||
@@ -109,7 +110,6 @@ set_default() {
|
||||
awk
|
||||
pkg_config
|
||||
os
|
||||
endian
|
||||
cpu_type
|
||||
config_log
|
||||
prefix_dir
|
||||
@@ -155,24 +155,26 @@ set_default() {
|
||||
enable_builtin_depend
|
||||
with_makedepend
|
||||
with_direct_music
|
||||
with_xaudio2
|
||||
with_sort
|
||||
with_iconv
|
||||
with_midi
|
||||
with_midi_arg
|
||||
with_libtimidity
|
||||
with_fluidsynth
|
||||
with_freetype
|
||||
with_fontconfig
|
||||
with_icu_layout
|
||||
with_icu_sort
|
||||
static_icu
|
||||
with_psp_config
|
||||
with_uniscribe
|
||||
with_threads
|
||||
with_distcc
|
||||
with_ccache
|
||||
with_grfcodec
|
||||
with_nforenum
|
||||
with_sse
|
||||
CC CXX CFLAGS CXXFLAGS LDFLAGS CFLAGS_BUILD CXXFLAGS_BUILD LDFLAGS_BUILD"
|
||||
CC CXX CFLAGS CXXFLAGS LDFLAGS CFLAGS_BUILD CXXFLAGS_BUILD LDFLAGS_BUILD PKG_CONFIG_PATH PKG_CONFIG_LIBDIR"
|
||||
}
|
||||
|
||||
detect_params() {
|
||||
@@ -224,9 +226,6 @@ detect_params() {
|
||||
--lipo) prev_p="lipo";;
|
||||
--lipo=*) lipo="$optarg";;
|
||||
|
||||
--endian) prev_p="endian";;
|
||||
--endian=*) endian="$optarg";;
|
||||
|
||||
|
||||
|
||||
# Alias --prefix with --prefix-dir, for compatibility with GNU autotools
|
||||
@@ -375,6 +374,10 @@ detect_params() {
|
||||
--without-libtimidity) with_libtimidity="0";;
|
||||
--with-libtimidity=*) with_libtimidity="$optarg";;
|
||||
|
||||
--with-fluidsynth) with_fluidsynth="2";;
|
||||
--without-fluidsynth) with_fluidsynth="0";;
|
||||
--with-fluidsynth=*) with_fluidsynth="$optarg";;
|
||||
|
||||
--with-freetype) with_freetype="2";;
|
||||
--without-freetype) with_freetype="0";;
|
||||
--with-freetype=*) with_freetype="$optarg";;
|
||||
@@ -406,9 +409,9 @@ detect_params() {
|
||||
--static-libicu) static_icu="1";;
|
||||
--static-libicu=*) static_icu="$optarg";;
|
||||
|
||||
--with-psp-config) with_psp_config="2";;
|
||||
--without-psp-config) with_psp_config="0";;
|
||||
--with-psp-config=*) with_psp_config="$optarg";;
|
||||
--with-uniscribe) with_uniscribe="2";;
|
||||
--without-uniscribe) with_uniscribe="0";;
|
||||
--with-uniscribe=*) with_uniscribe="$optarg";;
|
||||
|
||||
--disable-builtin-depend) enable_builtin_depend="0";;
|
||||
--enable-builtin-depend) enable_builtin_depend="2";;
|
||||
@@ -422,6 +425,10 @@ detect_params() {
|
||||
--without-direct-music) with_direct_music="0";;
|
||||
--with-direct-music=*) with_direct_music="$optarg";;
|
||||
|
||||
--with-xaudio2) with_xaudio2="2";;
|
||||
--without-xaudio2) with_xaudio2="0";;
|
||||
--with-xaudio2=*) with_xaudio2="$optarg";;
|
||||
|
||||
--with-sort) with_sort="2";;
|
||||
--without-sort) with_sort="0";;
|
||||
--with-sort=*) with_sort="$optarg";;
|
||||
@@ -473,6 +480,8 @@ detect_params() {
|
||||
CFLAGS_BUILD=* | --CFLAGS_BUILD=* | --CFLAGS-BUILD=*) CFLAGS_BUILD="$optarg";;
|
||||
CXXFLAGS_BUILD=* | --CXXFLAGS_BUILD=* | --CXXFLAGS-BUILD=*) CXXFLAGS_BUILD="$optarg";;
|
||||
LDFLAGS_BUILD=* | --LDFLAGS_BUILD=* | --LDFLAGS-BUILD=*) LDFLAGS_BUILD="$optarg";;
|
||||
PKG_CONFIG_PATH=* | --PKG_CONFIG_PATH=* | --PKG-CONFIG-PATH=*) PKG_CONFIG_PATH="$optarg";;
|
||||
PKG_CONFIG_LIBDIR=* | --PKG_CONFIG_LIBDIR=* | --PKG-CONFIG-LIBDIR=*) PKG_CONFIG_LIBDIR="$optarg";;
|
||||
|
||||
--ignore-extra-parameters) ignore_extra_parameters="1";;
|
||||
|
||||
@@ -517,31 +526,43 @@ save_params() {
|
||||
echo "" >> $config_log
|
||||
}
|
||||
|
||||
# Export a variable so tools like pkg-config can see it when invoked.
|
||||
# If the variable contains an empty string then unset it.
|
||||
# $1 - name of the variable to export or unset
|
||||
export_or_unset() {
|
||||
eval local value=\$$1
|
||||
if [ -n "$value" ]; then
|
||||
export $1;
|
||||
log 2 "using $1=$value";
|
||||
else
|
||||
unset $1;
|
||||
log 2 "not using $1";
|
||||
fi
|
||||
}
|
||||
|
||||
check_params() {
|
||||
# Some params want to be in full uppercase, else they might not work as
|
||||
# expected.. fix that here
|
||||
|
||||
endian=`echo $endian | tr '[a-z]' '[A-Z]'`
|
||||
os=`echo $os | tr '[a-z]' '[A-Z]'`
|
||||
cpu_type=`echo $cpu_type | tr '[a-z]' '[A-Z]'`
|
||||
|
||||
# Export some variables to be used by pkg-config
|
||||
#
|
||||
# PKG_CONFIG_LIBDIR variable musn't be set if we are not willing to
|
||||
# override the default pkg-config search path, it musn't be an empty
|
||||
# string. If the variable is empty (e.g. when an empty string comes
|
||||
# from config.cache) then unset it. This way the "don't override" state
|
||||
# will be properly preserved when (re)configuring.
|
||||
export_or_unset PKG_CONFIG_PATH
|
||||
export_or_unset PKG_CONFIG_LIBDIR
|
||||
|
||||
# Check if all params have valid values
|
||||
|
||||
# Endian only allows AUTO, LE and, BE
|
||||
if [ -z "`echo $endian | egrep '^(AUTO|LE|BE|PREPROCESSOR)$'`" ]; then
|
||||
log 1 "configure: error: invalid option --endian=$endian"
|
||||
log 1 " Available options are: --endian=[AUTO|LE|BE]"
|
||||
exit 1
|
||||
fi
|
||||
if [ "$endian" = "PREPROCESSOR" ] && [ "$os" != "OSX" ]; then
|
||||
log 1 "configure: error: invalid option --endian=$endian"
|
||||
log 1 " PREPROCESSOR is only available for OSX"
|
||||
exit 1
|
||||
fi
|
||||
# OS only allows DETECT, UNIX, OSX, FREEBSD, DRAGONFLY, OPENBSD, NETBSD, MORPHOS, BEOS, HAIKU, SUNOS, CYGWIN, MINGW, OS2, DOS, WINCE, and PSP
|
||||
if [ -z "`echo $os | egrep '^(DETECT|UNIX|OSX|FREEBSD|DRAGONFLY|OPENBSD|NETBSD|HPUX|MORPHOS|BEOS|HAIKU|SUNOS|CYGWIN|MINGW|OS2|DOS|WINCE|PSP)$'`" ]; then
|
||||
# OS only allows DETECT, UNIX, OSX, FREEBSD, DRAGONFLY, OPENBSD, NETBSD, MORPHOS, BEOS, HAIKU, SUNOS, CYGWIN, MINGW, OS2, and DOS
|
||||
if [ -z "`echo $os | egrep '^(DETECT|UNIX|OSX|FREEBSD|DRAGONFLY|OPENBSD|NETBSD|HPUX|MORPHOS|BEOS|HAIKU|SUNOS|CYGWIN|MINGW|OS2|DOS)$'`" ]; then
|
||||
log 1 "configure: error: invalid option --os=$os"
|
||||
log 1 " Available options are: --os=[DETECT|UNIX|OSX|FREEBSD|DRAGONFLY|OPENBSD|NETBSD|HPUX|MORPHOS|BEOS|HAIKU|SUNOS|CYGWIN|MINGW|OS2|DOS|WINCE|PSP]"
|
||||
log 1 " Available options are: --os=[DETECT|UNIX|OSX|FREEBSD|DRAGONFLY|OPENBSD|NETBSD|HPUX|MORPHOS|BEOS|HAIKU|SUNOS|CYGWIN|MINGW|OS2|DOS]"
|
||||
exit 1
|
||||
fi
|
||||
# cpu_type can be either 32 or 64
|
||||
@@ -740,13 +761,13 @@ check_params() {
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "WINCE" ]; then
|
||||
if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ]; then
|
||||
log 1 "checking GDI video driver... found"
|
||||
else
|
||||
log 1 "checking GDI video driver... not Windows, skipping"
|
||||
fi
|
||||
|
||||
if [ -z "$allegro_config" ] && [ -z "$sdl_config" ] && [ "$with_cocoa" = 0 ] && [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ] && [ "$os" != "WINCE" ]; then
|
||||
if [ -z "$allegro_config" ] && [ -z "$sdl_config" ] && [ "$with_cocoa" = 0 ] && [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ]; then
|
||||
log 1 "configure: error: no video driver development files found"
|
||||
log 1 " If you want a dedicated server use --enable-dedicated as parameter"
|
||||
exit 1
|
||||
@@ -799,7 +820,7 @@ check_params() {
|
||||
pre_detect_with_zlib=$with_zlib
|
||||
detect_zlib
|
||||
|
||||
if [ "$with_zlib" = "0" ] || [ -z "$zlib-config" ]; then
|
||||
if [ "$with_zlib" = "0" ] || [ -z "$zlib_config" ]; then
|
||||
log 1 "WARNING: zlib was not detected or disabled"
|
||||
log 1 "WARNING: OpenTTD doesn't require zlib, but it does mean that many features"
|
||||
log 1 "WARNING: (like loading most old savegames/scenarios, loading heightmaps,"
|
||||
@@ -846,14 +867,36 @@ check_params() {
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$with_uniscribe" != "0" ]; then
|
||||
if [ "$os" != "MINGW" ]; then
|
||||
if [ "$with_uniscribe" != "1" ]; then
|
||||
log 1 "configure: error: Uniscribe is only supported on native Win32 targets"
|
||||
exit 1
|
||||
fi
|
||||
with_uniscribe="0"
|
||||
|
||||
log 1 "checking Uniscribe text layout... not Windows, skipping"
|
||||
else
|
||||
log 1 "checking Uniscribe text layout... found"
|
||||
|
||||
# Don't use ICU unless forced.
|
||||
if [ "$with_icu_layout" = "1" ]; then
|
||||
with_icu_layout="0"
|
||||
fi
|
||||
if [ "$with_icu_sort" = "1" ]; then
|
||||
with_icu_sort="0"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
detect_xdg_basedir
|
||||
detect_png
|
||||
detect_freetype
|
||||
detect_fontconfig
|
||||
detect_icu_layout
|
||||
detect_icu_sort
|
||||
detect_pspconfig
|
||||
detect_libtimidity
|
||||
detect_fluidsynth
|
||||
|
||||
if [ "$with_direct_music" != "0" ]; then
|
||||
if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ]; then
|
||||
@@ -869,13 +912,21 @@ check_params() {
|
||||
fi
|
||||
fi
|
||||
|
||||
detect_sort
|
||||
if [ "$with_xaudio2" != "0" ]; then
|
||||
if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ]; then
|
||||
if [ "$with_xaudio2" != "1" ]; then
|
||||
log 1 "configure: error: xaudio2 is only supported on Win32 targets"
|
||||
exit 1
|
||||
fi
|
||||
with_xaudio2="0"
|
||||
|
||||
if [ "$os" = "OSX" ] && [ "$endian" = "AUTO" ]; then
|
||||
endian="PREPROCESSOR"
|
||||
log 1 "checking xaudio2... not Windows, skipping"
|
||||
else
|
||||
check_xaudio2
|
||||
fi
|
||||
fi
|
||||
|
||||
log 1 "checking endianness... $endian"
|
||||
detect_sort
|
||||
|
||||
# Suppress language errors when there is a version defined, indicating a release
|
||||
# It just isn't pretty if any release produces warnings in the languages.
|
||||
@@ -1087,7 +1138,7 @@ check_params() {
|
||||
fi
|
||||
|
||||
if [ "$personal_dir" = "1" ]; then
|
||||
if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "WINCE" ] || [ "$os" = "DOS" ] || [ "$os" = "HAIKU" ]; then
|
||||
if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "DOS" ] || [ "$os" = "HAIKU" ]; then
|
||||
personal_dir="OpenTTD"
|
||||
elif [ "$os" = "OSX" ]; then
|
||||
personal_dir="Documents/OpenTTD"
|
||||
@@ -1184,12 +1235,15 @@ make_compiler_cflags() {
|
||||
# $4 - name of the ldflags variable
|
||||
# $5 - name of the features variable
|
||||
|
||||
# Get the compiler to tell us who it is
|
||||
version_line="`$1 --version | head -n1`"
|
||||
|
||||
eval eval "flags=\\\$$2"
|
||||
eval eval "cxxflags=\\\$$3"
|
||||
eval eval "ldflags=\\\$$4"
|
||||
eval eval "features=\\\$$5"
|
||||
|
||||
if [ `basename $1 | cut -c 1-3` = "icc" ]; then
|
||||
if [ `echo "$version_line" | cut -d' ' -f1` = "icc" ]; then
|
||||
# Enable some things only for certain ICC versions
|
||||
cc_version=`$1 -dumpversion | cut -c 1-4 | sed s@\\\.@@g`
|
||||
|
||||
@@ -1264,8 +1318,6 @@ make_compiler_cflags() {
|
||||
if [ $cc_version -ge 110 ]; then
|
||||
# remark #2259: non-pointer conversion from ... to ... may lose significant bits
|
||||
flags="$flags -wd2259"
|
||||
# Use c++0x mode so static_assert() is available
|
||||
cxxflags="$cxxflags -std=c++0x"
|
||||
fi
|
||||
|
||||
if [ "$enable_lto" != "0" ]; then
|
||||
@@ -1276,16 +1328,17 @@ make_compiler_cflags() {
|
||||
features="$features lto"
|
||||
fi
|
||||
fi
|
||||
elif [ `basename $1 | grep 'clang'` ]; then
|
||||
elif echo "$version_line" | grep -q "clang"; then
|
||||
# Enable some things only for certain clang versions
|
||||
cc_version="`$1 -v 2>&1 | head -n 1 | sed s@[^0-9]@@g | cut -c 1-2`"
|
||||
# Need to try really hard to get the version line, because OSX clang likes to hide its true version
|
||||
cc_version="`$1 -v 2>&1 | grep -i version | head -n 1 | sed s@[^0-9]@@g | cut -c 1-2`"
|
||||
|
||||
# aliasing rules are not held in openttd code
|
||||
flags="$flags -fno-strict-aliasing"
|
||||
|
||||
# -W alone doesn't enable all warnings enabled by -Wall; on the other hand,
|
||||
# -Weverything enables too many useless warnings that can't be disabled (as of 3.0)
|
||||
flags="$flags -Wall -W"
|
||||
flags="$flags -Wall -W -Wextra"
|
||||
|
||||
# warning: unused parameter '...'
|
||||
flags="$flags -Wno-unused-parameter"
|
||||
@@ -1328,11 +1381,15 @@ make_compiler_cflags() {
|
||||
|
||||
# rdynamic is used to get useful stack traces from crash reports.
|
||||
ldflags="$ldflags -rdynamic"
|
||||
|
||||
# Assume gcc, since it just uses argv[0] in its --version output
|
||||
else
|
||||
# Enable some things only for certain GCC versions
|
||||
cc_version=`$1 -dumpversion | cut -c 1,3`
|
||||
# cc_version = major_version * 100 + minor_version
|
||||
# For example: "3.3" -> 303, "4.9.2" -> 409, "6" -> 600, "23.5" -> 2305
|
||||
cc_version=`$1 -dumpversion | $awk -F . '{printf "%d%02d", $1, $2}'`
|
||||
|
||||
if [ $cc_version -lt 33 ]; then
|
||||
if [ $cc_version -lt 303 ]; then
|
||||
log 1 "configure: error: gcc older than 3.3 can't compile OpenTTD because of its poor template support"
|
||||
exit 1
|
||||
fi
|
||||
@@ -1345,20 +1402,20 @@ make_compiler_cflags() {
|
||||
if [ $enable_assert -eq 0 ]; then
|
||||
# Do not warn about unused variables when building without asserts
|
||||
flags="$flags -Wno-unused-variable"
|
||||
if [ $cc_version -ge 46 ]; then
|
||||
if [ $cc_version -ge 406 ]; then
|
||||
# GCC 4.6 gives more warnings, disable them too
|
||||
flags="$flags -Wno-unused-but-set-variable"
|
||||
flags="$flags -Wno-unused-but-set-parameter"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ $cc_version -ge 34 ]; then
|
||||
if [ $cc_version -ge 304 ]; then
|
||||
# Warn when a variable is used to initialise itself:
|
||||
# int a = a;
|
||||
flags="$flags -Winit-self"
|
||||
fi
|
||||
|
||||
if [ $cc_version -ge 40 ]; then
|
||||
if [ $cc_version -ge 400 ]; then
|
||||
# GCC 4.0+ complains about that we break strict-aliasing.
|
||||
# On most places we don't see how to fix it, and it doesn't
|
||||
# break anything. So disable strict-aliasing to make the
|
||||
@@ -1369,7 +1426,7 @@ make_compiler_cflags() {
|
||||
flags="$flags -Wcast-qual"
|
||||
fi
|
||||
|
||||
if [ $cc_version -ge 42 ]; then
|
||||
if [ $cc_version -ge 402 ]; then
|
||||
# GCC 4.2+ automatically assumes that signed overflows do
|
||||
# not occur in signed arithmetics, whereas we are not
|
||||
# sure that they will not happen. It furthermore complains
|
||||
@@ -1380,33 +1437,36 @@ make_compiler_cflags() {
|
||||
flags="$flags -Wnon-virtual-dtor"
|
||||
fi
|
||||
|
||||
if [ $cc_version -ge 43 ]; then
|
||||
# Use gnu++0x mode so static_assert() is available.
|
||||
# Don't use c++0x, it breaks mingw (with gcc 4.4.0).
|
||||
cxxflags="$cxxflags -std=gnu++0x"
|
||||
fi
|
||||
|
||||
if [ $cc_version -eq 45 ]; then
|
||||
if [ $cc_version -eq 405 ]; then
|
||||
# Prevent optimisation supposing enums are in a range specified by the standard
|
||||
# For details, see http://gcc.gnu.org/PR43680
|
||||
flags="$flags -fno-tree-vrp"
|
||||
fi
|
||||
|
||||
if [ $cc_version -ge 47 ]; then
|
||||
if [ $cc_version -eq 407 ]; then
|
||||
# Disable -Wnarrowing which gives many warnings, such as:
|
||||
# warning: narrowing conversion of '...' from 'unsigned int' to 'int' inside { } [-Wnarrowing]
|
||||
# They are valid according to the C++ standard, but useless.
|
||||
cxxflags="$cxxflags -Wno-narrowing"
|
||||
fi
|
||||
|
||||
if [ $cc_version -ge 407 ]; then
|
||||
# Disable bogus 'attempt to free a non-heap object' warning
|
||||
flags="$flags -Wno-free-nonheap-object"
|
||||
fi
|
||||
|
||||
if [ $cc_version -ge 600 ]; then
|
||||
# -flifetime-dse=2 (default since GCC 6) doesn't play
|
||||
# well with our custom pool item allocator
|
||||
cxxflags="$cxxflags -flifetime-dse=1"
|
||||
fi
|
||||
|
||||
if [ "$enable_lto" != "0" ]; then
|
||||
# GCC 4.5 outputs '%{flto}', GCC 4.6 outputs '%{flto*}'
|
||||
has_lto=`$1 -dumpspecs | grep '\%{flto'`
|
||||
if [ -n "$has_lto" ]; then
|
||||
# Use LTO only if we see LTO exists and is requested
|
||||
if [ $cc_version -lt 46 ]; then
|
||||
if [ $cc_version -lt 406 ]; then
|
||||
flags="$flags -flto"
|
||||
else
|
||||
flags="$flags -flto=jobserver"
|
||||
@@ -1432,21 +1492,27 @@ make_compiler_cflags() {
|
||||
|
||||
make_cflags_and_ldflags() {
|
||||
# General CFlags for BUILD
|
||||
CFLAGS_BUILD="$CFLAGS_BUILD"
|
||||
CFLAGS_BUILD_ENV="$CFLAGS_BUILD"
|
||||
CFLAGS_BUILD=""
|
||||
# Special CXXFlags for BUILD
|
||||
CXXFLAGS_BUILD="$CXXFLAGS_BUILD"
|
||||
CXXFLAGS_BUILD_ENV="$CXXFLAGS_BUILD"
|
||||
CXXFLAGS_BUILD=""
|
||||
# LDFLAGS for BUILD
|
||||
LDFLAGS_BUILD="$LDFLAGS_BUILD"
|
||||
LDFLAGS_BUILD_ENV="$LDFLAGS_BUILD"
|
||||
LDFLAGS_BUILD=""
|
||||
# FEATURES for BUILD (lto)
|
||||
FEATURES_BUILD=""
|
||||
# General CFlags for HOST
|
||||
CFLAGS="$CFLAGS"
|
||||
CFLAGS_ENV="$CFLAGS"
|
||||
CFLAGS=""
|
||||
# Special CXXFlags for HOST
|
||||
CXXFLAGS="$CXXFLAGS"
|
||||
CXXFLAGS_ENV="$CXXFLAGS"
|
||||
CXXFLAGS=""
|
||||
# Libs to compile. In fact this is just LDFLAGS
|
||||
LIBS="-lstdc++"
|
||||
LIBS=""
|
||||
# LDFLAGS used for HOST
|
||||
LDFLAGS="$LDFLAGS"
|
||||
LDFLAGS_ENV="$LDFLAGS"
|
||||
LDFLAGS=""
|
||||
# FEATURES for HOST (lto)
|
||||
FEATURES=""
|
||||
|
||||
@@ -1455,6 +1521,8 @@ make_cflags_and_ldflags() {
|
||||
|
||||
CFLAGS="$CFLAGS -D$os"
|
||||
CFLAGS_BUILD="$CFLAGS_BUILD -D$os"
|
||||
CXXFLAGS="$CXXFLAGS -std=c++11"
|
||||
CXXFLAGS_BUILD="$CXXFLAGS_BUILD -std=c++11"
|
||||
|
||||
if [ "$enable_debug" = "0" ]; then
|
||||
# No debug, add default stuff
|
||||
@@ -1475,9 +1543,6 @@ make_cflags_and_ldflags() {
|
||||
# Each debug level reduces the optimization by a bit
|
||||
if [ $enable_debug -ge 1 ]; then
|
||||
CFLAGS="$CFLAGS -g -D_DEBUG"
|
||||
if [ "$os" = "PSP" ]; then
|
||||
CFLAGS="$CFLAGS -G0"
|
||||
fi
|
||||
fi
|
||||
if [ $enable_debug -ge 2 ]; then
|
||||
CFLAGS="$CFLAGS -fno-inline"
|
||||
@@ -1490,7 +1555,7 @@ make_cflags_and_ldflags() {
|
||||
fi
|
||||
|
||||
if [ $enable_debug -le 2 ]; then
|
||||
cc_host_is_gcc=`basename "$cc_host" | grep "gcc" &>/dev/null`
|
||||
cc_host_is_gcc=`basename "$cc_host" | grep "gcc" 2>/dev/null`
|
||||
if [ -n "$cc_host_is_gcc" ]; then
|
||||
# Define only when compiling with GCC. Some GLIBC versions use GNU
|
||||
# extensions in a way that breaks build with at least ICC.
|
||||
@@ -1498,14 +1563,14 @@ make_cflags_and_ldflags() {
|
||||
CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=2"
|
||||
fi
|
||||
|
||||
cc_build_is_gcc=`basename "$cc_build" | grep "gcc" &>/dev/null`
|
||||
cc_build_is_gcc=`basename "$cc_build" | grep "gcc" 2>/dev/null`
|
||||
if [ -n "$cc_build_is_gcc" ]; then
|
||||
# Just add -O1 to the tools needed for building.
|
||||
CFLAGS_BUILD="$CFLAGS_BUILD -D_FORTIFY_SOURCE=2 -O1"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$os" = "OSX" ] && [ $cc_version -eq 40 ]; then
|
||||
if [ "$os" = "OSX" ] && [ $cc_version -eq 400 ]; then
|
||||
# Apple's GCC 4.0 has a compiler bug for x86_64 with (higher) optimization,
|
||||
# wrongly optimizing ^= in loops. This disables the failing optimisation.
|
||||
CFLAGS="$CFLAGS -fno-expensive-optimizations"
|
||||
@@ -1529,7 +1594,7 @@ make_cflags_and_ldflags() {
|
||||
LDFLAGS="$LDFLAGS -mwin32"
|
||||
fi
|
||||
if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ]; then
|
||||
if [ $cc_version -lt 46 ]; then
|
||||
if [ $cc_version -lt 406 ]; then
|
||||
flags="$flags -mno-cygwin"
|
||||
LDFLAGS="$LDFLAGS -mno-cygwin"
|
||||
fi
|
||||
@@ -1542,32 +1607,22 @@ make_cflags_and_ldflags() {
|
||||
|
||||
LIBS="$LIBS -lws2_32 -lwinmm -lgdi32 -ldxguid -lole32 -limm32"
|
||||
|
||||
if [ $cc_version -ge 44 ]; then
|
||||
if [ $cc_version -ge 404 ]; then
|
||||
LDFLAGS_BUILD="$LDFLAGS_BUILD -static-libgcc -static-libstdc++"
|
||||
fi
|
||||
if [ $cc_version -ge 47 ]; then
|
||||
if [ $cc_version -ge 407 ]; then
|
||||
CFLAGS="$CFLAGS -mno-ms-bitfields"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$os" != "CYGWIN" ] && [ "$os" != "HAIKU" ] && [ "$os" != "OPENBSD" ] && [ "$os" != "MINGW" ] && [ "$os" != "MORPHOS" ] && [ "$os" != "OSX" ] && [ "$os" != "DOS" ] && [ "$os" != "WINCE" ] && [ "$os" != "PSP" ] && [ "$os" != "OS2" ]; then
|
||||
if [ "$os" != "CYGWIN" ] && [ "$os" != "HAIKU" ] && [ "$os" != "OPENBSD" ] && [ "$os" != "MINGW" ] && [ "$os" != "MORPHOS" ] && [ "$os" != "OSX" ] && [ "$os" != "DOS" ] && [ "$os" != "OS2" ]; then
|
||||
LIBS="$LIBS -lpthread"
|
||||
fi
|
||||
|
||||
if [ "$os" != "CYGWIN" ] && [ "$os" != "HAIKU" ] && [ "$os" != "MINGW" ] && [ "$os" != "DOS" ] && [ "$os" != "WINCE" ]; then
|
||||
if [ "$os" != "CYGWIN" ] && [ "$os" != "HAIKU" ] && [ "$os" != "MINGW" ] && [ "$os" != "DOS" ]; then
|
||||
LIBS="$LIBS -lc"
|
||||
fi
|
||||
if [ "$os" = "WINCE" ]; then
|
||||
LIBS="$LIBS -lcoredll -lcorelibc -laygshell -lws2 -e WinMainCRTStartup"
|
||||
fi
|
||||
if [ "$os" = "PSP" ]; then
|
||||
CFLAGS="$CFLAGS -I`$psp_config -p`/include"
|
||||
LDFLAGS="$LDFLAGS -L`$psp_config -p`/lib"
|
||||
|
||||
CFLAGS="$CFLAGS -fno-exceptions -fno-rtti -D_PSP_FW_VERSION=150"
|
||||
LIBS="$LIBS -D_PSP_FW_VERSION=150 -lpspdebug -lpspdisplay -lpspge -lpspctrl -lpspsdk -lpspnet -lpspnet_inet -lpspnet_apctl -lpspnet_resolver -lpsputility -lpspuser -lpspkernel -lm"
|
||||
fi
|
||||
|
||||
if [ "$os" = "MORPHOS" ]; then
|
||||
# -Wstrict-prototypes generates much noise because of system headers
|
||||
@@ -1595,23 +1650,6 @@ make_cflags_and_ldflags() {
|
||||
CFLAGS="$OSX_SYSROOT $CFLAGS"
|
||||
LDFLAGS="$OSX_LD_SYSROOT $LDFLAGS"
|
||||
fi
|
||||
|
||||
if [ "$enable_universal" = "0" ] && [ $cc_version -gt 40 ]; then
|
||||
# Only set the min version when not doing an universal build.
|
||||
# Universal builds set the version elsewhere.
|
||||
if [ "$cpu_type" = "64" ]; then
|
||||
CFLAGS="$CFLAGS -mmacosx-version-min=10.5"
|
||||
else
|
||||
gcc_cpu=`$cc_host -dumpmachine`
|
||||
if [ "`echo $gcc_cpu | cut -c 1-3`" = "ppc" -o "`echo $gcc_cpu | cut -c 1-7`" = "powerpc" ]; then
|
||||
# PowerPC build can run on 10.3
|
||||
CFLAGS="$CFLAGS -mmacosx-version-min=10.3"
|
||||
else
|
||||
# Intel is only available starting from 10.4
|
||||
CFLAGS="$CFLAGS -mmacosx-version-min=10.4"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$os" = "BEOS" ] || [ "$os" = "HAIKU" ]; then
|
||||
@@ -1623,14 +1661,14 @@ make_cflags_and_ldflags() {
|
||||
CFLAGS="$CFLAGS -DUNIX"
|
||||
fi
|
||||
# And others like Windows
|
||||
if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "WINCE" ]; then
|
||||
if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ]; then
|
||||
CFLAGS="$CFLAGS -DWIN"
|
||||
fi
|
||||
|
||||
if [ -n "$allegro_config" ]; then
|
||||
CFLAGS="$CFLAGS -DWITH_ALLEGRO"
|
||||
CFLAGS="$CFLAGS `$allegro_config --cflags`"
|
||||
if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ] && [ "$os" != "WINCE" ]; then
|
||||
if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ]; then
|
||||
if [ "$enable_static" != "0" ]; then
|
||||
LIBS="$LIBS `$allegro_config --static --libs`"
|
||||
else
|
||||
@@ -1643,12 +1681,10 @@ make_cflags_and_ldflags() {
|
||||
CFLAGS="$CFLAGS -DWITH_SDL"
|
||||
# SDL must not add _GNU_SOURCE as it breaks many platforms
|
||||
CFLAGS="$CFLAGS `$sdl_config --cflags | sed 's@-D_GNU_SOURCE[^ ]*@@'`"
|
||||
if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ] && [ "$os" != "WINCE" ]; then
|
||||
if [ "$enable_static" != "0" ]; then
|
||||
LIBS="$LIBS `$sdl_config --static-libs`"
|
||||
else
|
||||
LIBS="$LIBS `$sdl_config --libs`"
|
||||
fi
|
||||
if [ "$enable_static" != "0" ]; then
|
||||
LIBS="$LIBS `$sdl_config --static --libs`"
|
||||
else
|
||||
LIBS="$LIBS `$sdl_config --libs`"
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -1740,7 +1776,7 @@ make_cflags_and_ldflags() {
|
||||
CFLAGS="$CFLAGS `$freetype_config --cflags | tr '\n\r' ' '`"
|
||||
|
||||
if [ "$enable_static" != "0" ]; then
|
||||
LIBS="$LIBS `$freetype_config --libs --static | tr '\n\r' ' '`"
|
||||
LIBS="$LIBS `$freetype_config --libs --static | tr '\n\r' ' '` -lfreetype"
|
||||
else
|
||||
LIBS="$LIBS `$freetype_config --libs | tr '\n\r' ' '`"
|
||||
fi
|
||||
@@ -1768,17 +1804,25 @@ make_cflags_and_ldflags() {
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$with_uniscribe" != "0" ]; then
|
||||
CFLAGS="$CFLAGS -DWITH_UNISCRIBE"
|
||||
LIBS="$LIBS -lusp10"
|
||||
fi
|
||||
|
||||
if [ "$with_direct_music" != "0" ]; then
|
||||
CFLAGS="$CFLAGS -DWIN32_ENABLE_DIRECTMUSIC_SUPPORT"
|
||||
# GCC 4.0+ doesn't like the DirectX includes (gives tons of
|
||||
# warnings on it we won't be able to fix). For now just
|
||||
# suppress those warnings.
|
||||
if [ $cc_version -ge 40 ]; then
|
||||
if [ $cc_version -ge 400 ]; then
|
||||
CFLAGS="$CFLAGS -Wno-non-virtual-dtor"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$with_xaudio2" != "0" ]; then
|
||||
CFLAGS="$CFLAGS -DWITH_XAUDIO2"
|
||||
fi
|
||||
|
||||
if [ -n "$libtimidity_config" ]; then
|
||||
CFLAGS="$CFLAGS -DLIBTIMIDITY"
|
||||
CFLAGS="$CFLAGS `$libtimidity_config --cflags | tr '\n\r' ' '`"
|
||||
@@ -1790,6 +1834,11 @@ make_cflags_and_ldflags() {
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -n "$fluidsynth" ]; then
|
||||
LIBS="$LIBS -lfluidsynth"
|
||||
CFLAGS="$CFLAGS -DFLUIDSYNTH"
|
||||
fi
|
||||
|
||||
if [ "$with_iconv" != "0" ]; then
|
||||
CFLAGS="$CFLAGS -DWITH_ICONV"
|
||||
if [ "$link_to_iconv" = "yes" ]; then
|
||||
@@ -1881,6 +1930,14 @@ make_cflags_and_ldflags() {
|
||||
fi
|
||||
fi
|
||||
|
||||
# All flags to be extended via the env
|
||||
CFLAGS_BUILD="$CFLAGS_BUILD $CFLAGS_BUILD_ENV"
|
||||
CXXFLAGS_BUILD="$CXXFLAGS_BUILD $CXXFLAGS_BUILD_ENV"
|
||||
LDFLAGS_BUILD="$LDFLAGS_BUILD $LDFLAGS_BUILD_ENV"
|
||||
CFLAGS="$CFLAGS $CFLAGS_ENV"
|
||||
CXXFLAGS="$CXXFLAGS $CXXFLAGS_ENV"
|
||||
LDFLAGS="$LDFLAGS $LDFLAGS_ENV"
|
||||
|
||||
log 1 "using CFLAGS_BUILD... $CFLAGS_BUILD"
|
||||
log 1 "using CXXFLAGS_BUILD... $CXXFLAGS_BUILD"
|
||||
log 1 "using LDFLAGS_BUILD... $LDFLAGS_BUILD"
|
||||
@@ -1900,7 +1957,7 @@ make_cflags_and_ldflags() {
|
||||
cflags_makedep="`echo | $cxx_host $CXXFLAGS -E -x c++ -dM - | sed 's@.define @-D@g;s@ .*@ @g;s@(.*)@@g' | tr -d '\r\n'`"
|
||||
|
||||
# Please escape ALL " within ` because e.g. "" terminates the string in some sh implementations
|
||||
cflags_makedep="$cflags_makedep `echo \"$CFLAGS\" \"$CXXFLAGS\" | sed 's@ /@ -@g;s@-I[ ]*[^ ]*@@g'`"
|
||||
cflags_makedep="$cflags_makedep `echo \"$CFLAGS\" \"$CXXFLAGS\" | sed 's@ /@ -@g;s@-I[ ]*[^ ]*@@g;s@[ ]*-[^D][^ ]*@@g'`"
|
||||
else
|
||||
makedepend=""
|
||||
fi
|
||||
@@ -1931,7 +1988,22 @@ check_compiler() {
|
||||
# $8 - "0" gcc, "1" g++, "2" windres, "3" strip, "4" lipo
|
||||
# $9 - What the command is to check for
|
||||
|
||||
if [ -n "$3" ]; then
|
||||
if [ -n "$4" ]; then
|
||||
# Check for manual compiler
|
||||
machine=`$4 $9 2>/dev/null`
|
||||
ret=$?
|
||||
eval "$2=\"$4\""
|
||||
|
||||
log 2 "executing $4 $9"
|
||||
log 2 " returned $machine"
|
||||
log 2 " exit code $ret"
|
||||
|
||||
if ( [ -z "$machine" ] && [ "$8" != "3" ] ) || [ "$ret" != "0" ]; then
|
||||
log 1 "checking $1... $4 not found"
|
||||
log 1 "the selected binary doesn't seem to be a $6 binary"
|
||||
exit 1
|
||||
fi
|
||||
elif [ -n "$3" ]; then
|
||||
# Check for system
|
||||
if [ -z "$6" ]; then
|
||||
compiler="$3"
|
||||
@@ -1974,21 +2046,6 @@ check_compiler() {
|
||||
log 1 "the compiler suggests it doesn't build code for the machine you specified"
|
||||
exit 1
|
||||
fi
|
||||
elif [ -n "$4" ]; then
|
||||
# Check for manual compiler
|
||||
machine=`$4 $9 2>/dev/null`
|
||||
ret=$?
|
||||
eval "$2=\"$4\""
|
||||
|
||||
log 2 "executing $4 $9"
|
||||
log 2 " returned $machine"
|
||||
log 2 " exit code $ret"
|
||||
|
||||
if ( [ -z "$machine" ] && [ "$8" != "3" ] ) || [ "$ret" != "0" ]; then
|
||||
log 1 "checking $1... $4 not found"
|
||||
log 1 "the selected binary doesn't seem to be a $6 binary"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
# Nothing given, autodetect
|
||||
|
||||
@@ -2051,26 +2108,13 @@ check_compiler() {
|
||||
}
|
||||
|
||||
check_build() {
|
||||
if [ "$os" = "FREEBSD" ]; then
|
||||
# FreeBSD's C compiler does not support dump machine.
|
||||
# However, removing C support is not possible because PSP must be linked with the C compiler.
|
||||
check_compiler "build system type" "cc_build" "$build" "$cc_build" "$CXX" "g++" "c++" "0" "-dumpmachine"
|
||||
else
|
||||
check_compiler "build system type" "cc_build" "$build" "$cc_build" "$CC" "gcc" "cc" "0" "-dumpmachine"
|
||||
fi
|
||||
check_compiler "build system type" "cc_build" "$build" "$cc_build" "$CC" "gcc" "cc" "0" "-dumpmachine"
|
||||
}
|
||||
|
||||
check_host() {
|
||||
# By default the host is the build
|
||||
if [ -z "$host" ]; then host="$build"; fi
|
||||
|
||||
if [ "$os" = "FREEBSD" ]; then
|
||||
# FreeBSD's C compiler does not support dump machine.
|
||||
# However, removing C support is not possible because PSP must be linked with the C compiler.
|
||||
check_compiler "host system type" "cc_host" "$host" "$cc_host" "$CXX" "g++" "c++" "0" "-dumpmachine"
|
||||
else
|
||||
check_compiler "host system type" "cc_host" "$host" "$cc_host" "$CC" "gcc" "cc" "0" "-dumpmachine"
|
||||
fi
|
||||
check_compiler "host system type" "cc_host" "$host" "$cc_host" "$CC" "gcc" "cc" "0" "-dumpmachine"
|
||||
}
|
||||
|
||||
check_cxx_build() {
|
||||
@@ -2084,7 +2128,7 @@ check_cxx_host() {
|
||||
}
|
||||
|
||||
check_windres() {
|
||||
if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "WINCE" ]; then
|
||||
if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ]; then
|
||||
check_compiler "host windres" "windres" "$host" "$windres" "$WINDRES" "windres" "windres" "2" "-V"
|
||||
fi
|
||||
}
|
||||
@@ -2151,9 +2195,7 @@ check_direct_music() {
|
||||
echo "
|
||||
#include <windows.h>
|
||||
#include <dmksctrl.h>
|
||||
#include <dmusici.h>
|
||||
#include <dmusicc.h>
|
||||
#include <dmusicf.h>
|
||||
int main(int argc, char *argv[]) { }" > direct_music.test.c
|
||||
$cxx_host $CFLAGS direct_music.test.c -o direct_music.test 2> /dev/null
|
||||
res=$?
|
||||
@@ -2172,6 +2214,35 @@ check_direct_music() {
|
||||
fi
|
||||
}
|
||||
|
||||
check_xaudio2() {
|
||||
echo "
|
||||
#include <windows.h>
|
||||
|
||||
#undef NTDDI_VERSION
|
||||
#undef _WIN32_WINNT
|
||||
|
||||
#define NTDDI_VERSION NTDDI_WIN8
|
||||
#define _WIN32_WINNT _WIN32_WINNT_WIN8
|
||||
|
||||
#include <xaudio2.h>
|
||||
int main(int argc, char *argv[]) { }" > xaudio2.test.c
|
||||
$cxx_host $CFLAGS xaudio2.test.c -o xaudio2.test 2> /dev/null
|
||||
res=$?
|
||||
rm -f xaudio2.test.c xaudio2.test
|
||||
|
||||
if [ "$res" != "0" ]; then
|
||||
if [ "$with_xaudio2" != "1" ]; then
|
||||
log 1 "configure: error: xaudio2 is not available on this system"
|
||||
exit 1
|
||||
fi
|
||||
with_xaudio2="0"
|
||||
|
||||
log 1 "checking xaudio2... not found"
|
||||
else
|
||||
log 1 "checking xaudio2... found"
|
||||
fi
|
||||
}
|
||||
|
||||
check_makedepend() {
|
||||
if [ "$enable_builtin_depend" != "0" ]; then
|
||||
with_makedepend="0"
|
||||
@@ -2290,7 +2361,7 @@ detect_awk() {
|
||||
|
||||
detect_os() {
|
||||
if [ "$os" = "DETECT" ]; then
|
||||
# Detect UNIX, OSX, FREEBSD, DRAGONFLY, OPENBSD, NETBSD, HPUX, MORPHOS, BEOS, SUNOS, CYGWIN, MINGW, OS2, DOS, WINCE, and PSP
|
||||
# Detect UNIX, OSX, FREEBSD, DRAGONFLY, OPENBSD, NETBSD, HPUX, MORPHOS, BEOS, SUNOS, CYGWIN, MINGW, OS2, and DOS
|
||||
|
||||
# Try first via dumpmachine, then via uname
|
||||
os=`echo "$host" | tr '[A-Z]' '[a-z]' | $awk '
|
||||
@@ -2310,8 +2381,6 @@ detect_os() {
|
||||
/mingw/ { print "MINGW"; exit}
|
||||
/os2/ { print "OS2"; exit}
|
||||
/dos/ { print "DOS"; exit}
|
||||
/wince/ { print "WINCE"; exit}
|
||||
/psp/ { print "PSP"; exit}
|
||||
'`
|
||||
|
||||
if [ -z "$os" ]; then
|
||||
@@ -2337,7 +2406,7 @@ detect_os() {
|
||||
if [ -z "$os" ]; then
|
||||
log 1 "detecting OS... none detected"
|
||||
log 1 "I couldn't detect your OS. Please use --os=OS to force one"
|
||||
log 1 "Allowed values are: UNIX, OSX, FREEBSD, DRAGONFLY, OPENBSD, NETBSD, MORPHOS, HPUX, BEOS, HAIKU, SUNOS, CYGWIN, MINGW, OS2, DOS, WINCE, and PSP"
|
||||
log 1 "Allowed values are: UNIX, OSX, FREEBSD, DRAGONFLY, OPENBSD, NETBSD, MORPHOS, HPUX, BEOS, HAIKU, SUNOS, CYGWIN, MINGW, OS2, and DOS"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -2596,6 +2665,11 @@ detect_library() {
|
||||
eval "res=\$$2"
|
||||
if [ -z "$res" ]; then
|
||||
log 2 " trying /mingw/include/$4$5... no"
|
||||
eval "$2=`ls -1 /mingw$cpu_type/include/$4*.h 2>/dev/null | egrep \"\/$5\$\"`"
|
||||
fi
|
||||
eval "res=\$$2"
|
||||
if [ -z "$res" ]; then
|
||||
log 2 " trying /mingw$cpu_type/include/$4$5... no"
|
||||
eval "$2=`ls -1 /opt/local/include/$4*.h 2>/dev/null | egrep \"\/$5\$\"`"
|
||||
fi
|
||||
eval "res=\$$2"
|
||||
@@ -2644,6 +2718,11 @@ detect_library() {
|
||||
eval "res=\$$2"
|
||||
if [ -z "$res" ]; then
|
||||
log 2 " trying /mingw/lib/$3... no"
|
||||
eval "$2=`ls /mingw$cpu_type/lib/*.a 2>/dev/null | egrep \"\/$3\$\"`"
|
||||
fi
|
||||
eval "res=\$$2"
|
||||
if [ -z "$res" ]; then
|
||||
log 2 " trying /mingw$cpu_type/lib/$3... no"
|
||||
log 1 "configure: error: $2 couldn't be found"
|
||||
log 1 "configure: error: you requested a static link, but I can't find $3"
|
||||
|
||||
@@ -2696,6 +2775,10 @@ detect_libtimidity() {
|
||||
detect_pkg_config "$with_libtimidity" "libtimidity" "libtimidity_config" "0.1" "1"
|
||||
}
|
||||
|
||||
detect_fluidsynth() {
|
||||
detect_library "$with_fluidsynth" "fluidsynth" "" "" "fluidsynth.h"
|
||||
}
|
||||
|
||||
detect_pkg_config() {
|
||||
# $1 - config-param ($with_lzma value)
|
||||
# $2 - package name ('liblzma')
|
||||
@@ -2780,7 +2863,7 @@ detect_fontconfig() {
|
||||
fontconfig_config=""
|
||||
return 0
|
||||
fi
|
||||
if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "WINCE" ]; then
|
||||
if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ]; then
|
||||
log 1 "checking libfontconfig... WIN32, skipping"
|
||||
fontconfig_config=""
|
||||
return 0
|
||||
@@ -2796,62 +2879,25 @@ detect_fontconfig() {
|
||||
}
|
||||
|
||||
detect_icu_layout() {
|
||||
if [ "$with_cocoa" != "0" ] && [ "$with_icu_layout" = "1" ]; then
|
||||
log 1 "checking icu-lx... OSX, skipping"
|
||||
icu_layout_config=""
|
||||
return 0
|
||||
fi
|
||||
|
||||
detect_pkg_config "$with_icu_layout" "icu-lx" "icu_layout_config" "4.8" "1"
|
||||
}
|
||||
|
||||
detect_icu_sort() {
|
||||
if [ "$with_cocoa" != "0" ] && [ "$with_icu_sort" = "1" ]; then
|
||||
log 1 "checking icu-i18n... OSX, skipping"
|
||||
icu_sort_config=""
|
||||
return 0
|
||||
fi
|
||||
|
||||
detect_pkg_config "$with_icu_sort" "icu-i18n" "icu_sort_config" "4.8" "1"
|
||||
}
|
||||
|
||||
detect_pspconfig() {
|
||||
# 0 means no, 1 is auto-detect, 2 is force
|
||||
if [ "$with_psp_config" = "0" ]; then
|
||||
log 1 "checking psp-config... disabled"
|
||||
|
||||
psp_config=""
|
||||
return 0
|
||||
fi
|
||||
|
||||
if [ "$with_psp_config" = "1" ] && [ "$os" != "PSP" ]; then
|
||||
log 1 "checking psp-config... not PSP, skipping"
|
||||
|
||||
psp_config="";
|
||||
return 0
|
||||
fi
|
||||
|
||||
if [ "$os" != "PSP" ]; then
|
||||
log 1 "checking psp-config... not PSP"
|
||||
|
||||
log 1 "configure: error: psp-config is only supported for PSP"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$with_psp_config" = "1" ] || [ "$with_psp_config" = "" ] || [ "$with_psp_config" = "2" ]; then
|
||||
psp_config="psp-config"
|
||||
else
|
||||
psp_config="$with_psp_config"
|
||||
fi
|
||||
|
||||
version=`$psp_config -p 2>/dev/null`
|
||||
ret=$?
|
||||
log 2 "executing $psp_config -p"
|
||||
log 2 " returned $version"
|
||||
log 2 " exit code $ret"
|
||||
|
||||
if [ -z "$version" ] || [ "$ret" != "0" ]; then
|
||||
log 1 "checking psp-config... not found"
|
||||
log 1 "configure: error: psp-config couldn't be found"
|
||||
|
||||
# It was forced, so it should be found.
|
||||
if [ "$with_psp_config" != "1" ]; then
|
||||
log 1 "configure: error: you supplied '$with_psp_config', but it seems invalid"
|
||||
fi
|
||||
exit 1
|
||||
fi
|
||||
|
||||
log 1 "checking psp-config... found"
|
||||
}
|
||||
|
||||
detect_iconv() {
|
||||
# 0 means no, 1 is auto-detect, 2 is force
|
||||
if [ "$with_iconv" = "0" ]; then
|
||||
@@ -2870,10 +2916,16 @@ detect_iconv() {
|
||||
# Try to find iconv.h, seems to only thing to detect iconv with
|
||||
|
||||
if [ "$with_iconv" = "1" ] || [ "$with_iconv" = "" ] || [ "$with_iconv" = "2" ]; then
|
||||
iconv=`ls -1 /usr/include 2>/dev/null | grep "iconv.h"`
|
||||
if [ -z "$iconv" ]; then
|
||||
iconv=`ls -1 /usr/local/include 2>/dev/null | grep "iconv.h"`
|
||||
fi
|
||||
# Iterate over search paths
|
||||
iconv=""
|
||||
search_paths=`LC_ALL=C $cxx_host $OSX_SYSROOT $CFLAGS -E - -v </dev/null 2>&1 | \
|
||||
$awk '/#include <...> search starts here:/{flag=1;next}/End of search list./{flag=0}flag'`
|
||||
for path in $search_paths; do
|
||||
iconv=`ls -1 $path 2>/dev/null | grep "iconv.h"`
|
||||
if [ -n "$iconv" ]; then
|
||||
break
|
||||
fi
|
||||
done
|
||||
else
|
||||
# Make sure it exists
|
||||
iconv=`ls $with_iconv/include/iconv.h 2>/dev/null`
|
||||
@@ -3201,17 +3253,14 @@ make_sed() {
|
||||
s@!!INSTALL_DIR!!@$install_dir@g;
|
||||
s@!!BINARY_NAME!!@$binary_name@g;
|
||||
s@!!STRGEN!!@$STRGEN@g;
|
||||
s@!!ENDIAN_CHECK!!@$ENDIAN_CHECK@g;
|
||||
s@!!DEPEND!!@$DEPEND@g;
|
||||
s@!!SETTINGSGEN!!@$SETTINGSGEN@g;
|
||||
s@!!ENDIAN_FORCE!!@$endian@g;
|
||||
s@!!STAGE!!@$STAGE@g;
|
||||
s@!!MAKEDEPEND!!@$makedepend@g;
|
||||
s@!!CFLAGS_MAKEDEP!!@$cflags_makedep@g;
|
||||
s@!!SORT!!@$sort@g;
|
||||
s@!!CONFIG_CACHE_COMPILER!!@config.cache.compiler@g;
|
||||
s@!!CONFIG_CACHE_LINKER!!@config.cache.linker@g;
|
||||
s@!!CONFIG_CACHE_ENDIAN!!@config.cache.endian@g;
|
||||
s@!!CONFIG_CACHE_SOURCE!!@config.cache.source@g;
|
||||
s@!!CONFIG_CACHE_VERSION!!@config.cache.version@g;
|
||||
s@!!CONFIG_CACHE_SOURCE_LIST!!@config.cache.source.list@g;
|
||||
@@ -3445,8 +3494,7 @@ showhelp() {
|
||||
echo " --os=OS the OS we are compiling for [DETECT]"
|
||||
echo " DETECT/UNIX/OSX/FREEBSD/DRAGONFLY/OPENBSD/"
|
||||
echo " NETBSD/MORPHOS/HPUX/BEOS/SUNOS/CYGWIN/"
|
||||
echo " MINGW/OS2/DOS/WINCE/PSP/HAIKU"
|
||||
echo " --endian=ENDIAN set the endian of the HOST (AUTO/LE/BE)"
|
||||
echo " MINGW/OS2/DOS/HAIKU"
|
||||
echo ""
|
||||
echo "Paths:"
|
||||
echo " --prefix-dir=dir specifies the prefix for all installed"
|
||||
@@ -3517,6 +3565,7 @@ showhelp() {
|
||||
echo " midi-player"
|
||||
echo " --with-libtimidity[=\"pkg-config libtimidity\"]"
|
||||
echo " enables libtimidity support"
|
||||
echo " --with-fluidsynth enables fluidsynth support"
|
||||
echo " --with-allegro[=\"pkg-config allegro\"]"
|
||||
echo " enables Allegro video driver support"
|
||||
echo " --with-cocoa enables COCOA video driver (OSX ONLY)"
|
||||
@@ -3542,7 +3591,6 @@ showhelp() {
|
||||
echo " --static-icu try to link statically (libsicu instead of"
|
||||
echo " libicu; can fail as the new name is guessed)"
|
||||
echo " --with-iconv[=iconv-path] enables iconv support"
|
||||
echo " --with-psp-config[=psp-config] enables psp-config support (PSP ONLY)"
|
||||
echo " --disable-builtin-depend disable use of builtin deps finder"
|
||||
echo " --with-makedepend[=makedepend] enables makedepend support"
|
||||
echo " --with-ccache enables ccache support"
|
||||
@@ -3563,6 +3611,8 @@ showhelp() {
|
||||
echo " CFLAGS_BUILD C compiler flags for build time tool generation"
|
||||
echo " CXXFLAGS_BUILD C++ compiler flags for build time tool generation"
|
||||
echo " LDFLAGS_BUILD linker flags for build time tool generation"
|
||||
echo " PKG_CONFIG_PATH additional library search paths (see \"man pkg-config\")"
|
||||
echo " PKG_CONFIG_LIBDIR replace the default library search path (see \"man pkg-config\")"
|
||||
echo ""
|
||||
echo "Use these variables to override the choices made by 'configure' or to help"
|
||||
echo "it to find libraries and programs with nonstandard names/locations."
|
||||
|
8
configure
vendored
8
configure
vendored
@@ -75,13 +75,12 @@ save_params
|
||||
make_cflags_and_ldflags
|
||||
|
||||
EXE=""
|
||||
if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "OS2" ] || [ "$os" = "DOS" ] || [ "$os" = "WINCE" ]; then
|
||||
if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "OS2" ] || [ "$os" = "DOS" ]; then
|
||||
EXE=".exe"
|
||||
fi
|
||||
|
||||
TTD="openttd$EXE"
|
||||
STRGEN="strgen$EXE"
|
||||
ENDIAN_CHECK="endian_check$EXE"
|
||||
DEPEND="depend$EXE"
|
||||
SETTINGSGEN="settings_gen$EXE"
|
||||
|
||||
@@ -114,7 +113,6 @@ AWKCOMMAND='
|
||||
if ($0 == "PNG" && "'$png_config'" == "") { next; }
|
||||
if ($0 == "OSX" && "'$os'" != "OSX") { next; }
|
||||
if ($0 == "OS2" && "'$os'" != "OS2") { next; }
|
||||
if ($0 == "PSP" && "'$os'" != "PSP") { next; }
|
||||
if ($0 == "DEDICATED" && "'$enable_dedicated'" != "1") { next; }
|
||||
if ($0 == "AI" && "'$enable_ai'" == "0") { next; }
|
||||
if ($0 == "COCOA" && "'$with_cocoa'" == "0") { next; }
|
||||
@@ -124,10 +122,10 @@ AWKCOMMAND='
|
||||
if ($0 == "WIN32" && "'$os'" != "MINGW" &&
|
||||
"'$os'" != "CYGWIN" && "'$os'" != "MSVC") { next; }
|
||||
if ($0 == "MORPHOS" && "'$os'" != "MORPHOS") { next; }
|
||||
if ($0 == "WINCE" && "'$os'" != "WINCE") { next; }
|
||||
if ($0 == "MSVC" && "'$os'" != "MSVC") { next; }
|
||||
if ($0 == "DIRECTMUSIC" && "'$with_direct_music'" == "0") { next; }
|
||||
if ($0 == "LIBTIMIDITY" && "'$libtimidity'" == "" ) { next; }
|
||||
if ($0 == "FLUIDSYNTH" && "'$fluidsynth'" == "" ) { next; }
|
||||
if ($0 == "HAVE_THREAD" && "'$with_threads'" == "0") { next; }
|
||||
if ($0 == "SSE" && "'$with_sse'" != "1") { next; }
|
||||
|
||||
@@ -149,7 +147,7 @@ AWKCOMMAND='
|
||||
|
||||
# Read the source.list and process it
|
||||
# Please escape ALL " within ` because e.g. "" terminates the string in some sh implementations
|
||||
SRCS="`< $ROOT_DIR/source.list tr '\r' '\n' | $awk \"$AWKCOMMAND\" | $PIPE_SORT`"
|
||||
SRCS="`< $ROOT_DIR/source.list tr '\r' '\n' | $awk \"$AWKCOMMAND\" | LC_ALL=C $PIPE_SORT`"
|
||||
|
||||
OBJS_C="` echo \"$SRCS\" | $awk ' { ORS = \" \" } /\.c$/ { gsub(\".c$\", \".o\", $0); print $0; }'`"
|
||||
OBJS_CPP="`echo \"$SRCS\" | $awk ' { ORS = \" \" } /\.cpp$/ { gsub(\".cpp$\", \".o\", $0); print $0; }'`"
|
||||
|
@@ -29,7 +29,7 @@ english.txt to work. Below are some examples of strgen usage.
|
||||
1.1) Examples
|
||||
---- --------
|
||||
Example 1:
|
||||
if you are in the root of your working copy (svn code), you should type
|
||||
if you are in the root of your working copy (git repository), you should type
|
||||
strgen/strgen -s lang lang/english.txt
|
||||
to compile englist.txt into english.lng. It will be placed in the lang dir
|
||||
|
||||
@@ -50,7 +50,7 @@ You can interchange english.txt to whichever language you want to generate a
|
||||
1.2) strgen command switches
|
||||
---- -----------------------
|
||||
-v | --version
|
||||
strgen will tell what svn revision it was last modified
|
||||
strgen will tell what git revision it was last modified
|
||||
|
||||
-t | --todo
|
||||
strgen will add <TODO> to any untranslated/missing strings and use the english
|
||||
|
71
docs/Readme_Windows_MSVC.md
Normal file
71
docs/Readme_Windows_MSVC.md
Normal file
@@ -0,0 +1,71 @@
|
||||
# Compiling OpenTTD using Microsoft Visual C++
|
||||
|
||||
Last updated: 2018-12-27
|
||||
|
||||
## Supported MSVC compilers
|
||||
|
||||
OpenTTD includes projects for Visual Studio 2015 Update 3 or more recent.
|
||||
You can download the free Visual Studio Community Edition from Microsoft at
|
||||
https://visualstudio.microsoft.com/vs/community/.
|
||||
|
||||
## Required files
|
||||
|
||||
### Microsoft platform files
|
||||
|
||||
OpenTTD needs the Platform SDK, if it isn't installed already. This can be
|
||||
done during installing Visual Studio, by selecting
|
||||
`Visual C++ MFC for x86 and x64` (and possibly
|
||||
`Visual C++ ATL for x86 and x64` depending on your version). If not, you
|
||||
can get it at this location:
|
||||
|
||||
- [MS Windows Platform SDK](https://developer.microsoft.com/en-US/windows/downloads/windows-10-sdk)
|
||||
|
||||
Install the SDK by following the instructions as given.
|
||||
|
||||
### OpenTTD dependencies
|
||||
|
||||
Dependencies for OpenTTD on Windows are handled via
|
||||
[vcpkg](https://github.com/Microsoft/vcpkg/). First you need to install vcpkg
|
||||
by following the `Quick Start` intructions of their
|
||||
[README](https://github.com/Microsoft/vcpkg/blob/master/README.md).
|
||||
|
||||
After this, you can install the dependencies OpenTTD needs. We advise to use
|
||||
the `static` versions, and OpenTTD currently needs the following dependencies:
|
||||
|
||||
- freetype
|
||||
- liblzma
|
||||
- libpng
|
||||
- lzo
|
||||
- zlib
|
||||
|
||||
To install both the x64 (64bit) and x86 (32bit) variants, you can use:
|
||||
|
||||
```ps
|
||||
.\vcpkg install freetype:x64-windows-static liblzma:x64-windows-static libpng:x64-windows-static lzo:x64-windows-static zlib:x64-windows-static
|
||||
.\vcpkg install freetype:x86-windows-static liblzma:x86-windows-static libpng:x86-windows-static lzo:x86-windows-static zlib:x86-windows-static
|
||||
```
|
||||
|
||||
## TTD Graphics files
|
||||
|
||||
See section 4.1 of README.md for the required 3rdparty files and how to install them.
|
||||
|
||||
## Compiling
|
||||
|
||||
Open the appropriate `sln` (Solution) file for your version of Visual Studio:
|
||||
|
||||
- VS 2015: projects/openttd_vs140.sln
|
||||
- VS 2017: projects/openttd_vs141.sln
|
||||
- VS 2019: projects/openttd_vs142.sln
|
||||
|
||||
Set the build mode to `Release` in
|
||||
`Build > Configuration manager > Active solution configuration`.
|
||||
You can now compile.
|
||||
|
||||
If everything works well the binary should be in `objs\Win[32|64]\Release\openttd.exe`
|
||||
and in `bin\openttd.exe`
|
||||
|
||||
## Problems
|
||||
|
||||
If compilation fails, double-check that you are using the latest github
|
||||
source. If it still doesn't work, check in on IRC (irc://irc.oftc.net/openttd),
|
||||
to ask for help.
|
@@ -1,108 +0,0 @@
|
||||
Compiling OpenTTD using Microsoft Visual C++
|
||||
Last updated: 2010-01-03
|
||||
--------------------------------------------
|
||||
PLEASE READ THE ENTIRE DOCUMENT BEFORE DOING ANY ACTUAL CHANGES!!
|
||||
|
||||
|
||||
SUPPORTED MSVC COMPILERS
|
||||
------------------------
|
||||
OpenTTD includes projects for MSVC 2005.NET and MSVC 2008.NET. Both will
|
||||
compile out of the box, providing you have the required libraries/headers;
|
||||
which ones, see below. There is no support for VS6 or MSVC 2002, or
|
||||
MSVC 2003.NET. You are therefore strongly encouraged to either upgrade to
|
||||
MSVC 2008 Express (free) or use GCC.
|
||||
|
||||
|
||||
1) REQUIRED FILES
|
||||
-----------------
|
||||
You might already have some of the files already installed, so check before
|
||||
downloading; mostly because the DirectX SDK and Platform SDK are about
|
||||
500MB each.
|
||||
Download the following files:
|
||||
|
||||
* openttd-useful.zip (http://binaries.openttd.org/extra/openttd-useful/)
|
||||
* DirectX 8.1 SDK (http://neuron.tuke.sk/~mizanin/eng/Dx81sdk-include-lib.rar) (or alternatively the latest DirectX SDK from Microsoft)
|
||||
* MS Windows Platform SDK (http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en)
|
||||
* afxres.h (http://www-d0.fnal.gov/d0dist/dist/packages/d0ve/devel/windows/AFXRES.H)
|
||||
|
||||
...and of course the newest source from svn://svn.openttd.org/trunk
|
||||
|
||||
You need an SVN-client to download the source from subversion:
|
||||
|
||||
* CLI Subversion (http://subversion.tigris.org/)
|
||||
* GUI TortoiseSVN (http://tortoisesvn.tigris.org/)
|
||||
|
||||
|
||||
2) INCLUDES AND LIBRARIES
|
||||
-------------------------
|
||||
Put the newly downloaded files in the VC lib\ and include\ directories; where
|
||||
"C:\Program Files\Microsoft Visual Studio 9.0\VC" is your location of Visual C.
|
||||
If you are compiling for an x64 system, use the include\ and lib\ directories
|
||||
from the win64/ folder.
|
||||
|
||||
* openttd-useful.zip\include\*
|
||||
* afxresh.h
|
||||
to > C:\Program Files\Microsoft Visual Studio 9.0\VC\Include
|
||||
|
||||
* openttd-useful.zip\lib\*
|
||||
to > C:\Program Files\Microsoft Visual Studio 9.0\VC\Lib
|
||||
|
||||
Custom directories might be recommended, check 2.2)
|
||||
|
||||
|
||||
2.1) INCLUDES AND LIBRARIES - DIRECTX/PLATFORM SDK
|
||||
--------------------------------------------------
|
||||
Basically the same procedure as with the useful zip file, providing
|
||||
you are not using the Microsoft installer. Put the include files in the
|
||||
include\ directory and the library files to the Lib\ directory.
|
||||
|
||||
It is recommended to use custom directories so you don't overwrite any
|
||||
default header or library files.
|
||||
|
||||
|
||||
2.2) CUSTOM DIRECTORIES
|
||||
-----------------------
|
||||
If you have put the above include and/or library files into custom folders,
|
||||
MSVC will not find them by default. You need to add these paths to VC through:
|
||||
|
||||
Tools > Options > Projects and Solutions > VC++ Directories > show directories for
|
||||
|
||||
* Include files: Add the DirectX/Platform SDK include dir you've created
|
||||
* Library files: Add the path to the SDK custom lib dir
|
||||
|
||||
NOTE: make sure that the directory for the DirectX SDK is the first one in the
|
||||
list, above all others, otherwise compilation will most likely fail!!
|
||||
|
||||
|
||||
3) TTD GRAPHICS FILES
|
||||
---------------------
|
||||
See section 4.1 of readme.txt for the required 3rdparty files and how to install them.
|
||||
|
||||
|
||||
4) COMPILING
|
||||
------------
|
||||
Open trunk/openttd_vs[89]0.sln
|
||||
Set the build mode to 'Release' in
|
||||
Build > Configuration manager > Active solution configuration > select "Release"
|
||||
Compile...
|
||||
|
||||
If everything works well the binary should be in trunk/objs/Win[32|64]/Release/openttd.exe
|
||||
|
||||
|
||||
5) EDITING, CHANGING SOURCE CODE
|
||||
--------------------------------
|
||||
Set the build mode (back to) 'Debug'
|
||||
Change the startup project to openttd by right-clicking the 'openttd' project
|
||||
in the Solution Explorer and selecting 'Set as Startup Project'. The 'openttd'
|
||||
project should now show up bold instead of 'strgen'.
|
||||
|
||||
|
||||
6) PROBLEMS?
|
||||
------------
|
||||
If compilation fails, double-check that you are using the latest SVN (!)
|
||||
source. If it still doesn't work, check in on IRC (irc://irc.oftc.net/openttd),
|
||||
to ask about reasons; or just wait. The problem will most likely solve itself
|
||||
within a few days as the problem is noticed and fixed.
|
||||
|
||||
An up-to-date version of this README can be found on the wiki:
|
||||
http://wiki.openttd.org/Microsoft_Visual_C%2B%2B_2008_Express_Editions
|
@@ -226,7 +226,7 @@
|
||||
<li>m1 bits 4..0: <a href="#OwnershipInfo">owner</a> of the tile</li>
|
||||
<li>m2: see signals</li>
|
||||
<li>m3 bits 7..4: see signals</li>
|
||||
<li>m3 bits 3..0 = <a name="TrackType">track type</a>:
|
||||
<li>m8 bits 5..0 = <a name="TrackType">track type</a>:
|
||||
<table>
|
||||
<tr>
|
||||
<td><tt>0</tt> </td>
|
||||
@@ -626,7 +626,8 @@
|
||||
<li>m5 bit 6 set: level crossing
|
||||
<ul>
|
||||
<li>m1 bits 4..0: <a href="#OwnershipInfo">owner</a> of the railway track</li>
|
||||
<li>m3 bits 3..0: <a href="#TrackType">railway track type</a></li>
|
||||
<li>m5 bit 5: set if crossing lights are on</li>
|
||||
<li>m5 bit 4: pbs reservation state</li>
|
||||
<li>m5 bit 0: direction
|
||||
<table>
|
||||
<tr>
|
||||
@@ -639,9 +640,8 @@
|
||||
</tr>
|
||||
</table>
|
||||
</li>
|
||||
<li>m5 bit 5: set if crossing lights are on</li>
|
||||
<li>m7 bits 4..0: <a href="#OwnershipInfo">owner</a> of the road type 0 (normal road)</li>
|
||||
<li>m5 bit 4: pbs reservation state</li>
|
||||
<li>m8 bits 5..0: <a href="#TrackType">railway track type</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -759,6 +759,7 @@
|
||||
<td valign=top nowrap> </td>
|
||||
<td>
|
||||
<ul>
|
||||
<li>m1 bits 6..5: water class (sea or land)</li>
|
||||
<li>m1 bits 4..0: <a href="#OwnershipInfo">owner</a> (normally <tt>10</tt>)</li>
|
||||
<li>m2 bits 8..6: ground
|
||||
<table>
|
||||
@@ -860,7 +861,6 @@
|
||||
<li>m2: index into the array of stations</li>
|
||||
<li>m3 bits 7..4: persistent random data for railway stations/waypoints and airports)</li>
|
||||
<li>m3 bits 7..4: <a href="#OwnershipInfo">owner</a> of tram tracks (road stop)</li>
|
||||
<li>m3 bits 3..0: <a href="#TrackType">track type</a> for railway stations/waypoints</li>
|
||||
<li>m4: custom station id; 0 means standard graphics</li>
|
||||
<li>m5: graphics index (range from 0..255 for each station type):
|
||||
<table>
|
||||
@@ -979,6 +979,7 @@
|
||||
<li>m7 bits 4..0: <a href="#OwnershipInfo">owner</a> of road (road stops)</li>
|
||||
<li>m7 bits 7..6: present road types (road stops)</li>
|
||||
<li>m7: animation frame (railway stations/waypoints, airports)</li>
|
||||
<li>m8 bits 5..0: <a href="#TrackType">track type</a> for railway stations/waypoints</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -1444,7 +1445,6 @@
|
||||
<ul>
|
||||
<li>m1 bits 4..0: <a href="#OwnershipInfo">owner</a></li>
|
||||
<li>m3 bits 7..4: <a href="#OwnershipInfo">owner</a> of tram</li>
|
||||
<li>m3 bits 3..0: <a href="#TrackType">track type</a> for railway</li>
|
||||
<li>m5 bit 4: pbs reservation state for railway</li>
|
||||
<li>m5 bits 7 clear: tunnel entrance/exit</li>
|
||||
<li>m5 bit 7 set: bridge ramp
|
||||
@@ -1582,6 +1582,7 @@
|
||||
<li>m7 bits 4..0: <a href="#OwnershipInfo">owner</a> of road</li>
|
||||
<li>m7 bit 5 set = on snow or desert</li>
|
||||
<li>m7 bits 7..6: present road types for road</li>
|
||||
<li>m8 bits 5..0: <a href="#TrackType">track type</a> for railway</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
|
@@ -37,6 +37,7 @@ the array so you can quickly see what is used and what is not.
|
||||
<li><span style="font-weight: bold;">m5</span> - 8 bits in size, is used for general storage</li>
|
||||
<li><span style="font-weight: bold;">m6</span> - 8 bits in size, is used for general storage</li>
|
||||
<li><span style="font-weight: bold;">m7</span> - 8 bits in size, is used for general storage</li>
|
||||
<li><span style="font-weight: bold;">m8</span> - 16 bits in size, is used for general storage</li>
|
||||
</ul>
|
||||
|
||||
<table align=center border="1" cellpadding="2" cellspacing="2">
|
||||
@@ -52,6 +53,7 @@ the array so you can quickly see what is used and what is not.
|
||||
<th>m5 (8)</th>
|
||||
<th>m6 (8)</th>
|
||||
<th>m7 (8)</th>
|
||||
<th>m8 (16)</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan=2 class="caption">bits</td>
|
||||
@@ -64,6 +66,7 @@ the array so you can quickly see what is used and what is not.
|
||||
<td class="bits">7654 3210</td>
|
||||
<td class="bits">7654 3210</td>
|
||||
<td class="bits">7654 3210</td>
|
||||
<td class="bits">FEDC BA98 7654 3210</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td rowspan="2">0</td>
|
||||
@@ -77,6 +80,7 @@ the array so you can quickly see what is used and what is not.
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">OOO</span>X XX<span class="free">OO</span></td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="caption">farmland</td>
|
||||
@@ -89,6 +93,7 @@ the array so you can quickly see what is used and what is not.
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits"><span class="free">OOO</span>X XX<span class="free">OO</span></td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td rowspan=3>1</td>
|
||||
@@ -97,11 +102,12 @@ the array so you can quickly see what is used and what is not.
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">OOO</span>X XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO</span> XXXX <span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO</span> XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO</span> XXXX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO OOOO OO</span>XX XXXX</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="caption">rail with signals</td>
|
||||
@@ -109,11 +115,12 @@ the array so you can quickly see what is used and what is not.
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits"><span class="free">OOOO</span> XXXX XXXX XXXX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">XXXX <span class="free">OOOO</span></td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits">-inherit-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="caption">depot</td>
|
||||
@@ -121,11 +128,12 @@ the array so you can quickly see what is used and what is not.
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">XXXX XXXX XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO</span> XXXX</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits"><span class="free">OOOO</span> XXXX</td>
|
||||
<td class="bits">XX<span class="free">O</span>X <span class="free">OO</span>XX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits">-inherit-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td rowspan=3>2</td>
|
||||
@@ -139,6 +147,7 @@ the array so you can quickly see what is used and what is not.
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">OO</span>XX X<span class="free">OOO</span></td>
|
||||
<td class="bits">XXX<span class="free">O</span> XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="caption">level crossing</td>
|
||||
@@ -146,11 +155,12 @@ the array so you can quickly see what is used and what is not.
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">XXXX<span class="free"> OOO</span>X</td>
|
||||
<td class="bits">XXXX <span class="free">OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits">XXXX <span class="free">OOO</span>X</td>
|
||||
<td class="bits"><span class="free">OO</span>XX X<span class="free">OOO</span></td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO OO</span>XX XXXX</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="caption">road depot</td>
|
||||
@@ -163,6 +173,7 @@ the array so you can quickly see what is used and what is not.
|
||||
<td class="bits">XX<span class="free">OO OO</span>XX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits">XXX<span class="free">O</span> XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>3</td>
|
||||
@@ -176,19 +187,21 @@ the array so you can quickly see what is used and what is not.
|
||||
<td class="bits">XXX<span class="abuse">X XXXX</span></td>
|
||||
<td class="bits"><span class="abuse">XXXX XX</span><span class="free">OO</span></td>
|
||||
<td class="bits">XXXX <span class="abuse">XXXX</span></td>
|
||||
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>4</td>
|
||||
<td class="caption">trees</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">OOO</span><span class="option">~ ~~~~</span></td>
|
||||
<td class="bits"><span class="free">O</span>XX<span class="option">~ ~~~~</span></td>
|
||||
<td class="bits"><span class="free">OOOO OOO</span>X XXXX XXXX</td>
|
||||
<td class="bits"><span class="option">~~</span>XX XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits">XX<span class="free">OO O</span>XXX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td rowspan=7>5</td>
|
||||
@@ -197,11 +210,12 @@ the array so you can quickly see what is used and what is not.
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">O</span>XXX XXXX</td>
|
||||
<td class="bits">XXXX XXXX XXXX XXXX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">XXXX <span class="free">OOOO</span></td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">OO</span>XX XX<span class="free">OO</span></td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO OO</span>XX XXXX</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="caption">rail waypoint</td>
|
||||
@@ -214,6 +228,7 @@ the array so you can quickly see what is used and what is not.
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="caption">road stop</td>
|
||||
@@ -226,6 +241,7 @@ the array so you can quickly see what is used and what is not.
|
||||
<td class="bits"><span class="option">~~~~ ~</span>XXX</td>
|
||||
<td class="bits"><span class="free">OO</span>XX X<span class="free">OOO</span></td>
|
||||
<td class="bits">XX<span class="free">O</span>X XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="caption">dock</td>
|
||||
@@ -238,6 +254,7 @@ the array so you can quickly see what is used and what is not.
|
||||
<td class="bits"><span class="option">~~~~ ~</span>XXX</td>
|
||||
<td class="bits"><span class="free">OO</span>XX X<span class="free">OOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="caption">airport</td>
|
||||
@@ -250,6 +267,7 @@ the array so you can quickly see what is used and what is not.
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">OO</span>XX X<span class="free">OOO</span></td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="caption">buoy</td>
|
||||
@@ -262,6 +280,7 @@ the array so you can quickly see what is used and what is not.
|
||||
<td class="bits"><span class="option">~~~~ ~~~~</span></td>
|
||||
<td class="bits"><span class="free">OO</span>XX X<span class="free">OOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="caption">oilrig</td>
|
||||
@@ -274,6 +293,7 @@ the array so you can quickly see what is used and what is not.
|
||||
<td class="bits"><span class="option">~~~~ ~~~~</span></td>
|
||||
<td class="bits"><span class="free">OO</span>XX X<span class="free">OOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td rowspan=3>6</td>
|
||||
@@ -287,6 +307,7 @@ the array so you can quickly see what is used and what is not.
|
||||
<td class="bits">X<span class="option">~~</span>X XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="caption">canal, river</td>
|
||||
@@ -299,6 +320,7 @@ the array so you can quickly see what is used and what is not.
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="caption">shipdepot</td>
|
||||
@@ -311,6 +333,7 @@ the array so you can quickly see what is used and what is not.
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>8</td>
|
||||
@@ -324,6 +347,7 @@ the array so you can quickly see what is used and what is not.
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">OO</span>XX XX<span class="free">OO</span></td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td rowspan=2>9</td>
|
||||
@@ -332,23 +356,25 @@ the array so you can quickly see what is used and what is not.
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">OOO</span>X XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">XXXX <span class="free">OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits">X<span class="free">OO</span>X XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO OO</span>XX XXXX</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>bridge ramp</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits"><span class="free">OO</span>XX XX<span class="free">OO</span></td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td rowspan=2>A</td>
|
||||
@@ -362,6 +388,7 @@ the array so you can quickly see what is used and what is not.
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@@ -90,7 +90,7 @@ Table of contents
|
||||
- [network] sync_freq:
|
||||
change it in console with: 'set network.sync_freq <number>'
|
||||
the number should be between the 50 and 1000, not much lower, not much
|
||||
higer. It indicates the time between sync-frames. A sync-frame is a frame
|
||||
higher. It indicates the time between sync-frames. A sync-frame is a frame
|
||||
which checks if all clients are still in sync. When the value it too high,
|
||||
clients can desync in 1960, but the server detects it in 1970. Not really
|
||||
handy. The lower the value, the more bandwidth it uses.
|
||||
@@ -104,7 +104,7 @@ Table of contents
|
||||
- In UNIX like systems, you can fork your dedicated server by adding -f as
|
||||
parameter.
|
||||
|
||||
- You can automaticly clean companies that do not have a client connected to
|
||||
- You can automatically clean companies that do not have a client connected to
|
||||
them, for, let's say, 3 years. You can do this via: 'set autoclean_companies'
|
||||
and 'set autoclean_protected' and 'set autoclean_unprotected'. Unprotected
|
||||
removes a password from a company when it is not used for more then the
|
||||
@@ -113,7 +113,7 @@ Table of contents
|
||||
|
||||
- You can also do this manually via the console: 'reset_company'.
|
||||
|
||||
- You can let your server automaticly restart a map when, let's say, year 2030
|
||||
- You can let your server automatically restart a map when, let's say, year 2030
|
||||
is reached. See 'set restart_game_date' for detail.
|
||||
|
||||
- If you want to be on the server-list, enable Advertising. To do this, select
|
||||
|
@@ -45,12 +45,15 @@ description.en_US = howdie
|
||||
; The file names are case sensitive.
|
||||
; You can have empty file names; in that case no song will be loaded
|
||||
; for that 'entry'.
|
||||
; If you want to load music from the MPS DOS music driver "cat" format,
|
||||
; specify just the name of the .cat file the song is located in, then
|
||||
; fill out the "catindex" section.
|
||||
[files]
|
||||
; The theme song for OpenTTD
|
||||
theme = THEME_SONG.GM
|
||||
; The songs in the 'old style' category
|
||||
old_0 =
|
||||
old_1 =
|
||||
old_0 = GM.CAT
|
||||
old_1 = GM.CAT
|
||||
old_2 =
|
||||
old_3 =
|
||||
old_4 =
|
||||
@@ -86,9 +89,17 @@ ezy_9 =
|
||||
; Note that the list of files is case sensitive. Each file listed in the
|
||||
; files section must be listed here with it's song name, otherwise you
|
||||
; will get a lot of warnings when starting OpenTTD.
|
||||
; You don't need to fill this out for "cat" format music, the song names
|
||||
; are loaded directly from the file in that case.
|
||||
[names]
|
||||
THEME_SONG.GM = Tycoon DELUXE Theme
|
||||
|
||||
; If you are loading music from the DOS version "cat" format, specify
|
||||
; which index into the file the song has.
|
||||
[catindex]
|
||||
old_0 = 1
|
||||
old_1 = 3
|
||||
|
||||
; The md5s section lists the MD5 checksum for the files that replace them.
|
||||
; Note that the list of files is case sensitive. Each file listed in the
|
||||
; files section must be listed here with it's MD5 checksum, otherwise you
|
||||
@@ -96,6 +107,13 @@ THEME_SONG.GM = Tycoon DELUXE Theme
|
||||
[md5s]
|
||||
THEME_SONG.GM = 45cfec1b9d8c7a0ad45e755833cbf221
|
||||
|
||||
; If a song needs to have parts of the start or end cut off to avoid long
|
||||
; silences, you can specify MIDI tick codes for start:end of the actual
|
||||
; music part for each file here.
|
||||
; Not all music drivers might support this feature.
|
||||
[timingtrim]
|
||||
THEME_SONG.GM = 768:53760
|
||||
|
||||
; The origin section provides the possibility to put and extra line into
|
||||
; the warning that a file is missing/corrupt. This can be used to tell
|
||||
; them where to find it. It works on the filename specified in the
|
||||
|
125
findversion.sh
125
findversion.sh
@@ -14,42 +14,31 @@ if [ "$#" != "0" ]; then
|
||||
Usage: ./findversion.sh
|
||||
Finds the current revision and if the code is modified.
|
||||
|
||||
Output: <REV>\t<REV_NR>\t<MODIFIED>\t<CLEAN_REV>
|
||||
REV
|
||||
Output: <VERSION>\t<ISODATE>\t<MODIFIED>\t<HASH>
|
||||
VERSION
|
||||
a string describing what version of the code the current checkout is
|
||||
based on. The exact format of this string depends on the version
|
||||
control system in use, but it tries to identify the revision used as
|
||||
close as possible (using the svn revision number or hg/git hash).
|
||||
This also includes an indication of whether the checkout was
|
||||
modified and which branch was checked out. This value is not
|
||||
based on.
|
||||
This also includes the commit date, an indication of whether the checkout
|
||||
was modified and which branch was checked out. This value is not
|
||||
guaranteed to be sortable, but is mainly meant for identifying the
|
||||
revision and user display.
|
||||
|
||||
If no revision identifier could be found, this is left empty.
|
||||
REV_NR
|
||||
the revision number of the svn revision this checkout is based on.
|
||||
This can be used to determine which functionality is present in this
|
||||
checkout. For trunk svn checkouts and hg/git branches based upon it,
|
||||
this number should be accurate. For svn branch checkouts, this
|
||||
number is mostly meaningless, at least when comparing with the
|
||||
REV_NR from other branches or trunk.
|
||||
ISODATE
|
||||
the commit date of the revision this checkout is based on.
|
||||
The commit date may differ from the author date.
|
||||
This can be used to decide upon the age of the source.
|
||||
|
||||
This number should be sortable. Within a given branch or trunk, a
|
||||
higher number means a newer version. However, when using git or hg,
|
||||
this number will not increase on new commits.
|
||||
|
||||
If no revision number could be found, this is left empty.
|
||||
If no timestamp could be found, this is left empty.
|
||||
MODIFIED
|
||||
Whether (the src directory of) this checkout is modified or not. A
|
||||
value of 0 means not modified, a value of 2 means it was modified.
|
||||
Modification is determined in relation to the commit identified by
|
||||
REV, so not in relation to the svn revision identified by REV_NR.
|
||||
|
||||
A value of 1 means that the modified status is unknown, because this
|
||||
is not an svn/git/hg checkout for example.
|
||||
is not an git checkout for example.
|
||||
|
||||
CLEAN_REV
|
||||
the same as REV but without branch name
|
||||
HASH
|
||||
the git revision hash
|
||||
|
||||
By setting the AWK environment variable, a caller can determine which
|
||||
version of "awk" is used. If nothing is set, this script defaults to
|
||||
@@ -70,21 +59,7 @@ ROOT_DIR=`pwd`
|
||||
# Determine if we are using a modified version
|
||||
# Assume the dir is not modified
|
||||
MODIFIED="0"
|
||||
if [ -d "$ROOT_DIR/.svn" ] || [ -d "$ROOT_DIR/../.svn" ]; then
|
||||
# We are an svn checkout
|
||||
if [ -n "`svnversion | grep 'M'`" ]; then
|
||||
MODIFIED="2"
|
||||
fi
|
||||
# Find the revision like: rXXXXM-branch
|
||||
BRANCH=`LC_ALL=C svn info | "$AWK" '/^URL:.*branches/ { split($2, a, "/"); for(i in a) if (a[i]=="branches") { print a[i+1]; break } }'`
|
||||
TAG=`LC_ALL=C svn info | "$AWK" '/^URL:.*tags/ { split($2, a, "/"); for(i in a) if (a[i]=="tags") { print a[i+1]; break } }'`
|
||||
REV_NR=`LC_ALL=C svn info | "$AWK" '/^Last Changed Rev:/ { print $4 }'`
|
||||
if [ -n "$TAG" ]; then
|
||||
REV=$TAG
|
||||
else
|
||||
REV="r$REV_NR"
|
||||
fi
|
||||
elif [ -d "$ROOT_DIR/.git" ]; then
|
||||
if [ -d "$ROOT_DIR/.git" ]; then
|
||||
# We are a git checkout
|
||||
# Refresh the index to make sure file stat info is in sync, then look for modifications
|
||||
git update-index --refresh >/dev/null
|
||||
@@ -92,36 +67,33 @@ elif [ -d "$ROOT_DIR/.git" ]; then
|
||||
MODIFIED="2"
|
||||
fi
|
||||
HASH=`LC_ALL=C git rev-parse --verify HEAD 2>/dev/null`
|
||||
REV="g`echo $HASH | cut -c1-8`"
|
||||
BRANCH="`git symbolic-ref -q HEAD 2>/dev/null | sed 's@.*/@@;s@^master$@@'`"
|
||||
REV_NR=`LC_ALL=C git log --pretty=format:%s --grep="^(svn r[0-9]*)" -1 | sed "s@.*(svn r\([0-9]*\)).*@\1@"`
|
||||
if [ -z "$REV_NR" ]; then
|
||||
# No rev? Maybe it is a custom git-svn clone
|
||||
REV_NR=`LC_ALL=C git log --pretty=format:%b --grep="git-svn-id:.*@[0-9]*" -1 | sed "s@.*\@\([0-9]*\).*@\1@"`
|
||||
fi
|
||||
SHORTHASH=`echo ${HASH} | cut -c1-10`
|
||||
ISODATE=`LC_ALL=C git show -s --pretty='format:%ci' HEAD | "$AWK" '{ gsub("-", "", $1); print $1 }'`
|
||||
BRANCH="`git symbolic-ref -q HEAD 2>/dev/null | sed 's@.*/@@'`"
|
||||
TAG="`git name-rev --name-only --tags --no-undefined HEAD 2>/dev/null | sed 's@\^0$@@'`"
|
||||
|
||||
if [ "$MODIFIED" -eq "0" ]; then
|
||||
hashprefix="-g"
|
||||
elif [ "$MODIFIED" -eq "2" ]; then
|
||||
hashprefix="-m"
|
||||
else
|
||||
hashprefix="-u"
|
||||
fi
|
||||
|
||||
if [ -n "$TAG" ]; then
|
||||
BRANCH=""
|
||||
REV="$TAG"
|
||||
fi
|
||||
elif [ -d "$ROOT_DIR/.hg" ]; then
|
||||
# We are a hg checkout
|
||||
if [ -n "`HGPLAIN= hg status | grep -v '^?'`" ]; then
|
||||
MODIFIED="2"
|
||||
fi
|
||||
HASH=`LC_ALL=C HGPLAIN= hg id -i | cut -c1-12`
|
||||
REV="h`echo $HASH | cut -c1-8`"
|
||||
BRANCH="`HGPLAIN= hg branch | sed 's@^default$@@'`"
|
||||
TAG="`HGPLAIN= hg id -t | grep -v 'tip$'`"
|
||||
if [ -n "$TAG" ]; then
|
||||
BRANCH=""
|
||||
REV="$TAG"
|
||||
fi
|
||||
REV_NR=`LC_ALL=C HGPLAIN= hg log -f -k "(svn r" -l 1 --template "{desc|firstline}\n" | grep "^(svn r[0-9]*)" | sed "s@.*(svn r\([0-9]*\)).*@\1@"`
|
||||
if [ -z "$REV_NR" ]; then
|
||||
# No rev? Maybe it is a custom hgsubversion clone
|
||||
REV_NR=`LC_ALL=C HGPLAIN= hg parent --template="{svnrev}"`
|
||||
VERSION="${TAG}"
|
||||
ISTAG="1"
|
||||
if [ -n "`echo \"${TAG}\" | grep \"^[0-9.]*$\"`" ]; then
|
||||
ISSTABLETAG="1"
|
||||
else
|
||||
ISSTABLETAG="0"
|
||||
fi
|
||||
else
|
||||
VERSION="${ISODATE}-${BRANCH}${hashprefix}${SHORTHASH}"
|
||||
ISTAG="0"
|
||||
ISSTABLETAG="0"
|
||||
fi
|
||||
|
||||
elif [ -f "$ROOT_DIR/.ottdrev" ]; then
|
||||
# We are an exported source bundle
|
||||
cat $ROOT_DIR/.ottdrev
|
||||
@@ -129,19 +101,14 @@ elif [ -f "$ROOT_DIR/.ottdrev" ]; then
|
||||
else
|
||||
# We don't know
|
||||
MODIFIED="1"
|
||||
HASH=""
|
||||
SHORTHASH=""
|
||||
BRANCH=""
|
||||
REV=""
|
||||
REV_NR=""
|
||||
ISODATE=""
|
||||
TAG=""
|
||||
VERSION=""
|
||||
ISTAG="0"
|
||||
ISSTABLETAG="0"
|
||||
fi
|
||||
|
||||
if [ "$MODIFIED" -eq "2" ]; then
|
||||
REV="${REV}M"
|
||||
fi
|
||||
|
||||
CLEAN_REV=${REV}
|
||||
|
||||
if [ -n "$BRANCH" ]; then
|
||||
REV="${REV}-$BRANCH"
|
||||
fi
|
||||
|
||||
echo "$REV $REV_NR $MODIFIED $CLEAN_REV"
|
||||
echo "$VERSION $ISODATE $MODIFIED $HASH $ISTAG $ISSTABLETAG"
|
||||
|
732
known-bugs.txt
732
known-bugs.txt
@@ -1,6 +1,6 @@
|
||||
OpenTTD's known bugs
|
||||
Last updated: 2015-02-24
|
||||
Release version: 1.5.0-beta2
|
||||
Last updated: 2019-07-07
|
||||
Release version: 1.9.2
|
||||
------------------------------------------------------------------------
|
||||
|
||||
|
||||
@@ -14,12 +14,12 @@ Table of contents
|
||||
---- -----
|
||||
All bugs listed below are marked as known. Please do not submit any bugs
|
||||
that are the same as these. If you do, do not act surprised, because
|
||||
we WILL flame you!!
|
||||
we WILL flame you!
|
||||
|
||||
The current list of known bugs that we intend to fix can be found in our
|
||||
bug tracking system at: http://bugs.openttd.org
|
||||
Also check the closed bugs when searching for your bug in this system as
|
||||
we might have fixed the bug in the mean time.
|
||||
bug tracking system at https://github.com/OpenTTD/OpenTTD/issues
|
||||
Also check the closed bugs when searching for your bug in this system as we
|
||||
might have fixed the bug in the mean time.
|
||||
|
||||
|
||||
2.0) Known bugs
|
||||
@@ -29,427 +29,383 @@ reasons why we think that fixing them is infeasible. We might make some
|
||||
minor improvements that reduce the scope of these bugs, but we will not
|
||||
be able to completely fix them.
|
||||
|
||||
No suitable AI can be found
|
||||
If you have no AIs and an AI is started the so-called 'dummy' AI will
|
||||
be loaded. This AI does nothing but writing a message on the AI debug
|
||||
window and showing a red warning. There are basically two solutions
|
||||
for this problem: Either you set the number of AI players to 0 so that
|
||||
no AI is started. You find that setting at the top of the window in the
|
||||
"AI / Game Scripts Settings" window.
|
||||
The other solution is acquiring (downloading) some AI. The easiest way
|
||||
to do this is via the "Check Online Content" button in the main (intro)
|
||||
menu or directly in the "AI / Game Scripts Settings" dialogue via the
|
||||
"Check Online Content" button.
|
||||
No suitable AI can be found:
|
||||
If you have no AIs and an AI is started the so-called 'dummy' AI will
|
||||
be loaded. This AI does nothing but writing a message on the AI debug
|
||||
window and showing a red warning. There are basically two solutions
|
||||
for this problem: Either you set the number of AI players to 0 so that
|
||||
no AI is started. You find that setting at the top of the window in the
|
||||
"AI / Game Scripts Settings" window.
|
||||
The other solution is acquiring (downloading) some AI. The easiest way
|
||||
to do this is via the "Check Online Content" button in the main (intro)
|
||||
menu or directly in the "AI / Game Scripts Settings" dialogue via the
|
||||
"Check Online Content" button.
|
||||
|
||||
After a while of playing, colours get corrupted
|
||||
In Windows 7 the background slideshow corrupts the colour mapping of
|
||||
OpenTTD's 8bpp screen modes. Workarounds for this are:
|
||||
a) Switching to windowed mode, instead of fullscreen
|
||||
b) Switching off background slideshow
|
||||
c) Setting up the 32bpp-anim or 32bpp-optimized blitter
|
||||
After a while of playing, colours get corrupted:
|
||||
In Windows 7 the background slideshow corrupts the colour mapping
|
||||
of OpenTTD's 8bpp screen modes. Workarounds for this are:
|
||||
a) Switching to windowed mode, instead of fullscreen
|
||||
b) Switching off background slideshow
|
||||
c) Setting up the 32bpp-anim or 32bpp-optimized blitter
|
||||
|
||||
Long delay between switching songs/music
|
||||
On Windows there is a delay of a (few) second(s) between switching of
|
||||
songs for the "win32" driver. This delay is caused by the fact that
|
||||
opening a MIDI file via MCI is extremely slow.
|
||||
Custom vehicle type name is incorrectly aligned:
|
||||
Some NewGRFs use sprites that are bigger than normal in the "buy
|
||||
vehicle" window. Due to this they have to encode an offset for
|
||||
the vehicle type name. Upon renaming the vehicle type this encoded
|
||||
offset is stripped from the name because the "edit box" cannot show
|
||||
this encoding. As a result the custom vehicle type names will get
|
||||
the default alignment. The only way to (partially) fix this is by
|
||||
adding spaces to the custom name.
|
||||
|
||||
DirectMusic, known as "dmusic" in OpenTTD, has a much shorter delay.
|
||||
However, under some circumstances DirectMusic does not reset its
|
||||
state properly causing wrongly pitched/bad sounding songs. This
|
||||
problem is in DirectMusic as it is reproducable with Microsoft's
|
||||
DirectMusic Producer. DirectMusic has been deprecated since 2004
|
||||
and as such has no support for 64 bits OpenTTD.
|
||||
Clipping problems [#119]:
|
||||
In some cases sprites are not drawn as one would expect. Examples of
|
||||
this are aircraft that might be hidden below the runway or trees that
|
||||
in some cases are rendered over vehicles.
|
||||
The primary cause of this problem is that OpenTTD does not have enough
|
||||
data (like a 3D model) to properly determine what needs to be drawn in
|
||||
front of what. OpenTTD has bounding boxes but in lots of cases they
|
||||
are either too big or too small and then cause problems with what
|
||||
needs to be drawn in front of what. Also some visual tricks are used.
|
||||
For example trains at 8 pixels high, the catenary needs to be drawn
|
||||
above that. When you want to draw bridges on top of that, which are
|
||||
only one height level (= 8 pixels) higher, you are getting into some
|
||||
big problems.
|
||||
We can not change the height levels; it would require us to either
|
||||
redraw all vehicle or all landscape graphics. Doing so would mean we
|
||||
leave the Transport Tycoon graphics, which in effect means OpenTTD
|
||||
will not be a Transport Tycoon clone anymore.
|
||||
|
||||
As a delay is favourable over bad sounding music the "win32" driver
|
||||
is the default driver for OpenTTD. You can change this default by
|
||||
setting the "musicdriver" in your openttd.cfg to "dmusic".
|
||||
Mouse scrolling not possible at the edges of the screen [#383] [#3966]:
|
||||
Scrolling the viewport with the mouse cursor at the edges of the screen
|
||||
in the same direction of the edge will fail. If the cursor is near the
|
||||
edge the scrolling will be very slow.
|
||||
OpenTTD only receives cursor position updates when the cursor is inside
|
||||
OpenTTD's window. It is not told how far you have moved the cursor
|
||||
outside of OpenTTD's window.
|
||||
|
||||
Custom vehicle type name is incorrectly aligned
|
||||
Some NewGRFs use sprites that are bigger than normal in the "buy
|
||||
vehicle" window. Due to this they have to encode an offset for the
|
||||
vehicle type name. Upon renaming the vehicle type this encoded offset
|
||||
is stripped from the name because the "edit box" cannot show this
|
||||
encoding. As a result the custom vehicle type names will get the
|
||||
default alignment. The only way to (partly) fix this is by adding
|
||||
spaces to the custom name.
|
||||
Lost trains ignore (block) exit signals [#1473]:
|
||||
If trains are lost they ignore block exit signals, blocking junctions
|
||||
with presignals. This is caused because the path finders cannot tell
|
||||
where the train needs to go. As such a random direction is chosen at
|
||||
each junction. This causes the trains to occasionally to make choices
|
||||
that are unwanted from a player's point of view.
|
||||
This will not be fixed because lost trains are in almost all cases a
|
||||
network problem, e.g. a train can never reach a specific place. This
|
||||
makes the impact of fixing the bug enormously small against the amount
|
||||
of work needed to write a system that prevents the lost trains from
|
||||
taking the wrong direction.
|
||||
|
||||
Clipping problems [FS#119]
|
||||
In some cases sprites are not drawn as one would expect. Examples of
|
||||
this are aircraft that might be hidden below the runway or trees that
|
||||
in some cases are rendered over vehicles.
|
||||
The primary cause of this problem is that OpenTTD does not have enough
|
||||
data (like a 3D model) to properly determine what needs to be drawn in
|
||||
front of what. OpenTTD has bounding boxes but in lots of cases they
|
||||
are either too big or too small and then cause problems with what
|
||||
needs to be drawn in front of what. Also some visual tricks are used.
|
||||
For example trains at 8 pixels high, the catenary needs to be drawn
|
||||
above that. When you want to draw bridges on top of that, which are
|
||||
only one height level (= 8 pixels) higher, you are getting into some
|
||||
big problems.
|
||||
We can not change the height levels; it would require us to either
|
||||
redraw all vehicle or all landscape graphics. Doing so would mean we
|
||||
leave the Transport Tycoon graphics, which in effect means OpenTTD
|
||||
will not be a Transport Tycoon clone anymore.
|
||||
Vehicle owner of last transfer leg gets paid for all [#2427]:
|
||||
When you make a transfer system that switches vehicle owners. This
|
||||
is only possible with 'industry stations', e.g. the oil rig station
|
||||
the owner of the vehicle that does the final delivery gets paid for
|
||||
the whole trip. It is not shared amongst the different vehicle
|
||||
owners that have participated in transporting the cargo.
|
||||
This sharing is not done because it would enormously increase the
|
||||
memory and CPU usage in big games for something that is happening
|
||||
in only one corner case. We think it is not worth the effort until
|
||||
sharing of stations is an official feature.
|
||||
|
||||
Mouse scrolling not possible at the edges of the screen [FS#383] [FS#3966]
|
||||
Scrolling the viewport with the mouse cursor at the edges of the screen
|
||||
in the same direction of the edge will fail. If the cursor is near the
|
||||
edge the scrolling will be very slow.
|
||||
OpenTTD only receives cursor position updates when the cursor is inside
|
||||
OpenTTD's window. It is not told how far you have moved the cursor
|
||||
outside of OpenTTD's window.
|
||||
Forbid 90 degree turns does not work for crossing PBS paths [#2737]:
|
||||
When you run a train through itself on a X junction with PBS turned on
|
||||
the train will not obey the 'forbid 90 degree turns' setting. This is
|
||||
due to the fact that we can not be sure that the setting was turned
|
||||
off when the track was reserved, which means that we assume it was
|
||||
turned on and that the setting does not hold at the time. We made it
|
||||
this way to allow one to change the setting in-game, but it breaks
|
||||
slightly when you are running your train through itself. Running a
|
||||
train through means that your network is broken and is thus a user
|
||||
error which OpenTTD tries to graciously handle.
|
||||
Fixing this bug means that we need to record whether this particular
|
||||
setting was turned on or off at the time the reservation was made. This
|
||||
means adding quite a bit of data to the savegame for solving an issue
|
||||
that is basically an user error. We think it is not worth the effort.
|
||||
|
||||
Lost trains ignore (block) exit signals [FS#1473]
|
||||
If trains are lost they ignore block exit signals, blocking junctions
|
||||
with presignals. This is caused because the path finders cannot tell
|
||||
where the train needs to go. As such a random direction is chosen at
|
||||
each junction. This causes the trains to occasionally to make choices
|
||||
that are unwanted from a player's point of view.
|
||||
This will not be fixed because lost trains are in almost all cases a
|
||||
network problem, e.g. a train can never reach a specific place. This
|
||||
makes the impact of fixing the bug enormously small against the
|
||||
amount of work needed to write a system that prevents the lost trains
|
||||
from taking the wrong direction.
|
||||
Duplicate (station) names after renaming [#3204]:
|
||||
After renaming stations one can create duplicate station names. This
|
||||
is done giving a station the same custom name as another station with
|
||||
an automatically generated name.
|
||||
The major part of this problem is that station names are translatable.
|
||||
Meaning that a station is called e.g. '<TOWN> Central' in English and
|
||||
'<TOWN> Centraal' in Dutch. This means that in network games the
|
||||
renaming of a town could cause the rename to succeed on some clients
|
||||
and fail at others. This creates an inconsistent game state that will
|
||||
be seen as a 'desync'. Secondly the custom names are intended to fall
|
||||
completely outside of the '<TOWN> <name>' naming of stations, so when
|
||||
you rename a town all station names are updated accordingly.
|
||||
As a result the decision has been made that all custom names are only
|
||||
compared to the other custom names in the same class and not compared
|
||||
to the automatically generated names.
|
||||
|
||||
Vehicle owner of last transfer leg gets paid for all [FS#2427]
|
||||
When you make a transfer system that switches vehicle owners. This
|
||||
is only possible with 'industry stations', e.g. the oil rig station
|
||||
the owner of the vehicle that does the final delivery gets paid for
|
||||
the whole trip. It is not shared amongst the different vehicle
|
||||
owners that have participated in transporting the cargo.
|
||||
This sharing is not done because it would enormously increase the
|
||||
memory and CPU usage in big games for something that is happening
|
||||
in only one corner case. We think it is not worth the effort until
|
||||
sharing of stations is an official feature.
|
||||
Extreme CPU usage/hangs when using SDL and PulseAudio [#3294],
|
||||
OpenTTD hangs/freezes when closing, OpenTTD is slow, OpenTTD uses a lot of CPU:
|
||||
OpenTTD can be extremely slow/use a lot of CPU when the sound is
|
||||
played via SDL and then through PulseAudio's ALSA wrapper. Under the
|
||||
same configuration OpenTTD, or rather SDL, might hang when exiting
|
||||
the game. This problem is seen most in Ubuntu 9.04 and higher.
|
||||
|
||||
Forbid 90 degree turns does not work for crossing PBS paths [FS#2737]
|
||||
When you run a train through itself on a X junction with PBS turned on
|
||||
the train will not obey the 'forbid 90 degree turns' setting. This is
|
||||
due to the fact that we can not be sure that the setting was turned
|
||||
off when the track was reserved, which means that we assume it was
|
||||
turned on and that the setting does not hold at the time. We made it
|
||||
this way to allow one to change the setting in-game, but it breaks
|
||||
slightly when you are running your train through itself. Running a
|
||||
train through means that your network is broken and is thus a user
|
||||
error which OpenTTD tries to graciously handle.
|
||||
Fixing this bug means that we need to record whether this particular
|
||||
setting was turned on or off at the time the reservation was made. This
|
||||
means adding quite a bit of data to the savegame for solving an issue
|
||||
that is basically an user error. We think it is not worth the effort.
|
||||
This is because recent versions of the PulseAudio sound server
|
||||
are configured to use timer-based audio scheduling rather than
|
||||
interrupt-based audio scheduling. Configuring PulseAudio to force
|
||||
use of interrupt-based scheduling may resolve sound problems for
|
||||
some users. Under recent versions of Ubuntu Linux (9.04 and higher)
|
||||
this can be accomplished by changing the following line in the
|
||||
/etc/pulse/default.pa file:
|
||||
load-module module-udev-detect
|
||||
to
|
||||
load-module module-udev-detect tsched=0
|
||||
Note that PulseAudio must be restarted for changes to take effect. Older
|
||||
versions of PulseAudio may use the module-hal-detect module instead.
|
||||
Adding tsched=0 to the end of that line will have a similar effect.
|
||||
|
||||
Duplicate (station) names after renaming [FS#3204]
|
||||
After renaming stations one can create duplicate station names. This
|
||||
is done giving a station the same custom name as another station with
|
||||
an automatically generated name.
|
||||
The major part of this problem is that station names are translatable.
|
||||
Meaning that a station is called e.g. '<TOWN> Central' in English and
|
||||
'<TOWN> Centraal' in Dutch. This means that in network games the
|
||||
renaming of a town could cause the rename to succeed on some clients
|
||||
and fail at others. This creates an inconsistent game state that will
|
||||
be seen as a 'desync'. Secondly the custom names are intended to fall
|
||||
completely outside of the '<TOWN> <name>' naming of stations, so when
|
||||
you rename a town all station names are updated accordingly.
|
||||
As a result the decision has been made that all custom names are only
|
||||
compared to the other custom names in the same class and not compared
|
||||
to the automatically generated names.
|
||||
Another possible solution is selecting the "pulse" backend of SDL
|
||||
by either using "SDL_AUDIODRIVER=pulse openttd" at the command
|
||||
prompt or installing the 'libsdl1.2debian-pulseaudio' package from
|
||||
Ubuntu's Universe repository. For other distributions a similar
|
||||
package needs to be installed.
|
||||
|
||||
Extreme CPU usage/hangs when using SDL and PulseAudio [FS#3294]
|
||||
OpenTTD hangs/freezes when closing, OpenTTD is slow, OpenTTD uses a lot of CPU
|
||||
OpenTTD can be extremely slow/use a lot of CPU when the sound is
|
||||
played via SDL and then through PulseAudio's ALSA wrapper. Under the
|
||||
same configuration OpenTTD, or rather SDL, might hang when exiting
|
||||
the game. This problem is seen most in Ubuntu 9.04 and higher.
|
||||
|
||||
This is because recent versions of the PulseAudio sound server are
|
||||
configured to use timer-based audio scheduling rather than
|
||||
interrupt-based audio scheduling. Configuring PulseAudio to force
|
||||
use of interrupt-based scheduling may resolve sound problems for
|
||||
some users. Under recent versions of Ubuntu Linux (9.04 and higher)
|
||||
this can be accomplished by changing the following line in the
|
||||
/etc/pulse/default.pa file:
|
||||
load-module module-udev-detect
|
||||
to
|
||||
load-module module-udev-detect tsched=0
|
||||
Note that PulseAudio must be restarted for changes to take effect.
|
||||
Older versions of PulseAudio may use the module-hal-detect module
|
||||
instead. Adding tsched=0 to the end of that line will have a similar
|
||||
effect.
|
||||
|
||||
Another possible solution is selecting the "pulse" backend of SDL
|
||||
by either using "SDL_AUDIODRIVER=pulse openttd" at the command
|
||||
prompt or installing the 'libsdl1.2debian-pulseaudio' package from
|
||||
Ubuntu's Universe repository. For other distributions a similar
|
||||
package needs to be installed.
|
||||
|
||||
OpenTTD not properly resizing with SDL on X [FS#3305]
|
||||
Under some X window managers OpenTTD's window does not properly
|
||||
resize. You will either end up with a black bar at the right/bottom
|
||||
side of the window or you cannot see the right/bottom of the window,
|
||||
e.g you cannot see the status bar. The problem is that OpenTTD does
|
||||
not always receive a resize event from SDL making it impossible for
|
||||
OpenTTD to know that the window was resized; sometimes moving the
|
||||
window will solve the problem.
|
||||
Window managers that are known to exhibit this behaviour are KDE's
|
||||
and GNOME's. With the XFCE's and LXDE's window managers the resize
|
||||
event is sent when the user releases the mouse.
|
||||
OpenTTD not properly resizing with SDL on X [#3305]:
|
||||
Under some X window managers OpenTTD's window does not properly
|
||||
resize. You will either end up with a black bar at the right/bottom
|
||||
side of the window or you cannot see the right/bottom of the window,
|
||||
e.g. you cannot see the status bar. The problem is that OpenTTD does
|
||||
not always receive a resize event from SDL making it impossible for
|
||||
OpenTTD to know that the window was resized; sometimes moving the
|
||||
window will solve the problem.
|
||||
Window managers that are known to exhibit this behaviour are GNOME's
|
||||
and KDE's. With the XFCE's and LXDE's window managers the resize
|
||||
event is sent when the user releases the mouse.
|
||||
|
||||
Incorrect colours, crashes upon exit, debug warnings and smears upon
|
||||
window resizing with SDL on Mac OS X [FS#3447]
|
||||
Video handling with (lib)SDL under Mac OS X is known to fail on some
|
||||
versions of Mac OS X with some hardware configurations. Some of the
|
||||
problems happen only under some circumstances whereas others are
|
||||
always present.
|
||||
We suggest that the SDL video/sound backend is not used for OpenTTD
|
||||
in combinations with Mac OS X.
|
||||
window resizing with SDL on macOS [#3447]:
|
||||
Video handling with (lib)SDL under macOS is known to fail on some
|
||||
versions of macOS with some hardware configurations. Some of
|
||||
the problems happen only under some circumstances whereas others
|
||||
are always present.
|
||||
We suggest that the SDL video/sound backend is not used for OpenTTD
|
||||
in combinations with macOS.
|
||||
|
||||
Train crashes entering same junction from block and path signals [FS#3928]
|
||||
When a train has reserved a path from a path signal to a two way
|
||||
block signal and the reservation passes a path signal through the
|
||||
back another train can enter the reserved path (only) via that same
|
||||
two way block signal.
|
||||
The reason for this has to do with optimisation; to fix this issue
|
||||
the signal update has to pass all path signals until it finds either
|
||||
a train or a backwards facing signal. This is a very expensive task.
|
||||
The (signal) setups that allow these crashes can furthermore be
|
||||
considered incorrectly signalled; one extra safe waiting point for
|
||||
the train entering from path signal just after the backwards facing
|
||||
signal (from the path signal train) resolves the issue.
|
||||
Train crashes entering same junction from block and path signals [#3928]:
|
||||
When a train has reserved a path from a path signal to a two way
|
||||
block signal and the reservation passes a path signal through the
|
||||
back another train can enter the reserved path (only) via that
|
||||
same two way block signal.
|
||||
The reason for this has to do with optimisation; to fix this issue
|
||||
the signal update has to pass all path signals until it finds either
|
||||
a train or a backwards facing signal. This is a very expensive task.
|
||||
The (signal) setups that allow these crashes can furthermore be
|
||||
considered incorrectly signalled; one extra safe waiting point for
|
||||
the train entering from path signal just after the backwards facing
|
||||
signal (from the path signal train) resolves the issue.
|
||||
|
||||
Crashes when playing music [FS#3941]
|
||||
Mac OS X's QuickTime (default music driver) and Windows' MCI (win32
|
||||
music driver) crash on some songs from OpenMSX. OpenTTD cannot do
|
||||
anything about this. Please report these crashes to the authors of
|
||||
OpenMSX so the crash causing songs can be removed or fixed.
|
||||
Crashes when run in a VM using Parallels Desktop [#4003]:
|
||||
When the Windows version of OpenTTD is executed in a VM under
|
||||
Parallels Desktop a privileged instruction exception may be thrown.
|
||||
As OpenTTD works natively on macOS as well as natively on Windows and
|
||||
these native builds both don't exhibit this behaviour this crash is
|
||||
most likely due to a bug in the virtual machine, something out of
|
||||
the scope of OpenTTD. Most likely this is due to Parallels Desktop
|
||||
lacking support for RDTSC calls. The problem can be avoided by using
|
||||
other VM-software, Wine, or running natively on macOS.
|
||||
|
||||
Crashes when run in a VM using Parallels Desktop [FS#4003]
|
||||
When the Windows version of OpenTTD is executed in a VM under
|
||||
Parallels Desktop a privileged instruction exception may be thrown.
|
||||
As OpenTTD works natively on OSX as well as natively on Windows and
|
||||
these native builds both don't exhibit this behaviour this crash is
|
||||
most likely due to a bug in the virtual machine, something out of
|
||||
the scope of OpenTTD. Most likely this is due to Parallels Desktop
|
||||
lacking support for RDTSC calls. The problem can be avoided by using
|
||||
other VM-software, Wine, or running natively on OSX.
|
||||
Entry- and exit signals are not dragged [#4378]:
|
||||
Unlike all other signal types, the entry- and exit signals are not
|
||||
dragged but instead normal signals are placed on subsequent track
|
||||
sections. This is done on purpose as this is the usually more
|
||||
convenient solution. There are little to no occasions where more
|
||||
than one entry or exit signal in a row are useful. This is different
|
||||
for all other signal types where several in a row can serve one
|
||||
purpose or another.
|
||||
|
||||
OpenTTD hangs when started on 32 bits Windows [FS#4083]
|
||||
Under some circumstances OpenTTD might hang for hours on the
|
||||
initialisation of the music driver. The exact circumstances are
|
||||
unknown except that it is the "dmusic" music driver that has the
|
||||
problem and that the "win32" music driver does not.
|
||||
As a result using the "win32" music driver will work around this
|
||||
issue.
|
||||
Station build date is incorrect [#4415]:
|
||||
The tile query tool will show the date of the last (re)construction
|
||||
at the station and not the date of the first construction. This is
|
||||
due to compatability reasons with NewGRFs and the fact that it is
|
||||
wrong to say that the station is built in a particular year when it
|
||||
was completely destroyed/rebuilt later on.
|
||||
The tile query tool can be fixed by changing the "Build date" text
|
||||
to "Date at which the last (re)construction took place" but this is
|
||||
deemed too specific and long for that window.
|
||||
|
||||
As the exact circumstances are unknown, and the obvious
|
||||
configuration settings related to the music driver are at their
|
||||
default we are not able to detect this failure, except when Windows'
|
||||
music initialisation function returns after several hours and then
|
||||
there is no point in switching the music driver anymore.
|
||||
The reason we still use the "win32" music driver as default are
|
||||
described in the "Long delay between switching music/song" section
|
||||
of this document.
|
||||
(Temporary) wrong colours when switching to full screen [#4511]:
|
||||
On Windows it can happen that you temporarily see wrong colours
|
||||
when switching to full screen OpenTTD, either by starting
|
||||
OpenTTD in full screen mode, changing to full screen mode or by
|
||||
ALT-TAB-ing into a full screen OpenTTD. This is caused by the
|
||||
fact that OpenTTD, by default, uses 8bpp paletted output. The
|
||||
wrong colours you are seeing is a temporary effect of the video
|
||||
driver switching to 8bpp palette mode.
|
||||
|
||||
Pre- and exit signals are not dragged [FS#4378]
|
||||
Unlike all other signal types, the entry- and exit signals are not
|
||||
dragged but instead normal signals are placed on subsequent track
|
||||
sections. This is done on purpose as this is the usually more con-
|
||||
venient solution. There are little to no occasions where more than
|
||||
one entry or exit signal in a row are useful. This is different
|
||||
for all other signal types where several in a row can serve one
|
||||
purpose or another.
|
||||
This issue can be worked around in two ways:
|
||||
a) Setting fullscreen_bpp to 32
|
||||
b) Setting up the 32bpp-anim or 32bpp-optimized blitter
|
||||
|
||||
Station build date is incorrect [FS#4415]
|
||||
The tile query tool will show the date of the last (re)construction
|
||||
at the station and not the date of the first construction. This is
|
||||
due to compatability reasons with NewGRFs and the fact that it is
|
||||
wrong to say that the station is built in a particular year when it
|
||||
was completely destroyed/rebuilt later on.
|
||||
The tile query tool can be fixed by changing the "Build date" text
|
||||
to "Date at which the last (re)construction took place" but this is
|
||||
deemed too specific and long for that window.
|
||||
Can't run OpenTTD with the -d option from a MSYS console [#4587]:
|
||||
The MSYS console does not allow OpenTTD to open an extra console for
|
||||
debugging output. Compiling OpenTTD with the --enable-console
|
||||
configure option prevents this issue and allows the -d option to use
|
||||
the MSYS console for its output.
|
||||
|
||||
Can't change volume inside OpenTTD [FS#4416]
|
||||
Some backends do not provide a means to change the volume of sound
|
||||
effects or music. The mixing of music and sound is left to external
|
||||
libraries/the operating system we can't handle the volume control
|
||||
in OpenTTD. As a result you can't change the volume inside OpenTTD
|
||||
for backends such as SDL; just use the volume control provided by
|
||||
your operating system.
|
||||
Unreadable characters for non-latin locales [#4607]:
|
||||
OpenTTD does not ship a non-latin font in its graphics files. As a
|
||||
result OpenTTD needs to acquire the font from somewhere else. What
|
||||
OpenTTD does is ask the operating system, or a system library, for
|
||||
the best font for a given language if the currently loaded font
|
||||
does not provide all characters of the chosen translation. This
|
||||
means that OpenTTD has no influence over the quality of the chosen
|
||||
font; it just does the best it can do.
|
||||
|
||||
Can't run OpenTTD with the -d option from a MSYS console [FS#4587]
|
||||
The MSYS console does not allow OpenTTD to open an extra console for
|
||||
debugging output. Compiling OpenTTD with the --enable-console
|
||||
configure option prevents this issue and allows the -d option to use
|
||||
the MSYS console for its output.
|
||||
If the text is unreadable there are several steps that you can take
|
||||
to improve this. The first step is finding a good font and configure
|
||||
this in the configuration file. See section 9.0 of README.md for
|
||||
more information. You can also increase the font size to make the
|
||||
characters bigger and possible better readable.
|
||||
|
||||
Unreadable characters for non-latin locales [FS#4607]
|
||||
OpenTTD does not ship a non-latin font in its graphics files. As a
|
||||
result OpenTTD needs to acquire the font from somewhere else. What
|
||||
OpenTTD does is ask the operating system, or a system library, for
|
||||
the best font for a given language if the currently loaded font
|
||||
does not provide all characters of the chosen translation. This
|
||||
means that OpenTTD has no influence over the quality of the chosen
|
||||
font; it just does the best it can do.
|
||||
If the problem is with the clarity of the font you might want to
|
||||
enable anti-aliasing by setting the small_aa/medium_aa/large_aa
|
||||
settings to "true". However, anti-aliasing only works when a 32-bit
|
||||
blitter has been selected, e.g. blitter = "32bpp-anim", as with the
|
||||
8 bits blitter there are not enough colours to properly perform the
|
||||
anti-aliasing.
|
||||
|
||||
If the text is unreadable there are several steps that you can take
|
||||
to improve this. The first step is finding a good font and configure
|
||||
this in the configuration file. See section 9.0 of readme.txt for
|
||||
more information. You can also increase the font size to make the
|
||||
characters bigger and possible better readable.
|
||||
Train does not crash with itself [#4635]:
|
||||
When a train drives in a circle the front engine passes through
|
||||
wagons of the same train without crashing. This is intentional.
|
||||
Signals are only aware of tracks, they do not consider the train
|
||||
length and whether there would be enough room for a train in some
|
||||
circle it might drive on. Also the path a train might take is not
|
||||
necessarily known when passing a signal.
|
||||
Checking all circumstances would take a lot of additional
|
||||
computational power for signals, which is not considered worth
|
||||
the effort, as it does not add anything to gameplay.
|
||||
Nevertheless trains shall not crash in normal operation, so making
|
||||
a train not crash with itself is the best solution for everyone.
|
||||
|
||||
If the problem is with the clarity of the font you might want to
|
||||
enable anti-aliasing by setting the small_aa/medium_aa/large_aa
|
||||
settings to "true". However, anti-aliasing only works when a 32 bits
|
||||
blitter has been selected, e.g. blitter = "32bpp-anim", as with the
|
||||
8 bits blitter there are not enough colours to properly perform the
|
||||
anti-aliasing.
|
||||
Aircraft coming through wall in rotated airports [#4705]:
|
||||
With rotated airports, specifically hangars, you will see that the
|
||||
aircraft will show a part through the back wall of the hangar.
|
||||
This can be solved by only drawing a part of the plane when being
|
||||
at the back of the hangar, however then with transparency turned on
|
||||
the aircraft would be shown partially which would be even weirder.
|
||||
As such the current behaviour is deemed the least bad.
|
||||
The same applies to overly long ships and their depots.
|
||||
|
||||
(Temporary) wrong colours when switching to full screen [FS#4511]:
|
||||
On Windows it can happen that you temporarily see wrong colours
|
||||
when switching to full screen OpenTTD, either by starting
|
||||
OpenTTD in full screen mode, changing to full screen mode or by
|
||||
ALT-TAB-ing into a full screen OpenTTD. This is caused by the
|
||||
fact that OpenTTD, by default, uses 8bpp paletted output. The
|
||||
wrong colours you are seeing is a temporary effect of the video
|
||||
driver switching to 8bpp palette mode.
|
||||
Vehicles not keeping their "maximum" speed [#4815]:
|
||||
Vehicles that have not enough power to reach and maintain their
|
||||
advertised maximum speed might be constantly jumping between two
|
||||
speeds. This is due to the fact that speed and its calculations
|
||||
are done with integral numbers instead of floating point numbers.
|
||||
As a result of this a vehicle will never reach its equilibrium
|
||||
between the drag/friction and propulsion. So in effect it will be
|
||||
in a vicious circle of speeding up and slowing down due to being
|
||||
just at the other side of the equilibrium.
|
||||
|
||||
This issue can be worked around in two ways:
|
||||
a) Setting fullscreen_bpp to 32
|
||||
b) Setting up the 32bpp-anim or 32bpp-optimized blitter
|
||||
Not speeding up when near the equilibrium will cause the vehicle to
|
||||
never come in the neighbourhood of the equilibrium and not slowing
|
||||
down when near the equilibrium will cause the vehicle to never slow
|
||||
down towards the equilibrium once it has come down a hill.
|
||||
|
||||
Train does not crash with itself [FS#4635]:
|
||||
When a train drives in a circle the front engine passes through
|
||||
wagons of the same train without crashing. This is intentional.
|
||||
Signals are only aware of tracks, they do not consider the train
|
||||
length and whether there would be enough room for a train in some
|
||||
circle it might drive on. Also the path a train might take is not
|
||||
necessarily known when passing a signal.
|
||||
Checking all circumstances would take a lot of additional computational
|
||||
power for signals, which is not considered worth the effort, as
|
||||
it does not add anything to gameplay.
|
||||
Nevertheless trains shall not crash in normal operation, so making
|
||||
a train not crash with itself is the best solution for everyone.
|
||||
It is possible to calculate whether the equilibrium will be passed,
|
||||
but then all acceleration calculations need to be done twice.
|
||||
|
||||
Aircraft coming through wall in rotated airports [FS#4705]:
|
||||
With rotated airports, specifically hangars, you will see that the
|
||||
aircraft will show a part through the back wall of the hangar.
|
||||
This can be solved by only drawing a part of the plane when being
|
||||
at the back of the hangar, however then with transparency turned on
|
||||
the aircraft would be shown partially which would be even weirder.
|
||||
As such the current behaviour is deemed the least bad.
|
||||
The same applies to overly long ships and their depots.
|
||||
Settings not saved when OpenTTD crashes [#4846]:
|
||||
The settings are not saved when OpenTTD crashes for several reasons.
|
||||
The most important is that the game state is broken and as such the
|
||||
settings might contain invalid values, or the settings have not even
|
||||
been loaded yet. This would cause invalid or totally wrong settings
|
||||
to be written to the configuration file.
|
||||
|
||||
Vehicles not keeping their "maximum" speed [FS#4815]:
|
||||
Vehicles that have not enough power to reach and maintain their
|
||||
advertised maximum speed might be constantly jumping between two
|
||||
speeds. This is due to the fact that speed and its calculations
|
||||
are done with integral numbers instead of floating point numbers.
|
||||
As a result of this a vehicle will never reach its equilibrium
|
||||
between the drag/friction and propulsion. So in effect it will be
|
||||
in a vicious circle of speeding up and slowing down due to being
|
||||
just at the other side of the equilibrium.
|
||||
A solution to that would be saving the settings whenever one changes,
|
||||
however due to the way the configuration file is saved this requires
|
||||
a flush of the file to the disk and OpenTTD needs to wait till that
|
||||
is finished. On some file system implementations this causes the
|
||||
flush of all 'write-dirty' caches, which can be a significant amount
|
||||
of data to be written. This can further be aggravated by spinning
|
||||
down disks to conserve power, in which case this disk needs to be
|
||||
spun up first. This means that many seconds may pass before the
|
||||
configuration file is actually written, and all that time OpenTTD
|
||||
will not be able to show any progress. Changing the way the
|
||||
configuration file is saved is not an option as that leaves us more
|
||||
vulnerable to corrupt configuration files.
|
||||
|
||||
Not speeding up when near the equilibrium will cause the vehicle
|
||||
to never come in the neighbourhood of the equilibrium and not
|
||||
slowing down when near the equilibrium will cause the vehicle
|
||||
to never slow down towards the equilibrium once it has come down
|
||||
a hill.
|
||||
Finally, crashes should not be happening. If they happen they should
|
||||
be reported and fixed, so essentially fixing this is fixing the wrong
|
||||
thing. If you really need the configuration changes to be saved,
|
||||
and you need to run a version that crashes regularly, then you can
|
||||
use the 'saveconfig' command in the console to save the settings.
|
||||
|
||||
It is possible to calculate whether the equilibrium will be
|
||||
passed, but then all acceleration calculations need to be done
|
||||
twice.
|
||||
Not all NewGRFs, AIs, game scripts are found [#4887]:
|
||||
Under certain situations, where the path for the content within a
|
||||
tar file is the same as other content on the file system or in another
|
||||
tar file, it is possible that content is not found. A more thorough
|
||||
explanation and solutions are described in section 4.4 of README.md.
|
||||
|
||||
Settings not saved when OpenTTD crashes [FS#4846]:
|
||||
The settings are not saved when OpenTTD crashes for several reasons.
|
||||
The most important is that the game state is broken and as such the
|
||||
settings might contain invalid values, or the settings have not even
|
||||
been loaded yet. This would cause invalid or totally wrong settings
|
||||
to be written to the configuration file.
|
||||
Mouse cursor going missing with SDL [#4997]:
|
||||
Under certain circumstances SDL does not notify OpenTTD of changes with
|
||||
respect to the mouse pointer, specifically whether the mouse pointer
|
||||
is within the bounds of OpenTTD or not. For example, if you "Alt-Tab"
|
||||
to another application the mouse cursor will still be shown in OpenTTD,
|
||||
and when you move the mouse outside of the OpenTTD window so the cursor
|
||||
gets hidden, open/move another application on top of the OpenTTD window
|
||||
and then Alt-tab back into OpenTTD the cursor will not be shown.
|
||||
|
||||
A solution to that would be saving the settings whenever one changes,
|
||||
however due to the way the configuration file is saved this requires
|
||||
a flush of the file to the disk and OpenTTD needs to wait till that
|
||||
is finished. On some file system implementations this causes the
|
||||
flush of all 'write-dirty' caches, which can be a significant amount
|
||||
of data to be written. This can further be aggravated by spinning
|
||||
down disks to conserve power, in which case this disk needs to be
|
||||
spun up first. This means that many seconds may pass before the
|
||||
configuration file is actually written, and all that time OpenTTD
|
||||
will not be able to show any progress. Changing the way the
|
||||
configuration file is saved is not an option as that leaves us more
|
||||
vulnerable to corrupt configuration files.
|
||||
We cannot fix this problem as SDL simply does not provide the required
|
||||
information in these corner cases. This is a bug in SDL and as such
|
||||
there is little that we can do about it.
|
||||
|
||||
Finally, crashes should not be happening. If they happen they should
|
||||
be reported and fixed, so essentially fixing this is fixing the
|
||||
wrong thing. If you really need the configuration changes to be
|
||||
saved, and you need to run a version that crashes regularly, then
|
||||
you can use the 'saveconfig' command in the console to save the
|
||||
settings.
|
||||
Trains might not stop at platforms that are currently being changed [#5553]:
|
||||
If you add tiles to or remove tiles from a platform while a train is
|
||||
approaching to stop at the same platform, that train can miss the place
|
||||
where it's supposed to stop and pass the station without stopping.
|
||||
This is caused by the fact that the train is considered to already
|
||||
have stopped if it's beyond its assigned stopping location. We can't
|
||||
let the train stop just anywhere in the station because then it would
|
||||
never leave the station if you have the same station in the order
|
||||
list multiple times in a row or if there is only one station
|
||||
in theorder list (see #5684).
|
||||
|
||||
Not all NewGRFs, AIs, game scripts are found [FS#4887]:
|
||||
Under certain situations, where the path for the content within a
|
||||
tar file is the same as other content on the file system or in another
|
||||
tar file, it is possible that content is not found. A more thorough
|
||||
explanation and solutions are described in section 4.4 of readme.txt.
|
||||
Inconsistent catchment areas [#5661]:
|
||||
Due to performance decisions the catchment area for cargo accepted by a
|
||||
station for delivery to houses or industries differs from the catchment
|
||||
area for cargo that is delivered to stations from houses or industries.
|
||||
|
||||
Mouse cursor going missing with SDL [FS#4997]:
|
||||
Under certain circumstances SDL does not notify OpenTTD of changes
|
||||
with respect to the mouse pointer, specifically whether the mouse
|
||||
pointer is within the bounds of OpenTTD or not. For example, if you
|
||||
Alt-tab to another application the mouse cursor will still be shown
|
||||
in OpenTTD, and when you move the mouse outside of the OpenTTD
|
||||
window so the cursor gets hidden, open/move another application on
|
||||
top of the OpenTTD window and then Alt-tab back into OpenTTD the
|
||||
cursor will not be shown.
|
||||
Conceptually they work the same, but the effect in game differs. They
|
||||
work by finding the closest destination "around" the source which is
|
||||
within a certain distance. This distance depends on the type of station,
|
||||
e.g. road stops have a smaller catchment area than large airports.
|
||||
In both cases the bounding box, the smallest rectangle that contains
|
||||
all tiles of something, is searched for the target of the cargo,
|
||||
and then spiraling outwards finding the closest tile of the target.
|
||||
|
||||
We cannot fix this problem as SDL simply does not provide the
|
||||
required information in these corner cases. This is a bug in SDL
|
||||
and as such there is little that we can do about it.
|
||||
In the case of a station with two tiles spread far apart with a house
|
||||
that is within the station's bounding box, it would be possible that
|
||||
the spiraling search from the house does not reach one of the station
|
||||
tiles before the search ends, i.e. all tiles within that distance
|
||||
are searched. So the house does not deliver cargo to the station.
|
||||
On the other hand, the station will deliver cargo because the house
|
||||
falls within the bounding box, and thus search area.
|
||||
|
||||
Inconsistent catchment areas [FS#5661]:
|
||||
Due to performance decisions the catchment area for cargo accepted
|
||||
by a station for delivery to houses or industries differs from the
|
||||
catchment area for cargo that is delivered to stations from houses
|
||||
or industries.
|
||||
It is possible to make these consistent, but then cargo from a house
|
||||
to a station needs to search up to 32 tiles around itself, i.e. 64
|
||||
by 64 tiles, to find all possible stations it could deliver to
|
||||
instead of 10 by 10 tiles (40 times more tiles). Alternatively the
|
||||
search from a station could be changed to use the actual tiles, but
|
||||
that would require considering checking 10 by 10 tiles for each of
|
||||
the tiles of a station, instead of just once.
|
||||
|
||||
Conceptually they work the same, but the effect in game differs.
|
||||
They work by finding the closest destination "around" the source
|
||||
which is within a certain distance. This distance depends on the
|
||||
type of station, e.g. road stops have a smaller catchment area than
|
||||
large airports. In both cases the bounding box, the smallest
|
||||
rectangle that contains all tiles of something, is searched for the
|
||||
target of the cargo, and then spiraling outwards finding the closest
|
||||
tile of the target.
|
||||
Some houses and industries are not affected by transparency [#5817]:
|
||||
Some of the default houses and industries (f.e. the iron ore mine) are
|
||||
not affected by the transparency options. This is because the graphics
|
||||
do not (completely) separate the ground from the building.
|
||||
This is a bug of the original graphics, and unfortunately cannot be
|
||||
fixed with OpenGFX for the sake of maintaining compatibility with
|
||||
the original graphics.
|
||||
|
||||
In the case of a station with two tiles spread far apart with a house
|
||||
that is within the station's bounding box, it would be possible that
|
||||
the spiraling search from the house does not reach one of the station
|
||||
tiles before the search ends, i.e. all tiles within that distance
|
||||
are searched. So the house does not deliver cargo to the station. On
|
||||
the other hand, the station will deliver cargo because the house
|
||||
falls within the bounding box, and thus search area.
|
||||
|
||||
It is possible to make these consistent, but then cargo from a house
|
||||
to a station needs to search up to 32 tiles around itself, i.e. 64
|
||||
by 64 tiles, to find all possible stations it could deliver to
|
||||
instead of 10 by 10 tiles (40 times more tiles). Alternatively the
|
||||
search from a station could be changed to use the actual tiles, but
|
||||
that would require considering checking 10 by 10 tiles for each of
|
||||
the tiles of a station, instead of just once.
|
||||
|
||||
Trains might not stop at platforms that are currently being changed [FS#5553]:
|
||||
If you add tiles to or remove tiles from a platform while a train is
|
||||
approaching to stop at the same platform, that train can miss the place
|
||||
where it's supposed to stop and pass the station without stopping. This
|
||||
is caused by the fact that the train is considered to already have stopped
|
||||
if it's beyond its assigned stopping location. We can't let the train stop
|
||||
just anywhere in the station because then it would never leave the station
|
||||
if you have the same station in the order list multiple times in a row or
|
||||
if there is only one station in the order list (see FS#5684).
|
||||
|
||||
Some houses and industries are not affected by transparency [FS#5817]:
|
||||
Some of the default houses and industries (f.e. the iron ore mine) are
|
||||
not affected by the transparency options. This is because the graphics do
|
||||
not (completely) separate the ground from the building.
|
||||
This is a bug of the original graphics, and unfortunately cannot be
|
||||
fixed with OpenGFX for the sake of maintaining compatibility with the
|
||||
original graphics.
|
||||
Involuntary cargo exchange with cargodist via neutral station [#6114]:
|
||||
When two players serve a neutral station at an industry, a cross-company
|
||||
chain for cargo flow can and will be established which can only be
|
||||
interrupted if one of the players stops competing for the ressources of
|
||||
that industry. There is an easy fix for this: If you are loading at the
|
||||
shared station make the order "no unload" and if you're unloading make
|
||||
it "no load". Cargodist will then figure out that it should not create
|
||||
such a route.
|
||||
|
@@ -11,21 +11,21 @@ palette = DOS
|
||||
!! description STR_BASEGRAPHICS_DOS_DESCRIPTION
|
||||
|
||||
[files]
|
||||
base = TRG1.GRF
|
||||
logos = TRGI.GRF
|
||||
arctic = TRGC.GRF
|
||||
tropical = TRGH.GRF
|
||||
toyland = TRGT.GRF
|
||||
extra = OPENTTD.GRF
|
||||
base = TRG1.GRF
|
||||
logos = TRGI.GRF
|
||||
arctic = TRGC.GRF
|
||||
tropical = TRGH.GRF
|
||||
toyland = TRGT.GRF
|
||||
extra = ORIG_EXTRA.GRF
|
||||
|
||||
[md5s]
|
||||
TRG1.GRF = 9311676280e5b14077a8ee41c1b42192
|
||||
TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8
|
||||
TRGC.GRF = ed446637e034104c5559b32c18afe78d
|
||||
TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9
|
||||
TRGT.GRF = e30e8a398ae86c03dc534a8ac7dfb3b6
|
||||
OPENTTD.GRF =
|
||||
TRG1.GRF = 9311676280e5b14077a8ee41c1b42192
|
||||
TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8
|
||||
TRGC.GRF = ed446637e034104c5559b32c18afe78d
|
||||
TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9
|
||||
TRGT.GRF = e30e8a398ae86c03dc534a8ac7dfb3b6
|
||||
ORIG_EXTRA.GRF =
|
||||
|
||||
[origin]
|
||||
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
|
||||
OPENTTD.GRF = This file was part of your OpenTTD installation.
|
||||
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
|
||||
ORIG_EXTRA.GRF = This file was part of your OpenTTD installation.
|
||||
|
76
media/baseset/orig_dos.obm
Normal file
76
media/baseset/orig_dos.obm
Normal file
@@ -0,0 +1,76 @@
|
||||
; $Id$
|
||||
;
|
||||
; This represents the original music as on the Transport
|
||||
; Tycoon Deluxe for DOS CD.
|
||||
;
|
||||
[metadata]
|
||||
name = original_dos
|
||||
shortname = TTDD
|
||||
version = 1
|
||||
!! description STR_BASEMUSIC_DOS_DESCRIPTION
|
||||
|
||||
[files]
|
||||
theme = gm.cat
|
||||
old_0 = gm.cat
|
||||
old_1 = gm.cat
|
||||
old_2 = gm.cat
|
||||
old_3 = gm.cat
|
||||
old_4 = gm.cat
|
||||
old_5 = gm.cat
|
||||
old_6 = gm.cat
|
||||
old_7 = gm.cat
|
||||
old_8 =
|
||||
old_9 =
|
||||
new_0 = gm.cat
|
||||
new_1 = gm.cat
|
||||
new_2 = gm.cat
|
||||
new_3 = gm.cat
|
||||
new_4 = gm.cat
|
||||
new_5 = gm.cat
|
||||
new_6 = gm.cat
|
||||
new_7 =
|
||||
new_8 =
|
||||
new_9 =
|
||||
ezy_0 = gm.cat
|
||||
ezy_1 = gm.cat
|
||||
ezy_2 = gm.cat
|
||||
ezy_3 = gm.cat
|
||||
ezy_4 = gm.cat
|
||||
ezy_5 = gm.cat
|
||||
ezy_6 =
|
||||
ezy_7 =
|
||||
ezy_8 =
|
||||
ezy_9 =
|
||||
|
||||
[md5s]
|
||||
gm.cat = 7a29d2d0c4f7d2e03091ffa9b2bdfffb
|
||||
|
||||
[catindex]
|
||||
theme = 0
|
||||
old_0 = 1
|
||||
old_1 = 8
|
||||
old_2 = 2
|
||||
old_3 = 9
|
||||
old_4 = 14
|
||||
old_5 = 15
|
||||
old_6 = 19
|
||||
old_7 = 13
|
||||
new_0 = 6
|
||||
new_1 = 11
|
||||
new_2 = 10
|
||||
new_3 = 17
|
||||
new_4 = 21
|
||||
new_5 = 18
|
||||
new_6 = 5
|
||||
ezy_0 = 12
|
||||
ezy_1 = 7
|
||||
ezy_2 = 16
|
||||
ezy_3 = 3
|
||||
ezy_4 = 20
|
||||
ezy_5 = 4
|
||||
|
||||
[names]
|
||||
; Names get read from the CAT file
|
||||
|
||||
[origin]
|
||||
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
|
@@ -11,21 +11,21 @@ palette = DOS
|
||||
!! description STR_BASEGRAPHICS_DOS_DE_DESCRIPTION
|
||||
|
||||
[files]
|
||||
base = TRG1.GRF
|
||||
logos = TRGI.GRF
|
||||
arctic = TRGC.GRF
|
||||
tropical = TRGH.GRF
|
||||
toyland = TRGT.GRF
|
||||
extra = OPENTTD.GRF
|
||||
base = TRG1.GRF
|
||||
logos = TRGI.GRF
|
||||
arctic = TRGC.GRF
|
||||
tropical = TRGH.GRF
|
||||
toyland = TRGT.GRF
|
||||
extra = ORIG_EXTRA.GRF
|
||||
|
||||
[md5s]
|
||||
TRG1.GRF = 9311676280e5b14077a8ee41c1b42192
|
||||
TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8
|
||||
TRGC.GRF = ed446637e034104c5559b32c18afe78d
|
||||
TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9
|
||||
TRGT.GRF = fcde1d7e8a74197d72a62695884b909e
|
||||
OPENTTD.GRF =
|
||||
TRG1.GRF = 9311676280e5b14077a8ee41c1b42192
|
||||
TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8
|
||||
TRGC.GRF = ed446637e034104c5559b32c18afe78d
|
||||
TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9
|
||||
TRGT.GRF = fcde1d7e8a74197d72a62695884b909e
|
||||
ORIG_EXTRA.GRF =
|
||||
|
||||
[origin]
|
||||
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
|
||||
OPENTTD.GRF = This file was part of your OpenTTD installation.
|
||||
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
|
||||
ORIG_EXTRA.GRF = This file was part of your OpenTTD installation.
|
||||
|
71
media/baseset/orig_tto.obm
Normal file
71
media/baseset/orig_tto.obm
Normal file
@@ -0,0 +1,71 @@
|
||||
; $Id$
|
||||
;
|
||||
; This represents the original music as on the Transport
|
||||
; Tycoon (with World Editor) for DOS CD.
|
||||
;
|
||||
[metadata]
|
||||
name = original_tto
|
||||
shortname = TTOD
|
||||
version = 1
|
||||
!! description STR_BASEMUSIC_TTO_DESCRIPTION
|
||||
|
||||
[files]
|
||||
theme = gm-tto.cat
|
||||
old_0 = gm-tto.cat
|
||||
old_1 = gm-tto.cat
|
||||
old_2 = gm-tto.cat
|
||||
old_3 = gm-tto.cat
|
||||
old_4 = gm-tto.cat
|
||||
old_5 = gm-tto.cat
|
||||
old_6 = gm-tto.cat
|
||||
old_7 = gm-tto.cat
|
||||
old_8 =
|
||||
old_9 =
|
||||
new_0 = gm-tto.cat
|
||||
new_1 = gm-tto.cat
|
||||
new_2 = gm-tto.cat
|
||||
new_3 = gm-tto.cat
|
||||
new_4 = gm-tto.cat
|
||||
new_5 = gm-tto.cat
|
||||
new_6 = gm-tto.cat
|
||||
new_7 = gm-tto.cat
|
||||
new_8 =
|
||||
new_9 =
|
||||
ezy_0 =
|
||||
ezy_1 =
|
||||
ezy_2 =
|
||||
ezy_3 =
|
||||
ezy_4 =
|
||||
ezy_5 =
|
||||
ezy_6 =
|
||||
ezy_7 =
|
||||
ezy_8 =
|
||||
ezy_9 =
|
||||
|
||||
[catindex]
|
||||
theme = 0
|
||||
old_0 = 1
|
||||
old_1 = 6
|
||||
old_2 = 2
|
||||
old_3 = 7
|
||||
old_4 = 11
|
||||
old_5 = 12
|
||||
old_6 = 15
|
||||
old_7 = 10
|
||||
new_0 = 4
|
||||
new_1 = 5
|
||||
new_2 = 9
|
||||
new_3 = 8
|
||||
new_4 = 13
|
||||
new_5 = 16
|
||||
new_6 = 14
|
||||
new_7 = 3
|
||||
|
||||
[md5s]
|
||||
gm-tto.cat = 26e85ff84b0063aa5da05dd4698fc76e
|
||||
|
||||
[names]
|
||||
; Names get read from the CAT file
|
||||
|
||||
[origin]
|
||||
default = You can find it on your Transport Tycoon CD-ROM.
|
@@ -11,21 +11,21 @@ palette = Windows
|
||||
!! description STR_BASEGRAPHICS_WIN_DESCRIPTION
|
||||
|
||||
[files]
|
||||
base = TRG1R.GRF
|
||||
logos = TRGIR.GRF
|
||||
arctic = TRGCR.GRF
|
||||
tropical = TRGHR.GRF
|
||||
toyland = TRGTR.GRF
|
||||
extra = OPENTTD.GRF
|
||||
base = TRG1R.GRF
|
||||
logos = TRGIR.GRF
|
||||
arctic = TRGCR.GRF
|
||||
tropical = TRGHR.GRF
|
||||
toyland = TRGTR.GRF
|
||||
extra = ORIG_EXTRA.GRF
|
||||
|
||||
[md5s]
|
||||
TRG1R.GRF = b04ce593d8c5016e07473a743d7d3358
|
||||
TRGIR.GRF = 0c2484ff6be49fc63a83be6ab5c38f32
|
||||
TRGCR.GRF = 3668f410c761a050b5e7095a2b14879b
|
||||
TRGHR.GRF = 06bf2b7a31766f048baac2ebe43457b1
|
||||
TRGTR.GRF = de53650517fe661ceaa3138c6edb0eb8
|
||||
OPENTTD.GRF =
|
||||
TRG1R.GRF = b04ce593d8c5016e07473a743d7d3358
|
||||
TRGIR.GRF = 0c2484ff6be49fc63a83be6ab5c38f32
|
||||
TRGCR.GRF = 3668f410c761a050b5e7095a2b14879b
|
||||
TRGHR.GRF = 06bf2b7a31766f048baac2ebe43457b1
|
||||
TRGTR.GRF = de53650517fe661ceaa3138c6edb0eb8
|
||||
ORIG_EXTRA.GRF =
|
||||
|
||||
[origin]
|
||||
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
|
||||
OPENTTD.GRF = This file was part of your OpenTTD installation.
|
||||
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
|
||||
ORIG_EXTRA.GRF = This file was part of your OpenTTD installation.
|
||||
|
@@ -90,5 +90,17 @@ GM_TT19.GM = Funk Central
|
||||
GM_TT20.GM = Jammit
|
||||
GM_TT21.GM = Movin' On
|
||||
|
||||
; MIDI timecodes where the playback should attemp to start and stop short.
|
||||
; This is to allow fixing undesired silences in original MIDI files.
|
||||
; However not all music drivers may support this.
|
||||
[timingtrim]
|
||||
; Theme has two beats silence at the beginning which prevents clean looping.
|
||||
GM_TT00.GM = 768:53760
|
||||
; Can't Get There From Here from the Windows version has a long silence at the end,
|
||||
; followed by a solo repeat. This isn't in the original DOS version music and is likely
|
||||
; unintentional from the people who converted the music from the DOS version.
|
||||
; Actual song ends after measure 152.
|
||||
GM_TT10.GM = 0:235008
|
||||
|
||||
[origin]
|
||||
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
|
||||
|
123
media/baseset/translations.vbs
Normal file
123
media/baseset/translations.vbs
Normal file
@@ -0,0 +1,123 @@
|
||||
Option Explicit
|
||||
|
||||
' This file is part of OpenTTD.
|
||||
' OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
' OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
' See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Dim FSO
|
||||
Set FSO = CreateObject("Scripting.FileSystemObject")
|
||||
|
||||
Dim inputfile, outputfile, langpath, extra_grf
|
||||
inputfile = WScript.Arguments(0)
|
||||
outputfile = WScript.Arguments(1)
|
||||
langpath = WScript.Arguments(2)
|
||||
|
||||
If WScript.Arguments.Length > 3 Then
|
||||
extra_grf = WScript.Arguments(3)
|
||||
End If
|
||||
|
||||
Function GetExtraGrfHash
|
||||
Dim WSO, exe, line
|
||||
|
||||
Set WSO = WScript.CreateObject("WScript.Shell")
|
||||
Set exe = WSO.Exec("certutil -hashfile " & extra_grf & " MD5")
|
||||
|
||||
Do Until exe.StdOut.AtEndOfStream
|
||||
line = exe.StdOut.ReadLine
|
||||
If Len(line) = 32 Then GetExtraGrfHash = line
|
||||
Loop
|
||||
|
||||
Set WSO = Nothing
|
||||
End Function
|
||||
|
||||
' Simple insertion sort, copied from translations.awk
|
||||
Sub ISort(a)
|
||||
Dim i, j, n, hold
|
||||
n = UBound(a)
|
||||
|
||||
For i = 1 To n
|
||||
j = i
|
||||
hold = a(j)
|
||||
Do While a(j - 1) > hold
|
||||
j = j - 1
|
||||
a(j + 1) = a(j)
|
||||
|
||||
If j = 0 Then Exit Do
|
||||
Loop
|
||||
a(j) = hold
|
||||
Next
|
||||
End Sub
|
||||
|
||||
Sub Lookup(ini_key, str_id, outfile)
|
||||
Dim folder, file, line, p, lang, i
|
||||
|
||||
' Ensure only complete string matches
|
||||
str_id = str_id & " "
|
||||
|
||||
Set folder = FSO.GetFolder(langpath)
|
||||
|
||||
Dim output()
|
||||
ReDim output(folder.Files.Count)
|
||||
|
||||
For Each file In folder.Files
|
||||
If UCase(FSO.GetExtensionName(file.Name)) = "TXT" Then
|
||||
Dim f
|
||||
Set f = FSO.OpenTextFile(file.Path)
|
||||
|
||||
Do Until f.atEndOfStream
|
||||
line = f.ReadLine()
|
||||
|
||||
If InStr(1, line, "##isocode ") = 1 Then
|
||||
p = Split(line)
|
||||
lang = p(1)
|
||||
ElseIf InStr(1, line, str_id) = 1 Then
|
||||
p = Split(line, ":", 2)
|
||||
If lang = "en_GB" Then
|
||||
output(i) = ini_key & " = " & p(1)
|
||||
Else
|
||||
output(i) = ini_key & "." & lang & " = " & p(1)
|
||||
End If
|
||||
i = i + 1
|
||||
End If
|
||||
|
||||
Loop
|
||||
End If
|
||||
Next
|
||||
|
||||
ReDim Preserve output(i - 1)
|
||||
ISort output
|
||||
|
||||
For Each line In output
|
||||
outfile.Write line & vbCrLf
|
||||
Next
|
||||
|
||||
End Sub
|
||||
|
||||
Dim line, p
|
||||
|
||||
Dim infile
|
||||
Set infile = FSO.OpenTextFile(inputfile)
|
||||
|
||||
Dim outfile
|
||||
Set outfile = FSO.CreateTextFile(outputfile, True)
|
||||
|
||||
Do Until infile.atEndOfStream
|
||||
|
||||
line = infile.ReadLine()
|
||||
|
||||
If InStr(1, line, "ORIG_EXTRA.GRF ") = 1 Then
|
||||
p = Split(line, "=")
|
||||
If Trim(p(1)) = "" Then
|
||||
outfile.Write("ORIG_EXTRA.GRF = " & GetExtraGrfHash() & vbCrLf)
|
||||
Else
|
||||
outfile.Write(line & vbCrLf)
|
||||
End If
|
||||
ElseIf InStr(1, line, "!! ") = 1 Then
|
||||
p = Split(line)
|
||||
Lookup p(1), p(2), outfile
|
||||
Else
|
||||
outfile.Write(line & vbCrLf)
|
||||
End If
|
||||
|
||||
Loop
|
@@ -23,3 +23,16 @@
|
||||
-1 sprites/airports.png 8bpp 82 88 64 31 -31 0 normal
|
||||
-1 sprites/airports.png 8bpp 162 88 64 31 -31 0 normal
|
||||
-1 sprites/airports.png 8bpp 242 88 64 31 -31 0 normal
|
||||
-1 * 0 0C "Climate specific sprites by PaulC"
|
||||
-1 * 0 07 83 01 \7! 01 03
|
||||
-1 * 0 05 90 02 0D
|
||||
-1 sprites/airports.png 8bpp 320 88 64 31 -31 0 normal
|
||||
-1 sprites/airports.png 8bpp 400 88 64 31 -31 0 normal
|
||||
-1 * 0 07 83 01 \7! 02 03
|
||||
-1 * 0 05 90 02 0D
|
||||
-1 sprites/airports.png 8bpp 480 88 64 31 -31 0 normal
|
||||
-1 sprites/airports.png 8bpp 560 88 64 31 -31 0 normal
|
||||
-1 * 0 07 83 01 \7! 03 03
|
||||
-1 * 0 05 90 02 0D
|
||||
-1 sprites/airports.png 8bpp 640 88 64 31 -31 0 normal
|
||||
-1 sprites/airports.png 8bpp 720 88 64 31 -31 0 normal
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 6.4 KiB After Width: | Height: | Size: 9.3 KiB |
12
media/extra_grf/airports_orig_extra.nfo
Normal file
12
media/extra_grf/airports_orig_extra.nfo
Normal file
@@ -0,0 +1,12 @@
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
// This file is part of OpenTTD.
|
||||
// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
// See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
-1 * 0 0C "Climate specific airport sprite by PaulC"
|
||||
-1 * 0 07 83 01 \7! 03 02
|
||||
-1 * 0 0A 01 01 2F 08
|
||||
-1 sprites/airports.png 8bpp 20 170 42 39 -19 -21 normal
|
@@ -6,7 +6,7 @@
|
||||
// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
// See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
-1 * 0 0C "Canal graphics by George / PaulC"
|
||||
-1 * 0 0C "Canal graphics by George"
|
||||
-1 * 3 05 08 41
|
||||
// Canal slopes
|
||||
-1 sprites/canal_locks.png 8bpp 66 8 64 23 -31 0 normal
|
||||
@@ -77,95 +77,3 @@
|
||||
-1 sprites/canals.png 8bpp 446 10 24 16 -11 -6 normal
|
||||
// Canal icon
|
||||
-1 sprites/canal_locks.png 8bpp 50 232 20 20 0 0 normal
|
||||
|
||||
// Differentiation for the climates starts here
|
||||
|
||||
// Canal edges (arctic snowy)
|
||||
-1 * 4 01 05 01 \b12
|
||||
-1 sprites/canals.png 8bpp 30 40 45 22 -11 -1 normal
|
||||
-1 sprites/canals.png 8bpp 94 40 41 21 -8 10 normal
|
||||
-1 sprites/canals.png 8bpp 142 40 42 21 -31 10 normal
|
||||
-1 sprites/canals.png 8bpp 190 40 43 22 -31 -1 normal
|
||||
-1 sprites/canals.png 8bpp 238 40 22 22 11 4 normal
|
||||
-1 sprites/canals.png 8bpp 270 40 24 16 -11 15 normal
|
||||
-1 sprites/canals.png 8bpp 302 40 23 23 -31 4 normal
|
||||
-1 sprites/canals.png 8bpp 334 40 24 18 -11 -1 normal
|
||||
-1 sprites/canals.png 8bpp 366 40 12 11 21 10 normal
|
||||
-1 sprites/canals.png 8bpp 398 40 19 10 -8 21 normal
|
||||
-1 sprites/canals.png 8bpp 430 40 11 10 -31 10 normal
|
||||
-1 sprites/canals.png 8bpp 446 40 24 16 -11 -6 normal
|
||||
-1 * 7 02 05 10 01 00 00 00
|
||||
|
||||
// Canal edges (arctic normal)
|
||||
-1 * 4 01 05 01 \b12
|
||||
-1 sprites/canals.png 8bpp 30 70 45 22 -11 -1 normal
|
||||
-1 sprites/canals.png 8bpp 94 70 41 21 -8 10 normal
|
||||
-1 sprites/canals.png 8bpp 142 70 42 21 -31 10 normal
|
||||
-1 sprites/canals.png 8bpp 190 70 43 22 -31 -1 normal
|
||||
-1 sprites/canals.png 8bpp 238 70 22 22 11 4 normal
|
||||
-1 sprites/canals.png 8bpp 270 70 24 16 -11 15 normal
|
||||
-1 sprites/canals.png 8bpp 302 70 23 23 -31 4 normal
|
||||
-1 sprites/canals.png 8bpp 334 70 24 18 -11 -1 normal
|
||||
-1 sprites/canals.png 8bpp 366 70 12 11 21 10 normal
|
||||
-1 sprites/canals.png 8bpp 398 70 19 10 -8 21 normal
|
||||
-1 sprites/canals.png 8bpp 430 70 11 10 -31 10 normal
|
||||
-1 sprites/canals.png 8bpp 446 70 24 16 -11 -6 normal
|
||||
-1 * 7 02 05 11 01 00 00 00
|
||||
// Choose the right arctic canal edges
|
||||
-1 * 14 02 05 12 81 81 00 FF 01 10 00 04 04 11 00
|
||||
-1 * 6 07 83 01 \7! 01 01
|
||||
-1 * 7 03 05 01 02 00 12 00
|
||||
|
||||
// Canal edges (tropic desert)
|
||||
-1 * 4 01 05 01 \b12
|
||||
-1 sprites/canals.png 8bpp 30 100 45 22 -11 -1 normal
|
||||
-1 sprites/canals.png 8bpp 94 100 41 21 -8 10 normal
|
||||
-1 sprites/canals.png 8bpp 142 100 42 21 -31 10 normal
|
||||
-1 sprites/canals.png 8bpp 190 100 43 22 -31 -1 normal
|
||||
-1 sprites/canals.png 8bpp 238 100 22 22 11 4 normal
|
||||
-1 sprites/canals.png 8bpp 270 100 24 16 -11 15 normal
|
||||
-1 sprites/canals.png 8bpp 302 100 23 23 -31 4 normal
|
||||
-1 sprites/canals.png 8bpp 334 100 24 18 -11 -1 normal
|
||||
-1 sprites/canals.png 8bpp 366 100 12 11 21 10 normal
|
||||
-1 sprites/canals.png 8bpp 398 100 19 10 -8 21 normal
|
||||
-1 sprites/canals.png 8bpp 430 100 11 10 -31 10 normal
|
||||
-1 sprites/canals.png 8bpp 446 100 24 16 -11 -6 normal
|
||||
-1 * 7 02 05 13 01 00 00 00
|
||||
|
||||
// Canal edges (tropic rainforest)
|
||||
-1 * 4 01 05 01 \b12
|
||||
-1 sprites/canals.png 8bpp 30 130 45 22 -11 -1 normal
|
||||
-1 sprites/canals.png 8bpp 94 130 41 21 -8 10 normal
|
||||
-1 sprites/canals.png 8bpp 142 130 42 21 -31 10 normal
|
||||
-1 sprites/canals.png 8bpp 190 130 43 22 -31 -1 normal
|
||||
-1 sprites/canals.png 8bpp 238 130 22 22 11 4 normal
|
||||
-1 sprites/canals.png 8bpp 270 130 24 16 -11 15 normal
|
||||
-1 sprites/canals.png 8bpp 302 130 23 23 -31 4 normal
|
||||
-1 sprites/canals.png 8bpp 334 130 24 18 -11 -1 normal
|
||||
-1 sprites/canals.png 8bpp 366 130 12 11 21 10 normal
|
||||
-1 sprites/canals.png 8bpp 398 130 19 10 -8 21 normal
|
||||
-1 sprites/canals.png 8bpp 430 130 11 10 -31 10 normal
|
||||
-1 sprites/canals.png 8bpp 446 130 24 16 -11 -6 normal
|
||||
-1 * 7 02 05 14 01 00 00 00
|
||||
// Choose the right tropic canal edges
|
||||
-1 * 14 02 05 15 81 81 00 FF 01 13 00 01 01 14 00
|
||||
-1 * 6 07 83 01 \7! 02 01
|
||||
-1 * 7 03 05 01 02 00 15 00
|
||||
|
||||
// Canal edges (toyland)
|
||||
-1 * 4 01 05 01 \b12
|
||||
-1 sprites/canals.png 8bpp 30 160 45 22 -11 -1 normal
|
||||
-1 sprites/canals.png 8bpp 94 160 41 21 -8 10 normal
|
||||
-1 sprites/canals.png 8bpp 142 160 42 21 -31 10 normal
|
||||
-1 sprites/canals.png 8bpp 190 160 43 22 -31 -1 normal
|
||||
-1 sprites/canals.png 8bpp 238 160 22 22 11 4 normal
|
||||
-1 sprites/canals.png 8bpp 270 160 24 16 -11 15 normal
|
||||
-1 sprites/canals.png 8bpp 302 160 23 23 -31 4 normal
|
||||
-1 sprites/canals.png 8bpp 334 160 24 18 -11 -1 normal
|
||||
-1 sprites/canals.png 8bpp 366 160 12 11 21 10 normal
|
||||
-1 sprites/canals.png 8bpp 398 160 19 10 -8 21 normal
|
||||
-1 sprites/canals.png 8bpp 430 160 11 10 -31 10 normal
|
||||
-1 sprites/canals.png 8bpp 446 160 24 16 -11 -6 normal
|
||||
-1 * 7 02 05 16 01 00 00 00
|
||||
-1 * 6 07 83 01 \7! 03 01
|
||||
-1 * 7 03 05 01 02 00 16 00
|
||||
|
101
media/extra_grf/canals_extra.nfo
Normal file
101
media/extra_grf/canals_extra.nfo
Normal file
@@ -0,0 +1,101 @@
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
// This file is part of OpenTTD.
|
||||
// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
// See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
-1 * 0 0C "Extra canal graphics by PaulC"
|
||||
|
||||
// Differentiation for the climates starts here
|
||||
|
||||
// Canal edges (arctic snowy)
|
||||
-1 * 4 01 05 01 \b12
|
||||
-1 sprites/canals.png 8bpp 30 40 45 22 -11 -1 normal
|
||||
-1 sprites/canals.png 8bpp 94 40 41 21 -8 10 normal
|
||||
-1 sprites/canals.png 8bpp 142 40 42 21 -31 10 normal
|
||||
-1 sprites/canals.png 8bpp 190 40 43 22 -31 -1 normal
|
||||
-1 sprites/canals.png 8bpp 238 40 22 22 11 4 normal
|
||||
-1 sprites/canals.png 8bpp 270 40 24 16 -11 15 normal
|
||||
-1 sprites/canals.png 8bpp 302 40 23 23 -31 4 normal
|
||||
-1 sprites/canals.png 8bpp 334 40 24 18 -11 -1 normal
|
||||
-1 sprites/canals.png 8bpp 366 40 12 11 21 10 normal
|
||||
-1 sprites/canals.png 8bpp 398 40 19 10 -8 21 normal
|
||||
-1 sprites/canals.png 8bpp 430 40 11 10 -31 10 normal
|
||||
-1 sprites/canals.png 8bpp 446 40 24 16 -11 -6 normal
|
||||
-1 * 7 02 05 10 01 00 00 00
|
||||
|
||||
// Canal edges (arctic normal)
|
||||
-1 * 4 01 05 01 \b12
|
||||
-1 sprites/canals.png 8bpp 30 70 45 22 -11 -1 normal
|
||||
-1 sprites/canals.png 8bpp 94 70 41 21 -8 10 normal
|
||||
-1 sprites/canals.png 8bpp 142 70 42 21 -31 10 normal
|
||||
-1 sprites/canals.png 8bpp 190 70 43 22 -31 -1 normal
|
||||
-1 sprites/canals.png 8bpp 238 70 22 22 11 4 normal
|
||||
-1 sprites/canals.png 8bpp 270 70 24 16 -11 15 normal
|
||||
-1 sprites/canals.png 8bpp 302 70 23 23 -31 4 normal
|
||||
-1 sprites/canals.png 8bpp 334 70 24 18 -11 -1 normal
|
||||
-1 sprites/canals.png 8bpp 366 70 12 11 21 10 normal
|
||||
-1 sprites/canals.png 8bpp 398 70 19 10 -8 21 normal
|
||||
-1 sprites/canals.png 8bpp 430 70 11 10 -31 10 normal
|
||||
-1 sprites/canals.png 8bpp 446 70 24 16 -11 -6 normal
|
||||
-1 * 7 02 05 11 01 00 00 00
|
||||
// Choose the right arctic canal edges
|
||||
-1 * 14 02 05 12 81 81 00 FF 01 10 00 04 04 11 00
|
||||
-1 * 6 07 83 01 \7! 01 01
|
||||
-1 * 7 03 05 01 02 00 12 00
|
||||
|
||||
// Canal edges (tropic desert)
|
||||
-1 * 4 01 05 01 \b12
|
||||
-1 sprites/canals.png 8bpp 30 100 45 22 -11 -1 normal
|
||||
-1 sprites/canals.png 8bpp 94 100 41 21 -8 10 normal
|
||||
-1 sprites/canals.png 8bpp 142 100 42 21 -31 10 normal
|
||||
-1 sprites/canals.png 8bpp 190 100 43 22 -31 -1 normal
|
||||
-1 sprites/canals.png 8bpp 238 100 22 22 11 4 normal
|
||||
-1 sprites/canals.png 8bpp 270 100 24 16 -11 15 normal
|
||||
-1 sprites/canals.png 8bpp 302 100 23 23 -31 4 normal
|
||||
-1 sprites/canals.png 8bpp 334 100 24 18 -11 -1 normal
|
||||
-1 sprites/canals.png 8bpp 366 100 12 11 21 10 normal
|
||||
-1 sprites/canals.png 8bpp 398 100 19 10 -8 21 normal
|
||||
-1 sprites/canals.png 8bpp 430 100 11 10 -31 10 normal
|
||||
-1 sprites/canals.png 8bpp 446 100 24 16 -11 -6 normal
|
||||
-1 * 7 02 05 13 01 00 00 00
|
||||
|
||||
// Canal edges (tropic rainforest)
|
||||
-1 * 4 01 05 01 \b12
|
||||
-1 sprites/canals.png 8bpp 30 130 45 22 -11 -1 normal
|
||||
-1 sprites/canals.png 8bpp 94 130 41 21 -8 10 normal
|
||||
-1 sprites/canals.png 8bpp 142 130 42 21 -31 10 normal
|
||||
-1 sprites/canals.png 8bpp 190 130 43 22 -31 -1 normal
|
||||
-1 sprites/canals.png 8bpp 238 130 22 22 11 4 normal
|
||||
-1 sprites/canals.png 8bpp 270 130 24 16 -11 15 normal
|
||||
-1 sprites/canals.png 8bpp 302 130 23 23 -31 4 normal
|
||||
-1 sprites/canals.png 8bpp 334 130 24 18 -11 -1 normal
|
||||
-1 sprites/canals.png 8bpp 366 130 12 11 21 10 normal
|
||||
-1 sprites/canals.png 8bpp 398 130 19 10 -8 21 normal
|
||||
-1 sprites/canals.png 8bpp 430 130 11 10 -31 10 normal
|
||||
-1 sprites/canals.png 8bpp 446 130 24 16 -11 -6 normal
|
||||
-1 * 7 02 05 14 01 00 00 00
|
||||
// Choose the right tropic canal edges
|
||||
-1 * 14 02 05 15 81 81 00 FF 01 13 00 01 01 14 00
|
||||
-1 * 6 07 83 01 \7! 02 01
|
||||
-1 * 7 03 05 01 02 00 15 00
|
||||
|
||||
// Canal edges (toyland)
|
||||
-1 * 4 01 05 01 \b12
|
||||
-1 sprites/canals.png 8bpp 30 160 45 22 -11 -1 normal
|
||||
-1 sprites/canals.png 8bpp 94 160 41 21 -8 10 normal
|
||||
-1 sprites/canals.png 8bpp 142 160 42 21 -31 10 normal
|
||||
-1 sprites/canals.png 8bpp 190 160 43 22 -31 -1 normal
|
||||
-1 sprites/canals.png 8bpp 238 160 22 22 11 4 normal
|
||||
-1 sprites/canals.png 8bpp 270 160 24 16 -11 15 normal
|
||||
-1 sprites/canals.png 8bpp 302 160 23 23 -31 4 normal
|
||||
-1 sprites/canals.png 8bpp 334 160 24 18 -11 -1 normal
|
||||
-1 sprites/canals.png 8bpp 366 160 12 11 21 10 normal
|
||||
-1 sprites/canals.png 8bpp 398 160 19 10 -8 21 normal
|
||||
-1 sprites/canals.png 8bpp 430 160 11 10 -31 10 normal
|
||||
-1 sprites/canals.png 8bpp 446 160 24 16 -11 -6 normal
|
||||
-1 * 7 02 05 16 01 00 00 00
|
||||
-1 * 6 07 83 01 \7! 03 01
|
||||
-1 * 7 03 05 01 02 00 16 00
|
@@ -8,245 +8,7 @@
|
||||
//
|
||||
-1 * 0 0C "Font characters by PaulC, Bilbo and Jasper Vries"
|
||||
|
||||
// Replace original characters
|
||||
|
||||
-1 * 5 0A 01 02 41 00
|
||||
-1 sprites/chars.png 8bpp 10 10 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 20 10 4 12 0 -1 normal
|
||||
-1 * 5 0A 01 02 86 00
|
||||
-1 sprites/chars.png 8bpp 50 10 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 70 10 9 12 0 -1 normal
|
||||
-1 * 5 0A 01 01 8A 00
|
||||
-1 sprites/chars.png 8bpp 120 10 6 12 0 -1 normal
|
||||
-1 * 5 0A 01 01 A0 00
|
||||
-1 sprites/chars.png 8bpp 230 10 10 12 0 -1 normal
|
||||
-1 * 5 0A 01 04 A2 00
|
||||
-1 sprites/chars.png 8bpp 260 10 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 290 10 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 320 10 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 350 10 8 12 0 -1 normal
|
||||
-1 * 5 0A 01 06 A7 00
|
||||
-1 sprites/chars.png 8bpp 410 10 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 440 10 12 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 470 10 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 480 10 7 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 500 10 7 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 520 10 7 12 0 -1 normal
|
||||
-1 * 5 0A 01 03 AE 00
|
||||
-1 sprites/chars.png 8bpp 560 10 4 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 570 10 4 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 580 10 5 12 0 -1 normal
|
||||
-1 * 5 0A 01 05 B3 00
|
||||
-1 sprites/chars.png 8bpp 620 10 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 640 10 9 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 660 10 9 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 680 10 9 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 700 10 9 12 0 -1 normal
|
||||
-1 * 5 0A 01 03 BB 00
|
||||
-1 sprites/chars.png 8bpp 770 10 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 10 70 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 30 70 8 12 0 -1 normal
|
||||
-1 * 5 0A 01 01 BF 00
|
||||
-1 sprites/chars.png 8bpp 70 70 9 12 0 -1 normal
|
||||
-1 * 5 0A 01 05 C1 00
|
||||
-1 sprites/chars.png 8bpp 450 70 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 110 70 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 120 70 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 130 70 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 140 70 6 12 0 -1 normal
|
||||
-1 * 5 0A 01 01 C7 00
|
||||
-1 sprites/chars.png 8bpp 160 70 6 12 0 -1 normal
|
||||
-1 * 5 0A 01 03 CA 00
|
||||
-1 sprites/chars.png 8bpp 200 70 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 210 70 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 220 70 6 12 0 -1 normal
|
||||
-1 * 5 0A 01 04 CE 00
|
||||
-1 sprites/chars.png 8bpp 230 70 4 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 240 70 4 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 250 70 5 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 260 70 5 12 0 -1 normal
|
||||
-1 * 5 0A 01 05 D3 00
|
||||
-1 sprites/chars.png 8bpp 290 70 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 310 70 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 320 70 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 330 70 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 340 70 6 12 0 -1 normal
|
||||
-1 * 5 0A 01 03 DB 00
|
||||
-1 sprites/chars.png 8bpp 390 70 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 400 70 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 410 70 6 12 0 -1 normal
|
||||
-1 * 5 0A 01 02 DF 00
|
||||
-1 sprites/chars.png 8bpp 420 70 7 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 430 70 6 12 0 -1 normal
|
||||
-1 * 5 0A 01 01 22 01
|
||||
-1 sprites/chars.png 8bpp 20 30 2 7 0 0 normal
|
||||
-1 * 5 0A 01 01 7D 01
|
||||
-1 sprites/chars.png 8bpp 220 30 4 7 0 0 normal
|
||||
-1 * 5 0A 01 02 80 01
|
||||
-1 sprites/chars.png 8bpp 230 30 9 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 250 30 3 7 0 0 normal
|
||||
-1 * 5 0A 01 01 89 01
|
||||
-1 sprites/chars.png 8bpp 470 30 3 7 0 0 normal
|
||||
-1 * 5 0A 01 01 9F 01
|
||||
-1 sprites/chars.png 8bpp 70 90 3 7 0 0 normal
|
||||
-1 * 5 0A 01 01 A9 01
|
||||
-1 sprites/chars.png 8bpp 190 90 3 7 0 0 normal
|
||||
-1 * 5 0A 01 02 BF 01
|
||||
-1 sprites/chars.png 8bpp 420 90 3 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 430 90 3 7 0 0 normal
|
||||
-1 * 5 0A 01 01 02 02
|
||||
-1 sprites/chars.png 8bpp 20 40 4 21 0 -2 normal
|
||||
-1 * 5 0A 01 01 41 02
|
||||
-1 sprites/chars.png 8bpp 30 40 14 21 0 -2 normal
|
||||
-1 * 5 0A 01 06 46 02
|
||||
-1 sprites/chars.png 8bpp 50 40 10 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 70 40 14 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 90 40 3 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 100 40 13 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 120 40 7 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 130 40 16 21 0 -2 normal
|
||||
-1 * 5 0A 01 01 50 02
|
||||
-1 sprites/chars.png 8bpp 150 40 16 21 0 -2 normal
|
||||
-1 * 5 0A 01 04 52 02
|
||||
-1 sprites/chars.png 8bpp 170 40 8 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 180 40 9 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 190 40 6 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 200 40 6 21 0 -2 normal
|
||||
-1 * 5 0A 01 01 5C 02
|
||||
-1 sprites/chars.png 8bpp 210 40 7 21 0 -2 normal
|
||||
-1 * 5 0A 01 01 60 02
|
||||
-1 sprites/chars.png 8bpp 230 40 16 21 0 -2 normal
|
||||
-1 * 5 0A 01 07 62 02
|
||||
-1 sprites/chars.png 8bpp 260 40 20 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 290 40 20 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 320 40 20 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 350 40 20 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 380 40 20 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 410 40 20 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 440 40 24 21 0 -2 normal
|
||||
-1 * 5 0A 01 18 6A 02
|
||||
-1 sprites/chars.png 8bpp 480 40 14 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 500 40 14 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 520 40 14 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 540 40 14 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 560 40 9 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 570 40 9 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 580 40 9 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 590 40 9 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 600 40 17 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 620 40 18 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 640 40 15 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 660 40 15 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 680 40 15 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 700 40 15 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 720 40 15 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 740 40 9 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 750 40 16 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 770 40 17 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 10 100 17 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 30 100 17 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 50 100 17 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 70 100 14 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 90 100 14 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 450 100 14 21 0 -2 normal
|
||||
-1 * 5 0A 01 01 85 02
|
||||
-1 sprites/chars.png 8bpp 140 100 12 21 0 -2 normal
|
||||
-1 * 5 0A 01 01 88 02
|
||||
-1 sprites/chars.png 8bpp 170 100 19 21 0 -2 normal
|
||||
-1 * 5 0A 01 02 92 02
|
||||
-1 sprites/chars.png 8bpp 270 100 11 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 290 100 15 21 0 -2 normal
|
||||
-1 * 5 0A 01 01 97 02
|
||||
-1 sprites/chars.png 8bpp 340 100 11 21 0 -2 normal
|
||||
-1 * 5 0A 01 02 99 02
|
||||
-1 sprites/chars.png 8bpp 360 100 9 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 370 100 11 21 0 -2 normal
|
||||
-1 * 5 0A 01 01 A0 02
|
||||
-1 sprites/chars.png 8bpp 430 100 14 21 0 -2 normal
|
||||
|
||||
// New characters, all fonts except monospaced
|
||||
|
||||
// U+007B: Left Curly Bracket
|
||||
// U+007C: Vertical Line
|
||||
// U+007D: Right Curly Bracket
|
||||
// U+007E: Tilde
|
||||
-1 * 14 12 03 00 04 7B 00 01 04 7B 00 02 04 7B 00
|
||||
-1 sprites/chars.png 8bpp 10 130 5 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 20 130 3 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 30 130 5 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 50 130 7 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 10 150 3 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 20 150 1 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 30 150 3 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 50 150 4 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 10 160 9 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 20 160 3 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 30 160 9 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 50 160 10 21 0 -2 normal
|
||||
|
||||
// U+007F: No-Break Space
|
||||
-1 * 14 12 03 00 01 7F 00 01 01 7F 00 02 01 7F 00
|
||||
-1 sprites/chars.png 8bpp 70 130 2 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 70 150 1 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 70 160 5 21 0 -2 normal
|
||||
|
||||
// U+00AA: Feminine Ordinal Indicator
|
||||
-1 * 14 12 03 00 01 AA 00 01 01 AA 00 02 01 AA 00
|
||||
-1 sprites/chars.png 8bpp 80 130 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 80 150 3 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 80 160 7 21 0 -2 normal
|
||||
|
||||
// U+00AC: Not Sign
|
||||
// U+00AD: Soft Hyphen
|
||||
-1 * 14 12 03 00 02 AC 00 01 02 AC 00 02 02 AC 00
|
||||
-1 sprites/chars.png 8bpp 90 130 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 110 130 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 90 150 4 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 110 150 3 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 90 160 12 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 110 160 9 21 0 -2 normal
|
||||
|
||||
// U+00AF: Macron
|
||||
-1 * 14 12 03 00 01 AF 00 01 01 AF 00 02 01 AF 00
|
||||
-1 sprites/chars.png 8bpp 130 130 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 130 150 3 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 130 160 12 21 0 -2 normal
|
||||
|
||||
// U+00B4: Acute Accent
|
||||
// U+00B5: Micro Sign
|
||||
// U+00B6: Pilcrow Sign
|
||||
// U+00B7: Middle Dot
|
||||
// U+00B8: Cedilla
|
||||
// U+00B9: Superscript One
|
||||
-1 * 14 12 03 00 06 B4 00 01 06 B4 00 02 06 B4 00
|
||||
-1 sprites/chars.png 8bpp 150 130 4 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 160 130 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 180 130 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 200 130 3 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 210 130 4 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 220 130 5 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 150 150 2 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 160 150 3 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 180 150 6 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 200 150 1 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 210 150 2 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 220 150 2 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 150 160 4 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 160 160 15 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 180 160 13 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 200 160 3 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 210 160 5 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 220 160 6 21 0 -2 normal
|
||||
|
||||
// U+00BC: Vulgar Fraction One Quarter
|
||||
// U+00BD: Vulgar Fraction One Half
|
||||
-1 * 14 12 03 00 02 BC 00 01 02 BC 00 02 02 BC 00
|
||||
-1 sprites/chars.png 8bpp 230 130 10 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 250 130 10 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 230 150 9 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 250 150 9 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 230 160 16 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 250 160 16 21 0 -2 normal
|
||||
// Note: Characters in range U+0020..U+00FF may only be defined in chars_orig_extra.nfo.
|
||||
|
||||
// New characters, all fonts
|
||||
|
||||
|
249
media/extra_grf/chars_orig_extra.nfo
Normal file
249
media/extra_grf/chars_orig_extra.nfo
Normal file
@@ -0,0 +1,249 @@
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
// This file is part of OpenTTD.
|
||||
// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
// See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
-1 * 0 0C "Font characters by PaulC, Bilbo and Jasper Vries"
|
||||
|
||||
// Replace original characters
|
||||
|
||||
-1 * 5 0A 01 02 41 00
|
||||
-1 sprites/chars.png 8bpp 10 10 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 20 10 4 12 0 -1 normal
|
||||
-1 * 5 0A 01 02 86 00
|
||||
-1 sprites/chars.png 8bpp 50 10 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 70 10 9 12 0 -1 normal
|
||||
-1 * 5 0A 01 01 8A 00
|
||||
-1 sprites/chars.png 8bpp 120 10 6 12 0 -1 normal
|
||||
-1 * 5 0A 01 01 A0 00
|
||||
-1 sprites/chars.png 8bpp 230 10 10 12 0 -1 normal
|
||||
-1 * 5 0A 01 04 A2 00
|
||||
-1 sprites/chars.png 8bpp 260 10 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 290 10 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 320 10 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 350 10 8 12 0 -1 normal
|
||||
-1 * 5 0A 01 06 A7 00
|
||||
-1 sprites/chars.png 8bpp 410 10 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 440 10 12 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 470 10 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 480 10 7 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 500 10 7 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 520 10 7 12 0 -1 normal
|
||||
-1 * 5 0A 01 03 AE 00
|
||||
-1 sprites/chars.png 8bpp 560 10 4 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 570 10 4 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 580 10 5 12 0 -1 normal
|
||||
-1 * 5 0A 01 05 B3 00
|
||||
-1 sprites/chars.png 8bpp 620 10 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 640 10 9 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 660 10 9 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 680 10 9 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 700 10 9 12 0 -1 normal
|
||||
-1 * 5 0A 01 03 BB 00
|
||||
-1 sprites/chars.png 8bpp 770 10 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 10 70 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 30 70 8 12 0 -1 normal
|
||||
-1 * 5 0A 01 01 BF 00
|
||||
-1 sprites/chars.png 8bpp 70 70 9 12 0 -1 normal
|
||||
-1 * 5 0A 01 05 C1 00
|
||||
-1 sprites/chars.png 8bpp 450 70 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 110 70 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 120 70 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 130 70 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 140 70 6 12 0 -1 normal
|
||||
-1 * 5 0A 01 01 C7 00
|
||||
-1 sprites/chars.png 8bpp 160 70 6 12 0 -1 normal
|
||||
-1 * 5 0A 01 03 CA 00
|
||||
-1 sprites/chars.png 8bpp 200 70 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 210 70 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 220 70 6 12 0 -1 normal
|
||||
-1 * 5 0A 01 04 CE 00
|
||||
-1 sprites/chars.png 8bpp 230 70 4 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 240 70 4 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 250 70 5 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 260 70 5 12 0 -1 normal
|
||||
-1 * 5 0A 01 05 D3 00
|
||||
-1 sprites/chars.png 8bpp 290 70 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 310 70 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 320 70 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 330 70 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 340 70 6 12 0 -1 normal
|
||||
-1 * 5 0A 01 03 DB 00
|
||||
-1 sprites/chars.png 8bpp 390 70 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 400 70 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 410 70 6 12 0 -1 normal
|
||||
-1 * 5 0A 01 02 DF 00
|
||||
-1 sprites/chars.png 8bpp 420 70 7 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 430 70 6 12 0 -1 normal
|
||||
-1 * 5 0A 01 01 22 01
|
||||
-1 sprites/chars.png 8bpp 20 30 2 7 0 0 normal
|
||||
-1 * 5 0A 01 01 7D 01
|
||||
-1 sprites/chars.png 8bpp 220 30 4 7 0 0 normal
|
||||
-1 * 5 0A 01 02 80 01
|
||||
-1 sprites/chars.png 8bpp 230 30 9 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 250 30 3 7 0 0 normal
|
||||
-1 * 5 0A 01 01 89 01
|
||||
-1 sprites/chars.png 8bpp 470 30 3 7 0 0 normal
|
||||
-1 * 5 0A 01 01 9F 01
|
||||
-1 sprites/chars.png 8bpp 70 90 3 7 0 0 normal
|
||||
-1 * 5 0A 01 01 A9 01
|
||||
-1 sprites/chars.png 8bpp 190 90 3 7 0 0 normal
|
||||
-1 * 5 0A 01 02 BF 01
|
||||
-1 sprites/chars.png 8bpp 420 90 3 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 430 90 3 7 0 0 normal
|
||||
-1 * 5 0A 01 01 02 02
|
||||
-1 sprites/chars.png 8bpp 20 40 4 21 0 -2 normal
|
||||
-1 * 5 0A 01 01 41 02
|
||||
-1 sprites/chars.png 8bpp 30 40 14 21 0 -2 normal
|
||||
-1 * 5 0A 01 06 46 02
|
||||
-1 sprites/chars.png 8bpp 50 40 10 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 70 40 14 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 90 40 3 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 100 40 13 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 120 40 7 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 130 40 16 21 0 -2 normal
|
||||
-1 * 5 0A 01 01 50 02
|
||||
-1 sprites/chars.png 8bpp 150 40 16 21 0 -2 normal
|
||||
-1 * 5 0A 01 04 52 02
|
||||
-1 sprites/chars.png 8bpp 170 40 8 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 180 40 9 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 190 40 6 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 200 40 6 21 0 -2 normal
|
||||
-1 * 5 0A 01 01 5C 02
|
||||
-1 sprites/chars.png 8bpp 210 40 7 21 0 -2 normal
|
||||
-1 * 5 0A 01 01 60 02
|
||||
-1 sprites/chars.png 8bpp 230 40 16 21 0 -2 normal
|
||||
-1 * 5 0A 01 07 62 02
|
||||
-1 sprites/chars.png 8bpp 260 40 20 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 290 40 20 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 320 40 20 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 350 40 20 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 380 40 20 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 410 40 20 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 440 40 24 21 0 -2 normal
|
||||
-1 * 5 0A 01 18 6A 02
|
||||
-1 sprites/chars.png 8bpp 480 40 14 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 500 40 14 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 520 40 14 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 540 40 14 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 560 40 9 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 570 40 9 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 580 40 9 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 590 40 9 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 600 40 17 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 620 40 18 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 640 40 15 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 660 40 15 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 680 40 15 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 700 40 15 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 720 40 15 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 740 40 9 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 750 40 16 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 770 40 17 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 10 100 17 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 30 100 17 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 50 100 17 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 70 100 14 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 90 100 14 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 450 100 14 21 0 -2 normal
|
||||
-1 * 5 0A 01 01 85 02
|
||||
-1 sprites/chars.png 8bpp 140 100 12 21 0 -2 normal
|
||||
-1 * 5 0A 01 01 88 02
|
||||
-1 sprites/chars.png 8bpp 170 100 19 21 0 -2 normal
|
||||
-1 * 5 0A 01 02 92 02
|
||||
-1 sprites/chars.png 8bpp 270 100 11 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 290 100 15 21 0 -2 normal
|
||||
-1 * 5 0A 01 01 97 02
|
||||
-1 sprites/chars.png 8bpp 340 100 11 21 0 -2 normal
|
||||
-1 * 5 0A 01 02 99 02
|
||||
-1 sprites/chars.png 8bpp 360 100 9 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 370 100 11 21 0 -2 normal
|
||||
-1 * 5 0A 01 01 A0 02
|
||||
-1 sprites/chars.png 8bpp 430 100 14 21 0 -2 normal
|
||||
|
||||
// New characters, all fonts except monospaced
|
||||
|
||||
// U+007B: Left Curly Bracket
|
||||
// U+007C: Vertical Line
|
||||
// U+007D: Right Curly Bracket
|
||||
// U+007E: Tilde
|
||||
-1 * 14 12 03 00 04 7B 00 01 04 7B 00 02 04 7B 00
|
||||
-1 sprites/chars.png 8bpp 10 130 5 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 20 130 3 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 30 130 5 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 50 130 7 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 10 150 3 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 20 150 1 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 30 150 3 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 50 150 4 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 10 160 9 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 20 160 3 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 30 160 9 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 50 160 10 21 0 -2 normal
|
||||
|
||||
// U+007F: No-Break Space
|
||||
-1 * 14 12 03 00 01 7F 00 01 01 7F 00 02 01 7F 00
|
||||
-1 sprites/chars.png 8bpp 70 130 2 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 70 150 1 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 70 160 5 21 0 -2 normal
|
||||
|
||||
// U+00AA: Feminine Ordinal Indicator
|
||||
-1 * 14 12 03 00 01 AA 00 01 01 AA 00 02 01 AA 00
|
||||
-1 sprites/chars.png 8bpp 80 130 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 80 150 3 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 80 160 7 21 0 -2 normal
|
||||
|
||||
// U+00AC: Not Sign
|
||||
// U+00AD: Soft Hyphen
|
||||
-1 * 14 12 03 00 02 AC 00 01 02 AC 00 02 02 AC 00
|
||||
-1 sprites/chars.png 8bpp 90 130 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 110 130 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 90 150 4 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 110 150 3 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 90 160 12 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 110 160 9 21 0 -2 normal
|
||||
|
||||
// U+00AF: Macron
|
||||
-1 * 14 12 03 00 01 AF 00 01 01 AF 00 02 01 AF 00
|
||||
-1 sprites/chars.png 8bpp 130 130 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 130 150 3 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 130 160 12 21 0 -2 normal
|
||||
|
||||
// U+00B4: Acute Accent
|
||||
// U+00B5: Micro Sign
|
||||
// U+00B6: Pilcrow Sign
|
||||
// U+00B7: Middle Dot
|
||||
// U+00B8: Cedilla
|
||||
// U+00B9: Superscript One
|
||||
-1 * 14 12 03 00 06 B4 00 01 06 B4 00 02 06 B4 00
|
||||
-1 sprites/chars.png 8bpp 150 130 4 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 160 130 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 180 130 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 200 130 3 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 210 130 4 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 220 130 5 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 150 150 2 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 160 150 3 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 180 150 6 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 200 150 1 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 210 150 2 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 220 150 2 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 150 160 4 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 160 160 15 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 180 160 13 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 200 160 3 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 210 160 5 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 220 160 6 21 0 -2 normal
|
||||
|
||||
// U+00BC: Vulgar Fraction One Quarter
|
||||
// U+00BD: Vulgar Fraction One Half
|
||||
-1 * 14 12 03 00 02 BC 00 01 02 BC 00 02 02 BC 00
|
||||
-1 sprites/chars.png 8bpp 230 130 10 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 250 130 10 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 230 150 9 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 250 150 9 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 230 160 16 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 250 160 16 21 0 -2 normal
|
@@ -14,6 +14,8 @@
|
||||
// allowing it to be used.
|
||||
//
|
||||
|
||||
//@@WARNING DISABLE 60
|
||||
|
||||
//
|
||||
// Number of sprites, it is wrong, but GRFcodec automagically gets it right.
|
||||
//
|
||||
@@ -60,10 +62,11 @@
|
||||
00
|
||||
|
||||
// GRF ID, must start with FF so it gets ignored
|
||||
-1 * 0 08 08 FF "OTT"
|
||||
//@@WARNING DISABLE 101
|
||||
-1 * 0 08 08 FF FF FF FE
|
||||
|
||||
// Name of the GRF
|
||||
"OpenTTD's base graphics " 00
|
||||
"OpenTTD's default and fallback extra graphics" 00
|
||||
|
||||
// Description of the GRF.
|
||||
"License: GNU General Public License version 2" 0D
|
||||
@@ -86,7 +89,6 @@
|
||||
#include "canals.nfo"
|
||||
#include "oneway.nfo"
|
||||
#include "tramtracks.nfo"
|
||||
#include "shore.nfo"
|
||||
#include "sloped_tracks.nfo"
|
||||
#include "airports.nfo"
|
||||
#include "roadstops.nfo"
|
||||
@@ -97,11 +99,5 @@
|
||||
#include "airport_preview.nfo"
|
||||
#include "chars.nfo"
|
||||
#include "mono.nfo"
|
||||
#include "fix_graphics.nfo"
|
||||
#include "rivers/rapids.nfo"
|
||||
#include "rivers/temperate.nfo"
|
||||
#include "rivers/arctic.nfo"
|
||||
#include "rivers/tropic.nfo"
|
||||
#include "rivers/toyland.nfo"
|
||||
#include "tunnel_portals.nfo"
|
||||
#include "palette.nfo"
|
||||
|
@@ -7,7 +7,7 @@
|
||||
// See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
-1 * 0 0C "OpenTTD GUI graphics"
|
||||
-1 * 3 05 15 \b 175 // OPENTTD_SPRITE_COUNT
|
||||
-1 * 3 05 15 \b 179 // OPENTTD_SPRITE_COUNT
|
||||
-1 sprites/openttdgui.png 8bpp 66 8 64 31 -31 7 normal
|
||||
-1 sprites/openttdgui.png 8bpp 146 8 64 31 -31 7 normal
|
||||
-1 sprites/openttdgui.png 8bpp 226 8 64 31 -31 7 normal
|
||||
@@ -183,3 +183,7 @@
|
||||
-1 sprites/openttdgui.png 8bpp 440 440 20 20 0 0 normal
|
||||
-1 sprites/openttdgui.png 8bpp 466 440 20 20 0 0 normal
|
||||
-1 sprites/openttdgui.png 8bpp 490 440 20 20 0 0 normal
|
||||
-1 sprites/openttdgui_group_livery.png 8bpp 0 0 20 20 0 0 normal
|
||||
-1 sprites/openttdgui_group_livery.png 8bpp 21 0 20 20 0 0 normal
|
||||
-1 sprites/openttdgui_group_livery.png 8bpp 42 0 20 20 0 0 normal
|
||||
-1 sprites/openttdgui_group_livery.png 8bpp 63 0 20 20 0 0 normal
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user