1
0
mirror of https://github.com/OpenTTD/OpenTTD.git synced 2025-08-13 17:49:10 +00:00

Compare commits

..

50 Commits
1.0.1 ... 1.0.4

Author SHA1 Message Date
rubidium
5425428ee3 (svn r20805) -Release: 1.0.4 2010-09-14 16:34:02 +00:00
rubidium
9236112860 (svn r20804) [1.0] -Prepare: for 1.0.4 2010-09-14 16:22:13 +00:00
rubidium
afba68e3bb (svn r20803) [1.0] -Backport from trunk:
- Change: Move removal of bin/data/opentt[dw].grf from distclean to maintainer-clean (r20752)
- Fix: Recent NFORenum does not know '-?' (r20715)
2010-09-14 16:11:08 +00:00
rubidium
0f1dd224d3 (svn r20701) [1.0] -Prepare: for 1.0.4-RC1 2010-08-30 18:59:41 +00:00
rubidium
008d3e89e0 (svn r20700) [1.0] -Update the language files 2010-08-30 17:58:25 +00:00
rubidium
801bf2e3d3 (svn r20698) [1.0] -Backport from trunk:
- Fix: Empty newgrf presets were not selectable [FS#4087] (r20694)
- Fix: Desync checker checked the wrong variable (r20677)
- Fix: Drawing the 'OpenTTD' text in the intro game caused crashes with very low resolutions [FS#4081] (r20618)
- Fix: Crash when a NewGRF defined an invalid substitute type for a house and the NewGRF was removed during the game, disable houses with different size than their substitute [FS#3702] (r20611, r20610, r20609)
2010-08-30 16:52:37 +00:00
rubidium
a8e42b7bdd (svn r20608) [1.0] -Backport from trunk:
- Fix: Retain information about all base sets that are found and not only the latest version to stop confusing people that use newer versions of the base sets than those available via BaNaNaS (r20607)
- Fix: Let NewGRFs var43 var (information about liveries) for vehicles not be influenced by the local setting determining whether to show liveries or not [FS#4063] (r20605)
- Fix: 'Downscale' a full load order to a load if possible order when removing the order while the vehicle is loading. This to prevent the vehicle from (possibly) staying forever in the station [FS#4075] (r20600)
- Fix: Crash when the tooltip is wider than the window is [FS#4066] (r20596)
- Fix: No (proper) savegame conversion was done when _date_fract got a new value range (r20592)
2010-08-24 00:03:26 +00:00
rubidium
7cf8dd70c3 (svn r20585) [1.0] -Backport from trunk:
- Fix: Autoreplace failed while attaching non-replaced wagons to the new chain, if to-be-sold-engines would become front-engines and the unitnumber limit would be exceeded (r20583)
- Fix: Autoreplace can trigger an assertion when at the vehicle limit [FS#4044] (r20582)
- Fix: Go via station and go via waypoint behaved differently when a train went back to the same (unordered) station again [FS#4039] (r20580)
- Fix: Draw bounding boxes using white instead of pure white, so they are recoloured to grey in coloured newspaper instead of blue [FS#4051] (r20578)
- Fix: Scroll button flickering when pressed [FS#4043] (r20577)
2010-08-20 18:28:46 +00:00
rubidium
544887688b (svn r20576) [1.0] -Backport from trunk:
- Fix: Warn OpenGFX users when they are using a base set that misses sprites (r20566)
- Fix: Wrong tooltip for the company select button in the AI debug and performance rating windows [FS#4053] (r20556, r20555)
- Fix: In old savegames aircraft can have an invalid state (r20528)
2010-08-20 10:31:20 +00:00
rubidium
0dc153f022 (svn r20521) [1.0] -Backport from trunk:
- Fix: Desync when vehicles change NewGRF properties such as visual effect when changing railtype [FS#3978] (r20505, r20504, r20503, r20502)
2010-08-16 23:15:33 +00:00
rubidium
d6e34c9ad0 (svn r20520) [1.0] -Backport from trunk:
- Fix: Draw error messages in white by default, they may not have a colour set when coming from a NewGRF (r20514)
- Fix: Entering half the 'generation seeds' in the console's 'newgame' command failed to set the correct seed [FS#4036] (r20512)
- Fix: Desync when converting rail all as trains with a part on the converted rails need updating and not only the engines (r20500)
- Fix: Ignore the non-stop state when comparing one order type to another order type, otherwise non-stop nearest depot orders fail [FS#4030] (r20498)
- Fix: Non-dedicated servers failing to load a game caused the introgame to be the server's game causing desyncs when people tried to join [FS#3960] (r20497)
2010-08-16 23:06:22 +00:00
rubidium
d74a79cc8c (svn r20519) [1.0] -Fix [FS#4038]: Crash when the content download tried to get a MD5 checksum of an "originally" loaded NewGRF 2010-08-16 22:20:20 +00:00
rubidium
5a8c49a0ef (svn r20495) [1.0] -Backport (some manual) language updates from trunk 2010-08-14 18:38:56 +00:00
rubidium
7e81ab9d9f (svn r20494) [1.0] -Backport from trunk:
- Fix: [NoAI] checking whether water tiles are connected failed in some cases [FS#4031] (r20489)
- Fix: Statues were not removed when towns would be removed (r20481)
- Fix: Building statues used different companys for CMD_LANDSCAPE_CLEAR during testrun and DC_EXEC (r20469)
- Fix: Adding 'goto nearest depot and stop' orders in one go was denied. This caused both AI adding those orders and backed up order restoration to fail [FS#4024] (r20441)
- Fix: For docks 'facing' north, i.e. having the watery part a the northern side, the station joiner had an off-by-one to the north w.r.t. the station spread against the actual other (correct) building tools [FS#4022] (r20438)
2010-08-14 18:01:55 +00:00
rubidium
ebbe9409bd (svn r20491) [1.0] -Backport from trunk:
- Change: merge the extra GRF's sources (r20490)
2010-08-14 15:08:21 +00:00
rubidium
133f5ba643 (svn r20434) [1.0] -Backport from trunk:
- Fix: [NoAI] Clarify the documentation for AIBaseStation::GetLocation (r20238)
- Fix: Do not spend cash when building a statue fails [FS#3985] (r20227)
- Fix: [NewGRF] Vehicle var FE bit 6 did return incorrect values for new railtypes (r20175)
2010-08-10 09:48:32 +00:00
rubidium
eaa79661cf (svn r20433) [1.0] -Backport: a lot of string updates from trunk 2010-08-09 22:12:04 +00:00
rubidium
6999dcab18 (svn r20432) [1.0] -Backport from trunk:
- Fix: Make snow on bridges depend on bridgeheight and make snowyness of bridgeheads depend on the tileheight at the entry [FS#3947] (r20424, r20423, r20422, r20421, r20420)
- Fix: During world generation the snow-mapbits are not yet available, so test the snowline variable directly (as they were before) [FS#4017] (r20418)
2010-08-09 21:58:52 +00:00
rubidium
0ac197a0c5 (svn r20431) [1.0] -Backport from trunk:
- Fix: PBS reservations were always displayed on halftile foundations if the railtype uses overlays [FS#4013] (r20408)
- Fix: Make the default minimum width for editboxes 10 pixels to prevent crashes [FS#4010] (r20394)
- Fix: Prevent buying more vehicles than allowed or buying companies when you'd get too many vehicles [FS#3993] (r20393, r20392, r20391, r20390)
2010-08-09 21:53:44 +00:00
rubidium
2da34ec3d6 (svn r20430) [1.0] -Backport from trunk:
- Fix: Initialize fund-industry buttons when opening window (r20386)
- Fix: Update cursor dimensions when reloading grfs resp. changing base graphics, so the cursor does not glitch if it becomes bigger (r20384)
- Fix: Stop vehicle following after zooming out [FS#3989] (r20361)
- Fix: [NoAI] Ship depots were constructed along the wrong axis [FS#4004] (r20348)
- Fix: When it is known the loading an old savegame is going to fail, bail out immediately (using an exception) instead of going on until e.g. the expected number of byte is read (r20247)
2010-08-09 21:48:19 +00:00
rubidium
cc9c1ff2b0 (svn r20429) [1.0] -Backport from trunk:
- Fix: The caption of the 'Available vehicle' lists was black, whereas for building those vehicles, which uses the exact same window, it was white (r20244)
- Fix: Refit costs from refit orders are subtracted from the vehicle yearly income [FS#3988] (r20234)
- Fix: Road vehicles could be dead locked with one way roads. This allows one wayness to be removed if there are vehicles on a tile; it does not allow you to add one wayness to roads that have vehicles on them as it makes turning vehicles jump [FS#3961] (r20230)
- Fix: 'Service at nearest depot' behaved the same as 'Go to nearest depot' [FS#3986] (r20229)
- Fix: Depot did not become unsnowy, when snowline rises [FS#3976] (r20224)
2010-08-09 21:38:18 +00:00
rubidium
266bb52e1e (svn r20428) [1.0] -Backport form trunk:
- Fix: Strip non-printable characters before showing it in an edit box, so when renaming a vehicle type you won't get the 'SETX stuff' that some NewGRFs use [FS#3974] (r20220)
- Fix: NewGRFs that defined a vehicle without either loaded or loading groups could crash OpenTTD [FS#3964] (r20199)
- Fix: [NewGRF] Crash when GetNearbyTileInformation is used to get the terrain type of a MP_VOID tile [FS#3963] (r20197)
- Fix: Inconsistencies w.r.t. to km/h vs km-ish/h as 'base' unit for aircraft speeds [FS#3870] (r20164)
2010-08-09 21:17:19 +00:00
rubidium
fc3c216e66 (svn r20265) [1.0] -Prepare: for 1.0.3 2010-07-31 20:55:34 +00:00
rubidium
00a2f93bd6 (svn r20261) [1.0] -Backport from trunk:
- Fix: Make it possible to properly assess the length of the rail toolbar caption, don't require '{WHITE}' control codes (r20242)
- Fix: Check for disallowed level crossings also when converting rail (r20237)
- Fix: Haiku uses a 'special' location for headers (r20219)
- Fix: Desync due to (temporary) wrong railtype; when loading a savegame the railtype of some (high ID) trains could be wrong [FS#3945] (r20137)
2010-07-31 18:27:54 +00:00
smatz
9531e10e82 (svn r20213) [1.0] -Backport from trunk:
- Doc: Remove the (now invalid) comment about problems with certain zlib versions (r20212)
2010-07-24 15:43:33 +00:00
rubidium
0c5822bfb0 (svn r20178) [1.0] -Backport: language updates 2010-07-17 17:48:02 +00:00
rubidium
a388cc7f85 (svn r20177) [1.0] -Prepare: for 1.0.3-RC1 2010-07-17 17:45:34 +00:00
rubidium
cd5e653e8f (svn r20168) [1.0] -Backport from trunk:
- Fix: Do not scan /data and ~/data (if they happen to be your working directory). If it's the directory where your binary is located it will still scan them [FS#3949] (r20166)
- Fix: Integer comparison failed in case the difference was more than "MAX_UINT"/2 [FS#3954] (r20162)
- Fix: [YAPP] Converting a one-way block to a path signal with trains on both sides could lead to a train crash [FS#3937] (r20156)
- Fix: [NewGRF] Improve handling of snowing of railtypes and (infra)structures on foundations [FS#3883] (r20153, r20132, r20126, r20125)
2010-07-17 11:45:42 +00:00
rubidium
bf4fceef98 (svn r20161) [1.0] -Backport from trunk: documentation (known bugs/readme) updates 2010-07-16 08:21:34 +00:00
rubidium
3ff50c23e6 (svn r20151) [1.0] -Backport: more language updates (the ones the simple script failed on) 2010-07-14 20:18:47 +00:00
rubidium
de1018655b (svn r20149) [1.0] -Backport: lots of language updates 2010-07-14 19:35:27 +00:00
rubidium
e8ab381e3f (svn r20148) [1.0] -Backport from trunk:
- Add [Debian]: Debug symbols package (r20129)
- Change: Improve desync debugging and crash log data (r20138, r20136)
- Fix: Ships were not marked as dirty when stopping inside a depot [FS#3880] (r20142)
- Fix: Some windows ignored all hotkeys [FS#3902] (r20141, r20140, r20139)
- Fix: Do not allow building a rail track to the water using a tree-tile [FS#3695] (r20110)
- Fix: [NoAI] AITown::GetRating() returned wrong values [FS#3934] (r20103)
2010-07-14 19:29:13 +00:00
rubidium
a519bd4bf8 (svn r20096) [1.0] -Backport: language updates from trunk 2010-07-08 20:11:45 +00:00
rubidium
9f041e4884 (svn r20095) [1.0] -Backport from trunk:
- Feature: [NewGRF] Textstack support for CB 38 (r20086)
- Feature: [NewGRF] Add a railtype flag to disallow level crossings per railtype (r20049)
- Fix: Reading deleted memory when selecting a NewGRF in the content download window of which the data has not been acquired from the content server. The crash would occur after the content server's reply was processed and the ContentInfo object was replaced with another [FS#3899] (r20089, r20082)
- Fix: If after loading a savegame (including intro game) one tried to save a game (including autosave) and that failed (very) early on because it could not open the file for writing all pointers would be converted to NULLs which then causes corrupted game states [FS#3876, FS#3887, FS#3920, FS#3923] (r20087)
2010-07-08 19:59:13 +00:00
rubidium
1ac4df08b8 (svn r20094) [1.0] -Backport from trunk:
- Fix: gitignore and hgignore had more missing/wrong entries (r20078, r20033, r20031)
- Fix: Remove the space between "open" and "ttd" in the title screen (r20077)
- Fix: Road vehicles could get crashed twice in a tick [FS#3896] (r20053, r20034)
- Fix: Coloured_news_year was stored in savegames while it should be a client setting [FS#3916] (r20051)
2010-07-08 19:52:28 +00:00
rubidium
4988065998 (svn r20093) [1.0] -Backport from trunk:
- Fix: Crash when spectator tried to open a vehicle list without selecting any company [FS#3892] (r20041)
- Fix: Instead of loading the intro game when loading a savegame fails on the dedicated server, generate a new game [FS#3907] (r20039)
- Fix: Tram tracks did not show at level crossing with the new railtypes [FS#3911] (r20036)
- Fix: Under some circumstances you could get into an infinite loop [FS#3909] (r20035)
- Fix: The 64 bits TortoiseSVN was not always properly detected (r20029)
2010-07-08 19:48:39 +00:00
rubidium
82450356fd (svn r20092) [1.0] -Backport from trunk:
- Fix: Do not close the sort dropdown in the (original) vehicle list when there are no vehicles. That code is meant for the "actions" dropdown [FS#3881] (r20014)
- Fix: When joining a company with a password you could only enter 20 characters of the password (r20012)
- Fix: Sign sorting was unstable [FS#3893] (r20009)
- Fix: Trains should also have running cost while slowing down for stop (r20006)
- Fix: [NewGRF] Stringcodes 82, 83 and 84 were not properly converted to openttd codes so they did not work (r20004)
2010-07-08 19:44:00 +00:00
rubidium
8ed3cde783 (svn r20091) [1.0] -Backport from trunk:
- Fix: Clear force_proceed when entering depots and when loading, resetting of force_proceed on manual stopping did not work [FS#3878] (r19992)
- Fix: Do not show an error message when trying to start/stop a crashed plane [FS#3874] (r19953)
- Fix: Allow turning of roadvehicles while waiting in a queue (r19945)
- Fix: Disallow moving of vehicle news window [FS#3865] (r19943)
- Fix: Under some (unlucky) circumstances the wrong company would be "current company" when changing company colour or orders [FS#3903]
2010-07-08 19:39:20 +00:00
rubidium
017e56d64b (svn r19995) [1.0] -Backport from trunk
- Fix: Owner of the Waypoint View window was not properly set (r19990)
- Fix: Close list of vehicles with given oil rig in orders when the oil rig is deleted (r19956)
- Fix: Close list of vehicles with given buoy/oil rig in orders when switching company (r19955)
- Fix: Do not close list of waypoint's trains when the waypoint view is closed when it is sticky (r19952)
- Fix: Close buoy's vehicle list when the buoy is deleted [FS#3869] (r19951)
-Prepare: for 1.0.2
2010-06-19 16:35:37 +00:00
rubidium
e31a99619e (svn r19938) [1.0] -Backport from trunk:
- Fix: When 'pause on new game' is set, pause the game before CleanupGeneration() to avoid conflicts with concurrent GUI code [FS#3857] (r19934)
- Fix: Blocked roadvehicles should first check whether they are still blocked before accelerating again, instead of continuous starting/stopping (r19755)
- Fix: [NewGRF] Passing some invalid data to industry variable 67/68 could cause a crash (r19713)
- Update: changelog and such
2010-06-05 21:13:35 +00:00
rubidium
9f8627152b (svn r19929) [1.0] -Backport language updates from trunk 2010-06-04 21:28:43 +00:00
rubidium
69aa1249fb (svn r19928) [1.0] -Backport from trunk:
- Feature: Translated desktop shortcut comments (r19884)
- Fix: Pay for the rail/road when constructing tunnels, bridges, depots and stations [FS#3859, FS#3827] (r19925, r19887, r19881)
- Fix: Closing chatbox could cause glitches when news message was shown [FS#3865] (r19921)
2010-06-04 21:14:22 +00:00
rubidium
76f552f16d (svn r19927) [1.0] -Backport from trunk:
- Fix: [YAPP] Inform the pathfinder as well about the fact that the backside of an one-way path signal can be a safe waiting point [FS#3803] (r19896)
- Fix: Allow loading savegames from the console without specifying the ".sav" extension, i.e. make it consistent with saving savegames from the console [FS#3761] (r19885)
- Fix: Dropdowns did affect positioning of new windows because they were not yet removed when the new windows were positioned [FS#3812] (r19883)
- Fix: [NoAI] AIEngine::IsValidEngine() and AIEngine::IsBuildable() returned false positives. Especially wagons of unavailable railtypes were reported available (r19880)
2010-06-04 21:10:18 +00:00
rubidium
517a9d4a68 (svn r19926) [1.0] -Backport from trunk:
- Fix: Default vehicle group texts were drawn one pixel too low [FS#3851] (r19878)
- Fix: It was not possible to send all trains with common waypoint order to depot (r19876)
- Change: Name invalid engines, cargos and industries 'invalid', if the player removed the supplying NewGRFs, hide invalid engines from the purchase list (r19879, r19877)
2010-06-04 21:07:08 +00:00
rubidium
a68647b11e (svn r19875) [1.0] -Backport from trunk:
- Fix: NetBSD compilation was still broken in some cases [FS#3845] (r19874, r19859)
- Fix: If the (guessed initial) destination tile of a road vehicle was not a road stop but was a T-junction or turn, the road vehicles would jump around in circles [FS#3817] (r19873)
- Fix: When a network connection gets lost and a game with AIs was loaded the client might crash due to the AIs not being loaded while the game loop is executed [FS#3819] (r19869)
- Fix: Use non-breaking spaces for currency pre-/postfixes (r19867)
- Fix: Crash when changing/viewing locale settings in the console [FS#3830] (r19865, r19864, r19863, r19862)
2010-05-21 16:03:29 +00:00
rubidium
0c01de0929 (svn r19858) [1.0] -Backport from trunk:
- Fix: Compilation for NetBSD [FS#3809, FS#3840] (r19853, r19781)
- Fix: Drawing fallback sprites for unavailable NewGRF waypoints failed (r19852)
- Fix: Ensure that both texts of the NewGRF gui download button fit (r19823)
- Fix: Kicking clients by IP did not work [FS#3784] (r19818)
- Fix: Compilation with MinGW GCC 4.5.0 and UNICODE (r19787)
2010-05-18 21:49:59 +00:00
rubidium
eee6e228c7 (svn r19857) [1.0] -Backport from trunk:
- Fix: If a waypoint is immediately followed by a path signal a reservation would be made from that path signal before the waypoint is marked passed. As a result the order to go to the waypoint is used to reserve the path after the waypoint and as such trains get lost [FS#3770] (r19784)
- Fix: NULL pointer deference when testing relative scope *action2 on an unbuilt engine [FS#3828] (r19782)
- Fix: Crash on too long paths [FS#3807] (r19780, r19779, r19778, r19777, r19776)
- Fix: MP_VOID tiles shall have no tropic zone [FS#3820] (r19769)
- Fix: Half-desert tiles would never revert back to clear tiles (r19768)
2010-05-18 21:44:47 +00:00
rubidium
3f1bc42eb0 (svn r19856) [1.0] -Backport from trunk:
- Fix: Height in smallmap was different from measured heights [FS#3808]
- Fix: [NewGRF] Vehicle var 43 missed AI information in purchase list (r19761)
- Fix: Try harder to find a suitable font that can be loaded, i.e. while searching for a suitable font test whether you can open it [FS#3740] (r19753)
- Fix: Make sure the chat area fits in the default window size; if you want it larger, you can always change/override it in the config file [FS#3798] (r19751)
- Fix: [NewGRF] Industry var 0x43 is not 'safe' during callbacks 22 and 38 either (r19750)
2010-05-18 21:38:09 +00:00
rubidium
1e5d35634d (svn r19855) [1.0] -Backport from trunk:
- Fix: [NewGRF] Possible divide-by-zero if a NewGRF checked industry var 42 while the production level was 0 (r19749)
- Fix: Do not recenter usually centered windows when resizing main window or changing language, if they have been moved/resized before [FS#3675] (r19746)
- Fix: The GUI is controlled by _local_company, not _current_company (r19745)
- Fix: NewGRFs could access map bits of not yet constructed industries and houses during construction callbacks (r19748, r19743)
- Fix: Check for industry availability more thoroughly and cancel object placement when selecting not available industries [FS#3787] (r19701)
2010-05-18 21:30:56 +00:00
rubidium
530d904f84 (svn r19854) [1.0] -Backport from trunk:
- Fix: Avoid showing building toolbars behind the main toolbar when the 'Link landscape toolbar' setting is active [FS#3781] (r19696)
- Fix: Under some circumstances the player's name could be empty (r19693)
- Fix: Do not show an error message when trying to give another client an amount of 0 money [FS#3779] (r19684)
- Fix: Do not display an error message when double clicking on a vehicle in the 'available vehicles'-window (r19669)
2010-05-18 21:25:03 +00:00
256 changed files with 25932 additions and 5036 deletions

48
.gitignore vendored
View File

@@ -1,12 +1,46 @@
Makefile*
bin/*
bundle/*
!bin/data/chars.grf
!bin/ai
bin/ai/*
!bin/ai/compat*.nut
!bin/ai/regression
!bin/data
bin/data/*
!bin/data/openttdd.grf
!bin/data/openttdw.grf
!bin/data/opntitle.grf
!bin/scenario/README
!bin/scripts*
config.*
!bin/data/opntitle.dat
!bin/data/orig_*.obg
!bin/data/orig_*.obs
!bin/data/no_sound.obs
!bin/gm
bin/gm/*
!bin/gm/no_music.obm
!bin/gm/orig_*.obm
!bin/scripts
bin/scripts/*
!bin/scripts/*.example
!bin/scripts/readme.txt
bundle/*
bundles/*
docs/aidocs/*
docs/source/*
media/openttd.desktop
media/openttd.desktop.install
objs/*
projects/Debug
projects/Release
projects/*.ncb
projects/*.suo
projects/*.sdf
projects/*.opensdf
projects/*.vcproj.*.user
projects/*.vcxproj.user
src/rev.cpp
src/os/windows/ottdres.rc
/Makefile*
!/Makefile.msvc
/config.*
!/config.lib
!*.in
*.tmp

View File

@@ -1,11 +1,26 @@
syntax: glob
bin/lang/*
bin/opentd*
bin/openttd*
bin/*.cfg
bundle/*
config.cache.*
bundles/*
config.cache*
config.log
config.pwd
docs/aidocs/*
docs/source/*
Makefile
Makefile.am
media/openttd.desktop*
Makefile.bundle
media/openttd.desktop
media/openttd.desktop.install
objs/*
projects/*.ncb
projects/*.suo
projects/*.sdf
projects/*.opensdf
projects/*.vcproj.*.user
projects/*.vcxproj.user
src/rev.cpp
src/os/windows/ottdres.rc

View File

@@ -88,7 +88,8 @@ endif
$(Q)cp "$(BIN_DIR)/scripts/"* "$(BUNDLE_DIR)/scripts/"
ifdef MENU_DIR
$(Q)cp "$(ROOT_DIR)/media/openttd.desktop" "$(BUNDLE_DIR)/media/"
$(Q)cat "$(ROOT_DIR)/media/openttd.desktop" | sed s/=openttd/=$(BINARY_NAME)/g > "$(ROOT_DIR)/media/openttd.desktop.install"
$(Q)$(AWK) -f "$(ROOT_DIR)/media/openttd.desktop.translation.awk" "$(SRC_DIR)/lang/"*.txt | $(SORT) >> "$(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"
@@ -155,7 +156,7 @@ bundle_dmg: bundle
bundle_exe: all
@echo '[BUNDLE] Creating $(BUNDLE_NAME).exe'
$(Q)mkdir -p "$(BUNDLES_DIR)"
$(Q)unix2dos "$(ROOT_DIR)/docs/"* "$(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.txt" "$(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"

94
Makefile.grf.in Normal file
View File

@@ -0,0 +1,94 @@
# $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/>.
#
# Building requires GRFCodec and NFORenum. Older versions of GRFCodec are
# known to miscompile the graphics.
#
# Recent nightlies (including sources) of both can be found at:
# http://www.openttd.org/download-grfcodec
# http://www.openttd.org/download-nforenum
#
# The mercurial repository of both can be found at:
# http://hg.openttdcoop.org/grfcodec
# http://hg.openttdcoop.org/nforenum
#
ROOT_DIR = !!ROOT_DIR!!
GRF_DIR = $(ROOT_DIR)/media/extra_grf
BIN_DIR = !!BIN_DIR!!/data
OBJS_DIR = !!GRF_OBJS_DIR!!
OS = !!OS!!
STAGE = !!STAGE!!
# Check if we want to show what we are doing
ifdef VERBOSE
Q =
E = @true
else
Q = @
E = @echo
endif
# Some configurational settings for your environment.
# If GRFCodec doesn't know a command, it'll exit with a non-zero exit code.
GRFCODEC := $(shell grfcodec -s -v >/dev/null 2>/dev/null && echo "grfcodec -s" || echo "grfcodec")
# Old NFORenums don't give an error code when a parameter isn't known, so we have to work around that.
NFORENUM := $(shell [ `nforenum -s -v 2>/dev/null | wc -l ` -eq 1 ] && echo "nforenum -s" || echo "nforenum")
MD5SUM := $(shell [ "$(OS)" = "OSX" ] && echo "md5 -r" || echo "md5sum")
# Some "should not be changed" settings.
NFO_FILES := $(GRF_DIR)/*.nfo
PCX_FILES := $(GRF_DIR)/*.pcx
# Build the GRF.
all: $(BIN_DIR)/openttdd.grf $(BIN_DIR)/openttdw.grf
# Make sure the sprites directory exists.
$(OBJS_DIR)/sprites:
$(Q)-mkdir "$@"
$(BIN_DIR)/openttdd.grf: $(PCX_FILES) $(NFO_FILES) $(OBJS_DIR)/sprites
@# Only try; if nforenum isn't available, just retouch the file as they likely didn't need it anyway.
$(Q) ($(NFORENUM) --help > /dev/null 2>&1 && $(MAKE) $(OBJS_DIR)/openttdd.grf && cp $(OBJS_DIR)/openttdd.grf $(BIN_DIR)/openttdd.grf) || ([ -e $(BIN_DIR)/openttdd.grf ] && touch $(BIN_DIR)/openttdd.grf && echo "no NFORenum and GRFCodec found, skipping rebuild of openttdd.grf...") || (echo "no NFORenum and GRFCodec found, but no openttdd.grf either. Install NFORenum and GRFCodec." && exit 1)
# Yeah, we'd like to use -i in the sed, but Mac OS X's sed and GNU sed just can't agree on the usage of -i. In any case either one of them fails.
$(OBJS_DIR)/openttdd.grf: $(PCX_FILES) $(NFO_FILES) $(OBJS_DIR)/sprites
$(E) '$(STAGE) Assembling openttdd.nfo'
$(Q)-cp $(PCX_FILES) $(OBJS_DIR)/sprites 2> /dev/null
$(Q) gcc -DDOS -I$(GRF_DIR) -C -E - < "$(GRF_DIR)/openttd.nfo" | sed -e '/^#/d' -e '/^$$/d' > $(OBJS_DIR)/sprites/openttdd.nfo
$(Q) $(NFORENUM) $(OBJS_DIR)/sprites/openttdd.nfo
$(E) '$(STAGE) Compiling openttdd.grf'
$(Q) $(GRFCODEC) -e -m1 $(OBJS_DIR)/openttdd.grf
$(Q) cp $(OBJS_DIR)/openttdd.grf $(BIN_DIR)/openttdd.grf
$(E) '$(STAGE) Updating base graphics sets for DOS graphics'
$(Q) for grf in $(BIN_DIR)/orig_dos*.obg; do sed 's/^OPENTTDD.GRF = [0-9a-f]*$$/OPENTTDD.GRF = '`$(MD5SUM) $(BIN_DIR)/openttdd.grf | sed 's@ .*@@'`'/' $$grf > $$grf.tmp && mv $$grf.tmp $$grf; done
$(BIN_DIR)/openttdw.grf: $(PCX_FILES) $(NFO_FILES) $(OBJS_DIR)/sprites
@# Only try; if nforenum isn't available, just retouch the file as they likely didn't need it anyway.
$(Q) ($(NFORENUM) --help > /dev/null 2>&1 && $(MAKE) $(OBJS_DIR)/openttdw.grf && cp $(OBJS_DIR)/openttdw.grf $(BIN_DIR)/openttdw.grf) || ([ -e $(BIN_DIR)/openttdw.grf ] && touch $(BIN_DIR)/openttdw.grf && echo "no NFORenum and GRFCodec found, skipping rebuild of openttdw.grf...") || (echo "no NFORenum and GRFCodec found, but no openttdw.grf either. Install NFORenum and GRFCodec." && exit 1)
$(OBJS_DIR)/openttdw.grf: $(PCX_FILES) $(NFO_FILES) $(OBJS_DIR)/sprites
$(E) '$(STAGE) Assembling openttdw.nfo'
$(Q)-cp $(PCX_FILES) $(OBJS_DIR)/sprites 2> /dev/null
$(Q) gcc -I$(GRF_DIR) -C -E - < "$(GRF_DIR)/openttd.nfo" | sed -e '/^#/d' -e '/^$$/d' > $(OBJS_DIR)/sprites/openttdw.nfo
$(Q) $(NFORENUM) $(OBJS_DIR)/sprites/openttdw.nfo
$(E) '$(STAGE) Compiling openttdw.grf'
$(Q) $(GRFCODEC) -e -p2 $(OBJS_DIR)/openttdw.grf
$(Q) cp $(OBJS_DIR)/openttdw.grf $(BIN_DIR)/openttdw.grf
$(E) '$(STAGE) Updating base graphics sets for Windows graphics'
$(Q) for grf in $(BIN_DIR)/orig_win.obg; do sed 's/^OPENTTDW.GRF = [0-9a-f]*$$/OPENTTDW.GRF = '`$(MD5SUM) $(BIN_DIR)/openttdw.grf | sed 's@ .*@@'`'/' $$grf > $$grf.tmp && mv $$grf.tmp $$grf; done
# Clean up temporary files.
clean:
$(Q)rm -f *.bak *.grf
# Clean up temporary files
mrproper: clean
$(Q)rm -fr sprites
.PHONY: all mrproper depend clean

View File

@@ -43,6 +43,7 @@ OSXAPP = !!OSXAPP!!
LIPO = !!LIPO!!
REVISION = !!REVISION!!
AWK = !!AWK!!
SORT = !!SORT!!
DISTCC = !!DISTCC!!
RES := $(shell if [ ! -f $(CONFIG_CACHE_PWD) ] || [ "`pwd`" != "`cat $(CONFIG_CACHE_PWD)`" ]; then echo "`pwd`" > $(CONFIG_CACHE_PWD); fi )
@@ -53,7 +54,7 @@ ifdef DISTCC
@if [ -z "`echo '$(MFLAGS)' | grep '\-j'`" ]; then echo; echo "WARNING: you enabled distcc support, but you don't seem to be using the -jN paramter"; echo; fi
endif
@for dir in $(DIRS); do \
$(MAKE) -C $$dir all; \
$(MAKE) -C $$dir all || exit 1; \
done
ifdef LIPO
# Lipo is an OSX thing. If it is defined, it means we are building for universal,
@@ -146,6 +147,9 @@ mrproper:
$(Q)rm -rf $(BIN_DIR)/ai/regression/content_download $(BIN_DIR)/ai/regression/save $(BIN_DIR)/ai/regression/scenario
distclean: mrproper
maintainer-clean: distclean
$(Q)rm -f $(BIN_DIR)/data/openttdd.grf $(BIN_DIR)/data/openttdw.grf
depend:
@for dir in $(SRC_DIRS); do \
$(MAKE) -C $$dir depend; \

View File

@@ -1755,6 +1755,48 @@ function Regression::PrintSubsidy(subsidy_id)
print(" GetCargoType(): " + AISubsidy.GetCargoType(subsidy_id));
}
function Regression::Math()
{
print("");
print("--Math--");
print(" -2147483648 < -2147483647: " + (-2147483648 < -2147483647));
print(" -2147483648 < -1 : " + (-2147483648 < -1 ));
print(" -2147483648 < 0 : " + (-2147483648 < 0 ));
print(" -2147483648 < 1 : " + (-2147483648 < 1 ));
print(" -2147483648 < 2147483647: " + (-2147483648 < 2147483647));
print(" -2147483647 < -2147483648: " + (-2147483647 < -2147483648));
print(" -1 < -2147483648: " + (-1 < -2147483648));
print(" 0 < -2147483648: " + ( 0 < -2147483648));
print(" 1 < -2147483648: " + ( 1 < -2147483648));
print(" 2147483647 < -2147483648: " + ( 2147483647 < -2147483648));
print(" -1 > 2147483647: " + (-1 > 2147483647));
print(" -1 > 1 : " + (-1 > 1 ));
print(" -1 > 0 : " + (-1 > 0 ));
print(" -1 > -1 : " + (-1 > -1 ));
print(" -1 > -2147483648: " + (-1 > -2147483648));
print(" 1 > 2147483647: " + ( 1 > 2147483647));
print(" 1 > 1 : " + ( 1 > 1 ));
print(" 1 > 0 : " + ( 1 > 0 ));
print(" 1 > -1 : " + ( 1 > -1 ));
print(" 1 > -2147483648: " + ( 1 > -2147483648));
print(" 2147483647 > 2147483646: " + ( 2147483647 > 2147483646));
print(" 2147483647 > 1 : " + ( 2147483647 > 1 ));
print(" 2147483647 > 0 : " + ( 2147483647 > 0 ));
print(" 2147483647 > -1 : " + ( 2147483647 > -1 ));
print(" 2147483647 > -2147483648: " + ( 2147483647 > -2147483648));
print(" 2147483646 > 2147483647: " + ( 2147483646 > 2147483647));
print(" 1 > 2147483647: " + ( 1 > 2147483647));
print(" 0 > 2147483647: " + ( 0 > 2147483647));
print(" -1 > 2147483647: " + (-1 > 2147483647));
print(" -2147483648 > 2147483647: " + (-2147483648 > 2147483647));
print(" 13725 > -2147483648: " + ( 13725 > -2147483648));
}
function Regression::Start()
{
@@ -1820,5 +1862,7 @@ function Regression::Start()
}
}
print(" IsEventWaiting: false");
this.Math();
}

View File

@@ -2148,201 +2148,201 @@ ERROR: HasNext() is invalid as Begin() is never called
GetRoadType(): -1
GetPlaneType(): -1
Engine 57
IsValidEngine(): true
GetName(): Passenger Carriage
GetCargoType(): 0
IsValidEngine(): false
GetName(): (null : 0x00000000)
GetCargoType(): 255
CanRefitCargo(): false
GetCapacity(): 45
GetCapacity(): -1
GetReliability(): -1
GetMaxSpeed(): 0
GetPrice(): 1447
GetMaxSpeed(): -1
GetPrice(): -1
GetMaxAge(): -1
GetRunningCost(): 0
GetRunningCost(): -1
GetPower(): -1
GetWeight(): 25
GetWeight(): -1
GetMaxTractiveEffort(): -1
GetVehicleType(): 0
GetRailType(): 2
GetVehicleType(): 255
GetRailType(): 255
GetRoadType(): -1
GetPlaneType(): -1
Engine 58
IsValidEngine(): true
GetName(): Mail Van
GetCargoType(): 2
IsValidEngine(): false
GetName(): (null : 0x00000000)
GetCargoType(): 255
CanRefitCargo(): false
GetCapacity(): 35
GetCapacity(): -1
GetReliability(): -1
GetMaxSpeed(): 0
GetPrice(): 1335
GetMaxSpeed(): -1
GetPrice(): -1
GetMaxAge(): -1
GetRunningCost(): 0
GetRunningCost(): -1
GetPower(): -1
GetWeight(): 21
GetWeight(): -1
GetMaxTractiveEffort(): -1
GetVehicleType(): 0
GetRailType(): 2
GetVehicleType(): 255
GetRailType(): 255
GetRoadType(): -1
GetPlaneType(): -1
Engine 59
IsValidEngine(): true
GetName(): Coal Truck
GetCargoType(): 1
CanRefitCargo(): true
GetCapacity(): 35
IsValidEngine(): false
GetName(): (null : 0x00000000)
GetCargoType(): 255
CanRefitCargo(): false
GetCapacity(): -1
GetReliability(): -1
GetMaxSpeed(): 0
GetPrice(): 1031
GetMaxSpeed(): -1
GetPrice(): -1
GetMaxAge(): -1
GetRunningCost(): 0
GetRunningCost(): -1
GetPower(): -1
GetWeight(): 18
GetWeight(): -1
GetMaxTractiveEffort(): -1
GetVehicleType(): 0
GetRailType(): 2
GetVehicleType(): 255
GetRailType(): 255
GetRoadType(): -1
GetPlaneType(): -1
Engine 60
IsValidEngine(): true
GetName(): Oil Tanker
GetCargoType(): 3
IsValidEngine(): false
GetName(): (null : 0x00000000)
GetCargoType(): 255
CanRefitCargo(): false
GetCapacity(): 35
GetCapacity(): -1
GetReliability(): -1
GetMaxSpeed(): 0
GetPrice(): 1171
GetMaxSpeed(): -1
GetPrice(): -1
GetMaxAge(): -1
GetRunningCost(): 0
GetRunningCost(): -1
GetPower(): -1
GetWeight(): 24
GetWeight(): -1
GetMaxTractiveEffort(): -1
GetVehicleType(): 0
GetRailType(): 2
GetVehicleType(): 255
GetRailType(): 255
GetRoadType(): -1
GetPlaneType(): -1
Engine 61
IsValidEngine(): true
GetName(): Livestock Van
GetCargoType(): 4
IsValidEngine(): false
GetName(): (null : 0x00000000)
GetCargoType(): 255
CanRefitCargo(): false
GetCapacity(): 30
GetCapacity(): -1
GetReliability(): -1
GetMaxSpeed(): 0
GetPrice(): 1125
GetMaxSpeed(): -1
GetPrice(): -1
GetMaxAge(): -1
GetRunningCost(): 0
GetRunningCost(): -1
GetPower(): -1
GetWeight(): 20
GetWeight(): -1
GetMaxTractiveEffort(): -1
GetVehicleType(): 0
GetRailType(): 2
GetVehicleType(): 255
GetRailType(): 255
GetRoadType(): -1
GetPlaneType(): -1
Engine 62
IsValidEngine(): true
GetName(): Goods Van
GetCargoType(): 5
IsValidEngine(): false
GetName(): (null : 0x00000000)
GetCargoType(): 255
CanRefitCargo(): false
GetCapacity(): 30
GetCapacity(): -1
GetReliability(): -1
GetMaxSpeed(): 0
GetPrice(): 1113
GetMaxSpeed(): -1
GetPrice(): -1
GetMaxAge(): -1
GetRunningCost(): 0
GetRunningCost(): -1
GetPower(): -1
GetWeight(): 21
GetWeight(): -1
GetMaxTractiveEffort(): -1
GetVehicleType(): 0
GetRailType(): 2
GetVehicleType(): 255
GetRailType(): 255
GetRoadType(): -1
GetPlaneType(): -1
Engine 63
IsValidEngine(): true
GetName(): Grain Hopper
GetCargoType(): 6
IsValidEngine(): false
GetName(): (null : 0x00000000)
GetCargoType(): 255
CanRefitCargo(): false
GetCapacity(): 35
GetCapacity(): -1
GetReliability(): -1
GetMaxSpeed(): 0
GetPrice(): 1066
GetMaxSpeed(): -1
GetPrice(): -1
GetMaxAge(): -1
GetRunningCost(): 0
GetRunningCost(): -1
GetPower(): -1
GetWeight(): 19
GetWeight(): -1
GetMaxTractiveEffort(): -1
GetVehicleType(): 0
GetRailType(): 2
GetVehicleType(): 255
GetRailType(): 255
GetRoadType(): -1
GetPlaneType(): -1
Engine 64
IsValidEngine(): true
GetName(): Wood Truck
GetCargoType(): 7
IsValidEngine(): false
GetName(): (null : 0x00000000)
GetCargoType(): 255
CanRefitCargo(): false
GetCapacity(): 35
GetCapacity(): -1
GetReliability(): -1
GetMaxSpeed(): 0
GetPrice(): 1060
GetMaxSpeed(): -1
GetPrice(): -1
GetMaxAge(): -1
GetRunningCost(): 0
GetRunningCost(): -1
GetPower(): -1
GetWeight(): 16
GetWeight(): -1
GetMaxTractiveEffort(): -1
GetVehicleType(): 0
GetRailType(): 2
GetVehicleType(): 255
GetRailType(): 255
GetRoadType(): -1
GetPlaneType(): -1
Engine 65
IsValidEngine(): true
GetName(): Iron Ore Hopper
GetCargoType(): 8
IsValidEngine(): false
GetName(): (null : 0x00000000)
GetCargoType(): 255
CanRefitCargo(): false
GetCapacity(): 35
GetCapacity(): -1
GetReliability(): -1
GetMaxSpeed(): 0
GetPrice(): 1048
GetMaxSpeed(): -1
GetPrice(): -1
GetMaxAge(): -1
GetRunningCost(): 0
GetRunningCost(): -1
GetPower(): -1
GetWeight(): 19
GetWeight(): -1
GetMaxTractiveEffort(): -1
GetVehicleType(): 0
GetRailType(): 2
GetVehicleType(): 255
GetRailType(): 255
GetRoadType(): -1
GetPlaneType(): -1
Engine 66
IsValidEngine(): true
GetName(): Steel Truck
GetCargoType(): 9
IsValidEngine(): false
GetName(): (null : 0x00000000)
GetCargoType(): 255
CanRefitCargo(): false
GetCapacity(): 25
GetCapacity(): -1
GetReliability(): -1
GetMaxSpeed(): 0
GetPrice(): 1148
GetMaxSpeed(): -1
GetPrice(): -1
GetMaxAge(): -1
GetRunningCost(): 0
GetRunningCost(): -1
GetPower(): -1
GetWeight(): 18
GetWeight(): -1
GetMaxTractiveEffort(): -1
GetVehicleType(): 0
GetRailType(): 2
GetVehicleType(): 255
GetRailType(): 255
GetRoadType(): -1
GetPlaneType(): -1
Engine 67
IsValidEngine(): true
GetName(): Armoured Van
GetCargoType(): 10
IsValidEngine(): false
GetName(): (null : 0x00000000)
GetCargoType(): 255
CanRefitCargo(): false
GetCapacity(): 25
GetCapacity(): -1
GetReliability(): -1
GetMaxSpeed(): 0
GetPrice(): 1494
GetMaxSpeed(): -1
GetPrice(): -1
GetMaxAge(): -1
GetRunningCost(): 0
GetRunningCost(): -1
GetPower(): -1
GetWeight(): 30
GetWeight(): -1
GetMaxTractiveEffort(): -1
GetVehicleType(): 0
GetRailType(): 2
GetVehicleType(): 255
GetRailType(): 255
GetRoadType(): -1
GetPlaneType(): -1
Engine 68
@@ -2724,201 +2724,201 @@ ERROR: HasNext() is invalid as Begin() is never called
GetRoadType(): -1
GetPlaneType(): -1
Engine 89
IsValidEngine(): true
GetName(): Passenger Carriage
GetCargoType(): 0
IsValidEngine(): false
GetName(): (null : 0x00000000)
GetCargoType(): 255
CanRefitCargo(): false
GetCapacity(): 47
GetCapacity(): -1
GetReliability(): -1
GetMaxSpeed(): 0
GetPrice(): 1447
GetMaxSpeed(): -1
GetPrice(): -1
GetMaxAge(): -1
GetRunningCost(): 0
GetRunningCost(): -1
GetPower(): -1
GetWeight(): 25
GetWeight(): -1
GetMaxTractiveEffort(): -1
GetVehicleType(): 0
GetRailType(): 3
GetVehicleType(): 255
GetRailType(): 255
GetRoadType(): -1
GetPlaneType(): -1
Engine 90
IsValidEngine(): true
GetName(): Mail Van
GetCargoType(): 2
IsValidEngine(): false
GetName(): (null : 0x00000000)
GetCargoType(): 255
CanRefitCargo(): false
GetCapacity(): 37
GetCapacity(): -1
GetReliability(): -1
GetMaxSpeed(): 0
GetPrice(): 1335
GetMaxSpeed(): -1
GetPrice(): -1
GetMaxAge(): -1
GetRunningCost(): 0
GetRunningCost(): -1
GetPower(): -1
GetWeight(): 21
GetWeight(): -1
GetMaxTractiveEffort(): -1
GetVehicleType(): 0
GetRailType(): 3
GetVehicleType(): 255
GetRailType(): 255
GetRoadType(): -1
GetPlaneType(): -1
Engine 91
IsValidEngine(): true
GetName(): Coal Truck
GetCargoType(): 1
CanRefitCargo(): true
GetCapacity(): 37
IsValidEngine(): false
GetName(): (null : 0x00000000)
GetCargoType(): 255
CanRefitCargo(): false
GetCapacity(): -1
GetReliability(): -1
GetMaxSpeed(): 0
GetPrice(): 1031
GetMaxSpeed(): -1
GetPrice(): -1
GetMaxAge(): -1
GetRunningCost(): 0
GetRunningCost(): -1
GetPower(): -1
GetWeight(): 18
GetWeight(): -1
GetMaxTractiveEffort(): -1
GetVehicleType(): 0
GetRailType(): 3
GetVehicleType(): 255
GetRailType(): 255
GetRoadType(): -1
GetPlaneType(): -1
Engine 92
IsValidEngine(): true
GetName(): Oil Tanker
GetCargoType(): 3
IsValidEngine(): false
GetName(): (null : 0x00000000)
GetCargoType(): 255
CanRefitCargo(): false
GetCapacity(): 37
GetCapacity(): -1
GetReliability(): -1
GetMaxSpeed(): 0
GetPrice(): 1171
GetMaxSpeed(): -1
GetPrice(): -1
GetMaxAge(): -1
GetRunningCost(): 0
GetRunningCost(): -1
GetPower(): -1
GetWeight(): 24
GetWeight(): -1
GetMaxTractiveEffort(): -1
GetVehicleType(): 0
GetRailType(): 3
GetVehicleType(): 255
GetRailType(): 255
GetRoadType(): -1
GetPlaneType(): -1
Engine 93
IsValidEngine(): true
GetName(): Livestock Van
GetCargoType(): 4
IsValidEngine(): false
GetName(): (null : 0x00000000)
GetCargoType(): 255
CanRefitCargo(): false
GetCapacity(): 32
GetCapacity(): -1
GetReliability(): -1
GetMaxSpeed(): 0
GetPrice(): 1125
GetMaxSpeed(): -1
GetPrice(): -1
GetMaxAge(): -1
GetRunningCost(): 0
GetRunningCost(): -1
GetPower(): -1
GetWeight(): 20
GetWeight(): -1
GetMaxTractiveEffort(): -1
GetVehicleType(): 0
GetRailType(): 3
GetVehicleType(): 255
GetRailType(): 255
GetRoadType(): -1
GetPlaneType(): -1
Engine 94
IsValidEngine(): true
GetName(): Goods Van
GetCargoType(): 5
IsValidEngine(): false
GetName(): (null : 0x00000000)
GetCargoType(): 255
CanRefitCargo(): false
GetCapacity(): 32
GetCapacity(): -1
GetReliability(): -1
GetMaxSpeed(): 0
GetPrice(): 1113
GetMaxSpeed(): -1
GetPrice(): -1
GetMaxAge(): -1
GetRunningCost(): 0
GetRunningCost(): -1
GetPower(): -1
GetWeight(): 21
GetWeight(): -1
GetMaxTractiveEffort(): -1
GetVehicleType(): 0
GetRailType(): 3
GetVehicleType(): 255
GetRailType(): 255
GetRoadType(): -1
GetPlaneType(): -1
Engine 95
IsValidEngine(): true
GetName(): Grain Hopper
GetCargoType(): 6
IsValidEngine(): false
GetName(): (null : 0x00000000)
GetCargoType(): 255
CanRefitCargo(): false
GetCapacity(): 37
GetCapacity(): -1
GetReliability(): -1
GetMaxSpeed(): 0
GetPrice(): 1066
GetMaxSpeed(): -1
GetPrice(): -1
GetMaxAge(): -1
GetRunningCost(): 0
GetRunningCost(): -1
GetPower(): -1
GetWeight(): 19
GetWeight(): -1
GetMaxTractiveEffort(): -1
GetVehicleType(): 0
GetRailType(): 3
GetVehicleType(): 255
GetRailType(): 255
GetRoadType(): -1
GetPlaneType(): -1
Engine 96
IsValidEngine(): true
GetName(): Wood Truck
GetCargoType(): 7
IsValidEngine(): false
GetName(): (null : 0x00000000)
GetCargoType(): 255
CanRefitCargo(): false
GetCapacity(): 37
GetCapacity(): -1
GetReliability(): -1
GetMaxSpeed(): 0
GetPrice(): 1060
GetMaxSpeed(): -1
GetPrice(): -1
GetMaxAge(): -1
GetRunningCost(): 0
GetRunningCost(): -1
GetPower(): -1
GetWeight(): 16
GetWeight(): -1
GetMaxTractiveEffort(): -1
GetVehicleType(): 0
GetRailType(): 3
GetVehicleType(): 255
GetRailType(): 255
GetRoadType(): -1
GetPlaneType(): -1
Engine 97
IsValidEngine(): true
GetName(): Iron Ore Hopper
GetCargoType(): 8
IsValidEngine(): false
GetName(): (null : 0x00000000)
GetCargoType(): 255
CanRefitCargo(): false
GetCapacity(): 37
GetCapacity(): -1
GetReliability(): -1
GetMaxSpeed(): 0
GetPrice(): 1048
GetMaxSpeed(): -1
GetPrice(): -1
GetMaxAge(): -1
GetRunningCost(): 0
GetRunningCost(): -1
GetPower(): -1
GetWeight(): 19
GetWeight(): -1
GetMaxTractiveEffort(): -1
GetVehicleType(): 0
GetRailType(): 3
GetVehicleType(): 255
GetRailType(): 255
GetRoadType(): -1
GetPlaneType(): -1
Engine 98
IsValidEngine(): true
GetName(): Steel Truck
GetCargoType(): 9
IsValidEngine(): false
GetName(): (null : 0x00000000)
GetCargoType(): 255
CanRefitCargo(): false
GetCapacity(): 27
GetCapacity(): -1
GetReliability(): -1
GetMaxSpeed(): 0
GetPrice(): 1148
GetMaxSpeed(): -1
GetPrice(): -1
GetMaxAge(): -1
GetRunningCost(): 0
GetRunningCost(): -1
GetPower(): -1
GetWeight(): 18
GetWeight(): -1
GetMaxTractiveEffort(): -1
GetVehicleType(): 0
GetRailType(): 3
GetVehicleType(): 255
GetRailType(): 255
GetRoadType(): -1
GetPlaneType(): -1
Engine 99
IsValidEngine(): true
GetName(): Armoured Van
GetCargoType(): 10
IsValidEngine(): false
GetName(): (null : 0x00000000)
GetCargoType(): 255
CanRefitCargo(): false
GetCapacity(): 27
GetCapacity(): -1
GetReliability(): -1
GetMaxSpeed(): 0
GetPrice(): 1494
GetMaxSpeed(): -1
GetPrice(): -1
GetMaxAge(): -1
GetRunningCost(): 0
GetRunningCost(): -1
GetPower(): -1
GetWeight(): 30
GetWeight(): -1
GetMaxTractiveEffort(): -1
GetVehicleType(): 0
GetRailType(): 3
GetVehicleType(): 255
GetRailType(): 255
GetRoadType(): -1
GetPlaneType(): -1
Engine 100
@@ -4998,7 +4998,7 @@ ERROR: HasNext() is invalid as Begin() is never called
CanRefitCargo(): false
GetCapacity(): 25
GetReliability(): 58
GetMaxSpeed(): 238
GetMaxSpeed(): 236
GetPrice(): 28710
GetMaxAge(): 7320
GetRunningCost(): 2390
@@ -5016,7 +5016,7 @@ ERROR: HasNext() is invalid as Begin() is never called
CanRefitCargo(): false
GetCapacity(): 65
GetReliability(): 95
GetMaxSpeed(): 238
GetMaxSpeed(): 236
GetPrice(): 30761
GetMaxAge(): 8784
GetRunningCost(): 2812
@@ -5070,7 +5070,7 @@ ERROR: HasNext() is invalid as Begin() is never called
CanRefitCargo(): false
GetCapacity(): 30
GetReliability(): 77
GetMaxSpeed(): 238
GetMaxSpeed(): 236
GetPrice(): 30761
GetMaxAge(): 10980
GetRunningCost(): 2756
@@ -5747,7 +5747,7 @@ ERROR: HasNext() is invalid as Begin() is never called
GetRailType(): 255
GetRoadType(): -1
GetPlaneType(): -1
Valid Engines: 53
Valid Engines: 31
--EngineList--
Count(): 11
@@ -7093,7 +7093,7 @@ ERROR: HasNext() is invalid as Begin() is never called
IsBuoyTile(): false
IsLockTile(): false
IsCanalTile(): false
GetBankBalance(): 480703
GetBankBalance(): 479851
BuildWaterDepot(): true
BuildDock(): true
BuildBuoy(): true
@@ -7106,7 +7106,7 @@ ERROR: HasNext() is invalid as Begin() is never called
IsBuoyTile(): true
IsLockTile(): true
IsCanalTile(): true
GetBankBalance(): 451154
GetBankBalance(): 450302
--AIWaypointList(BUOY)--
Count(): 1
@@ -7125,7 +7125,7 @@ ERROR: HasNext() is invalid as Begin() is never called
IsBuoyTile(): false
IsLockTile(): false
IsCanalTile(): false
GetBankBalance(): 428509
GetBankBalance(): 427657
BuildWaterDepot(): true
BuildDock(): true
@@ -8047,7 +8047,7 @@ ERROR: HasNext() is invalid as Begin() is never called
GetPopulation(): 737
GetLocation(): 6446
GetHouseCount(): 26
GetRating(): 5
GetRating(): 6
Town 11
IsValidTown(): true
GetName(): Fort Frindston
@@ -8082,7 +8082,7 @@ ERROR: HasNext() is invalid as Begin() is never called
GetPopulation(): 807
GetLocation(): 42338
GetHouseCount(): 33
GetRating(): 5
GetRating(): 6
Town 16
IsValidTown(): true
GetName(): Kennville
@@ -8117,7 +8117,7 @@ ERROR: HasNext() is invalid as Begin() is never called
GetPopulation(): 437
GetLocation(): 22585
GetHouseCount(): 15
GetRating(): 5
GetRating(): 6
Town 21
IsValidTown(): true
GetName(): Franinghead
@@ -8630,4 +8630,37 @@ ERROR: HasNext() is invalid as Begin() is never called
GetEventType: 6
Unknown Event
IsEventWaiting: false
--Math--
-2147483648 < -2147483647: true
-2147483648 < -1 : true
-2147483648 < 0 : true
-2147483648 < 1 : true
-2147483648 < 2147483647: true
-2147483647 < -2147483648: false
-1 < -2147483648: false
0 < -2147483648: false
1 < -2147483648: false
2147483647 < -2147483648: false
-1 > 2147483647: false
-1 > 1 : false
-1 > 0 : false
-1 > -1 : false
-1 > -2147483648: true
1 > 2147483647: false
1 > 1 : false
1 > 0 : true
1 > -1 : true
1 > -2147483648: true
2147483647 > 2147483646: true
2147483647 > 1 : true
2147483647 > 0 : true
2147483647 > -1 : true
2147483647 > -2147483648: true
2147483646 > 2147483647: false
1 > 2147483647: false
0 > 2147483647: false
-1 > 2147483647: false
-2147483648 > 2147483647: false
13725 > -2147483648: true
ERROR: The AI died unexpectedly.

Binary file not shown.

Binary file not shown.

View File

@@ -55,7 +55,7 @@ TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8
TRGC.GRF = ed446637e034104c5559b32c18afe78d
TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9
TRGT.GRF = e30e8a398ae86c03dc534a8ac7dfb3b6
OPENTTDD.GRF = 356cf9663aacb212fdbff609d99090d6
OPENTTDD.GRF = 177d3eeda710bb6f1b93955fdd3754fa
[origin]
default = You can find it on your Transport Tycoon Deluxe CD-ROM.

View File

@@ -55,7 +55,7 @@ TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8
TRGC.GRF = ed446637e034104c5559b32c18afe78d
TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9
TRGT.GRF = fcde1d7e8a74197d72a62695884b909e
OPENTTDD.GRF = 356cf9663aacb212fdbff609d99090d6
OPENTTDD.GRF = 177d3eeda710bb6f1b93955fdd3754fa
[origin]
default = You can find it on your Transport Tycoon Deluxe CD-ROM.

View File

@@ -55,7 +55,7 @@ TRGIR.GRF = 0c2484ff6be49fc63a83be6ab5c38f32
TRGCR.GRF = 3668f410c761a050b5e7095a2b14879b
TRGHR.GRF = 06bf2b7a31766f048baac2ebe43457b1
TRGTR.GRF = de53650517fe661ceaa3138c6edb0eb8
OPENTTDW.GRF = 80346ea80de167068cfb975f93963941
OPENTTDW.GRF = 7f67abbead5b77b86c375d4f9a7b1a29
[origin]
default = You can find it on your Transport Tycoon Deluxe CD-ROM.

View File

@@ -1,3 +1,163 @@
1.0.4 (2010-09-14)
------------------------------------------------------------------------
- Change: Move removal of bin/data/opentt[dw].grf from distclean to maintainer-clean (r20752)
- Fix: Recent NFORenum does not know '-?' (r20715)
1.0.4-RC1 (2010-08-30)
------------------------------------------------------------------------
- Change: Merge the extra GRF's sources and make it possible to rebuild them easily (r20490)
- Fix: Empty NewGRF presets were not selectable [FS#4087] (r20694)
- Fix: Desync checker checked the wrong variable (r20677)
- Fix: Drawing the 'OpenTTD' text in the intro game caused crashes with very low resolutions [FS#4081] (r20618)
- Fix: Crash when a NewGRF defined an invalid substitute type for a house and the NewGRF was removed during the game, disable houses with different size than their substitute [FS#3702] (r20611, r20610, r20609)
- Fix: Retain information about all base sets that are found and not only the latest version to stop confusing people that use newer versions of the base sets than those available via BaNaNaS (r20607)
- Fix: Let NewGRFs var43 var (information about liveries) for vehicles not be influenced by the local setting determining whether to show liveries or not [FS#4063] (r20605)
- Fix: 'Downscale' a full load order to a load if possible order when removing the order while the vehicle is loading. This to prevent the vehicle from (possibly) staying forever in the station [FS#4075] (r20600)
- Fix: Crash when the tooltip is wider than the window is [FS#4066] (r20596)
- Fix: No (proper) savegame conversion was done when _date_fract got a new value range (r20592)
- Fix: Autoreplace failed while attaching non-replaced wagons to the new chain, if to-be-sold-engines would become front-engines and the unitnumber limit would be exceeded (r20583)
- Fix: Autoreplace can trigger an assertion when at the vehicle limit [FS#4044] (r20582)
- Fix: Go via station and go via waypoint behaved differently when a train went back to the same (unordered) station again [FS#4039] (r20580)
- Fix: Draw bounding boxes using white instead of pure white, so they are recoloured to grey in coloured newspaper instead of blue [FS#4051] (r20578)
- Fix: Scroll button flickering when pressed [FS#4043] (r20577)
- Fix: Warn OpenGFX users when they are using a base set that misses sprites (r20566)
- Fix: Wrong tooltip for the company select button in the AI debug and performance rating windows [FS#4053] (r20556, r20555)
- Fix: In old savegames aircraft can have an invalid state (r20528)
- Fix: Crash when the content download tried to get a MD5 checksum of an 'originally' loaded NewGRF [FS#4038] (r20519)
- Fix: Draw error messages in white by default, they may not have a colour set when coming from a NewGRF (r20514)
- Fix: Entering half the 'generation seeds' in the console's 'newgame' command failed to set the correct seed [FS#4036] (r20512)
- Fix: Desync when vehicles change NewGRF properties such as visual effect when changing railtype [FS#3978] (r20505, r20504, r20503, r20502)
- Fix: Desync when converting rail all as trains with a part on the converted rails need updating and not only the engines (r20500)
- Fix: Ignore the non-stop state when comparing one order type to another order type, otherwise non-stop nearest depot orders fail [FS#4030] (r20498)
- Fix: Non-dedicated servers failing to load a game caused the introgame to be the server's game causing desyncs when people tried to join [FS#3960] (r20497)
- Fix: [NoAI] checking whether water tiles are connected failed in some cases [FS#4031] (r20489)
- Fix: Statues were not removed when towns would be removed (r20481)
- Fix: Do not spend cash when building a statue fails [FS#3985] (r20469, r20227)
- Fix: Adding 'goto nearest depot and stop' orders in one go was denied. This caused both AI adding those orders and backed up order restoration to fail [FS#4024] (r20441)
- Fix: For docks 'facing' north, i.e. having the watery part a the northern side, the station joiner had an off-by-one to the north w.r.t. the station spread against the actual other (correct) building tools [FS#4022] (r20438)
- Fix: Make snow on bridges depend on bridgeheight and make snowyness of bridgeheads depend on the tileheight at the entry [FS#3947] (r20424, r20423, r20422, r20421, r20420)
- Fix: During world generation the snow-mapbits are not yet available, so test the snowline variable directly (as they were before) [FS#4017] (r20418)
- Fix: PBS reservations were always displayed on halftile foundations if the railtype uses overlays [FS#4013] (r20408)
- Fix: Make the default minimum width for editboxes 10 pixels to prevent crashes [FS#4010] (r20394)
- Fix: Prevent buying more vehicles than allowed or buying companies when you'd get too many vehicles [FS#3993] (r20393, r20392, r20391, r20390)
- Fix: Initialize fund-industry buttons when opening window (r20386)
- Fix: Update cursor dimensions when reloading grfs resp. changing base graphics, so the cursor does not glitch if it becomes bigger (r20384)
- Fix: Stop vehicle following after zooming out [FS#3989] (r20361)
- Fix: [NoAI] Ship depots were constructed along the wrong axis [FS#4004] (r20348)
- Fix: Fallback font selection due to missing glyphs did not work as intended (r20296)
- Fix: When it is known the loading an old savegame is going to fail, bail out immediately (using an exception) instead of going on until e.g. the expected number of byte is read (r20247)
- Fix: The caption of the 'Available vehicle' lists was black, whereas for building those vehicles, which uses the exact same window, it was white (r20244)
- Fix: [NoAI] Clarify the documentation for AIBaseStation::GetLocation (r20238)
- Fix: Refit costs from refit orders are subtracted from the vehicle yearly income [FS#3988] (r20234)
- Fix: Road vehicles could be dead locked with one way roads. This allows one wayness to be removed if there are vehicles on a tile; it does not allow you to add one wayness to roads that have vehicles on them as it makes turning vehicles jump [FS#3961] (r20230)
- Fix: 'Service at nearest depot' behaved the same as 'Go to nearest depot' [FS#3986] (r20229)
- Fix: Depot did not become unsnowy, when snowline rises [FS#3976] (r20224)
- Fix: Strip non-printable characters before showing it in an edit box, so when renaming a vehicle type you won't get the 'SETX stuff' that some NewGRFs use [FS#3974] (r20220)
- Fix: NewGRFs that defined a vehicle without either loaded or loading groups could crash OpenTTD [FS#3964] (r20199)
- Fix: [NewGRF] GetNearbyTileInformation can be used to get the terrain type of a MP_VOID tile [FS#3963] (r20197)
- Fix: [NewGRF] Vehicle var FE bit 6 did return incorrect values for new railtypes (r20175)
- Fix: Inconsistencies w.r.t. to km/h vs km-ish/h as 'base' unit for aircraft speeds [FS#3870] (r20164)
1.0.3 (2010-08-01)
------------------------------------------------------------------------
- Fix: Make it possible to properly assess the length of the rail toolbar caption, don't require '{WHITE}' control codes (r20242)
- Fix: Check for disallowed level crossings also when converting rail (r20237)
- Fix: Haiku uses a 'special' location for headers (r20219)
- Fix: Desync due to (temporary) wrong railtype; when loading a savegame the railtype of some (high ID) trains could be wrong [FS#3945] (r20137)
1.0.3-RC1 (2010-07-17)
------------------------------------------------------------------------
- Feature: [NewGRF] Textstack support for CB 38 (r20086)
- Feature: [NewGRF] Add a railtype flag to disallow level crossings per railtype (r20049)
- Change: Improve desync debugging, crash log data and the Debian packaging (by making a debug symbols package) (r20138, r20136, r20129)
- Fix: Do not scan /data and ~/data (if they happen to be your working directory). If it is the directory where your binary is located it will still scan them [FS#3949] (r20166)
- Fix: Integer comparison failed in case the difference was more than 'MAX_UINT'/2 [FS#3954] (r20162)
- Fix: [YAPP] Converting a one-way block to a path signal with trains on both sides could lead to a train crash [FS#3937] (r20156)
- Fix: [NewGRF] Improve handling of snowing of railtypes and (infra)structures on foundations [FS#3883] (r20153, r20132, r20126, r20125)
- Fix: Ships were not marked as dirty when stopping inside a depot [FS#3880] (r20142)
- Fix: Some windows ignored all hotkeys [FS#3902] (r20141, r20140, r20139)
- Fix: Do not allow building a rail track to the water using a tree-tile [FS#3695] (r20110)
- Fix: [NoAI] AITown::GetRating() returned wrong values [FS#3934] (r20103)
- Fix: Reading deleted memory when selecting a NewGRF in the content download window of which the data has not been acquired from the content server. The crash would occur after the content server's reply was processed and the ContentInfo object was replaced with another [FS#3899] (r20089, r20082)
- Fix: If after loading a savegame (including intro game) one tried to save a game (including autosave) and that failed (very) early on because it could not open the file for writing all pointers would be converted to NULLs which then causes corrupted game states [FS#3786, FS#3887, FS#3920, FS#3923] (r20087)
- Fix: gitignore and hgignore had more missing/wrong entries (r20078, r20033, r20031)
- Fix: Remove the space between 'open' and 'ttd' in the title screen (r20077)
- Fix: Road vehicles could get crashed twice in a tick [FS#3896] (r20053, r20034)
- Fix: Coloured_news_year was stored in savegames while it should be a client setting [FS#3916] (r20051)
- Fix: Crash when spectator tried to open a vehicle list without selecting any company [FS#3892] (r20041)
- Fix: Instead of loading the intro game when loading a savegame fails on the dedicated server, generate a new game [FS#3907] (r20039)
- Fix: Tram tracks did not show at level crossing with the new railtypes [FS#3911] (r20036)
- Fix: Under some circumstances you could get into an infinite loop [CVE-2010-2534] [FS#3909] (r20035)
- Fix: The 64 bits TortoiseSVN was not always properly detected (r20029)
- Fix: Do not close the sort dropdown in the (original) vehicle list when there are no vehicles. That code is meant for the 'actions' dropdown [FS#3881] (r20014)
- Fix: When joining a company with a password you could only enter 20 characters of the password (r20012)
- Fix: Sign sorting was unstable [FS#3893] (r20009)
- Fix: Trains should also have running cost while slowing down for stop (r20006)
- Fix: [NewGRF] Stringcodes 82, 83 and 84 were not properly converted to openttd codes so they did not work (r20004)
- Fix: Clear force_proceed when entering depots and when loading, resetting of force_proceed on manual stopping did not work [FS#3878] (r19992)
- Fix: Do not show an error message when trying to start/stop a crashed plane [FS#3874] (r19953)
- Fix: Allow turning of roadvehicles while waiting in a queue (r19945)
- Fix: Disallow moving of vehicle news window [FS#3865] (r19943)
- Fix: Under some (unlucky) circumstances the wrong company would be 'current company' when changing company colour or orders [FS#3903]
1.0.2 (2010-06-19)
------------------------------------------------------------------------
- Fix: Owner of the Waypoint View window was not properly set (r19990)
- Fix: Close list of vehicles with given oil rig in orders when the oil rig is deleted (r19956)
- Fix: Close list of vehicles with given buoy/oil rig in orders when switching company (r19955)
- Fix: Do not close list of waypoint's trains when the waypoint view is closed when it is sticky (r19952)
- Fix: Close buoy's vehicle list when the buoy is deleted [FS#3869] (r19951)
1.0.2-RC1 (2010-06-05)
------------------------------------------------------------------------
- Feature: Translated desktop shortcut comments (r19884)
- Fix: When 'pause on new game' is set, pause the game before CleanupGeneration() to avoid conflicts with concurrent GUI code [FS#3857] (r19934)
- Fix: Pay for the rail/road when constructing tunnels, bridges, depots and stations [FS#3859, FS#3827] (r19925, r19887, r19881)
- Fix: Closing chatbox could cause glitches when news message was shown [FS#3865] (r19921)
- Fix: [YAPP] Inform the pathfinder as well about the fact that the backside of an one-way path signal can be a safe waiting point [FS#3803] (r19896)
- Fix: Allow loading savegames from the console without specifying the '.sav' extension, i.e. make it consistent with saving savegames from the console [FS#3761] (r19885)
- Fix: Dropdowns did affect positioning of new windows because they were not yet removed when the new windows were positioned [FS#3812] (r19883)
- Fix: [NoAI] AIEngine::IsValidEngine() and AIEngine::IsBuildable() returned false positives. Especially wagons of unavailable railtypes were reported available (r19880)
- Fix: Default vehicle group texts were drawn one pixel too low [FS#3851] (r19878)
- Fix: It was not possible to send all trains with common waypoint order to depot (r19876)
- Fix: Compilation for NetBSD [FS#3809, FS#3840, FS#3845] (r19874, r19859, r19853, r19781)
- Fix: If the (guessed initial) destination tile of a road vehicle was not a road stop but was a T-junction or turn, the road vehicles would jump around in circles [FS#3817] (r19873)
- Fix: When a network connection gets lost and a game with AIs was loaded the client might crash due to the AIs not being loaded while the game loop is executed [FS#3819] (r19869)
- Fix: Use non-breaking spaces for currency pre-/postfixes (r19867)
- Fix: Crash when changing/viewing locale settings in the console [FS#3830] (r19865, r19864, r19863, r19862)
- Fix: Drawing fallback sprites for unavailable NewGRF waypoints failed (r19852)
- Fix: Ensure that both texts of the NewGRF gui download button fit (r19823)
- Fix: Kicking clients by IP did not work [FS#3784] (r19818)
- Fix: Compilation with MinGW GCC 4.5.0 and UNICODE (r19787)
- Fix: If a waypoint is immediately followed by a path signal a reservation would be made from that path signal before the waypoint is marked passed. As a result the order to go to the waypoint is used to reserve the path after the waypoint and as such trains get lost [FS#3770] (r19784)
- Fix: NULL pointer deference when testing relative scope *action2 on an unbuilt engine [FS#3828] (r19782)
- Fix: Crash on too long paths [FS#3807] (r19780, r19779, r19778, r19777, r19776)
- Fix: MP_VOID tiles shall have no tropic zone [FS#3820] (r19769)
- Fix: Half-desert tiles would never revert back to clear tiles (r19768)
- Fix: Height in smallmap was different from measured heights [FS#3808] (r19767)
- Fix: [NewGRF] Vehicle var 43 missed AI information in purchase list (r19761)
- Fix: Blocked roadvehicles should first check whether they are still blocked before accelerating again, instead of continuous starting/stopping (r19755)
- Fix: Try harder to find a suitable font that can be loaded, i.e. while searching for a suitable font test whether you can open it [FS#3740] (r19753)
- Fix: Make sure the chat area fits in the default window size; if you want it larger, you can always change/override it in the config file [FS#3798] (r19751)
- Fix: [NewGRF] Industry var 0x43 is not 'safe' during callbacks 22 and 38 either (r19750)
- Fix: [NewGRF] Possible divide-by-zero if a NewGRF checked industry var 42 while the production level was 0 (r19749)
- Fix: Do not recenter usually centered windows when resizing main window or changing language, if they have been moved/resized before [FS#3675] (r19746)
- Fix: The GUI is controlled by _local_company, not _current_company (r19745)
- Fix: NewGRFs could access map bits of not yet constructed industries and houses during construction callbacks (r19748, r19743)
- Fix: [NewGRF] Passing some invalid data to industry variable 67/68 could cause a crash (r19713)
- Fix: Check for industry availability more thoroughly and cancel object placement when selecting not available industries [FS#3787] (r19701)
- Fix: Avoid showing building toolbars behind the main toolbar when the 'Link landscape toolbar' setting is active [FS#3781] (r19696)
- Fix: Under some circumstances the player's name could be empty (r19693)
- Fix: Do not show an error message when trying to give another client an amount of 0 money [FS#3779] (r19684)
- Fix: Do not display an error message when double clicking on a vehicle in the 'available vehicles'-window (r19669)
- Change: Name invalid engines, cargos and industries 'invalid', if the player removed the supplying NewGRFs, hide invalid engines from the purchase list (r19879, r19877)
1.0.1 (2010-05-01)
------------------------------------------------------------------------
- Fix: Crash when using restart via rcon (r19722)
@@ -86,7 +246,7 @@
- Fix: [NoAI] The AI Debug window did not open if an AI or library fails to compile when loading a savegame [FS#3669] (r19395)
- Fix: One could not level the whole map anymore at once (r19392)
- Fix: Only show the 'No AIs available' error message when explicitly changing the number of AI opponents [FS3676] (r19389)
- Fix: [NoAI] When reloading a savegame, an AI failing to compile could trigger (trying) to read the not yet loaded information of another AI via the AI Debug window and its "open with the most recently used AI" feature [FS#3666] (r19388)
- Fix: [NoAI] When reloading a savegame, an AI failing to compile could trigger (trying) to read the not yet loaded information of another AI via the AI Debug window and its 'open with the most recently used AI' feature [FS#3666] (r19388)
- Fix: Close all orders windows when switching companies [FS#3671] (r19387)
- Fix: [IPv6] Netmask calculations were wrong if cidr >= 32 [FS#3684] (r19385)
- Fix: Overbuilding bridges, rail stations did not properly update PBS reservation [FS#3680] (r19384, r19383)
@@ -155,7 +315,7 @@
- Fix: Crash when a baseset has an empty metadata field (r19095)
- Fix: Possible read/write after free when the client triggered the server to close the connection [FS#3599] (r19072)
- Fix: Remove Bidi control characters from the reordered text so they are not drawn [FS#3604] (r19067)
- Fix: [NewGRF] Settings that are part of the "TTPatch flags" can cause desyncs if they are changed in network games (r19066)
- Fix: [NewGRF] Settings that are part of the 'TTDPatch flags' can cause desyncs if they are changed in network games (r19066)
- Fix: When banning yourself via rcon do not send the 'command response' to the client as the connection has already been terminated [FS#3598] (r19054)
- Fix: Mass stopping/starting/autoreplacing gave empty errors when there were no vehicles [FS#3577] (r19024)
- Fix: City airport introduction date had become 5 years later (r19023)
@@ -412,7 +572,7 @@
- Fix: Some inconsistencies with the difficulty settings in the scenario editor. Also re-enable changing some difficulty settings (e.g. max loan) in the scenario editor [FS#3219] (r17644)
- Fix: Do not accept cargo produced in the same industry; generalise and improve the check used only for valuables (r17437)
- Fix: Pay only for cargo actually delivered, not for all cargo unloaded at station; can differ with 'stockpiling' industries (r17436)
- Fix: Improve movement of aircraft; do not make turns bigger then 45 degrees while in flight, do not move while turning on the ground (r17415, r17405)
- Fix: Improve movement of aircraft; do not make turns bigger than 45 degrees while in flight, do not move while turning on the ground (r17415, r17405)
- Fix: Crash in order GUI when changing some orders with both the mouse and keyboard at the exact same time [FS#2859] (r17384)
- Fix: Trains would not show smoke if the load/unload counter was not 0, though there does not seem to be a reason to check that variable anyhow anymore [FS#3162] (r17352)
- Fix: One was not offered to take over bankrupt companies anymore; caused by the introduction NoAI, although NewAI had the same problem too [FS#2769] (r17345)
@@ -1602,7 +1762,7 @@
- Codechange: Add new vehicle hash table for collision detection and finding vehicles on a tile. The hash area scanned is far smaller than the old hash table, which is now used for viewport updates only. This should give a significant performance improvement for games with many vehicles (r10111)
- Codechange: Do not redraw all station tiles when cargo is added or removed if the station has no custom graphics (r10062)
- Codechange: Add some support for NewGRF var 7D, temporary storage array (r9707)
- Codechange: Add support for returning 'ttdpatch variables' (Action D) (r9701)
- Codechange: Add support for returning 'TTDPatch variables' (Action D) (r9701)
- Codechange: Implement NewGRF callback 36, which allows changing of various properties which were previously static (r9671 and several others)
- Codechange: Add support for multiple 'base' directories for NewGRF searching (r9560)
- Codechange: Implement actions 1/2/3 for cargoes, callback handler and custom icon sprites (rmany)
@@ -2372,7 +2532,7 @@
- Fix: Incorrect validating of tree-planting command which can allow a buffer-overflow (r3446)
- Fix: [NewGRF] When changing the sprite ID of a vehicle, if it is not FD (custom graphics), the value needs to changed from a 16bit array offset to an array index. (fixes tropicstw.grf) (r3449)
- Fix: You could not remove an item from a list-type of config ingame from the configuration file (r3475)
- Fix: [NewGRF] Always reinitialize the ttdpatch flags as patch settings may have changed (r3486)
- Fix: [NewGRF] Always reinitialize the TTDPatch flags as patch settings may have changed (r3486)
- Fix: Price for demolishing a bridge was dependent on orientation and map size (r3487)
@@ -2565,7 +2725,7 @@
- Fix: [Network] 'kick 1' did crash dedicated servers
- Fix: [Network] A server no longer crashes when a client sends an invalid DoCommand, but drops the client instead
- Fix: [Network] Added packet protection. No longer a client or server
- Fix: [Network] Bug in bind system. Advertising failed on systems with more then 1 ip, and server_bind active to one of them
- Fix: [Network] Bug in bind system. Advertising failed on systems with more than 1 ip, and server_bind active to one of them
- Fix: [Network] Disabled 'money-cheat' (read: bug which could give people a lot of money)
- Fix: [SDL] Now the binary never links to SDL if DEDICATED is set
- Fix: [Windows] Somehow mousewheel was disabled on windows using SDL; reenabled again

View File

@@ -11,7 +11,7 @@ log() {
}
set_default() {
released_version="1.0.1"
released_version="1.0.4"
ignore_extra_parameters="0"
# We set all kinds of defaults for params. Later on the user can override
@@ -2304,6 +2304,20 @@ detect_library() {
if [ -z "$res" ]; then
log 2 " trying /usr/local/include/$4$5... no"
fi
if [ -z "$res" ] && [ "$os" = "NETBSD" ]; then
eval "$2=`ls -1 /usr/pkg/include/$4*.h 2>/dev/null | egrep \"\/$5\$\"`"
eval "res=\$$2"
if [ -z "$res" ]; then
log 2 " trying /usr/pkg/include/$4$5... no"
fi
fi
if [ -z "$res" ] && [ "$os" = "HAIKU" ]; then
eval "$2=`ls -1 /boot/common/include/$4*.h 2>/dev/null | egrep \"\/$5\$\"`"
eval "res=\$$2"
if [ -z "$res" ]; then
log 2 " trying /boot/common/include/$4$5... no"
fi
fi
eval "res=\$$2"
if [ -n "$res" ] && ( [ -n "$force_static" ] || ( [ "$enable_static" != "0" ] && [ "$os" != "OSX" ] ) ); then
@@ -2866,6 +2880,7 @@ make_sed() {
s@!!SOURCE_LIST!!@$SOURCE_LIST@g;
s@!!SRC_OBJS_DIR!!@$SRC_OBJS_DIR@g;
s@!!LANG_OBJS_DIR!!@$LANG_OBJS_DIR@g;
s@!!GRF_OBJS_DIR!!@$GRF_OBJS_DIR@g;
s@!!SRC_DIR!!@$SRC_DIR@g;
s@!!SCRIPT_SRC_DIR!!@$SCRIPT_SRC_DIR@g;
s@!!OSXAPP!!@$OSXAPP@g;
@@ -2991,6 +3006,20 @@ generate_lang() {
echo "LANG_DIRS += $LANG_OBJS_DIR" >> Makefile.am
}
generate_grf() {
STAGE="[GRF]"
make_sed
# Create the language file
mkdir -p $GRF_OBJS_DIR
log 1 "Generating grf/Makefile..."
echo "# Auto-generated file from 'Makefile.grf.in' -- DO NOT EDIT" > $GRF_OBJS_DIR/Makefile
< $ROOT_DIR/Makefile.grf.in sed "$SRC_REPLACE" >> $GRF_OBJS_DIR/Makefile
echo "DIRS += $GRF_OBJS_DIR" >> Makefile.am
}
generate_src_normal() {
STAGE=$1
@@ -3155,7 +3184,7 @@ showhelp() {
echo " --with-midi-arg=arg define which args to use for the"
echo " midi-player"
echo " --with-libtimidity enables libtimidity support"
echo " --with-allegrol[=allegro-config]"
echo " --with-allegro[=allegro-config]"
echo " enables Allegro video driver support"
echo " --with-cocoa enables COCOA video driver (OSX ONLY)"
echo " --with-sdl[=sdl-config] enables SDL video driver support"

4
configure vendored
View File

@@ -47,6 +47,7 @@ PREFIX="$PWD/bin"
OBJS_DIR="$PWD/objs"
BASE_SRC_OBJS_DIR="$OBJS_DIR"
LANG_OBJS_DIR="$OBJS_DIR/lang"
GRF_OBJS_DIR="$OBJS_DIR/extra_grf"
BIN_DIR="$PREFIX"
SRC_DIR="$ROOT_DIR/src"
LANG_DIR="$SRC_DIR/lang"
@@ -160,10 +161,11 @@ else
sort="$sort -u"
fi
CONFIGURE_FILES="$ROOT_DIR/configure $ROOT_DIR/config.lib $ROOT_DIR/Makefile.in $ROOT_DIR/Makefile.lang.in $ROOT_DIR/Makefile.src.in $ROOT_DIR/Makefile.bundle.in"
CONFIGURE_FILES="$ROOT_DIR/configure $ROOT_DIR/config.lib $ROOT_DIR/Makefile.in $ROOT_DIR/Makefile.grf.in $ROOT_DIR/Makefile.lang.in $ROOT_DIR/Makefile.src.in $ROOT_DIR/Makefile.bundle.in"
generate_main
generate_lang
generate_grf
generate_src
check_path_characters

View File

@@ -23,7 +23,7 @@ Multiplayer Manual for OpenTTD (0.3.5)
- If you want to see which servers all online on the Internet, click on 'Internet'
and 'Find Server'
- If there were more then one server
- If there were more than one server
- select one in the list below the buttons
- click on 'join game'

260
docs/palettes/openttd.gpl Normal file
View File

@@ -0,0 +1,260 @@
GIMP Palette
Name: openttd
Columns: 16
#
0 0 255 unnamed
238 0 238 unnamed
239 0 239 unnamed
240 0 240 unnamed
241 0 241 unnamed
242 0 242 unnamed
243 0 243 unnamed
244 0 244 unnamed
245 0 245 unnamed
246 0 246 unnamed
168 168 168 unnamed
184 184 184 unnamed
200 200 200 unnamed
216 216 216 unnamed
232 232 232 unnamed
252 252 252 unnamed
52 60 72 unnamed
68 76 92 unnamed
88 96 112 unnamed
108 116 132 unnamed
132 140 152 unnamed
156 160 172 unnamed
176 184 196 unnamed
204 208 220 unnamed
48 44 4 unnamed
64 60 12 unnamed
80 76 20 unnamed
96 92 28 unnamed
120 120 64 unnamed
148 148 100 unnamed
176 176 132 unnamed
204 204 168 unnamed
100 100 100 unnamed
116 116 116 unnamed
104 80 44 unnamed
124 104 72 unnamed
152 132 92 unnamed
184 160 120 unnamed
212 188 148 unnamed
244 220 176 unnamed
132 132 132 unnamed
88 4 16 unnamed
112 16 32 unnamed
136 32 52 unnamed
160 56 76 unnamed
188 84 108 unnamed
204 104 124 unnamed
220 132 144 unnamed
236 156 164 unnamed
252 188 192 unnamed
252 208 0 unnamed
252 232 60 unnamed
252 252 128 unnamed
76 40 0 unnamed
96 60 8 unnamed
116 88 28 unnamed
136 116 56 unnamed
156 136 80 unnamed
176 156 108 unnamed
196 180 136 unnamed
68 24 0 unnamed
96 44 4 unnamed
128 68 8 unnamed
156 96 16 unnamed
184 120 24 unnamed
212 156 32 unnamed
232 184 16 unnamed
252 212 0 unnamed
252 248 128 unnamed
252 252 192 unnamed
32 4 0 unnamed
64 20 8 unnamed
84 28 16 unnamed
108 44 28 unnamed
128 56 40 unnamed
148 72 56 unnamed
168 92 76 unnamed
184 108 88 unnamed
196 128 108 unnamed
212 148 128 unnamed
8 52 0 unnamed
16 64 0 unnamed
32 80 4 unnamed
48 96 4 unnamed
64 112 12 unnamed
84 132 20 unnamed
104 148 28 unnamed
128 168 44 unnamed
64 64 64 unnamed
44 68 32 unnamed
60 88 48 unnamed
80 104 60 unnamed
104 124 76 unnamed
128 148 92 unnamed
152 176 108 unnamed
180 204 124 unnamed
16 52 24 unnamed
32 72 44 unnamed
56 96 72 unnamed
76 116 88 unnamed
96 136 108 unnamed
120 164 136 unnamed
152 192 168 unnamed
184 220 200 unnamed
32 24 0 unnamed
56 28 0 unnamed
80 80 80 unnamed
88 52 12 unnamed
104 64 24 unnamed
124 84 44 unnamed
140 108 64 unnamed
160 128 88 unnamed
76 40 16 unnamed
96 52 24 unnamed
116 68 40 unnamed
136 84 56 unnamed
164 96 64 unnamed
184 112 80 unnamed
204 128 96 unnamed
212 148 112 unnamed
224 168 128 unnamed
236 188 148 unnamed
80 28 4 unnamed
100 40 20 unnamed
120 56 40 unnamed
140 76 64 unnamed
160 100 96 unnamed
184 136 136 unnamed
36 40 68 unnamed
48 52 84 unnamed
64 64 100 unnamed
80 80 116 unnamed
100 100 136 unnamed
132 132 164 unnamed
172 172 192 unnamed
212 212 224 unnamed
48 48 48 unnamed
64 44 144 unnamed
88 64 172 unnamed
104 76 196 unnamed
120 88 224 unnamed
140 104 252 unnamed
160 136 252 unnamed
188 168 252 unnamed
0 24 108 unnamed
0 36 132 unnamed
0 52 160 unnamed
0 72 184 unnamed
0 96 212 unnamed
24 120 220 unnamed
56 144 232 unnamed
88 168 240 unnamed
128 196 252 unnamed
188 224 252 unnamed
16 64 96 unnamed
24 80 108 unnamed
40 96 120 unnamed
52 112 132 unnamed
80 140 160 unnamed
116 172 192 unnamed
156 204 220 unnamed
204 240 252 unnamed
172 52 52 unnamed
212 52 52 unnamed
252 52 52 unnamed
252 100 88 unnamed
252 144 124 unnamed
252 184 160 unnamed
252 216 200 unnamed
252 244 236 unnamed
72 20 112 unnamed
92 44 140 unnamed
112 68 168 unnamed
140 100 196 unnamed
168 136 224 unnamed
200 176 248 unnamed
208 184 255 unnamed
232 208 252 unnamed
60 0 0 unnamed
92 0 0 unnamed
128 0 0 unnamed
160 0 0 unnamed
196 0 0 unnamed
224 0 0 unnamed
252 0 0 unnamed
252 80 0 unnamed
252 108 0 unnamed
252 136 0 unnamed
252 164 0 unnamed
252 192 0 unnamed
252 220 0 unnamed
252 252 0 unnamed
204 136 8 unnamed
228 144 4 unnamed
252 156 0 unnamed
252 176 48 unnamed
252 196 100 unnamed
252 216 152 unnamed
8 24 88 unnamed
12 36 104 unnamed
20 52 124 unnamed
28 68 140 unnamed
40 92 164 unnamed
56 120 188 unnamed
72 152 216 unnamed
100 172 224 unnamed
92 156 52 unnamed
108 176 64 unnamed
124 200 76 unnamed
144 224 92 unnamed
224 244 252 unnamed
200 236 248 unnamed
180 220 236 unnamed
132 188 216 unnamed
88 152 172 unnamed
16 16 16 unnamed
32 32 32 unnamed
32 68 112 unnamed
36 72 116 unnamed
40 76 120 unnamed
44 80 124 unnamed
48 84 128 unnamed
72 100 144 unnamed
100 132 168 unnamed
216 244 252 unnamed
96 128 164 unnamed
68 96 140 unnamed
76 24 8 unnamed
108 44 24 unnamed
144 72 52 unnamed
176 108 84 unnamed
210 146 126 unnamed
252 60 0 unnamed
252 84 0 unnamed
252 104 0 unnamed
252 124 0 unnamed
252 148 0 unnamed
252 172 0 unnamed
252 196 0 unnamed
64 0 0 unnamed
255 0 0 unnamed
48 48 0 unnamed
64 64 0 unnamed
80 80 0 unnamed
255 255 0 unnamed
148 148 148 unnamed
247 0 247 unnamed
248 0 248 unnamed
249 0 249 unnamed
250 0 250 unnamed
251 0 251 unnamed
252 0 252 unnamed
253 0 253 unnamed
254 0 254 unnamed
255 0 255 unnamed
255 255 255 unnamed

BIN
docs/palettes/palette.act Normal file

Binary file not shown.

View File

@@ -1,6 +1,6 @@
OpenTTD's known bugs
Last updated: 2010-05-01
Release version: 1.0.1
Last updated: 2010-09-14
Release version: 1.0.4
------------------------------------------------------------------------
@@ -34,8 +34,18 @@ that you can find at: http://bugs.openttd.org
If the bugs are closed but still listed here it means that the bug is fixed
and that the nightlies and next major release will not have that bug.
Issues prefixed with [OSX] are required to be fixed before we consider
officially supporting Mac OS X again. For now it remains unsupported and
we only apply bug fixes provided by the community but we are unable to fix
these bugs ourselves.
- 4003 [OSX] Running OpenTTD Parallels causes privileged instructions
- 4001 [OSX] SETX[Y] not ignored in SetFallbackFont
- 3952 Console command rescan_ai does not remove AIs
- 3935 Under some circumstances two road vehicles can leave road stop simultaniously
- 3816 Console text does not always fit at 640x480
- 3746 Console output with right-to-left texts in left-to-right texts is not correct
- 3714 Some corrupted savegames can cause crashes
- 3695 Behaviour inconsistency building railway/road down towards water
- 3651 [OSX] Crash when selecting full screen
- 3648 [OSX] Crash when selecting music
- 3637 Second highest competing station gets penalised twice
@@ -64,6 +74,38 @@ No suitable AI can be found
"AI Settings" -> "Select AI" -> "Check Online Content" which is also
accessed via the main menu.
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.
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.
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".
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.
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
@@ -82,6 +124,14 @@ Clipping problems [FS#119]
leave the Transport Tycoon graphics, which in effect means OpenTTD
will not be a Transport Tycoon clone anymore.
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.
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
@@ -175,3 +225,39 @@ OpenTTD not properly resizing with SDL on X [FS#3305]
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.
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.
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.
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.
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 do not use the "win32" music driver as default are
described in the "Long delay between switching music/song" section
of this document.

2314
media/extra_grf/2ccmapd.nfo Normal file

File diff suppressed because it is too large Load Diff

2314
media/extra_grf/2ccmapw.nfo Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,25 @@
//
// $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 airport graphics"
-1 * 0 05 10 0F
-1 sprites/airports.pcx 18 8 09 31 64 -31 0
-1 sprites/airports.pcx 98 8 09 31 64 -31 0
-1 sprites/airports.pcx 178 8 09 31 64 -31 0
-1 sprites/airports.pcx 258 8 09 31 64 -31 0
-1 sprites/airports.pcx 338 8 09 31 64 -31 0
-1 sprites/airports.pcx 418 8 09 31 64 -31 0
-1 sprites/airports.pcx 498 8 09 55 64 -2 -38
-1 sprites/airports.pcx 578 8 09 17 18 16 -1
-1 sprites/airports.pcx 610 8 09 55 64 -2 -38
-1 sprites/airports.pcx 690 8 09 17 18 -30 1
-1 sprites/airports.pcx 722 8 09 55 64 -2 -38
-1 sprites/airports.pcx 2 88 09 55 64 -2 -38
-1 sprites/airports.pcx 82 88 09 31 64 -31 0
-1 sprites/airports.pcx 162 88 09 31 64 -31 0
-1 sprites/airports.pcx 242 88 09 31 64 -31 0

Binary file not shown.

View File

@@ -0,0 +1,18 @@
//
// $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 "Aqueduct graphics by Jonathan G. Rennison"
-1 * 3 05 12 08
-1 sprites/aqueduct.pcx 34 8 09 33 64 -34 -10
-1 sprites/aqueduct.pcx 114 8 09 33 66 -37 -9
-1 sprites/aqueduct.pcx 194 8 09 33 64 -34 -10
-1 sprites/aqueduct.pcx 274 8 09 33 66 -37 -9
-1 sprites/aqueduct.pcx 354 8 09 33 64 -34 -5
-1 sprites/aqueduct.pcx 434 8 09 33 66 -37 -4
-1 sprites/aqueduct.pcx 514 8 09 23 33 -31 0
-1 sprites/aqueduct.pcx 562 8 09 23 33 0 1

Binary file not shown.

View File

@@ -0,0 +1,65 @@
//
// $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 "Autorail graphics"
-1 * 0 05 13 37
-1 sprites/autorail.pcx 18 8 09 31 64 -31 7
-1 sprites/autorail.pcx 98 8 09 31 64 -31 -1
-1 sprites/autorail.pcx 178 8 09 39 64 -31 -1
-1 sprites/autorail.pcx 258 8 09 47 64 -31 -9
-1 sprites/autorail.pcx 338 8 09 31 64 -31 -5
-1 sprites/autorail.pcx 418 8 09 23 64 -31 7
-1 sprites/autorail.pcx 498 8 09 18 64 -31 4
-1 sprites/autorail.pcx 578 8 09 31 64 -31 -1
-1 sprites/autorail.pcx 658 8 09 31 64 -31 7
-1 sprites/autorail.pcx 2 72 09 31 64 -31 -1
-1 sprites/autorail.pcx 82 72 09 23 64 -31 7
-1 sprites/autorail.pcx 162 72 09 18 64 -31 4
-1 sprites/autorail.pcx 242 72 09 31 64 -31 -1
-1 sprites/autorail.pcx 322 72 09 39 64 -31 -1
-1 sprites/autorail.pcx 402 72 09 47 64 -31 -9
-1 sprites/autorail.pcx 482 72 09 31 64 -31 -5
-1 sprites/autorail.pcx 562 72 09 31 64 -31 7
-1 sprites/autorail.pcx 642 72 09 31 64 -31 -1
-1 sprites/autorail.pcx 722 72 09 47 64 -31 -9
-1 sprites/autorail.pcx 2 136 09 26 64 -31 4
-1 sprites/autorail.pcx 82 136 09 23 64 -31 4
-1 sprites/autorail.pcx 162 136 09 31 64 -31 -3
-1 sprites/autorail.pcx 242 136 09 26 64 -31 4
-1 sprites/autorail.pcx 322 136 09 23 64 -31 4
-1 sprites/autorail.pcx 402 136 09 31 64 -31 -3
-1 sprites/autorail.pcx 482 136 09 31 64 -31 7
-1 sprites/autorail.pcx 562 136 09 31 64 -31 -1
-1 sprites/autorail.pcx 642 136 09 15 64 -31 7
-1 sprites/autorail.pcx 722 136 09 31 64 -31 7
-1 sprites/autorail.pcx 2 184 09 39 64 -31 -1
-1 sprites/autorail.pcx 82 184 09 31 64 -31 -1
-1 sprites/autorail.pcx 162 184 09 31 64 -31 7
-1 sprites/autorail.pcx 242 184 09 39 64 -31 -1
-1 sprites/autorail.pcx 322 184 09 31 64 -31 -1
-1 sprites/autorail.pcx 402 184 09 31 64 -31 7
-1 sprites/autorail.pcx 482 184 09 31 64 -31 -1
-1 sprites/autorail.pcx 562 184 09 31 64 -31 -1
-1 sprites/autorail.pcx 642 184 09 31 64 -31 -1
-1 sprites/autorail.pcx 722 184 09 23 64 -31 7
-1 sprites/autorail.pcx 2 248 09 15 64 -31 7
-1 sprites/autorail.pcx 82 248 09 39 64 -31 -1
-1 sprites/autorail.pcx 162 248 09 47 64 -31 -9
-1 sprites/autorail.pcx 242 248 09 31 64 -31 7
-1 sprites/autorail.pcx 322 248 09 31 64 -31 -1
-1 sprites/autorail.pcx 402 248 09 31 64 -31 -1
-1 sprites/autorail.pcx 482 248 09 31 64 -31 -1
-1 sprites/autorail.pcx 562 248 09 23 64 -31 7
-1 sprites/autorail.pcx 642 248 09 15 64 -31 7
-1 sprites/autorail.pcx 722 248 09 39 64 -31 -1
-1 sprites/autorail.pcx 2 312 09 47 64 -31 -9
-1 sprites/autorail.pcx 82 312 09 31 64 -31 -1
-1 sprites/autorail.pcx 162 312 09 31 64 -31 -1
-1 sprites/autorail.pcx 242 312 09 23 64 -31 7
-1 sprites/autorail.pcx 322 312 09 31 64 -31 7
-1 sprites/autorail.pcx 402 312 09 31 64 -31 7

Binary file not shown.

View File

@@ -0,0 +1,75 @@
//
// $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 "Canal graphics by George"
-1 * 0 05 08 41
-1 sprites/canals.pcx 98 8 09 23 64 -31 0
-1 sprites/canals.pcx 178 8 09 39 64 -31 -8
-1 sprites/canals.pcx 258 8 09 23 64 -31 0
-1 sprites/canals.pcx 338 8 09 39 64 -31 -8
-1 sprites/canals.pcx 418 8 09 59 64 -31 -36
-1 sprites/canals.pcx 498 8 09 65 64 -31 -34
-1 sprites/canals.pcx 578 8 09 59 64 -31 -36
-1 sprites/canals.pcx 658 8 09 59 64 -31 -28
-1 sprites/canals.pcx 2 88 09 62 64 -1 -51
-1 sprites/canals.pcx 82 88 09 62 64 -61 -43
-1 sprites/canals.pcx 162 88 09 62 64 -61 -51
-1 sprites/canals.pcx 242 88 09 62 64 -1 -43
-1 sprites/canals.pcx 322 88 09 59 64 -31 -28
-1 sprites/canals.pcx 402 88 09 65 66 -33 -34
-1 sprites/canals.pcx 482 88 09 59 64 -31 -28
-1 sprites/canals.pcx 562 88 09 59 64 -31 -28
-1 sprites/canals.pcx 642 88 09 62 64 -1 -43
-1 sprites/canals.pcx 722 88 09 60 64 -61 -43
-1 sprites/canals.pcx 2 168 09 62 66 -61 -43
-1 sprites/canals.pcx 82 168 09 60 64 -1 -43
-1 sprites/canals.pcx 162 168 09 59 64 -31 -28
-1 sprites/canals.pcx 242 168 09 59 64 -31 -28
-1 sprites/canals.pcx 322 168 09 59 64 -31 -28
-1 sprites/canals.pcx 402 168 09 59 64 -31 -28
-1 sprites/canals.pcx 482 168 09 60 64 -1 -43
-1 sprites/canals.pcx 562 168 09 62 68 -61 -43
-1 sprites/canals.pcx 642 168 09 60 64 -61 -43
-1 sprites/canals.pcx 722 168 09 62 64 -1 -43
-1 sprites/canals.pcx 2 248 09 59 64 -31 -36
-1 sprites/canals.pcx 82 248 09 65 64 -31 -34
-1 sprites/canals.pcx 162 248 09 59 64 -31 -36
-1 sprites/canals.pcx 242 248 09 59 64 -31 -28
-1 sprites/canals.pcx 322 248 09 62 64 -1 -51
-1 sprites/canals.pcx 402 248 09 62 64 -61 -43
-1 sprites/canals.pcx 482 248 09 62 64 -61 -51
-1 sprites/canals.pcx 562 248 09 62 64 -1 -43
-1 sprites/canals.pcx 642 248 09 59 64 -31 -28
-1 sprites/canals.pcx 722 248 09 65 66 -33 -34
-1 sprites/canals.pcx 2 328 09 59 64 -31 -28
-1 sprites/canals.pcx 82 328 09 59 64 -31 -28
-1 sprites/canals.pcx 162 328 09 62 64 -1 -43
-1 sprites/canals.pcx 242 328 09 60 64 -61 -43
-1 sprites/canals.pcx 322 328 09 62 66 -61 -43
-1 sprites/canals.pcx 402 328 09 60 64 -1 -43
-1 sprites/canals.pcx 482 328 09 59 64 -31 -28
-1 sprites/canals.pcx 562 328 09 59 64 -31 -28
-1 sprites/canals.pcx 642 328 09 59 64 -31 -28
-1 sprites/canals.pcx 722 328 09 59 64 -31 -28
-1 sprites/canals.pcx 2 408 09 60 64 -1 -43
-1 sprites/canals.pcx 82 408 09 62 68 -61 -43
-1 sprites/canals.pcx 162 408 09 60 64 -61 -43
-1 sprites/canals.pcx 242 408 09 62 64 -1 -43
-1 sprites/canals.pcx 322 408 09 37 70 -31 -6
-1 sprites/canals.pcx 402 408 09 37 70 -31 0
-1 sprites/canals.pcx 482 408 09 37 70 -37 0
-1 sprites/canals.pcx 562 408 09 37 70 -37 -6
-1 sprites/canals.pcx 642 408 09 31 64 -31 0
-1 sprites/canals.pcx 722 408 09 31 64 -31 0
-1 sprites/canals.pcx 2 488 09 31 64 -31 0
-1 sprites/canals.pcx 82 488 09 37 64 -31 -6
-1 sprites/canals.pcx 162 488 09 31 64 -31 0
-1 sprites/canals.pcx 242 488 09 31 64 -31 0
-1 sprites/canals.pcx 322 488 09 31 64 -31 0
-1 sprites/canals.pcx 402 488 09 37 64 -31 -6
-1 sprites/canals.pcx 482 488 09 20 20 0 0

BIN
media/extra_grf/canals.pcx Normal file

Binary file not shown.

630
media/extra_grf/chars.nfo Normal file
View File

@@ -0,0 +1,630 @@
//
// $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 "Characters, graphics by Bilbo and Jasper Vries"
//U+20AC Euro-sign
-1 * 0 12 03 00 01 AC 20 01 01 AC 20 02 01 AC 20
-1 sprites/chars.pcx 30 10 01 13 8 0 -2
-1 sprites/chars.pcx 30 30 01 6 5 0 0
-1 sprites/chars.pcx 30 40 01 21 15 0 -2
//U+0152 Latin Capital Ligature OE
//U+0153 Latin Small Ligature OE
-1 * 0 12 03 00 02 52 01 01 02 52 01 02 02 52 01
-1 sprites/chars.pcx 50 10 01 13 12 0 -2
-1 sprites/chars.pcx 300 10 01 13 9 0 -2
-1 sprites/chars.pcx 50 30 01 5 5 0 1
-1 sprites/chars.pcx 70 30 01 5 5 0 1
-1 sprites/chars.pcx 50 40 01 21 19 0 -2
-1 sprites/chars.pcx 70 40 01 21 13 0 -2
//U+0160 Latin Capital Letter S with caron
//U+0161 Latin Small Letter S with caron
-1 * 0 12 03 00 02 60 01 01 02 60 01 02 02 60 01
-1 sprites/chars.pcx 90 10 01 13 8 0 -2
-1 sprites/chars.pcx 110 10 01 13 6 0 -2
-1 sprites/chars.pcx 90 30 01 6 3 0 0
-1 sprites/chars.pcx 110 30 01 6 3 0 0
-1 sprites/chars.pcx 90 40 01 21 9 0 -2
-1 sprites/chars.pcx 110 40 01 21 6 0 -2
//U+017D Latin Capital Letter Z with caron
//U+017E Latin Small Letter Z with caron
-1 * 0 12 03 00 02 7D 01 01 02 7D 01 02 02 7D 01
-1 sprites/chars.pcx 120 10 01 13 8 0 -2
-1 sprites/chars.pcx 140 10 01 13 7 0 -2
-1 sprites/chars.pcx 120 30 01 6 3 0 0
-1 sprites/chars.pcx 140 30 01 6 3 0 0
-1 sprites/chars.pcx 120 40 01 21 12 0 -2
-1 sprites/chars.pcx 140 40 01 21 7 0 -2
//U+00B0 Degree symbol
-1 * 0 12 03 00 01 B0 00 01 01 B0 00 02 01 B0 00
-1 sprites/chars.pcx 150 10 01 13 6 0 -2
-1 sprites/chars.pcx 150 30 01 6 3 0 0
-1 sprites/chars.pcx 150 40 01 21 7 0 -2
//U+007B Left curly bracket
//U+007C Vertical bar
//U+007C Right Curly Bracket
//U+007D Tilde
-1 * 0 12 03 00 04 7B 00 01 04 7B 00 02 04 7B 00
-1 sprites/chars.pcx 160 10 01 13 5 0 -2
-1 sprites/chars.pcx 170 10 01 13 3 0 -2
-1 sprites/chars.pcx 180 10 01 13 5 0 -2
-1 sprites/chars.pcx 190 10 01 13 7 0 -2
-1 sprites/chars.pcx 160 30 01 5 3 0 1
-1 sprites/chars.pcx 170 30 01 5 1 0 1
-1 sprites/chars.pcx 180 30 01 5 3 0 1
-1 sprites/chars.pcx 190 30 01 5 4 0 1
-1 sprites/chars.pcx 160 40 01 21 6 0 -2
-1 sprites/chars.pcx 170 40 01 21 3 0 -2
-1 sprites/chars.pcx 180 40 01 21 6 0 -2
-1 sprites/chars.pcx 190 40 01 21 12 0 -2
//U+00B7 Middle dot
-1 * 0 12 03 00 01 B7 00 01 01 B7 00 02 01 B7 00
-1 sprites/chars.pcx 210 10 01 13 3 0 -2
-1 sprites/chars.pcx 210 30 01 5 1 0 1
-1 sprites/chars.pcx 210 40 01 21 2 0 -2
//U+0150 Latin Capital Letter O with double acute
//U+0151 Latin Small Letter O with double acute
-1 * 0 12 03 00 02 50 01 01 02 50 01 02 02 50 01
-1 sprites/chars.pcx 230 10 01 13 9 0 -2
-1 sprites/chars.pcx 320 10 01 13 6 0 -2
-1 sprites/chars.pcx 230 30 01 6 4 0 0
-1 sprites/chars.pcx 220 30 01 6 4 0 0
-1 sprites/chars.pcx 230 40 01 21 13 0 -2
-1 sprites/chars.pcx 220 40 01 21 9 0 -2
//U+0170 Latin Capital Letter U with double acute
//U+0171 Latin Small Letter U with double acute
-1 * 0 12 03 00 02 70 01 01 02 70 01 02 02 70 01
-1 sprites/chars.pcx 260 10 01 13 8 0 -2
-1 sprites/chars.pcx 250 10 01 13 7 0 -2
-1 sprites/chars.pcx 260 30 01 6 4 0 0
-1 sprites/chars.pcx 250 30 01 6 4 0 0
-1 sprites/chars.pcx 260 40 01 21 14 0 -2
-1 sprites/chars.pcx 250 40 01 21 9 0 -2
//U+010C Latin Capital Letter C with caron
//U+010D Latin Small Letter C with caron
-1 * 0 12 03 00 02 0C 01 01 02 0C 01 02 02 0C 01
-1 sprites/chars.pcx 30 70 01 13 9 0 -2
-1 sprites/chars.pcx 50 70 01 13 6 0 -2
-1 sprites/chars.pcx 30 90 01 6 3 0 0
-1 sprites/chars.pcx 50 90 01 6 3 0 0
-1 sprites/chars.pcx 30 100 01 21 12 0 -2
-1 sprites/chars.pcx 50 100 01 21 8 0 -2
//U+010E Latin Capital Letter D with caron
//U+010F Latin Small Letter D with caron
-1 * 0 12 03 00 02 0E 01 01 02 0E 01 02 02 0E 01
-1 sprites/chars.pcx 70 70 01 13 8 0 -2
-1 sprites/chars.pcx 90 70 01 13 9 0 -2
-1 sprites/chars.pcx 70 90 01 6 3 0 0
-1 sprites/chars.pcx 90 90 01 5 5 0 1
-1 sprites/chars.pcx 70 100 01 21 14 0 -2
-1 sprites/chars.pcx 90 100 01 21 12 0 -2
//U+011A Latin Capital Letter E with caron
//U+011B Latin Small Letter E with caron
-1 * 0 12 03 00 02 1A 01 01 02 1A 01 02 02 1A 01
-1 sprites/chars.pcx 110 70 01 13 8 0 -2
-1 sprites/chars.pcx 130 70 01 13 6 0 -2
-1 sprites/chars.pcx 110 90 01 6 3 0 0
-1 sprites/chars.pcx 130 90 01 6 3 0 0
-1 sprites/chars.pcx 110 100 01 21 13 0 -2
-1 sprites/chars.pcx 130 100 01 21 8 0 -2
//U+0147 Latin Capital Letter N with caron
//U+0148 Latin Small Letter N with caron
-1 * 0 12 03 00 02 47 01 01 02 47 01 02 02 47 01
-1 sprites/chars.pcx 150 70 01 13 8 0 -2
-1 sprites/chars.pcx 170 70 01 13 6 0 -2
-1 sprites/chars.pcx 150 90 01 6 4 0 0
-1 sprites/chars.pcx 170 90 01 6 3 0 0
-1 sprites/chars.pcx 150 100 01 21 16 0 -2
-1 sprites/chars.pcx 170 100 01 21 10 0 -2
//U+0158 Latin Capital Letter R with caron
//U+0159 Latin Small Letter R with caron
-1 * 0 12 03 00 02 58 01 01 02 58 01 02 02 58 01
-1 sprites/chars.pcx 190 70 01 13 8 0 -2
-1 sprites/chars.pcx 210 70 01 13 5 0 -2
-1 sprites/chars.pcx 190 90 01 6 3 0 0
-1 sprites/chars.pcx 210 90 01 6 3 0 0
-1 sprites/chars.pcx 190 100 01 21 12 0 -2
-1 sprites/chars.pcx 210 100 01 21 6 0 -2
//U+0164 Latin Capital Letter T with caron
//U+0165 Latin Small Letter T with caron
-1 * 0 12 03 00 02 64 01 01 02 64 01 02 02 64 01
-1 sprites/chars.pcx 230 70 01 13 9 0 -2
-1 sprites/chars.pcx 250 70 01 13 8 0 -2
-1 sprites/chars.pcx 230 90 01 6 3 0 0
-1 sprites/chars.pcx 250 90 01 5 4 0 1
-1 sprites/chars.pcx 230 100 01 21 13 0 -2
-1 sprites/chars.pcx 250 100 01 21 7 0 -2
//U+016E Latin Capital Letter U with ring above
//U+016F Latin Small Letter U with ring above
-1 * 0 12 03 00 02 6E 01 01 02 6E 01 02 02 6E 01
-1 sprites/chars.pcx 270 70 01 13 8 0 -2
-1 sprites/chars.pcx 290 70 01 13 6 0 -2
-1 sprites/chars.pcx 270 90 01 6 3 0 0
-1 sprites/chars.pcx 290 90 01 6 3 0 0
-1 sprites/chars.pcx 270 100 01 21 14 0 -2
-1 sprites/chars.pcx 290 100 01 21 8 0 -2
//U+0106 Latin Capital Letter C with acute
//U+0107 Latin Small Letter C with acute
-1 * 0 12 03 00 02 06 01 01 02 06 01 02 02 06 01
-1 sprites/chars.pcx 310 70 01 13 9 0 -2
-1 sprites/chars.pcx 330 70 01 13 6 0 -2
-1 sprites/chars.pcx 310 90 01 6 3 0 0
-1 sprites/chars.pcx 330 90 01 6 3 0 0
-1 sprites/chars.pcx 310 100 01 21 12 0 -2
-1 sprites/chars.pcx 330 100 01 21 8 0 -2
//U+0110 Latin Capital Letter D with stroke
//U+0111 Latin Small Letter D with stroke
-1 * 0 12 03 00 02 10 01 01 02 10 01 02 02 10 01
-1 sprites/chars.pcx 350 70 01 13 9 0 -2
-1 sprites/chars.pcx 370 70 01 13 7 0 -2
-1 sprites/chars.pcx 350 90 01 5 4 0 1
-1 sprites/chars.pcx 370 90 01 6 4 0 0
-1 sprites/chars.pcx 350 100 01 21 14 0 -2
-1 sprites/chars.pcx 370 100 01 21 9 0 -2
//U+013D Latin Capital Letter L with caron
//U+013E Latin Small Letter L with caron
-1 * 0 12 03 00 02 3D 01 01 02 3D 01 02 02 3D 01
-1 sprites/chars.pcx 390 70 01 13 7 0 -2
-1 sprites/chars.pcx 410 70 01 13 6 0 -2
-1 sprites/chars.pcx 390 90 01 5 5 0 1
-1 sprites/chars.pcx 410 90 01 5 3 0 1
-1 sprites/chars.pcx 390 100 01 21 12 0 -2
-1 sprites/chars.pcx 410 100 01 21 7 0 -2
//U+00B4 Acute accent
-1 * 0 12 03 00 01 B4 00 01 01 B4 00 02 01 B4 00
-1 sprites/chars.pcx 30 130 01 13 4 0 -2
-1 sprites/chars.pcx 30 150 01 5 1 0 1
-1 sprites/chars.pcx 30 160 01 21 3 0 -2
//U+00BD Vulgar fraction one half
-1 * 0 12 03 00 01 BD 00 01 01 BD 00 02 01 BD 00
-1 sprites/chars.pcx 40 130 01 13 11 0 -2
-1 sprites/chars.pcx 40 150 01 5 9 0 1
-1 sprites/chars.pcx 40 160 01 21 11 0 -2
//U+00B5 Micro sign
-1 * 0 12 03 00 01 B5 00 01 01 B5 00 02 01 B5 00
-1 sprites/chars.pcx 60 130 01 13 6 0 -2
-1 sprites/chars.pcx 60 150 01 5 3 0 1
-1 sprites/chars.pcx 60 160 01 21 10 0 -2
//U+00AA Feminine Ordinal Indicator
-1 * 0 12 03 00 01 AA 00 01 01 AA 00 02 01 AA 00
-1 sprites/chars.pcx 80 130 01 13 5 0 -2
-1 sprites/chars.pcx 80 150 01 5 1 0 1
-1 sprites/chars.pcx 80 160 01 21 6 0 -2
//U+2019 RIGHT SINGLE QUOTATION MARK
-1 * 0 12 03 00 01 19 20 01 01 19 20 02 01 19 20
-1 sprites/chars.pcx 90 130 01 13 3 0 -2
-1 sprites/chars.pcx 90 150 01 5 1 0 1
-1 sprites/chars.pcx 90 160 01 21 4 0 -2
//U+201E DOUBLE LOW-9 QUOTATION MARK
-1 * 0 12 03 00 01 1E 20 01 01 1E 20 02 01 1E 20
-1 sprites/chars.pcx 100 130 01 13 5 0 -2
-1 sprites/chars.pcx 100 150 01 5 3 0 1
-1 sprites/chars.pcx 100 160 01 21 8 0 -2
//U+201C LEFT DOUBLE QUOTATION MARK
-1 * 0 12 03 00 01 1C 20 01 01 1C 20 02 01 1C 20
-1 sprites/chars.pcx 110 130 01 13 5 0 -2
-1 sprites/chars.pcx 110 150 01 5 3 0 1
-1 sprites/chars.pcx 110 160 01 21 8 0 -2
//U+203A SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-1 * 0 12 03 00 01 3A 20 01 01 3A 20 02 01 3A 20
-1 sprites/chars.pcx 760 130 01 13 5 0 -2
-1 sprites/chars.pcx 760 150 01 5 2 0 1
-1 sprites/chars.pcx 760 160 01 21 4 0 -2
//U+2013 EN DASH
-1 * 0 12 03 00 01 13 20 01 01 13 20 02 01 13 20
-1 sprites/chars.pcx 120 130 01 13 7 0 -2
-1 sprites/chars.pcx 120 150 01 5 4 0 1
-1 sprites/chars.pcx 120 160 01 21 9 0 -2
//U+0174 Latin Capital Letter W with circumflex
//U+0175 Latin Small Letter W with circumflex
-1 * 0 12 03 00 02 74 01 01 02 74 01 02 02 74 01
-1 sprites/chars.pcx 420 70 01 13 12 0 -2
-1 sprites/chars.pcx 440 70 01 13 10 0 -2
-1 sprites/chars.pcx 420 90 01 6 5 0 0
-1 sprites/chars.pcx 440 90 01 6 5 0 0
-1 sprites/chars.pcx 420 100 01 21 18 0 -2
-1 sprites/chars.pcx 440 100 01 21 13 0 -2
//U+0176 Latin Capital Letter Y with circumflex
//U+0177 Latin Small Letter Y with circumflex
-1 * 0 12 03 00 02 76 01 01 02 76 01 02 02 76 01
-1 sprites/chars.pcx 460 70 01 13 9 0 -2
-1 sprites/chars.pcx 480 70 01 13 7 0 -2
-1 sprites/chars.pcx 460 90 01 6 3 0 0
-1 sprites/chars.pcx 480 90 01 6 3 0 0
-1 sprites/chars.pcx 460 100 01 21 13 0 -2
-1 sprites/chars.pcx 480 100 01 21 9 0 -2
//U+0108 Latin Capital Letter C with circumflex
//U+0109 Latin Small Letter C with circumflex
-1 * 0 12 03 00 02 08 01 01 02 08 01 02 02 08 01
-1 sprites/chars.pcx 500 70 01 13 9 0 -2
-1 sprites/chars.pcx 520 70 01 13 6 0 -2
-1 sprites/chars.pcx 500 90 01 6 3 0 0
-1 sprites/chars.pcx 520 90 01 6 3 0 0
-1 sprites/chars.pcx 500 100 01 21 12 0 -2
-1 sprites/chars.pcx 520 100 01 21 8 0 -2
//U+011C Latin Capital Letter G with circumflex
//U+011D Latin Small Letter G with circumflex
-1 * 0 12 03 00 02 1C 01 01 02 1C 01 02 02 1C 01
-1 sprites/chars.pcx 540 70 01 13 9 0 -2
-1 sprites/chars.pcx 560 70 01 13 6 0 -2
-1 sprites/chars.pcx 540 90 01 6 3 0 0
-1 sprites/chars.pcx 560 90 01 6 3 0 0
-1 sprites/chars.pcx 540 100 01 21 13 0 -2
-1 sprites/chars.pcx 560 100 01 21 10 0 -2
//U+0124 Latin Capital Letter H with circumflex
//U+0125 Latin Small Letter H with circumflex
-1 * 0 12 03 00 02 24 01 01 02 24 01 02 02 24 01
-1 sprites/chars.pcx 580 70 01 13 8 0 -2
-1 sprites/chars.pcx 600 70 01 13 8 0 -2
-1 sprites/chars.pcx 580 90 01 6 3 0 0
-1 sprites/chars.pcx 600 90 01 6 3 0 0
-1 sprites/chars.pcx 580 100 01 21 15 0 -2
-1 sprites/chars.pcx 600 100 01 21 10 0 -2
//U+0134 Latin Capital Letter J with circumflex
//U+0135 Latin Small Letter J with circumflex
-1 * 0 12 03 00 02 34 01 01 02 34 01 02 02 34 01
-1 sprites/chars.pcx 620 70 01 13 7 0 -2
-1 sprites/chars.pcx 640 70 01 13 6 0 -2
-1 sprites/chars.pcx 620 90 01 6 3 0 0
-1 sprites/chars.pcx 640 90 01 6 3 0 0
-1 sprites/chars.pcx 620 100 01 21 8 0 -2
-1 sprites/chars.pcx 640 100 01 21 5 0 -2
//U+016C Latin Capital Letter U with breve
//U+016D Latin Small Letter U with breve
-1 * 0 12 03 00 02 6C 01 01 02 6C 01 02 02 6C 01
-1 sprites/chars.pcx 650 70 01 13 8 0 -2
-1 sprites/chars.pcx 670 70 01 13 6 0 -2
-1 sprites/chars.pcx 650 90 01 6 3 0 0
-1 sprites/chars.pcx 670 90 01 6 3 0 0
-1 sprites/chars.pcx 650 100 01 21 14 0 -2
-1 sprites/chars.pcx 670 100 01 21 9 0 -2
//U+0102 Latin Capital Letter A with breve
//U+0103 Latin Small Letter A with breve
-1 * 0 12 03 00 02 02 01 01 02 02 01 02 02 02 01
-1 sprites/chars.pcx 690 70 01 13 9 0 -2
-1 sprites/chars.pcx 710 70 01 13 7 0 -2
-1 sprites/chars.pcx 690 90 01 6 3 0 0
-1 sprites/chars.pcx 710 90 01 6 3 0 0
-1 sprites/chars.pcx 690 100 01 21 14 0 -2
-1 sprites/chars.pcx 710 100 01 21 8 0 -2
//U+015E Latin Capital Letter S with cedilla
//U+015F Latin Small Letter S with cedilla
-1 * 0 12 03 00 02 5E 01 01 02 5E 01 02 02 5E 01
-1 sprites/chars.pcx 730 70 01 13 8 0 -2
-1 sprites/chars.pcx 740 70 01 13 6 0 -2
-1 sprites/chars.pcx 730 90 01 6 3 0 1
-1 sprites/chars.pcx 740 90 01 6 3 0 1
-1 sprites/chars.pcx 730 100 01 21 9 0 -2
-1 sprites/chars.pcx 740 100 01 21 6 0 -2
//U+0162 Latin Capital Letter T with cedilla
//U+0163 Latin Small Letter T with cedilla
-1 * 0 12 03 00 02 62 01 01 02 62 01 02 02 62 01
-1 sprites/chars.pcx 750 70 01 13 9 0 -2
-1 sprites/chars.pcx 770 70 01 13 6 0 -2
-1 sprites/chars.pcx 750 90 01 6 3 0 1
-1 sprites/chars.pcx 770 90 01 6 2 0 1
-1 sprites/chars.pcx 750 100 01 21 13 0 -2
-1 sprites/chars.pcx 770 100 01 21 5 0 -2
//U+011E Latin Capital Letter G with breve
//U+011F Latin Small Letter G with breve
-1 * 0 12 03 00 02 1E 01 01 02 1E 01 02 02 1E 01
-1 sprites/chars.pcx 140 130 01 13 9 0 -2
-1 sprites/chars.pcx 160 130 01 13 6 0 -2
-1 sprites/chars.pcx 140 150 01 6 3 0 0
-1 sprites/chars.pcx 160 150 01 6 3 0 0
-1 sprites/chars.pcx 140 160 01 21 13 0 -2
-1 sprites/chars.pcx 160 160 01 21 10 0 -2
//U+0130 Latin Capital Letter I with dot above
//U+0131 Latin Small Letter dotless I
-1 * 0 12 03 00 02 30 01 01 02 30 01 02 02 30 01
-1 sprites/chars.pcx 180 130 01 13 3 0 -2
-1 sprites/chars.pcx 190 130 01 13 3 0 -2
-1 sprites/chars.pcx 180 150 01 6 1 0 0
-1 sprites/chars.pcx 190 150 01 5 1 0 1
-1 sprites/chars.pcx 180 160 01 21 7 0 -2
-1 sprites/chars.pcx 190 160 01 21 4 0 -2
//U+0122 Latin Capital Letter G with cedilla
//U+0123 Latin Small Letter G with cedilla
-1 * 0 12 03 00 02 22 01 01 02 22 01 02 02 22 01
-1 sprites/chars.pcx 200 130 01 13 9 0 -2
-1 sprites/chars.pcx 220 130 01 13 6 0 -2
-1 sprites/chars.pcx 200 150 01 6 3 0 0
-1 sprites/chars.pcx 220 150 01 6 3 0 1
-1 sprites/chars.pcx 200 160 01 21 13 0 -2
-1 sprites/chars.pcx 220 160 01 21 10 0 -2
//U+0136 Latin Capital Letter K with cedilla
//U+0137 Latin Small Letter K with cedilla
-1 * 0 12 03 00 02 36 01 01 02 36 01 02 02 36 01
-1 sprites/chars.pcx 240 130 01 13 8 0 -2
-1 sprites/chars.pcx 260 130 01 13 7 0 -2
-1 sprites/chars.pcx 240 150 01 6 3 0 1
-1 sprites/chars.pcx 260 150 01 6 3 0 1
-1 sprites/chars.pcx 240 160 01 21 14 0 -2
-1 sprites/chars.pcx 260 160 01 21 10 0 -2
//U+013B Latin Capital Letter L with cedilla
//U+013C Latin Small Letter L with cedilla
-1 * 0 12 03 00 02 3B 01 01 02 3B 01 02 02 3B 01
-1 sprites/chars.pcx 280 130 01 13 7 0 -2
-1 sprites/chars.pcx 300 130 01 13 4 0 -2
-1 sprites/chars.pcx 280 150 01 6 3 0 1
-1 sprites/chars.pcx 300 150 01 6 2 0 1
-1 sprites/chars.pcx 280 160 01 21 12 0 -2
-1 sprites/chars.pcx 300 160 01 21 5 0 -2
//U+0145 Latin Capital Letter N with cedilla
//U+0146 Latin Small Letter N with cedilla
-1 * 0 12 03 00 02 45 01 01 02 45 01 02 02 45 01
-1 sprites/chars.pcx 310 130 01 13 8 0 -2
-1 sprites/chars.pcx 330 130 01 13 6 0 -2
-1 sprites/chars.pcx 310 150 01 6 4 0 1
-1 sprites/chars.pcx 330 150 01 6 3 0 1
-1 sprites/chars.pcx 310 160 01 21 16 0 -2
-1 sprites/chars.pcx 330 160 01 21 10 0 -2
//U+0100 Latin Capital Letter A with macron
//U+0101 Latin Small Letter A with macron
-1 * 0 12 03 00 02 00 01 01 02 00 01 02 02 00 01
-1 sprites/chars.pcx 350 130 01 13 9 0 -2
-1 sprites/chars.pcx 370 130 01 13 7 0 -2
-1 sprites/chars.pcx 350 150 01 6 3 0 0
-1 sprites/chars.pcx 370 150 01 6 3 0 0
-1 sprites/chars.pcx 350 160 01 21 14 0 -2
-1 sprites/chars.pcx 370 160 01 21 8 0 -2
//U+0112 Latin Capital Letter E with macron
//U+0113 Latin Small Letter E with macron
-1 * 0 12 03 00 02 12 01 01 02 12 01 02 02 12 01
-1 sprites/chars.pcx 380 130 01 13 8 0 -2
-1 sprites/chars.pcx 400 130 01 13 6 0 -2
-1 sprites/chars.pcx 380 150 01 6 3 0 0
-1 sprites/chars.pcx 400 150 01 6 3 0 0
-1 sprites/chars.pcx 380 160 01 21 13 0 -2
-1 sprites/chars.pcx 400 160 01 21 8 0 -2
//U+012A Latin Capital Letter I with macron
//U+012B Latin Small Letter I with macron
-1 * 0 12 03 00 02 2A 01 01 02 2A 01 02 02 2A 01
-1 sprites/chars.pcx 410 130 01 13 5 0 -2
-1 sprites/chars.pcx 420 130 01 13 5 0 -2
-1 sprites/chars.pcx 410 150 01 6 3 0 0
-1 sprites/chars.pcx 420 150 01 6 3 0 0
-1 sprites/chars.pcx 410 160 01 21 7 0 -2
-1 sprites/chars.pcx 420 160 01 21 4 0 -2
//U+016A Latin Capital Letter U with macron
//U+016B Latin Small Letter U with macron
-1 * 0 12 03 00 02 6A 01 01 02 6A 01 02 02 6A 01
-1 sprites/chars.pcx 430 130 01 13 8 0 -2
-1 sprites/chars.pcx 450 130 01 13 6 0 -2
-1 sprites/chars.pcx 430 150 01 6 3 0 0
-1 sprites/chars.pcx 450 150 01 6 3 0 0
-1 sprites/chars.pcx 430 160 01 21 14 0 -2
-1 sprites/chars.pcx 450 160 01 21 9 0 -2
//U+0143 Latin Capital Letter N with acute
//U+0144 Latin Small Letter N with acute
-1 * 0 12 03 00 02 43 01 01 02 43 01 02 02 43 01
-1 sprites/chars.pcx 470 130 01 13 8 0 -2
-1 sprites/chars.pcx 490 130 01 13 6 0 -2
-1 sprites/chars.pcx 470 150 01 6 4 0 0
-1 sprites/chars.pcx 490 150 01 6 3 0 0
-1 sprites/chars.pcx 470 160 01 21 16 0 -2
-1 sprites/chars.pcx 490 160 01 21 10 0 -2
//U+015A Latin Capital Letter S with acute
//U+015B Latin Small Letter S with acute
-1 * 0 12 03 00 02 5A 01 01 02 5A 01 02 02 5A 01
-1 sprites/chars.pcx 510 130 01 13 8 0 -2
-1 sprites/chars.pcx 520 130 01 13 6 0 -2
-1 sprites/chars.pcx 510 150 01 6 3 0 0
-1 sprites/chars.pcx 520 150 01 6 3 0 0
-1 sprites/chars.pcx 510 160 01 21 9 0 -2
-1 sprites/chars.pcx 520 160 01 21 6 0 -2
//U+017B Latin Capital Letter Z with dot above
//U+017C Latin Small Letter Z with dot above
-1 * 0 12 03 00 02 7B 01 01 02 7B 01 02 02 7B 01
-1 sprites/chars.pcx 530 130 01 13 8 0 -2
-1 sprites/chars.pcx 550 130 01 13 7 0 -2
-1 sprites/chars.pcx 530 150 01 6 3 0 0
-1 sprites/chars.pcx 550 150 01 6 3 0 0
-1 sprites/chars.pcx 530 160 01 21 12 0 -2
-1 sprites/chars.pcx 550 160 01 21 7 0 -2
//U+0179 Latin Capital Letter Z with acute
//U+017A Latin Small Letter Z with acute
-1 * 0 12 03 00 02 79 01 01 02 79 01 02 02 79 01
-1 sprites/chars.pcx 770 130 01 13 8 0 -2
-1 sprites/chars.pcx 790 130 01 13 7 0 -2
-1 sprites/chars.pcx 770 150 01 6 3 0 0
-1 sprites/chars.pcx 790 150 01 6 3 0 0
-1 sprites/chars.pcx 770 160 01 21 12 0 -2
-1 sprites/chars.pcx 790 160 01 21 7 0 -2
//U+0139 Latin Capital Letter L with acute
//U+013A Latin Small Letter L with acute
-1 * 0 12 03 00 02 39 01 01 02 39 01 02 02 39 01
-1 sprites/chars.pcx 30 190 01 13 7 0 -2
-1 sprites/chars.pcx 50 190 01 13 4 0 -2
-1 sprites/chars.pcx 30 210 01 6 3 0 0
-1 sprites/chars.pcx 50 210 01 6 2 0 0
-1 sprites/chars.pcx 30 220 01 21 12 0 -2
-1 sprites/chars.pcx 50 220 01 21 5 0 -2
//U+0141 Latin Capital Letter L with stroke
//U+0142 Latin Small Letter L with stroke
-1 * 0 12 03 00 02 41 01 01 02 41 01 02 02 41 01
-1 sprites/chars.pcx 560 130 01 13 8 0 -2
-1 sprites/chars.pcx 580 130 01 13 5 0 -2
-1 sprites/chars.pcx 560 150 01 5 4 0 1
-1 sprites/chars.pcx 580 150 01 5 3 0 1
-1 sprites/chars.pcx 560 160 01 21 12 0 -2
-1 sprites/chars.pcx 580 160 01 21 6 0 -2
//U+0104 Latin Capital Letter A with ogonek
//U+0105 Latin Small Letter A with ogonek
-1 * 0 12 03 00 02 04 01 01 02 04 01 02 02 04 01
-1 sprites/chars.pcx 590 130 01 13 9 0 -2
-1 sprites/chars.pcx 610 130 01 13 7 0 -2
-1 sprites/chars.pcx 590 150 01 6 3 0 1
-1 sprites/chars.pcx 610 150 01 6 3 0 1
-1 sprites/chars.pcx 590 160 01 21 14 0 -2
-1 sprites/chars.pcx 610 160 01 21 8 0 -2
//U+0118 Latin Capital Letter E with ogonek
//U+0119 Latin Small Letter E with ogonek
-1 * 0 12 03 00 02 18 01 01 02 18 01 02 02 18 01
-1 sprites/chars.pcx 620 130 01 13 8 0 -2
-1 sprites/chars.pcx 640 130 01 13 6 0 -2
-1 sprites/chars.pcx 620 150 01 6 3 0 1
-1 sprites/chars.pcx 640 150 01 6 3 0 1
-1 sprites/chars.pcx 620 160 01 21 13 0 -2
-1 sprites/chars.pcx 640 160 01 21 8 0 -2
//U+012E Latin Capital Letter I with ogonek
//U+012F Latin Small Letter I with ogonek
-1 * 0 12 03 00 02 2E 01 01 02 2E 01 02 02 2E 01
-1 sprites/chars.pcx 650 130 01 13 4 0 -2
-1 sprites/chars.pcx 660 130 01 13 4 0 -2
-1 sprites/chars.pcx 650 150 01 6 2 0 1
-1 sprites/chars.pcx 660 150 01 6 2 0 1
-1 sprites/chars.pcx 650 160 01 21 7 0 -2
-1 sprites/chars.pcx 660 160 01 21 4 0 -2
//U+0172 Latin Capital Letter U with ogonek
//U+0173 Latin Small Letter U with ogonek
-1 * 0 12 03 00 02 72 01 01 02 72 01 02 02 72 01
-1 sprites/chars.pcx 670 130 01 13 8 0 -2
-1 sprites/chars.pcx 690 130 01 13 7 0 -2
-1 sprites/chars.pcx 670 150 01 6 3 0 1
-1 sprites/chars.pcx 690 150 01 6 3 0 1
-1 sprites/chars.pcx 670 160 01 21 14 0 -2
-1 sprites/chars.pcx 690 160 01 21 9 0 -2
//U+0116 Latin Capital Letter E with dot above
//U+0117 Latin Small Letter E with dot above
-1 * 0 12 03 00 02 16 01 01 02 16 01 02 02 16 01
-1 sprites/chars.pcx 710 130 01 13 8 0 -2
-1 sprites/chars.pcx 730 130 01 13 6 0 -2
-1 sprites/chars.pcx 710 150 01 6 3 0 0
-1 sprites/chars.pcx 730 150 01 6 3 0 0
-1 sprites/chars.pcx 710 160 01 21 13 0 -2
-1 sprites/chars.pcx 730 160 01 21 8 0 -2
//U+015C Latin Capital Letter S with circumflex
//U+015D Latin Small Letter S with circumflex
-1 * 0 12 03 00 02 5C 01 01 02 5C 01 02 02 5C 01
-1 sprites/chars.pcx 740 130 01 13 8 0 -2
-1 sprites/chars.pcx 750 130 01 13 6 0 -2
-1 sprites/chars.pcx 740 150 01 6 3 0 0
-1 sprites/chars.pcx 750 150 01 6 3 0 0
-1 sprites/chars.pcx 740 160 01 21 9 0 -2
-1 sprites/chars.pcx 750 160 01 21 6 0 -2
// Large font only
//U+00C6 Latin Capital letter AE
-1 * 0 12 01 02 01 C6 00
-1 sprites/chars.pcx 300 40 01 21 19 0 -2
//U+00E6 Latin Small Letter AE
-1 * 0 12 01 02 01 E6 00
-1 sprites/chars.pcx 280 40 01 21 13 0 -2
//U+00D8 Latin Capital letter O with stroke
-1 * 0 12 01 02 01 D8 00
-1 sprites/chars.pcx 330 40 01 21 13 0 -2
//U+00F8 Latin Small Letter O with stroke
-1 * 0 12 01 02 01 F8 00
-1 sprites/chars.pcx 320 40 01 21 9 0 -2
//U+00D0 Latin Capital letter Eth
-1 * 0 12 01 02 01 D0 00
-1 sprites/chars.pcx 350 40 01 21 14 0 -2
//U+00F0 Latin Small Letter Eth
-1 * 0 12 01 02 01 F0 00
-1 sprites/chars.pcx 370 40 01 21 9 0 -2
//U+00DE Latin Capital Letter Thorn
-1 * 0 12 01 02 01 DE 00
-1 sprites/chars.pcx 380 40 01 21 14 0 -2
//U+00FE Latin Small Letter Thorn
-1 * 0 12 01 02 01 FE 00
-1 sprites/chars.pcx 400 40 01 21 14 0 -2
//U+00A7 Section sign
-1 * 0 12 01 02 01 A7 00
-1 sprites/chars.pcx 420 40 01 21 9 0 -2
//U+00A9 Copyright sign
-1 * 0 12 01 02 01 A9 00
-1 sprites/chars.pcx 430 40 01 21 16 0 -2
//U+00AE Registered sign
-1 * 0 12 01 02 01 AE 00
-1 sprites/chars.pcx 150 40 01 21 7 0 -2
//U+00B1 Plus-minus sign
//U+00B2 Superscript two
//U+00B3 Superscript three
-1 * 0 12 01 02 03 B1 00
-1 sprites/chars.pcx 480 40 01 21 9 0 -2
-1 sprites/chars.pcx 490 40 01 21 6 0 -2
-1 sprites/chars.pcx 500 40 01 21 5 0 -2
//U+00D7 Multiplication sign
-1 * 0 12 01 02 01 D7 00
-1 sprites/chars.pcx 510 40 01 21 8 0 -2
//U+00F7 Division sign
-1 * 0 12 01 02 01 F7 00
-1 sprites/chars.pcx 520 40 01 21 9 0 -2

BIN
media/extra_grf/chars.pcx Normal file

Binary file not shown.

View File

@@ -0,0 +1,58 @@
//
// $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 "Electrified rail by Michael Blunck"
-1 * 0 05 05 30
-1 sprites/elrails.pcx 66 8 01 16 32 -29 -2
-1 sprites/elrails.pcx 114 8 01 16 32 -1 -2
-1 sprites/elrails.pcx 162 8 01 1 32 -1 -2
-1 sprites/elrails.pcx 210 8 01 16 1 0 -3
-1 sprites/elrails.pcx 226 8 01 24 32 -29 -2
-1 sprites/elrails.pcx 274 8 01 9 32 -1 6
-1 sprites/elrails.pcx 322 8 01 9 32 -29 6
-1 sprites/elrails.pcx 370 8 01 24 32 -1 -2
-1 sprites/elrails.pcx 418 8 01 16 32 -29 -2
-1 sprites/elrails.pcx 466 8 01 16 32 -1 -2
-1 sprites/elrails.pcx 514 8 01 1 32 -1 -2
-1 sprites/elrails.pcx 562 8 01 16 1 0 -3
-1 sprites/elrails.pcx 578 8 01 24 32 -29 -2
-1 sprites/elrails.pcx 626 8 01 9 32 -1 6
-1 sprites/elrails.pcx 674 8 01 9 32 -29 6
-1 sprites/elrails.pcx 722 8 01 24 32 -1 -2
-1 sprites/elrails.pcx 2 56 01 16 32 -29 -2
-1 sprites/elrails.pcx 50 56 01 16 32 -1 -2
-1 sprites/elrails.pcx 98 56 01 1 32 -1 -2
-1 sprites/elrails.pcx 146 56 01 16 1 0 -3
-1 sprites/elrails.pcx 162 56 01 24 32 -29 -2
-1 sprites/elrails.pcx 210 56 01 9 32 -1 6
-1 sprites/elrails.pcx 258 56 01 9 32 -29 6
-1 sprites/elrails.pcx 306 56 01 24 32 -1 -2
-1 sprites/elrails.pcx 354 56 01 8 16 -29 6
-1 sprites/elrails.pcx 386 56 01 8 16 -1 -2
-1 sprites/elrails.pcx 418 56 01 8 16 -13 -2
-1 sprites/elrails.pcx 450 56 01 8 16 15 6
-1 sprites/elrails.pcx 482 56 01 16 8 -7 -14
-1 sprites/elrails.pcx 498 56 01 18 8 0 -17
-1 sprites/elrails.pcx 514 56 01 16 8 0 -14
-1 sprites/elrails.pcx 530 56 01 18 8 -7 -17
-1 sprites/elrails.pcx 546 56 01 16 2 0 -15
-1 sprites/elrails.pcx 562 56 01 18 2 0 -16
-1 sprites/elrails.pcx 578 56 01 16 8 0 -15
-1 sprites/elrails.pcx 594 56 01 16 8 -7 -15
-1 sprites/elrails.pcx 610 56 09 16 13 4 2
-1 sprites/elrails.pcx 642 56 09 16 20 0 2
-1 sprites/elrails.pcx 674 56 09 16 20 0 2
-1 sprites/elrails.pcx 706 56 09 16 20 0 2
-1 sprites/elrails.pcx 738 56 03 30 38 -3 -14
-1 sprites/elrails.pcx 2 104 03 44 72 -16 -8
-1 sprites/elrails.pcx 82 104 03 35 44 -21 -2
-1 sprites/elrails.pcx 146 104 03 44 72 -16 -35
-1 sprites/elrails.pcx 226 104 09 19 20 0 1
-1 sprites/elrails.pcx 258 104 03 32 32 0 0
-1 sprites/elrails.pcx 306 104 01 22 12 -9 -18
-1 sprites/elrails.pcx 338 104 01 22 12 -1 -18

BIN
media/extra_grf/elrails.pcx Normal file

Binary file not shown.

View File

@@ -0,0 +1,135 @@
//
// $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 "Fixing (alignment) bugs in the orignal graphics. By Addi."
-1 * 6 07 83 01 \7= 03 69
// Different grahpics for same wood truck
-1 * 14 0A 04 01 87 0C 01 89 0C 01 07 0E 01 09 0E
-1 sprites/fix_graphics.pcx 82 8 09 16 22 -6 -7
-1 sprites/fix_graphics.pcx 114 8 09 16 22 -14 -7
-1 sprites/fix_graphics.pcx 146 8 09 16 22 -6 -7
-1 sprites/fix_graphics.pcx 178 8 09 16 22 -14 -7
// Different grahpics for lots of trucks
-1 * 5 0A 01 28 C4 0D
-1 sprites/fix_graphics.pcx 226 8 01 18 8 -3 -10
-1 sprites/fix_graphics.pcx 242 8 09 16 20 -14 -7
-1 sprites/fix_graphics.pcx 274 8 01 12 28 -14 -6
-1 sprites/fix_graphics.pcx 322 8 09 16 20 -6 -7
-1 sprites/fix_graphics.pcx 354 8 01 18 8 -3 -10
-1 sprites/fix_graphics.pcx 370 8 09 16 20 -14 -7
-1 sprites/fix_graphics.pcx 402 8 01 12 28 -14 -6
-1 sprites/fix_graphics.pcx 450 8 09 16 20 -6 -7
-1 sprites/fix_graphics.pcx 482 8 01 18 8 -3 -10
-1 sprites/fix_graphics.pcx 498 8 09 16 20 -14 -7
-1 sprites/fix_graphics.pcx 530 8 01 12 28 -14 -6
-1 sprites/fix_graphics.pcx 578 8 09 16 20 -6 -7
-1 sprites/fix_graphics.pcx 610 8 01 18 8 -3 -10
-1 sprites/fix_graphics.pcx 626 8 09 16 20 -14 -7
-1 sprites/fix_graphics.pcx 658 8 01 12 28 -14 -6
-1 sprites/fix_graphics.pcx 706 8 09 16 20 -6 -7
-1 sprites/fix_graphics.pcx 738 8 01 18 8 -3 -10
-1 sprites/fix_graphics.pcx 754 8 09 16 22 -14 -7
-1 sprites/fix_graphics.pcx 2 40 01 12 28 -14 -6
-1 sprites/fix_graphics.pcx 50 40 09 16 22 -6 -7
-1 sprites/fix_graphics.pcx 82 40 01 18 8 -3 -10
-1 sprites/fix_graphics.pcx 98 40 09 16 22 -14 -7
-1 sprites/fix_graphics.pcx 130 40 01 12 28 -14 -6
-1 sprites/fix_graphics.pcx 178 40 09 16 22 -6 -7
-1 sprites/fix_graphics.pcx 210 40 01 18 8 -3 -10
-1 sprites/fix_graphics.pcx 226 40 09 16 22 -14 -7
-1 sprites/fix_graphics.pcx 258 40 01 12 28 -14 -6
-1 sprites/fix_graphics.pcx 306 40 09 16 22 -6 -7
-1 sprites/fix_graphics.pcx 338 40 01 18 8 -3 -10
-1 sprites/fix_graphics.pcx 354 40 09 16 22 -14 -7
-1 sprites/fix_graphics.pcx 386 40 01 12 28 -14 -6
-1 sprites/fix_graphics.pcx 434 40 09 16 22 -6 -7
-1 sprites/fix_graphics.pcx 466 40 01 18 8 -3 -10
-1 sprites/fix_graphics.pcx 482 40 09 16 20 -14 -7
-1 sprites/fix_graphics.pcx 514 40 01 12 28 -14 -6
-1 sprites/fix_graphics.pcx 562 40 09 16 20 -6 -7
-1 sprites/fix_graphics.pcx 594 40 01 18 8 -3 -10
-1 sprites/fix_graphics.pcx 610 40 09 16 20 -14 -7
-1 sprites/fix_graphics.pcx 642 40 01 12 28 -14 -6
-1 sprites/fix_graphics.pcx 690 40 09 16 20 -6 -7
// Different grahpics for same truck
-1 * 14 0A 04 01 9D 0C 01 9F 0C 01 A1 0C 01 A3 0C
-1 sprites/fix_graphics.pcx 738 40 09 16 22 -14 -7
-1 sprites/fix_graphics.pcx 770 40 09 16 22 -6 -7
-1 sprites/fix_graphics.pcx 2 72 09 16 22 -14 -7
-1 sprites/fix_graphics.pcx 34 72 09 16 22 -6 -7
// Different grahpics for same paper truck
-1 * 14 0A 04 01 5D 0D 01 5F 0D 01 61 0D 01 63 0D
-1 sprites/fix_graphics.pcx 82 72 09 16 22 -14 -7
-1 sprites/fix_graphics.pcx 114 72 09 17 22 -5 -7
-1 sprites/fix_graphics.pcx 146 72 09 17 22 -14 -8
-1 sprites/fix_graphics.pcx 178 72 09 16 22 -6 -7
// Different grahpics for same paper truck (truck #2)
-1 * 14 0A 04 01 1D 0E 01 1F 0E 01 21 0E 01 23 0E
-1 sprites/fix_graphics.pcx 226 72 09 16 22 -14 -7
-1 sprites/fix_graphics.pcx 258 72 09 16 22 -6 -7
-1 sprites/fix_graphics.pcx 290 72 09 16 22 -14 -7
-1 sprites/fix_graphics.pcx 322 72 09 16 22 -6 -7
// Misaligned monorail bridge heads
-1 * 8 0A 02 01 EA 10 02 EC 10
-1 sprites/fix_graphics.pcx 370 72 09 35 48 -23 -7
-1 sprites/fix_graphics.pcx 434 72 09 35 48 -23 -7
-1 sprites/fix_graphics.pcx 498 72 09 21 49 -24 3
// Improperly cut cinema
-1 * 5 0A 01 02 34 11
-1 sprites/fix_graphics.pcx 578 72 09 31 64 -31 0
-1 sprites/fix_graphics.pcx 658 72 09 47 50 -28 -20
// Misaligned undergrounds for temperate monorail
-1 * 6 07 83 01 \7! 00 06
-1 * 5 0A 01 05 4C 04
-1 sprites/fix_graphics.pcx 2 136 09 31 64 -31 0
-1 sprites/fix_graphics.pcx 82 136 09 31 64 -31 0
-1 sprites/fix_graphics.pcx 162 136 09 31 64 -31 0
-1 sprites/fix_graphics.pcx 242 136 09 31 64 -31 0
-1 sprites/fix_graphics.pcx 322 136 09 31 64 -31 0
// Misaligned undergrounds for arctic monorail
-1 * 6 07 83 01 \7! 01 06
-1 * 5 0A 01 05 4C 04
-1 sprites/fix_graphics.pcx 434 136 09 31 64 -31 0
-1 sprites/fix_graphics.pcx 514 136 09 31 64 -31 0
-1 sprites/fix_graphics.pcx 594 136 09 31 64 -31 0
-1 sprites/fix_graphics.pcx 674 136 09 31 64 -31 0
-1 sprites/fix_graphics.pcx 2 184 09 31 64 -31 0
// Misaligned undergrounds for tropical/desert monorail/maglev
-1 * 6 07 83 01 \7! 02 10
-1 * 11 0A 03 05 4C 04 05 66 04 05 B8 04
-1 sprites/fix_graphics.pcx 114 184 09 31 64 -31 0
-1 sprites/fix_graphics.pcx 194 184 09 31 64 -31 0
-1 sprites/fix_graphics.pcx 274 184 09 31 64 -31 0
-1 sprites/fix_graphics.pcx 354 184 09 31 64 -31 0
-1 sprites/fix_graphics.pcx 434 184 09 31 64 -31 0
-1 sprites/fix_graphics.pcx 514 184 09 31 64 -31 0
-1 sprites/fix_graphics.pcx 594 184 09 31 64 -31 0
-1 sprites/fix_graphics.pcx 674 184 09 31 64 -31 0
-1 sprites/fix_graphics.pcx 2 232 09 31 64 -31 0
-1 sprites/fix_graphics.pcx 82 232 09 31 64 -31 0
-1 sprites/fix_graphics.pcx 162 232 09 31 64 -31 0
-1 sprites/fix_graphics.pcx 242 232 09 31 64 -31 0
-1 sprites/fix_graphics.pcx 322 232 09 31 64 -31 0
-1 sprites/fix_graphics.pcx 402 232 09 31 64 -31 0
-1 sprites/fix_graphics.pcx 482 232 09 31 64 -31 0
// Misaligned monorail snowed X crossing
-1 * 6 07 83 01 \7! 01 02
-1 * 5 0A 01 01 65 04
-1 sprites/fix_graphics.pcx 594 232 09 31 64 -31 0
// Floating tropical house
-1 * 6 07 83 01 \7! 02 02
-1 * 5 0A 01 01 FF 11
-1 sprites/fix_graphics.pcx 706 232 09 47 64 -31 -16
// Clipped vehicle in the original German DOS graphics
-1 * 6 07 83 01 \7! 03 02
-1 * 5 0A 01 01 5D 0C
-1 sprites/fix_graphics.pcx 776 232 09 16 20 -14 -7
// Graphics metadata pixel higher than actual graphics
-1 * 6 12 01 00 01 AC E2
-1 sprites/fix_graphics.pcx 776 250 01 10 9 0 0

Binary file not shown.

46
media/extra_grf/flags.nfo Normal file
View File

@@ -0,0 +1,46 @@
//
// $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 "Flag graphics"
-1 * 0 05 14 24
-1 sprites/flags.pcx 18 8 09 8 11 0 0
-1 sprites/flags.pcx 34 8 09 8 11 0 0
-1 sprites/flags.pcx 50 8 09 8 11 0 0
-1 sprites/flags.pcx 66 8 09 8 11 0 0
-1 sprites/flags.pcx 82 8 09 8 11 0 0
-1 sprites/flags.pcx 98 8 09 8 11 0 0
-1 sprites/flags.pcx 114 8 09 8 11 0 0
-1 sprites/flags.pcx 130 8 09 8 11 0 0
-1 sprites/flags.pcx 146 8 09 8 11 0 0
-1 sprites/flags.pcx 162 8 09 8 11 0 0
-1 sprites/flags.pcx 178 8 09 8 11 0 0
-1 sprites/flags.pcx 194 8 09 8 11 0 0
-1 sprites/flags.pcx 210 8 09 8 11 0 0
-1 sprites/flags.pcx 226 8 09 8 11 0 0
-1 sprites/flags.pcx 242 8 09 8 11 0 0
-1 sprites/flags.pcx 258 8 09 8 11 0 0
-1 sprites/flags.pcx 274 8 09 8 11 0 0
-1 sprites/flags.pcx 290 8 09 8 11 0 0
-1 sprites/flags.pcx 306 8 09 8 11 0 0
-1 sprites/flags.pcx 322 8 09 8 11 0 0
-1 sprites/flags.pcx 338 8 09 8 11 0 0
-1 sprites/flags.pcx 354 8 09 8 11 0 0
-1 sprites/flags.pcx 370 8 09 8 11 0 0
-1 sprites/flags.pcx 386 8 09 8 11 0 0
-1 sprites/flags.pcx 402 8 09 8 11 0 0
-1 sprites/flags.pcx 418 8 09 8 11 0 0
-1 sprites/flags.pcx 434 8 09 8 11 0 0
-1 sprites/flags.pcx 450 8 09 8 11 0 0
-1 sprites/flags.pcx 466 8 09 8 11 0 0
-1 sprites/flags.pcx 482 8 09 8 11 0 0
-1 sprites/flags.pcx 498 8 09 8 11 0 0
-1 sprites/flags.pcx 514 8 09 8 11 0 0
-1 sprites/flags.pcx 530 8 09 8 11 0 0
-1 sprites/flags.pcx 546 8 09 8 11 0 0
-1 sprites/flags.pcx 562 8 09 8 11 0 0
-1 sprites/flags.pcx 578 8 09 8 11 0 0

BIN
media/extra_grf/flags.pcx Normal file

Binary file not shown.

View File

@@ -0,0 +1,377 @@
//
// $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 "Foundations. Non-halftile ones by Marcin Grzegorczyk"
-1 * 0 07 83 01 \7! 00 5B
-1 * 0 05 06 5A
-1 sprites/foundations.pcx 98 8 09 40 64 -31 -9
-1 sprites/foundations.pcx 178 8 09 40 64 -31 -9
-1 sprites/foundations.pcx 258 8 09 32 64 -31 -9
-1 sprites/foundations.pcx 338 8 09 32 64 -31 -9
-1 sprites/foundations.pcx 418 8 09 40 64 -31 -9
-1 sprites/foundations.pcx 498 8 09 40 64 -31 -9
-1 sprites/foundations.pcx 578 8 09 40 64 -31 -9
-1 sprites/foundations.pcx 658 8 09 40 64 -31 -9
-1 sprites/foundations.pcx 2 72 09 40 64 -31 -9
-1 sprites/foundations.pcx 82 72 09 32 64 -31 -9
-1 sprites/foundations.pcx 162 72 09 32 64 -31 -9
-1 sprites/foundations.pcx 242 72 09 40 64 -31 -9
-1 sprites/foundations.pcx 322 72 09 40 64 -31 -9
-1 sprites/foundations.pcx 402 72 09 32 64 -31 -9
-1 sprites/foundations.pcx 482 72 09 32 64 -31 -9
-1 sprites/foundations.pcx 562 72 09 40 64 -31 -9
-1 sprites/foundations.pcx 642 72 09 40 64 -31 -9
-1 sprites/foundations.pcx 722 72 09 32 64 -31 -9
-1 sprites/foundations.pcx 2 136 09 32 64 -31 -9
-1 sprites/foundations.pcx 82 136 09 40 64 -31 -9
-1 sprites/foundations.pcx 162 136 09 40 64 -31 -9
-1 sprites/foundations.pcx 242 136 09 32 64 -31 -9
-1 sprites/foundations.pcx 322 136 09 40 64 -31 -9
-1 sprites/foundations.pcx 402 136 09 40 64 -31 -9
-1 sprites/foundations.pcx 482 136 09 32 64 -31 -9
-1 sprites/foundations.pcx 562 136 09 32 64 -31 -9
-1 sprites/foundations.pcx 642 136 09 40 64 -31 -9
-1 sprites/foundations.pcx 722 136 09 40 64 -31 -9
-1 sprites/foundations.pcx 2 200 09 40 64 -31 -9
-1 sprites/foundations.pcx 82 200 09 40 64 -31 -9
-1 sprites/foundations.pcx 162 200 09 40 64 -31 -9
-1 sprites/foundations.pcx 242 200 09 32 64 -31 -9
-1 sprites/foundations.pcx 322 200 09 32 64 -31 -9
-1 sprites/foundations.pcx 402 200 09 40 64 -31 -9
-1 sprites/foundations.pcx 482 200 09 40 64 -31 -9
-1 sprites/foundations.pcx 562 200 09 32 64 -31 -9
-1 sprites/foundations.pcx 642 200 09 32 64 -31 -9
-1 sprites/foundations.pcx 722 200 09 40 64 -31 -9
-1 sprites/foundations.pcx 2 264 09 40 64 -31 -9
-1 sprites/foundations.pcx 82 264 09 32 64 -31 -9
-1 sprites/foundations.pcx 162 264 09 32 64 -31 -9
-1 sprites/foundations.pcx 242 264 09 40 64 -31 -9
-1 sprites/foundations.pcx 322 264 09 40 64 -31 -9
-1 sprites/foundations.pcx 402 264 09 32 64 -31 -9
-1 sprites/foundations.pcx 482 264 09 40 64 -31 -9
-1 sprites/foundations.pcx 562 264 09 40 64 -31 -9
-1 sprites/foundations.pcx 642 264 09 32 64 -31 -9
-1 sprites/foundations.pcx 722 264 09 32 64 -31 -9
-1 sprites/foundations.pcx 2 328 09 40 64 -31 -9
-1 sprites/foundations.pcx 82 328 09 40 64 -31 -9
-1 sprites/foundations.pcx 162 328 09 40 64 -31 -9
-1 sprites/foundations.pcx 242 328 09 40 64 -31 -9
-1 sprites/foundations.pcx 322 328 09 40 64 -31 -9
-1 sprites/foundations.pcx 402 328 09 32 64 -31 -9
-1 sprites/foundations.pcx 482 328 09 32 64 -31 -9
-1 sprites/foundations.pcx 562 328 09 40 64 -31 -9
-1 sprites/foundations.pcx 642 328 09 40 64 -31 -9
-1 sprites/foundations.pcx 722 328 09 32 64 -31 -9
-1 sprites/foundations.pcx 2 392 09 32 64 -31 -9
-1 sprites/foundations.pcx 82 392 09 40 64 -31 -9
-1 sprites/foundations.pcx 162 392 09 40 64 -31 -9
-1 sprites/foundations.pcx 242 392 09 32 64 -31 -9
-1 sprites/foundations.pcx 322 392 09 32 64 -31 -9
-1 sprites/foundations.pcx 402 392 09 40 64 -31 -9
-1 sprites/foundations.pcx 482 392 09 40 64 -31 -9
-1 sprites/foundations.pcx 562 392 09 32 64 -31 -9
-1 sprites/foundations.pcx 642 392 09 40 64 -31 -9
-1 sprites/foundations.pcx 722 392 09 40 64 -31 -9
-1 sprites/foundations.pcx 2 456 09 32 64 -31 -9
-1 sprites/foundations.pcx 82 456 09 32 64 -31 -9
-1 sprites/foundations.pcx 162 456 09 40 64 -31 -9
-1 sprites/foundations.pcx 242 456 09 40 64 -31 -9
-1 sprites/foundations.pcx 322 456 09 40 64 -31 -9
-1 sprites/foundations.pcx 402 456 09 40 64 -31 -9
-1 sprites/foundations.pcx 482 456 09 40 64 -15 -17
-1 sprites/foundations.pcx 562 456 09 33 64 -31 -25
-1 sprites/foundations.pcx 642 456 09 40 64 -47 -17
-1 sprites/foundations.pcx 722 456 09 33 64 -31 -9
-1 sprites/foundations.pcx 2 520 09 40 64 -15 -17
-1 sprites/foundations.pcx 82 520 09 33 64 -31 -25
-1 sprites/foundations.pcx 162 520 09 40 64 -47 -17
-1 sprites/foundations.pcx 242 520 09 33 64 -31 -9
-1 sprites/foundations.pcx 322 520 09 40 64 -15 -17
-1 sprites/foundations.pcx 402 520 09 33 64 -31 -25
-1 sprites/foundations.pcx 482 520 09 40 64 -47 -17
-1 sprites/foundations.pcx 562 520 09 33 64 -31 -9
-1 sprites/foundations.pcx 642 520 09 40 64 -15 -17
-1 sprites/foundations.pcx 722 520 09 33 64 -31 -25
-1 sprites/foundations.pcx 2 584 09 40 64 -47 -17
-1 sprites/foundations.pcx 82 584 09 33 64 -31 -9
-1 * 0 07 83 01 \7! 01 5B
-1 * 0 05 06 5A
-1 sprites/foundations.pcx 194 584 09 40 64 -31 -9
-1 sprites/foundations.pcx 274 584 09 40 64 -31 -9
-1 sprites/foundations.pcx 354 584 09 32 64 -31 -9
-1 sprites/foundations.pcx 434 584 09 32 64 -31 -9
-1 sprites/foundations.pcx 514 584 09 40 64 -31 -9
-1 sprites/foundations.pcx 594 584 09 40 64 -31 -9
-1 sprites/foundations.pcx 674 584 09 40 64 -31 -9
-1 sprites/foundations.pcx 2 648 09 40 64 -31 -9
-1 sprites/foundations.pcx 82 648 09 40 64 -31 -9
-1 sprites/foundations.pcx 162 648 09 32 64 -31 -9
-1 sprites/foundations.pcx 242 648 09 32 64 -31 -9
-1 sprites/foundations.pcx 322 648 09 40 64 -31 -9
-1 sprites/foundations.pcx 402 648 09 40 64 -31 -9
-1 sprites/foundations.pcx 482 648 09 32 64 -31 -9
-1 sprites/foundations.pcx 562 648 09 32 64 -31 -9
-1 sprites/foundations.pcx 642 648 09 40 64 -31 -9
-1 sprites/foundations.pcx 722 648 09 40 64 -31 -9
-1 sprites/foundations.pcx 2 712 09 32 64 -31 -9
-1 sprites/foundations.pcx 82 712 09 32 64 -31 -9
-1 sprites/foundations.pcx 162 712 09 40 64 -31 -9
-1 sprites/foundations.pcx 242 712 09 40 64 -31 -9
-1 sprites/foundations.pcx 322 712 09 32 64 -31 -9
-1 sprites/foundations.pcx 402 712 09 40 64 -31 -9
-1 sprites/foundations.pcx 482 712 09 40 64 -31 -9
-1 sprites/foundations.pcx 562 712 09 32 64 -31 -9
-1 sprites/foundations.pcx 642 712 09 32 64 -31 -9
-1 sprites/foundations.pcx 722 712 09 40 64 -31 -9
-1 sprites/foundations.pcx 2 776 09 40 64 -31 -9
-1 sprites/foundations.pcx 82 776 09 40 64 -31 -9
-1 sprites/foundations.pcx 162 776 09 40 64 -31 -9
-1 sprites/foundations.pcx 242 776 09 40 64 -31 -9
-1 sprites/foundations.pcx 322 776 09 32 64 -31 -9
-1 sprites/foundations.pcx 402 776 09 32 64 -31 -9
-1 sprites/foundations.pcx 482 776 09 40 64 -31 -9
-1 sprites/foundations.pcx 562 776 09 40 64 -31 -9
-1 sprites/foundations.pcx 642 776 09 32 64 -31 -9
-1 sprites/foundations.pcx 722 776 09 32 64 -31 -9
-1 sprites/foundations.pcx 2 840 09 40 64 -31 -9
-1 sprites/foundations.pcx 82 840 09 40 64 -31 -9
-1 sprites/foundations.pcx 162 840 09 32 64 -31 -9
-1 sprites/foundations.pcx 242 840 09 32 64 -31 -9
-1 sprites/foundations.pcx 322 840 09 40 64 -31 -9
-1 sprites/foundations.pcx 402 840 09 40 64 -31 -9
-1 sprites/foundations.pcx 482 840 09 32 64 -31 -9
-1 sprites/foundations.pcx 562 840 09 40 64 -31 -9
-1 sprites/foundations.pcx 642 840 09 40 64 -31 -9
-1 sprites/foundations.pcx 722 840 09 32 64 -31 -9
-1 sprites/foundations.pcx 2 904 09 32 64 -31 -9
-1 sprites/foundations.pcx 82 904 09 40 64 -31 -9
-1 sprites/foundations.pcx 162 904 09 40 64 -31 -9
-1 sprites/foundations.pcx 242 904 09 40 64 -31 -9
-1 sprites/foundations.pcx 322 904 09 40 64 -31 -9
-1 sprites/foundations.pcx 402 904 09 40 64 -31 -9
-1 sprites/foundations.pcx 482 904 09 32 64 -31 -9
-1 sprites/foundations.pcx 562 904 09 32 64 -31 -9
-1 sprites/foundations.pcx 642 904 09 40 64 -31 -9
-1 sprites/foundations.pcx 722 904 09 40 64 -31 -9
-1 sprites/foundations.pcx 2 968 09 32 64 -31 -9
-1 sprites/foundations.pcx 82 968 09 32 64 -31 -9
-1 sprites/foundations.pcx 162 968 09 40 64 -31 -9
-1 sprites/foundations.pcx 242 968 09 40 64 -31 -9
-1 sprites/foundations.pcx 322 968 09 32 64 -31 -9
-1 sprites/foundations.pcx 402 968 09 32 64 -31 -9
-1 sprites/foundations.pcx 482 968 09 40 64 -31 -9
-1 sprites/foundations.pcx 562 968 09 40 64 -31 -9
-1 sprites/foundations.pcx 642 968 09 32 64 -31 -9
-1 sprites/foundations.pcx 722 968 09 40 64 -31 -9
-1 sprites/foundations.pcx 2 1032 09 40 64 -31 -9
-1 sprites/foundations.pcx 82 1032 09 32 64 -31 -9
-1 sprites/foundations.pcx 162 1032 09 32 64 -31 -9
-1 sprites/foundations.pcx 242 1032 09 40 64 -31 -9
-1 sprites/foundations.pcx 322 1032 09 40 64 -31 -9
-1 sprites/foundations.pcx 402 1032 09 40 64 -31 -9
-1 sprites/foundations.pcx 482 1032 09 40 64 -31 -9
-1 sprites/foundations.pcx 562 1032 09 40 64 -15 -17
-1 sprites/foundations.pcx 642 1032 09 33 64 -31 -25
-1 sprites/foundations.pcx 722 1032 09 40 64 -47 -17
-1 sprites/foundations.pcx 2 1096 09 33 64 -31 -9
-1 sprites/foundations.pcx 82 1096 09 40 64 -15 -17
-1 sprites/foundations.pcx 162 1096 09 33 64 -31 -25
-1 sprites/foundations.pcx 242 1096 09 40 64 -47 -17
-1 sprites/foundations.pcx 322 1096 09 33 64 -31 -9
-1 sprites/foundations.pcx 402 1096 09 40 64 -15 -17
-1 sprites/foundations.pcx 482 1096 09 33 64 -31 -25
-1 sprites/foundations.pcx 562 1096 09 40 64 -47 -17
-1 sprites/foundations.pcx 642 1096 09 33 64 -31 -9
-1 sprites/foundations.pcx 722 1096 09 40 64 -15 -17
-1 sprites/foundations.pcx 2 1160 09 33 64 -31 -25
-1 sprites/foundations.pcx 82 1160 09 40 64 -47 -17
-1 sprites/foundations.pcx 162 1160 09 33 64 -31 -9
-1 * 0 07 83 01 \7! 02 5B
-1 * 0 05 06 5A
-1 sprites/foundations.pcx 274 1160 09 40 64 -31 -9
-1 sprites/foundations.pcx 354 1160 09 40 64 -31 -9
-1 sprites/foundations.pcx 434 1160 09 32 64 -31 -9
-1 sprites/foundations.pcx 514 1160 09 32 64 -31 -9
-1 sprites/foundations.pcx 594 1160 09 40 64 -31 -9
-1 sprites/foundations.pcx 674 1160 09 40 64 -31 -9
-1 sprites/foundations.pcx 2 1224 09 40 64 -31 -9
-1 sprites/foundations.pcx 82 1224 09 40 64 -31 -9
-1 sprites/foundations.pcx 162 1224 09 40 64 -31 -9
-1 sprites/foundations.pcx 242 1224 09 32 64 -31 -9
-1 sprites/foundations.pcx 322 1224 09 32 64 -31 -9
-1 sprites/foundations.pcx 402 1224 09 40 64 -31 -9
-1 sprites/foundations.pcx 482 1224 09 40 64 -31 -9
-1 sprites/foundations.pcx 562 1224 09 32 64 -31 -9
-1 sprites/foundations.pcx 642 1224 09 32 64 -31 -9
-1 sprites/foundations.pcx 722 1224 09 40 64 -31 -9
-1 sprites/foundations.pcx 2 1288 09 40 64 -31 -9
-1 sprites/foundations.pcx 82 1288 09 32 64 -31 -9
-1 sprites/foundations.pcx 162 1288 09 32 64 -31 -9
-1 sprites/foundations.pcx 242 1288 09 40 64 -31 -9
-1 sprites/foundations.pcx 322 1288 09 40 64 -31 -9
-1 sprites/foundations.pcx 402 1288 09 32 64 -31 -9
-1 sprites/foundations.pcx 482 1288 09 40 64 -31 -9
-1 sprites/foundations.pcx 562 1288 09 40 64 -31 -9
-1 sprites/foundations.pcx 642 1288 09 32 64 -31 -9
-1 sprites/foundations.pcx 722 1288 09 32 64 -31 -9
-1 sprites/foundations.pcx 2 1352 09 40 64 -31 -9
-1 sprites/foundations.pcx 82 1352 09 40 64 -31 -9
-1 sprites/foundations.pcx 162 1352 09 40 64 -31 -9
-1 sprites/foundations.pcx 242 1352 09 40 64 -31 -9
-1 sprites/foundations.pcx 322 1352 09 40 64 -31 -9
-1 sprites/foundations.pcx 402 1352 09 32 64 -31 -9
-1 sprites/foundations.pcx 482 1352 09 32 64 -31 -9
-1 sprites/foundations.pcx 562 1352 09 40 64 -31 -9
-1 sprites/foundations.pcx 642 1352 09 40 64 -31 -9
-1 sprites/foundations.pcx 722 1352 09 32 64 -31 -9
-1 sprites/foundations.pcx 2 1416 09 32 64 -31 -9
-1 sprites/foundations.pcx 82 1416 09 40 64 -31 -9
-1 sprites/foundations.pcx 162 1416 09 40 64 -31 -9
-1 sprites/foundations.pcx 242 1416 09 32 64 -31 -9
-1 sprites/foundations.pcx 322 1416 09 32 64 -31 -9
-1 sprites/foundations.pcx 402 1416 09 40 64 -31 -9
-1 sprites/foundations.pcx 482 1416 09 40 64 -31 -9
-1 sprites/foundations.pcx 562 1416 09 32 64 -31 -9
-1 sprites/foundations.pcx 642 1416 09 40 64 -31 -9
-1 sprites/foundations.pcx 722 1416 09 40 64 -31 -9
-1 sprites/foundations.pcx 2 1480 09 32 64 -31 -9
-1 sprites/foundations.pcx 82 1480 09 32 64 -31 -9
-1 sprites/foundations.pcx 162 1480 09 40 64 -31 -9
-1 sprites/foundations.pcx 242 1480 09 40 64 -31 -9
-1 sprites/foundations.pcx 322 1480 09 40 64 -31 -9
-1 sprites/foundations.pcx 402 1480 09 40 64 -31 -9
-1 sprites/foundations.pcx 482 1480 09 40 64 -31 -9
-1 sprites/foundations.pcx 562 1480 09 32 64 -31 -9
-1 sprites/foundations.pcx 642 1480 09 32 64 -31 -9
-1 sprites/foundations.pcx 722 1480 09 40 64 -31 -9
-1 sprites/foundations.pcx 2 1544 09 40 64 -31 -9
-1 sprites/foundations.pcx 82 1544 09 32 64 -31 -9
-1 sprites/foundations.pcx 162 1544 09 32 64 -31 -9
-1 sprites/foundations.pcx 242 1544 09 40 64 -31 -9
-1 sprites/foundations.pcx 322 1544 09 40 64 -31 -9
-1 sprites/foundations.pcx 402 1544 09 32 64 -31 -9
-1 sprites/foundations.pcx 482 1544 09 32 64 -31 -9
-1 sprites/foundations.pcx 562 1544 09 40 64 -31 -9
-1 sprites/foundations.pcx 642 1544 09 40 64 -31 -9
-1 sprites/foundations.pcx 722 1544 09 32 64 -31 -9
-1 sprites/foundations.pcx 2 1608 09 40 64 -31 -9
-1 sprites/foundations.pcx 82 1608 09 40 64 -31 -9
-1 sprites/foundations.pcx 162 1608 09 32 64 -31 -9
-1 sprites/foundations.pcx 242 1608 09 32 64 -31 -9
-1 sprites/foundations.pcx 322 1608 09 40 64 -31 -9
-1 sprites/foundations.pcx 402 1608 09 40 64 -31 -9
-1 sprites/foundations.pcx 482 1608 09 40 64 -31 -9
-1 sprites/foundations.pcx 562 1608 09 40 64 -31 -9
-1 sprites/foundations.pcx 642 1608 09 40 64 -15 -17
-1 sprites/foundations.pcx 722 1608 09 33 64 -31 -25
-1 sprites/foundations.pcx 2 1672 09 40 64 -47 -17
-1 sprites/foundations.pcx 82 1672 09 33 64 -31 -9
-1 sprites/foundations.pcx 162 1672 09 40 64 -15 -17
-1 sprites/foundations.pcx 242 1672 09 33 64 -31 -25
-1 sprites/foundations.pcx 322 1672 09 40 64 -47 -17
-1 sprites/foundations.pcx 402 1672 09 33 64 -31 -9
-1 sprites/foundations.pcx 482 1672 09 40 64 -15 -17
-1 sprites/foundations.pcx 562 1672 09 33 64 -31 -25
-1 sprites/foundations.pcx 642 1672 09 40 64 -47 -17
-1 sprites/foundations.pcx 722 1672 09 33 64 -31 -9
-1 sprites/foundations.pcx 2 1736 09 40 64 -15 -17
-1 sprites/foundations.pcx 82 1736 09 33 64 -31 -25
-1 sprites/foundations.pcx 162 1736 09 40 64 -47 -17
-1 sprites/foundations.pcx 242 1736 09 33 64 -31 -9
-1 * 0 07 83 01 \7! 03 5B
-1 * 0 05 06 5A
-1 sprites/foundations.pcx 354 1736 09 40 64 -31 -9
-1 sprites/foundations.pcx 434 1736 09 40 64 -31 -9
-1 sprites/foundations.pcx 514 1736 09 32 64 -31 -9
-1 sprites/foundations.pcx 594 1736 09 32 64 -31 -9
-1 sprites/foundations.pcx 674 1736 09 40 64 -31 -9
-1 sprites/foundations.pcx 2 1800 09 40 64 -31 -9
-1 sprites/foundations.pcx 82 1800 09 40 64 -31 -9
-1 sprites/foundations.pcx 162 1800 09 40 64 -31 -9
-1 sprites/foundations.pcx 242 1800 09 40 64 -31 -9
-1 sprites/foundations.pcx 322 1800 09 32 64 -31 -9
-1 sprites/foundations.pcx 402 1800 09 32 64 -31 -9
-1 sprites/foundations.pcx 482 1800 09 40 64 -31 -9
-1 sprites/foundations.pcx 562 1800 09 40 64 -31 -9
-1 sprites/foundations.pcx 642 1800 09 32 64 -31 -9
-1 sprites/foundations.pcx 722 1800 09 32 64 -31 -9
-1 sprites/foundations.pcx 2 1864 09 40 64 -31 -9
-1 sprites/foundations.pcx 82 1864 09 40 64 -31 -9
-1 sprites/foundations.pcx 162 1864 09 32 64 -31 -9
-1 sprites/foundations.pcx 242 1864 09 32 64 -31 -9
-1 sprites/foundations.pcx 322 1864 09 40 64 -31 -9
-1 sprites/foundations.pcx 402 1864 09 40 64 -31 -9
-1 sprites/foundations.pcx 482 1864 09 32 64 -31 -9
-1 sprites/foundations.pcx 562 1864 09 40 64 -31 -9
-1 sprites/foundations.pcx 642 1864 09 40 64 -31 -9
-1 sprites/foundations.pcx 722 1864 09 32 64 -31 -9
-1 sprites/foundations.pcx 2 1928 09 32 64 -31 -9
-1 sprites/foundations.pcx 82 1928 09 40 64 -31 -9
-1 sprites/foundations.pcx 162 1928 09 40 64 -31 -9
-1 sprites/foundations.pcx 242 1928 09 40 64 -31 -9
-1 sprites/foundations.pcx 322 1928 09 40 64 -31 -9
-1 sprites/foundations.pcx 402 1928 09 40 64 -31 -9
-1 sprites/foundations.pcx 482 1928 09 32 64 -31 -9
-1 sprites/foundations.pcx 562 1928 09 32 64 -31 -9
-1 sprites/foundations.pcx 642 1928 09 40 64 -31 -9
-1 sprites/foundations.pcx 722 1928 09 40 64 -31 -9
-1 sprites/foundations.pcx 2 1992 09 32 64 -31 -9
-1 sprites/foundations.pcx 82 1992 09 32 64 -31 -9
-1 sprites/foundations.pcx 162 1992 09 40 64 -31 -9
-1 sprites/foundations.pcx 242 1992 09 40 64 -31 -9
-1 sprites/foundations.pcx 322 1992 09 32 64 -31 -9
-1 sprites/foundations.pcx 402 1992 09 32 64 -31 -9
-1 sprites/foundations.pcx 482 1992 09 40 64 -31 -9
-1 sprites/foundations.pcx 562 1992 09 40 64 -31 -9
-1 sprites/foundations.pcx 642 1992 09 32 64 -31 -9
-1 sprites/foundations.pcx 722 1992 09 40 64 -31 -9
-1 sprites/foundations.pcx 2 2056 09 40 64 -31 -9
-1 sprites/foundations.pcx 82 2056 09 32 64 -31 -9
-1 sprites/foundations.pcx 162 2056 09 32 64 -31 -9
-1 sprites/foundations.pcx 242 2056 09 40 64 -31 -9
-1 sprites/foundations.pcx 322 2056 09 40 64 -31 -9
-1 sprites/foundations.pcx 402 2056 09 40 64 -31 -9
-1 sprites/foundations.pcx 482 2056 09 40 64 -31 -9
-1 sprites/foundations.pcx 562 2056 09 40 64 -31 -9
-1 sprites/foundations.pcx 642 2056 09 32 64 -31 -9
-1 sprites/foundations.pcx 722 2056 09 32 64 -31 -9
-1 sprites/foundations.pcx 2 2120 09 40 64 -31 -9
-1 sprites/foundations.pcx 82 2120 09 40 64 -31 -9
-1 sprites/foundations.pcx 162 2120 09 32 64 -31 -9
-1 sprites/foundations.pcx 242 2120 09 32 64 -31 -9
-1 sprites/foundations.pcx 322 2120 09 40 64 -31 -9
-1 sprites/foundations.pcx 402 2120 09 40 64 -31 -9
-1 sprites/foundations.pcx 482 2120 09 32 64 -31 -9
-1 sprites/foundations.pcx 562 2120 09 32 64 -31 -9
-1 sprites/foundations.pcx 642 2120 09 40 64 -31 -9
-1 sprites/foundations.pcx 722 2120 09 40 64 -31 -9
-1 sprites/foundations.pcx 2 2184 09 32 64 -31 -9
-1 sprites/foundations.pcx 82 2184 09 40 64 -31 -9
-1 sprites/foundations.pcx 162 2184 09 40 64 -31 -9
-1 sprites/foundations.pcx 242 2184 09 32 64 -31 -9
-1 sprites/foundations.pcx 322 2184 09 32 64 -31 -9
-1 sprites/foundations.pcx 402 2184 09 40 64 -31 -9
-1 sprites/foundations.pcx 482 2184 09 40 64 -31 -9
-1 sprites/foundations.pcx 562 2184 09 40 64 -31 -9
-1 sprites/foundations.pcx 642 2184 09 40 64 -31 -9
-1 sprites/foundations.pcx 722 2184 09 40 64 -15 -17
-1 sprites/foundations.pcx 2 2248 09 33 64 -31 -25
-1 sprites/foundations.pcx 82 2248 09 40 64 -47 -17
-1 sprites/foundations.pcx 162 2248 09 33 64 -31 -9
-1 sprites/foundations.pcx 242 2248 09 40 64 -15 -17
-1 sprites/foundations.pcx 322 2248 09 33 64 -31 -25
-1 sprites/foundations.pcx 402 2248 09 40 64 -47 -17
-1 sprites/foundations.pcx 482 2248 09 33 64 -31 -9
-1 sprites/foundations.pcx 562 2248 09 40 64 -15 -17
-1 sprites/foundations.pcx 642 2248 09 33 64 -31 -25
-1 sprites/foundations.pcx 722 2248 09 40 64 -47 -17
-1 sprites/foundations.pcx 2 2312 09 33 64 -31 -9
-1 sprites/foundations.pcx 82 2312 09 40 64 -15 -17
-1 sprites/foundations.pcx 162 2312 09 33 64 -31 -25
-1 sprites/foundations.pcx 242 2312 09 40 64 -47 -17
-1 sprites/foundations.pcx 322 2312 09 33 64 -31 -9

Binary file not shown.

View File

@@ -0,0 +1,16 @@
//
// $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 "One way road graphics"
-1 * 0 05 09 06
-1 sprites/oneway.pcx 18 8 01 16 24 -12 -8
-1 sprites/oneway.pcx 50 8 01 16 24 -12 -8
-1 sprites/oneway.pcx 82 8 01 16 24 -12 -8
-1 sprites/oneway.pcx 114 8 01 16 24 -12 -8
-1 sprites/oneway.pcx 146 8 01 16 24 -12 -8
-1 sprites/oneway.pcx 178 8 01 16 24 -12 -8

BIN
media/extra_grf/oneway.pcx Normal file

Binary file not shown.

124
media/extra_grf/openttd.nfo Normal file
View File

@@ -0,0 +1,124 @@
// Automatically generated by GRFCODEC. Do not modify!
// (Info version 7)
// Format: spritenum pcxfile xpos ypos compression ysize xsize xrel yrel
//
// $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/>.
//
// Sources for OpenTTD's required base graphics.
// Checks whether the correct version of OpenTTD is used before
// allowing it to be used.
//
//
// -- NFO Renum 'settings' --
// Do not make nforenum warn about the fact that we use a reserved GRF ID
// @@WARNING DISABLE 101
// -- End of NFO Renum 'settings' --
//
//
// Number of sprites, it is wrong, but GRFcodec automagically gets it right.
//
0 * 4 00 00 00 00
//
// Check whether we are running OTTD or not.
//
-1 * 0 07 9D 04 \7= 01 00 00 00 01
-1 * 0 0B 03 7F FF 80 " is not for TTDPatch. Use ttdpatch(w).grf." 00
//
// Check for OTTD's version number
//
// First step... Variable A1 might not exist. If that's the case it always
// skips. As we do not want to skip out of the whole testing, we skip over
// the real version check.
-1 * 0 07 A1 04 \7= FF FF FF FF 02
// Real version check.
-1 * 0 07 A1 04 \7> \w11432 00 06 03
// If the version check is supported, the string is translateable via OpenTTD
// itself. Use it!.
-1 * 0 0B 03 7F 06 "0.6 (or trunk r11432)" 00
// Some OTTD versions before r11130 did support Action B, so use the English
// phrase there
-1 * 0 0B 03 7F FF "Requires OpenTTD version 0.6 (or trunk r11432) or better." 00
// Final fallback. No Action B support, just skip to the end of the file.
-1 * 0 07 A1 04 \7= FF FF FF FF 00
//
// Check DOS vs Windows version.
//
#ifdef DOS
-1 * 0 07 8D 01 \7= 00 01
-1 * 0 0B 03 7F 01 "DOS" 00
#else
-1 * 0 07 8D 01 \7= 01 01
-1 * 0 0B 03 7F 01 "Windows" 00
#endif
// Dos and Windows graphic files have a different GRF ID.
-1 * 0 08 07 FF "OT"
#ifdef DOS
"D"
#else
"W"
#endif
// Name of the GRF
"OpenTTD's base graphics "
#ifdef DOS
"(DOS)"
#else
"(Windows)"
#endif
00
// Description of the GRF.
"License: GPL version 2 (source: svn://svn.openttd.org/extra/ottd_grf)" 0D
"Marcin Grzegorczyk: non-halftile foundations" 0D
"Michael Blunck: catenary, signals" 0D
"George: canals" 0D
"David Dallaston: tram tracks" 0D
"Jonathan G. Rennison: aqueducts" 0D
"Bilbo, Jasper Vries: font" 0D
"OpenTTD developers: other graphics" 00
//
// The real data of the GRF is acquired from several subfiles.
//
#ifdef DOS
# include "2ccmapd.nfo"
#else
# include "2ccmapw.nfo"
#endif
#include "signals.nfo"
#include "elrails.nfo"
#include "foundations.nfo"
#include "canals.nfo"
#include "oneway.nfo"
#include "tramtracks.nfo"
#include "shore.nfo"
#include "sloped_tracks.nfo"
#include "airports.nfo"
#include "roadstops.nfo"
#include "aqueduct.nfo"
#include "autorail.nfo"
#include "flags.nfo"
#include "openttdgui.nfo"
#include "chars.nfo"
#include "overrides.nfo"
#include "fix_graphics.nfo"

View File

@@ -0,0 +1,175 @@
//
// $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/>.
//
// -- NFO Renum 'settings' --
// Do not make nforenum warn about the fact that we use more sprites.
// We are the 'authority' on how many sprites may be used.
// @@WARNING DISABLE 60
// -- End of NFO Renum 'settings' --
//
-1 * 0 0C "OpenTTD GUI graphics"
-1 * 0 05 15 9A
-1 sprites/openttdgui.pcx 18 8 09 31 64 -31 7
-1 sprites/openttdgui.pcx 98 8 09 31 64 -31 7
-1 sprites/openttdgui.pcx 178 8 09 31 64 -31 7
-1 sprites/openttdgui.pcx 258 8 09 31 64 -31 7
-1 sprites/openttdgui.pcx 338 8 09 31 64 -31 -1
-1 sprites/openttdgui.pcx 418 8 09 39 64 -31 -1
-1 sprites/openttdgui.pcx 498 8 09 31 64 -31 -1
-1 sprites/openttdgui.pcx 578 8 09 23 64 -31 7
-1 sprites/openttdgui.pcx 658 8 09 31 64 -31 7
-1 sprites/openttdgui.pcx 2 72 09 23 64 -31 7
-1 sprites/openttdgui.pcx 82 72 09 31 64 -31 7
-1 sprites/openttdgui.pcx 162 72 09 39 64 -31 -1
-1 sprites/openttdgui.pcx 242 72 01 26 23 0 0
-1 sprites/openttdgui.pcx 274 72 09 26 24 0 0
-1 sprites/openttdgui.pcx 306 72 01 8 4 28 16
-1 sprites/openttdgui.pcx 322 72 01 9 4 0 1
-1 sprites/openttdgui.pcx 338 72 09 23 32 0 1
-1 sprites/openttdgui.pcx 386 72 01 8 4 -31 15
-1 sprites/openttdgui.pcx 402 72 01 9 4 -3 0
-1 sprites/openttdgui.pcx 418 72 09 23 32 -31 0
-1 sprites/openttdgui.pcx 466 72 01 8 4 28 16
-1 sprites/openttdgui.pcx 482 72 01 9 4 0 1
-1 sprites/openttdgui.pcx 498 72 09 23 32 0 1
-1 sprites/openttdgui.pcx 546 72 01 8 4 -31 15
-1 sprites/openttdgui.pcx 562 72 01 9 4 -3 0
-1 sprites/openttdgui.pcx 578 72 09 23 32 -31 0
-1 sprites/openttdgui.pcx 626 72 01 8 4 28 16
-1 sprites/openttdgui.pcx 642 72 01 9 4 0 1
-1 sprites/openttdgui.pcx 658 72 09 23 32 0 1
-1 sprites/openttdgui.pcx 706 72 01 8 4 -31 15
-1 sprites/openttdgui.pcx 722 72 01 9 4 -3 0
-1 sprites/openttdgui.pcx 738 72 09 23 32 -31 0
-1 sprites/openttdgui.pcx 786 72 01 8 4 28 16
-1 sprites/openttdgui.pcx 2 136 01 9 4 0 1
-1 sprites/openttdgui.pcx 18 136 09 23 32 0 1
-1 sprites/openttdgui.pcx 66 136 01 8 4 -31 15
-1 sprites/openttdgui.pcx 82 136 01 9 4 -3 0
-1 sprites/openttdgui.pcx 98 136 09 23 32 -31 0
-1 sprites/openttdgui.pcx 146 136 09 10 10 0 0
-1 sprites/openttdgui.pcx 162 136 01 8 8 0 0
-1 sprites/openttdgui.pcx 178 136 09 9 7 0 0
-1 sprites/openttdgui.pcx 194 136 01 7 9 0 0
-1 sprites/openttdgui.pcx 210 136 01 7 9 0 0
-1 sprites/openttdgui.pcx 226 136 01 10 10 0 0
-1 sprites/openttdgui.pcx 242 136 09 7 7 0 0
-1 sprites/openttdgui.pcx 258 136 09 4 7 1 2
-1 sprites/openttdgui.pcx 274 136 09 4 7 1 2
-1 sprites/openttdgui.pcx 290 136 09 7 4 1 1
-1 sprites/openttdgui.pcx 306 136 09 7 4 2 1
-1 sprites/openttdgui.pcx 322 136 01 8 8 1 1
-1 sprites/openttdgui.pcx 338 136 01 9 9 0 0
-1 sprites/openttdgui.pcx 354 136 01 8 7 0 0
-1 sprites/openttdgui.pcx 370 136 01 8 8 0 0
-1 sprites/openttdgui.pcx 386 136 09 13 20 0 4
-1 sprites/openttdgui.pcx 418 136 03 36 56 0 0
-1 sprites/openttdgui.pcx 482 136 01 20 20 0 0
-1 sprites/openttdgui.pcx 514 136 01 32 32 0 0
-1 sprites/openttdgui.pcx 562 136 09 16 20 0 3
-1 sprites/openttdgui.pcx 594 136 03 43 56 0 0
-1 sprites/openttdgui.pcx 658 136 01 19 20 0 1
-1 sprites/openttdgui.pcx 690 136 01 32 32 0 0
-1 sprites/openttdgui.pcx 738 136 01 20 20 0 0
-1 sprites/openttdgui.pcx 2 200 01 31 31 1 1
-1 sprites/openttdgui.pcx 50 200 09 15 20 0 3
-1 sprites/openttdgui.pcx 82 200 03 36 56 0 0
-1 sprites/openttdgui.pcx 146 200 01 20 20 0 0
-1 sprites/openttdgui.pcx 178 200 01 32 32 0 0
-1 sprites/openttdgui.pcx 226 200 01 20 20 0 0
-1 sprites/openttdgui.pcx 258 200 01 32 32 0 0
-1 sprites/openttdgui.pcx 306 200 09 11 19 0 6
-1 sprites/openttdgui.pcx 338 200 03 36 56 0 0
-1 sprites/openttdgui.pcx 402 200 01 20 20 0 0
-1 sprites/openttdgui.pcx 434 200 01 32 32 0 0
-1 sprites/openttdgui.pcx 482 200 01 20 20 0 0
-1 sprites/openttdgui.pcx 514 200 01 32 32 0 0
-1 sprites/openttdgui.pcx 562 200 09 20 20 0 0
-1 sprites/openttdgui.pcx 594 200 09 20 20 0 0
-1 sprites/openttdgui.pcx 626 200 03 32 52 0 0
-1 sprites/openttdgui.pcx 690 200 09 33 29 -27 -16
-1 sprites/openttdgui.pcx 738 200 09 39 35 -29 -29
-1 sprites/openttdgui.pcx 2 264 09 34 29 1 -17
-1 sprites/openttdgui.pcx 50 264 09 39 34 -3 -28
-1 sprites/openttdgui.pcx 98 264 09 13 20 0 4
-1 sprites/openttdgui.pcx 130 264 03 36 56 0 0
-1 sprites/openttdgui.pcx 194 264 09 13 20 0 4
-1 sprites/openttdgui.pcx 226 264 03 36 56 0 0
-1 sprites/openttdgui.pcx 290 264 01 18 39 -9 -9
-1 sprites/openttdgui.pcx 338 264 01 44 72 -16 -35
-1 sprites/openttdgui.pcx 418 264 01 20 20 0 0
-1 sprites/openttdgui.pcx 450 264 01 44 72 -16 -35
-1 sprites/openttdgui.pcx 530 264 09 18 18 1 1
-1 sprites/openttdgui.pcx 562 264 01 20 20 0 0
-1 sprites/openttdgui.pcx 594 264 01 32 32 0 0
-1 sprites/openttdgui.pcx 642 264 01 18 18 0 0
-1 sprites/openttdgui.pcx 674 264 01 18 18 0 0
-1 sprites/openttdgui.pcx 706 264 01 18 18 0 0
-1 sprites/openttdgui.pcx 738 264 01 18 18 0 0
-1 sprites/openttdgui.pcx 770 264 01 18 18 0 0
-1 sprites/openttdgui.pcx 2 328 01 18 18 0 0
-1 sprites/openttdgui.pcx 34 328 01 18 18 0 0
-1 sprites/openttdgui.pcx 66 328 01 18 18 0 0
-1 sprites/openttdgui.pcx 98 328 01 18 18 0 0
-1 sprites/openttdgui.pcx 130 328 01 18 18 0 0
-1 sprites/openttdgui.pcx 162 328 01 18 18 0 0
-1 sprites/openttdgui.pcx 194 328 01 18 18 0 0
-1 sprites/openttdgui.pcx 226 328 01 18 18 0 0
-1 sprites/openttdgui.pcx 258 328 09 16 16 0 0
-1 sprites/openttdgui.pcx 290 328 01 16 16 0 0
-1 sprites/openttdgui.pcx 322 328 01 16 16 0 0
-1 sprites/openttdgui.pcx 354 328 01 16 16 0 0
-1 sprites/openttdgui.pcx 386 328 09 31 35 0 0
-1 sprites/openttdgui.pcx 434 328 01 30 33 0 0
-1 sprites/openttdgui.pcx 482 328 01 33 36 0 0
-1 sprites/openttdgui.pcx 530 328 01 33 37 0 0
-1 sprites/openttdgui.pcx 578 328 09 18 18 0 0
-1 sprites/openttdgui.pcx 610 328 09 18 18 0 0
-1 sprites/openttdgui.pcx 642 328 09 18 18 0 0
-1 sprites/openttdgui.pcx 674 328 09 18 18 0 0
-1 sprites/openttdgui.pcx 706 328 09 18 18 0 0
-1 sprites/openttdgui.pcx 738 328 09 18 18 0 0
-1 sprites/openttdgui.pcx 770 328 09 18 18 0 0
-1 sprites/openttdgui.pcx 2 376 09 18 18 0 0
-1 sprites/openttdgui.pcx 34 376 09 18 18 0 0
-1 sprites/openttdgui.pcx 66 376 09 18 18 0 0
-1 sprites/openttdgui.pcx 98 376 09 18 18 0 0
-1 sprites/openttdgui.pcx 130 376 09 18 18 0 0
-1 sprites/openttdgui.pcx 162 376 09 18 18 0 0
-1 sprites/openttdgui.pcx 194 376 09 18 18 0 0
-1 sprites/openttdgui.pcx 226 376 09 18 18 0 0
-1 sprites/openttdgui.pcx 258 376 09 18 18 0 0
-1 sprites/openttdgui.pcx 290 376 09 18 18 0 0
-1 sprites/openttdgui.pcx 322 376 09 18 18 0 0
-1 sprites/openttdgui.pcx 354 376 09 18 18 0 0
-1 sprites/openttdgui.pcx 386 376 09 18 18 0 0
-1 sprites/openttdgui.pcx 417 376 01 20 20 0 0
-1 sprites/openttdgui.pcx 447 376 01 22 19 0 0
-1 sprites/openttdgui.pcx 482 376 01 20 20 0 0
-1 sprites/openttdgui.pcx 514 376 01 44 54 -16 -35
-1 sprites/openttdgui.pcx 578 376 01 7 7 3 4
-1 sprites/openttdgui.pcx 594 376 01 7 7 3 4
-1 sprites/openttdgui.pcx 610 376 01 9 10 2 3
-1 sprites/openttdgui.pcx 626 376 01 9 10 2 3
-1 sprites/openttdgui.pcx 642 376 01 7 11 2 1
-1 sprites/openttdgui.pcx 658 376 01 9 9 3 3
-1 sprites/openttdgui.pcx 672 376 09 20 20 0 0
-1 sprites/openttdgui.pcx 700 376 09 20 20 0 0
-1 sprites/openttdgui.pcx 726 376 09 32 32 0 0
-1 sprites/openttdgui.pcx 764 376 09 10 10 0 0
-1 sprites/openttdgui.pcx 780 376 09 10 10 0 0
-1 sprites/openttdgui.pcx 4 430 09 7 7 0 0
-1 sprites/openttdgui.pcx 20 430 09 13 14 4 4
-1 sprites/openttdgui.pcx 38 430 09 8 7 0 0
-1 sprites/openttdgui.pcx 52 430 09 8 7 0 0
-1 sprites/openttdgui.pcx 65 430 09 8 7 0 0
// -- NFO Renum 'settings' --
// Undo disabling the warning
// @@WARNING ENABLE 60
// -- End of NFO Renum 'settings' --

Binary file not shown.

View File

@@ -0,0 +1,13 @@
//
// $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 "NewGRF overrides"
-1 * 30 00 08 01 03 00 11
44 44 22 02 44 44 01 11 // UKRS addons modifies UKRS
6D 62 04 02 6D 62 04 01 // DBSetXL ECS extension modifies DBSetXL
4D 65 6f 20 4D 65 6F 17 // LV4cut modifies LV4

View File

@@ -0,0 +1,18 @@
//
// $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 "Road stop graphics"
-1 * 0 05 11 08
-1 sprites/roadstops.pcx 18 8 09 23 13 5 -11
-1 sprites/roadstops.pcx 50 8 09 15 13 5 -2
-1 sprites/roadstops.pcx 82 8 09 19 21 -20 -7
-1 sprites/roadstops.pcx 114 8 09 17 22 -25 -4
-1 sprites/roadstops.pcx 146 8 09 25 32 -5 -9
-1 sprites/roadstops.pcx 194 8 09 26 28 -3 -12
-1 sprites/roadstops.pcx 242 8 09 25 29 -24 -12
-1 sprites/roadstops.pcx 290 8 09 25 32 -25 -9

Binary file not shown.

79
media/extra_grf/shore.nfo Normal file
View File

@@ -0,0 +1,79 @@
//
// $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/>.
//
//
// -- NFO Renum 'settings' --
// Do not make nforenum warn about the fact that we use an incorrect number of shores
// @@WARNING DISABLE 60
// -- End of NFO Renum 'settings' --
//
-1 * 6 07 83 01 \7! 00 0C
-1 * 54 0C "Missing shore tile graphics for "
"the Temperate climate"
-1 * 3 05 0D 0A
-1 sprites/shore.pcx 66 8 09 15 64 -31 0
-1 sprites/shore.pcx 146 8 09 31 64 -31 -8
-1 sprites/shore.pcx 226 8 09 23 64 -31 0
-1 sprites/shore.pcx 306 8 09 47 64 -31 -16
-1 sprites/shore.pcx 386 8 09 31 64 -31 -8
-1 sprites/shore.pcx 466 8 09 39 64 -31 -8
-1 sprites/shore.pcx 546 8 09 31 64 -31 -8
-1 sprites/shore.pcx 626 8 09 31 64 -31 -8
-1 sprites/shore.pcx 706 7 09 32 64 -31 -1
-1 sprites/shore.pcx 2 72 09 31 64 -31 -8
-1 * 6 07 83 01 \7! 01 0C
-1 * 55 0C "Missing shore tile graphics for "
"the sub-arctic climate"
-1 * 3 05 0D 0A
-1 sprites/shore.pcx 130 72 09 15 64 -31 0
-1 sprites/shore.pcx 210 72 09 31 64 -31 -8
-1 sprites/shore.pcx 290 72 09 23 64 -31 0
-1 sprites/shore.pcx 370 72 09 47 64 -31 -16
-1 sprites/shore.pcx 450 72 09 31 64 -31 -8
-1 sprites/shore.pcx 530 72 09 39 64 -31 -8
-1 sprites/shore.pcx 610 72 09 31 64 -31 -8
-1 sprites/shore.pcx 690 72 09 31 64 -31 -8
-1 sprites/shore.pcx 2 135 09 32 64 -31 -1
-1 sprites/shore.pcx 82 136 09 31 64 -31 -8
-1 * 6 07 83 01 \7! 02 0C
-1 * 57 0C "Missing shore tile graphics for "
"the sub-tropical climate"
-1 * 3 05 0D 0A
-1 sprites/shore.pcx 210 136 09 15 64 -31 0
-1 sprites/shore.pcx 290 136 09 31 64 -31 -8
-1 sprites/shore.pcx 370 136 09 23 64 -31 0
-1 sprites/shore.pcx 450 136 09 47 64 -31 -16
-1 sprites/shore.pcx 530 136 09 31 64 -31 -8
-1 sprites/shore.pcx 610 136 09 39 64 -31 -8
-1 sprites/shore.pcx 690 136 09 31 64 -31 -8
-1 sprites/shore.pcx 2 200 09 31 64 -31 -8
-1 sprites/shore.pcx 82 199 09 32 64 -31 -1
-1 sprites/shore.pcx 162 200 09 31 64 -31 -8
-1 * 6 07 83 01 \7! 03 0C
-1 * 44 0C "Missing shore tile graphics for "
"the toyland"
-1 * 3 05 0D 0A
-1 sprites/shore.pcx 290 200 09 15 64 -31 0
-1 sprites/shore.pcx 370 200 09 31 64 -31 -8
-1 sprites/shore.pcx 450 200 09 23 64 -31 0
-1 sprites/shore.pcx 530 200 09 47 64 -31 -16
-1 sprites/shore.pcx 610 200 09 31 64 -31 -8
-1 sprites/shore.pcx 690 200 09 39 64 -31 -8
-1 sprites/shore.pcx 2 264 09 31 64 -31 -8
-1 sprites/shore.pcx 82 264 09 31 64 -31 -8
-1 sprites/shore.pcx 162 263 09 32 64 -31 -1
-1 sprites/shore.pcx 242 264 09 31 64 -31 -8
//
// -- NFO Renum 'settings' --
// Reset warning about incorrect number of shores
// @@WARNING ENABLE 60
// -- End of NFO Renum 'settings' --
//

BIN
media/extra_grf/shore.pcx Normal file

Binary file not shown.

493
media/extra_grf/signals.nfo Normal file
View File

@@ -0,0 +1,493 @@
//
// $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 "Pre-signal, semaphore, and PBS graphics by Michael Blunck"
-1 * 0 05 04 F0
-1 sprites/signals.pcx 66 8 01 21 6 -2 -19
-1 sprites/signals.pcx 82 8 01 21 6 -2 -19
-1 sprites/signals.pcx 98 8 01 21 6 -2 -19
-1 sprites/signals.pcx 114 8 01 21 6 -2 -19
-1 sprites/signals.pcx 130 8 01 21 6 -2 -19
-1 sprites/signals.pcx 146 8 01 21 6 -2 -19
-1 sprites/signals.pcx 162 8 01 21 6 -2 -19
-1 sprites/signals.pcx 178 8 01 21 6 -2 -19
-1 sprites/signals.pcx 194 8 01 21 6 -2 -19
-1 sprites/signals.pcx 210 8 01 21 6 -2 -19
-1 sprites/signals.pcx 226 8 01 21 6 -2 -19
-1 sprites/signals.pcx 242 8 01 21 6 -2 -19
-1 sprites/signals.pcx 258 8 01 21 6 -2 -19
-1 sprites/signals.pcx 274 8 01 21 6 -2 -19
-1 sprites/signals.pcx 290 8 01 21 6 -2 -19
-1 sprites/signals.pcx 306 8 01 21 6 -2 -19
-1 sprites/signals.pcx 322 8 01 21 6 -2 -19
-1 sprites/signals.pcx 338 8 01 21 6 -2 -19
-1 sprites/signals.pcx 354 8 01 21 6 -2 -19
-1 sprites/signals.pcx 370 8 01 21 6 -2 -19
-1 sprites/signals.pcx 386 8 01 21 6 -2 -19
-1 sprites/signals.pcx 402 8 01 21 6 -2 -19
-1 sprites/signals.pcx 418 8 01 21 6 -2 -19
-1 sprites/signals.pcx 434 8 01 21 6 -2 -19
-1 sprites/signals.pcx 450 8 01 21 6 -2 -19
-1 sprites/signals.pcx 466 8 01 21 6 -2 -19
-1 sprites/signals.pcx 482 8 01 21 6 -2 -19
-1 sprites/signals.pcx 498 8 01 21 6 -2 -19
-1 sprites/signals.pcx 514 8 01 21 6 -2 -19
-1 sprites/signals.pcx 530 8 01 21 6 -2 -19
-1 sprites/signals.pcx 546 8 01 21 6 -2 -19
-1 sprites/signals.pcx 562 8 01 21 6 -2 -19
-1 sprites/signals.pcx 578 8 01 21 6 -2 -19
-1 sprites/signals.pcx 594 8 01 21 6 -2 -19
-1 sprites/signals.pcx 610 8 01 21 6 -2 -19
-1 sprites/signals.pcx 626 8 01 21 6 -2 -19
-1 sprites/signals.pcx 642 8 01 21 6 -2 -19
-1 sprites/signals.pcx 658 8 01 21 6 -2 -19
-1 sprites/signals.pcx 674 8 01 21 6 -2 -19
-1 sprites/signals.pcx 690 8 01 21 6 -2 -19
-1 sprites/signals.pcx 706 8 01 21 6 -2 -19
-1 sprites/signals.pcx 722 8 01 21 6 -2 -19
-1 sprites/signals.pcx 738 8 01 21 6 -2 -19
-1 sprites/signals.pcx 754 8 01 21 6 -2 -19
-1 sprites/signals.pcx 770 8 01 21 6 -2 -19
-1 sprites/signals.pcx 786 8 01 21 6 -2 -19
-1 sprites/signals.pcx 2 40 01 21 6 -2 -19
-1 sprites/signals.pcx 18 40 01 21 6 -2 -19
-1 sprites/signals.pcx 34 40 01 21 10 -6 -19
-1 sprites/signals.pcx 50 40 01 23 7 -3 -21
-1 sprites/signals.pcx 66 40 01 21 10 1 -19
-1 sprites/signals.pcx 82 40 01 21 9 1 -19
-1 sprites/signals.pcx 98 40 01 21 9 1 -19
-1 sprites/signals.pcx 114 40 01 23 6 1 -21
-1 sprites/signals.pcx 130 40 01 21 10 -7 -19
-1 sprites/signals.pcx 146 40 01 21 10 -7 -19
-1 sprites/signals.pcx 162 40 01 21 2 1 -19
-1 sprites/signals.pcx 178 40 01 24 2 1 -22
-1 sprites/signals.pcx 194 40 01 23 2 1 -21
-1 sprites/signals.pcx 210 40 01 26 2 1 -24
-1 sprites/signals.pcx 226 40 01 21 11 -7 -19
-1 sprites/signals.pcx 242 40 01 21 8 -4 -19
-1 sprites/signals.pcx 258 40 01 21 11 1 -19
-1 sprites/signals.pcx 274 40 01 21 8 1 -19
-1 sprites/signals.pcx 290 40 01 21 12 -6 -19
-1 sprites/signals.pcx 322 40 01 23 9 -3 -21
-1 sprites/signals.pcx 338 40 01 21 12 -1 -19
-1 sprites/signals.pcx 370 40 01 21 11 -1 -19
-1 sprites/signals.pcx 386 40 01 21 11 -1 -19
-1 sprites/signals.pcx 402 40 01 23 8 -1 -21
-1 sprites/signals.pcx 418 40 01 21 12 -7 -19
-1 sprites/signals.pcx 450 40 01 21 12 -7 -19
-1 sprites/signals.pcx 482 40 01 21 4 1 -19
-1 sprites/signals.pcx 498 40 01 24 4 1 -22
-1 sprites/signals.pcx 514 40 01 23 4 -1 -21
-1 sprites/signals.pcx 530 40 01 26 4 -1 -24
-1 sprites/signals.pcx 546 40 01 21 13 -7 -19
-1 sprites/signals.pcx 578 40 01 21 10 -4 -19
-1 sprites/signals.pcx 594 40 01 21 13 -1 -19
-1 sprites/signals.pcx 626 40 01 21 10 -1 -19
-1 sprites/signals.pcx 642 40 01 21 11 -6 -19
-1 sprites/signals.pcx 658 40 01 23 8 -3 -21
-1 sprites/signals.pcx 674 40 01 21 11 0 -19
-1 sprites/signals.pcx 690 40 01 21 10 0 -19
-1 sprites/signals.pcx 706 40 01 21 10 0 -19
-1 sprites/signals.pcx 722 40 01 23 7 0 -21
-1 sprites/signals.pcx 738 40 01 21 11 -7 -19
-1 sprites/signals.pcx 754 40 01 21 11 -7 -19
-1 sprites/signals.pcx 770 40 01 21 4 1 -19
-1 sprites/signals.pcx 786 40 01 24 4 1 -22
-1 sprites/signals.pcx 2 88 01 23 4 -1 -21
-1 sprites/signals.pcx 18 88 01 26 4 -1 -24
-1 sprites/signals.pcx 34 88 01 21 12 -7 -19
-1 sprites/signals.pcx 66 88 01 21 9 -4 -19
-1 sprites/signals.pcx 82 88 01 21 12 0 -19
-1 sprites/signals.pcx 114 88 01 21 9 0 -19
-1 sprites/signals.pcx 130 88 01 21 11 -6 -19
-1 sprites/signals.pcx 146 88 01 23 8 -3 -21
-1 sprites/signals.pcx 162 88 01 21 11 0 -19
-1 sprites/signals.pcx 178 88 01 21 10 0 -19
-1 sprites/signals.pcx 194 88 01 21 10 0 -19
-1 sprites/signals.pcx 210 88 01 23 7 0 -21
-1 sprites/signals.pcx 226 88 01 21 11 -7 -19
-1 sprites/signals.pcx 242 88 01 21 11 -7 -19
-1 sprites/signals.pcx 258 88 01 21 4 1 -19
-1 sprites/signals.pcx 274 88 01 24 4 1 -22
-1 sprites/signals.pcx 290 88 01 23 4 -1 -21
-1 sprites/signals.pcx 306 88 01 26 4 -1 -24
-1 sprites/signals.pcx 322 88 01 21 12 -7 -19
-1 sprites/signals.pcx 354 88 01 21 9 -4 -19
-1 sprites/signals.pcx 370 88 01 21 12 0 -19
-1 sprites/signals.pcx 402 88 01 21 9 0 -19
-1 sprites/signals.pcx 418 88 01 19 6 -2 -17
-1 sprites/signals.pcx 434 88 01 19 6 -2 -17
-1 sprites/signals.pcx 450 88 01 19 6 -2 -17
-1 sprites/signals.pcx 466 88 01 19 6 -2 -17
-1 sprites/signals.pcx 482 88 01 19 6 -2 -17
-1 sprites/signals.pcx 498 88 01 19 6 -2 -17
-1 sprites/signals.pcx 514 88 01 19 6 -2 -17
-1 sprites/signals.pcx 530 88 01 19 6 -2 -17
-1 sprites/signals.pcx 546 88 01 19 6 -2 -17
-1 sprites/signals.pcx 562 88 01 19 6 -2 -17
-1 sprites/signals.pcx 578 88 01 19 6 -2 -17
-1 sprites/signals.pcx 594 88 01 19 6 -2 -17
-1 sprites/signals.pcx 610 88 01 19 6 -2 -17
-1 sprites/signals.pcx 626 88 01 19 6 -2 -17
-1 sprites/signals.pcx 642 88 01 19 6 -2 -17
-1 sprites/signals.pcx 658 88 01 19 6 -2 -17
-1 sprites/signals.pcx 674 88 01 19 6 -2 -17
-1 sprites/signals.pcx 690 88 01 19 6 -2 -17
-1 sprites/signals.pcx 706 88 01 19 6 -2 -17
-1 sprites/signals.pcx 722 88 01 19 6 -2 -17
-1 sprites/signals.pcx 738 88 01 19 6 -2 -17
-1 sprites/signals.pcx 754 88 01 19 6 -2 -17
-1 sprites/signals.pcx 770 88 01 19 6 -2 -17
-1 sprites/signals.pcx 786 88 01 19 6 -2 -17
-1 sprites/signals.pcx 2 136 01 19 6 -2 -17
-1 sprites/signals.pcx 18 136 01 19 6 -2 -17
-1 sprites/signals.pcx 34 136 01 19 6 -2 -17
-1 sprites/signals.pcx 50 136 01 19 6 -2 -17
-1 sprites/signals.pcx 66 136 01 19 6 -2 -17
-1 sprites/signals.pcx 82 136 01 19 6 -2 -17
-1 sprites/signals.pcx 98 136 01 19 6 -2 -17
-1 sprites/signals.pcx 114 136 01 19 6 -2 -17
-1 sprites/signals.pcx 130 136 01 21 6 -2 -19
-1 sprites/signals.pcx 146 136 01 21 6 -2 -19
-1 sprites/signals.pcx 162 136 01 21 6 -2 -19
-1 sprites/signals.pcx 178 136 01 21 6 -2 -19
-1 sprites/signals.pcx 194 136 01 21 6 -2 -19
-1 sprites/signals.pcx 210 136 01 21 6 -2 -19
-1 sprites/signals.pcx 226 136 01 21 6 -2 -19
-1 sprites/signals.pcx 242 136 01 21 6 -2 -19
-1 sprites/signals.pcx 258 136 01 21 6 -2 -19
-1 sprites/signals.pcx 274 136 01 21 6 -2 -19
-1 sprites/signals.pcx 290 136 01 21 6 -2 -19
-1 sprites/signals.pcx 306 136 01 21 6 -2 -19
-1 sprites/signals.pcx 322 136 01 21 6 -2 -19
-1 sprites/signals.pcx 338 136 01 21 6 -2 -19
-1 sprites/signals.pcx 354 136 01 21 6 -2 -19
-1 sprites/signals.pcx 370 136 01 21 6 -2 -19
-1 sprites/signals.pcx 386 136 01 21 6 -2 -19
-1 sprites/signals.pcx 402 136 01 21 6 -2 -19
-1 sprites/signals.pcx 418 136 01 21 6 -2 -19
-1 sprites/signals.pcx 434 136 01 21 6 -2 -19
-1 sprites/signals.pcx 450 136 01 21 6 -2 -19
-1 sprites/signals.pcx 466 136 01 21 6 -2 -19
-1 sprites/signals.pcx 482 136 01 21 6 -2 -19
-1 sprites/signals.pcx 498 136 01 21 6 -2 -19
-1 sprites/signals.pcx 514 136 01 21 6 -2 -19
-1 sprites/signals.pcx 530 136 01 21 6 -2 -19
-1 sprites/signals.pcx 546 136 01 21 6 -2 -19
-1 sprites/signals.pcx 562 136 01 21 6 -2 -19
-1 sprites/signals.pcx 578 136 01 21 6 -2 -19
-1 sprites/signals.pcx 594 136 01 21 6 -2 -19
-1 sprites/signals.pcx 610 136 01 21 6 -2 -19
-1 sprites/signals.pcx 626 136 01 21 6 -2 -19
-1 sprites/signals.pcx 642 136 01 21 10 -6 -19
-1 sprites/signals.pcx 658 136 01 23 7 -3 -21
-1 sprites/signals.pcx 674 136 01 21 10 1 -19
-1 sprites/signals.pcx 690 136 01 21 9 1 -19
-1 sprites/signals.pcx 706 136 01 21 9 1 -19
-1 sprites/signals.pcx 722 136 01 23 6 1 -21
-1 sprites/signals.pcx 738 136 01 21 10 -7 -19
-1 sprites/signals.pcx 754 136 01 21 10 -7 -19
-1 sprites/signals.pcx 770 136 01 21 2 1 -19
-1 sprites/signals.pcx 786 136 01 24 2 1 -22
-1 sprites/signals.pcx 2 184 01 23 2 1 -21
-1 sprites/signals.pcx 18 184 01 26 2 1 -24
-1 sprites/signals.pcx 34 184 01 21 11 -7 -19
-1 sprites/signals.pcx 50 184 01 21 8 -4 -19
-1 sprites/signals.pcx 66 184 01 21 11 1 -19
-1 sprites/signals.pcx 82 184 01 21 8 1 -19
-1 sprites/signals.pcx 98 184 01 21 12 -6 -19
-1 sprites/signals.pcx 130 184 01 23 9 -3 -21
-1 sprites/signals.pcx 146 184 01 21 12 -1 -19
-1 sprites/signals.pcx 178 184 01 21 11 -1 -19
-1 sprites/signals.pcx 194 184 01 21 11 -1 -19
-1 sprites/signals.pcx 210 184 01 23 8 -1 -21
-1 sprites/signals.pcx 226 184 01 21 12 -7 -19
-1 sprites/signals.pcx 258 184 01 21 12 -7 -19
-1 sprites/signals.pcx 290 184 01 21 4 -1 -19
-1 sprites/signals.pcx 306 184 01 24 4 -1 -22
-1 sprites/signals.pcx 322 184 01 23 4 1 -21
-1 sprites/signals.pcx 338 184 01 26 4 1 -24
-1 sprites/signals.pcx 354 184 01 21 13 -7 -19
-1 sprites/signals.pcx 386 184 01 21 10 -4 -19
-1 sprites/signals.pcx 402 184 01 21 13 -1 -19
-1 sprites/signals.pcx 434 184 01 21 10 -1 -19
-1 sprites/signals.pcx 450 184 01 21 11 -6 -19
-1 sprites/signals.pcx 466 184 01 23 8 -3 -21
-1 sprites/signals.pcx 482 184 01 21 11 0 -19
-1 sprites/signals.pcx 498 184 01 21 10 0 -19
-1 sprites/signals.pcx 514 184 01 21 10 0 -19
-1 sprites/signals.pcx 530 184 01 23 7 0 -21
-1 sprites/signals.pcx 546 184 01 21 11 -7 -19
-1 sprites/signals.pcx 562 184 01 21 11 -7 -19
-1 sprites/signals.pcx 578 184 01 21 4 1 -19
-1 sprites/signals.pcx 594 184 01 24 4 1 -22
-1 sprites/signals.pcx 610 184 01 23 4 -1 -21
-1 sprites/signals.pcx 626 184 01 26 4 -1 -24
-1 sprites/signals.pcx 642 184 01 21 12 -7 -19
-1 sprites/signals.pcx 674 184 01 21 9 -4 -19
-1 sprites/signals.pcx 690 184 01 21 12 0 -19
-1 sprites/signals.pcx 722 184 01 21 9 0 -19
-1 sprites/signals.pcx 738 184 01 21 11 -6 -19
-1 sprites/signals.pcx 754 184 01 23 8 -3 -21
-1 sprites/signals.pcx 770 184 01 21 11 0 -19
-1 sprites/signals.pcx 786 184 01 21 10 0 -19
-1 sprites/signals.pcx 2 232 01 21 10 0 -19
-1 sprites/signals.pcx 18 232 01 23 7 0 -21
-1 sprites/signals.pcx 34 232 01 21 11 -7 -19
-1 sprites/signals.pcx 50 232 01 21 11 -7 -19
-1 sprites/signals.pcx 66 232 01 21 4 1 -19
-1 sprites/signals.pcx 82 232 01 24 4 1 -22
-1 sprites/signals.pcx 98 232 01 23 4 -1 -21
-1 sprites/signals.pcx 114 232 01 26 4 -1 -24
-1 sprites/signals.pcx 130 232 01 21 12 -7 -19
-1 sprites/signals.pcx 162 232 01 21 9 -4 -19
-1 sprites/signals.pcx 178 232 01 21 12 0 -19
-1 sprites/signals.pcx 210 232 01 21 9 0 -19
-1 * 0 07 85 01 \70 3B F2
-1 * 0 07 86 01 \70 04 F1
-1 * 0 05 04 F0
-1 sprites/signals.pcx 274 232 01 21 6 -2 -19
-1 sprites/signals.pcx 290 232 01 21 6 -2 -19
-1 sprites/signals.pcx 306 232 01 21 6 -2 -19
-1 sprites/signals.pcx 322 232 01 21 6 -2 -19
-1 sprites/signals.pcx 338 232 01 21 6 -2 -19
-1 sprites/signals.pcx 354 232 01 21 6 -2 -19
-1 sprites/signals.pcx 370 232 01 21 6 -2 -19
-1 sprites/signals.pcx 386 232 01 21 6 -2 -19
-1 sprites/signals.pcx 402 232 01 21 6 -2 -19
-1 sprites/signals.pcx 418 232 01 21 6 -2 -19
-1 sprites/signals.pcx 434 232 01 21 6 -2 -19
-1 sprites/signals.pcx 450 232 01 21 6 -2 -19
-1 sprites/signals.pcx 466 232 01 21 6 -2 -19
-1 sprites/signals.pcx 482 232 01 21 6 -2 -19
-1 sprites/signals.pcx 498 232 01 21 6 -2 -19
-1 sprites/signals.pcx 514 232 01 21 6 -2 -19
-1 sprites/signals.pcx 530 232 01 21 6 -2 -19
-1 sprites/signals.pcx 546 232 01 21 6 -2 -19
-1 sprites/signals.pcx 562 232 01 21 6 -2 -19
-1 sprites/signals.pcx 578 232 01 21 6 -2 -19
-1 sprites/signals.pcx 594 232 01 21 6 -2 -19
-1 sprites/signals.pcx 610 232 01 21 6 -2 -19
-1 sprites/signals.pcx 626 232 01 21 6 -2 -19
-1 sprites/signals.pcx 642 232 01 21 6 -2 -19
-1 sprites/signals.pcx 658 232 01 21 6 -2 -19
-1 sprites/signals.pcx 674 232 01 21 6 -2 -19
-1 sprites/signals.pcx 690 232 01 21 6 -2 -19
-1 sprites/signals.pcx 706 232 01 21 6 -2 -19
-1 sprites/signals.pcx 722 232 01 21 6 -2 -19
-1 sprites/signals.pcx 738 232 01 21 6 -2 -19
-1 sprites/signals.pcx 754 232 01 21 6 -2 -19
-1 sprites/signals.pcx 770 232 01 21 6 -2 -19
-1 sprites/signals.pcx 786 232 01 21 6 -2 -19
-1 sprites/signals.pcx 2 280 01 21 6 -2 -19
-1 sprites/signals.pcx 18 280 01 21 6 -2 -19
-1 sprites/signals.pcx 34 280 01 21 6 -2 -19
-1 sprites/signals.pcx 50 280 01 21 6 -2 -19
-1 sprites/signals.pcx 66 280 01 21 6 -2 -19
-1 sprites/signals.pcx 82 280 01 21 6 -2 -19
-1 sprites/signals.pcx 98 280 01 21 6 -2 -19
-1 sprites/signals.pcx 114 280 01 21 6 -2 -19
-1 sprites/signals.pcx 130 280 01 21 6 -2 -19
-1 sprites/signals.pcx 146 280 01 21 6 -2 -19
-1 sprites/signals.pcx 162 280 01 21 6 -2 -19
-1 sprites/signals.pcx 178 280 01 21 6 -2 -19
-1 sprites/signals.pcx 194 280 01 21 6 -2 -19
-1 sprites/signals.pcx 210 280 01 21 6 -2 -19
-1 sprites/signals.pcx 226 280 01 21 6 -2 -19
-1 sprites/signals.pcx 242 280 01 21 10 -7 -19
-1 sprites/signals.pcx 258 280 01 23 10 -8 -21
-1 sprites/signals.pcx 274 280 01 23 10 -7 -21
-1 sprites/signals.pcx 290 280 01 26 7 -5 -24
-1 sprites/signals.pcx 306 280 01 21 10 -7 -19
-1 sprites/signals.pcx 322 280 01 23 10 -6 -21
-1 sprites/signals.pcx 338 280 01 23 10 1 -21
-1 sprites/signals.pcx 354 280 01 26 7 2 -24
-1 sprites/signals.pcx 370 280 01 23 3 0 -21
-1 sprites/signals.pcx 386 280 01 26 3 0 -24
-1 sprites/signals.pcx 402 280 01 21 3 0 -19
-1 sprites/signals.pcx 418 280 01 24 3 0 -22
-1 sprites/signals.pcx 434 280 01 21 12 0 -19
-1 sprites/signals.pcx 466 280 01 24 9 0 -22
-1 sprites/signals.pcx 482 280 01 21 12 -9 -19
-1 sprites/signals.pcx 514 280 01 24 9 -6 -22
-1 sprites/signals.pcx 530 280 01 21 12 -9 -19
-1 sprites/signals.pcx 562 280 01 23 11 -9 -21
-1 sprites/signals.pcx 578 280 01 23 11 -7 -21
-1 sprites/signals.pcx 594 280 01 26 9 -5 -24
-1 sprites/signals.pcx 610 280 01 21 12 -7 -19
-1 sprites/signals.pcx 642 280 01 23 11 -6 -21
-1 sprites/signals.pcx 658 280 01 23 11 0 -21
-1 sprites/signals.pcx 674 280 01 26 9 0 -24
-1 sprites/signals.pcx 690 280 01 23 5 0 -21
-1 sprites/signals.pcx 706 280 01 26 5 0 -24
-1 sprites/signals.pcx 722 280 01 21 5 -2 -19
-1 sprites/signals.pcx 738 280 01 24 5 -2 -22
-1 sprites/signals.pcx 754 280 01 21 13 -1 -19
-1 sprites/signals.pcx 786 280 01 24 10 -1 -22
-1 sprites/signals.pcx 2 328 01 21 13 -9 -19
-1 sprites/signals.pcx 34 328 01 24 10 -6 -22
-1 sprites/signals.pcx 50 328 01 21 11 -8 -19
-1 sprites/signals.pcx 66 328 01 23 10 -8 -21
-1 sprites/signals.pcx 82 328 01 23 10 -7 -21
-1 sprites/signals.pcx 98 328 01 26 8 -5 -24
-1 sprites/signals.pcx 114 328 01 21 11 -7 -19
-1 sprites/signals.pcx 130 328 01 23 10 -6 -21
-1 sprites/signals.pcx 146 328 01 23 10 1 -21
-1 sprites/signals.pcx 162 328 01 26 8 1 -24
-1 sprites/signals.pcx 178 328 01 23 5 0 -21
-1 sprites/signals.pcx 194 328 01 26 5 0 -24
-1 sprites/signals.pcx 210 328 01 21 5 -2 -19
-1 sprites/signals.pcx 226 328 01 24 5 -2 -22
-1 sprites/signals.pcx 242 328 01 21 12 0 -19
-1 sprites/signals.pcx 274 328 01 24 9 0 -22
-1 sprites/signals.pcx 290 328 01 21 12 -9 -19
-1 sprites/signals.pcx 322 328 01 24 9 -6 -22
-1 sprites/signals.pcx 338 328 01 21 11 -8 -19
-1 sprites/signals.pcx 354 328 01 23 10 -8 -21
-1 sprites/signals.pcx 370 328 01 23 10 -7 -21
-1 sprites/signals.pcx 386 328 01 26 8 -5 -24
-1 sprites/signals.pcx 402 328 01 21 11 -7 -19
-1 sprites/signals.pcx 418 328 01 23 10 -6 -21
-1 sprites/signals.pcx 434 328 01 23 10 1 -21
-1 sprites/signals.pcx 450 328 01 26 8 1 -24
-1 sprites/signals.pcx 466 328 01 23 5 0 -21
-1 sprites/signals.pcx 482 328 01 26 5 0 -24
-1 sprites/signals.pcx 498 328 01 21 5 -2 -19
-1 sprites/signals.pcx 514 328 01 24 5 -2 -22
-1 sprites/signals.pcx 530 328 01 21 12 0 -19
-1 sprites/signals.pcx 562 328 01 24 9 0 -22
-1 sprites/signals.pcx 578 328 01 21 12 -9 -19
-1 sprites/signals.pcx 610 328 01 24 9 -6 -22
-1 sprites/signals.pcx 626 328 01 19 6 -2 -17
-1 sprites/signals.pcx 642 328 01 19 6 -2 -17
-1 sprites/signals.pcx 658 328 01 19 6 -2 -17
-1 sprites/signals.pcx 674 328 01 19 6 -2 -17
-1 sprites/signals.pcx 690 328 01 19 6 -2 -17
-1 sprites/signals.pcx 706 328 01 19 6 -2 -17
-1 sprites/signals.pcx 722 328 01 19 6 -2 -17
-1 sprites/signals.pcx 738 328 01 19 6 -2 -17
-1 sprites/signals.pcx 754 328 01 19 6 -2 -17
-1 sprites/signals.pcx 770 328 01 19 6 -2 -17
-1 sprites/signals.pcx 786 328 01 19 6 -2 -17
-1 sprites/signals.pcx 2 376 01 19 6 -2 -17
-1 sprites/signals.pcx 18 376 01 19 6 -2 -17
-1 sprites/signals.pcx 34 376 01 19 6 -2 -17
-1 sprites/signals.pcx 50 376 01 19 6 -2 -17
-1 sprites/signals.pcx 66 376 01 19 6 -2 -17
-1 sprites/signals.pcx 82 376 01 19 6 -2 -17
-1 sprites/signals.pcx 98 376 01 19 6 -2 -17
-1 sprites/signals.pcx 114 376 01 19 6 -2 -17
-1 sprites/signals.pcx 130 376 01 19 6 -2 -17
-1 sprites/signals.pcx 146 376 01 19 6 -2 -17
-1 sprites/signals.pcx 162 376 01 19 6 -2 -17
-1 sprites/signals.pcx 178 376 01 19 6 -2 -17
-1 sprites/signals.pcx 194 376 01 19 6 -2 -17
-1 sprites/signals.pcx 210 376 01 19 6 -2 -17
-1 sprites/signals.pcx 226 376 01 19 6 -2 -17
-1 sprites/signals.pcx 242 376 01 19 6 -2 -17
-1 sprites/signals.pcx 258 376 01 19 6 -2 -17
-1 sprites/signals.pcx 274 376 01 19 6 -2 -17
-1 sprites/signals.pcx 290 376 01 19 6 -2 -17
-1 sprites/signals.pcx 306 376 01 19 6 -2 -17
-1 sprites/signals.pcx 322 376 01 19 6 -2 -17
-1 sprites/signals.pcx 338 376 01 21 6 -2 -19
-1 sprites/signals.pcx 354 376 01 21 6 -2 -19
-1 sprites/signals.pcx 370 376 01 21 6 -2 -19
-1 sprites/signals.pcx 386 376 01 21 6 -2 -19
-1 sprites/signals.pcx 402 376 01 21 6 -2 -19
-1 sprites/signals.pcx 418 376 01 21 6 -2 -19
-1 sprites/signals.pcx 434 376 01 21 6 -2 -19
-1 sprites/signals.pcx 450 376 01 21 6 -2 -19
-1 sprites/signals.pcx 466 376 01 21 6 -2 -19
-1 sprites/signals.pcx 482 376 01 21 6 -2 -19
-1 sprites/signals.pcx 498 376 01 21 6 -2 -19
-1 sprites/signals.pcx 514 376 01 21 6 -2 -19
-1 sprites/signals.pcx 530 376 01 21 6 -2 -19
-1 sprites/signals.pcx 546 376 01 21 6 -2 -19
-1 sprites/signals.pcx 562 376 01 21 6 -2 -19
-1 sprites/signals.pcx 578 376 01 21 6 -2 -19
-1 sprites/signals.pcx 594 376 01 21 6 -2 -19
-1 sprites/signals.pcx 610 376 01 21 6 -2 -19
-1 sprites/signals.pcx 626 376 01 21 6 -2 -19
-1 sprites/signals.pcx 642 376 01 21 6 -2 -19
-1 sprites/signals.pcx 658 376 01 21 6 -2 -19
-1 sprites/signals.pcx 674 376 01 21 6 -2 -19
-1 sprites/signals.pcx 690 376 01 21 6 -2 -19
-1 sprites/signals.pcx 706 376 01 21 6 -2 -19
-1 sprites/signals.pcx 722 376 01 21 6 -2 -19
-1 sprites/signals.pcx 738 376 01 21 6 -2 -19
-1 sprites/signals.pcx 754 376 01 21 6 -2 -19
-1 sprites/signals.pcx 770 376 01 21 6 -2 -19
-1 sprites/signals.pcx 786 376 01 21 6 -2 -19
-1 sprites/signals.pcx 2 408 01 21 6 -2 -19
-1 sprites/signals.pcx 18 408 01 21 6 -2 -19
-1 sprites/signals.pcx 34 408 01 21 6 -2 -19
-1 sprites/signals.pcx 50 408 01 21 10 -7 -19
-1 sprites/signals.pcx 66 408 01 23 10 -8 -21
-1 sprites/signals.pcx 82 408 01 23 10 -7 -21
-1 sprites/signals.pcx 98 408 01 26 7 -5 -24
-1 sprites/signals.pcx 114 408 01 21 10 -7 -19
-1 sprites/signals.pcx 130 408 01 23 10 -6 -21
-1 sprites/signals.pcx 146 408 01 23 10 1 -21
-1 sprites/signals.pcx 162 408 01 26 7 2 -24
-1 sprites/signals.pcx 178 408 01 23 3 0 -21
-1 sprites/signals.pcx 194 408 01 26 3 0 -24
-1 sprites/signals.pcx 210 408 01 21 3 0 -19
-1 sprites/signals.pcx 226 408 01 24 3 0 -22
-1 sprites/signals.pcx 242 408 01 21 12 0 -19
-1 sprites/signals.pcx 274 408 01 24 9 0 -22
-1 sprites/signals.pcx 290 408 01 21 12 -9 -19
-1 sprites/signals.pcx 322 408 01 24 9 -6 -22
-1 sprites/signals.pcx 338 408 01 21 12 -9 -19
-1 sprites/signals.pcx 370 408 01 23 11 -9 -21
-1 sprites/signals.pcx 386 408 01 23 11 -7 -21
-1 sprites/signals.pcx 402 408 01 26 9 -5 -24
-1 sprites/signals.pcx 418 408 01 21 12 -7 -19
-1 sprites/signals.pcx 450 408 01 23 11 -6 -21
-1 sprites/signals.pcx 466 408 01 23 11 0 -21
-1 sprites/signals.pcx 482 408 01 26 9 0 -24
-1 sprites/signals.pcx 498 408 01 23 5 -1 -21
-1 sprites/signals.pcx 514 408 01 26 5 -1 -24
-1 sprites/signals.pcx 530 408 01 21 5 -1 -19
-1 sprites/signals.pcx 546 408 01 24 5 -1 -22
-1 sprites/signals.pcx 562 408 01 21 13 -1 -19
-1 sprites/signals.pcx 594 408 01 24 10 -1 -22
-1 sprites/signals.pcx 610 408 01 21 13 -9 -19
-1 sprites/signals.pcx 642 408 01 24 10 -6 -22
-1 sprites/signals.pcx 658 408 01 21 11 -8 -19
-1 sprites/signals.pcx 674 408 01 23 10 -8 -21
-1 sprites/signals.pcx 690 408 01 23 10 -7 -21
-1 sprites/signals.pcx 706 408 01 26 8 -5 -24
-1 sprites/signals.pcx 722 408 01 21 11 -7 -19
-1 sprites/signals.pcx 738 408 01 23 10 -6 -21
-1 sprites/signals.pcx 754 408 01 23 10 1 -21
-1 sprites/signals.pcx 770 408 01 26 8 1 -24
-1 sprites/signals.pcx 786 408 01 23 5 0 -21
-1 sprites/signals.pcx 2 456 01 26 5 0 -24
-1 sprites/signals.pcx 18 456 01 21 5 -2 -19
-1 sprites/signals.pcx 34 456 01 24 5 -2 -22
-1 sprites/signals.pcx 50 456 01 21 12 0 -19
-1 sprites/signals.pcx 82 456 01 24 9 0 -22
-1 sprites/signals.pcx 98 456 01 21 12 -9 -19
-1 sprites/signals.pcx 130 456 01 24 9 -6 -22
-1 sprites/signals.pcx 146 456 01 21 11 -8 -19
-1 sprites/signals.pcx 162 456 01 23 10 -8 -21
-1 sprites/signals.pcx 178 456 01 23 10 -7 -21
-1 sprites/signals.pcx 194 456 01 26 8 -5 -24
-1 sprites/signals.pcx 210 456 01 21 11 -7 -19
-1 sprites/signals.pcx 226 456 01 23 10 -6 -21
-1 sprites/signals.pcx 242 456 01 23 10 1 -21
-1 sprites/signals.pcx 258 456 01 26 8 1 -24
-1 sprites/signals.pcx 274 456 01 23 5 0 -21
-1 sprites/signals.pcx 290 456 01 26 5 0 -24
-1 sprites/signals.pcx 306 456 01 21 5 -2 -19
-1 sprites/signals.pcx 322 456 01 24 5 -2 -22
-1 sprites/signals.pcx 338 456 01 21 12 0 -19
-1 sprites/signals.pcx 370 456 01 24 9 0 -22
-1 sprites/signals.pcx 386 456 01 21 12 -9 -19
-1 sprites/signals.pcx 418 456 01 24 9 -6 -22

BIN
media/extra_grf/signals.pcx Normal file

Binary file not shown.

View File

@@ -0,0 +1,22 @@
//
// $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 "Sloped tracks"
-1 * 3 05 0F 0C
-1 sprites/sloped_tracks.pcx 50 8 09 29 42 -19 -3
-1 sprites/sloped_tracks.pcx 98 8 09 13 41 -20 5
-1 sprites/sloped_tracks.pcx 146 8 09 14 42 -19 5
-1 sprites/sloped_tracks.pcx 194 8 09 29 42 -21 -3
-1 sprites/sloped_tracks.pcx 242 8 09 25 33 -15 -1
-1 sprites/sloped_tracks.pcx 290 8 09 10 33 -15 7
-1 sprites/sloped_tracks.pcx 338 8 09 10 34 -15 7
-1 sprites/sloped_tracks.pcx 386 8 09 25 34 -15 -1
-1 sprites/sloped_tracks.pcx 434 8 09 23 31 -13 -1
-1 sprites/sloped_tracks.pcx 482 8 09 10 32 -15 7
-1 sprites/sloped_tracks.pcx 530 8 09 10 31 -15 7
-1 sprites/sloped_tracks.pcx 578 8 09 23 31 -16 -1

Binary file not shown.

View File

@@ -0,0 +1,123 @@
//
// $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 "Tram track graphics by PikkaBird"
-1 * 0 05 0B 71
-1 sprites/tramtracks.pcx 18 8 09 13 20 0 4
-1 sprites/tramtracks.pcx 50 8 09 13 20 0 4
-1 sprites/tramtracks.pcx 82 8 03 36 64 -18 -8
-1 sprites/tramtracks.pcx 162 8 03 36 62 -16 -8
-1 sprites/tramtracks.pcx 242 8 09 31 64 -31 0
-1 sprites/tramtracks.pcx 322 8 09 31 64 -31 0
-1 sprites/tramtracks.pcx 402 8 09 31 64 -31 0
-1 sprites/tramtracks.pcx 482 8 09 31 64 -31 0
-1 sprites/tramtracks.pcx 562 8 09 31 64 -31 0
-1 sprites/tramtracks.pcx 642 8 09 31 64 -31 0
-1 sprites/tramtracks.pcx 722 8 09 31 64 -31 0
-1 sprites/tramtracks.pcx 2 56 09 31 64 -31 0
-1 sprites/tramtracks.pcx 82 56 09 31 64 -31 0
-1 sprites/tramtracks.pcx 162 56 09 31 64 -31 0
-1 sprites/tramtracks.pcx 242 56 09 31 64 -31 0
-1 sprites/tramtracks.pcx 322 56 09 39 64 -31 -8
-1 sprites/tramtracks.pcx 402 56 09 23 64 -31 0
-1 sprites/tramtracks.pcx 482 56 09 23 64 -31 0
-1 sprites/tramtracks.pcx 562 56 09 39 64 -31 -8
-1 sprites/tramtracks.pcx 642 56 09 31 64 -31 0
-1 sprites/tramtracks.pcx 722 56 09 31 64 -31 0
-1 sprites/tramtracks.pcx 2 120 09 31 64 -31 0
-1 sprites/tramtracks.pcx 82 120 09 31 64 -31 0
-1 sprites/tramtracks.pcx 162 120 09 31 64 -31 0
-1 sprites/tramtracks.pcx 242 120 09 31 64 -31 0
-1 sprites/tramtracks.pcx 322 120 09 31 64 -31 0
-1 sprites/tramtracks.pcx 402 120 09 31 64 -31 0
-1 sprites/tramtracks.pcx 482 120 09 31 64 -31 0
-1 sprites/tramtracks.pcx 562 120 09 31 64 -31 0
-1 sprites/tramtracks.pcx 642 120 09 31 64 -31 0
-1 sprites/tramtracks.pcx 722 120 09 31 64 -31 0
-1 sprites/tramtracks.pcx 2 168 09 31 64 -31 0
-1 sprites/tramtracks.pcx 82 168 09 31 64 -31 0
-1 sprites/tramtracks.pcx 162 168 09 31 64 -31 0
-1 sprites/tramtracks.pcx 242 168 09 31 64 -31 0
-1 sprites/tramtracks.pcx 322 168 09 31 64 -31 0
-1 sprites/tramtracks.pcx 402 168 09 31 64 -31 0
-1 sprites/tramtracks.pcx 482 168 09 31 64 -31 0
-1 sprites/tramtracks.pcx 562 168 09 39 64 -31 -8
-1 sprites/tramtracks.pcx 642 168 09 23 64 -31 0
-1 sprites/tramtracks.pcx 722 168 09 23 64 -31 0
-1 sprites/tramtracks.pcx 2 232 09 39 64 -31 -8
-1 sprites/tramtracks.pcx 82 232 09 31 64 -31 0
-1 sprites/tramtracks.pcx 162 232 09 31 64 -31 0
-1 sprites/tramtracks.pcx 242 232 09 31 64 -31 0
-1 sprites/tramtracks.pcx 322 232 09 31 64 -31 0
-1 sprites/tramtracks.pcx 402 232 09 31 64 -31 0
-1 sprites/tramtracks.pcx 482 232 09 31 64 -31 0
-1 sprites/tramtracks.pcx 562 232 09 20 20 0 0
-1 sprites/tramtracks.pcx 594 232 09 31 64 -31 0
-1 sprites/tramtracks.pcx 674 232 09 64 62 2 -49
-1 sprites/tramtracks.pcx 2 312 09 31 64 -31 0
-1 sprites/tramtracks.pcx 82 312 09 64 62 -62 -49
-1 sprites/tramtracks.pcx 162 312 09 64 62 -62 -49
-1 sprites/tramtracks.pcx 242 312 09 64 62 2 -49
-1 sprites/tramtracks.pcx 322 312 09 48 64 -31 -17
-1 sprites/tramtracks.pcx 402 312 09 48 64 -31 -17
-1 sprites/tramtracks.pcx 482 312 09 48 64 -31 -17
-1 sprites/tramtracks.pcx 562 312 09 48 64 -31 -17
-1 sprites/tramtracks.pcx 642 312 09 48 64 -31 -17
-1 sprites/tramtracks.pcx 722 312 09 48 64 -31 -17
-1 sprites/tramtracks.pcx 2 392 09 48 64 -31 -17
-1 sprites/tramtracks.pcx 82 392 09 48 64 -31 -17
-1 sprites/tramtracks.pcx 162 392 09 48 64 -31 -17
-1 sprites/tramtracks.pcx 242 392 09 48 64 -31 -17
-1 sprites/tramtracks.pcx 322 392 09 48 64 -31 -17
-1 sprites/tramtracks.pcx 402 392 09 48 64 -31 -17
-1 sprites/tramtracks.pcx 482 392 09 48 64 -31 -17
-1 sprites/tramtracks.pcx 562 392 09 56 64 -31 -25
-1 sprites/tramtracks.pcx 642 392 09 48 64 -31 -17
-1 sprites/tramtracks.pcx 722 392 09 48 64 -31 -17
-1 sprites/tramtracks.pcx 2 472 09 56 64 -31 -25
-1 sprites/tramtracks.pcx 82 472 09 56 64 -31 -25
-1 sprites/tramtracks.pcx 162 472 09 48 64 -31 -17
-1 sprites/tramtracks.pcx 242 472 09 48 64 -31 -17
-1 sprites/tramtracks.pcx 322 472 09 56 64 -31 -25
-1 sprites/tramtracks.pcx 402 472 09 31 64 -31 0
-1 sprites/tramtracks.pcx 482 472 09 31 64 -31 0
-1 sprites/tramtracks.pcx 562 472 09 31 64 -31 0
-1 sprites/tramtracks.pcx 642 472 09 31 64 -31 0
-1 sprites/tramtracks.pcx 722 472 09 48 64 -31 -17
-1 sprites/tramtracks.pcx 2 552 09 48 64 -31 -17
-1 sprites/tramtracks.pcx 82 552 09 48 64 -31 -17
-1 sprites/tramtracks.pcx 162 552 09 48 64 -31 -17
-1 sprites/tramtracks.pcx 242 552 09 48 64 -31 -17
-1 sprites/tramtracks.pcx 322 552 09 48 64 -31 -17
-1 sprites/tramtracks.pcx 402 552 09 48 64 -31 -17
-1 sprites/tramtracks.pcx 482 552 09 48 64 -31 -17
-1 sprites/tramtracks.pcx 562 552 09 48 64 -31 -17
-1 sprites/tramtracks.pcx 642 552 09 48 64 -31 -17
-1 sprites/tramtracks.pcx 722 552 09 48 64 -31 -17
-1 sprites/tramtracks.pcx 2 616 09 48 64 -31 -17
-1 sprites/tramtracks.pcx 82 616 09 48 64 -31 -17
-1 sprites/tramtracks.pcx 162 616 09 48 64 -31 -17
-1 sprites/tramtracks.pcx 242 616 09 48 64 -31 -17
-1 sprites/tramtracks.pcx 322 616 09 48 64 -31 -17
-1 sprites/tramtracks.pcx 402 616 09 48 64 -31 -17
-1 sprites/tramtracks.pcx 482 616 09 48 64 -31 -17
-1 sprites/tramtracks.pcx 562 616 09 48 64 -31 -17
-1 sprites/tramtracks.pcx 642 616 09 56 64 -31 -25
-1 sprites/tramtracks.pcx 722 616 09 48 64 -31 -17
-1 sprites/tramtracks.pcx 2 696 09 56 64 -31 -25
-1 sprites/tramtracks.pcx 82 696 09 48 64 -31 -17
-1 sprites/tramtracks.pcx 162 696 09 56 64 -31 -25
-1 sprites/tramtracks.pcx 242 696 09 48 64 -31 -17
-1 sprites/tramtracks.pcx 322 696 09 56 64 -31 -25
-1 sprites/tramtracks.pcx 402 696 09 48 64 -31 -17
-1 sprites/tramtracks.pcx 482 696 09 31 64 -31 0
-1 sprites/tramtracks.pcx 562 696 09 31 64 -31 0
-1 sprites/tramtracks.pcx 642 696 09 39 64 -31 -8
-1 sprites/tramtracks.pcx 722 696 09 23 64 -31 0
-1 sprites/tramtracks.pcx 2 776 09 23 64 -31 0
-1 sprites/tramtracks.pcx 82 776 09 39 64 -31 -8

Binary file not shown.

View File

@@ -4,8 +4,8 @@
Type=Application
Version=1.1
Name=!!MENU_NAME!!
Comment=A clone of Transport Tycoon Deluxe
Icon=openttd
Exec=!!TTD!!
Terminal=false
Categories=!!MENU_GROUP!!
Comment=A clone of Transport Tycoon Deluxe

View File

@@ -0,0 +1,15 @@
# $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/>.
#
# Awk script to automatically generate a single comment line
# for a translated desktop shortcut. If it does not exist there
# is no output.
#
/##isocode/ { lang = $2; next }
/STR_DESKTOP_SHORTCUT_COMMENT/ { sub("^[^:]*:", "", $0); print "Comment[" lang "]=" $0; next}

View File

@@ -1,3 +1,39 @@
openttd (1.0.4-0) unstable; urgency=low
* New upstream release 1.0.4
-- Matthijs Kooijman <matthijs@stdin.nl> Tue, 14 Sepg 2010 20:00:00 +0000
openttd (1.0.4~rc1-0) unstable; urgency=low
* New upstream release 1.0.4-RC1
-- Matthijs Kooijman <matthijs@stdin.nl> Mon, 30 Aug 2010 20:00:00 +0000
openttd (1.0.3-0) unstable; urgency=low
* New upstream release 1.0.3
-- Matthijs Kooijman <matthijs@stdin.nl> Sun, 01 Aug 2010 00:00:00 +0000
openttd (1.0.3~rc1-0) unstable; urgency=low
* New upstream release 1.0.3-RC1
-- Matthijs Kooijman <matthijs@stdin.nl> Sat, 05 Jul 2010 17:37:21 +0000
openttd (1.0.2-0) unstable; urgency=low
* New upstream release 1.0.2
-- Matthijs Kooijman <matthijs@stdin.nl> Sat, 19 Jun 2010 18:36:21 +0000
openttd (1.0.2~rc1-0) unstable; urgency=low
* New upstream release 1.0.2-RC1
-- Matthijs Kooijman <matthijs@stdin.nl> Sat, 05 Jun 2010 23:36:21 +0000
openttd (1.0.1-0) unstable; urgency=low
* New upstream release 1.0.1
@@ -227,7 +263,7 @@ openttd (0.6.0-2) unstable; urgency=low
[ Matthijs Kooijman ]
* Don't install anything into ~ during make install, this prevented
successful builds on some architectures. Fix imported from upstream.
* Put the homepage in it's own Homepage field instead of in the description.
* Put the homepage in its own Homepage field instead of in the description.
* Bump Standards-Version to 3.7.3
-- Jordi Mallach <jordi@debian.org> Thu, 03 Apr 2008 00:07:10 +0200

View File

@@ -25,3 +25,13 @@ Description: reimplementation of Transport Tycoon Deluxe with enhancements
package and optional sound files from the openttd-opensfx package (which is in
non-free). Alternatively, OpenTTD can use the graphics files from the original
Transport Tycoon Deluxe game (See README.Debian on how to set this up).
Package: openttd-dbg
Architecture: any
Section: debug
Priority: extra
Depends: openttd (= ${binary:Version}), ${misc:Depends}
Description: debugging symbols for openttd
This package contains the debugging symbols for OpenTTD, the reimplementation
of the Micropose game "Transport Tycoon Deluxe" with lots of new features and
enhancements.

View File

@@ -7,13 +7,14 @@ wrapper instead of the openttd binary directly.
Index: media/openttd.desktop.in
===================================================================
--- a/media/openttd.desktop.in (revision 17228)
--- a/media/openttd.desktop.in (revision 20124)
+++ b/media/openttd.desktop.in (working copy)
@@ -6,6 +6,6 @@
@@ -5,7 +5,7 @@
Version=1.1
Name=!!MENU_NAME!!
Comment=A clone of Transport Tycoon Deluxe
Icon=openttd
-Exec=!!TTD!!
+Exec=/usr/share/games/openttd/openttd-wrapper
Terminal=false
Categories=!!MENU_GROUP!!
Comment=A clone of Transport Tycoon Deluxe

View File

@@ -17,7 +17,7 @@ endif
# to be explicit about the dependencies, in case we're not running in a
# clean build root.
override_dh_auto_configure:
./configure $(CROSS) --prefix-dir=/usr --install-dir=debian/openttd --without-allegro --with-zlib --with-sdl --with-png --with-freetype --with-fontconfig --with-icu --with-liblzo2 --without-iconv
./configure $(CROSS) --prefix-dir=/usr --install-dir=debian/openttd --without-allegro --with-zlib --with-sdl --with-png --with-freetype --with-fontconfig --with-icu --with-liblzo2 --without-iconv --disable-strip CFLAGS="$(CFLAGS) -g"
# Do some extra installation
override_dh_auto_install:
@@ -41,3 +41,7 @@ override_dh_auto_test:
# target, while there isn't.
override_dh_auto_clean:
[ ! -f Makefile ] || $(MAKE) mrproper
# We want to strip the debug informatiton into the -dbg package.
override_dh_strip:
dh_strip --dbg-package=openttd-dbg

View File

@@ -1,6 +1,6 @@
@echo off
set OPENTTD_VERSION=1.0.1
set OPENTTD_VERSION=1.0.4
set OPENSFX_VERSION=0.8.0
set NOSOUND_VERSION=0.8.0
set OPENGFX_VERSION=0.7.0

View File

@@ -13,7 +13,7 @@
#-------------------------------------------------------------------------------
Name: openttd
Version: 1.0.0
Version: 1.0.4
Release: 1%{?dist}
Group: Amusements/Games

View File

@@ -1,8 +1,8 @@
# Version numbers to update
!define APPV_MAJOR 1
!define APPV_MINOR 0
!define APPV_MAINT 1
!define APPV_BUILD 2
!define APPV_MAINT 4
!define APPV_BUILD 1
!define APPV_EXTRA ""
!define APPNAME "OpenTTD" ; Define application name

View File

@@ -39,7 +39,7 @@ Sub UpdateFiles(version)
modified = Mid(version, InStrRev(version, Chr(9)) + 1)
version = Mid(version, 1, InStr(version, Chr(9)) - 1)
Else
version = "1.0.1"
version = "1.0.4"
revision = 0
modified = 1
End If
@@ -97,7 +97,7 @@ Function DetermineSVNVersion()
Dim sTortoise
' First, try with 32-bit architecture
sTortoise = ReadRegistryKey("HKLM", "SOFTWARE\TortoiseSVN", "Directory", 32)
If sTortoise = "" Then
If sTortoise = "" Or IsNull(sTortoise) Then
' No 32-bit version of TortoiseSVN installed, try 64-bit version (doesn't hurt on 32-bit machines, it returns nothing or is ignored)
sTortoise = ReadRegistryKey("HKLM", "SOFTWARE\TortoiseSVN", "Directory", 64)
End If

View File

@@ -76,6 +76,21 @@
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\lang\belarusian.txt"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Generating belarusian language file"
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;&#x0D;&#x0A;exit 0&#x0D;&#x0A;"
AdditionalDependencies="..\src\lang\english.txt;..\objs\strgen\strgen.exe"
Outputs="..\bin\lang\belarusian.lng"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\lang\brazilian_portuguese.txt"
>
@@ -376,6 +391,21 @@
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\lang\irish.txt"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Generating irish language file"
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;&#x0D;&#x0A;exit 0&#x0D;&#x0A;"
AdditionalDependencies="..\src\lang\english.txt;..\objs\strgen\strgen.exe"
Outputs="..\bin\lang\irish.lng"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\lang\italian.txt"
>

View File

@@ -77,6 +77,21 @@
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\lang\belarusian.txt"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Generating belarusian language file"
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;&#x0D;&#x0A;exit 0&#x0D;&#x0A;"
AdditionalDependencies="..\src\lang\english.txt;..\objs\strgen\strgen.exe"
Outputs="..\bin\lang\belarusian.lng"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\lang\brazilian_portuguese.txt"
>
@@ -377,6 +392,21 @@
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\lang\irish.txt"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Generating irish language file"
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;&#x0D;&#x0A;exit 0&#x0D;&#x0A;"
AdditionalDependencies="..\src\lang\english.txt;..\objs\strgen\strgen.exe"
Outputs="..\bin\lang\irish.lng"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\lang\italian.txt"
>

View File

@@ -1,6 +1,6 @@
OpenTTD README
Last updated: 2010-05-01
Release version: 1.0.1
Last updated: 2010-09-14
Release version: 1.0.4
------------------------------------------------------------------------
@@ -226,9 +226,10 @@ You need to copy the following files:
4.1.3) Original Transport Tycoon Deluxe music
------ --------------------------------------
If you want the TTD music, copy the gm/ folder from the Windows version
of TTD to your OpenTTD folder (not your data folder - also explained in
the following sections). The music from the DOS version does not work.
If you want the Transport Tycoon Deluxe music, copy the gm/ folder from the
Windows version of Transport Tycoon Deluxe to your OpenTTD folder (not your
data folder - also explained in the following sections). The music from the
DOS version as well as the original Transport Tycoon does not work.
4.1.4) AIs
------ ---
@@ -248,9 +249,13 @@ wait for an error message to pop up. The error message will tell you
4.2) OpenTTD directories
---- -------------------------------
The TTD artwork files listed in the section 4.1 "(Required) 3rd party files"
can be placed in a few different locations:
The required 3rd party files listed in the section 4.1 "(Required) 3rd party files"
as well as other non-compulsory extensions (NewGRFs, AI, heightmaps, scenarios) can be
placed in a few different locations:
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 (95, 98, ME)
C:\Documents and Settings\<username>\My Documents\OpenTTD (2000, XP)
@@ -302,9 +307,9 @@ again, see section 4.1).
5.0) OpenTTD features:
---- -----------------
OpenTTD has a lot of features going beyond the original TTD 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
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 (http://www.ttdpatch.net/).
@@ -335,7 +340,8 @@ 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 / TTD version
* 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)
* Changing landscape (by cheat)
@@ -426,6 +432,13 @@ zlib you cannot open most savegames or use the content downloading system.
Without libSDL/liballegro on non-Windows and non-MacOS X machines you have
no graphical user interface; you would be building a dedicated server.
To recompile the extra graphics needed to play with the original Transport
Tycoon Deluxe graphics you need GRFCodec and NFORenum as well. These can be
found at respectively: http://dev.openttdcoop.org/projects/grfcodec and
http://dev.openttdcoop.org/projects/nforenum
The compilation of these extra does generally not happen, unless you remove
the graphics file using "make maintainer-clean".
7.2) Supported compilers:
---- -------------------
The following compilers are known to compile OpenTTD:
@@ -565,7 +578,7 @@ Retired Developers:
Thanks to:
Josef Drexler - For his great work on TTDPatch.
Marcin Grzegorczyk - For his TTDPatch work and documentation of TTD internals and graphics (signals and track foundations)
Marcin Grzegorczyk - For his TTDPatch work and documentation of Transport Tycoon Deluxe internals and graphics (signals and track foundations)
Petr Baudiš (pasky) - Many patches, newgrf support, etc.
Simon Sasburg (HackyKid) - For the many bugfixes he has blessed us with
Stefan Meißner (sign_de) - For his work on the console

View File

@@ -186,7 +186,8 @@ bool SQVM::ObjCmp(const SQObjectPtr &o1,const SQObjectPtr &o2,SQInteger &result)
case OT_STRING:
_RET_SUCCEED(scstrcmp(_stringval(o1),_stringval(o2)));
case OT_INTEGER:
_RET_SUCCEED(_integer(o1)-_integer(o2));
/* FS#3954: wrong integer comparison */
_RET_SUCCEED((_integer(o1)<_integer(o2))?-1:(_integer(o1)==_integer(o2))?0:1);
case OT_FLOAT:
_RET_SUCCEED((_float(o1)<_float(o2))?-1:1);
case OT_TABLE:

View File

@@ -946,39 +946,39 @@ static const NWidgetPart _nested_ai_debug_widgets[] = {
NWidget(WWT_PANEL, COLOUR_GREY, AID_WIDGET_VIEW),
NWidget(NWID_HORIZONTAL),
NWidget(NWID_SPACER), SetMinimalSize(2, 0),
NWidget(WWT_PANEL, COLOUR_GREY, AID_WIDGET_COMPANY_BUTTON_START), SetMinimalSize(37, 13), SetResize(1, 0), SetDataTip(0x0, STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP),
NWidget(WWT_PANEL, COLOUR_GREY, AID_WIDGET_COMPANY_BUTTON_START), SetMinimalSize(37, 13), SetResize(1, 0), SetDataTip(0x0, STR_AI_DEBUG_SELECT_AI_TOOLTIP),
EndContainer(),
NWidget(WWT_PANEL, COLOUR_GREY, AID_WIDGET_COMPANY_BUTTON_START + 1), SetMinimalSize(37, 13), SetResize(1, 0), SetDataTip(0x0, STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP),
NWidget(WWT_PANEL, COLOUR_GREY, AID_WIDGET_COMPANY_BUTTON_START + 1), SetMinimalSize(37, 13), SetResize(1, 0), SetDataTip(0x0, STR_AI_DEBUG_SELECT_AI_TOOLTIP),
EndContainer(),
NWidget(WWT_PANEL, COLOUR_GREY, AID_WIDGET_COMPANY_BUTTON_START + 2), SetMinimalSize(37, 13), SetResize(1, 0), SetDataTip(0x0, STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP),
NWidget(WWT_PANEL, COLOUR_GREY, AID_WIDGET_COMPANY_BUTTON_START + 2), SetMinimalSize(37, 13), SetResize(1, 0), SetDataTip(0x0, STR_AI_DEBUG_SELECT_AI_TOOLTIP),
EndContainer(),
NWidget(WWT_PANEL, COLOUR_GREY, AID_WIDGET_COMPANY_BUTTON_START + 3), SetMinimalSize(37, 13), SetResize(1, 0), SetDataTip(0x0, STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP),
NWidget(WWT_PANEL, COLOUR_GREY, AID_WIDGET_COMPANY_BUTTON_START + 3), SetMinimalSize(37, 13), SetResize(1, 0), SetDataTip(0x0, STR_AI_DEBUG_SELECT_AI_TOOLTIP),
EndContainer(),
NWidget(WWT_PANEL, COLOUR_GREY, AID_WIDGET_COMPANY_BUTTON_START + 4), SetMinimalSize(37, 13), SetResize(1, 0), SetDataTip(0x0, STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP),
NWidget(WWT_PANEL, COLOUR_GREY, AID_WIDGET_COMPANY_BUTTON_START + 4), SetMinimalSize(37, 13), SetResize(1, 0), SetDataTip(0x0, STR_AI_DEBUG_SELECT_AI_TOOLTIP),
EndContainer(),
NWidget(WWT_PANEL, COLOUR_GREY, AID_WIDGET_COMPANY_BUTTON_START + 5), SetMinimalSize(37, 13), SetResize(1, 0), SetDataTip(0x0, STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP),
NWidget(WWT_PANEL, COLOUR_GREY, AID_WIDGET_COMPANY_BUTTON_START + 5), SetMinimalSize(37, 13), SetResize(1, 0), SetDataTip(0x0, STR_AI_DEBUG_SELECT_AI_TOOLTIP),
EndContainer(),
NWidget(WWT_PANEL, COLOUR_GREY, AID_WIDGET_COMPANY_BUTTON_START + 6), SetMinimalSize(37, 13), SetResize(1, 0), SetDataTip(0x0, STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP),
NWidget(WWT_PANEL, COLOUR_GREY, AID_WIDGET_COMPANY_BUTTON_START + 6), SetMinimalSize(37, 13), SetResize(1, 0), SetDataTip(0x0, STR_AI_DEBUG_SELECT_AI_TOOLTIP),
EndContainer(),
NWidget(WWT_PANEL, COLOUR_GREY, AID_WIDGET_COMPANY_BUTTON_START + 7), SetMinimalSize(37, 13), SetResize(1, 0), SetDataTip(0x0, STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP),
NWidget(WWT_PANEL, COLOUR_GREY, AID_WIDGET_COMPANY_BUTTON_START + 7), SetMinimalSize(37, 13), SetResize(1, 0), SetDataTip(0x0, STR_AI_DEBUG_SELECT_AI_TOOLTIP),
EndContainer(),
NWidget(NWID_SPACER), SetMinimalSize(2, 0),
EndContainer(),
NWidget(NWID_HORIZONTAL),
NWidget(NWID_SPACER), SetMinimalSize(2, 0),
NWidget(WWT_PANEL, COLOUR_GREY, AID_WIDGET_COMPANY_BUTTON_START + 8), SetMinimalSize(37, 13), SetResize(1, 0), SetDataTip(0x0, STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP),
NWidget(WWT_PANEL, COLOUR_GREY, AID_WIDGET_COMPANY_BUTTON_START + 8), SetMinimalSize(37, 13), SetResize(1, 0), SetDataTip(0x0, STR_AI_DEBUG_SELECT_AI_TOOLTIP),
EndContainer(),
NWidget(WWT_PANEL, COLOUR_GREY, AID_WIDGET_COMPANY_BUTTON_START + 9), SetMinimalSize(37, 13), SetResize(1, 0), SetDataTip(0x0, STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP),
NWidget(WWT_PANEL, COLOUR_GREY, AID_WIDGET_COMPANY_BUTTON_START + 9), SetMinimalSize(37, 13), SetResize(1, 0), SetDataTip(0x0, STR_AI_DEBUG_SELECT_AI_TOOLTIP),
EndContainer(),
NWidget(WWT_PANEL, COLOUR_GREY, AID_WIDGET_COMPANY_BUTTON_START + 10), SetMinimalSize(37, 13), SetResize(1, 0), SetDataTip(0x0, STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP),
NWidget(WWT_PANEL, COLOUR_GREY, AID_WIDGET_COMPANY_BUTTON_START + 10), SetMinimalSize(37, 13), SetResize(1, 0), SetDataTip(0x0, STR_AI_DEBUG_SELECT_AI_TOOLTIP),
EndContainer(),
NWidget(WWT_PANEL, COLOUR_GREY, AID_WIDGET_COMPANY_BUTTON_START + 11), SetMinimalSize(37, 13), SetResize(1, 0), SetDataTip(0x0, STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP),
NWidget(WWT_PANEL, COLOUR_GREY, AID_WIDGET_COMPANY_BUTTON_START + 11), SetMinimalSize(37, 13), SetResize(1, 0), SetDataTip(0x0, STR_AI_DEBUG_SELECT_AI_TOOLTIP),
EndContainer(),
NWidget(WWT_PANEL, COLOUR_GREY, AID_WIDGET_COMPANY_BUTTON_START + 12), SetMinimalSize(37, 13), SetResize(1, 0), SetDataTip(0x0, STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP),
NWidget(WWT_PANEL, COLOUR_GREY, AID_WIDGET_COMPANY_BUTTON_START + 12), SetMinimalSize(37, 13), SetResize(1, 0), SetDataTip(0x0, STR_AI_DEBUG_SELECT_AI_TOOLTIP),
EndContainer(),
NWidget(WWT_PANEL, COLOUR_GREY, AID_WIDGET_COMPANY_BUTTON_START + 13), SetMinimalSize(37, 13), SetResize(1, 0), SetDataTip(0x0, STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP),
NWidget(WWT_PANEL, COLOUR_GREY, AID_WIDGET_COMPANY_BUTTON_START + 13), SetMinimalSize(37, 13), SetResize(1, 0), SetDataTip(0x0, STR_AI_DEBUG_SELECT_AI_TOOLTIP),
EndContainer(),
NWidget(WWT_PANEL, COLOUR_GREY, AID_WIDGET_COMPANY_BUTTON_START + 14), SetMinimalSize(37, 13), SetResize(1, 0), SetDataTip(0x0, STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP),
NWidget(WWT_PANEL, COLOUR_GREY, AID_WIDGET_COMPANY_BUTTON_START + 14), SetMinimalSize(37, 13), SetResize(1, 0), SetDataTip(0x0, STR_AI_DEBUG_SELECT_AI_TOOLTIP),
EndContainer(),
NWidget(NWID_SPACER), SetMinimalSize(39, 0), SetResize(1, 0),
EndContainer(),

View File

@@ -64,7 +64,9 @@ public:
* Get the current location of a basestation.
* @param station_id The basestation to get the location of.
* @pre IsValidBaseStation(station_id).
* @return The tile the basestation is currently on.
* @return The tile the basestation sign above it.
* @note The tile is not necessarily a station tile (and if it is, it could also belong to another station).
* @see AITileList_StationType.
*/
static TileIndex GetLocation(StationID station_id);

View File

@@ -86,7 +86,7 @@ public:
static int32 GetMaxSpeed(BridgeID bridge_id);
/**
* Get the new cost of a bridge.
* Get the new cost of a bridge, excluding the road and/or rail.
* @param bridge_id The bridge to get the new cost of.
* @param length The length of the bridge.
* @pre IsValidBridge(bridge_id).

View File

@@ -14,6 +14,20 @@
* functions may still be available if you return an older API version
* in GetAPIVersion() in info.nut.
*
* \b 1.0.4
*
* No changes
*
* \b 1.0.3
*
* API additions:
* \li AIRail::ERR_RAILTYPE_DISALLOWS_CROSSING
*
* \b 1.0.2
*
* Other changes:
* \li AIBridge::GetPrice now returns the price of the bridge without the cost for the rail or road.
*
* \b 1.0.1
*
* API additions:

View File

@@ -16,20 +16,21 @@
#include "../../strings_func.h"
#include "../../rail.h"
#include "../../engine_base.h"
#include "../../engine_func.h"
#include "../../articulated_vehicles.h"
#include "table/strings.h"
/* static */ bool AIEngine::IsValidEngine(EngineID engine_id)
{
const Engine *e = ::Engine::GetIfValid(engine_id);
return e != NULL && (HasBit(e->company_avail, _current_company) || ::Company::Get(_current_company)->num_engines[engine_id] > 0);
return e != NULL && (::IsEngineBuildable(engine_id, e->type, _current_company) || ::Company::Get(_current_company)->num_engines[engine_id] > 0);
}
/* static */ bool AIEngine::IsBuildable(EngineID engine_id)
{
const Engine *e = ::Engine::GetIfValid(engine_id);
return e != NULL && HasBit(e->company_avail, _current_company);
return e != NULL && ::IsEngineBuildable(engine_id, e->type, _current_company);
}
/* static */ char *AIEngine::GetName(EngineID engine_id)

View File

@@ -14,6 +14,7 @@
#include "../../command_type.h"
#include "../../strings_func.h"
#include "../../industry.h"
#include "../../newgrf_industries.h"
#include "../../core/random_func.hpp"
/* static */ bool AIIndustryType::IsValidIndustryType(IndustryType industry_type)
@@ -88,6 +89,8 @@
/* static */ bool AIIndustryType::CanBuildIndustry(IndustryType industry_type)
{
if (!IsValidIndustryType(industry_type)) return false;
if (!::CheckIfCallBackAllowsAvailability(industry_type, IACT_USERCREATION)) return false;
if (!::GetIndustrySpec(industry_type)->IsRawIndustry()) return true;
/* raw_industry_construction == 1 means "Build as other industries" */
@@ -97,7 +100,9 @@
/* static */ bool AIIndustryType::CanProspectIndustry(IndustryType industry_type)
{
if (!IsValidIndustryType(industry_type)) return false;
if (!::GetIndustrySpec(industry_type)->IsRawIndustry()) return false;
if (!::CheckIfCallBackAllowsAvailability(industry_type, IACT_USERCREATION)) return false;
/* raw_industry_construction == 2 means "prospect" */
return _settings_game.construction.raw_industry_construction == 2;

View File

@@ -59,7 +59,7 @@
/* Tiles not neighbouring */
if (::DistanceManhattan(t1, t2) != 1) return false;
DiagDirection to_other_tile = ::DiagdirBetweenTiles(t1, t2);
DiagDirection to_other_tile = ::DiagdirBetweenTiles(t2, t1);
/* Determine the reachable tracks from the shared edge */
TrackBits gtts1 = ::TrackStatusToTrackBits(::GetTileTrackStatus(t1, TRANSPORT_WATER, 0, to_other_tile)) & ::DiagdirReachesTracks(to_other_tile);
@@ -77,7 +77,7 @@
EnforcePrecondition(false, ::IsValidTile(front));
EnforcePrecondition(false, (::TileX(front) == ::TileX(tile)) != (::TileY(front) == ::TileY(tile)));
return AIObject::DoCommand(tile, ::TileY(front) == ::TileY(tile), 0, CMD_BUILD_SHIP_DEPOT);
return AIObject::DoCommand(tile, ::TileX(front) == ::TileX(tile), 0, CMD_BUILD_SHIP_DEPOT);
}
/* static */ bool AIMarine::BuildDock(TileIndex tile, StationID station_id)

View File

@@ -106,6 +106,7 @@ public:
* @exception AIMarine::ERR_MARINE_MUST_BE_BUILT_ON_WATER
* @return Whether the water depot has been/can be build or not.
* @note A WaterDepot is 1 tile in width, and 2 tiles in length.
* @note The depot will be built towards the south from 'tile', not necessarily towards 'front'.
*/
static bool BuildWaterDepot(TileIndex tile, TileIndex front);

View File

@@ -38,6 +38,9 @@ public:
/** Non-uniform stations is diabled */
ERR_NONUNIFORM_STATIONS_DISABLED, // [STR_ERROR_NONUNIFORM_STATIONS_DISALLOWED]
/** This railtype cannot have crossings */
ERR_RAILTYPE_DISALLOWS_CROSSING, // [STR_ERROR_CROSSING_DISALLOWED]
};
/**

View File

@@ -42,6 +42,7 @@ void SQAIRail_Register(Squirrel *engine)
SQAIRail.DefSQConst(engine, AIRail::ERR_CROSSING_ON_ONEWAY_ROAD, "ERR_CROSSING_ON_ONEWAY_ROAD");
SQAIRail.DefSQConst(engine, AIRail::ERR_UNSUITABLE_TRACK, "ERR_UNSUITABLE_TRACK");
SQAIRail.DefSQConst(engine, AIRail::ERR_NONUNIFORM_STATIONS_DISABLED, "ERR_NONUNIFORM_STATIONS_DISABLED");
SQAIRail.DefSQConst(engine, AIRail::ERR_RAILTYPE_DISALLOWS_CROSSING, "ERR_RAILTYPE_DISALLOWS_CROSSING");
SQAIRail.DefSQConst(engine, AIRail::RAILTYPE_INVALID, "RAILTYPE_INVALID");
SQAIRail.DefSQConst(engine, AIRail::RAILTRACK_NE_SW, "RAILTRACK_NE_SW");
SQAIRail.DefSQConst(engine, AIRail::RAILTRACK_NW_SE, "RAILTRACK_NW_SE");
@@ -71,10 +72,12 @@ void SQAIRail_Register(Squirrel *engine)
AIError::RegisterErrorMap(STR_ERROR_CROSSING_ON_ONEWAY_ROAD, AIRail::ERR_CROSSING_ON_ONEWAY_ROAD);
AIError::RegisterErrorMap(STR_ERROR_NO_SUITABLE_RAILROAD_TRACK, AIRail::ERR_UNSUITABLE_TRACK);
AIError::RegisterErrorMap(STR_ERROR_NONUNIFORM_STATIONS_DISALLOWED, AIRail::ERR_NONUNIFORM_STATIONS_DISABLED);
AIError::RegisterErrorMap(STR_ERROR_CROSSING_DISALLOWED, AIRail::ERR_RAILTYPE_DISALLOWS_CROSSING);
AIError::RegisterErrorMapString(AIRail::ERR_CROSSING_ON_ONEWAY_ROAD, "ERR_CROSSING_ON_ONEWAY_ROAD");
AIError::RegisterErrorMapString(AIRail::ERR_UNSUITABLE_TRACK, "ERR_UNSUITABLE_TRACK");
AIError::RegisterErrorMapString(AIRail::ERR_NONUNIFORM_STATIONS_DISABLED, "ERR_NONUNIFORM_STATIONS_DISABLED");
AIError::RegisterErrorMapString(AIRail::ERR_RAILTYPE_DISALLOWS_CROSSING, "ERR_RAILTYPE_DISALLOWS_CROSSING");
SQAIRail.DefSQStaticMethod(engine, &AIRail::IsRailTile, "IsRailTile", 2, ".i");
SQAIRail.DefSQStaticMethod(engine, &AIRail::IsLevelCrossingTile, "IsLevelCrossingTile", 2, ".i");

View File

@@ -14,6 +14,7 @@
#include "ai_cargo.hpp"
#include "ai_error.hpp"
#include "../../town.h"
#include "../../town_type.h"
#include "../../strings_func.h"
#include "../../company_func.h"
#include "../../station_base.h"
@@ -172,8 +173,25 @@
if (company == AICompany::COMPANY_INVALID) return TOWN_RATING_INVALID;
const Town *t = ::Town::Get(town_id);
if (!HasBit(t->have_ratings, company)) return TOWN_RATING_NONE;
return max(TOWN_RATING_APPALLING, (TownRating)((t->ratings[company] / 200) + 3));
if (!HasBit(t->have_ratings, company)) {
return TOWN_RATING_NONE;
} else if (t->ratings[company] <= RATING_APPALLING) {
return TOWN_RATING_APPALLING;
} else if (t->ratings[company] <= RATING_VERYPOOR) {
return TOWN_RATING_VERY_POOR;
} else if (t->ratings[company] <= RATING_POOR) {
return TOWN_RATING_POOR;
} else if (t->ratings[company] <= RATING_MEDIOCRE) {
return TOWN_RATING_MEDIOCRE;
} else if (t->ratings[company] <= RATING_GOOD) {
return TOWN_RATING_GOOD;
} else if (t->ratings[company] <= RATING_VERYGOOD) {
return TOWN_RATING_VERY_GOOD;
} else if (t->ratings[company] <= RATING_EXCELLENT) {
return TOWN_RATING_EXCELLENT;
} else {
return TOWN_RATING_OUTSTANDING;
}
}
/* static */ int AITown::GetAllowedNoise(TownID town_id)

View File

@@ -669,8 +669,8 @@ void UpdateAircraftCache(Aircraft *v)
{
uint max_speed = GetVehicleProperty(v, PROP_AIRCRAFT_SPEED, 0);
if (max_speed != 0) {
/* Convert from original units to (approx) km/h */
max_speed = (max_speed * 129) / 10;
/* Convert from original units to km-ish/h */
max_speed = (max_speed * 128) / 10;
v->acache.cached_max_speed = max_speed;
} else {

View File

@@ -454,6 +454,7 @@ static CommandCost ReplaceChain(Vehicle **chain, DoCommandFlag flags, bool wagon
/* Append engines to the new chain
* We do this from back to front, so that the head of the temporary vehicle chain does not change all the time.
* That way we also have less trouble when exceeding the unitnumber limit.
* OTOH the vehicle attach callback is more expensive this way :s */
Train *last_engine = NULL; ///< Shall store the last engine unit after this step
if (cost.Succeeded()) {
@@ -462,6 +463,13 @@ static CommandCost ReplaceChain(Vehicle **chain, DoCommandFlag flags, bool wagon
if (RailVehInfo(append->engine_type)->railveh_type == RAILVEH_WAGON) continue;
if (new_vehs[i] != NULL) {
/* Move the old engine to a separate row with DC_AUTOREPLACE. Else
* moving the wagon in front may fail later due to unitnumber limit.
* (We have to attach wagons without DC_AUTOREPLACE.) */
MoveVehicle(old_vehs[i], NULL, DC_EXEC | DC_AUTOREPLACE, false);
}
if (last_engine == NULL) last_engine = append;
cost.AddCost(MoveVehicle(append, new_head, DC_EXEC, false));
if (cost.Failed()) break;

View File

@@ -147,6 +147,7 @@ template <class Tbase_set>
class BaseMedia : FileScanner {
protected:
static Tbase_set *available_sets; ///< All available sets
static Tbase_set *duplicate_sets; ///< All sets that aren't available, but needed for not downloading base sets when a newer version than the one on BaNaNaS is loaded.
static const Tbase_set *used_set; ///< The currently used set
/* virtual */ bool AddFile(const char *filename, size_t basepath_length);

View File

@@ -17,6 +17,7 @@
template <class Tbase_set> /* static */ const char *BaseMedia<Tbase_set>::ini_set;
template <class Tbase_set> /* static */ const Tbase_set *BaseMedia<Tbase_set>::used_set;
template <class Tbase_set> /* static */ Tbase_set *BaseMedia<Tbase_set>::available_sets;
template <class Tbase_set> /* static */ Tbase_set *BaseMedia<Tbase_set>::duplicate_sets;
/**
* Try to read a single piece of metadata and return false if it doesn't exist.
@@ -169,15 +170,14 @@ bool BaseMedia<Tbase_set>::AddFile(const char *filename, size_t basepath_length)
if ((duplicate->valid_files == set->valid_files && duplicate->version >= set->version) ||
duplicate->valid_files > set->valid_files) {
DEBUG(grf, 1, "Not adding %s (%i) as base " SET_TYPE " set (duplicate)", set->name, set->version);
delete set;
set->next = BaseMedia<Tbase_set>::duplicate_sets;
BaseMedia<Tbase_set>::duplicate_sets = set;
} else {
Tbase_set **prev = &BaseMedia<Tbase_set>::available_sets;
while (*prev != duplicate) prev = &(*prev)->next;
*prev = set;
set->next = duplicate->next;
/* don't allow recursive delete of all remaining items */
duplicate->next = NULL;
/* If the duplicate set is currently used (due to rescanning this can happen)
* update the currently used set to the new one. This will 'lie' about the
@@ -185,7 +185,8 @@ bool BaseMedia<Tbase_set>::AddFile(const char *filename, size_t basepath_length)
if (BaseMedia<Tbase_set>::used_set == duplicate) BaseMedia<Tbase_set>::used_set = set;
DEBUG(grf, 1, "Removing %s (%i) as base " SET_TYPE " set (duplicate)", duplicate->name, duplicate->version);
delete duplicate;
duplicate->next = BaseMedia<Tbase_set>::duplicate_sets;
BaseMedia<Tbase_set>::duplicate_sets = duplicate;
ret = true;
}
} else {
@@ -254,10 +255,9 @@ template <class Tbase_set>
#if defined(ENABLE_NETWORK)
#include "network/network_content.h"
template <class Tbase_set>
/* static */ bool BaseMedia<Tbase_set>::HasSet(const ContentInfo *ci, bool md5sum)
template <class Tbase_set> bool HasBaseSet(const ContentInfo *ci, bool md5sum, const Tbase_set *s)
{
for (const Tbase_set *s = BaseMedia<Tbase_set>::available_sets; s != NULL; s = s->next) {
for (; s != NULL; s = s->next) {
if (s->GetNumMissing() != 0) continue;
if (s->shortname != ci->unique_id) continue;
@@ -276,6 +276,13 @@ template <class Tbase_set>
return false;
}
template <class Tbase_set>
/* static */ bool BaseMedia<Tbase_set>::HasSet(const ContentInfo *ci, bool md5sum)
{
return HasBaseSet(ci, md5sum, BaseMedia<Tbase_set>::available_sets) ||
HasBaseSet(ci, md5sum, BaseMedia<Tbase_set>::duplicate_sets);
}
#else
template <class Tbase_set>

View File

@@ -14,6 +14,7 @@
#include "command_func.h"
#include "economy_func.h"
#include "bridge.h"
#include "rail.h"
#include "strings_func.h"
#include "window_func.h"
#include "sound_func.h"
@@ -394,6 +395,13 @@ void ShowBuildBridgeWindow(TileIndex start, TileIndex end, TransportType transpo
bl = new GUIBridgeList();
Money infra_cost = 0;
switch (transport_type) {
case TRANSPORT_ROAD: infra_cost = (bridge_len + 2) * _price[PR_BUILD_ROAD] * 2; break;
case TRANSPORT_RAIL: infra_cost = (bridge_len + 2) * RailBuildCost((RailType)road_rail_type); break;
default: break;
}
/* loop for all bridgetypes */
for (BridgeType brd_type = 0; brd_type != MAX_BRIDGES; brd_type++) {
if (CheckBridgeAvailability(brd_type, bridge_len).Succeeded()) {
@@ -403,7 +411,7 @@ void ShowBuildBridgeWindow(TileIndex start, TileIndex end, TransportType transpo
item->spec = GetBridgeSpec(brd_type);
/* Add to terraforming & bulldozing costs the cost of the
* bridge itself (not computed with DC_QUERY_COST) */
item->cost = ret.GetCost() + (((int64)tot_bridgedata_len * _price[PR_BUILD_BRIDGE] * item->spec->price) >> 8);
item->cost = ret.GetCost() + (((int64)tot_bridgedata_len * _price[PR_BUILD_BRIDGE] * item->spec->price) >> 8) + infra_cost;
}
}
}

View File

@@ -59,7 +59,7 @@ enum BuildVehicleWidgets {
static const NWidgetPart _nested_build_vehicle_widgets[] = {
NWidget(NWID_HORIZONTAL),
NWidget(WWT_CLOSEBOX, COLOUR_GREY),
NWidget(WWT_CAPTION, COLOUR_GREY, BUILD_VEHICLE_WIDGET_CAPTION), SetDataTip(STR_JUST_STRING, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
NWidget(WWT_CAPTION, COLOUR_GREY, BUILD_VEHICLE_WIDGET_CAPTION), SetDataTip(STR_WHITE_STRING, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
NWidget(WWT_SHADEBOX, COLOUR_GREY),
NWidget(WWT_STICKYBOX, COLOUR_GREY),
EndContainer(),
@@ -1017,7 +1017,7 @@ struct BuildVehicleWindow : Window {
size_t num_items = this->eng_list.Length();
this->sel_engine = (i < num_items) ? this->eng_list[i] : INVALID_ENGINE;
this->SetDirty();
if (click_count > 1) this->OnClick(pt, BUILD_VEHICLE_WIDGET_BUILD, 1);
if (click_count > 1 && !this->listview_mode) this->OnClick(pt, BUILD_VEHICLE_WIDGET_BUILD, 1);
break;
}

View File

@@ -189,19 +189,40 @@ static void TileLoopClearAlps(TileIndex tile)
MarkTileDirtyByTile(tile);
}
/**
* Tests if at least one surrounding tile is desert
* @param tile tile to check
* @return does this tile have at least one desert tile around?
*/
static inline bool NeighbourIsDesert(TileIndex tile)
{
return GetTropicZone(tile + TileDiffXY( 1, 0)) == TROPICZONE_DESERT ||
GetTropicZone(tile + TileDiffXY( -1, 0)) == TROPICZONE_DESERT ||
GetTropicZone(tile + TileDiffXY( 0, 1)) == TROPICZONE_DESERT ||
GetTropicZone(tile + TileDiffXY( 0, -1)) == TROPICZONE_DESERT;
}
static void TileLoopClearDesert(TileIndex tile)
{
if (IsClearGround(tile, CLEAR_DESERT)) return;
/* Current desert level - 0 if it is not desert */
uint current = 0;
if (IsClearGround(tile, CLEAR_DESERT)) current = GetClearDensity(tile);
/* Expected desert level - 0 if it shouldn't be desert */
uint expected = 0;
if (GetTropicZone(tile) == TROPICZONE_DESERT) {
SetClearGroundDensity(tile, CLEAR_DESERT, 3);
expected = 3;
} else if (NeighbourIsDesert(tile)) {
expected = 1;
}
if (current == expected) return;
if (expected == 0) {
SetClearGroundDensity(tile, CLEAR_GRASS, 3);
} else {
if (GetTropicZone(tile + TileDiffXY( 1, 0)) != TROPICZONE_DESERT &&
GetTropicZone(tile + TileDiffXY(-1, 0)) != TROPICZONE_DESERT &&
GetTropicZone(tile + TileDiffXY( 0, 1)) != TROPICZONE_DESERT &&
GetTropicZone(tile + TileDiffXY( 0, -1)) != TROPICZONE_DESERT)
return;
SetClearGroundDensity(tile, CLEAR_DESERT, 1);
/* Transition from clear to desert is not smooth (after clearing desert tile) */
SetClearGroundDensity(tile, CLEAR_DESERT, expected);
}
MarkTileDirtyByTile(tile);

View File

@@ -539,6 +539,25 @@ void InitializeCompanies()
_cur_company_tick_index = 0;
}
/**
* May company \a cbig buy company \a csmall?
* @param cbig Company buying \a csmall.
* @param csmall Company getting bought.
* @return Return \c true if it is allowed.
*/
bool MayCompanyTakeOver(CompanyID cbig, CompanyID csmall)
{
uint big_counts[4], small_counts[4];
CountCompanyVehicles(cbig, big_counts);
CountCompanyVehicles(csmall, small_counts);
/* Do the combined vehicle counts stay within the limits? */
return big_counts[VEH_TRAIN] + small_counts[VEH_TRAIN] <= _settings_game.vehicle.max_trains &&
big_counts[VEH_ROAD] + small_counts[VEH_ROAD] <= _settings_game.vehicle.max_roadveh &&
big_counts[VEH_SHIP] + small_counts[VEH_SHIP] <= _settings_game.vehicle.max_ships &&
big_counts[VEH_AIRCRAFT] + small_counts[VEH_AIRCRAFT] <= _settings_game.vehicle.max_aircraft;
}
/**
* Handle the bankruptcy take over of a company.
* Companies going bankrupt will ask the other companies in order of their
@@ -578,7 +597,8 @@ static void HandleBankruptcyTakeover(Company *c)
FOR_ALL_COMPANIES(c2) {
if (c2->bankrupt_asked == 0 && // Don't ask companies going bankrupt themselves
!HasBit(c->bankrupt_asked, c2->index) &&
best_performance < c2->old_economy[1].performance_history) {
best_performance < c2->old_economy[1].performance_history &&
MayCompanyTakeOver(c2->index, c->index)) {
best_performance = c2->old_economy[1].performance_history;
best = c2;
}

View File

@@ -16,6 +16,7 @@
#include "tile_type.h"
#include "gfx_type.h"
bool MayCompanyTakeOver(CompanyID cbig, CompanyID small);
void ChangeOwnershipOfCompanyItems(Owner old_owner, Owner new_owner);
void GetNameOfOwner(Owner owner, TileIndex tile);
void SetLocalCompany(CompanyID new_company);

View File

@@ -20,7 +20,7 @@
#include "network/network_gui.h"
#include "network/network_func.h"
#include "economy_func.h"
#include "vehicle_base.h"
#include "vehicle_func.h"
#include "newgrf.h"
#include "company_manager_face.h"
#include "strings_func.h"
@@ -1844,19 +1844,10 @@ struct CompanyWindow : Window
break;
case CW_WIDGET_DESC_VEHICLE_COUNTS: {
uint amounts[] = { 0, 0, 0, 0 };
uint amounts[4];
CountCompanyVehicles((CompanyID)this->window_number, amounts);
int y = r.top;
const Vehicle *v;
FOR_ALL_VEHICLES(v) {
if (v->owner == c->index) {
if (v->IsPrimaryVehicle()) {
assert((size_t)v->type < lengthof(amounts));
amounts[v->type]++;
}
}
}
if (amounts[0] + amounts[1] + amounts[2] + amounts[3] == 0) {
DrawString(r.left, r.right, y, STR_COMPANY_VIEW_VEHICLES_NONE);
} else {
@@ -1984,7 +1975,7 @@ struct CompanyWindow : Window
MarkWholeScreenDirty();
} else if (NetworkCompanyIsPassworded(company)) {
/* ask for the password */
ShowQueryString(STR_EMPTY, STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION, 20, 180, this, CS_ALPHANUMERAL, QSF_NONE);
ShowQueryString(STR_EMPTY, STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION, NETWORK_PASSWORD_LENGTH, 180, this, CS_ALPHANUMERAL, QSF_NONE);
} else {
/* just send the join command */
NetworkClientRequestMove(company);

View File

@@ -437,6 +437,10 @@ void IConsoleCmdExec(const char *cmdstr)
break;
case '"': // Tokens enclosed in "" are one token
longtoken = !longtoken;
if (!foundtoken) {
tokens[t_index++] = &tokenstream[tstream_i];
foundtoken = true;
}
break;
case '\\': // Escape character for ""
if (cmdptr[1] == '"' && tstream_i + 1 < lengthof(tokenstream)) {

View File

@@ -252,7 +252,18 @@ static const FiosItem *GetFiosItem(const char *file)
int i = strtol(file, &endptr, 10);
if (file == endptr || *endptr != '\0') i = -1;
return IsInsideMM(i, 0, _fios_items.Length()) ? _fios_items.Get(i) : NULL;
if (IsInsideMM(i, 0, _fios_items.Length())) return _fios_items.Get(i);
/* As a last effort assume it is an OpenTTD savegame and
* that the ".sav" part was not given. */
char long_file[MAX_PATH];
seprintf(long_file, lastof(long_file), "%s.sav", file);
for (const FiosItem *item = _fios_items.Begin(); item != _fios_items.End(); item++) {
if (strcmp(long_file, item->name) == 0) return item;
if (strcmp(long_file, item->title) == 0) return item;
}
return NULL;
}
@@ -391,12 +402,59 @@ DEF_CONSOLE_CMD(ConClearBuffer)
**********************************/
#ifdef ENABLE_NETWORK
static bool ConKickOrBan(const char *argv, bool ban)
{
const char *ip = argv;
if (strchr(argv, '.') == NULL && strchr(argv, ':') == NULL) { // banning with ID
ClientID client_id = (ClientID)atoi(argv);
if (client_id == CLIENT_ID_SERVER) {
IConsolePrintF(CC_ERROR, "ERROR: Silly boy, you can not %s yourself!", ban ? "ban" : "kick");
return true;
}
NetworkClientInfo *ci = NetworkFindClientInfoFromClientID(client_id);
if (ci == NULL) {
IConsoleError("Invalid client");
return true;
}
if (!ban) {
/* Kick only this client, not all clients with that IP */
NetworkServerKickClient(client_id);
return true;
}
/* When banning, kick+ban all clients with that IP */
ip = GetClientIP(ci);
}
uint n = NetworkServerKickOrBanIP(ip, ban);
if (n == 0) {
IConsolePrint(CC_DEFAULT, ban ? "Client not online, address added to banlist" : "Client not found");
} else {
IConsolePrintF(CC_DEFAULT, "%sed %u client(s)", ban ? "Bann" : "Kick", n);
}
return true;
}
DEF_CONSOLE_CMD(ConKick)
{
if (argc == 0) {
IConsoleHelp("Kick a client from a network game. Usage: 'kick <ip | client-id>'");
IConsoleHelp("For client-id's, see the command 'clients'");
return true;
}
if (argc != 2) return false;
return ConKickOrBan(argv[1], false);
}
DEF_CONSOLE_CMD(ConBan)
{
NetworkClientInfo *ci;
const char *banip = NULL;
ClientID client_id;
if (argc == 0) {
IConsoleHelp("Ban a client from a network game. Usage: 'ban <ip | client-id>'");
IConsoleHelp("For client-id's, see the command 'clients'");
@@ -406,39 +464,7 @@ DEF_CONSOLE_CMD(ConBan)
if (argc != 2) return false;
if (strchr(argv[1], '.') == NULL && strchr(argv[1], ':') == NULL) { // banning with ID
client_id = (ClientID)atoi(argv[1]);
ci = NetworkFindClientInfoFromClientID(client_id);
} else { // banning IP
ci = NetworkFindClientInfoFromIP(argv[1]);
if (ci == NULL) {
banip = argv[1];
client_id = (ClientID)-1;
} else {
client_id = ci->client_id;
}
}
if (client_id == CLIENT_ID_SERVER) {
IConsoleError("Silly boy, you can not ban yourself!");
return true;
}
if (client_id == INVALID_CLIENT_ID || (ci == NULL && client_id != (ClientID)-1)) {
IConsoleError("Invalid client");
return true;
}
if (ci != NULL) {
IConsolePrint(CC_DEFAULT, "Client banned");
banip = GetClientIP(ci);
} else {
IConsolePrint(CC_DEFAULT, "Client not online, banned IP");
}
NetworkServerBanIP(banip);
return true;
return ConKickOrBan(argv[1], true);
}
DEF_CONSOLE_CMD(ConUnBan)
@@ -595,46 +621,6 @@ DEF_CONSOLE_CMD(ConClientNickChange)
return true;
}
DEF_CONSOLE_CMD(ConKick)
{
NetworkClientInfo *ci;
ClientID client_id;
if (argc == 0) {
IConsoleHelp("Kick a client from a network game. Usage: 'kick <ip | client-id>'");
IConsoleHelp("For client-id's, see the command 'clients'");
return true;
}
if (argc != 2) return false;
if (strchr(argv[1], '.') == NULL) {
client_id = (ClientID)atoi(argv[1]);
ci = NetworkFindClientInfoFromClientID(client_id);
} else {
ci = NetworkFindClientInfoFromIP(argv[1]);
client_id = (ci == NULL) ? INVALID_CLIENT_ID : ci->client_id;
}
if (client_id == CLIENT_ID_SERVER) {
IConsoleError("Silly boy, you can not kick yourself!");
return true;
}
if (client_id == INVALID_CLIENT_ID) {
IConsoleError("Invalid client");
return true;
}
if (ci != NULL) {
NetworkServerKickClient(client_id);
} else {
IConsoleError("Client not found");
}
return true;
}
DEF_CONSOLE_CMD(ConJoinCompany)
{
if (argc < 2) {
@@ -969,7 +955,7 @@ DEF_CONSOLE_CMD(ConNewGame)
return true;
}
StartNewGameWithoutGUI((argc == 2) ? (uint)atoi(argv[1]) : GENERATE_NEW_SEED);
StartNewGameWithoutGUI((argc == 2) ? strtoul(argv[1], NULL, 10) : (uint)GENERATE_NEW_SEED);
return true;
}

View File

@@ -109,22 +109,25 @@ char *CrashLog::LogConfiguration(char *buffer, const char *last) const
buffer += seprintf(buffer, last,
"Configuration:\n"
" Blitter: %s\n"
" Graphics set: %s\n"
" Graphics set: %s (%u)\n"
" Language: %s\n"
" Music driver: %s\n"
" Music set: %s\n"
" Music set: %s (%u)\n"
" Network: %s\n"
" Sound driver: %s\n"
" Sound set: %s\n"
" Sound set: %s (%u)\n"
" Video driver: %s\n\n",
BlitterFactoryBase::GetCurrentBlitter() == NULL ? "none" : BlitterFactoryBase::GetCurrentBlitter()->GetName(),
BaseGraphics::GetUsedSet() == NULL ? "none" : BaseGraphics::GetUsedSet()->name,
BaseGraphics::GetUsedSet() == NULL ? UINT32_MAX : BaseGraphics::GetUsedSet()->version,
StrEmpty(_dynlang.curr_file) ? "none" : _dynlang.curr_file,
_music_driver == NULL ? "none" : _music_driver->GetName(),
BaseMusic::GetUsedSet() == NULL ? "none" : BaseMusic::GetUsedSet()->name,
BaseMusic::GetUsedSet() == NULL ? UINT32_MAX : BaseMusic::GetUsedSet()->version,
_networking ? (_network_server ? "server" : "client") : "no",
_sound_driver == NULL ? "none" : _sound_driver->GetName(),
BaseSounds::GetUsedSet() == NULL ? "none" : BaseSounds::GetUsedSet()->name,
BaseSounds::GetUsedSet() == NULL ? UINT32_MAX : BaseSounds::GetUsedSet()->version,
_video_driver == NULL ? "none" : _video_driver->GetName()
);

View File

@@ -14,43 +14,44 @@
#include "news_func.h"
#include "settings_type.h"
#include "date_func.h"
#include "string_type.h"
#include "table/strings.h"
/* exchange rate prefix symbol_pos
* | separator | postfix |
* | | Euro year | | | name
* | | | | | | | */
/* exchange rate prefix symbol_pos
* | separator | postfix |
* | | Euro year | | | name
* | | | | | | | */
static const CurrencySpec origin_currency_specs[NUM_CURRENCY] = {
{ 1, "", CF_NOEURO, "\xC2\xA3", "", 0, STR_GAME_OPTIONS_CURRENCY_GBP }, ///< british pounds
{ 2, "", CF_NOEURO, "$", "", 0, STR_GAME_OPTIONS_CURRENCY_USD }, ///< us dollars
{ 2, "", CF_ISEURO, "\xE2\x82\xAC", "", 0, STR_GAME_OPTIONS_CURRENCY_EUR }, ///< Euro
{ 220, "", CF_NOEURO, "\xC2\xA5", "", 0, STR_GAME_OPTIONS_CURRENCY_YEN }, ///< yen
{ 20, "", 2002, "", " S.", 1, STR_GAME_OPTIONS_CURRENCY_ATS }, ///< austrian schilling
{ 59, "", 2002, "BEF ", "", 0, STR_GAME_OPTIONS_CURRENCY_BEF }, ///< belgian franc
{ 2, "", CF_NOEURO, "CHF ", "", 0, STR_GAME_OPTIONS_CURRENCY_CHF }, ///< swiss franc
{ 41, "", CF_NOEURO, "", " K\xC4\x8D", 1, STR_GAME_OPTIONS_CURRENCY_CZK }, ///< czech koruna
{ 3, "", 2002, "DM ", "", 0, STR_GAME_OPTIONS_CURRENCY_DEM }, ///< deutsche mark
{ 11, "", CF_NOEURO, "", " kr", 1, STR_GAME_OPTIONS_CURRENCY_DKK }, ///< danish krone
{ 245, "", 2002, "Pts ", "", 0, STR_GAME_OPTIONS_CURRENCY_ESP }, ///< spanish pesetas
{ 9, "", 2002, "", " mk", 1, STR_GAME_OPTIONS_CURRENCY_FIM }, ///< finnish markka
{ 10, "", 2002, "FF ", "", 0, STR_GAME_OPTIONS_CURRENCY_FRF }, ///< french francs
{ 500, "", 2002, "", "Dr.", 1, STR_GAME_OPTIONS_CURRENCY_GRD }, ///< greek drachma
{ 378, "", CF_NOEURO, "", " Ft", 1, STR_GAME_OPTIONS_CURRENCY_HUF }, ///< hungarian forint
{ 130, "", CF_NOEURO, "", " Kr", 1, STR_GAME_OPTIONS_CURRENCY_ISK }, ///< icelandic krona
{ 2850, "", 2002, "", " L.", 1, STR_GAME_OPTIONS_CURRENCY_ITL }, ///< italian lira
{ 3, "", 2002, "NLG ", "", 0, STR_GAME_OPTIONS_CURRENCY_NLG }, ///< dutch gulden
{ 12, "", CF_NOEURO, "", " Kr", 1, STR_GAME_OPTIONS_CURRENCY_NOK }, ///< norwegian krone
{ 6, "", CF_NOEURO, "", " z\xC5\x82", 1, STR_GAME_OPTIONS_CURRENCY_PLN }, ///< polish zloty
{ 5, "", CF_NOEURO, "", " Lei", 1, STR_GAME_OPTIONS_CURRENCY_RON }, ///< romanian Lei
{ 50, "", CF_NOEURO, "", " p", 1, STR_GAME_OPTIONS_CURRENCY_RUR }, ///< russian rouble
{ 352, "", 2007, "", " SIT", 1, STR_GAME_OPTIONS_CURRENCY_SIT }, ///< slovenian tolar
{ 13, "", CF_NOEURO, "", " Kr", 1, STR_GAME_OPTIONS_CURRENCY_SEK }, ///< swedish krona
{ 3, "", CF_NOEURO, "", " TL", 1, STR_GAME_OPTIONS_CURRENCY_TRY }, ///< turkish lira
{ 52, "", 2009, "", " Sk", 1, STR_GAME_OPTIONS_CURRENCY_SKK }, ///< slovak koruna
{ 4, "", CF_NOEURO, "R$ ", "", 0, STR_GAME_OPTIONS_CURRENCY_BRL }, ///< brazil real
{ 20, "", CF_NOEURO, "", " EEK", 1, STR_GAME_OPTIONS_CURRENCY_EEK }, ///< estonian krooni
{ 1, "", CF_NOEURO, "", "", 2, STR_GAME_OPTIONS_CURRENCY_CUSTOM }, ///< custom currency
{ 1, "", CF_NOEURO, "\xC2\xA3", "", 0, STR_GAME_OPTIONS_CURRENCY_GBP }, ///< british pounds
{ 2, "", CF_NOEURO, "$", "", 0, STR_GAME_OPTIONS_CURRENCY_USD }, ///< us dollars
{ 2, "", CF_ISEURO, "\xE2\x82\xAC", "", 0, STR_GAME_OPTIONS_CURRENCY_EUR }, ///< Euro
{ 220, "", CF_NOEURO, "\xC2\xA5", "", 0, STR_GAME_OPTIONS_CURRENCY_YEN }, ///< yen
{ 20, "", 2002, "", NBSP"S.", 1, STR_GAME_OPTIONS_CURRENCY_ATS }, ///< austrian schilling
{ 59, "", 2002, "BEF"NBSP, "", 0, STR_GAME_OPTIONS_CURRENCY_BEF }, ///< belgian franc
{ 2, "", CF_NOEURO, "CHF"NBSP, "", 0, STR_GAME_OPTIONS_CURRENCY_CHF }, ///< swiss franc
{ 41, "", CF_NOEURO, "", NBSP"K\xC4\x8D", 1, STR_GAME_OPTIONS_CURRENCY_CZK }, ///< czech koruna
{ 3, "", 2002, "DM"NBSP, "", 0, STR_GAME_OPTIONS_CURRENCY_DEM }, ///< deutsche mark
{ 11, "", CF_NOEURO, "", NBSP"kr", 1, STR_GAME_OPTIONS_CURRENCY_DKK }, ///< danish krone
{ 245, "", 2002, "Pts"NBSP, "", 0, STR_GAME_OPTIONS_CURRENCY_ESP }, ///< spanish pesetas
{ 9, "", 2002, "", NBSP"mk", 1, STR_GAME_OPTIONS_CURRENCY_FIM }, ///< finnish markka
{ 10, "", 2002, "FF"NBSP, "", 0, STR_GAME_OPTIONS_CURRENCY_FRF }, ///< french francs
{ 500, "", 2002, "", "Dr.", 1, STR_GAME_OPTIONS_CURRENCY_GRD }, ///< greek drachma
{ 378, "", CF_NOEURO, "", NBSP"Ft", 1, STR_GAME_OPTIONS_CURRENCY_HUF }, ///< hungarian forint
{ 130, "", CF_NOEURO, "", NBSP"Kr", 1, STR_GAME_OPTIONS_CURRENCY_ISK }, ///< icelandic krona
{ 2850, "", 2002, "", NBSP"L.", 1, STR_GAME_OPTIONS_CURRENCY_ITL }, ///< italian lira
{ 3, "", 2002, "NLG"NBSP, "", 0, STR_GAME_OPTIONS_CURRENCY_NLG }, ///< dutch gulden
{ 12, "", CF_NOEURO, "", NBSP"Kr", 1, STR_GAME_OPTIONS_CURRENCY_NOK }, ///< norwegian krone
{ 6, "", CF_NOEURO, "", NBSP"z\xC5\x82", 1, STR_GAME_OPTIONS_CURRENCY_PLN }, ///< polish zloty
{ 5, "", CF_NOEURO, "", NBSP"Lei", 1, STR_GAME_OPTIONS_CURRENCY_RON }, ///< romanian Lei
{ 50, "", CF_NOEURO, "", NBSP"p", 1, STR_GAME_OPTIONS_CURRENCY_RUR }, ///< russian rouble
{ 352, "", 2007, "", NBSP"SIT", 1, STR_GAME_OPTIONS_CURRENCY_SIT }, ///< slovenian tolar
{ 13, "", CF_NOEURO, "", NBSP"Kr", 1, STR_GAME_OPTIONS_CURRENCY_SEK }, ///< swedish krona
{ 3, "", CF_NOEURO, "", NBSP"TL", 1, STR_GAME_OPTIONS_CURRENCY_TRY }, ///< turkish lira
{ 52, "", 2009, "", NBSP"Sk", 1, STR_GAME_OPTIONS_CURRENCY_SKK }, ///< slovak koruna
{ 4, "", CF_NOEURO, "R$"NBSP, "", 0, STR_GAME_OPTIONS_CURRENCY_BRL }, ///< brazil real
{ 20, "", CF_NOEURO, "", NBSP"EEK", 1, STR_GAME_OPTIONS_CURRENCY_EEK }, ///< estonian krooni
{ 1, "", CF_NOEURO, "", "", 2, STR_GAME_OPTIONS_CURRENCY_CUSTOM }, ///< custom currency
};
/* Array of currencies used by the system */

View File

@@ -56,7 +56,12 @@ static void PlaceDocks_Dock(TileIndex tile)
/* tile is always the land tile, so need to evaluate _thd.pos */
CommandContainer cmdcont = { tile, _ctrl_pressed, p2, CMD_BUILD_DOCK | CMD_MSG(STR_ERROR_CAN_T_BUILD_DOCK_HERE), CcBuildDocks, "" };
ShowSelectStationIfNeeded(cmdcont, TileArea(tile, _thd.size.x / TILE_SIZE, _thd.size.y / TILE_SIZE));
/* Determine the watery part of the dock. */
DiagDirection dir = GetInclinedSlopeDirection(GetTileSlope(tile, NULL));
TileIndex tile_to = (dir != INVALID_DIAGDIR ? TileAddByDiagDir(tile, ReverseDiagDir(dir)) : tile);
ShowSelectStationIfNeeded(cmdcont, TileArea(tile, tile_to));
}
static void PlaceDocks_Depot(TileIndex tile)

View File

@@ -1237,7 +1237,7 @@ static void LoadUnloadVehicle(Vehicle *v, int *cargo_left)
case VEH_TRAIN: t = Train::From(u)->tcache.cached_max_speed; break;
case VEH_ROAD: t = u->max_speed / 2; break;
case VEH_SHIP: t = u->max_speed; break;
case VEH_AIRCRAFT: t = u->max_speed * 10 / 129; break; // convert to old units
case VEH_AIRCRAFT: t = u->max_speed * 10 / 128; break; // convert to old units
default: NOT_REACHED();
}
@@ -1501,8 +1501,12 @@ CommandCost CmdBuyShareInCompany(TileIndex tile, DoCommandFlag flags, uint32 p1,
/* Those lines are here for network-protection (clients can be slow) */
if (GetAmountOwnedBy(c, COMPANY_SPECTATOR) == 0) return cost;
/* We can not buy out a real company (temporarily). TODO: well, enable it obviously */
if (GetAmountOwnedBy(c, COMPANY_SPECTATOR) == 1 && !c->is_ai) return cost;
if (GetAmountOwnedBy(c, COMPANY_SPECTATOR) == 1) {
if (!c->is_ai) return cost; // We can not buy out a real company (temporarily). TODO: well, enable it obviously.
if (GetAmountOwnedBy(c, _current_company) == 3 && !MayCompanyTakeOver(_current_company, target_company)) return_cmd_error(STR_ERROR_TOO_MANY_VEHICLES_IN_GAME);
}
cost.AddCost(CalculateCompanyValue(c) >> 2);
if (flags & DC_EXEC) {
@@ -1583,6 +1587,9 @@ CommandCost CmdBuyCompany(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32
/* Do not allow companies to take over themselves */
if (target_company == _current_company) return CMD_ERROR;
/* Disable taking over when not allowed. */
if (!MayCompanyTakeOver(_current_company, target_company)) return CMD_ERROR;
/* Get the cost here as the company is deleted in DoAcquireCompany. */
CommandCost cost(EXPENSES_OTHER, c->bankrupt_value);

View File

@@ -165,20 +165,20 @@ static TrackBits MaskWireBits(TileIndex t, TrackBits tracks)
/**
* Get the base wire sprite to use.
*/
static inline SpriteID GetWireBase(TileIndex tile)
static inline SpriteID GetWireBase(TileIndex tile, TileContext context = TCX_NORMAL)
{
const RailtypeInfo *rti = GetRailTypeInfo(GetRailType(tile));
SpriteID wires = GetCustomRailSprite(rti, tile, RTSG_WIRES);
SpriteID wires = GetCustomRailSprite(rti, tile, RTSG_WIRES, context);
return wires == 0 ? SPR_WIRE_BASE : wires;
}
/**
* Get the base pylon sprite to use.
*/
static inline SpriteID GetPylonBase(TileIndex tile)
static inline SpriteID GetPylonBase(TileIndex tile, TileContext context = TCX_NORMAL)
{
const RailtypeInfo *rti = GetRailTypeInfo(GetRailType(tile));
SpriteID pylons = GetCustomRailSprite(rti, tile, RTSG_PYLONS);
SpriteID pylons = GetCustomRailSprite(rti, tile, RTSG_PYLONS, context);
return pylons == 0 ? SPR_PYLON_BASE : pylons;
}
@@ -274,7 +274,11 @@ static void DrawCatenaryRailway(const TileInfo *ti)
/* Half tile slopes coincide only with horizontal/vertical track.
* Faking a flat slope results in the correct sprites on positions. */
if (IsHalftileSlope(tileh[TS_HOME])) tileh[TS_HOME] = SLOPE_FLAT;
Corner halftile_corner = CORNER_INVALID;
if (IsHalftileSlope(tileh[TS_HOME])) {
halftile_corner = GetHalftileSlopeCorner(tileh[TS_HOME]);
tileh[TS_HOME] = SLOPE_FLAT;
}
TLG tlg = GetTLG(ti->tile);
byte PCPstatus = 0;
@@ -295,9 +299,17 @@ static void DrawCatenaryRailway(const TileInfo *ti)
AdjustTileh(ti->tile, &tileh[TS_HOME]);
SpriteID pylon_base = GetPylonBase(ti->tile);
SpriteID pylon_normal = GetPylonBase(ti->tile);
SpriteID pylon_halftile = (halftile_corner != CORNER_INVALID) ? GetPylonBase(ti->tile, TCX_UPPER_HALFTILE) : pylon_normal;
for (DiagDirection i = DIAGDIR_BEGIN; i < DIAGDIR_END; i++) {
static const uint edge_corners[] = {
1 << CORNER_N | 1 << CORNER_E, // DIAGDIR_NE
1 << CORNER_S | 1 << CORNER_E, // DIAGDIR_SE
1 << CORNER_S | 1 << CORNER_W, // DIAGDIR_SW
1 << CORNER_N | 1 << CORNER_W, // DIAGDIR_NW
};
SpriteID pylon_base = (halftile_corner != CORNER_INVALID && HasBit(edge_corners[i], halftile_corner)) ? pylon_halftile : pylon_normal;
TileIndex neighbour = ti->tile + TileOffsByDiagDir(i);
Foundation foundation = FOUNDATION_NONE;
byte elevation = GetPCPElevation(ti->tile, i);
@@ -426,11 +438,21 @@ static void DrawCatenaryRailway(const TileInfo *ti)
if (height <= GetTileMaxZ(ti->tile) + TILE_HEIGHT) return;
}
SpriteID wire_base = GetWireBase(ti->tile);
SpriteID wire_normal = GetWireBase(ti->tile);
SpriteID wire_halftile = (halftile_corner != CORNER_INVALID) ? GetWireBase(ti->tile, TCX_UPPER_HALFTILE) : wire_normal;
Track halftile_track;
switch (halftile_corner) {
case CORNER_W: halftile_track = TRACK_LEFT; break;
case CORNER_S: halftile_track = TRACK_LOWER; break;
case CORNER_E: halftile_track = TRACK_RIGHT; break;
case CORNER_N: halftile_track = TRACK_UPPER; break;
default: halftile_track = INVALID_TRACK; break;
}
/* Drawing of pylons is finished, now draw the wires */
for (Track t = TRACK_BEGIN; t < TRACK_END; t++) {
if (HasBit(wireconfig[TS_HOME], t)) {
SpriteID wire_base = (t == halftile_track) ? wire_halftile : wire_normal;
byte PCPconfig = HasBit(PCPstatus, PCPpositions[t][0]) +
(HasBit(PCPstatus, PCPpositions[t][1]) << 1);
@@ -479,14 +501,14 @@ void DrawCatenaryOnBridge(const TileInfo *ti)
height = GetBridgeHeight(end);
SpriteID wire_base = GetWireBase(start);
SpriteID wire_base = GetWireBase(end, TCX_ON_BRIDGE);
AddSortableSpriteToDraw(wire_base + sss->image_offset, PAL_NONE, ti->x + sss->x_offset, ti->y + sss->y_offset,
sss->x_size, sss->y_size, sss->z_size, height + sss->z_offset,
IsTransparencySet(TO_CATENARY)
);
SpriteID pylon_base = GetPylonBase(start);
SpriteID pylon_base = GetPylonBase(end, TCX_ON_BRIDGE);
/* Finished with wires, draw pylons
* every other tile needs a pylon on the northern end */
@@ -579,8 +601,7 @@ bool SettingsDisableElrail(int32 p1)
FOR_ALL_TRAINS(t) {
/* power and acceleration is cached only for front engines */
if (t->IsFrontEngine()) {
t->PowerChanged();
t->UpdateAcceleration();
t->ConsistChanged(true);
}
}

View File

@@ -808,6 +808,8 @@ bool IsEngineBuildable(EngineID engine, VehicleType type, CompanyID company)
/* check if it's available */
if (!HasBit(e->company_avail, company)) return false;
if (e->info.string_id == STR_NEWGRF_INVALID_ENGINE) return false;
if (type == VEH_TRAIN) {
/* Check if the rail type is available to this company */
const Company *c = Company::Get(company);

View File

@@ -44,7 +44,7 @@ struct Fio {
FILE *handles[MAX_FILE_SLOTS]; ///< array of file handles we can have open
byte buffer_start[FIO_BUFFER_SIZE]; ///< local buffer when read from file
const char *filenames[MAX_FILE_SLOTS]; ///< array of filenames we (should) have open
char *shortnames[MAX_FILE_SLOTS];///< array of short names for spriteloader's use
char *shortnames[MAX_FILE_SLOTS]; ///< array of short names for spriteloader's use
#if defined(LIMITED_FDS)
uint open_handles; ///< current amount of open handles
uint usage_count[MAX_FILE_SLOTS]; ///< count how many times this file has been opened
@@ -53,6 +53,9 @@ struct Fio {
static Fio _fio;
/** Whether the working directory should be scanned. */
static bool _do_scan_working_directory = true;
/* Get current position in file */
size_t FioGetPos()
{
@@ -448,16 +451,21 @@ void FioCreateDirectory(const char *name)
* It does not add the path separator to zero-sized strings.
* @param buf string to append the separator to
* @param buflen the length of the buf
* @return true iff the operation succeeded
*/
void AppendPathSeparator(char *buf, size_t buflen)
bool AppendPathSeparator(char *buf, size_t buflen)
{
size_t s = strlen(buf);
/* Length of string + path separator + '\0' */
if (s != 0 && buf[s - 1] != PATHSEPCHAR && s + 2 < buflen) {
if (s != 0 && buf[s - 1] != PATHSEPCHAR) {
if (s + 2 >= buflen) return false;
buf[s] = PATHSEPCHAR;
buf[s + 1] = '\0';
}
return true;
}
/**
@@ -534,7 +542,18 @@ static void SimplifyFileName(char *name)
#endif
}
bool TarListAddFile(const char *filename)
/* static */ uint TarScanner::DoScan() {
DEBUG(misc, 1, "Scanning for tars");
TarScanner fs;
uint num = fs.Scan(".tar", DATA_DIR, false);
num += fs.Scan(".tar", AI_DIR, false);
num += fs.Scan(".tar", AI_LIBRARY_DIR, false);
num += fs.Scan(".tar", SCENARIO_DIR, false);
DEBUG(misc, 1, "Scan complete, found %d files", num);
return num;
}
bool TarScanner::AddFile(const char *filename, size_t basepath_length)
{
/* The TAR-header, repeated for every file */
typedef struct TarHeader {
@@ -820,66 +839,6 @@ bool ExtractTar(const char *tar_filename)
return true;
}
static int ScanPathForTarFiles(const char *path, size_t basepath_length)
{
extern bool FiosIsValidFile(const char *path, const struct dirent *ent, struct stat *sb);
uint num = 0;
struct stat sb;
struct dirent *dirent;
DIR *dir;
if (path == NULL || (dir = ttd_opendir(path)) == NULL) return 0;
while ((dirent = readdir(dir)) != NULL) {
const char *d_name = FS2OTTD(dirent->d_name);
char filename[MAX_PATH];
if (!FiosIsValidFile(path, dirent, &sb)) continue;
snprintf(filename, lengthof(filename), "%s%s", path, d_name);
if (S_ISDIR(sb.st_mode)) {
/* Directory */
if (strcmp(d_name, ".") == 0 || strcmp(d_name, "..") == 0) continue;
AppendPathSeparator(filename, lengthof(filename));
num += ScanPathForTarFiles(filename, basepath_length);
} else if (S_ISREG(sb.st_mode)) {
/* File */
char *ext = strrchr(filename, '.');
/* If no extension or extension isn't .tar, skip the file */
if (ext == NULL) continue;
if (strcasecmp(ext, ".tar") != 0) continue;
if (TarListAddFile(filename)) num++;
}
}
closedir(dir);
return num;
}
void ScanForTarFiles()
{
Searchpath sp;
char path[MAX_PATH];
uint num = 0;
DEBUG(misc, 1, "Scanning for tars");
FOR_ALL_SEARCHPATHS(sp) {
FioAppendDirectory(path, MAX_PATH, sp, DATA_DIR);
num += ScanPathForTarFiles(path, strlen(path));
FioAppendDirectory(path, MAX_PATH, sp, AI_DIR);
num += ScanPathForTarFiles(path, strlen(path));
FioAppendDirectory(path, MAX_PATH, sp, AI_LIBRARY_DIR);
num += ScanPathForTarFiles(path, strlen(path));
FioAppendDirectory(path, MAX_PATH, sp, SCENARIO_DIR);
num += ScanPathForTarFiles(path, strlen(path));
}
DEBUG(misc, 1, "Scan complete, found %d files", num);
}
#if defined(WIN32) || defined(WINCE)
/**
* Determine the base (personal dir and game data dir) paths
@@ -919,6 +878,33 @@ void ChangeWorkingDirectory(const char *exe)
#endif /* WITH_COCOA */
}
/**
* Whether we should scan the working directory.
* It should not be scanned if it's the root or
* the home directory as in both cases a big data
* directory can cause huge amounts of unrelated
* files scanned. Furthermore there are nearly no
* use cases for the home/root directory to have
* OpenTTD directories.
* @return true if it should be scanned.
*/
bool DoScanWorkingDirectory()
{
/* No working directory, so nothing to do. */
if (_searchpaths[SP_WORKING_DIR] == NULL) return false;
/* Working directory is root, so do nothing. */
if (strcmp(_searchpaths[SP_WORKING_DIR], PATHSEP) == 0) return false;
/* No personal/home directory, so the working directory won't be that. */
if (_searchpaths[SP_PERSONAL_DIR] == NULL) return true;
char tmp[MAX_PATH];
snprintf(tmp, lengthof(tmp), "%s%s", _searchpaths[SP_WORKING_DIR], PERSONAL_DIR);
AppendPathSeparator(tmp, MAX_PATH);
return strcmp(tmp, _searchpaths[SP_PERSONAL_DIR]) != 0;
}
/**
* Determine the base (personal dir and game data dir) paths
* @param exe the path to the executable
@@ -964,6 +950,8 @@ void DetermineBasePaths(const char *exe)
_searchpaths[SP_WORKING_DIR] = strdup(tmp);
#endif
_do_scan_working_directory = DoScanWorkingDirectory();
/* Change the working directory to that one of the executable */
ChangeWorkingDirectory(exe);
if (getcwd(tmp, MAX_PATH) == NULL) *tmp = '\0';
@@ -1004,7 +992,10 @@ void DeterminePaths(const char *exe)
DetermineBasePaths(exe);
Searchpath sp;
FOR_ALL_SEARCHPATHS(sp) DEBUG(misc, 4, "%s added as search path", _searchpaths[sp]);
FOR_ALL_SEARCHPATHS(sp) {
if (sp == SP_WORKING_DIR && !_do_scan_working_directory) continue;
DEBUG(misc, 4, "%s added as search path", _searchpaths[sp]);
}
if (_config_file != NULL) {
_personal_dir = strdup(_config_file);
@@ -1079,7 +1070,7 @@ void DeterminePaths(const char *exe)
}
#endif /* ENABLE_NETWORK */
ScanForTarFiles();
TarScanner::DoScan();
}
/**
@@ -1158,7 +1149,7 @@ static uint ScanPath(FileScanner *fs, const char *extension, const char *path, s
/* Directory */
if (!recursive) continue;
if (strcmp(d_name, ".") == 0 || strcmp(d_name, "..") == 0) continue;
AppendPathSeparator(filename, lengthof(filename));
if (!AppendPathSeparator(filename, lengthof(filename))) continue;
num += ScanPath(fs, extension, filename, basepath_length, recursive);
} else if (S_ISREG(sb.st_mode)) {
/* File */
@@ -1220,6 +1211,9 @@ uint FileScanner::Scan(const char *extension, Subdirectory sd, bool tars, bool r
uint num = 0;
FOR_ALL_SEARCHPATHS(sp) {
/* Don't search in the working directory */
if (sp == SP_WORKING_DIR && !_do_scan_working_directory) continue;
FioAppendDirectory(path, MAX_PATH, sp, sd);
num += ScanPath(this, extension, path, strlen(path), recursive);
}
@@ -1245,6 +1239,6 @@ uint FileScanner::Scan(const char *extension, const char *directory, bool recurs
{
char path[MAX_PATH];
strecpy(path, directory, lastof(path));
AppendPathSeparator(path, lengthof(path));
if (!AppendPathSeparator(path, lengthof(path))) return 0;
return ScanPath(this, extension, path, strlen(path), recursive);
}

View File

@@ -57,7 +57,7 @@ char *FioAppendDirectory(char *buf, size_t buflen, Searchpath sp, Subdirectory s
char *FioGetDirectory(char *buf, size_t buflen, Subdirectory subdir);
void SanitizeFilename(char *filename);
void AppendPathSeparator(char *buf, size_t buflen);
bool AppendPathSeparator(char *buf, size_t buflen);
void DeterminePaths(const char *exe);
void *ReadFileToMem(const char *filename, size_t *lenp, size_t maxsize);
bool FileExists(const char *filename);
@@ -87,6 +87,14 @@ public:
virtual bool AddFile(const char *filename, size_t basepath_length) = 0;
};
/** Helper for scanning for files with tar as extension */
class TarScanner : FileScanner {
public:
/* virtual */ bool AddFile(const char *filename, size_t basepath_length);
/** Do the scan for Tars. */
static uint DoScan();
};
/* Implementation of opendir/readdir/closedir for Windows */
#if defined(WIN32)

Some files were not shown because too many files have changed in this diff Show More