Merge branch 'master' into town_cargo_adj

Conflicts:
	src/settings_gui.cpp
pull/3/head
Jonathan G Rennison 9 years ago
commit 60377f2262

@ -1,3 +1,7 @@
This is the license which applies to OpenTTD with the exception of some
3rd party modules. See readme.txt for details
GNU GENERAL PUBLIC LICENSE GNU GENERAL PUBLIC LICENSE
Version 2, June 1991 Version 2, June 1991

@ -202,7 +202,7 @@ SKIP_FUNCTION_MACROS = YES
# Configuration::additions related to external references # Configuration::additions related to external references
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
TAGFILES = TAGFILES =
GENERATE_TAGFILE = openttd.tag GENERATE_TAGFILE = objs/openttd.tag
ALLEXTERNALS = NO ALLEXTERNALS = NO
EXTERNAL_GROUPS = YES EXTERNAL_GROUPS = YES
PERL_PATH = /usr/bin/perl PERL_PATH = /usr/bin/perl

@ -90,9 +90,9 @@ endif
ifeq ($(TTD), openttd.exe) ifeq ($(TTD), openttd.exe)
$(Q)unix2dos "$(BUNDLE_DIR)/docs/"* "$(BUNDLE_DIR)/readme.txt" "$(BUNDLE_DIR)/COPYING" "$(BUNDLE_DIR)/changelog.txt" "$(BUNDLE_DIR)/known-bugs.txt" $(Q)unix2dos "$(BUNDLE_DIR)/docs/"* "$(BUNDLE_DIR)/readme.txt" "$(BUNDLE_DIR)/COPYING" "$(BUNDLE_DIR)/changelog.txt" "$(BUNDLE_DIR)/known-bugs.txt"
ifeq ($(OS), DOS) ifeq ($(OS), DOS)
$(Q)cp "$(ROOT_DIR)/os/dos/cwsdpmi.txt" "$(BUNDLE_DIR)/docs/" $(Q)cp "$(ROOT_DIR)/os/dos/cwsdpmi/cwsdpmi.txt" "$(BUNDLE_DIR)/docs/"
ifndef STRIP ifndef STRIP
$(Q)cp "$(ROOT_DIR)/os/dos/cwsdpmi.exe" "$(TTD_DIR)/" $(Q)cp "$(ROOT_DIR)/os/dos/cwsdpmi/cwsdpmi.exe" "$(TTD_DIR)/"
endif endif
endif endif
endif endif

@ -5,16 +5,13 @@
# 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. # 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/>. # 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 # Building requires GRFCodec.
# known to miscompile the graphics.
# #
# Recent nightlies (including sources) of both can be found at: # Recent versions (including sources) can be found at:
# http://www.openttd.org/download-grfcodec # http://www.openttd.org/download-grfcodec
# http://www.openttd.org/download-nforenum
# #
# The mercurial repository of both can be found at: # The mercurial repository can be found at:
# http://hg.openttdcoop.org/grfcodec # http://hg.openttdcoop.org/grfcodec
# http://hg.openttdcoop.org/nforenum
# #
@ -75,10 +72,10 @@ $(BIN_DIR)/%.obm: $(BASESET_DIR)/%.obm $(OBJS_DIR)/langfiles.tmp $(BASESET_DIR)/
$(Q) awk -v langfiles='$(OBJS_DIR)/langfiles.tmp' -f $(BASESET_DIR)/translations.awk $< >$@ $(Q) awk -v langfiles='$(OBJS_DIR)/langfiles.tmp' -f $(BASESET_DIR)/translations.awk $< >$@
# Compile extra grf # Compile extra grf
$(BIN_DIR)/openttd.grf: $(PNG_FILES) $(NFO_FILES) $(OBJS_DIR)/sprites $(BIN_DIR)/openttd.grf: $(PNG_FILES) $(NFO_FILES) $(OBJS_DIR)/sprites $(GRF_DIR)/assemble_nfo.awk
$(E) '$(STAGE) Assembling openttd.nfo' $(E) '$(STAGE) Assembling openttd.nfo'
$(Q)-cp $(PNG_FILES) $(OBJS_DIR)/sprites 2> /dev/null $(Q)-cp $(PNG_FILES) $(OBJS_DIR)/sprites 2> /dev/null
$(Q) $(CC_BUILD) -nostdinc -I$(GRF_DIR) -C -E - < "$(GRF_DIR)/openttd.nfo" | sed -e '/^#/d' -e '/^$$/d' > $(OBJS_DIR)/sprites/openttd.nfo $(Q) awk -f $(GRF_DIR)/assemble_nfo.awk $(GRF_DIR)/openttd.nfo > $(OBJS_DIR)/sprites/openttd.nfo
$(Q) $(NFORENUM) -s $(OBJS_DIR)/sprites/openttd.nfo $(Q) $(NFORENUM) -s $(OBJS_DIR)/sprites/openttd.nfo
$(E) '$(STAGE) Compiling openttd.grf' $(E) '$(STAGE) Compiling openttd.grf'
$(Q) $(GRFCODEC) -n -s -e -p1 $(OBJS_DIR)/openttd.grf $(Q) $(GRFCODEC) -n -s -e -p1 $(OBJS_DIR)/openttd.grf

@ -144,11 +144,9 @@ mrproper:
# output of profiling # output of profiling
$(Q)rm -f $(BIN_DIR)/gmon.out $(Q)rm -f $(BIN_DIR)/gmon.out
# output of generating 'API' documentation # output of generating 'API' documentation
$(Q)rm -f $(ROOT_DIR)/openttd.tag
$(Q)rm -rf $(ROOT_DIR)/docs/source $(Q)rm -rf $(ROOT_DIR)/docs/source
# output of generating AI API documentation
$(Q)rm -f $(SRC_DIR)/ai/api/openttd.tag
$(Q)rm -rf $(ROOT_DIR)/docs/aidocs $(Q)rm -rf $(ROOT_DIR)/docs/aidocs
$(Q)rm -rf $(ROOT_DIR)/docs/gamedocs
# directories created by OpenTTD on regression testing # directories created by OpenTTD on regression testing
$(Q)rm -rf $(BIN_DIR)/ai/regression/content_download $(BIN_DIR)/ai/regression/save $(BIN_DIR)/ai/regression/scenario $(Q)rm -rf $(BIN_DIR)/ai/regression/content_download $(BIN_DIR)/ai/regression/save $(BIN_DIR)/ai/regression/scenario
distclean: mrproper distclean: mrproper

@ -43,23 +43,23 @@ RES := $(shell mkdir -p $(BIN_DIR)/lang )
all: table/strings.h $(LANGS) all: table/strings.h $(LANGS)
strgen_base.o: $(SRC_DIR)/strgen/strgen_base.cpp $(SRC_DIR)/strgen/strgen.h endian_host.h $(SRC_DIR)/table/control_codes.h $(SRC_DIR)/table/strgen_tables.h strgen_base.o: $(SRC_DIR)/strgen/strgen_base.cpp $(SRC_DIR)/strgen/strgen.h endian_host.h $(SRC_DIR)/table/control_codes.h $(SRC_DIR)/table/strgen_tables.h $(SRC_DIR)/safeguards.h
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)' $(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSTRGEN -c -o $@ $< $(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSTRGEN -c -o $@ $<
strgen.o: $(SRC_DIR)/strgen/strgen.cpp $(SRC_DIR)/strgen/strgen.h endian_host.h $(SRC_DIR)/table/control_codes.h $(SRC_DIR)/table/strgen_tables.h strgen.o: $(SRC_DIR)/strgen/strgen.cpp $(SRC_DIR)/strgen/strgen.h endian_host.h $(SRC_DIR)/table/control_codes.h $(SRC_DIR)/table/strgen_tables.h $(SRC_DIR)/safeguards.h
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)' $(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSTRGEN -c -o $@ $< $(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSTRGEN -c -o $@ $<
string.o: $(SRC_DIR)/string.cpp endian_host.h string.o: $(SRC_DIR)/string.cpp endian_host.h $(SRC_DIR)/safeguards.h
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)' $(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSTRGEN -c -o $@ $< $(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSTRGEN -c -o $@ $<
alloc_func.o: $(SRC_DIR)/core/alloc_func.cpp endian_host.h alloc_func.o: $(SRC_DIR)/core/alloc_func.cpp endian_host.h $(SRC_DIR)/safeguards.h
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)' $(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSTRGEN -c -o $@ $< $(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSTRGEN -c -o $@ $<
getoptdata.o: $(SRC_DIR)/misc/getoptdata.cpp $(SRC_DIR)/misc/getoptdata.h getoptdata.o: $(SRC_DIR)/misc/getoptdata.cpp $(SRC_DIR)/misc/getoptdata.h $(SRC_DIR)/safeguards.h
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/misc/%.cpp=%.cpp)' $(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/misc/%.cpp=%.cpp)'
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSTRGEN -c -o $@ $< $(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSTRGEN -c -o $@ $<

@ -28,23 +28,23 @@ endif
all: table/settings.h all: table/settings.h
settingsgen.o: $(SRC_DIR)/settingsgen/settingsgen.cpp $(SRC_DIR)/string_func.h $(SRC_DIR)/strings_type.h $(SRC_DIR)/misc/getoptdata.h $(SRC_DIR)/ini_type.h $(SRC_DIR)/core/smallvec_type.hpp settingsgen.o: $(SRC_DIR)/settingsgen/settingsgen.cpp $(SRC_DIR)/string_func.h $(SRC_DIR)/strings_type.h $(SRC_DIR)/misc/getoptdata.h $(SRC_DIR)/ini_type.h $(SRC_DIR)/core/smallvec_type.hpp $(SRC_DIR)/safeguards.h
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)' $(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSETTINGSGEN -c -o $@ $< $(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSETTINGSGEN -c -o $@ $<
alloc_func.o: $(SRC_DIR)/core/alloc_func.cpp endian_host.h alloc_func.o: $(SRC_DIR)/core/alloc_func.cpp endian_host.h $(SRC_DIR)/safeguards.h
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)' $(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSETTINGSGEN -c -o $@ $< $(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSETTINGSGEN -c -o $@ $<
getoptdata.o: $(SRC_DIR)/misc/getoptdata.cpp $(SRC_DIR)/misc/getoptdata.h getoptdata.o: $(SRC_DIR)/misc/getoptdata.cpp $(SRC_DIR)/misc/getoptdata.h $(SRC_DIR)/safeguards.h
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/misc/%.cpp=%.cpp)' $(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/misc/%.cpp=%.cpp)'
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSETTINGSGEN -c -o $@ $< $(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSETTINGSGEN -c -o $@ $<
string.o: $(SRC_DIR)/string.cpp endian_host.h string.o: $(SRC_DIR)/string.cpp endian_host.h $(SRC_DIR)/safeguards.h
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)' $(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSETTINGSGEN -c -o $@ $< $(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSETTINGSGEN -c -o $@ $<
ini_load.o: $(SRC_DIR)/ini_load.cpp $(SRC_DIR)/core/alloc_func.hpp $(SRC_DIR)/core/mem_func.hpp $(SRC_DIR)/ini_type.h $(SRC_DIR)/string_func.h ini_load.o: $(SRC_DIR)/ini_load.cpp $(SRC_DIR)/core/alloc_func.hpp $(SRC_DIR)/core/mem_func.hpp $(SRC_DIR)/ini_type.h $(SRC_DIR)/string_func.h $(SRC_DIR)/safeguards.h
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)' $(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSETTINGSGEN -c -o $@ $< $(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSETTINGSGEN -c -o $@ $<

@ -229,10 +229,22 @@ $(OBJS_C): %.o: $(SRC_DIR)/%.c $(DEP_MASK) $(FILE_DEP)
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.c=%.c)' $(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.c=%.c)'
$(Q)$(CC_HOST) $(CFLAGS) -c -o $@ $< $(Q)$(CC_HOST) $(CFLAGS) -c -o $@ $<
$(OBJS_CPP): %.o: $(SRC_DIR)/%.cpp $(DEP_MASK) $(FILE_DEP) $(filter-out %sse2.o, $(filter-out %ssse3.o, $(filter-out %sse4.o, $(OBJS_CPP)))): %.o: $(SRC_DIR)/%.cpp $(DEP_MASK) $(FILE_DEP)
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)' $(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
$(Q)$(CXX_HOST) $(CFLAGS) $(CXXFLAGS) -c -o $@ $< $(Q)$(CXX_HOST) $(CFLAGS) $(CXXFLAGS) -c -o $@ $<
$(filter %sse2.o, $(OBJS_CPP)): %.o: $(SRC_DIR)/%.cpp $(DEP_MASK) $(FILE_DEP)
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
$(Q)$(CXX_HOST) $(CFLAGS) $(CXXFLAGS) -c -msse2 -o $@ $<
$(filter %ssse3.o, $(OBJS_CPP)): %.o: $(SRC_DIR)/%.cpp $(DEP_MASK) $(FILE_DEP)
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
$(Q)$(CXX_HOST) $(CFLAGS) $(CXXFLAGS) -c -mssse3 -o $@ $<
$(filter %sse4.o, $(OBJS_CPP)): %.o: $(SRC_DIR)/%.cpp $(DEP_MASK) $(FILE_DEP)
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
$(Q)$(CXX_HOST) $(CFLAGS) $(CXXFLAGS) -c -msse4.1 -o $@ $<
$(OBJS_MM): %.o: $(SRC_DIR)/%.mm $(DEP_MASK) $(FILE_DEP) $(OBJS_MM): %.o: $(SRC_DIR)/%.mm $(DEP_MASK) $(FILE_DEP)
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.mm=%.mm)' $(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.mm=%.mm)'
$(Q)$(CC_HOST) $(CFLAGS) -c -o $@ $< $(Q)$(CC_HOST) $(CFLAGS) -c -o $@ $<

@ -7,7 +7,7 @@
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
*/ */
AILog.Info("0.7 API compatability in effect:"); AILog.Info("0.7 API compatibility in effect:");
AILog.Info(" - AITown::GetLastMonthProduction's behaviour has slightly changed."); AILog.Info(" - AITown::GetLastMonthProduction's behaviour has slightly changed.");
AILog.Info(" - AISubsidy::GetDestination returns STATION_INVALID for awarded subsidies."); AILog.Info(" - AISubsidy::GetDestination returns STATION_INVALID for awarded subsidies.");
AILog.Info(" - AISubsidy::GetSource returns STATION_INVALID for awarded subsidies."); AILog.Info(" - AISubsidy::GetSource returns STATION_INVALID for awarded subsidies.");

@ -7,7 +7,7 @@
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
*/ */
AILog.Info("1.0 API compatability in effect."); AILog.Info("1.0 API compatibility in effect.");
AIRoad._BuildRoadStation <- AIRoad.BuildRoadStation; AIRoad._BuildRoadStation <- AIRoad.BuildRoadStation;
AIRoad.BuildRoadStation <- function(tile, front, road_veh_type, station_id) AIRoad.BuildRoadStation <- function(tile, front, road_veh_type, station_id)

@ -7,7 +7,7 @@
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
*/ */
AILog.Info("1.1 API compatability in effect."); AILog.Info("1.1 API compatibility in effect.");
AICompany.GetCompanyValue <- function(company) AICompany.GetCompanyValue <- function(company)
{ {

@ -7,4 +7,4 @@
* 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/>. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
*/ */
AILog.Info("1.2 API compatability in effect."); AILog.Info("1.2 API compatibility in effect.");

@ -7,4 +7,4 @@
* 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/>. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
*/ */
AILog.Info("1.3 API compatability in effect."); AILog.Info("1.3 API compatibility in effect.");

@ -1,4 +1,4 @@
/* $Id: compat_1.3.nut 23969 2012-02-19 19:14:17Z rubidium $ */ /* $Id$ */
/* /*
* This file is part of OpenTTD. * This file is part of OpenTTD.
@ -6,3 +6,5 @@
* 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. * 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/>. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
*/ */
AILog.Info("1.4 API compatibility in effect.");

@ -0,0 +1,10 @@
/* $Id$ */
/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
*/
AILog.Info("1.5 API compatibility in effect.");

@ -0,0 +1,8 @@
/* $Id$ */
/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
*/

@ -2,12 +2,12 @@
# $Id$ # $Id$
if ! [ -f ai/regression/regression.nut ]; then if ! [ -f ai/regression/completeness.sh ]; then
echo "Make sure you are in the root of OpenTTD before starting this script." echo "Make sure you are in the root of OpenTTD before starting this script."
exit 1 exit 1
fi fi
cat ai/regression/regression.nut | tr ';' '\n' | awk ' cat ai/regression/tst_*/main.nut | tr ';' '\n' | awk '
/^function/ { /^function/ {
for (local in locals) { for (local in locals) {
delete locals[local] delete locals[local]
@ -61,7 +61,7 @@ cat ai/regression/regression.nut | tr ';' '\n' | awk '
} }
' | sed 's/ //g' | sort | uniq > tmp.in_regression ' | sed 's/ //g' | sort | uniq > tmp.in_regression
grep 'DefSQ.*Method' ../src/ai/api/*.hpp.sq | grep -v 'AIError::' | grep -v 'AIAbstractList::Valuate' | grep -v '::GetClassName' | sed 's/^[^,]*, &//g;s/,[^,]*//g' | sort > tmp.in_api grep 'DefSQ.*Method' ../src/script/api/ai/*.hpp.sq | grep -v 'AIError::' | grep -v 'AIAbstractList::Valuate' | grep -v '::GetClassName' | sed 's/^[^,]*, &//g;s/,[^,]*//g' | sort > tmp.in_api
diff -u tmp.in_regression tmp.in_api | grep -v '^+++' | grep '^+' | sed 's/^+//' diff -u tmp.in_regression tmp.in_api | grep -v '^+++' | grep '^+' | sed 's/^+//'

@ -4,9 +4,9 @@ class Regression extends AIInfo {
function GetAuthor() { return "OpenTTD NoAI Developers Team"; } function GetAuthor() { return "OpenTTD NoAI Developers Team"; }
function GetName() { return "Regression"; } function GetName() { return "Regression"; }
function GetShortName() { return "REGR"; } function GetShortName() { return "REGR"; }
function GetDescription() { return "This runs regression-tests on all commands. On the same map the result should always be the same."; } function GetDescription() { return "This runs regression-tests on some commands. On the same map the result should always be the same."; }
function GetVersion() { return 1; } function GetVersion() { return 1; }
function GetAPIVersion() { return "1.3"; } function GetAPIVersion() { return "1.6"; }
function GetDate() { return "2007-03-18"; } function GetDate() { return "2007-03-18"; }
function CreateInstance() { return "Regression"; } function CreateInstance() { return "Regression"; }
} }

@ -2,14 +2,11 @@
# $Id$ # $Id$
if ! [ -f ai/regression/regression.nut ]; then if ! [ -f ai/regression/run.sh ]; then
echo "Make sure you are in the root of OpenTTD before starting this script." echo "Make sure you are in the root of OpenTTD before starting this script."
exit 1 exit 1
fi fi
cp ai/regression/regression.nut ai/regression/main.nut
cp ai/regression/regression_info.nut ai/regression/info.nut
if [ -f scripts/game_start.scr ]; then if [ -f scripts/game_start.scr ]; then
mv scripts/game_start.scr scripts/game_start.scr.regression mv scripts/game_start.scr scripts/game_start.scr.regression
fi fi
@ -22,27 +19,46 @@ fi
if [ "$1" = "-g" ]; then if [ "$1" = "-g" ]; then
gdb="gdb --ex run --args " gdb="gdb --ex run --args "
fi fi
if [ -n "$gdb" ]; then
$gdb ./openttd -x -c ai/regression/regression.cfg $params -g ai/regression/regression.sav if [ -d "ai/regression/tst_$1" ]; then
tests="ai/regression/tst_$1"
elif [ -d "ai/regression/tst_$2" ]; then
tests="ai/regression/tst_$2"
else else
./openttd -x -c ai/regression/regression.cfg $params -g ai/regression/regression.sav -d script=2 -d misc=9 2>&1 | awk '{ gsub("0x(\\(nil\\)|0+)(x0)?", "0x00000000", $0); gsub("^dbg: \\[script\\]", "", $0); gsub("^ ", "ERROR: ", $0); gsub("ERROR: \\[1\\] ", "", $0); gsub("\\[P\\] ", "", $0); print $0; }' | grep -v '^dbg: \[.*\]' > tmp.regression tests=ai/regression/tst_*
fi fi
ret=0 ret=0
if [ -z "$gdb" ]; then for tst in $tests; do
res="`diff -ub ai/regression/regression.txt tmp.regression`" echo -n "Running $tst... "
if [ -z "$res" ]; then
echo "Regression test passed!" # Make sure that only one info.nut is present for each test run. Otherwise openttd gets confused.
cp ai/regression/regression_info.nut $tst/info.nut
sav=$tst/test.sav
if ! [ -f $sav ]; then
sav=ai/regression/empty.sav
fi
if [ -n "$gdb" ]; then
$gdb ./openttd -x -c ai/regression/regression.cfg $params -g $sav
else else
echo "Regression test failed! Difference:" ./openttd -x -c ai/regression/regression.cfg $params -g $sav -d script=2 -d misc=9 2>&1 | awk '{ gsub("0x(\\(nil\\)|0+)(x0)?", "0x00000000", $0); gsub("^dbg: \\[script\\]", "", $0); gsub("^ ", "ERROR: ", $0); gsub("ERROR: \\[1\\] ", "", $0); gsub("\\[P\\] ", "", $0); print $0; }' | grep -v '^dbg: \[.*\]' > tmp.regression
echo "$res" fi
ret=1
if [ -z "$gdb" ]; then
res="`diff -ub $tst/result.txt tmp.regression`"
if [ -z "$res" ]; then
echo "passed!"
else
echo "failed! Difference:"
echo "$res"
ret=1
fi
fi fi
echo ""
echo "Regression test done"
fi
rm -f ai/regression/main.nut ai/regression/info.nut rm $tst/info.nut
done
if [ -f scripts/game_start.scr.regression ]; then if [ -f scripts/game_start.scr.regression ]; then
mv scripts/game_start.scr.regression scripts/game_start.scr mv scripts/game_start.scr.regression scripts/game_start.scr

@ -972,48 +972,7 @@ function Regression::Order()
print(" SetStopLocation(): " + AIOrder.SetStopLocation(20, 0, AIOrder.STOPLOCATION_MIDDLE)); print(" SetStopLocation(): " + AIOrder.SetStopLocation(20, 0, AIOrder.STOPLOCATION_MIDDLE));
print(" GetStopLocation(): " + AIOrder.GetStopLocation(20, 0)); print(" GetStopLocation(): " + AIOrder.GetStopLocation(20, 0));
local list = AIStationList_Vehicle(12); local list = AIVehicleList_Station(3);
print("");
print("--StationList_Vehicle--");
print(" Count(): " + list.Count());
list.Valuate(AIStation.GetLocation);
print(" Location ListDump:");
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.Valuate(AIStation.GetCargoWaiting, 0);
print(" CargoWaiting(0) ListDump:");
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.Valuate(AIStation.GetCargoWaiting, 1);
print(" CargoWaiting(1) ListDump:");
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.Valuate(AIStation.GetCargoRating, 1);
print(" CargoRating(1) ListDump:");
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.Valuate(AIStation.GetDistanceManhattanToTile, 30000);
print(" DistanceManhattanToTile(30000) ListDump:");
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.Valuate(AIStation.GetDistanceSquareToTile, 30000);
print(" DistanceSquareToTile(30000) ListDump:");
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.Valuate(AIStation.IsWithinTownInfluence, 0);
print(" IsWithinTownInfluence(0) ListDump:");
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list = AIVehicleList_Station(3);
print(""); print("");
print("--VehicleList_Station--"); print("--VehicleList_Station--");
@ -1234,10 +1193,6 @@ function Regression::Station()
print(" GetLocation(1000): " + AIStation.GetLocation(1000)); print(" GetLocation(1000): " + AIStation.GetLocation(1000));
print(" GetStationID(33411): " + AIStation.GetStationID(33411)); print(" GetStationID(33411): " + AIStation.GetStationID(33411));
print(" GetStationID(34411): " + AIStation.GetStationID(34411)); print(" GetStationID(34411): " + AIStation.GetStationID(34411));
print(" GetCargoWaiting(0, 0): " + AIStation.GetCargoWaiting(0, 0));
print(" GetCargoWaiting(1000, 0): " + AIStation.GetCargoWaiting(1000, 0));
print(" GetCargoWaiting(0, 1000): " + AIStation.GetCargoWaiting(0, 1000));
print(" GetStationID(33411): " + AIStation.GetStationID(33411)); print(" GetStationID(33411): " + AIStation.GetStationID(33411));
print(" HasRoadType(3, TRAM): " + AIStation.HasRoadType(3, AIRoad.ROADTYPE_TRAM)); print(" HasRoadType(3, TRAM): " + AIStation.HasRoadType(3, AIRoad.ROADTYPE_TRAM));
print(" HasRoadType(3, ROAD): " + AIStation.HasRoadType(3, AIRoad.ROADTYPE_ROAD)); print(" HasRoadType(3, ROAD): " + AIStation.HasRoadType(3, AIRoad.ROADTYPE_ROAD));
@ -1254,25 +1209,42 @@ function Regression::Station()
print(" GetNearestTown(): " + AIStation.GetNearestTown(10000)); print(" GetNearestTown(): " + AIStation.GetNearestTown(10000));
print(" GetNearestTown(): " + AIStation.GetNearestTown(3)); print(" GetNearestTown(): " + AIStation.GetNearestTown(3));
local list = AIStationList(AIStation.STATION_BUS_STOP + AIStation.STATION_TRUCK_STOP);
print(""); print("");
print("--StationList--"); print("--CargoWaiting--");
print(" Count(): " + list.Count()); for (local cargo = 0; cargo <= 1000; cargo += 1000) {
list.Valuate(AIStation.GetLocation); for (local station0 = 0; station0 <= 1000; station0 += 1000) {
print(" Location ListDump:"); print(" GetCargoWaiting(" + station0 + ", " + cargo + "): " +
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { AIStation.GetCargoWaiting(station0, cargo));
print(" " + i + " => " + list.GetValue(i)); for (local station1 = 0; station1 <= 1000; station1 += 1000) {
} print(" GetCargoWaitingFrom(" + station0 + ", " + station1 + ", " + cargo + "): " +
list.Valuate(AIStation.GetCargoWaiting, 0); AIStation.GetCargoWaitingFrom(station0, station1, cargo));
print(" CargoWaiting(0) ListDump:"); print(" GetCargoWaitingVia(" + station0 + ", " + station1 + ", " + cargo + "): " +
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { AIStation.GetCargoWaitingFrom(station0, station1, cargo));
print(" " + i + " => " + list.GetValue(i)); for (local station2 = 0; station2 <= 1000; station2 += 1000) {
print(" GetCargoWaitingFromVia(" + station0 + ", " + station1 + ", " + station2 + ", " + cargo + "): " +
AIStation.GetCargoWaitingFromVia(station0, station1, station2, cargo));
}
}
}
} }
list.Valuate(AIStation.GetCargoWaiting, 1);
print(" CargoWaiting(1) ListDump:"); print("");
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print("--CargoPlanned--");
print(" " + i + " => " + list.GetValue(i)); for (local cargo = 0; cargo <= 1000; cargo += 1000) {
for (local station0 = 0; station0 <= 1000; station0 += 1000) {
print(" GetCargoPlanned(" + station0 + ", " + cargo + "): " +
AIStation.GetCargoPlanned(station0, cargo));
for (local station1 = 0; station1 <= 1000; station1 += 1000) {
print(" GetCargoPlannedFrom(" + station0 + ", " + station1 + ", " + cargo + "): " +
AIStation.GetCargoPlannedFrom(station0, station1, cargo));
print(" GetCargoPlannedVia(" + station0 + ", " + station1 + ", " + cargo + "): " +
AIStation.GetCargoPlannedFrom(station0, station1, cargo));
for (local station2 = 0; station2 <= 1000; station2 += 1000) {
print(" GetCargoPlannedFromVia(" + station0 + ", " + station1 + ", " + station2 + ", " + cargo + "): " +
AIStation.GetCargoPlannedFromVia(station0, station1, station2, cargo));
}
}
}
} }
} }

@ -7487,9 +7487,6 @@ ERROR: IsEnd() is invalid as Begin() is never called
GetLocation(1000): -1 GetLocation(1000): -1
GetStationID(33411): 4 GetStationID(33411): 4
GetStationID(34411): 65535 GetStationID(34411): 65535
GetCargoWaiting(0, 0): 0
GetCargoWaiting(1000, 0): -1
GetCargoWaiting(0, 1000): -1
GetStationID(33411): 4 GetStationID(33411): 4
HasRoadType(3, TRAM): false HasRoadType(3, TRAM): false
HasRoadType(3, ROAD): false HasRoadType(3, ROAD): false
@ -7504,17 +7501,81 @@ ERROR: IsEnd() is invalid as Begin() is never called
GetNearestTown(): 65535 GetNearestTown(): 65535
GetNearestTown(): 10 GetNearestTown(): 10
--StationList-- --CargoWaiting--
Count(): 2 GetCargoWaiting(0, 0): 0
Location ListDump: GetCargoWaitingFrom(0, 0, 0): 0
5 => 33421 GetCargoWaitingVia(0, 0, 0): 0
4 => 33411 GetCargoWaitingFromVia(0, 0, 0, 0): 0
CargoWaiting(0) ListDump: GetCargoWaitingFromVia(0, 0, 1000, 0): -1
5 => 0 GetCargoWaitingFrom(0, 1000, 0): -1
4 => 0 GetCargoWaitingVia(0, 1000, 0): -1
CargoWaiting(1) ListDump: GetCargoWaitingFromVia(0, 1000, 0, 0): -1
5 => 0 GetCargoWaitingFromVia(0, 1000, 1000, 0): -1
4 => 0 GetCargoWaiting(1000, 0): -1
GetCargoWaitingFrom(1000, 0, 0): -1
GetCargoWaitingVia(1000, 0, 0): -1
GetCargoWaitingFromVia(1000, 0, 0, 0): -1
GetCargoWaitingFromVia(1000, 0, 1000, 0): -1
GetCargoWaitingFrom(1000, 1000, 0): -1
GetCargoWaitingVia(1000, 1000, 0): -1
GetCargoWaitingFromVia(1000, 1000, 0, 0): -1
GetCargoWaitingFromVia(1000, 1000, 1000, 0): -1
GetCargoWaiting(0, 1000): -1
GetCargoWaitingFrom(0, 0, 1000): -1
GetCargoWaitingVia(0, 0, 1000): -1
GetCargoWaitingFromVia(0, 0, 0, 1000): -1
GetCargoWaitingFromVia(0, 0, 1000, 1000): -1
GetCargoWaitingFrom(0, 1000, 1000): -1
GetCargoWaitingVia(0, 1000, 1000): -1
GetCargoWaitingFromVia(0, 1000, 0, 1000): -1
GetCargoWaitingFromVia(0, 1000, 1000, 1000): -1
GetCargoWaiting(1000, 1000): -1
GetCargoWaitingFrom(1000, 0, 1000): -1
GetCargoWaitingVia(1000, 0, 1000): -1
GetCargoWaitingFromVia(1000, 0, 0, 1000): -1
GetCargoWaitingFromVia(1000, 0, 1000, 1000): -1
GetCargoWaitingFrom(1000, 1000, 1000): -1
GetCargoWaitingVia(1000, 1000, 1000): -1
GetCargoWaitingFromVia(1000, 1000, 0, 1000): -1
GetCargoWaitingFromVia(1000, 1000, 1000, 1000): -1
--CargoPlanned--
GetCargoPlanned(0, 0): 0
GetCargoPlannedFrom(0, 0, 0): 0
GetCargoPlannedVia(0, 0, 0): 0
GetCargoPlannedFromVia(0, 0, 0, 0): 0
GetCargoPlannedFromVia(0, 0, 1000, 0): -1
GetCargoPlannedFrom(0, 1000, 0): -1
GetCargoPlannedVia(0, 1000, 0): -1
GetCargoPlannedFromVia(0, 1000, 0, 0): -1
GetCargoPlannedFromVia(0, 1000, 1000, 0): -1
GetCargoPlanned(1000, 0): -1
GetCargoPlannedFrom(1000, 0, 0): -1
GetCargoPlannedVia(1000, 0, 0): -1
GetCargoPlannedFromVia(1000, 0, 0, 0): -1
GetCargoPlannedFromVia(1000, 0, 1000, 0): -1
GetCargoPlannedFrom(1000, 1000, 0): -1
GetCargoPlannedVia(1000, 1000, 0): -1
GetCargoPlannedFromVia(1000, 1000, 0, 0): -1
GetCargoPlannedFromVia(1000, 1000, 1000, 0): -1
GetCargoPlanned(0, 1000): -1
GetCargoPlannedFrom(0, 0, 1000): -1
GetCargoPlannedVia(0, 0, 1000): -1
GetCargoPlannedFromVia(0, 0, 0, 1000): -1
GetCargoPlannedFromVia(0, 0, 1000, 1000): -1
GetCargoPlannedFrom(0, 1000, 1000): -1
GetCargoPlannedVia(0, 1000, 1000): -1
GetCargoPlannedFromVia(0, 1000, 0, 1000): -1
GetCargoPlannedFromVia(0, 1000, 1000, 1000): -1
GetCargoPlanned(1000, 1000): -1
GetCargoPlannedFrom(1000, 0, 1000): -1
GetCargoPlannedVia(1000, 0, 1000): -1
GetCargoPlannedFromVia(1000, 0, 0, 1000): -1
GetCargoPlannedFromVia(1000, 0, 1000, 1000): -1
GetCargoPlannedFrom(1000, 1000, 1000): -1
GetCargoPlannedVia(1000, 1000, 1000): -1
GetCargoPlannedFromVia(1000, 1000, 0, 1000): -1
GetCargoPlannedFromVia(1000, 1000, 1000, 1000): -1
--Tile-- --Tile--
HasTreeOnTile(): false HasTreeOnTile(): false
@ -9106,30 +9167,6 @@ ERROR: IsEnd() is invalid as Begin() is never called
SetStopLocation(): true SetStopLocation(): true
GetStopLocation(): 1 GetStopLocation(): 1
--StationList_Vehicle--
Count(): 2
Location ListDump:
5 => 33421
4 => 33411
CargoWaiting(0) ListDump:
5 => 0
4 => 0
CargoWaiting(1) ListDump:
5 => 0
4 => 0
CargoRating(1) ListDump:
5 => -1
4 => -1
DistanceManhattanToTile(30000) ListDump:
5 => 106
4 => 96
DistanceSquareToTile(30000) ListDump:
5 => 8818
4 => 7058
IsWithinTownInfluence(0) ListDump:
5 => 0
4 => 0
--VehicleList_Station-- --VehicleList_Station--
Count(): 1 Count(): 1
Location ListDump: Location ListDump:

@ -0,0 +1,216 @@
/* $Id$ */
class Regression extends AIController {
function Start();
};
function Regression::StationList()
{
local list = AIStationList(AIStation.STATION_BUS_STOP + AIStation.STATION_TRUCK_STOP);
print("");
print("--StationList--");
print(" Count(): " + list.Count());
list.Valuate(AIStation.GetLocation);
print(" Location ListDump:");
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.Valuate(AIStation.GetCargoWaiting, 0);
print(" CargoWaiting(0) ListDump:");
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.Valuate(AIStation.GetCargoWaiting, 1);
print(" CargoWaiting(1) ListDump:");
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
};
function Regression::StationList_Cargo()
{
print("");
print("--StationList_Cargo--");
for (local mode = AIStationList_Cargo.CM_WAITING; mode <= AIStationList_Cargo.CM_PLANNED; ++mode) {
print(" " + mode);
for (local selector = AIStationList_Cargo.CS_BY_FROM; selector <= AIStationList_Cargo.CS_FROM_BY_VIA ; ++selector) {
print(" " + selector);
local list = AIStationList_Cargo(mode, selector, 6, 0, 7);
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
}
}
};
function Regression::StationList_CargoPlanned()
{
print("");
print("--StationList_CargoPlanned--");
for (local selector = AIStationList_Cargo.CS_BY_FROM; selector <= AIStationList_Cargo.CS_FROM_BY_VIA; ++selector) {
print(" " + selector);
local list = AIStationList_CargoPlanned(selector, 6, 0, 7);
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
}
};
function Regression::StationList_CargoPlannedByFrom()
{
print("");
print("--StationList_CargoPlannedByFrom--");
local list = AIStationList_CargoPlannedByFrom(2, 0);
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
};
function Regression::StationList_CargoPlannedByVia()
{
print("");
print("--StationList_CargoPlannedByVia--");
local list = AIStationList_CargoPlannedByVia(2, 0);
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
};
function Regression::StationList_CargoPlannedViaByFrom()
{
print("");
print("--StationList_CargoPlannedViaByFrom--");
local list = AIStationList_CargoPlannedViaByFrom(6, 0, 7);
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
};
function Regression::StationList_CargoPlannedFromByVia()
{
print("");
print("--StationList_CargoPlannedFromByVia--");
local list = AIStationList_CargoPlannedFromByVia(6, 0, 7);
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
};
function Regression::StationList_CargoWaiting()
{
print("");
print("--StationList_CargoWaiting--");
for (local selector = AIStationList_Cargo.CS_BY_FROM; selector <= AIStationList_Cargo.CS_FROM_BY_VIA; ++selector) {
print(" " + selector);
local list = AIStationList_CargoWaiting(selector, 6, 0, 7);
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
}
};
function Regression::StationList_CargoWaitingByFrom()
{
print("");
print("--StationList_CargoWaitingByFrom--");
local list = AIStationList_CargoWaitingByFrom(2, 0);
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
};
function Regression::StationList_CargoWaitingByVia()
{
print("");
print("--StationList_CargoWaitingByVia--");
local list = AIStationList_CargoWaitingByVia(2, 0);
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
};
function Regression::StationList_CargoWaitingViaByFrom()
{
print("");
print("--StationList_CargoWaitingViaByFrom--");
local list = AIStationList_CargoWaitingViaByFrom(6, 0, 7);
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
};
function Regression::StationList_CargoWaitingFromByVia()
{
print("");
print("--StationList_CargoWaitingFromByVia--");
local list = AIStationList_CargoWaitingFromByVia(2, 0, 2);
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
};
function Regression::StationList_Vehicle()
{
local list = AIStationList_Vehicle(12);
print("");
print("--StationList_Vehicle--");
print(" Count(): " + list.Count());
list.Valuate(AIStation.GetLocation);
print(" Location ListDump:");
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.Valuate(AIStation.GetCargoWaiting, 0);
print(" CargoWaiting(0) ListDump:");
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.Valuate(AIStation.GetCargoWaiting, 1);
print(" CargoWaiting(1) ListDump:");
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.Valuate(AIStation.GetCargoRating, 1);
print(" CargoRating(1) ListDump:");
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.Valuate(AIStation.GetDistanceManhattanToTile, 30000);
print(" DistanceManhattanToTile(30000) ListDump:");
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.Valuate(AIStation.GetDistanceSquareToTile, 30000);
print(" DistanceSquareToTile(30000) ListDump:");
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.Valuate(AIStation.IsWithinTownInfluence, 0);
print(" IsWithinTownInfluence(0) ListDump:");
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
}
function Regression::Start()
{
StationList();
StationList_Cargo();
StationList_CargoPlanned();
StationList_CargoPlannedByFrom();
StationList_CargoPlannedByVia();
StationList_CargoPlannedViaByFrom();
StationList_CargoPlannedFromByVia();
StationList_CargoWaiting();
StationList_CargoWaitingByFrom();
StationList_CargoWaitingByVia();
StationList_CargoWaitingViaByFrom();
StationList_CargoWaitingFromByVia();
StationList_Vehicle();
}

@ -0,0 +1,127 @@
--StationList--
Count(): 5
Location ListDump:
6 => 42341
2 => 41831
7 => 41825
5 => 33421
4 => 33411
CargoWaiting(0) ListDump:
7 => 6
6 => 6
2 => 3
5 => 0
4 => 0
CargoWaiting(1) ListDump:
7 => 0
6 => 0
5 => 0
4 => 0
2 => 0
--StationList_Cargo--
0
0
6 => 6
1
6 => 2
2
2 => 4
7 => 2
3
1
0
7 => 18
6 => 16
2 => 7
1
6 => 8
2 => 3
2
2 => 16
6 => 14
7 => 11
3
6 => 10
2 => 8
--StationList_CargoPlanned--
0
7 => 18
6 => 16
2 => 7
1
6 => 8
2 => 3
2
2 => 16
6 => 14
7 => 11
3
6 => 10
2 => 8
--StationList_CargoPlannedByFrom--
7 => 8
6 => 8
2 => 7
--StationList_CargoPlannedByVia--
2 => 16
6 => 7
--StationList_CargoPlannedViaByFrom--
6 => 8
2 => 3
--StationList_CargoPlannedFromByVia--
6 => 10
2 => 8
--StationList_CargoWaiting--
0
6 => 6
1
6 => 2
2
2 => 4
7 => 2
3
--StationList_CargoWaitingByFrom--
2 => 3
--StationList_CargoWaitingByVia--
6 => 3
--StationList_CargoWaitingViaByFrom--
6 => 2
--StationList_CargoWaitingFromByVia--
6 => 3
--StationList_Vehicle--
Count(): 2
Location ListDump:
5 => 33421
4 => 33411
CargoWaiting(0) ListDump:
5 => 0
4 => 0
CargoWaiting(1) ListDump:
5 => 0
4 => 0
CargoRating(1) ListDump:
5 => -1
4 => -1
DistanceManhattanToTile(30000) ListDump:
5 => 106
4 => 96
DistanceSquareToTile(30000) ListDump:
5 => 8818
4 => 7058
IsWithinTownInfluence(0) ListDump:
5 => 0
4 => 0
ERROR: The script died unexpectedly.

@ -10,7 +10,7 @@ fallback = true
description = A music pack without actual music. description = A music pack without actual music.
description.af_ZA = 'n Musiek stel sonder enige musiek. description.af_ZA = 'n Musiek stel sonder enige musiek.
description.ar_EG = مجموعة موسيقى بدون موسيقى description.ar_EG = مجموعة موسيقى بدون موسيقى
description.be_BY = "Пусты" набор музычнага афармлення, не змяшчаючы ніякай музыкі. description.be_BY = "Пусты" набор музычнага афармлення, які не зьмяшчае ніякай музыкі.
description.bg_BG = Празен музикален пакет. description.bg_BG = Празен музикален пакет.
description.ca_ES = Un joc de música sense cap música. description.ca_ES = Un joc de música sense cap música.
description.cs_CZ = Prázná hudební sada. description.cs_CZ = Prázná hudební sada.
@ -21,9 +21,10 @@ description.el_GR = Ένα πάκετο μουσικής χωρίς πραγμα
description.en_AU = A music pack without actual music. description.en_AU = A music pack without actual music.
description.en_US = A music pack without actual music. description.en_US = A music pack without actual music.
description.es_ES = Un conjunto de música vacío. description.es_ES = Un conjunto de música vacío.
description.et_EE = Muusikakomplekt ilma igasuguse muusikata. description.et_EE = Muusikakogu ilma muusikata.
description.fi_FI = Musiikkipaketti, jossa ei ole musiikkia. description.fi_FI = Musiikkipaketti, jossa ei ole musiikkia.
description.fr_FR = Un pack de musiques sans musiques. description.fr_FR = Un pack de musiques sans musiques.
description.ga_IE = Pacáiste ceoil gan aon cheol iarbhír ann.
description.gd_GB = Pacaid ciùil anns nach eil fonn sam bith. description.gd_GB = Pacaid ciùil anns nach eil fonn sam bith.
description.gl_ES = Un conxunto de músicas sen ningunha música. description.gl_ES = Un conxunto de músicas sen ningunha música.
description.hr_HR = Muzički paket bez ikakve muzike. description.hr_HR = Muzički paket bez ikakve muzike.
@ -33,11 +34,15 @@ description.is_IS = Tónlistarpakki sem er í raun án tónlistar.
description.it_IT = Un pacchetto musicale non contenente alcuna musica. description.it_IT = Un pacchetto musicale non contenente alcuna musica.
description.ja_JP = 空の音楽パック description.ja_JP = 空の音楽パック
description.ko_KR = 실제 음악이 없는 음악 목록입니다. description.ko_KR = 실제 음악이 없는 음악 목록입니다.
description.la_VA = Sarcina musicae sine ulla musica.
description.lb_LU = E Musikpack ouni aktuell Musik.
description.lt_LT = Muzikos pakas be muzikos. description.lt_LT = Muzikos pakas be muzikos.
description.lv_LV = Mūzikas kopa bez mūzikas
description.nb_NO = En musikkpakke uten noe musikk. description.nb_NO = En musikkpakke uten noe musikk.
description.nl_NL = Een muziekset zonder muziek. description.nl_NL = Een muziekset zonder muziek.
description.nn_NO = Ei musikkpakke utan noko musikk. description.nn_NO = Ei musikkpakke utan noko musikk.
description.pl_PL = Zestaw utworów muzycznych nie zawierający żadnej muzyki. description.pl_PL = Zestaw utworów muzycznych nie zawierający żadnej muzyki.
description.pt_BR = Um pacote de músicas sem músicas.
description.pt_PT = Um conjunto de música vazio. description.pt_PT = Um conjunto de música vazio.
description.ro_RO = Un set de muzică fără muzică inclusă. description.ro_RO = Un set de muzică fără muzică inclusă.
description.ru_RU = "Пустой" набор музыкального оформления, не содержащий никакой музыки. description.ru_RU = "Пустой" набор музыкального оформления, не содержащий никакой музыки.
@ -46,8 +51,9 @@ description.sl_SI = Glasbeni paket z vključeno glasbo.
description.sr_RS = Prazan skup muzičkih numera. description.sr_RS = Prazan skup muzičkih numera.
description.sv_SE = Ett musikpaket utan någon musik. description.sv_SE = Ett musikpaket utan någon musik.
description.ta_IN = இசை இல்லாத இசைத்தொகுப்பு. description.ta_IN = இசை இல்லாத இசைத்தொகுப்பு.
description.th_TH = A music pack without actual music. description.th_TH = ชุดเพลงประกอบแบบไม่มีเสียงเพลง
description.tr_TR = Müzik içermeyen boş bir müzik paketi. description.tr_TR = Müzik içermeyen boş bir müzik paketi.
description.uk_UA = Порожній набір музики.
description.vi_VN = Gói âm nhạc này không có nhạc nào. description.vi_VN = Gói âm nhạc này không có nhạc nào.
description.zh_CN = 一个没有实际内容的音乐包. description.zh_CN = 一个没有实际内容的音乐包.
description.zh_TW = 不含任何音樂的音樂集。 description.zh_TW = 不含任何音樂的音樂集。

@ -10,7 +10,7 @@ fallback = true
description = A sound pack without any sounds. description = A sound pack without any sounds.
description.af_ZA = 'n Klank stel sonder enige klanke. description.af_ZA = 'n Klank stel sonder enige klanke.
description.ar_EG = مجموعة صوت بدوت اصوات مضافة description.ar_EG = مجموعة صوت بدوت اصوات مضافة
description.be_BY = "Пусты" набор гукавога афармленьня, не змяшчаючы ніякіх гукаў. description.be_BY = "Пусты" набор гукавога афармленьня, які не зьмяшчае ніякіх гукаў.
description.bg_BG = Празен звуков пакет. description.bg_BG = Празен звуков пакет.
description.ca_ES = Un joc de sons sense cap so. description.ca_ES = Un joc de sons sense cap so.
description.cs_CZ = Prázdná sada zvuků. description.cs_CZ = Prázdná sada zvuků.
@ -21,9 +21,11 @@ description.el_GR = Ένα πάκετο ήχων χώρις ήχους.
description.en_AU = A sound pack without any sounds. description.en_AU = A sound pack without any sounds.
description.en_US = A sound pack without any sounds. description.en_US = A sound pack without any sounds.
description.es_ES = Un conjunto de sonidos vacío. description.es_ES = Un conjunto de sonidos vacío.
description.et_EE = Ilma häälteta helipakk. description.et_EE = Helikogu ilma helideta.
description.eu_ES = Soinurik gabeko soinu pakete bat
description.fi_FI = Äänipaketti, jossa ei ole ääniä. description.fi_FI = Äänipaketti, jossa ei ole ääniä.
description.fr_FR = Un pack de sons sans sons. description.fr_FR = Un pack de sons sans sons.
description.ga_IE = Pacáiste fuaimeanna gan aon fhuaimeanna ann.
description.gd_GB = Pacaid fhuaimean anns nach eil fuaim sam bith. description.gd_GB = Pacaid fhuaimean anns nach eil fuaim sam bith.
description.gl_ES = Un conxunto de sons sen ningún son description.gl_ES = Un conxunto de sons sen ningún son
description.hr_HR = Zvučni paket bez ikakvih zvukova. description.hr_HR = Zvučni paket bez ikakvih zvukova.
@ -33,11 +35,14 @@ description.is_IS = Hljóðpakki án hljóðs.
description.it_IT = Un pacchetto sonoro non contenente alcun suono. description.it_IT = Un pacchetto sonoro non contenente alcun suono.
description.ja_JP = 空の効果音パック description.ja_JP = 空の効果音パック
description.ko_KR = 아무런 효과음도 없는 효과음 팩입니다. description.ko_KR = 아무런 효과음도 없는 효과음 팩입니다.
description.la_VA = Sarcina sonorum sine ullis sonis.
description.lb_LU = E Soundpack ouni iergendee Sound.
description.lt_LT = Garsų pakas be jokių garsų. description.lt_LT = Garsų pakas be jokių garsų.
description.nb_NO = En lydpakke uten noen lyder. description.nb_NO = En lydpakke uten noen lyder.
description.nl_NL = Een geluidset zonder geluid. description.nl_NL = Een geluidset zonder geluid.
description.nn_NO = Ei lydpakke utan nokon lydar. description.nn_NO = Ei lydpakke utan nokon lydar.
description.pl_PL = Zestaw dźwięków nie zawierający żadnych dźwięków. description.pl_PL = Zestaw dźwięków nie zawierający żadnych dźwięków.
description.pt_BR = Um pacote de sons sem sons.
description.pt_PT = Um conjunto de sons vazio. description.pt_PT = Um conjunto de sons vazio.
description.ro_RO = Un set de sunete fără nici un sunet inclus. description.ro_RO = Un set de sunete fără nici un sunet inclus.
description.ru_RU = "Пустой" набор звукового оформления, не содержащий никаких звуков. description.ru_RU = "Пустой" набор звукового оформления, не содержащий никаких звуков.
@ -46,8 +51,9 @@ description.sl_SI = Zvočni paket brez zvoka.
description.sr_RS = Prazan skup zvukova. description.sr_RS = Prazan skup zvukova.
description.sv_SE = Ett ljudpaket utan några ljud. description.sv_SE = Ett ljudpaket utan några ljud.
description.ta_IN = ஒலிகள் இல்லாத ஒலி தொகுப்பு. description.ta_IN = ஒலிகள் இல்லாத ஒலி தொகுப்பு.
description.th_TH = A sound pack without any sounds. description.th_TH = ชุดเสียงแบบไร้เสียง
description.tr_TR = Ses içermeyen boş bir ses kümesi. description.tr_TR = Ses içermeyen boş bir ses kümesi.
description.uk_UA = Порожній набір звуків.
description.vi_VN = Gói âm thanh này không có âm thanh nào. description.vi_VN = Gói âm thanh này không có âm thanh nào.
description.zh_CN = 一个空的音效包. description.zh_CN = 一个空的音效包.
description.zh_TW = 不含任何音效的音效集。 description.zh_TW = 不含任何音效的音效集。

Binary file not shown.

@ -11,7 +11,7 @@ palette = DOS
description = Original Transport Tycoon Deluxe DOS edition graphics. description = Original Transport Tycoon Deluxe DOS edition graphics.
description.af_ZA = Oorspronklike Transport Tycoon Deluxe DOS uitgawe grafieke. description.af_ZA = Oorspronklike Transport Tycoon Deluxe DOS uitgawe grafieke.
description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الرسومية نسخة الدوس description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الرسومية نسخة الدوس
description.be_BY = Арыгінальная графіка з Transport Tycoon Deluxe для DOS. description.be_BY = Арыґінальная ґрафіка з Transport Tycoon Deluxe для DOS.
description.bg_BG = Оригинални графики на Transport Tycoon Deluxe за DOS. description.bg_BG = Оригинални графики на Transport Tycoon Deluxe за DOS.
description.ca_ES = Gràfics originals de Transport Tycoon Deluxe per a DOS. description.ca_ES = Gràfics originals de Transport Tycoon Deluxe per a DOS.
description.cs_CZ = Původní sada grafik Transport Tycoon Deluxe (verze pro DOS). description.cs_CZ = Původní sada grafik Transport Tycoon Deluxe (verze pro DOS).
@ -25,6 +25,7 @@ description.es_ES = Gráficos originales de Transport Tycoon Deluxe versión DOS
description.et_EE = Algse Transport Tycoon Deluxe DOSi versiooni graafika. description.et_EE = Algse Transport Tycoon Deluxe DOSi versiooni graafika.
description.fi_FI = Alkuperäiset Transport Tycoon Deluxen DOS-version grafiikat. description.fi_FI = Alkuperäiset Transport Tycoon Deluxen DOS-version grafiikat.
description.fr_FR = Graphiques originaux de Transport Tycoon Deluxe (version DOS). description.fr_FR = Graphiques originaux de Transport Tycoon Deluxe (version DOS).
description.ga_IE = Grafaicí bunaidhTransport Tycoon Deluxe, eagrán DOS.
description.gd_GB = Grafaigeachd aig an deasachadh DOS tùsail aig Transport Tycoon Deluxe. description.gd_GB = Grafaigeachd aig an deasachadh DOS tùsail aig Transport Tycoon Deluxe.
description.gl_ES = Graficos da edición orixinal de Transport Tycoon Deluxe para DOS. description.gl_ES = Graficos da edición orixinal de Transport Tycoon Deluxe para DOS.
description.hr_HR = Originalna grafika za Transport Tycoon Deluxe DOS izdanje. description.hr_HR = Originalna grafika za Transport Tycoon Deluxe DOS izdanje.
@ -34,11 +35,14 @@ description.is_IS = Upprunalega grafíkin úr Transport Tycoon Deluxe DOS útgá
description.it_IT = Grafica originale di Transport Tycoon Deluxe, edizione DOS. description.it_IT = Grafica originale di Transport Tycoon Deluxe, edizione DOS.
description.ja_JP = Transport Tycoon Deluxe オリジナル版 グラフィック (DOS) description.ja_JP = Transport Tycoon Deluxe オリジナル版 グラフィック (DOS)
description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 도스 에디션의 그래픽입니다. description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 도스 에디션의 그래픽입니다.
description.la_VA = Graphica ex editione originale Transport Tycoon Deluxe DOS.
description.lb_LU = Original Transport Tycoon Deluxe DOS Editioun Grafik.
description.lt_LT = Originali Transport Tycoon Deluxe DOS leidimo grafika. description.lt_LT = Originali Transport Tycoon Deluxe DOS leidimo grafika.
description.nb_NO = Original grafikk fra Transport Tycoon Deluxe for DOS. description.nb_NO = Original grafikk fra Transport Tycoon Deluxe for DOS.
description.nl_NL = Originele graphics van de Transport Tycoon Deluxe DOS-versie. description.nl_NL = Originele graphics van de Transport Tycoon Deluxe DOS-versie.
description.nn_NO = Original grafikk frå Transport Tycoon Deluxe for DOS. description.nn_NO = Original grafikk frå Transport Tycoon Deluxe for DOS.
description.pl_PL = Oryginalna edycja grafik dla Transport Tycoon Deluxe DOS. description.pl_PL = Oryginalna edycja grafik dla Transport Tycoon Deluxe DOS.
description.pt_BR = Gráficos Originais do Transport Tycoon Deluxe, Edição DOS.
description.pt_PT = Gráficos originais da edição DOS de Transport Tycoon Deluxe. description.pt_PT = Gráficos originais da edição DOS de Transport Tycoon Deluxe.
description.ro_RO = Setul grafic original al Transport Tycoon Deluxe pentru DOS. description.ro_RO = Setul grafic original al Transport Tycoon Deluxe pentru DOS.
description.ru_RU = Оригинальная графика из Transport Tycoon Deluxe для DOS. description.ru_RU = Оригинальная графика из Transport Tycoon Deluxe для DOS.
@ -48,7 +52,8 @@ description.sr_RS = Originalni skup grafika Transport Tycoon Deluxe DOS izdanja.
description.sv_SE = Originalgrafiken från Transport Tycoon Deluxe, DOS-utgåvan. description.sv_SE = Originalgrafiken från Transport Tycoon Deluxe, DOS-utgåvan.
description.ta_IN = அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் DOS பதிப்பு அசைவூட்டங்கள். description.ta_IN = அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் DOS பதிப்பு அசைவூட்டங்கள்.
description.th_TH = กราฟฟิกต้นตำหรับของ Transport Tycoon Deluxe DOS edition description.th_TH = กราฟฟิกต้นตำหรับของ Transport Tycoon Deluxe DOS edition
description.tr_TR = Orijinal Transport Tycoon Deluxe DOS sürümü grafikleri. description.tr_TR = Özgün Transport Tycoon Deluxe DOS sürümü grafikleri.
description.uk_UA = Оригінальна графіка з Transport Tycoon Deluxe DOS edition.
description.vi_VN = Đồ họa gốc từ phiên bản Transport Tycoon Deluxe trên DOS description.vi_VN = Đồ họa gốc từ phiên bản Transport Tycoon Deluxe trên DOS
description.zh_CN = 运输大亨DOS豪华版原版图形包. description.zh_CN = 运输大亨DOS豪华版原版图形包.
description.zh_TW = 原版 Transport Tycoon Deluxe DOS 版的圖形。 description.zh_TW = 原版 Transport Tycoon Deluxe DOS 版的圖形。
@ -67,7 +72,7 @@ TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8
TRGC.GRF = ed446637e034104c5559b32c18afe78d TRGC.GRF = ed446637e034104c5559b32c18afe78d
TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9 TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9
TRGT.GRF = e30e8a398ae86c03dc534a8ac7dfb3b6 TRGT.GRF = e30e8a398ae86c03dc534a8ac7dfb3b6
OPENTTD.GRF = 63d40d4bc6cfb3546cab72d94614e6cd OPENTTD.GRF = 505d96061556d3bb5cec6234096ec5bc
[origin] [origin]
default = You can find it on your Transport Tycoon Deluxe CD-ROM. default = You can find it on your Transport Tycoon Deluxe CD-ROM.

@ -10,7 +10,7 @@ version = 0
description = Original Transport Tycoon Deluxe DOS edition sounds. description = Original Transport Tycoon Deluxe DOS edition sounds.
description.af_ZA = Oorspronklike Transport Tycoon Deluxe DOS uitgawe klanke. description.af_ZA = Oorspronklike Transport Tycoon Deluxe DOS uitgawe klanke.
description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الصوتية نسخة الدوس description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الصوتية نسخة الدوس
description.be_BY = Арыгінальны набор гукавога афармленьня з гульні Transport Tycoon Deluxe для DOS. description.be_BY = Арыґінальны набор гукавога афармленьня з гульні Transport Tycoon Deluxe для DOS.
description.bg_BG = Оригинални звуци на Transport Tycoon Deluxe за DOS. description.bg_BG = Оригинални звуци на Transport Tycoon Deluxe за DOS.
description.ca_ES = Sons originals de Transport Tycoon Deluxe per a DOS. description.ca_ES = Sons originals de Transport Tycoon Deluxe per a DOS.
description.cs_CZ = Původní sada zvuků Transport Tycoon Deluxe (verze pro DOS). description.cs_CZ = Původní sada zvuků Transport Tycoon Deluxe (verze pro DOS).
@ -24,6 +24,7 @@ description.es_ES = Sonidos originales de Transport Tycoon Deluxe versión DOS.
description.et_EE = Algse Transport Tycoon Deluxe DOSi versiooni helid. description.et_EE = Algse Transport Tycoon Deluxe DOSi versiooni helid.
description.fi_FI = Alkuperäiset Transport Tycoon Deluxen DOS-version äänet. description.fi_FI = Alkuperäiset Transport Tycoon Deluxen DOS-version äänet.
description.fr_FR = Sons originaux de Transport Tycoon Deluxe (version DOS). description.fr_FR = Sons originaux de Transport Tycoon Deluxe (version DOS).
description.ga_IE = Fuaimeanna bunaidh Transport Tycoon Deluxe, eagrán DOS.
description.gd_GB = Fuaimean aig an deasachadh DOS tùsail aig Transport Tycoon Deluxe. description.gd_GB = Fuaimean aig an deasachadh DOS tùsail aig Transport Tycoon Deluxe.
description.gl_ES = Sons da edición orixinal de Transport Tycoon Deluxe para DOS. description.gl_ES = Sons da edición orixinal de Transport Tycoon Deluxe para DOS.
description.hr_HR = Originalni zvukovi za Transport Tycoon Deluxe DOS izdanje. description.hr_HR = Originalni zvukovi za Transport Tycoon Deluxe DOS izdanje.
@ -33,11 +34,14 @@ description.is_IS = Upprunalega hljóðið úr Transport Tycoon Deluxe DOS útg
description.it_IT = Suoni originali di Transport Tycoon Deluxe, edizione DOS. description.it_IT = Suoni originali di Transport Tycoon Deluxe, edizione DOS.
description.ja_JP = Transport Tycoon Deluxe オリジナル版 効果音 (DOS) description.ja_JP = Transport Tycoon Deluxe オリジナル版 効果音 (DOS)
description.ko_KR = 오리지널 트랜스포트 타이쿤 도스 에디션의 효과음입니다. description.ko_KR = 오리지널 트랜스포트 타이쿤 도스 에디션의 효과음입니다.
description.la_VA = Soni ex editione originale Transport Tycoon Deluxe DOS.
description.lb_LU = Original Transport Tycoon Deluxe DOS Editioun Sound.
description.lt_LT = Originalūs Transport Tycoon Deluxe DOS leidimo garsai. description.lt_LT = Originalūs Transport Tycoon Deluxe DOS leidimo garsai.
description.nb_NO = Originale lyder fra Transport Tycoon Deluxe for DOS. description.nb_NO = Originale lyder fra Transport Tycoon Deluxe for DOS.
description.nl_NL = Originele geluiden van de Transport Tycoon Deluxe DOS-versie. description.nl_NL = Originele geluiden van de Transport Tycoon Deluxe DOS-versie.
description.nn_NO = Originale lydar frå Transport Tycoon Deluxe for DOS. description.nn_NO = Originale lydar frå Transport Tycoon Deluxe for DOS.
description.pl_PL = Oryginalna edycja dźwięków dla Transport Tycoon Deluxe DOS. description.pl_PL = Oryginalna edycja dźwięków dla Transport Tycoon Deluxe DOS.
description.pt_BR = Sons Originais do Transport Tycoon Deluxe, Edição DOS.
description.pt_PT = Sons originais da edição DOS de Transport Tycoon Deluxe. description.pt_PT = Sons originais da edição DOS de Transport Tycoon Deluxe.
description.ro_RO = Setul de sunete original al Transport Tycoon Deluxe pentru DOS. description.ro_RO = Setul de sunete original al Transport Tycoon Deluxe pentru DOS.
description.ru_RU = Оригинальный набор звукового оформления из игры Transport Tycoon Deluxe для DOS. description.ru_RU = Оригинальный набор звукового оформления из игры Transport Tycoon Deluxe для DOS.
@ -47,7 +51,8 @@ description.sr_RS = Originalni skup zvukova Transport Tycoon Deluxe DOS izdanja.
description.sv_SE = Originalljuden från Transport Tycoon Deluxe, DOS-utgåvan. description.sv_SE = Originalljuden från Transport Tycoon Deluxe, DOS-utgåvan.
description.ta_IN = அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் DOS பதிப்பு ஒலிகள். description.ta_IN = அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் DOS பதிப்பு ஒலிகள்.
description.th_TH = เสียงต้นตำหรับของ Transport Tycoon Deluxe DOS edition description.th_TH = เสียงต้นตำหรับของ Transport Tycoon Deluxe DOS edition
description.tr_TR = Orijinal Transport Tycoon Deluxe DOS sürümü sesleri. description.tr_TR = Özgün Transport Tycoon Deluxe DOS sürümü sesleri.
description.uk_UA = Оригінальний набір звуків з Transport Tycoon Deluxe DOS edition.
description.vi_VN = Âm thanh gốc từ phiên bản Transport Tycoon Deluxe trên DOS description.vi_VN = Âm thanh gốc từ phiên bản Transport Tycoon Deluxe trên DOS
description.zh_CN = 运输大亨DOS豪华版原版音效包. description.zh_CN = 运输大亨DOS豪华版原版音效包.
description.zh_TW = 原版 Transport Tycoon Deluxe DOS 版的音效。 description.zh_TW = 原版 Transport Tycoon Deluxe DOS 版的音效。

@ -11,7 +11,7 @@ palette = DOS
description = Original Transport Tycoon Deluxe DOS (German) edition graphics. description = Original Transport Tycoon Deluxe DOS (German) edition graphics.
description.af_ZA = Oorspronklike Transport Tycoon Deluxe DOS (German) uitgawe grafieke. description.af_ZA = Oorspronklike Transport Tycoon Deluxe DOS (German) uitgawe grafieke.
description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الالمانية نسخة الدوس description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الالمانية نسخة الدوس
description.be_BY = Арыгінальная графіка з нямецкай версіі Transport Tycoon Deluxe для DOS. description.be_BY = Арыґінальная ґрафіка зь нямецкай версіі Transport Tycoon Deluxe для DOS.
description.bg_BG = Оригинални графики на Transport Tycoon Deluxe за DOS (немски) . description.bg_BG = Оригинални графики на Transport Tycoon Deluxe за DOS (немски) .
description.ca_ES = Gràfics originals de Transport Tycoon Deluxe per a DOS (Alemany). description.ca_ES = Gràfics originals de Transport Tycoon Deluxe per a DOS (Alemany).
description.cs_CZ = Původní sada grafik Transport Tycoon Deluxe (německá verze pro DOS). description.cs_CZ = Původní sada grafik Transport Tycoon Deluxe (německá verze pro DOS).
@ -25,6 +25,7 @@ description.es_ES = Gráficos originales de Transport Tycoon Deluxe versión DOS
description.et_EE = Algse Transport Tycoon Deluxe DOSi (Saksa) versiooni graafika. description.et_EE = Algse Transport Tycoon Deluxe DOSi (Saksa) versiooni graafika.
description.fi_FI = Alkuperäiset Saksassa julkaistun Transport Tycoon Deluxen DOS-version grafiikat. description.fi_FI = Alkuperäiset Saksassa julkaistun Transport Tycoon Deluxen DOS-version grafiikat.
description.fr_FR = Graphiques originaux de Transport Tycoon Deluxe (version DOS allemande). description.fr_FR = Graphiques originaux de Transport Tycoon Deluxe (version DOS allemande).
description.ga_IE = Grafaicí bunaidhTransport Tycoon Deluxe, eagrán DOS (Gearmánach).
description.gd_GB = Grafaigeachd aig an deasachadh DOS (Gearmailteach) tùsail aig Transport Tycoon Deluxe. description.gd_GB = Grafaigeachd aig an deasachadh DOS (Gearmailteach) tùsail aig Transport Tycoon Deluxe.
description.gl_ES = Graficos da edición orixinal (alemá) de Transport Tycoon Deluxe para DOS. description.gl_ES = Graficos da edición orixinal (alemá) de Transport Tycoon Deluxe para DOS.
description.hr_HR = Originalna grafika za Transport Tycoon Deluxe DOS (Njemački) izdanje. description.hr_HR = Originalna grafika za Transport Tycoon Deluxe DOS (Njemački) izdanje.
@ -34,11 +35,14 @@ description.is_IS = Upprunalega grafíkin úr Transport Tycoon Deluxe DOS (þýs
description.it_IT = Grafica originale di Transport Tycoon Deluxe (tedesco), edizione DOS. description.it_IT = Grafica originale di Transport Tycoon Deluxe (tedesco), edizione DOS.
description.ja_JP = Transport Tycoon Deluxe オリジナル版 グラフィック (DOS・ドイツ版) description.ja_JP = Transport Tycoon Deluxe オリジナル版 グラフィック (DOS・ドイツ版)
description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 도스 에디션(독일)의 그래픽입니다. description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 도스 에디션(독일)의 그래픽입니다.
description.la_VA = Graphica ex editione originale Transport Tycoon Deluxe DOS (Germanica).
description.lb_LU = Original Transport Tycoon Deluxe DOS (Däitsch) Editioun Grafik.
description.lt_LT = Originali Transport Tycoon Deluxe DOS (Vokiečių) leidimo grafika. description.lt_LT = Originali Transport Tycoon Deluxe DOS (Vokiečių) leidimo grafika.
description.nb_NO = Original grafikk fra Transport Tycoon Deluxe for DOS (tysk). description.nb_NO = Original grafikk fra Transport Tycoon Deluxe for DOS (tysk).
description.nl_NL = Originele graphics van de Duitse Transport Tycoon Deluxe DOS-versie. description.nl_NL = Originele graphics van de Duitse Transport Tycoon Deluxe DOS-versie.
description.nn_NO = Original grafikk frå Transport Tycoon Deluxe for DOS (tysk). description.nn_NO = Original grafikk frå Transport Tycoon Deluxe for DOS (tysk).
description.pl_PL = Oryginalna edycja grafik dla Transport Tycoon Deluxe DOS (German). description.pl_PL = Oryginalna edycja grafik dla Transport Tycoon Deluxe DOS (German).
description.pt_BR = Gráficos Originais do Transport Tycoon Deluxe, Edição DOS alemã.
description.pt_PT = Gráficos originais da edição DOS (Alemã) de Transport Tycoon Deluxe. description.pt_PT = Gráficos originais da edição DOS (Alemã) de Transport Tycoon Deluxe.
description.ro_RO = Setul grafic original al Transport Tycoon Deluxe pentru DOS (ediţia germană). description.ro_RO = Setul grafic original al Transport Tycoon Deluxe pentru DOS (ediţia germană).
description.ru_RU = Оригинальная графика из немецкой версии Transport Tycoon Deluxe для DOS. description.ru_RU = Оригинальная графика из немецкой версии Transport Tycoon Deluxe для DOS.
@ -48,7 +52,8 @@ description.sr_RS = Originalni skup grafika nemačkog Transport Tycoon Deluxe DO
description.sv_SE = Originalgrafiken från Transport Tycoon Deluxe, DOS-utgåvan (tyska). description.sv_SE = Originalgrafiken från Transport Tycoon Deluxe, DOS-utgåvan (tyska).
description.ta_IN = அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் DOS (செருமன்) பதிப்பு அசைவூட்டங்கள். description.ta_IN = அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் DOS (செருமன்) பதிப்பு அசைவூட்டங்கள்.
description.th_TH = กราฟฟิกต้นตำหรับของ Transport Tycoon Deluxe DOS (German) edition description.th_TH = กราฟฟิกต้นตำหรับของ Transport Tycoon Deluxe DOS (German) edition
description.tr_TR = Orijinal Transport Tycoon Deluxe DOS (Almanca) sürümü grafikleri. description.tr_TR = Özgün Transport Tycoon Deluxe DOS (Almanca) sürümü grafikleri.
description.uk_UA = Оригінальна графіка з Transport Tycoon Deluxe DOS edition (німецького).
description.vi_VN = Đồ họa gốc từ phiên bản Transport Tycoon Deluxe trên DOS (tiếng Đức) description.vi_VN = Đồ họa gốc từ phiên bản Transport Tycoon Deluxe trên DOS (tiếng Đức)
description.zh_CN = 运输大亨DOS豪华德语版原版图形包. description.zh_CN = 运输大亨DOS豪华德语版原版图形包.
description.zh_TW = 原版 Transport Tycoon Deluxe DOS 版 (德國版) 的圖形。 description.zh_TW = 原版 Transport Tycoon Deluxe DOS 版 (德國版) 的圖形。
@ -67,7 +72,7 @@ TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8
TRGC.GRF = ed446637e034104c5559b32c18afe78d TRGC.GRF = ed446637e034104c5559b32c18afe78d
TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9 TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9
TRGT.GRF = fcde1d7e8a74197d72a62695884b909e TRGT.GRF = fcde1d7e8a74197d72a62695884b909e
OPENTTD.GRF = 63d40d4bc6cfb3546cab72d94614e6cd OPENTTD.GRF = 505d96061556d3bb5cec6234096ec5bc
[origin] [origin]
default = You can find it on your Transport Tycoon Deluxe CD-ROM. default = You can find it on your Transport Tycoon Deluxe CD-ROM.

@ -11,7 +11,7 @@ palette = Windows
description = Original Transport Tycoon Deluxe Windows edition graphics. description = Original Transport Tycoon Deluxe Windows edition graphics.
description.af_ZA = Oorspronklike Transport Tycoon Deluxe Windows uitgawe grafieke. description.af_ZA = Oorspronklike Transport Tycoon Deluxe Windows uitgawe grafieke.
description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الرسومية نسخة وندوز description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الرسومية نسخة وندوز
description.be_BY = Арыгінальная графіка з Transport Tycoon Deluxe для Windows. description.be_BY = Арыґінальная ґрафіка з Transport Tycoon Deluxe для Windows.
description.bg_BG = Оригинални графики на Transport Tycoon Deluxe за Windows. description.bg_BG = Оригинални графики на Transport Tycoon Deluxe за Windows.
description.ca_ES = Gràfics originals de Transport Tycoon Deluxe per a Windows. description.ca_ES = Gràfics originals de Transport Tycoon Deluxe per a Windows.
description.cs_CZ = Původní sada grafik Transport Tycoon Deluxe (verze pro Windows). description.cs_CZ = Původní sada grafik Transport Tycoon Deluxe (verze pro Windows).
@ -25,6 +25,7 @@ description.es_ES = Gráficos originales de Transport Tycoon Deluxe versión Win
description.et_EE = Algse Transport Tycoon Deluxe Windowsi versiooni graafika. description.et_EE = Algse Transport Tycoon Deluxe Windowsi versiooni graafika.
description.fi_FI = Alkuperäiset Transport Tycoon Deluxen Windows-version grafiikat. description.fi_FI = Alkuperäiset Transport Tycoon Deluxen Windows-version grafiikat.
description.fr_FR = Graphiques originaux de Transport Tycoon Deluxe (version Windows). description.fr_FR = Graphiques originaux de Transport Tycoon Deluxe (version Windows).
description.ga_IE = Grafaicí bunaidhTransport Tycoon Deluxe, eagrán Windows.
description.gd_GB = Grafaigeachd aig an deasachadh Windows tùsail aig Transport Tycoon Deluxe. description.gd_GB = Grafaigeachd aig an deasachadh Windows tùsail aig Transport Tycoon Deluxe.
description.gl_ES = Graficos da edición orixinal de Transport Tycoon Deluxe para Windows. description.gl_ES = Graficos da edición orixinal de Transport Tycoon Deluxe para Windows.
description.hr_HR = Originalna grafika za Transport Tycoon Deluxe Windows izdanje. description.hr_HR = Originalna grafika za Transport Tycoon Deluxe Windows izdanje.
@ -33,12 +34,15 @@ description.id_ID = Grafik orisinil Transport Tycoon Deluxe versi Windows.
description.is_IS = Upprunalega grafíkin úr Transport Tycoon Deluxe Windows útgáfunni. description.is_IS = Upprunalega grafíkin úr Transport Tycoon Deluxe Windows útgáfunni.
description.it_IT = Grafica originale di Transport Tycoon Deluxe, edizione Windows. description.it_IT = Grafica originale di Transport Tycoon Deluxe, edizione Windows.
description.ja_JP = Transport Tycoon Deluxe オリジナル版 グラフィック (Windows) description.ja_JP = Transport Tycoon Deluxe オリジナル版 グラフィック (Windows)
description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 윈도우 에디션의 그래픽입니다. description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 윈도 에디션의 그래픽입니다.
description.la_VA = Graphica ex editione originale Transport Tycoon Deluxe Windows.
description.lb_LU = Original Transport Tycoon Deluxe Windows Editioun Grafik.
description.lt_LT = Originali Transport Tycoon Deluxe Windows leidimo grafika. description.lt_LT = Originali Transport Tycoon Deluxe Windows leidimo grafika.
description.nb_NO = Original grafikk fra Transport Tycoon Deluxe for Windows. description.nb_NO = Original grafikk fra Transport Tycoon Deluxe for Windows.
description.nl_NL = Originele graphics van de Transport Tycoon Deluxe Windows-versie. description.nl_NL = Originele graphics van de Transport Tycoon Deluxe Windows-versie.
description.nn_NO = Original grafikk frå Transport Tycoon Deluxe for Windows. description.nn_NO = Original grafikk frå Transport Tycoon Deluxe for Windows.
description.pl_PL = Oryginalna edycja grafik dla Transport Tycoon Deluxe Windows. description.pl_PL = Oryginalna edycja grafik dla Transport Tycoon Deluxe Windows.
description.pt_BR = Gráficos Originais do Transport Tycoon, Edição Windows.
description.pt_PT = Gráficos originais da edição Windows de Transport Tycoon Deluxe. description.pt_PT = Gráficos originais da edição Windows de Transport Tycoon Deluxe.
description.ro_RO = Setul grafic original al Transport Tycoon Deluxe pentru Windows. description.ro_RO = Setul grafic original al Transport Tycoon Deluxe pentru Windows.
description.ru_RU = Оригинальная графика из Transport Tycoon Deluxe для Windows. description.ru_RU = Оригинальная графика из Transport Tycoon Deluxe для Windows.
@ -48,7 +52,8 @@ description.sr_RS = Originalni skup grafika Transport Tycoon Deluxe Windows izda
description.sv_SE = Originalgrafiken från Transport Tycoon Deluxe, Windows-utgåvan. description.sv_SE = Originalgrafiken från Transport Tycoon Deluxe, Windows-utgåvan.
description.ta_IN = அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் விண்டோஸ் பதிப்பு அசைவூட்டங்கள். description.ta_IN = அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் விண்டோஸ் பதிப்பு அசைவூட்டங்கள்.
description.th_TH = กราฟฟิกต้ำตำหรับของ Transport Tycoon Deluxe Windows edition description.th_TH = กราฟฟิกต้ำตำหรับของ Transport Tycoon Deluxe Windows edition
description.tr_TR = Orijinal Transport Tycoon Deluxe Windows sürümü grafikleri. description.tr_TR = Özgün Transport Tycoon Deluxe Windows sürümü grafikleri.
description.uk_UA = Оригінальна графіка з Transport Tycoon Deluxe Windows edition.
description.vi_VN = Đồ họa gốc từ phiên bản Transport Tycoon Deluxe trên Windows description.vi_VN = Đồ họa gốc từ phiên bản Transport Tycoon Deluxe trên Windows
description.zh_CN = 运输大亨Windows豪华版原版图形包. description.zh_CN = 运输大亨Windows豪华版原版图形包.
description.zh_TW = 原版 Transport Tycoon Deluxe Windows 版的圖形。 description.zh_TW = 原版 Transport Tycoon Deluxe Windows 版的圖形。
@ -67,7 +72,7 @@ TRGIR.GRF = 0c2484ff6be49fc63a83be6ab5c38f32
TRGCR.GRF = 3668f410c761a050b5e7095a2b14879b TRGCR.GRF = 3668f410c761a050b5e7095a2b14879b
TRGHR.GRF = 06bf2b7a31766f048baac2ebe43457b1 TRGHR.GRF = 06bf2b7a31766f048baac2ebe43457b1
TRGTR.GRF = de53650517fe661ceaa3138c6edb0eb8 TRGTR.GRF = de53650517fe661ceaa3138c6edb0eb8
OPENTTD.GRF = 63d40d4bc6cfb3546cab72d94614e6cd OPENTTD.GRF = 505d96061556d3bb5cec6234096ec5bc
[origin] [origin]
default = You can find it on your Transport Tycoon Deluxe CD-ROM. default = You can find it on your Transport Tycoon Deluxe CD-ROM.

@ -10,7 +10,7 @@ version = 1
description = Original Transport Tycoon Deluxe Windows edition music. description = Original Transport Tycoon Deluxe Windows edition music.
description.af_ZA = Oorspronklike Transport Tycoon Deluxe Windows uitgawe musiek. description.af_ZA = Oorspronklike Transport Tycoon Deluxe Windows uitgawe musiek.
description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الموسيقية نسخة وندوز description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الموسيقية نسخة وندوز
description.be_BY = Арыгінальны набор музычнага афармленьня з гульні Transport Tycoon Deluxe для Windows. description.be_BY = Арыґінальны набор музычнага афармленьня з гульні Transport Tycoon Deluxe для Windows.
description.bg_BG = Оригинална музика на Transport Tycoon Deluxe за Windows. description.bg_BG = Оригинална музика на Transport Tycoon Deluxe за Windows.
description.ca_ES = Música Original de Transport Tycoon Deluxe per a Windows. description.ca_ES = Música Original de Transport Tycoon Deluxe per a Windows.
description.cs_CZ = Původní hudba Transport Tycoon Deluxe (verze pro Windows). description.cs_CZ = Původní hudba Transport Tycoon Deluxe (verze pro Windows).
@ -24,6 +24,7 @@ description.es_ES = Música original de Transport Tycoon Deluxe versión Windows
description.et_EE = Algse Transport Tycoon Deluxe Windowsi versiooni muusika. description.et_EE = Algse Transport Tycoon Deluxe Windowsi versiooni muusika.
description.fi_FI = Alkuperäinen Transport Tycoon Deluxen Windows-version musiikki. description.fi_FI = Alkuperäinen Transport Tycoon Deluxen Windows-version musiikki.
description.fr_FR = Musiques originales de Transport Tycoon Deluxe (version Windows). description.fr_FR = Musiques originales de Transport Tycoon Deluxe (version Windows).
description.ga_IE = Ceol bunaidh Transport Tycoon Deluxe, eagrán Windows.
description.gd_GB = Ceòl aig an deasachadh Windows tùsail aig Transport Tycoon Deluxe. description.gd_GB = Ceòl aig an deasachadh Windows tùsail aig Transport Tycoon Deluxe.
description.gl_ES = Música da edición orixinal de Transport Tycoon Deluxe para Windows. description.gl_ES = Música da edición orixinal de Transport Tycoon Deluxe para Windows.
description.hr_HR = Originalna muzika za Transport Tycoon Deluxe Windows izdanje. description.hr_HR = Originalna muzika za Transport Tycoon Deluxe Windows izdanje.
@ -32,12 +33,16 @@ description.id_ID = Musik pengiring orisinil Transport Tycoon Deluxe versi Windo
description.is_IS = Upprunalega tónlistin úr Transport Tycoon Deluxe Windows útgáfunni. description.is_IS = Upprunalega tónlistin úr Transport Tycoon Deluxe Windows útgáfunni.
description.it_IT = Musica originale di Transport Tycoon Deluxe, edizione Windows. description.it_IT = Musica originale di Transport Tycoon Deluxe, edizione Windows.
description.ja_JP = Transport Tycoon Deluxe オリジナル版 音楽 (Windows) description.ja_JP = Transport Tycoon Deluxe オリジナル版 音楽 (Windows)
description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 윈도우 에디션의 음악입니다. description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 윈도 에디션의 음악입니다.
description.la_VA = Musica ex editione originale Transport Tycoon Deluxe Windows.
description.lb_LU = Original Transport Tycoon Deluxe Windows Editioun Musik.
description.lt_LT = Originali Transport Tycoon Deluxe Windows leidimo muzika. description.lt_LT = Originali Transport Tycoon Deluxe Windows leidimo muzika.
description.lv_LV = Oriģinālā Transport Tycoon Deluxe Windows izdevuma mūzika.
description.nb_NO = Original musikk fra Transport Tycoon Deluxe for Windows. description.nb_NO = Original musikk fra Transport Tycoon Deluxe for Windows.
description.nl_NL = Originele muziek van de Transport Tycoon Deluxe Windows-versie. description.nl_NL = Originele muziek van de Transport Tycoon Deluxe Windows-versie.
description.nn_NO = Original musikk frå Transport Tycoon Deluxe for Windows. description.nn_NO = Original musikk frå Transport Tycoon Deluxe for Windows.
description.pl_PL = Oryginalna edycja utworów muzycznych w Transport Tycoon Deluxe Windows. description.pl_PL = Oryginalna edycja utworów muzycznych w Transport Tycoon Deluxe Windows.
description.pt_BR = Música Original do Transport Tycoon Deluxe, Edição Windows
description.pt_PT = Música original da edição Windows de Transport Tycoon Deluxe. description.pt_PT = Música original da edição Windows de Transport Tycoon Deluxe.
description.ro_RO = Setul de muzică original al Transport Tycoon Deluxe pentru Windows. description.ro_RO = Setul de muzică original al Transport Tycoon Deluxe pentru Windows.
description.ru_RU = Оригинальный набор музыкального оформления из игры Transport Tycoon Deluxe для Windows. description.ru_RU = Оригинальный набор музыкального оформления из игры Transport Tycoon Deluxe для Windows.
@ -47,7 +52,8 @@ description.sr_RS = Originalni skup muzičkih numera Transport Tycoon Deluxe Win
description.sv_SE = Originalmusiken från Transport Tycoon Deluxe, Windows-utgåvan. description.sv_SE = Originalmusiken från Transport Tycoon Deluxe, Windows-utgåvan.
description.ta_IN = அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் விண்டோஸ் பதிப்பு இசை. description.ta_IN = அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் விண்டோஸ் பதிப்பு இசை.
description.th_TH = เพลงต้นตำหรับชอง Transport Tycoon Deluxe Windows edition description.th_TH = เพลงต้นตำหรับชอง Transport Tycoon Deluxe Windows edition
description.tr_TR = Orijinal Transport Tycoon Deluxe Windows sürümü müzikleri. description.tr_TR = Özgün Transport Tycoon Deluxe Windows sürümü müzikleri.
description.uk_UA = Оригінальна музика з Transport Tycoon Deluxe Windows edition.
description.vi_VN = Nhạc gốc từ phiên bản Transport Tycoon Deluxe trên Windows description.vi_VN = Nhạc gốc từ phiên bản Transport Tycoon Deluxe trên Windows
description.zh_CN = Transport Tycoon Deluxe运输大亨Windows豪华版的原版音乐包 description.zh_CN = Transport Tycoon Deluxe运输大亨Windows豪华版的原版音乐包
description.zh_TW = 原版 Transport Tycoon Deluxe Windows 版的音樂。 description.zh_TW = 原版 Transport Tycoon Deluxe Windows 版的音樂。

@ -10,7 +10,7 @@ version = 0
description = Original Transport Tycoon Deluxe Windows edition sounds. description = Original Transport Tycoon Deluxe Windows edition sounds.
description.af_ZA = Oorspronklike Transport Tycoon Deluxe Windows uitgawe klanke. description.af_ZA = Oorspronklike Transport Tycoon Deluxe Windows uitgawe klanke.
description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الصوتية نسخة وندوز description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الصوتية نسخة وندوز
description.be_BY = Арыгінальны набор гукавога афармленьня з гульні Transport Tycoon Deluxe для Windows. description.be_BY = Арыґінальны набор гукавога афармленьня з гульні Transport Tycoon Deluxe для Windows.
description.bg_BG = Оригинални звуци на Transport Tycoon Deluxe за Windows. description.bg_BG = Оригинални звуци на Transport Tycoon Deluxe за Windows.
description.ca_ES = Sons originals de Transport Tycoon Deluxe per a Windows. description.ca_ES = Sons originals de Transport Tycoon Deluxe per a Windows.
description.cs_CZ = Původní sada zvuků Transport Tycoon Deluxe (verze pro Windows). description.cs_CZ = Původní sada zvuků Transport Tycoon Deluxe (verze pro Windows).
@ -24,6 +24,7 @@ description.es_ES = Sonidos originales de Transport Tycoon Deluxe versión Windo
description.et_EE = Algse Transport Tycoon Deluxe Windowsi versiooni helid. description.et_EE = Algse Transport Tycoon Deluxe Windowsi versiooni helid.
description.fi_FI = Alkuperäiset Transport Tycoon Deluxen Windows-version äänet. description.fi_FI = Alkuperäiset Transport Tycoon Deluxen Windows-version äänet.
description.fr_FR = Sons originaux de Transport Tycoon Deluxe (version Windows). description.fr_FR = Sons originaux de Transport Tycoon Deluxe (version Windows).
description.ga_IE = Fuaimeanna bunaidh Transport Tycoon Deluxe, eagrán Windows.
description.gd_GB = Fuaimean aig an deasachadh Windows tùsail aig Transport Tycoon Deluxe. description.gd_GB = Fuaimean aig an deasachadh Windows tùsail aig Transport Tycoon Deluxe.
description.gl_ES = Sons da edición orixinal de Transport Tycoon Deluxe para Windows. description.gl_ES = Sons da edición orixinal de Transport Tycoon Deluxe para Windows.
description.hr_HR = Originalni zvukovi za Transport Tycoon Deluxe Windows izdanje. description.hr_HR = Originalni zvukovi za Transport Tycoon Deluxe Windows izdanje.
@ -32,12 +33,15 @@ description.id_ID = Efek suara orisinil Transport Tycoon Deluxe versi Windows.
description.is_IS = Upprunalega hljóðið úr Transport Tycoon Deluxe Windows útgáfunni. description.is_IS = Upprunalega hljóðið úr Transport Tycoon Deluxe Windows útgáfunni.
description.it_IT = Suoni originali di Transport Tycoon Deluxe, edizione Windows. description.it_IT = Suoni originali di Transport Tycoon Deluxe, edizione Windows.
description.ja_JP = Transport Tycoon Deluxe オリジナル版 効果音 (Windows) description.ja_JP = Transport Tycoon Deluxe オリジナル版 効果音 (Windows)
description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 윈도우 에디션의 효과음입니다. description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 윈도 에디션의 효과음입니다.
description.la_VA = Soni ex editione originale Transport Tycoon Deluxe Windows.
description.lb_LU = Original Transport Tycoon Deluxe Windows Editioun Sound.
description.lt_LT = Originalūs Transport Tycoon Deluxe Windows leidimo garsai. description.lt_LT = Originalūs Transport Tycoon Deluxe Windows leidimo garsai.
description.nb_NO = Originale lyder fra Transport Tycoon Deluxe for Windows. description.nb_NO = Originale lyder fra Transport Tycoon Deluxe for Windows.
description.nl_NL = Originele geluiden van de Transport Tycoon Deluxe Windows-versie. description.nl_NL = Originele geluiden van de Transport Tycoon Deluxe Windows-versie.
description.nn_NO = Originale lydar frå Transport Tycoon Deluxe for Windows. description.nn_NO = Originale lydar frå Transport Tycoon Deluxe for Windows.
description.pl_PL = Oryginalna edycja dźwięków dla Transport Tycoon Deluxe Windows. description.pl_PL = Oryginalna edycja dźwięków dla Transport Tycoon Deluxe Windows.
description.pt_BR = Sons Originais do Transport Tycoon Deluxe, Edição Windows.
description.pt_PT = Sons originais da edição Windows de Transport Tycoon Deluxe. description.pt_PT = Sons originais da edição Windows de Transport Tycoon Deluxe.
description.ro_RO = Setul de sunete original al Transport Tycoon Deluxe pentru Windows. description.ro_RO = Setul de sunete original al Transport Tycoon Deluxe pentru Windows.
description.ru_RU = Оригинальный набор звукового оформления из игры Transport Tycoon Deluxe для Windows. description.ru_RU = Оригинальный набор звукового оформления из игры Transport Tycoon Deluxe для Windows.
@ -47,7 +51,8 @@ description.sr_RS = Originalni skup zvukova Transport Tycoon Deluxe Windows izda
description.sv_SE = Originalljuden från Transport Tycoon Deluxe, Windows-utgåvan. description.sv_SE = Originalljuden från Transport Tycoon Deluxe, Windows-utgåvan.
description.ta_IN = அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் விண்டோஸ் பதிப்பு ஒலிகள். description.ta_IN = அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் விண்டோஸ் பதிப்பு ஒலிகள்.
description.th_TH = เสียงต้นตำหรับของ Transport Tycoon Deluxe Windows edition description.th_TH = เสียงต้นตำหรับของ Transport Tycoon Deluxe Windows edition
description.tr_TR = Orijinal Transport Tycoon Deluxe Windows sürümü sesleri. description.tr_TR = Özgün Transport Tycoon Deluxe Windows sürümü sesleri.
description.uk_UA = Оригінальний набір звуків з Transport Tycoon Deluxe Windows edition.
description.vi_VN = Âm thanh gốc từ phiên bản Transport Tycoon Deluxe trên Windows description.vi_VN = Âm thanh gốc từ phiên bản Transport Tycoon Deluxe trên Windows
description.zh_CN = Transport Tycoon Deluxe Windows (运输大亨Windows豪华版)的原版音效包. description.zh_CN = Transport Tycoon Deluxe Windows (运输大亨Windows豪华版)的原版音效包.
description.zh_TW = 原版 Transport Tycoon Deluxe Windows 版的音效。 description.zh_TW = 原版 Transport Tycoon Deluxe Windows 版的音效。

@ -7,4 +7,19 @@
* 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/>. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
*/ */
GSLog.Info("1.2 API compatability in effect."); GSLog.Info("1.2 API compatibility in effect.");
GSTown._SetGrowthRate <- GSTown.SetGrowthRate;
GSTown.SetGrowthRate <- function(town_id, days_between_town_growth)
{
/* Growth rate 0 caused resetting the custom growth rate. While this was undocumented, it was used nevertheless (ofc). */
if (days_between_town_growth == 0) days_between_town_growth = GSTown.TOWN_GROWTH_NORMAL;
return GSTown._SetGrowthRate(town_id, days_between_town_growth);
}
/* 1.5 adds a game element reference to the news. */
GSNews._Create <- GSNews.Create;
GSNews.Create <- function(type, text, company)
{
return GSNews._Create(type, text, company, GSNews.NR_NONE, 0);
}

@ -7,4 +7,19 @@
* 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/>. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
*/ */
GSLog.Info("1.3 API compatability in effect."); GSLog.Info("1.3 API compatibility in effect.");
GSTown._SetGrowthRate <- GSTown.SetGrowthRate;
GSTown.SetGrowthRate <- function(town_id, days_between_town_growth)
{
/* Growth rate 0 caused resetting the custom growth rate. While this was undocumented, it was used nevertheless (ofc). */
if (days_between_town_growth == 0) days_between_town_growth = GSTown.TOWN_GROWTH_NORMAL;
return GSTown._SetGrowthRate(town_id, days_between_town_growth);
}
/* 1.5 adds a game element reference to the news. */
GSNews._Create <- GSNews.Create;
GSNews.Create <- function(type, text, company)
{
return GSNews._Create(type, text, company, GSNews.NR_NONE, 0);
}

@ -1,4 +1,4 @@
/* $Id: compat_1.3.nut 24469 2012-08-13 19:33:17Z yexo $ */ /* $Id$ */
/* /*
* This file is part of OpenTTD. * This file is part of OpenTTD.
@ -6,3 +6,12 @@
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * 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/>. * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
*/ */
GSLog.Info("1.4 API compatibility in effect.");
/* 1.5 adds a game element reference to the news. */
GSNews._Create <- GSNews.Create;
GSNews.Create <- function(type, text, company)
{
return GSNews._Create(type, text, company, GSNews.NR_NONE, 0);
}

@ -0,0 +1,10 @@
/* $Id$ */
/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
*/
GSLog.Info("1.5 API compatibility in effect.");

@ -0,0 +1,8 @@
/* $Id$ */
/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
*/

File diff suppressed because it is too large Load Diff

@ -72,6 +72,7 @@ set_default() {
with_zlib="1" with_zlib="1"
with_lzma="1" with_lzma="1"
with_lzo2="1" with_lzo2="1"
with_xdg_basedir="1"
with_png="1" with_png="1"
enable_builtin_depend="1" enable_builtin_depend="1"
with_makedepend="0" with_makedepend="0"
@ -91,6 +92,7 @@ set_default() {
with_ccache="1" with_ccache="1"
with_nforenum="1" with_nforenum="1"
with_grfcodec="1" with_grfcodec="1"
with_sse="1"
save_params_array=" save_params_array="
build build
@ -145,6 +147,7 @@ set_default() {
with_zlib with_zlib
with_lzma with_lzma
with_lzo2 with_lzo2
with_xdg_basedir
with_png with_png
enable_builtin_depend enable_builtin_depend
with_makedepend with_makedepend
@ -164,6 +167,7 @@ set_default() {
with_ccache with_ccache
with_grfcodec with_grfcodec
with_nforenum with_nforenum
with_sse
CC CXX CFLAGS CXXFLAGS LDFLAGS CFLAGS_BUILD CXXFLAGS_BUILD LDFLAGS_BUILD" CC CXX CFLAGS CXXFLAGS LDFLAGS CFLAGS_BUILD CXXFLAGS_BUILD LDFLAGS_BUILD"
} }
@ -347,6 +351,13 @@ detect_params() {
--without-liblzo2) with_lzo2="0";; --without-liblzo2) with_lzo2="0";;
--with-liblzo2=*) with_lzo2="$optarg";; --with-liblzo2=*) with_lzo2="$optarg";;
--with-xdg-basedir) with_xdg_basedir="2";;
--without-xdg-basedir) with_xdg_basedir="0";;
--with-xdg-basedir=*) with_xdg_basedir="$optarg";;
--with-libxdg-basedir) with_xdg_basedir="2";;
--without-libxdg-basedir) with_xdg_basedir="0";;
--with-libxdg-basedir=*) with_xdg_basedir="$optarg";;
--with-png) with_png="2";; --with-png) with_png="2";;
--without-png) with_png="0";; --without-png) with_png="0";;
--with-png=*) with_png="$optarg";; --with-png=*) with_png="$optarg";;
@ -438,6 +449,10 @@ detect_params() {
--with-threads) with_threads="1";; --with-threads) with_threads="1";;
--with-threads=*) with_threads="$optarg";; --with-threads=*) with_threads="$optarg";;
--without-sse) with_sse="0";;
--with-sse) with_sse="1";;
--with-sse=*) with_sse="$optarg";;
CC=* | --CC=*) CC="$optarg";; CC=* | --CC=*) CC="$optarg";;
CXX=* | --CXX=*) CXX="$optarg";; CXX=* | --CXX=*) CXX="$optarg";;
CFLAGS=* | --CFLAGS=*) CFLAGS="$optarg";; CFLAGS=* | --CFLAGS=*) CFLAGS="$optarg";;
@ -511,10 +526,10 @@ check_params() {
log 1 " PREPROCESSOR is only available for OSX" log 1 " PREPROCESSOR is only available for OSX"
exit 1 exit 1
fi fi
# OS only allows DETECT, UNIX, OSX, FREEBSD, OPENBSD, MORPHOS, BEOS, HAIKU, SUNOS, CYGWIN, MINGW, OS2, DOS, WINCE, and PSP # OS only allows DETECT, UNIX, OSX, FREEBSD, DRAGONFLY, OPENBSD, NETBSD, MORPHOS, BEOS, HAIKU, SUNOS, CYGWIN, MINGW, OS2, DOS, WINCE, and PSP
if [ -z "`echo $os | egrep '^(DETECT|UNIX|OSX|FREEBSD|OPENBSD|NETBSD|HPUX|MORPHOS|BEOS|HAIKU|SUNOS|CYGWIN|MINGW|OS2|DOS|WINCE|PSP)$'`" ]; then if [ -z "`echo $os | egrep '^(DETECT|UNIX|OSX|FREEBSD|DRAGONFLY|OPENBSD|NETBSD|HPUX|MORPHOS|BEOS|HAIKU|SUNOS|CYGWIN|MINGW|OS2|DOS|WINCE|PSP)$'`" ]; then
log 1 "configure: error: invalid option --os=$os" log 1 "configure: error: invalid option --os=$os"
log 1 " Available options are: --os=[DETECT|UNIX|OSX|FREEBSD|OPENBSD|NETBSD|HPUX|MORPHOS|BEOS|HAIKU|SUNOS|CYGWIN|MINGW|OS2|DOS|WINCE|PSP]" log 1 " Available options are: --os=[DETECT|UNIX|OSX|FREEBSD|DRAGONFLY|OPENBSD|NETBSD|HPUX|MORPHOS|BEOS|HAIKU|SUNOS|CYGWIN|MINGW|OS2|DOS|WINCE|PSP]"
exit 1 exit 1
fi fi
# cpu_type can be either 32 or 64 # cpu_type can be either 32 or 64
@ -578,6 +593,7 @@ check_params() {
check_makedepend check_makedepend
detect_cputype detect_cputype
detect_sse_capable_architecture
if [ "$enable_static" = "1" ]; then if [ "$enable_static" = "1" ]; then
if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "MORPHOS" ] || [ "$os" = "DOS" ]; then if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "MORPHOS" ] || [ "$os" = "DOS" ]; then
@ -818,6 +834,7 @@ check_params() {
fi fi
fi fi
detect_xdg_basedir
detect_png detect_png
detect_freetype detect_freetype
detect_fontconfig detect_fontconfig
@ -845,7 +862,7 @@ check_params() {
endian="PREPROCESSOR" endian="PREPROCESSOR"
fi fi
log 1 "checking endianess... $endian" log 1 "checking endianness... $endian"
# Suppress language errors when there is a version defined, indicating a release # Suppress language errors when there is a version defined, indicating a release
# It just isn't pretty if any release produces warnings in the languages. # It just isn't pretty if any release produces warnings in the languages.
@ -1020,7 +1037,7 @@ check_params() {
log 1 "checking revision... svn detection (tag)" log 1 "checking revision... svn detection (tag)"
elif [ -d "$ROOT_DIR/.git" ] && [ -n "`git help 2>/dev/null`" ]; then elif [ -d "$ROOT_DIR/.git" ] && [ -n "`git help 2>/dev/null`" ]; then
log 1 "checking revision... git detection" log 1 "checking revision... git detection"
elif [ -d "$ROOT_DIR/.hg" ] && [ -n "`hg help 2>/dev/null`" ]; then elif [ -d "$ROOT_DIR/.hg" ] && [ -n "`HGPLAIN= hg help 2>/dev/null`" ]; then
log 1 "checking revision... hg detection" log 1 "checking revision... hg detection"
elif [ -f "$ROOT_DIR/.ottdrev" ]; then elif [ -f "$ROOT_DIR/.ottdrev" ]; then
log 1 "checking revision... source tarball" log 1 "checking revision... source tarball"
@ -1037,7 +1054,7 @@ check_params() {
fi fi
if [ "$doc_dir" = "1" ]; then if [ "$doc_dir" = "1" ]; then
if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ]; then if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "DRAGONFLY" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ]; then
doc_dir="share/doc/openttd" doc_dir="share/doc/openttd"
else else
doc_dir="$data_dir/docs" doc_dir="$data_dir/docs"
@ -1047,7 +1064,7 @@ check_params() {
fi fi
if [ "$icon_theme_dir" = "1" ]; then if [ "$icon_theme_dir" = "1" ]; then
if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ]; then if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "DRAGONFLY" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ]; then
icon_theme_dir="share/icons/hicolor" icon_theme_dir="share/icons/hicolor"
else else
icon_theme_dir="" icon_theme_dir=""
@ -1081,7 +1098,7 @@ check_params() {
if [ "$man_dir" = "1" ]; then if [ "$man_dir" = "1" ]; then
# add manpage on UNIX systems # add manpage on UNIX systems
if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ] || [ "$os" = "OSX" ]; then if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "DRAGONFLY" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ] || [ "$os" = "OSX" ]; then
man_dir="share/man/man6" man_dir="share/man/man6"
else else
man_dir="" man_dir=""
@ -1092,7 +1109,7 @@ check_params() {
if [ "$menu_dir" = "1" ]; then if [ "$menu_dir" = "1" ]; then
# add a freedesktop menu item only for some UNIX systems # add a freedesktop menu item only for some UNIX systems
if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ]; then if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "DRAGONFLY" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ]; then
menu_dir="share/applications" menu_dir="share/applications"
else else
menu_dir="" menu_dir=""
@ -1424,6 +1441,7 @@ make_cflags_and_ldflags() {
make_compiler_cflags "$cc_host" "CFLAGS" "CXXFLAGS" "LDFLAGS" "FEATURES" make_compiler_cflags "$cc_host" "CFLAGS" "CXXFLAGS" "LDFLAGS" "FEATURES"
CFLAGS="$CFLAGS -D$os" CFLAGS="$CFLAGS -D$os"
CFLAGS_BUILD="$CFLAGS_BUILD -D$os"
if [ "$enable_debug" = "0" ]; then if [ "$enable_debug" = "0" ]; then
# No debug, add default stuff # No debug, add default stuff
@ -1433,7 +1451,11 @@ make_cflags_and_ldflags() {
LDFLAGS="$LDFLAGS -noixemul" LDFLAGS="$LDFLAGS -noixemul"
fi fi
CFLAGS="-O2 -fomit-frame-pointer $CFLAGS" if [ "$enable_profiling" = "0" ]; then
# -fomit-frame-pointer and -pg do not go well together (gcc errors they are incompatible)
CFLAGS="-fomit-frame-pointer $CFLAGS"
fi
CFLAGS="-O2 $CFLAGS"
else else
OBJS_SUBDIR="debug" OBJS_SUBDIR="debug"
@ -1455,12 +1477,16 @@ make_cflags_and_ldflags() {
fi fi
if [ $enable_debug -le 2 ]; then if [ $enable_debug -le 2 ]; then
if basename "$cc_host" | grep "gcc" &>/dev/null; then cc_host_is_gcc=`basename "$cc_host" | grep "gcc" &>/dev/null`
if [ -n "$cc_host_is_gcc" ]; then
# Define only when compiling with GCC. Some GLIBC versions use GNU # Define only when compiling with GCC. Some GLIBC versions use GNU
# extensions in a way that breaks build with at least ICC. # extensions in a way that breaks build with at least ICC.
# This requires -O1 or more, so debug level 3 (-O0) is excluded. # This requires -O1 or more, so debug level 3 (-O0) is excluded.
CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=2" CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=2"
fi
cc_build_is_gcc=`basename "$cc_build" | grep "gcc" &>/dev/null`
if [ -n "$cc_build_is_gcc" ]; then
# Just add -O1 to the tools needed for building. # Just add -O1 to the tools needed for building.
CFLAGS_BUILD="$CFLAGS_BUILD -D_FORTIFY_SOURCE=2 -O1" CFLAGS_BUILD="$CFLAGS_BUILD -D_FORTIFY_SOURCE=2 -O1"
fi fi
@ -1473,13 +1499,16 @@ make_cflags_and_ldflags() {
fi fi
if [ "$enable_profiling" != "0" ]; then if [ "$enable_profiling" != "0" ]; then
CFLAGS="$CFLAGS -p" CFLAGS="$CFLAGS -pg"
LDFLAGS="$LDFLAGS -pg" LDFLAGS="$LDFLAGS -pg"
fi fi
if [ "$with_threads" = "0" ]; then if [ "$with_threads" = "0" ]; then
CFLAGS="$CFLAGS -DNO_THREADS" CFLAGS="$CFLAGS -DNO_THREADS"
fi fi
if [ "$with_sse" = "1" ]; then
CFLAGS="$CFLAGS -DWITH_SSE"
fi
if [ "`echo $1 | cut -c 1-3`" != "icc" ]; then if [ "`echo $1 | cut -c 1-3`" != "icc" ]; then
if [ "$os" = "CYGWIN" ]; then if [ "$os" = "CYGWIN" ]; then
@ -1498,7 +1527,7 @@ make_cflags_and_ldflags() {
LDFLAGS="$LDFLAGS -Wl,--subsystem,windows" LDFLAGS="$LDFLAGS -Wl,--subsystem,windows"
fi fi
LIBS="$LIBS -lws2_32 -lwinmm -lgdi32 -ldxguid -lole32" LIBS="$LIBS -lws2_32 -lwinmm -lgdi32 -ldxguid -lole32 -limm32"
if [ $cc_version -ge 44 ]; then if [ $cc_version -ge 44 ]; then
LDFLAGS_BUILD="$LDFLAGS_BUILD -static-libgcc -static-libstdc++" LDFLAGS_BUILD="$LDFLAGS_BUILD -static-libgcc -static-libstdc++"
@ -1509,7 +1538,7 @@ make_cflags_and_ldflags() {
fi fi
fi fi
if [ "$os" != "CYGWIN" ] && [ "$os" != "HAIKU" ] && [ "$os" != "FREEBSD" ] && [ "$os" != "OPENBSD" ] && [ "$os" != "MINGW" ] && [ "$os" != "MORPHOS" ] && [ "$os" != "OSX" ] && [ "$os" != "DOS" ] && [ "$os" != "WINCE" ] && [ "$os" != "PSP" ] && [ "$os" != "OS2" ]; then if [ "$os" != "CYGWIN" ] && [ "$os" != "HAIKU" ] && [ "$os" != "OPENBSD" ] && [ "$os" != "MINGW" ] && [ "$os" != "MORPHOS" ] && [ "$os" != "OSX" ] && [ "$os" != "DOS" ] && [ "$os" != "WINCE" ] && [ "$os" != "PSP" ] && [ "$os" != "OS2" ]; then
LIBS="$LIBS -lpthread" LIBS="$LIBS -lpthread"
fi fi
@ -1536,10 +1565,6 @@ make_cflags_and_ldflags() {
LIBS="$LIBS -pthread" LIBS="$LIBS -pthread"
fi fi
if [ "$os" = "FREEBSD" ]; then
LIBS="$LIBS -lpthread"
fi
if [ "$os" = "OSX" ]; then if [ "$os" = "OSX" ]; then
LDFLAGS="$LDFLAGS -framework Cocoa" LDFLAGS="$LDFLAGS -framework Cocoa"
@ -1558,7 +1583,7 @@ make_cflags_and_ldflags() {
LDFLAGS="$OSX_LD_SYSROOT $LDFLAGS" LDFLAGS="$OSX_LD_SYSROOT $LDFLAGS"
fi fi
if [ "$enable_universal" = "0" ] && [ $cc_version -ge 40 ]; then if [ "$enable_universal" = "0" ] && [ $cc_version -gt 40 ]; then
# Only set the min version when not doing an universal build. # Only set the min version when not doing an universal build.
# Universal builds set the version elsewhere. # Universal builds set the version elsewhere.
if [ "$cpu_type" = "64" ]; then if [ "$cpu_type" = "64" ]; then
@ -1581,7 +1606,7 @@ make_cflags_and_ldflags() {
fi fi
# Most targets act like UNIX, just with some additions # Most targets act like UNIX, just with some additions
if [ "$os" = "BEOS" ] || [ "$os" = "HAIKU" ] || [ "$os" = "OSX" ] || [ "$os" = "MORPHOS" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ] || [ "$os" = "OS2" ]; then if [ "$os" = "BEOS" ] || [ "$os" = "HAIKU" ] || [ "$os" = "OSX" ] || [ "$os" = "MORPHOS" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "DRAGONFLY" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ] || [ "$os" = "OS2" ]; then
CFLAGS="$CFLAGS -DUNIX" CFLAGS="$CFLAGS -DUNIX"
fi fi
# And others like Windows # And others like Windows
@ -1657,6 +1682,17 @@ make_cflags_and_ldflags() {
CFLAGS="$CFLAGS -DWITH_LZO" CFLAGS="$CFLAGS -DWITH_LZO"
fi fi
if [ -n "$xdg_basedir_config" ]; then
CFLAGS="$CFLAGS -DWITH_XDG_BASEDIR"
CFLAGS="$CFLAGS `$xdg_basedir_config --cflags | tr '\n\r' ' '`"
if [ "$enable_static" != "0" ]; then
LIBS="$LIBS `$xdg_basedir_config --libs --static | tr '\n\r' ' '`"
else
LIBS="$LIBS `$xdg_basedir_config --libs | tr '\n\r' ' '`"
fi
fi
# 64bit machines need -D_SQ64 # 64bit machines need -D_SQ64
if [ "$cpu_type" = "64" ] && [ "$enable_universal" = "0" ]; then if [ "$cpu_type" = "64" ] && [ "$enable_universal" = "0" ]; then
CFLAGS="$CFLAGS -D_SQ64" CFLAGS="$CFLAGS -D_SQ64"
@ -1665,17 +1701,18 @@ make_cflags_and_ldflags() {
if [ -n "$png_config" ]; then if [ -n "$png_config" ]; then
CFLAGS="$CFLAGS -DWITH_PNG" CFLAGS="$CFLAGS -DWITH_PNG"
CFLAGS="$CFLAGS `$png_config --cppflags --I_opts | tr '\n\r' ' '`" CFLAGS="$CFLAGS `$png_config --cflags | tr '\n\r' ' '`"
# The extra flags are unneeded for latest libpng-config, but some versions are so broken...
if [ "$enable_static" != "0" ]; then if [ "$enable_static" != "0" ]; then
if [ "$os" = "OSX" ]; then if [ "$os" = "OSX" ]; then
LIBS="$LIBS `$png_config --prefix`/lib/libpng.a" # fontconfig_config goes via pkg-config on all systems, which doesn't know --prefix
# Also, despite the reason we link to the .a file ourself (because we can't use -static), we do need to ask pkg-config about possible other deps
LIBS="$LIBS `$png_config --variable=prefix`/lib/libpng.a `$png_config --libs --static | sed s@-lpng[0-9]*@@`"
else else
LIBS="$LIBS `$png_config --static --ldflags | tr '\n\r' ' '`" LIBS="$LIBS `$png_config --libs --static | tr '\n\r' ' '`"
fi fi
else else
LIBS="$LIBS `$png_config --ldflags | tr '\n\r' ' '`" LIBS="$LIBS `$png_config --libs | tr '\n\r' ' '`"
fi fi
fi fi
@ -1718,9 +1755,9 @@ make_cflags_and_ldflags() {
# Some icu-configs have the 'feature' of not adding a space where others do add the space # Some icu-configs have the 'feature' of not adding a space where others do add the space
if [ "$static_icu" != "0" ]; then if [ "$static_icu" != "0" ]; then
LIBS="$LIBS `$icu_config --ldflags-searchpath` `$icu_config --ldflags-libsonly --ldflags-layout | tr '\n\r' ' ' | sed s/licu/lsicu/g`" LIBS="$LIBS `$icu_config --ldflags-searchpath` `($icu_config --ldflags-libsonly; $icu_config --ldflags-layout) | tr '\n\r' ' ' | sed s/licu/lsicu/g`"
else else
LIBS="$LIBS `$icu_config --ldflags-searchpath` `$icu_config --ldflags-libsonly --ldflags-layout | tr '\n\r' ' '`" LIBS="$LIBS `$icu_config --ldflags-searchpath` `($icu_config --ldflags-libsonly; $icu_config --ldflags-layout) | tr '\n\r' ' '`"
fi fi
fi fi
@ -2227,52 +2264,54 @@ detect_awk() {
detect_os() { detect_os() {
if [ "$os" = "DETECT" ]; then if [ "$os" = "DETECT" ]; then
# Detect UNIX, OSX, FREEBSD, OPENBSD, NETBSD, HPUX, MORPHOS, BEOS, SUNOS, CYGWIN, MINGW, OS2, DOS, WINCE, and PSP # Detect UNIX, OSX, FREEBSD, DRAGONFLY, OPENBSD, NETBSD, HPUX, MORPHOS, BEOS, SUNOS, CYGWIN, MINGW, OS2, DOS, WINCE, and PSP
# Try first via dumpmachine, then via uname # Try first via dumpmachine, then via uname
os=`echo "$host" | tr '[A-Z]' '[a-z]' | $awk ' os=`echo "$host" | tr '[A-Z]' '[a-z]' | $awk '
/linux/ { print "UNIX"; exit} /linux/ { print "UNIX"; exit}
/darwin/ { print "OSX"; exit} /darwin/ { print "OSX"; exit}
/freebsd/ { print "FREEBSD"; exit} /freebsd/ { print "FREEBSD"; exit}
/openbsd/ { print "OPENBSD"; exit} /dragonfly/ { print "DRAGONFLY"; exit}
/netbsd/ { print "NETBSD"; exit} /openbsd/ { print "OPENBSD"; exit}
/hp-ux/ { print "HPUX"; exit} /netbsd/ { print "NETBSD"; exit}
/morphos/ { print "MORPHOS"; exit} /hp-ux/ { print "HPUX"; exit}
/beos/ { print "BEOS"; exit} /morphos/ { print "MORPHOS"; exit}
/haiku/ { print "HAIKU"; exit} /beos/ { print "BEOS"; exit}
/sunos/ { print "SUNOS"; exit} /haiku/ { print "HAIKU"; exit}
/solaris/ { print "SUNOS"; exit} /sunos/ { print "SUNOS"; exit}
/cygwin/ { print "CYGWIN"; exit} /solaris/ { print "SUNOS"; exit}
/mingw/ { print "MINGW"; exit} /cygwin/ { print "CYGWIN"; exit}
/os2/ { print "OS2"; exit} /mingw/ { print "MINGW"; exit}
/dos/ { print "DOS"; exit} /os2/ { print "OS2"; exit}
/wince/ { print "WINCE"; exit} /dos/ { print "DOS"; exit}
/psp/ { print "PSP"; exit} /wince/ { print "WINCE"; exit}
/psp/ { print "PSP"; exit}
'` '`
if [ -z "$os" ]; then if [ -z "$os" ]; then
os=`LC_ALL=C uname | tr '[A-Z]' '[a-z]' | $awk ' os=`LC_ALL=C uname | tr '[A-Z]' '[a-z]' | $awk '
/linux/ { print "UNIX"; exit} /linux/ { print "UNIX"; exit}
/darwin/ { print "OSX"; exit} /darwin/ { print "OSX"; exit}
/freebsd/ { print "FREEBSD"; exit} /freebsd/ { print "FREEBSD"; exit}
/openbsd/ { print "OPENBSD"; exit} /dragonfly/ { print "DRAGONFLY"; exit}
/netbsd/ { print "NETBSD"; exit} /openbsd/ { print "OPENBSD"; exit}
/hp-ux/ { print "HPUX"; exit} /netbsd/ { print "NETBSD"; exit}
/morphos/ { print "MORPHOS"; exit} /hp-ux/ { print "HPUX"; exit}
/beos/ { print "BEOS"; exit} /morphos/ { print "MORPHOS"; exit}
/haiku/ { print "HAIKU"; exit} /beos/ { print "BEOS"; exit}
/sunos/ { print "SUNOS"; exit} /haiku/ { print "HAIKU"; exit}
/cygwin/ { print "CYGWIN"; exit} /sunos/ { print "SUNOS"; exit}
/mingw/ { print "MINGW"; exit} /cygwin/ { print "CYGWIN"; exit}
/os\/2/ { print "OS2"; exit} /mingw/ { print "MINGW"; exit}
/gnu/ { print "UNIX"; exit} /os\/2/ { print "OS2"; exit}
/gnu/ { print "UNIX"; exit}
'` '`
fi fi
if [ -z "$os" ]; then if [ -z "$os" ]; then
log 1 "detecting OS... none detected" log 1 "detecting OS... none detected"
log 1 "I couldn't detect your OS. Please use --os=OS to force one" log 1 "I couldn't detect your OS. Please use --os=OS to force one"
log 1 "Allowed values are: UNIX, OSX, FREEBSD, OPENBSD, NETBSD, MORPHOS, HPUX, BEOS, HAIKU, SUNOS, CYGWIN, MINGW, OS2, DOS, WINCE, and PSP" log 1 "Allowed values are: UNIX, OSX, FREEBSD, DRAGONFLY, OPENBSD, NETBSD, MORPHOS, HPUX, BEOS, HAIKU, SUNOS, CYGWIN, MINGW, OS2, DOS, WINCE, and PSP"
exit 1 exit 1
fi fi
@ -2680,42 +2719,64 @@ detect_libtimidity() {
detect_library "$with_libtimidity" "libtimidity" "libtimidity.a" "" "timidity.h" detect_library "$with_libtimidity" "libtimidity" "libtimidity.a" "" "timidity.h"
} }
detect_lzma() { detect_pkg_config() {
# $1 - config-param ($with_lzma value)
# $2 - package name ('liblzma')
# $3 - config name ('lzma_config', sets $lzma_config)
# $4 - minimum module version ('2.3')
# 0 means no, 1 is auto-detect, 2 is force # 0 means no, 1 is auto-detect, 2 is force
if [ "$with_lzma" = "0" ]; then if [ "$1" = "0" ]; then
log 1 "checking liblzma... disabled" log 1 "checking $2... disabled"
lzma_config="" eval "$3=\"\""
return 0 return 0
fi fi
if [ "$with_lzma" = "1" ] || [ "$with_lzma" = "" ] || [ "$with_lzma" = "2" ]; then log 2 "detecting $2"
lzma_config="pkg-config liblzma"
if [ "$1" = "1" ] || [ "$1" = "" ] || [ "$1" = "2" ]; then
pkg_config_call="pkg-config $2"
else else
lzma_config="$with_lzma" pkg_config_call="$1"
fi fi
version=`$lzma_config --modversion 2>/dev/null` version=`$pkg_config_call --modversion 2>/dev/null`
ret=$? ret=$?
log 2 "executing $lzma_config --modversion" check_version "$4" "$version"
version_ok=$?
log 2 "executing $pkg_config_call --modversion"
log 2 " returned $version" log 2 " returned $version"
log 2 " exit code $ret" log 2 " exit code $ret"
if [ -z "$version" ] || [ "$ret" != "0" ]; then if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version_ok" != "1" ]; then
log 1 "checking liblzma... not found" if [ -n "$version" ] && [ "$version_ok" != "1" ]; then
log 1 "checking $2... needs at least version $4, $2 NOT enabled"
else
log 1 "checking $2... not found"
fi
# It was forced, so it should be found. # It was forced, so it should be found.
if [ "$with_lzma" != "1" ]; then if [ "$1" != "1" ]; then
log 1 "configure: error: pkg-config liblzma couldn't be found" log 1 "configure: error: pkg-config $2 couldn't be found"
log 1 "configure: error: you supplied '$with_lzma', but it seems invalid" log 1 "configure: error: you supplied '$1', but it seems invalid"
exit 1 exit 1
fi fi
lzma_config="" eval "$3=\"\""
return 0 return 0
fi fi
log 1 "checking liblzma... found" eval "$3=\"$pkg_config_call\""
log 1 "checking $2... found"
}
detect_lzma() {
detect_pkg_config "$with_lzma" "liblzma" "lzma_config" "5.0"
}
detect_xdg_basedir() {
detect_pkg_config "$with_xdg_basedir" "libxdg-basedir" "xdg_basedir_config" "1.2"
} }
detect_png() { detect_png() {
@ -2742,33 +2803,7 @@ detect_png() {
return 0 return 0
fi fi
if [ "$with_png" = "1" ] || [ "$with_png" = "" ] || [ "$with_png" = "2" ]; then detect_pkg_config "$with_png" "libpng" "png_config" "1.2"
png_config="libpng-config"
else
png_config="$with_png"
fi
version=`$png_config --version 2>/dev/null`
ret=$?
log 2 "executing $png_config --version"
log 2 " returned $version"
log 2 " exit code $ret"
if [ -z "$version" ] || [ "$ret" != "0" ]; then
log 1 "checking libpng... not found"
# It was forced, so it should be found.
if [ "$with_png" != "1" ]; then
log 1 "configure: error: libpng-config couldn't be found"
log 1 "configure: error: you supplied '$with_png', but it seems invalid"
exit 1
fi
png_config=""
return 0
fi
log 1 "checking libpng... found"
} }
detect_freetype() { detect_freetype() {
@ -2863,39 +2898,7 @@ detect_fontconfig() {
return 0 return 0
fi fi
if [ "$with_fontconfig" = "1" ] || [ "$with_fontconfig" = "" ] || [ "$with_fontconfig" = "2" ]; then detect_pkg_config "$with_fontconfig" "fontconfig" "fontconfig_config" "2.3"
fontconfig_config="pkg-config fontconfig"
else
fontconfig_config="$with_fontconfig"
fi
version=`$fontconfig_config --modversion 2>/dev/null`
ret=$?
check_version '2.3' "$version"
version_ok=$?
log 2 "executing $fontconfig_config --modversion"
log 2 " returned $version"
log 2 " exit code $ret"
if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version_ok" != "1" ]; then
if [ -n "$version" ] && [ "$version_ok" != "1" ]; then
log 1 "checking libfontconfig... needs at least version 2.3.0, fontconfig NOT enabled"
else
log 1 "checking libfontconfig... not found"
fi
# It was forced, so it should be found.
if [ "$with_fontconfig" != "1" ]; then
log 1 "configure: error: fontconfig-config couldn't be found"
log 1 "configure: error: you supplied '$with_fontconfig', but it seems invalid"
exit 1
fi
fontconfig_config=""
return 0
fi
log 1 "checking libfontconfig... found"
} }
detect_icu() { detect_icu() {
@ -2937,7 +2940,7 @@ detect_icu() {
# It was forced, so it should be found. # It was forced, so it should be found.
if [ "$with_icu" != "1" ]; then if [ "$with_icu" != "1" ]; then
log 1 "configure: error: icu-config couldn't be found" log 1 "configure: error: icu-config couldn't be found"
log 1 "configure: error: you supplied '$with_icuconfig', but it seems invalid" log 1 "configure: error: you supplied '$with_icu', but it seems invalid"
exit 1 exit 1
fi fi
@ -3178,9 +3181,9 @@ detect_grfcodec() {
log 2 " returned $version" log 2 " returned $version"
log 2 " exit code $ret" log 2 " exit code $ret"
if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version" -lt "949" ]; then if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version" -lt "985" ]; then
if [ -n "$version" ] && [ "$version" -lt "949" ]; then if [ -n "$version" ] && [ "$version" -lt "985" ]; then
log 1 "checking grfcodec... needs at least version 6.0.2 (r949), disabled" log 1 "checking grfcodec... needs at least version 6.0.5 (r985), disabled"
else else
log 1 "checking grfcodec... not found" log 1 "checking grfcodec... not found"
fi fi
@ -3220,9 +3223,9 @@ detect_nforenum() {
log 2 " returned $version" log 2 " returned $version"
log 2 " exit code $ret" log 2 " exit code $ret"
if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version" -lt "949" ]; then if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version" -lt "985" ]; then
if [ -n "$version" ] && [ "$version" -lt "949" ]; then if [ -n "$version" ] && [ "$version" -lt "985" ]; then
log 1 "checking nforenum... needs at least version 6.0.2 (r949), disabled" log 1 "checking nforenum... needs at least version 6.0.5 (r985), disabled"
else else
log 1 "checking nforenum... not found" log 1 "checking nforenum... not found"
fi fi
@ -3261,6 +3264,40 @@ detect_cputype() {
rm -f tmp.64bit tmp.64bit.cpp rm -f tmp.64bit tmp.64bit.cpp
} }
detect_sse_capable_architecture() {
# 0 means no, 1 is auto-detect, 2 is force
if [ "$with_sse" = "0" ]; then
log 1 "checking SSE... disabled"
return
fi
echo "#define _SQ64 1" > tmp.sse.cpp
echo "#include <xmmintrin.h>" >> tmp.sse.cpp
echo "#include <smmintrin.h>" >> tmp.sse.cpp
echo "#include <tmmintrin.h>" >> tmp.sse.cpp
echo "int main() { return 0; }" >> tmp.sse.cpp
execute="$cxx_host -msse4.1 $CFLAGS tmp.sse.cpp -o tmp.sse 2>&1"
sse="`eval $execute 2>/dev/null`"
ret=$?
log 2 "executing $execute"
log 2 " returned $sse"
log 2 " exit code $ret"
if [ "$ret" = "0" ]; then
log 1 "detecting SSE... found"
else
# It was forced, so it should be found.
if [ "$with_sse" != "1" ]; then
log 1 "configure: error: SSE couln't be found"
log 1 "configure: error: you force enabled SSE, but it seems unavailable"
exit 1
fi
log 1 "detecting SSE... not found"
with_sse="0"
fi
rm -f tmp.sse tmp.exe tmp.sse.cpp
}
make_sed() { make_sed() {
T_CFLAGS="$CFLAGS" T_CFLAGS="$CFLAGS"
T_CXXFLAGS="$CXXFLAGS" T_CXXFLAGS="$CXXFLAGS"
@ -3553,9 +3590,9 @@ showhelp() {
echo " --awk=AWK the awk to use in configure [awk]" echo " --awk=AWK the awk to use in configure [awk]"
echo " --lipo=LIPO the lipo to use (OSX ONLY) [HOST-lipo]" echo " --lipo=LIPO the lipo to use (OSX ONLY) [HOST-lipo]"
echo " --os=OS the OS we are compiling for [DETECT]" echo " --os=OS the OS we are compiling for [DETECT]"
echo " DETECT/UNIX/OSX/FREEBSD/OPENBSD/NETBSD/" echo " DETECT/UNIX/OSX/FREEBSD/DRAGONFLY/OPENBSD/"
echo " MORPHOS/HPUX/BEOS/SUNOS/CYGWIN/MINGW/OS2/" echo " NETBSD/MORPHOS/HPUX/BEOS/SUNOS/CYGWIN/"
echo " DOS/WINCE/PSP/HAIKU" echo " MINGW/OS2/DOS/WINCE/PSP/HAIKU"
echo " --endian=ENDIAN set the endian of the HOST (AUTO/LE/BE)" echo " --endian=ENDIAN set the endian of the HOST (AUTO/LE/BE)"
echo "" echo ""
echo "Paths:" echo "Paths:"
@ -3631,13 +3668,16 @@ showhelp() {
echo " --with-cocoa enables COCOA video driver (OSX ONLY)" echo " --with-cocoa enables COCOA video driver (OSX ONLY)"
echo " --with-sdl[=sdl-config] enables SDL video driver support" echo " --with-sdl[=sdl-config] enables SDL video driver support"
echo " --with-zlib[=zlib.a] enables zlib support" echo " --with-zlib[=zlib.a] enables zlib support"
echo " --with-liblzma[=liblzma.a] enables liblzma support" echo " --with-liblzma[=\"pkg-config liblzma\"]"
echo " enables liblzma support"
echo " --with-liblzo2[=liblzo2.a] enables liblzo2 support" echo " --with-liblzo2[=liblzo2.a] enables liblzo2 support"
echo " --with-png[=libpng-config] enables libpng support" echo " --with-png[=libpng-config] enables libpng support"
echo " --with-freetype[=freetype-config]" echo " --with-freetype[=freetype-config]"
echo " enables libfreetype support" echo " enables libfreetype support"
echo " --with-fontconfig[=pkg-config fontconfig]" echo " --with-fontconfig[=\"pkg-config fontconfig\"]"
echo " enables fontconfig support" echo " enables fontconfig support"
echo " --with-xdg-basedir[=\"pkg-config libxdg-basedir\"]"
echo " enables XDG base directory support"
echo " --with-icu[=icu-config] enables icu (used for right-to-left support)" echo " --with-icu[=icu-config] enables icu (used for right-to-left support)"
echo " --static-icu try to link statically (libsicu instead of" echo " --static-icu try to link statically (libsicu instead of"
echo " libicu; can fail as the new name is guessed)" echo " libicu; can fail as the new name is guessed)"
@ -3648,6 +3688,8 @@ showhelp() {
echo " --with-ccache enables ccache support" echo " --with-ccache enables ccache support"
echo " --with-distcc enables distcc support" echo " --with-distcc enables distcc support"
echo " --without-grfcodec disable usage of grfcodec and re-generation of base sets" echo " --without-grfcodec disable usage of grfcodec and re-generation of base sets"
echo " --without-threads disable threading support"
echo " --without-sse disable SSE support (x86/x86_64 only)"
echo "" echo ""
echo "Some influential environment variables:" echo "Some influential environment variables:"
echo " CC C compiler command" echo " CC C compiler command"

1
configure vendored

@ -129,6 +129,7 @@ AWKCOMMAND='
if ($0 == "DIRECTMUSIC" && "'$with_direct_music'" == "0") { next; } if ($0 == "DIRECTMUSIC" && "'$with_direct_music'" == "0") { next; }
if ($0 == "LIBTIMIDITY" && "'$libtimidity'" == "" ) { next; } if ($0 == "LIBTIMIDITY" && "'$libtimidity'" == "" ) { next; }
if ($0 == "HAVE_THREAD" && "'$with_threads'" == "0") { next; } if ($0 == "HAVE_THREAD" && "'$with_threads'" == "0") { next; }
if ($0 == "SSE" && "'$with_sse'" != "1") { next; }
skip += 1; skip += 1;

@ -150,7 +150,8 @@ Table of contents
Note: No additional authentication is required for rcon commands. Note: No additional authentication is required for rcon commands.
The server will reply with a ADMIN_PACKET_SERVER_RCON packet. Applications The server will reply with one or more ADMIN_PACKET_SERVER_RCON packets.
Finally an ADMIN_PACKET_ADMIN_RCON_END packet will be sent. Applications
will not receive the answer twice if they have asked for the AdminUpdateType will not receive the answer twice if they have asked for the AdminUpdateType
ADMIN_UPDATE_CONSOLE, as the result is not printed on the servers console ADMIN_UPDATE_CONSOLE, as the result is not printed on the servers console
(just like clients rcon commands). (just like clients rcon commands).
@ -160,6 +161,13 @@ Table of contents
Chat from the server itself will only be sent to the admin network when it Chat from the server itself will only be sent to the admin network when it
was not sent from the admin network. was not sent from the admin network.
Note that when content is queried or updated via rcon, the processing
happens asynchronously. But the ADMIN_PACKET_ADMIN_RCON_END packet is sent
already right after the content is requested as there's no immediate output.
Thus other packages and the output of content rcon command may be sent at
an arbitrary later time, mixing into the output of other console activity,
e.g. also of possible subsequent other rcon commands sent.
5.0) Sending chat 5.0) Sending chat
---- ------------ ---- ------------

@ -0,0 +1,268 @@
Some explanations about Desyncs
Last updated: 2014-02-23
------------------------------------------------------------------------
Table of contents
-----------------
1.0) Desync theory
* 1.1) OpenTTD multiplayer architecture
* 1.2) What is a Desync and how is it detected
* 1.3) Typical causes of Desyncs
2.0) What to do in case of a Desync
* 2.1) Cache debugging
* 2.2) Desync recording
3.0) Evaluating the Desync records
* 3.1) Replaying
* 3.2) Evaluation the replay
* 3.3) Comparing savegames
1.1) OpenTTD multiplayer architecture
---- --------------------------------
OpenTTD has a huge gamestate, which changes all of the time.
The savegame contains the complete gamestate at a specific point
in time. But this state changes completely each tick: Vehicles move
and trees grow.
However, most of these changes in the gamestate are deterministic:
Without a player interfering a vehicle follows its orders always
in the same way, and trees always grow the same.
In OpenTTD multiplayer synchronisation works by creating a savegame
when clients join, and then transfering that savegame to the client,
so it has the complete gamestate at a fixed point in time.
Afterwards clients only receive 'commands', that is: Stuff which is
not predictable, like
- player actions
- AI actions
- GameScript actions
- Admin Port command
- rcon commands
- ...
These commands contain the information on how to execute the command,
and when to execute it. Time is measured in 'network frames'.
Mind that network frames to not match ingame time. Network frames
also run while the game is paused, to give a defined behaviour to
stuff that is executing while the game is paused.
The deterministic part of the gamestate is run by the clients on
their own. All they get from the server is the instruction to
run the gamestate up to a certain network time, which basically
says that there are no commands scheduled in that time.
When a client (which includes the server itself) wants to execute
a command (i.e. a non-predictable action), it does this by
- calling DoCommandP resp. DoCommandPInternal
- These functions first do a local test-run of the command to
check simple preconditions. (Just to give the client an
immediate response without bothering the server and waiting for
the response.) The test-run may not actually change the
gamestate, all changes must be discarded.
- If the local test-run succeeds the command is sent to the server.
- The server inserts the command into the command queue, which
assigns a network frame to the commands, i.e. when it shall be
executed on all clients.
- Enhanced with this specific timestamp, the command is send to all
clients, which execute the command simultaneously in the same
network frame in the same order.
1.2) What is a Desync and how is it detected
---- ---------------------------------------
In the ideal case all clients have the same gamestate as the server
and run in sync. That is, vehicle movement is the same on all
clients, and commands are executed the same everywhere and
have the same results.
When a Desync happens, it means that the gamestates on the clients
(including the server) are no longer the same. Just imagine
that a vehicle picks the left line instead of the right line at
a junction on one client.
The important thing here is, that noone notices when a Desync
occurs. The desync client will continue to simulate the gamestate
and execute commands from the server. Once the gamestate differs
it will increasingly spiral out of control: If a vehicle picks a
different route, it will arrive at a different time at a station,
which will load different cargo, which causes other vehicles to
load other stuff, which causes industries to notice different
servicing, which causes industries to change production, ...
the client could run all day in a different universe.
To limit how long a Desync can remain unnoticed, the server
transfers some checksums every now and then for the gamestate.
Currently this checksum is the state of the random number
generator of the game logic. A lot of things in OpenTTD depend
on the RNG, and if the gamestate differs, it is likely that the
RNG is called at different times, and the state differs when
checked.
The clients compare this 'checksum' with the checksum of their
own gamestate at the specific network frame. If they differ,
the client disconnects with a Desync error.
The important thing here is: The detection of the Desync is
only an ultimate failure detection. It does not give any
indication on when the Desync happened. The Desync may after
all have occurred long ago, and just did not affect the checksum
up to now. The checksum may have matched 10 times or more
since the Desync happend, and only now the Desync has spiraled
enough to finally affect the checksum. (There was once a desync
which was only noticed by the checksum after 20 game years.)
1.3) Typical causes of Desyncs
---- -------------------------
Desyncs can be caused by the following scenarios:
- The savegame does not describe the complete gamestate.
- Some information which affects the progression of the
gamestate is not saved in the savegame.
- Some information which affects the progression of the
gamestate is not loaded from the savegame.
This includes the case that something is not completely
reset before loading the savegame, so data from the
previous game is carried over to the new one.
- The gamestate does not behave deterministic.
- Cache mismatch: The game logic depends on some cached
values, which are not invalidated properly. This is
the usual case for NewGRF-specific Desyncs.
- Undefined behaviour: The game logic performs multiple
things in an undefined order or with an undefined
result. E.g. when sorting something with a key while
some keys are equal. Or some computation that depends
on the CPU architecture (32/64 bit, little/big endian).
- The gamestate is modified when it shall not be modified.
- The test-run of a command alters the gamestate.
- The gamestate is altered by a player or script without
using commands.
2.1) Cache debugging
---- ---------------
Desyncs which are caused by inproper cache validation can
often be found by enabling cache validation:
- Start OpenTTD with '-d desync=2'.
- This will enable validation of caches every tick.
That is, cached values are recomputed every tick and compared
to the cached value.
- Differences are logged to 'commands-out.log' in the autosave
folder.
Mind that this type of debugging can also be done in singleplayer.
2.2) Desync recording
---- ----------------
If you have a server, which happens to encounter Desyncs often,
you can enable recording of the gamestate alterations. This
will later allow the replay the gamestate and locate the Desync
cause.
There are two levels of Desync recording, which are enabled
via '-d desync=2' resp. '-d desync=3'. Both will record all
commands to a file 'commands-out.log' in the autosave folder.
If you have the savegame from the start of the server, and
this command log you can replay the whole game. (see Section 3.1)
If you do not start the server from a savegame, there will
also be a savegame created just after a map has been generated.
The savegame will be named 'dmp_cmds_*.sav' and be put into
the autosave folder.
In addition to that '-d desync=3' also creates regular savegames
at defined spots in network time. (more defined than regular
autosaves). These will be created in the autosave folder
and will also be named 'dmp_cmds_*.sav'.
These saves allow comparing the gamestate with the original
gamestate during replaying, and thus greatly help debugging.
However, they also take a lot of disk space.
3.1) Replaying
---- ---------
To replay a Desync recording, you need these files:
- The savegame from when the server was started, resp.
the automatically created savegame from when the map
was generated.
- The 'commands-out.log' file.
- Optionally the 'dmp_cmds_*.sav'.
Put these files into a safe spot. (Not your autosave folder!)
Next, prepare your OpenTTD for replaying:
- Get the same version of OpenTTD as the original server was running.
- Uncomment/enable the define 'DEBUG_DUMP_COMMANDS' in
'src/network/network_func.h'.
(DEBUG_FAILED_DUMP_COMMANDS is explained later)
- Put the 'commands-out.log' into the root save folder, and rename
it to 'commands.log'.
- Run 'openttd -D -d desync=3 -g startsavegame.sav'.
This replays the server log and creates new 'commands-out.log'
and 'dmp_cmds_*.sav' in your autosave folder.
3.2) Evaluation the replay
---- ---------------------
The replaying will also compare the checksums which are part of
the 'commands-out.log' with the replayed gamestate.
If they differ, it will trigger a 'NOT_REACHED'.
If the replay succeeds without mismatch, that is the replay reproduces
the original server state:
- Repeat the replay starting from incrementally later 'dmp_cmds_*.sav'
while truncating the 'commands.log' at the beginning appropriately.
The 'dmp_cmds_*.sav' can be your own ones from the first reply, or
the ones from the original server (if you have them).
(This simulates the view of joining clients during the game.)
- If one of those replays fails, you have located the Desync between
the last dmp_cmds that reproduces the replay and the first one
that fails.
If the replay does not succeed without mismatch, you can check the logs
whether there were failed commands. Then you may try to replay with
DEBUG_FAILED_DUMP_COMMANDS enabled. If the replay then fails, the
command test-run of the failed command modified the game state.
If you have the original 'dmp_cmds_*.sav', you can also compare those
savegames with your own ones from the replay. You can also comment/disable
the 'NOT_REACHED' mentioned above, to get another 'dmp_cmds_*.sav' from
the replay after the mismatch has already been detected.
See Section 3.2 on how to compare savegames.
If the saves differ you have located the Desync between the last dmp_cmds
that match and the first one that does not. The difference of the saves
may point you in the direction of what causes it.
If the replay succeeds without mismatch, and you do not have any
'dmp_cmd_*.sav' from the original server, it is a lost case.
Enable creation of the 'dmp_cmd_*.sav' on the server, and wait for the
next Desync.
Finally, you can also compare the 'commands-out.log' from the original
server with the one from the replay. They will differ in stuff like
dates, and the original log will contain the chat, but otherwise they
should match.
3.2) Comparing savegames
---- -------------------
The binary form of the savegames from the original server and from
your replay will always differ:
- The savegame contains paths to used NewGRF files.
- The gamelog will log your loading of the savegame.
- The savegame data of AIs and the Gamescript will differ.
Scripts are not run during the replay, only their recorded commands
are replayed. Their internal state will thus not change in the
replay and will differ.
To compare savegame more semantically, there exist some ugly hackish
tools at:
http://devs.openttd.org/~frosch/texts/zpipe.c
http://devs.openttd.org/~frosch/texts/printhunk.c
The first one decompresses OpenTTD savegames. The second one creates
a textual representation of an uncompressed savegame, by parsing hunks
and arrays and such. With both tools you need to be a bit careful
since they work on stdin and stdout, which may not deal well with
binary data.
If you have the textual representation of the savegames, you can
compare them with regular diff tools.

@ -15,20 +15,60 @@
For a graphical representation of the tile-layout have a look at For a graphical representation of the tile-layout have a look at
<a href="landscape_grid.html">Landscape grid</a> page. <a href="landscape_grid.html">Landscape grid</a> page.
</p> </p>
<p>Eight attributes (counting &quot;<span style="font-weight: bold;">type_height</span>&quot;) hold the informations about a tile.<BR> <p>Nine attributes (counting &quot;<span style="font-weight: bold;">type</span>&quot; and
&quot;<span style="font-weight: bold;">height</span>&quot;) hold the informations about a tile.<BR>
These attributes are referred to as These attributes are referred to as
&quot;<span style="font-weight: bold;">type_height</span>", &quot;<span style="font-weight: bold;">type</span>",
&quot;<span style="font-weight: bold;">height</span>",
&quot;<span style="font-weight: bold;">m1</span>&quot;, &quot;<span style="font-weight: bold;">m2</span>&quot;, &quot;<span style="font-weight: bold;">m1</span>&quot;, &quot;<span style="font-weight: bold;">m2</span>&quot;,
&quot;<span style="font-weight: bold;">m3</span>&quot;, &quot;<span style="font-weight: bold;">m4</span>&quot;, &quot;<span style="font-weight: bold;">m3</span>&quot;, &quot;<span style="font-weight: bold;">m4</span>&quot;,
&quot;<span style="font-weight: bold;">m5</span>&quot;, &quot;<span style="font-weight: bold;">m6</span>&quot; &quot;<span style="font-weight: bold;">m5</span>&quot;, &quot;<span style="font-weight: bold;">m6</span>&quot;
and "<span style="font-weight: bold;">m7</span>".<br> and "<span style="font-weight: bold;">m7</span>".<br>
The most important value is the class of a tile, stored in the upper 4 bits The most important value is the class of a tile, stored in the upper 4 bits
of the <span style="font-weight: bold;">type_height</span> attribute. The lower 4 bits are used to encode the height and of the <span style="font-weight: bold;">type</span> attribute.
slope data.
</p> </p>
Frequently repeating patterns: Frequently repeating patterns:
<ul> <ul>
<li><span style="font-weight: bold;">type</span>
<ul>
<li>
<a name="type"></a>
Bits 7..4:
<table border="1" style="width: 30em;">
<tr bgcolor="#CCCCCC"><td colspan="2">The tile type.</td></tr>
<tr><td style="width: 5em;"><tt>00</tt></td><td>Ground</td></tr>
<tr><td><tt>01</tt></td><td>Railway tracks</td></tr>
<tr><td><tt>02</tt></td><td>Roads</td></tr>
<tr><td><tt>03</tt></td><td>Town building</td></tr>
<tr><td><tt>04</tt></td><td>Trees</td></tr>
<tr><td><tt>05</tt></td><td>Station tiles</td></tr>
<tr><td><tt>06</tt></td><td>Water</td></tr>
<tr><td><tt>07</tt></td><td>Void</td></tr>
<tr><td><tt>08</tt></td><td>Industries</td></tr>
<tr><td><tt>09</tt></td><td>Tunnel / bridge</td></tr>
<tr><td><tt>0A</tt></td><td>Objects</td></tr>
</table>
</li>
Bits 3..2:
<table border="1" style="width: 30em;">
<tr bgcolor="#CCCCCC"><td colspan="2">Presence and direction of bridge above.</td></tr>
<tr><td style="width: 5em;"><tt>00</tt></td><td>no bridge</td></tr>
<tr><td><tt>01</tt></td><td>Axis X (North-East)</td></tr>
<tr><td><tt>02</tt></td><td>Axis Y (South-West)</td></tr>
</table>
<li>
<a name="tropic_zone"></a>
Bits 1..0:
<table border="1" style="width: 30em;">
<tr bgcolor="#CCCCCC"><td colspan="2">Only meaningfull in tropic climate. It contains the definition of the available zones</td></tr>
<tr><td style="width: 5em;"><tt>00</tt></td><td>normal</td></tr>
<tr><td><tt>01</tt></td><td>desert</td></tr>
<tr><td><tt>02</tt></td><td>rain forest</td></tr>
</table>
In any other climate these 2 bits are theoretically free of use, however using them does not seem useful.
</li>
</ul>
<li><span style="font-weight: bold;">m1</span> <li><span style="font-weight: bold;">m1</span>
<ul> <ul>
<li> <li>
@ -58,32 +98,6 @@
</li> </li>
</ul> </ul>
</li> </li>
<li><span style="font-weight: bold;">m6</span>
<ul>
<li>
<a name="bridge_direction"></a>
Bits 7..6:
<table border="1" style="width: 30em;">
<tr bgcolor="#CCCCCC"><td colspan="2">Presence and direction of bridge above, for tiles that support this.</td></tr>
<tr><td style="width: 5em;"><tt>00</tt></td><td>no bridge</td></tr>
<tr><td><tt>01</tt></td><td>Axis X (North-East)</td></tr>
<tr><td><tt>02</tt></td><td>Axis Y (South-West)</td></tr>
</table>
Some tiles, such as houses do not support bridges over them and use these bits for other purposes.
</li>
<li>
<a name="tropic_zone"></a>
Bits 1..0:
<table border="1" style="width: 30em;">
<tr bgcolor="#CCCCCC"><td colspan="2">Only meaningfull in tropic climate. It contains the definition of the available zones</td></tr>
<tr><td style="width: 5em;"><tt>00</tt></td><td>normal</td></tr>
<tr><td><tt>01</tt></td><td>desert</td></tr>
<tr><td><tt>02</tt></td><td>rain forest</td></tr>
</table>
In any other climate these 2 bits are theoretically free of use, however using them does not seem useful.
</li>
</ul>
</li>
<li><span style="font-weight: bold;">m7:</span><br> <li><span style="font-weight: bold;">m7:</span><br>
Animation frame/state. Used for houses, industries, objects and stations. Animation frame/state. Used for houses, industries, objects and stations.
</li> </li>
@ -196,9 +210,7 @@
</tr> </tr>
</table> </table>
</li> </li>
<li>m6 bits 7..6 : Possibility of a bridge above, in the <a href="#bridge_direction">direction specified</a></li>
<li>m6 bits 4..2: type of hedge on NW border of the tile</li> <li>m6 bits 4..2: type of hedge on NW border of the tile</li>
<li>m6 bits 1..0 : <a href="#tropic_zone">Tropic zone definition</a></li>
</ul> </ul>
</td> </td>
</tr> </tr>
@ -510,8 +522,6 @@
<li>m5 bit 4: pbs reservation state</li> <li>m5 bit 4: pbs reservation state</li>
</ul> </ul>
</li> </li>
<li>m6 bits 7..6 : Possibility of a bridge above, in the <a href="#bridge_direction">direction specified</a></li>
<li>m6 bits 1..0 : <a href="#tropic_zone">Tropic zone definition</a></li>
</ul> </ul>
</td> </td>
</tr> </tr>
@ -539,6 +549,7 @@
</tr> </tr>
</table> </table>
</li> </li>
<li>m3 bits 7..4: <a href="#OwnershipInfo">owner</a> of road type 1 (tram); OWNER_NONE (<tt>10</tt>) is stored as OWNER_TOWN (<tt>0F</tt>)
<li>m5 bits 7 clear: road or level-crossing <li>m5 bits 7 clear: road or level-crossing
<ul> <ul>
<li>m6 bits 5..3: <li>m6 bits 5..3:
@ -573,7 +584,6 @@
</tr> </tr>
</table> </table>
</li> </li>
<li>m3 bits 7..4: <a href="#OwnershipInfo">owner</a> of road type 1 (tram); OWNER_NONE (<tt>10</tt>) is stored as OWNER_TOWN (<tt>0F</tt>)
<li>m5 bit 6 clear: road <li>m5 bit 6 clear: road
<ul> <ul>
<li>m1 bits 4..0: <a href="#OwnershipInfo">owner</a> of the road type 0 (normal road)</li> <li>m1 bits 4..0: <a href="#OwnershipInfo">owner</a> of the road type 0 (normal road)</li>
@ -663,10 +673,9 @@
</tr> </tr>
</table> </table>
</li> </li>
<li>m7 bits 4..0: <a href="#OwnershipInfo">owner</a> of the road type 0 (normal road)</li>
</ul> </ul>
</li> </li>
<li>m6 bits 7..6 : Possibility of a bridge above, in the <a href="#bridge_direction">direction specified</a></li>
<li>m6 bits 1..0 : <a href="#tropic_zone">Tropic zone definition</a></li>
</ul> </ul>
</td> </td>
</tr> </tr>
@ -713,7 +722,6 @@
<li>bits 7..2 : lift position (for houses type 04 and 05)</li> <li>bits 7..2 : lift position (for houses type 04 and 05)</li>
</ul> </ul>
</li> </li>
<li>bits 1..0 : tropic zone specifier</li>
</ul> </ul>
</li> </li>
<li>m7 : <li>m7 :
@ -835,7 +843,6 @@
</tr> </tr>
</table> </table>
</li> </li>
<li>m6 bits 1..0 : <a href="#tropic_zone">Tropic zone definition</a></li>
</ul> </ul>
</td> </td>
</tr> </tr>
@ -969,7 +976,6 @@
<li>m6 bits 5..3: the station type (rail, airport, truck, bus, oilrig, dock, buoy, waypoint)</li> <li>m6 bits 5..3: the station type (rail, airport, truck, bus, oilrig, dock, buoy, waypoint)</li>
<li>m6 bit 2: pbs reservation state for railway stations/waypoints</li> <li>m6 bit 2: pbs reservation state for railway stations/waypoints</li>
<li>m6 bits 1..0 : <a href="#tropic_zone">Tropic zone definition</a></li>
<li>m7 bits 4..0: <a href="#OwnershipInfo">owner</a> of road (road stops)</li> <li>m7 bits 4..0: <a href="#OwnershipInfo">owner</a> of road (road stops)</li>
<li>m7 bits 7..6: present road types (road stops)</li> <li>m7 bits 7..6: present road types (road stops)</li>
<li>m7: animation frame (railway stations/waypoints, airports)</li> <li>m7: animation frame (railway stations/waypoints, airports)</li>
@ -1082,8 +1088,6 @@
</tr> </tr>
</table> </table>
</li> </li>
<li>m6 bits 7..6 : Possibility of a bridge above, in the <a href="#bridge_direction">direction specified</a></li>
<li>m6 bits 1..0 : <a href="#tropic_zone">Tropic zone definition</a></li>
</ul> </ul>
</td> </td>
</tr> </tr>
@ -1101,7 +1105,7 @@
<tr bgcolor="#CCCCCC"> <tr bgcolor="#CCCCCC">
<td valign=top nowrap><strong><a name="Class8"><tt> 8</tt></a></strong></td> <td valign=top nowrap><strong><a name="Class8"><tt> 8</tt></a></strong></td>
<td><strong>Industry tile </strong></td> <td><strong>Industries </strong></td>
</tr> </tr>
<tr> <tr>
<td valign=top nowrap>&nbsp;</td> <td valign=top nowrap>&nbsp;</td>
@ -1425,7 +1429,6 @@
</li> </li>
<li>m6 bits 5..3: random triggers (NewGRF)</li> <li>m6 bits 5..3: random triggers (NewGRF)</li>
<li>m6 bit 2: bit 8 of type (see m5)</li> <li>m6 bit 2: bit 8 of type (see m5)</li>
<li>m6 bits 1..0 : <a href="#tropic_zone">Tropic zone definition</a></li>
<li>m7: animation frame</li> <li>m7: animation frame</li>
</ul> </ul>
</td> </td>
@ -1576,8 +1579,6 @@
</tr> </tr>
</table> </table>
</li> </li>
<li>m6 bits 7..6 : Possibility of a bridge above, in the <a href="#bridge_direction">direction specified</a></li>
<li>m6 bits 1..0 : <a href="#tropic_zone">Tropic zone definition</a></li>
<li>m7 bits 4..0: <a href="#OwnershipInfo">owner</a> of road</li> <li>m7 bits 4..0: <a href="#OwnershipInfo">owner</a> of road</li>
<li>m7 bit 5 set = on snow or desert</li> <li>m7 bit 5 set = on snow or desert</li>
<li>m7 bits 7..6: present road types for road</li> <li>m7 bits 7..6: present road types for road</li>
@ -1593,41 +1594,12 @@
<td valign=top nowrap>&nbsp;</td> <td valign=top nowrap>&nbsp;</td>
<td> <td>
<ul> <ul>
<li>m1 bits 6..5 : Water class (sea, canal, river or land) <li>m1 bits 6..5 : Water class (sea, canal, river or land)</li>
<li>m1 bits 4..0: <a href="#OwnershipInfo">owner</a> of the object (for lighthouses and transmitters normally <tt>10</tt>)</li> <li>m1 bits 4..0: <a href="#OwnershipInfo">owner</a> of the object (for lighthouses and transmitters normally <tt>10</tt>)</li>
<li>m2: index into the array of objects <li>m2: index into the array of objects, bits 0 to 15 (upper bits in m5)</li>
<li>m3: random bits <li>m3: random bits</li>
<li>m5: tile type: <li>m5: index into the array of objects, bits 16 to 23 (lower bits in m2)</li>
<table> <li>m7: animation counter</li>
<tr>
<td nowrap valign=top><tt>00</tt>&nbsp; </td>
<td align=left>transmitter</td>
</tr>
<tr>
<td nowrap valign=top><tt>01</tt>&nbsp; </td>
<td align=left>lighthouse</td>
</tr>
<tr>
<td nowrap valign=top><tt>02</tt>&nbsp; </td>
<td align=left>company statue
</tr>
<tr>
<td nowrap valign=top><tt>03</tt>&nbsp; </td>
<td align=left>company-owned land</td>
</tr>
<tr>
<td nowrap valign=top><tt>04</tt><tt></tt>&nbsp; </td>
<td align=left>company headquarters</td>
</tr>
</table>
</li>
<li>m6 bits 7..6 : Possibility of a bridge above, in the <a href="#bridge_direction">direction specified</a></li>
<li>m6 bits 1..0 : <a href="#tropic_zone">Tropic zone definition</a></li>
<li>m7: animation counter
</ul> </ul>
</td> </td>
</tr> </tr>

@ -17,7 +17,7 @@
</head> </head>
<body style="direction: ltr;"> <body style="direction: ltr;">
<h3 style="font-weight: bold;">Landscape</h3> <h3 style="font-weight: bold;">Landscape</h3>
<span style="font-weight: bold;"></span>Six attributes hold the information about a tile. <span style="font-weight: bold;"></span>Nine attributes hold the information about a tile.
This can be seen in the <a href="landscape.html">Landscape</a> document. This page tries to give an overview of used and free bits of This can be seen in the <a href="landscape.html">Landscape</a> document. This page tries to give an overview of used and free bits of
the array so you can quickly see what is used and what is not. the array so you can quickly see what is used and what is not.
<ul> <ul>
@ -28,13 +28,14 @@ the array so you can quickly see what is used and what is not.
</ul> </ul>
<p> <p>
<ul> <ul>
<li><span style="font-weight: bold;">type_height</span> - 8 bits in size, stores tile height (lower 4 bits) and tile class (upper 4 bits)</li> <li><span style="font-weight: bold;">type</span> - 8 bits in size, tile class (bits 4..7), bridge (bits 2..3) tropic zone (bits 0..1, only valid in tropic climate)</li>
<li><span style="font-weight: bold;">height</span> - 8 bits in size, stores tile height</li>
<li><span style="font-weight: bold;">m1</span> - 8 bits in size, used to identify the owner of that tile (eg piece of rail, bridge, etc.)</li> <li><span style="font-weight: bold;">m1</span> - 8 bits in size, used to identify the owner of that tile (eg piece of rail, bridge, etc.)</li>
<li><span style="font-weight: bold;">m2</span> - 16 bits in size, used to identify the index of the given tile (object) in the (object-)array</li> <li><span style="font-weight: bold;">m2</span> - 16 bits in size, used to identify the index of the given tile (object) in the (object-)array</li>
<li><span style="font-weight: bold;">m3</span> - 8 bits in size, is used for general storage</li> <li><span style="font-weight: bold;">m3</span> - 8 bits in size, is used for general storage</li>
<li><span style="font-weight: bold;">m4</span> - 8 bits in size, is used for general storage</li> <li><span style="font-weight: bold;">m4</span> - 8 bits in size, is used for general storage</li>
<li><span style="font-weight: bold;">m5</span> - 8 bits in size, is used for general storage</li> <li><span style="font-weight: bold;">m5</span> - 8 bits in size, is used for general storage</li>
<li><span style="font-weight: bold;">m6</span> - 8 bits in size, special meaning : lower 2 bits only valid in tropic climate, upper 2 bits for bridges</li> <li><span style="font-weight: bold;">m6</span> - 8 bits in size, is used for general storage</li>
<li><span style="font-weight: bold;">m7</span> - 8 bits in size, is used for general storage</li> <li><span style="font-weight: bold;">m7</span> - 8 bits in size, is used for general storage</li>
</ul> </ul>
@ -42,7 +43,8 @@ the array so you can quickly see what is used and what is not.
<tbody> <tbody>
<tr> <tr>
<th colspan=2>class</th> <th colspan=2>class</th>
<th>type_height (8)</th> <th>type (8)</th>
<th>height (8)</th>
<th>m1 (8)</th> <th>m1 (8)</th>
<th>m2 (16)</th> <th>m2 (16)</th>
<th>m3 (8)</th> <th>m3 (8)</th>
@ -55,6 +57,7 @@ the array so you can quickly see what is used and what is not.
<td colspan=2 class="caption">bits</td> <td colspan=2 class="caption">bits</td>
<td class="bits">7654 3210</td> <td class="bits">7654 3210</td>
<td class="bits">7654 3210</td> <td class="bits">7654 3210</td>
<td class="bits">7654 3210</td>
<td class="bits">FEDC BA98 7654 3210</td> <td class="bits">FEDC BA98 7654 3210</td>
<td class="bits">7654 3210</td> <td class="bits">7654 3210</td>
<td class="bits">7654 3210</td> <td class="bits">7654 3210</td>
@ -66,69 +69,75 @@ the array so you can quickly see what is used and what is not.
<td rowspan="2">0</td> <td rowspan="2">0</td>
<td class="caption">ground</td> <td class="caption">ground</td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
<td class="bits">XXXX XXXX</td>
<td class="bits"><span class="free">OOO</span><span class="option">~ ~~~~</span></td> <td class="bits"><span class="free">OOO</span><span class="option">~ ~~~~</span></td>
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
<td class="bits">XXXX <span class="free">OOOO</span></td> <td class="bits">XXXX <span class="free">OOOO</span></td>
<td class="bits">XXXX XX<span class="free">OO</span></td> <td class="bits">XXXX XX<span class="free">OO</span></td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
<td class="bits">XX<span class="free">O</span>X XXXX</td> <td class="bits"><span class="free">OOO</span>X XX<span class="free">OO</span></td>
<td class="bits"><span class="free">OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO</span></td>
</tr> </tr>
<tr> <tr>
<td class="caption">farmland</td> <td class="caption">farmland</td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">-inherit-</td>
<td class="bits">XXXX XXXX XXXX XXXX</td> <td class="bits">XXXX XXXX XXXX XXXX</td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">XX<span class="free">O</span>X XXXX</td> <td class="bits"><span class="free">OOO</span>X XX<span class="free">OO</span></td>
<td class="bits"><span class="free">OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO</span></td>
</tr> </tr>
<tr> <tr>
<td rowspan=3>1</td> <td rowspan=3>1</td>
<td class="caption">rail</td> <td class="caption">rail</td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
<td class="bits">XXXX XXXX</td>
<td class="bits"><span class="free">OOO</span>X XXXX</td> <td class="bits"><span class="free">OOO</span>X XXXX</td>
<td class="bits"><span class="free">OOOO</span> XXXX <span class="free">OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO</span> XXXX <span class="free">OOOO OOOO</span></td>
<td class="bits"><span class="free">OOOO</span> XXXX</td> <td class="bits"><span class="free">OOOO</span> XXXX</td>
<td class="bits"><span class="free">OOOO</span> XXXX</td> <td class="bits"><span class="free">OOOO</span> XXXX</td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
<td class="bits">XX<span class="free">OO OO</span>XX</td> <td class="bits"><span class="free">OOOO OOOO</span></td>
<td class="bits"><span class="free">OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO</span></td>
</tr> </tr>
<tr> <tr>
<td class="caption">rail with signals</td> <td class="caption">rail with signals</td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">-inherit-</td>
<td class="bits"><span class="free">OOOO</span> XXXX XXXX XXXX</td> <td class="bits"><span class="free">OOOO</span> XXXX XXXX XXXX</td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">XX<span class="free">OO OO</span>XX</td> <td class="bits"><span class="free">OOOO OOOO</span></td>
<td class="bits"><span class="free">OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO</span></td>
</tr> </tr>
<tr> <tr>
<td class="caption">depot</td> <td class="caption">depot</td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">-inherit-</td>
<td class="bits">XXXX XXXX XXXX XXXX</td> <td class="bits">XXXX XXXX XXXX XXXX</td>
<td class="bits"><span class="free">OOOO</span> XXXX</td> <td class="bits"><span class="free">OOOO</span> XXXX</td>
<td class="bits"><span class="free">OOOO</span> XXXX</td> <td class="bits"><span class="free">OOOO</span> XXXX</td>
<td class="bits">XX<span class="free">O</span>X <span class="free">OO</span>XX</td> <td class="bits">XX<span class="free">O</span>X <span class="free">OO</span>XX</td>
<td class="bits">XX<span class="free">OO OO</span>XX</td> <td class="bits"><span class="free">OOOO OOOO</span></td>
<td class="bits"><span class="free">OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO</span></td>
</tr> </tr>
<tr> <tr>
<td rowspan=3>2</td> <td rowspan=3>2</td>
<td class="caption">road</td> <td class="caption">road</td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
<td class="bits">XXXX XXXX</td>
<td class="bits"><span class="free">OOO</span>X XXXX</td> <td class="bits"><span class="free">OOO</span>X XXXX</td>
<td class="bits">XXXX XXXX XXXX XXXX</td> <td class="bits">XXXX XXXX XXXX XXXX</td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
<td class="bits"><span class="free">OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO</span></td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
<td class="bits">XXXX X<span class="free">O</span>XX</td> <td class="bits"><span class="free">OO</span>XX X<span class="free">OOO</span></td>
<td class="bits">XXX<span class="free">O</span> XXXX</td> <td class="bits">XXX<span class="free">O</span> XXXX</td>
</tr> </tr>
<tr> <tr>
@ -136,10 +145,11 @@ the array so you can quickly see what is used and what is not.
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">-inherit-</td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">XXXX<span class="free"> OOO</span>X</td> <td class="bits">XXXX<span class="free"> OOO</span>X</td>
<td class="bits">XXXX X<span class="free">O</span>XX</td> <td class="bits"><span class="free">OO</span>XX X<span class="free">OOO</span></td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
</tr> </tr>
<tr> <tr>
@ -147,46 +157,50 @@ the array so you can quickly see what is used and what is not.
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits"><span class="free">OOOO OOOO</span></td> <td class="bits">-inherit-</td>
<td class="bits">XXXX <span class="free">OOOO</span></td>
<td class="bits"><span class="free">OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO</span></td>
<td class="bits">XX<span class="free">OO OO</span>XX</td> <td class="bits">XX<span class="free">OO OO</span>XX</td>
<td class="bits">XX<span class="free">OO OO</span>XX</td> <td class="bits"><span class="free">OOOO OOOO</span></td>
<td class="bits">XXX<span class="free">O OOOO</span></td> <td class="bits">XXX<span class="free">O</span> XXXX</td>
</tr> </tr>
<tr> <tr>
<td>3</td> <td>3</td>
<td class="caption">house</td> <td class="caption">house</td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
<td class="bits">XXXX XXXX</td>
<td class="bits">XXXX XXXX XXXX XXXX</td> <td class="bits">XXXX XXXX XXXX XXXX</td>
<td class="bits">XX<span class="free">O</span><span class="option">~ ~~</span>XX</td> <td class="bits">XX<span class="free">O</span><span class="option">~ ~~</span>XX</td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
<td class="bits">XXX<span class="abuse">X XXXX</span></td> <td class="bits">XXX<span class="abuse">X XXXX</span></td>
<td class="bits"><span class="abuse">XXXX XX</span>XX</td> <td class="bits"><span class="abuse">XXXX XX</span><span class="free">OO</span></td>
<td class="bits">XXXX <span class="abuse">XXXX</span></td> <td class="bits">XXXX <span class="abuse">XXXX</span></td>
</tr> </tr>
<tr> <tr>
<td>4</td> <td>4</td>
<td class="caption">trees</td> <td class="caption">trees</td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
<td class="bits">XXXX XXXX</td>
<td class="bits"><span class="free">OOO</span><span class="option">~ ~~~~</span></td> <td class="bits"><span class="free">OOO</span><span class="option">~ ~~~~</span></td>
<td class="bits"><span class="free">OOOO OOO</span>X XXXX XXXX</td> <td class="bits"><span class="free">OOOO OOO</span>X XXXX XXXX</td>
<td class="bits"><span class="option">~~</span>XX XXXX</td> <td class="bits"><span class="option">~~</span>XX XXXX</td>
<td class="bits"><span class="free">OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO</span></td>
<td class="bits">XX<span class="free">OO O</span>XXX</td> <td class="bits">XX<span class="free">OO O</span>XXX</td>
<td class="bits"><span class="free">OOOO OO</span>XX</td> <td class="bits"><span class="free">OOOO OOOO</span></td>
<td class="bits"><span class="free">OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO</span></td>
</tr> </tr>
<tr> <tr>
<td rowspan=7>5</td> <td rowspan=7>5</td>
<td class="caption">rail station</td> <td class="caption">rail station</td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
<td class="bits">XXXX XXXX</td>
<td class="bits"><span class="free">O</span>XXX XXXX</td> <td class="bits"><span class="free">O</span>XXX XXXX</td>
<td class="bits">XXXX XXXX XXXX XXXX</td> <td class="bits">XXXX XXXX XXXX XXXX</td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
<td class="bits"><span class="free">OO</span>XX XXXX</td> <td class="bits"><span class="free">OO</span>XX XX<span class="free">OO</span></td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
</tr> </tr>
<tr> <tr>
@ -199,16 +213,18 @@ the array so you can quickly see what is used and what is not.
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">-inherit-</td>
</tr> </tr>
<tr> <tr>
<td class="caption">road stop</td> <td class="caption">road stop</td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">-inherit-</td>
<td class="bits">XXXX <span class="free">OOOO</span></td> <td class="bits">XXXX <span class="free">OOOO</span></td>
<td class="bits"><span class="free">OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO</span></td>
<td class="bits"><span class="option">~~~~ ~</span>XXX</td> <td class="bits"><span class="option">~~~~ ~</span>XXX</td>
<td class="bits"><span class="free">OO</span>XX X<span class="free">O</span>XX</td> <td class="bits"><span class="free">OO</span>XX X<span class="free">OOO</span></td>
<td class="bits">XX<span class="free">O</span>X XXXX</td> <td class="bits">XX<span class="free">O</span>X XXXX</td>
</tr> </tr>
<tr> <tr>
@ -216,10 +232,11 @@ the array so you can quickly see what is used and what is not.
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">-inherit-</td>
<td class="bits"><span class="free">OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO</span></td>
<td class="bits"><span class="free">OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO</span></td>
<td class="bits"><span class="option">~~~~ ~</span>XXX</td> <td class="bits"><span class="option">~~~~ ~</span>XXX</td>
<td class="bits"><span class="free">OO</span>XX X<span class="free">O</span>XX</td> <td class="bits"><span class="free">OO</span>XX X<span class="free">OOO</span></td>
<td class="bits"><span class="free">OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO</span></td>
</tr> </tr>
<tr> <tr>
@ -227,10 +244,11 @@ the array so you can quickly see what is used and what is not.
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">-inherit-</td>
<td class="bits">XXXX <span class="free">OOOO</span></td> <td class="bits">XXXX <span class="free">OOOO</span></td>
<td class="bits"><span class="free">OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO</span></td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
<td class="bits"><span class="free">OO</span>XX X<span class="free">O</span>XX</td> <td class="bits"><span class="free">OO</span>XX X<span class="free">OOO</span></td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
</tr> </tr>
<tr> <tr>
@ -238,10 +256,11 @@ the array so you can quickly see what is used and what is not.
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">-inherit-</td>
<td class="bits"><span class="free">OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO</span></td>
<td class="bits"><span class="free">OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO</span></td>
<td class="bits"><span class="option">~~~~ ~~~~</span></td> <td class="bits"><span class="option">~~~~ ~~~~</span></td>
<td class="bits"><span class="free">OO</span>XX X<span class="free">O</span>XX</td> <td class="bits"><span class="free">OO</span>XX X<span class="free">OOO</span></td>
<td class="bits"><span class="free">OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO</span></td>
</tr> </tr>
<tr> <tr>
@ -249,68 +268,74 @@ the array so you can quickly see what is used and what is not.
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">-inherit-</td>
<td class="bits"><span class="free">OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO</span></td>
<td class="bits"><span class="free">OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO</span></td>
<td class="bits"><span class="option">~~~~ ~~~~</span></td> <td class="bits"><span class="option">~~~~ ~~~~</span></td>
<td class="bits"><span class="free">OO</span>XX X<span class="free">O</span>XX</td> <td class="bits"><span class="free">OO</span>XX X<span class="free">OOO</span></td>
<td class="bits"><span class="free">OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO</span></td>
</tr> </tr>
<tr> <tr>
<td rowspan=3>6</td> <td rowspan=3>6</td>
<td class="caption">sea, shore</td> <td class="caption">sea, shore</td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
<td class="bits">XXXX XXXX</td>
<td class="bits"><span class="free">O</span>XXX XXXX</td> <td class="bits"><span class="free">O</span>XXX XXXX</td>
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
<td class="bits"><span class="free">OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO</span></td>
<td class="bits"><span class="free">OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO</span></td>
<td class="bits">X<span class="option">~~</span>X XXXX</td> <td class="bits">X<span class="option">~~</span>X XXXX</td>
<td class="bits">XX<span class="free">OO OO</span>XX</td> <td class="bits"><span class="free">OOOO OOOO</span></td>
<td class="bits"><span class="free">OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO</span></td>
</tr> </tr>
<tr> <tr>
<td class="caption">canal, river</td> <td class="caption">canal, river</td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">-inherit-</td>
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
<td class="bits"><span class="free">OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO</span></td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">XX<span class="free">OO OO</span>XX</td> <td class="bits"><span class="free">OOOO OOOO</span></td>
<td class="bits"><span class="free">OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO</span></td>
</tr> </tr>
<tr> <tr>
<td class="caption">shipdepot</td> <td class="caption">shipdepot</td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">-inherit-</td>
<td class="bits">XXXX XXXX XXXX XXXX</td> <td class="bits">XXXX XXXX XXXX XXXX</td>
<td class="bits"><span class="free">OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO</span></td>
<td class="bits"><span class="free">OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO</span></td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">XX<span class="free">OO OO</span>XX</td> <td class="bits"><span class="free">OOOO OOOO</span></td>
<td class="bits"><span class="free">OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO</span></td>
</tr> </tr>
<tr> <tr>
<td>8</td> <td>8</td>
<td class="caption">industry</td> <td class="caption">industry</td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
<td class="bits">XXXX XXXX</td>
<td class="bits">XXX<span class="free">O</span> <span class="abuse">XXXX</span></td> <td class="bits">XXX<span class="free">O</span> <span class="abuse">XXXX</span></td>
<td class="bits">XXXX XXXX XXXX XXXX</td> <td class="bits">XXXX XXXX XXXX XXXX</td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
<td class="bits"><span class="free">OO</span>XX XXXX</td> <td class="bits"><span class="free">OO</span>XX XX<span class="free">OO</span></td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
</tr> </tr>
<tr> <tr>
<td rowspan=2>9</td> <td rowspan=2>9</td>
<td class="caption">tunnel entrance</td> <td class="caption">tunnel entrance</td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
<td class="bits">XXXX XXXX</td>
<td class="bits"><span class="free">OOO</span>X XXXX</td> <td class="bits"><span class="free">OOO</span>X XXXX</td>
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
<td class="bits"><span class="free">OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO</span></td>
<td class="bits">X<span class="free">OO</span>X XXXX</td> <td class="bits">X<span class="free">OO</span>X XXXX</td>
<td class="bits">XX<span class="free">OO OO</span>XX</td> <td class="bits"><span class="free">OOOO OOOO</span></td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
</tr> </tr>
<tr> <tr>
@ -321,19 +346,21 @@ the array so you can quickly see what is used and what is not.
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
<td class="bits">XXXX XXXX</td> <td class="bits">-inherit-</td>
<td class="bits"><span class="free">OO</span>XX XX<span class="free">OO</span></td>
<td class="bits">-inherit-</td> <td class="bits">-inherit-</td>
</tr> </tr>
<tr> <tr>
<td rowspan=2>A</td> <td rowspan=2>A</td>
<td class="caption">objects</td> <td class="caption">objects</td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
<td class="bits">XXXX XXXX</td>
<td class="bits"><span class="free">O</span>XXX XXXX</td> <td class="bits"><span class="free">O</span>XXX XXXX</td>
<td class="bits">XXXX XXXX XXXX XXXX</td> <td class="bits">XXXX XXXX XXXX XXXX</td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
<td class="bits"><span class="free">OOOO OOOO</span></td> <td class="bits"><span class="free">OOOO OOOO</span></td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
<td class="bits">XX<span class="free">OO OO</span>XX</td> <td class="bits"><span class="free">OOOO OOOO</span></td>
<td class="bits">XXXX XXXX</td> <td class="bits">XXXX XXXX</td>
</tr> </tr>
</tbody> </tbody>

@ -1,112 +1,152 @@
.\" Hey, EMACS: -*- nroff -*- .\" Hey, EMACS: -*- nroff -*-
.\" Please adjust this date whenever revising the manpage. .\" Please adjust this date whenever revising the manpage.
.Dd May 31, 2011 .Dd October 13, 2014
.Dt OPENTTD 6 .Dt OPENTTD 6
.Os
.Sh NAME .Sh NAME
.Nm openttd .Nm openttd
.Nd An open source clone of the Microprose game "Transport Tycoon Deluxe" .Nd open source clone of the Microprose game \(lqTransport Tycoon Deluxe\(rq
.Sh SYNOPSIS .Sh SYNOPSIS
.Nm .Nm
.Op Fl efhx .Op Fl efhx
.Op Fl b Ar blitter .Op Fl b Ar blitter
.Op Fl c Ar config_file .Op Fl c Ar config_file
.Op Fl d Ar [level | cat=lvl[,...]] .Op Fl d Op Ar level | Ar cat Ns = Ns Ar lvl Ns Op , Ns Ar ...
.Op Fl D Ar [host][:port] .Op Fl D Oo Ar host Oc Ns Op : Ns Ar port
.Op Fl g Ar [savegame] .Op Fl g Op Ar savegame
.Op Fl G Ar seed .Op Fl G Ar seed
.Op Fl I Ar graphicsset .Op Fl I Ar graphicsset
.Op Fl l Ar host[:port] .Op Fl l Ar host Ns Op : Ns Ar port
.Op Fl m Ar driver .Op Fl m Ar driver
.Op Fl M Ar musicset .Op Fl M Ar musicset
.Op Fl n Ar host[:port][#player] .Op Fl n Ar host Ns Oo : Ns Ar port Oc Ns Op # Ns Ar player
.Op Fl p Ar password .Op Fl p Ar password
.Op Fl P Ar password .Op Fl P Ar password
.Op Fl q Ar savegame .Op Fl q Ar savegame
.Op Fl r Ar widthxheight .Op Fl r Ar width Ns x Ns Ar height
.Op Fl s Ar driver .Op Fl s Ar driver
.Op Fl S Ar soundset .Op Fl S Ar soundset
.Op Fl t Ar year .Op Fl t Ar year
.Op Fl v Ar driver .Op Fl v Ar driver
.Sh OPTIONS .Sh OPTIONS
.Bl -tag -width ".Fl n Ar host[:port][#player]" .Bl -tag -width "-n host[:port][#player]"
.It Fl b Ar blitter .It Fl b Ar blitter
Set the blitter, see Select the blitter
.Ar blitter ;
see
.Fl h .Fl h
for a full list for a full list.
.It Fl c Ar config_file .It Fl c Ar config_file
Use 'config_file' instead of 'openttd.cfg' Use
.Ar config_file
instead of
.Pa openttd.cfg .
.It Fl d Ar [level] .It Fl d Ar [level]
Set debug verbosity for all categories to Set debug verbosity for all categories to
.Ar level .Ar level ,
or 1 if omitted or 1 if omitted.
.It Fl d Ar cat=level[,...] .It Fl d Ar cat Ns = Ns Ar lvl Ns Op , Ns Ar ...
Set debug verbosity for a specific category Set debug verbosity to
.It Fl D Ar [host][:port] .Ar lvl
Start a dedicated server. Sets network debug level to 6. If you want to change this, use for a specific category
.Ar cat .
.It Fl D Oo Ar host Oc Ns Op : Ns Ar port
Start a dedicated server.
.Pp
Network debug level will be set to 6.
If you want to change this, set
.Fl d .Fl d
after after setting
.Fl D .Fl D .
.It Fl G Ar seed
Seed the pseudo random number generator
.It Fl e .It Fl e
Start in world editor mode Start in world editor mode.
.It Fl f .It Fl f
Fork into background (dedicated server only, see Fork into background (dedicated server only, see
.Fl D ) .Fl D ) .
.It Fl g Ar [savegame] .It Fl g Op Ar savegame
Load Load
.Ar savegame .Ar savegame
at start or start a new game if omitted. The at start or start a new game if omitted.
.Ar savegame .Ar savegame
must be either absolute or relative to the current path or one of the search paths. must be either an absolute path or one relative to the current path or one of
the search paths.
.It Fl G Ar seed
Seed the pseudo random number generator with
.Ar seed .
.It Fl h .It Fl h
Display a summary of all options and lists all the available AIs, blitters, sound, music and video drivers, graphics sets and sound sets. Display a summary of all options and list all the available AIs, blitters,
sound, music and video drivers, graphics sets and sound sets.
.It Fl I Ar graphicsset .It Fl I Ar graphicsset
Set the graphics set, see Select the graphics set
.Ar graphicsset ;
see
.Fl h .Fl h
for a full list for a full list.
.It Fl l Ar host[:port] .It Fl l Ar host Ns Op : Ns Ar port
Redirect DEBUG(), See Redirect
.Fl D .Fn DEBUG
output; see
.Fl D .
.It Fl m Ar driver .It Fl m Ar driver
Set the music driver, see Select the music driver
.Ar driver ;
see
.Fl h .Fl h
for a full list for a full list.
.It Fl M Ar musicset .It Fl M Ar musicset
Set the music set, see Select the music set
.Ar musicset ;
see
.Fl h .Fl h
for a full list for a full list.
.It Fl n Ar host[:port][#player] .It Fl n Ar host Ns Oo : Ns Ar port Oc Ns Op # Ns Ar player
Join a network game, optionally specify a port to connect to and player to play as Join a network game, optionally specifying a port to connect to and player to
play as.
.It Fl p Ar password .It Fl p Ar password
Password used to join server. Only useful with Password used to join server.
.Fl n Only useful with
.Fl n .
.It Fl P Ar password .It Fl P Ar password
Password used to join company. Only useful with Password used to join company.
.Fl n Only useful with
.Fl n .
.It Fl q Ar savegame .It Fl q Ar savegame
Write some information about the savegame and exit Write some information about the specified savegame and exit.
.It Fl r Ar widthxheight .It Fl r Ar width Ns x Ns Ar height
Set the resolution Set the resolution to
.Ar width
\(mu
.Ar height
pixels.
.It Fl s Ar driver .It Fl s Ar driver
Set the sound driver, see Select the sound driver
.Ar driver ;
see
.Fl h .Fl h
for a full list for a full list.
.It Fl S Ar soundset .It Fl S Ar soundset
Set the sound set, see Select the sound set
.Ar soundset ;
see
.Fl h .Fl h
for a full list for a full list.
.It Fl t Ar year .It Fl t Ar year
Set the starting year Set the starting year to
.Ar year .
.It Fl v Ar driver .It Fl v Ar driver
Set the video driver, see Select the video driver
.Ar driver ;
see
.Fl h .Fl h
for a full list for a full list.
.It Fl x .It Fl x
Do not automatically save to config file on exit Do not automatically save to config file on exit.
.El .El
.Sh SEE ALSO .Sh SEE ALSO
http://wiki.openttd.org/, http://www.openttd.org .Lk https://wiki.openttd.org "Wiki"
(includes community maintained manual),
.Lk https://forum.openttd.org "Forum",
.Lk https://www.openttd.org "News"
.Sh HISTORY .Sh HISTORY
Transport Tycoon Deluxe was written by Chris Sawyer and published by Microprose. Transport Tycoon Deluxe was written by Chris Sawyer and published by Microprose.
.Nm .Nm

@ -106,21 +106,21 @@ elif [ -d "$ROOT_DIR/.git" ]; then
fi fi
elif [ -d "$ROOT_DIR/.hg" ]; then elif [ -d "$ROOT_DIR/.hg" ]; then
# We are a hg checkout # We are a hg checkout
if [ -n "`hg status | grep -v '^?'`" ]; then if [ -n "`HGPLAIN= hg status | grep -v '^?'`" ]; then
MODIFIED="2" MODIFIED="2"
fi fi
HASH=`LC_ALL=C hg id -i | cut -c1-12` HASH=`LC_ALL=C HGPLAIN= hg id -i | cut -c1-12`
REV="h`echo $HASH | cut -c1-8`" REV="h`echo $HASH | cut -c1-8`"
BRANCH="`hg branch | sed 's@^default$@@'`" BRANCH="`HGPLAIN= hg branch | sed 's@^default$@@'`"
TAG="`hg id -t | grep -v 'tip$'`" TAG="`HGPLAIN= hg id -t | grep -v 'tip$'`"
if [ -n "$TAG" ]; then if [ -n "$TAG" ]; then
BRANCH="" BRANCH=""
REV="$TAG" REV="$TAG"
fi fi
REV_NR=`LC_ALL=C hg log -f -k "(svn r" -l 1 --template "{desc|firstline}\n" | grep "^(svn r[0-9]*)" | sed "s@.*(svn r\([0-9]*\)).*@\1@"` REV_NR=`LC_ALL=C HGPLAIN= hg log -f -k "(svn r" -l 1 --template "{desc|firstline}\n" | grep "^(svn r[0-9]*)" | sed "s@.*(svn r\([0-9]*\)).*@\1@"`
if [ -z "$REV_NR" ]; then if [ -z "$REV_NR" ]; then
# No rev? Maybe it is a custom hgsubversion clone # No rev? Maybe it is a custom hgsubversion clone
REV_NR=`LC_ALL=C hg parent --template="{svnrev}"` REV_NR=`LC_ALL=C HGPLAIN= hg parent --template="{svnrev}"`
fi fi
elif [ -f "$ROOT_DIR/.ottdrev" ]; then elif [ -f "$ROOT_DIR/.ottdrev" ]; then
# We are an exported source bundle # We are an exported source bundle

@ -1,6 +1,6 @@
OpenTTD's known bugs OpenTTD's known bugs
Last updated: 2013-06-01 Last updated: 2015-02-24
Release version: 1.3.1 Release version: 1.5.0-beta2
------------------------------------------------------------------------ ------------------------------------------------------------------------
@ -33,12 +33,13 @@ No suitable AI can be found
If you have no AIs and an AI is started the so-called 'dummy' AI will If you have no AIs and an AI is started the so-called 'dummy' AI will
be loaded. This AI does nothing but writing a message on the AI debug be loaded. This AI does nothing but writing a message on the AI debug
window and showing a red warning. There are basically two solutions window and showing a red warning. There are basically two solutions
for this problem: you must change the settings so no AI is started, for this problem: Either you set the number of AI players to 0 so that
this is done in the difficulty settings window. The other solution is no AI is started. You find that setting at the top of the window in the
acquiring (downloading) some AI. The easiest way to do this is via "AI / Game Scripts Settings" window.
the "Check Online Content" button in the main (intro) menu or via The other solution is acquiring (downloading) some AI. The easiest way
"AI Settings" -> "Select AI" -> "Check Online Content" which is also to do this is via the "Check Online Content" button in the main (intro)
accessed via the main menu. menu or directly in the "AI / Game Scripts Settings" dialogue via the
"Check Online Content" button.
After a while of playing, colours get corrupted After a while of playing, colours get corrupted
In Windows 7 the background slideshow corrupts the colour mapping of In Windows 7 the background slideshow corrupts the colour mapping of
@ -403,3 +404,52 @@ Mouse cursor going missing with SDL [FS#4997]:
We cannot fix this problem as SDL simply does not provide the We cannot fix this problem as SDL simply does not provide the
required information in these corner cases. This is a bug in SDL required information in these corner cases. This is a bug in SDL
and as such there is little that we can do about it. and as such there is little that we can do about it.
Inconsistent catchment areas [FS#5661]:
Due to performance decisions the catchment area for cargo accepted
by a station for delivery to houses or industries differs from the
catchment area for cargo that is delivered to stations from houses
or industries.
Conceptually they work the same, but the effect in game differs.
They work by finding the closest destination "around" the source
which is within a certain distance. This distance depends on the
type of station, e.g. road stops have a smaller catchment area than
large airports. In both cases the bounding box, the smallest
rectangle that contains all tiles of something, is searched for the
target of the cargo, and then spiraling outwards finding the closest
tile of the target.
In the case of a station with two tiles spread far apart with a house
that is within the station's bounding box, it would be possible that
the spiraling search from the house does not reach one of the station
tiles before the search ends, i.e. all tiles within that distance
are searched. So the house does not deliver cargo to the station. On
the other hand, the station will deliver cargo because the house
falls within the bounding box, and thus search area.
It is possible to make these consistent, but then cargo from a house
to a station needs to search up to 32 tiles around itself, i.e. 64
by 64 tiles, to find all possible stations it could deliver to
instead of 10 by 10 tiles (40 times more tiles). Alternatively the
search from a station could be changed to use the actual tiles, but
that would require considering checking 10 by 10 tiles for each of
the tiles of a station, instead of just once.
Trains might not stop at platforms that are currently being changed [FS#5553]:
If you add tiles to or remove tiles from a platform while a train is
approaching to stop at the same platform, that train can miss the place
where it's supposed to stop and pass the station without stopping. This
is caused by the fact that the train is considered to already have stopped
if it's beyond its assigned stopping location. We can't let the train stop
just anywhere in the station because then it would never leave the station
if you have the same station in the order list multiple times in a row or
if there is only one station in the order list (see FS#5684).
Some houses and industries are not affected by transparency [FS#5817]:
Some of the default houses and industries (f.e. the iron ore mine) are
not affected by the transparency options. This is because the graphics do
not (completely) separate the ground from the building.
This is a bug of the original graphics, and unfortunately cannot be
fixed with OpenGFX for the sake of maintaining compatibility with the
original graphics.

@ -0,0 +1,32 @@
# $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/>.
BEGIN {
# Very basic variant function; barely any error checking.
# Just use the first argument as the file to start from when assembling everything
path = ARGV[1];
gsub("[^/\\\\]*$", "", path);
assemble(ARGV[1]);
}
# Recursive function for assembling by means of resolving the #includes.
function assemble(filename) {
while ((getline < filename) > 0) {
if (NF == 2 && $1 == "#include" ) {
# Remove the quotes.
gsub("[\"'<>]", "", $2);
assemble(path $2);
} else {
print $0;
}
}
if (close(filename) < 0) {
print "Could not open " filename > "/dev/stderr";
exit -1;
}
}

@ -104,3 +104,4 @@
#include "rivers/tropic.nfo" #include "rivers/tropic.nfo"
#include "rivers/toyland.nfo" #include "rivers/toyland.nfo"
#include "tunnel_portals.nfo" #include "tunnel_portals.nfo"
#include "palette.nfo"

@ -7,7 +7,7 @@
// See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>. // See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
// //
-1 * 0 0C "OpenTTD GUI graphics" -1 * 0 0C "OpenTTD GUI graphics"
-1 * 3 05 15 \b 174 // OPENTTD_SPRITE_COUNT -1 * 3 05 15 \b 175 // OPENTTD_SPRITE_COUNT
-1 sprites/openttdgui.png 8bpp 66 8 64 31 -31 7 normal -1 sprites/openttdgui.png 8bpp 66 8 64 31 -31 7 normal
-1 sprites/openttdgui.png 8bpp 146 8 64 31 -31 7 normal -1 sprites/openttdgui.png 8bpp 146 8 64 31 -31 7 normal
-1 sprites/openttdgui.png 8bpp 226 8 64 31 -31 7 normal -1 sprites/openttdgui.png 8bpp 226 8 64 31 -31 7 normal
@ -182,3 +182,4 @@
-1 sprites/openttdgui.png 8bpp 414 440 20 20 0 0 normal -1 sprites/openttdgui.png 8bpp 414 440 20 20 0 0 normal
-1 sprites/openttdgui.png 8bpp 440 440 20 20 0 0 normal -1 sprites/openttdgui.png 8bpp 440 440 20 20 0 0 normal
-1 sprites/openttdgui.png 8bpp 466 440 20 20 0 0 normal -1 sprites/openttdgui.png 8bpp 466 440 20 20 0 0 normal
-1 sprites/openttdgui.png 8bpp 490 440 20 20 0 0 normal

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

@ -0,0 +1,20 @@
//
// $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 "All black palette"
-1 * 0 05 18 01
-1 * 0 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
01

@ -47,7 +47,7 @@
-1 sprites/shore.png 8bpp 82 200 64 32 -31 -1 normal -1 sprites/shore.png 8bpp 82 200 64 32 -31 -1 normal
-1 sprites/shore.png 8bpp 162 200 64 31 -31 -8 normal -1 sprites/shore.png 8bpp 162 200 64 31 -31 -8 normal
-1 * 6 07 83 01 \7! 03 0C -1 * 6 07 83 01 \7! 03 0C
-1 * 44 0C "Missing shore tile graphics for the toyland climate" -1 * 52 0C "Missing shore tile graphics for the toyland climate"
-1 * 3 05 0D 0A -1 * 3 05 0D 0A
-1 sprites/shore.png 8bpp 290 200 64 15 -31 0 normal -1 sprites/shore.png 8bpp 290 200 64 15 -31 0 normal
-1 sprites/shore.png 8bpp 370 200 64 31 -31 -8 normal -1 sprites/shore.png 8bpp 370 200 64 31 -31 -8 normal

@ -9,3 +9,4 @@ Exec=!!TTD!!
Terminal=false Terminal=false
Categories=!!MENU_GROUP!! Categories=!!MENU_GROUP!!
Comment=A clone of Transport Tycoon Deluxe Comment=A clone of Transport Tycoon Deluxe
Keywords=game;simulation;transport;tycoon;deluxe;economics;multiplayer;money;train;ship;bus;truck;aircraft;cargo;

@ -1,3 +1,171 @@
openttd (1.5.0~beta2-0) unstable; urgency=low
* New upstream release 1.5.0-beta2
-- OpenTTD <info@openttd.org> Tue, 24 Feb 2015 21:00:00 +0100
openttd (1.5.0~beta1-0) unstable; urgency=low
* New upstream release 1.5.0-beta1
-- OpenTTD <info@openttd.org> Wed, 24 Dec 2014 21:00:00 +0100
openttd (1.4.4-0) unstable; urgency=low
* New upstream release 1.4.4
-- OpenTTD <info@openttd.org> Tue, 21 Oct 2014 21:00:00 +0200
openttd (1.4.4~RC1-0) unstable; urgency=low
* New upstream release 1.4.4-RC1
-- OpenTTD <info@openttd.org> Wed, 08 Oct 2014 19:00:00 +0200
openttd (1.4.3-0) unstable; urgency=low
* New upstream release 1.4.3
-- OpenTTD <info@openttd.org> Tue, 23 Sep 2014 21:00:00 +0200
openttd (1.4.3~RC2-0) unstable; urgency=low
* New upstream release 1.4.3-RC2
-- OpenTTD <info@openttd.org> Sun, 14 Sep 2014 19:00:00 +0200
openttd (1.4.3~RC1-0) unstable; urgency=low
* New upstream release 1.4.3-RC1
-- OpenTTD <info@openttd.org> Sun, 07 Sep 2014 19:00:00 +0200
openttd (1.4.2-0) unstable; urgency=low
* New upstream release 1.4.2
-- OpenTTD <info@openttd.org> Sat, 16 Aug 2014 21:00:00 +0200
openttd (1.4.2~RC2-0) unstable; urgency=low
* New upstream release 1.4.2-RC2
-- OpenTTD <info@openttd.org> Sun, 03 Aug 2014 18:00:00 +0200
openttd (1.4.2~RC1-0) unstable; urgency=low
* New upstream release 1.4.2-RC1
-- OpenTTD <info@openttd.org> Thu, 03 Jul 2014 21:00:00 +0200
openttd (1.4.1-0) unstable; urgency=low
* New upstream release 1.4.1
-- OpenTTD <info@openttd.org> Mon, 02 Jun 2014 21:00:00 +0200
openttd (1.4.1~RC2-0) unstable; urgency=low
* New upstream release 1.4.1-RC2
-- OpenTTD <info@openttd.org> Sun, 18 May 2014 21:00:00 +0200
openttd (1.4.1~RC1-0) unstable; urgency=low
* New upstream release 1.4.1-RC1
-- OpenTTD <info@openttd.org> Sun, 04 May 2014 21:00:00 +0200
openttd (1.4.0-0) unstable; urgency=low
* New upstream release 1.4.0
-- OpenTTD <info@openttd.org> Tue, 01 Apr 2014 21:00:00 +0200
openttd (1.4.0~RC1-0) unstable; urgency=low
* New upstream release 1.4.0-RC1
-- OpenTTD <info@openttd.org> Tue, 17 Mar 2014 21:00:00 +0100
openttd (1.4.0~beta5-0) unstable; urgency=low
* New upstream release 1.4.0-beta5
-- OpenTTD <info@openttd.org> Tue, 25 Feb 2014 10:15:00 +0100
openttd (1.4.0~beta4-0) unstable; urgency=low
* New upstream release 1.4.0-beta4
-- OpenTTD <info@openttd.org> Thu, 06 Feb 2014 21:00:00 +0100
openttd (1.4.0~beta3-0) unstable; urgency=low
* New upstream release 1.4.0-beta3
-- OpenTTD <info@openttd.org> Tue, 21 Jan 2014 21:00:00 +0100
openttd (1.4.0~beta2-0) unstable; urgency=low
* New upstream release 1.4.0-beta2
-- OpenTTD <info@openttd.org> Tue, 07 Jan 2014 21:00:00 +0100
openttd (1.4.0~beta1-0) unstable; urgency=low
* New upstream release 1.4.0-beta1
-- OpenTTD <info@openttd.org> Tue, 24 Dec 2013 00:00:00 +0100
openttd (1.3.3-0) unstable; urgency=low
* New upstream release 1.3.3
-- OpenTTD <info@openttd.org> Fri, 29 Nov 2013 19:00:00 +0100
openttd (1.3.3~RC2-0) unstable; urgency=low
* New upstream release 1.3.3-RC2
-- OpenTTD <info@openttd.org> Sun, 24 Nov 2013 19:00:00 +0100
openttd (1.3.3~RC1-0) unstable; urgency=low
* New upstream release 1.3.3-RC1
-- OpenTTD <info@openttd.org> Sun, 17 Nov 2013 19:00:00 +0100
openttd (1.3.2-0) unstable; urgency=low
* New upstream release 1.3.2
-- OpenTTD <info@openttd.org> Sat, 27 Jul 2013 18:00:00 +0200
openttd (1.3.2~RC2-0) unstable; urgency=low
* New upstream release 1.3.2-RC2
-- OpenTTD <info@openttd.org> Sat, 13 Jul 2013 12:00:00 +0200
openttd (1.3.2~RC1-0) unstable; urgency=low
* New upstream release 1.3.2-RC1
-- OpenTTD <info@openttd.org> Sun, 30 Jun 2013 12:00:00 +0200
openttd (1.3.1-0) unstable; urgency=low
* New upstream release 1.3.1
-- OpenTTD <info@openttd.org> Sat, 01 Jun 2013 00:00:00 +0300
openttd (1.3.1~RC1-0) unstable; urgency=low
* New upstream release 1.3.1-RC1
-- OpenTTD <info@openttd.org> Fri, 17 May 2013 22:00:00 +0200
openttd (1.3.0-0) unstable; urgency=low openttd (1.3.0-0) unstable; urgency=low
* New upstream release 1.3.0 * New upstream release 1.3.0

@ -3,11 +3,10 @@ Section: games
Priority: optional Priority: optional
Maintainer: Matthijs Kooijman <matthijs@stdin.nl> Maintainer: Matthijs Kooijman <matthijs@stdin.nl>
Uploaders: Jordi Mallach <jordi@debian.org> Uploaders: Jordi Mallach <jordi@debian.org>
DM-Upload-Allowed: yes
Build-Depends: debhelper (>= 7.0.50), libsdl-dev, zlib1g-dev, libpng-dev, libfreetype6-dev, libfontconfig-dev, libicu-dev, liblzma-dev, liblzo2-dev Build-Depends: debhelper (>= 7.0.50), libsdl-dev, zlib1g-dev, libpng-dev, libfreetype6-dev, libfontconfig-dev, libicu-dev, liblzma-dev, liblzo2-dev
Standards-Version: 3.8.4 Standards-Version: 3.8.4
Vcs-Browser: http://git.debian.org/?p=collab-maint/openttd.git Vcs-Browser: http://anonscm.debian.org/gitweb/?p=collab-maint/openttd.git
Vcs-Git: git://git.debian.org/collab-maint/openttd.git Vcs-Git: git://anonscm.debian.org/collab-maint/openttd.git
Homepage: http://www.openttd.org/ Homepage: http://www.openttd.org/
Package: openttd Package: openttd

@ -1,77 +1,106 @@
This package was debianized by Matthijs Kooijman <matthijs@stdin.nl> Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
on Wed, 15 Sep 2004 00:24:01 +0200. Upstream-Name: OpenTTD
Upstream-Contact: info@openttd.org, #openttd on irc.oftc.net
Upstream author: Ludvig Strigeus (ludde) and many others. Source: http://www.openttd.org
Upstream homepage: http://www.openttd.org
Copyright © 2004-2009 Ludvig Strigeous and others. Files: *
Copyright: © 2004-2012 Ludvig Strigeous and others.
OpenTTD License: License: GPL-2.0
This program is free software; you can redistribute it and/or modify
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2.0 as
it under the terms of the GNU General Public License version 2.0 as published by the Free Software Foundation;
published by the Free Software Foundation; .
This program is distributed in the hope that it will be useful,
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
GNU General Public License for more details. .
You should have received a copy of the GNU General Public License
You should have received a copy of the GNU General Public License along with this package; if not, write to the Free Software
along with this package; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA .
On Debian systems, the complete text of the GNU General Public License
On Debian systems, the complete text of the GNU General Public License version 2 can be found in `/usr/share/common-licenses/GPL-2'.
version 2 can be found in `/usr/share/common-licenses/GPL-2'.
Files: src/3rdparty/squirrel/*
This package contains an embedded version of the "Squirrel" programming Copyright: © 2003-2009 Alberto Demichelis
language, which is shipped under the following license: License: Zlib
Copyright (c) 2003-2009 Alberto Demichelis Files: src/3rdparty/md5/*
Copyright: © 1999, 2000, 2002 Aladdin Enterprises. All rights reserved.
This software is provided 'as-is', without any License: Zlib
express or implied warranty. In no event will the
authors be held liable for any damages arising from
the use of this software. License: Zlib
This software is provided 'as-is', without any express or implied
Permission is granted to anyone to use this software warranty. In no event will the authors be held liable for any damages
for any purpose, including commercial applications, arising from the use of this software.
and to alter it and redistribute it freely, subject .
to the following restrictions: Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
1. The origin of this software must not be freely, subject to the following restrictions:
misrepresented; you must not claim that .
you wrote the original software. If you 1. The origin of this software must not be misrepresented; you must not
use this software in a product, an claim that you wrote the original software. If you use this software in
acknowledgment in the product a product, an acknowledgment in the product documentation would be
documentation would be appreciated but is appreciated but is not required.
not required. .
2. Altered source versions must be plainly marked as such, and must not
2. Altered source versions must be plainly be misrepresented as being the original software.
marked as such, and must not be .
misrepresented as being the original 3. This notice may not be removed or altered from any source
software. distribution.
3. This notice may not be removed or Files: os/dos/exe2coff/*
altered from any source distribution. Copyright: © 1998 DJ Delorie
License: GPL-2.0 with additional restrictions
This package contains an implementation of the md5 hash algorithm, which This document is Copyright (C) DJ Delorie and may be distributed
is shipped under the following license: verbatim, but changing it is not allowed.
.
Copyright (C) 1999, 2000, 2002 Aladdin Enterprises. All rights reserved. Source code copyright DJ Delorie is distributed under the terms of the
GNU General Public Licence, with the following exceptions:
This software is provided 'as-is', without any express or implied .
warranty. In no event will the authors be held liable for any damages * Sources used to build crt0.o, gcrt0.o, libc.a, libdbg.a, and
arising from the use of this software. libemu.a are distributed under the terms of the GNU Library General
Public License, rather than the GNU GPL.
Permission is granted to anyone to use this software for any purpose, .
including commercial applications, and to alter it and redistribute it * Any existing copyright or authorship information in any given source
freely, subject to the following restrictions: file must remain intact. If you modify a source file, a notice to that
effect must be added to the authorship information in the source file.
1. The origin of this software must not be misrepresented; you must not .
claim that you wrote the original software. If you use this software * Runtime binaries, as provided by DJ in DJGPP, may be distributed
in a product, an acknowledgment in the product documentation would be without sources ONLY if the recipient is given sufficient information
appreciated but is not required. to obtain a copy of djgpp themselves. This primarily applies to
2. Altered source versions must be plainly marked as such, and must not be go32-v2.exe, emu387.dxe, and stubedit.exe.
misrepresented as being the original software. .
3. This notice may not be removed or altered from any source distribution. * Runtime objects and libraries, as provided by DJ in DJGPP, when
linked into an application, may be distributed without sources ONLY
if the recipient is given sufficient information to obtain a copy of
djgpp themselves. This primarily applies to crt0.o and libc.a.
.
On Debian systems, the complete text of the GNU General Public License
version 2 can be found in `/usr/share/common-licenses/GPL-2'.
Comment:
Given only the exe2coff.c file is distributed in the source distribution (and
nothing in Debian binary distribution), it seems only the 2nd condition
applies.
Files: os/dos/cwsdpmi/*
Source: http://homer.rice.edu/~sandmann/cwsdpmi/index.html
Copyright: © 1995-2000 Charles W Sandmann (sandmann@clio.rice.edu)
License: Custom binary-only license
This is release 5. The files in this binary distribution may be redistributed
under the GPL (with source) or without the source code provided:
.
* CWSDPMI.EXE or CWSDPR0.EXE are not modified in any way except via CWSPARAM.
.
* CWSDSTUB.EXE internal contents are not modified in any way except via
CWSPARAM or STUBEDIT. It may have a COFF image plus data appended to it.
.
* Notice to users that they have the right to receive the source code and/or
binary updates for CWSDPMI. Distributors should indicate a site for the
source in their documentation.
Comment:
Files are distributed as binary only, so the second option in the license
("without source code provided: ...") is applicable.

@ -1,2 +1,2 @@
?package(openttd):needs="X11" section="Games/Simulation" title="OpenTTD"\ ?package(openttd):needs="X11" section="Games/Simulation" title="OpenTTD"\
command="/usr/share/games/openttd/openttd-wrapper" icon="/usr/share/pixmaps/openttd.32.xpm" command="/usr/games/openttd" icon="/usr/share/pixmaps/openttd.32.xpm"

@ -4,7 +4,7 @@
# Use debhelper default for all targets (but some are overridden below). # Use debhelper default for all targets (but some are overridden below).
%: %:
dh $@ dh --parallel $@
DEB_HOST_GNU_TYPE=$(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) DEB_HOST_GNU_TYPE=$(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_BUILD_GNU_TYPE=$(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) DEB_BUILD_GNU_TYPE=$(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
@ -12,21 +12,29 @@ ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE))
CROSS= --build $(DEB_BUILD_GNU_TYPE) --host $(DEB_HOST_GNU_TYPE) CROSS= --build $(DEB_BUILD_GNU_TYPE) --host $(DEB_HOST_GNU_TYPE)
endif endif
# This prevents linking uselessly to libicudata and silences a warning
# in the build process.
DEB_LDFLAGS_MAINT_APPEND="-Wl,-as-needed"
# Enable all hardening options (since openttd offers a network-listening
# service that handles untrusted data).
DEB_BUILD_MAINT_OPTIONS=hardening=+all
# Load buildflags (this uses dpkg-buildflags). Note that we don't export
# them, but instead pass them to ./configure explicitly.
include /usr/share/dpkg/buildflags.mk
# Pass custom options to configure. Since it's not autoconf but a custom # Pass custom options to configure. Since it's not autoconf but a custom
# script, some of the option names are slightly different. We also need # script, some of the option names are slightly different. We also need
# to be explicit about the dependencies, in case we're not running in a # to be explicit about the dependencies, in case we're not running in a
# clean build root. # clean build root.
override_dh_auto_configure: 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 --with-lzma --without-iconv --disable-strip CFLAGS="$(CFLAGS) -g" LDFLAGS="$(LDFLAGS) -Wl,-as-needed" ./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 --with-lzma --without-xdg-basedir --without-iconv --disable-strip CFLAGS="$(CFLAGS) $(CPPFLAGS)" CXXFLAGS="$(CXXFLAGS) $(CPPFLAGS)" LDFLAGS="$(LDFLAGS)" CFLAGS_BUILD="$(CFLAGS) $(CPPFLAGS)" CXXFLAGS_BUILD="$(CXXFLAGS) $(CPPFLAGS)" LDFLAGS_BUILD="$(LDFLAGS)"
# Do some extra installation # Do some extra installation
override_dh_auto_install: override_dh_auto_install:
$(MAKE) install DO_NOT_INSTALL_CHANGELOG=1 DO_NOT_INSTALL_LICENSE=1 $(MAKE) install DO_NOT_INSTALL_CHANGELOG=1 DO_NOT_INSTALL_LICENSE=1
# Install the wrapper and make it executable
install -d debian/openttd/usr/share/games/openttd/
install -m755 debian/openttd-wrapper debian/openttd/usr/share/games/openttd/
# Don't do testing. Because the OpenTTD Makefile always does dependency # Don't do testing. Because the OpenTTD Makefile always does dependency
# generation (even on invalid targets), dh_auto_test thinks there is a # generation (even on invalid targets), dh_auto_test thinks there is a
# "test" target, while there isn't. # "test" target, while there isn't.

@ -0,0 +1,3 @@
The files in this directory are not licensed under the same terms as the
rest of OpenTTD. Licensing details can be found in OpenTTD's readme.txt
and in this directory or subdirectories as well.

@ -0,0 +1,3 @@
The files in this directory are not licensed under the same terms as the
rest of OpenTTD. Licensing details can be found in OpenTTD's readme.txt
and in this directory or subdirectories as well.

@ -3,9 +3,9 @@
# $Id$ # $Id$
cd `dirname $0` cd `dirname $0`
cc -o exe2coff exe2coff.c || exit cc -o exe2coff/exe2coff exe2coff/exe2coff.c || exit
cp $1 binary.exe || exit cp $1 binary.exe || exit
./exe2coff binary.exe || exit ./exe2coff/exe2coff binary.exe || exit
cat cwsdstub.exe binary > binary.exe || exit cat cwsdpmi/cwsdstub.exe binary > binary.exe || exit
mv binary.exe $1 mv binary.exe $1
rm binary exe2coff rm binary exe2coff/exe2coff

@ -1,6 +1,6 @@
@echo off @echo off
set OPENTTD_VERSION=1.3.0 set OPENTTD_VERSION=1.6.0
set OPENSFX_VERSION=0.8.0 set OPENSFX_VERSION=0.8.0
set NOSOUND_VERSION=0.8.0 set NOSOUND_VERSION=0.8.0
set OPENGFX_VERSION=1.2.0 set OPENGFX_VERSION=1.2.0

@ -17,9 +17,9 @@
# #
Name: openttd Name: openttd
Version: 1.3.beta2 Version: 1.6.beta1
Release: 0 Release: 0
%define srcver 1.3.0-beta2 %define srcver 1.6.0-beta1
Summary: An open source reimplementation of Chris Sawyer's Transport Tycoon Deluxe Summary: An open source reimplementation of Chris Sawyer's Transport Tycoon Deluxe
License: GPL-2.0 License: GPL-2.0
Group: Amusements/Games/Strategy/Other Group: Amusements/Games/Strategy/Other

@ -1,9 +1,9 @@
# Version numbers to update # Version numbers to update
!define APPV_MAJOR 1 !define APPV_MAJOR 1
!define APPV_MINOR 3 !define APPV_MINOR 6
!define APPV_MAINT 0 !define APPV_MAINT 0
!define APPV_BUILD 5 !define APPV_BUILD 0
!define APPV_EXTRA "" !define APPV_EXTRA "-beta1"
!define APPNAME "OpenTTD" ; Define application name !define APPNAME "OpenTTD" ; Define application name
!define APPVERSION "${APPV_MAJOR}.${APPV_MINOR}.${APPV_MAINT}${APPV_EXTRA}" ; Define application version !define APPVERSION "${APPV_MAJOR}.${APPV_MINOR}.${APPV_MAINT}${APPV_EXTRA}" ; Define application version
@ -545,15 +545,22 @@ FunctionEnd
;------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------
; Determine windows version, returns "win9x" if Win9x/Me/2000/XP SP2- or "winnt" for the rest on the stack ; Determine windows version, returns "win9x" if Win9x/Me/2000/XP SP2- or "winnt" for the rest on the stack
Function GetWindowsVersion Function GetWindowsVersion
GetVersion::WindowsPlatformArchitecture
Pop $R0
IntCmp $R0 64 WinNT 0
ClearErrors ClearErrors
StrCpy $R0 "win9x" StrCpy $R0 "win9x"
${If} ${IsNT} ${If} ${IsNT}
${If} ${IsWinXP} ${If} ${IsWinXP}
${AndIf} ${AtLeastServicePack} 3 ${AndIf} ${AtLeastServicePack} 3
${OrIf} ${AtLeastWin2003} ${OrIf} ${AtLeastWin2003}
StrCpy $R0 "winnt" GoTo WinNT
${EndIf} ${EndIf}
${EndIf} ${EndIf}
GoTo Done
WinNT:
StrCpy $R0 "winnt"
Done:
Push $R0 Push $R0
FunctionEnd FunctionEnd

@ -77,7 +77,7 @@ safety_check() {
done done
} }
grep '\.h' "$ROOT_DIR/source.list" | grep -v '../objs/langs/table/strings.h\|../objs/settings/table/settings.h' | sed 's/ //' | sort > tmp.headers.source.list grep '\.h' "$ROOT_DIR/source.list" | grep -v '../objs/langs/table/strings.h\|../objs/settings/table/settings.h' | sed 's/ //g' | sort > tmp.headers.source.list
find "$ROOT_DIR/src" \( -iname "*.h" -or -iname "*.hpp" \) -and -not -ipath "*/.svn/*" | sed "s~$ROOT_DIR/src/~~" | sort > tmp.headers.src find "$ROOT_DIR/src" \( -iname "*.h" -or -iname "*.hpp" \) -and -not -ipath "*/.svn/*" | sed "s~$ROOT_DIR/src/~~" | sort > tmp.headers.src
if [ -n "`diff tmp.headers.source.list tmp.headers.src`" ]; then if [ -n "`diff tmp.headers.source.list tmp.headers.src`" ]; then
echo "The following headers are missing in source.list and not in /src/ or vice versa." echo "The following headers are missing in source.list and not in /src/ or vice versa."

@ -173,6 +173,7 @@ Function load_main_data(filename, ByRef vcxproj, ByRef filters, ByRef files)
line = "MSVC" Or _ line = "MSVC" Or _
line = "DIRECTMUSIC" Or _ line = "DIRECTMUSIC" Or _
line = "AI" Or _ line = "AI" Or _
line = "SSE" Or _
line = "HAVE_THREAD" _ line = "HAVE_THREAD" _
) Then skip = skip + 1 ) Then skip = skip + 1
deep = deep + 1 deep = deep + 1

@ -227,6 +227,12 @@
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)</AdditionalInputs> <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\bin\lang\korean.lng;%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\bin\lang\korean.lng;%(Outputs)</Outputs>
</CustomBuild> </CustomBuild>
<CustomBuild Include="..\src\lang\latin.txt">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Generating latin language file</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"</Command>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\bin\lang\latin.lng;%(Outputs)</Outputs>
</CustomBuild>
<CustomBuild Include="..\src\lang\latvian.txt"> <CustomBuild Include="..\src\lang\latvian.txt">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Generating latvian language file</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Generating latvian language file</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"</Command> <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"</Command>

@ -97,6 +97,9 @@
<CustomBuild Include="..\src\lang\korean.txt"> <CustomBuild Include="..\src\lang\korean.txt">
<Filter>Translations</Filter> <Filter>Translations</Filter>
</CustomBuild> </CustomBuild>
<CustomBuild Include="..\src\lang\latin.txt">
<Filter>Translations</Filter>
</CustomBuild>
<CustomBuild Include="..\src\lang\latvian.txt"> <CustomBuild Include="..\src\lang\latvian.txt">
<Filter>Translations</Filter> <Filter>Translations</Filter>
</CustomBuild> </CustomBuild>

@ -513,6 +513,21 @@
/> />
</FileConfiguration> </FileConfiguration>
</File> </File>
<File
RelativePath="..\src\lang\latin.txt"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Generating latin 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\latin.lng"
/>
</FileConfiguration>
</File>
<File <File
RelativePath="..\src\lang\latvian.txt" RelativePath="..\src\lang\latvian.txt"
> >

@ -514,6 +514,21 @@
/> />
</FileConfiguration> </FileConfiguration>
</File> </File>
<File
RelativePath="..\src\lang\latin.txt"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Generating latin 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\latin.lng"
/>
</FileConfiguration>
</File>
<File <File
RelativePath="..\src\lang\latvian.txt" RelativePath="..\src\lang\latvian.txt"
> >

@ -102,7 +102,7 @@
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed> <FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers> <OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";WITH_ASSERT;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";WITH_ASSERT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling> <StringPooling>true</StringPooling>
<ExceptionHandling>Sync</ExceptionHandling> <ExceptionHandling>Sync</ExceptionHandling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@ -131,7 +131,7 @@
<Culture>0x0809</Culture> <Culture>0x0809</Culture>
</ResourceCompile> </ResourceCompile>
<Link> <Link>
<AdditionalDependencies>winmm.lib;ws2_32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SuppressStartupBanner>true</SuppressStartupBanner> <SuppressStartupBanner>true</SuppressStartupBanner>
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries> <IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
@ -156,7 +156,7 @@
<AdditionalOptions>/MP %(AdditionalOptions)</AdditionalOptions> <AdditionalOptions>/MP %(AdditionalOptions)</AdditionalOptions>
<Optimization>Disabled</Optimization> <Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PrecompiledHeader> <PrecompiledHeader>
@ -176,7 +176,7 @@
<Culture>0x0809</Culture> <Culture>0x0809</Culture>
</ResourceCompile> </ResourceCompile>
<Link> <Link>
<AdditionalDependencies>winmm.lib;ws2_32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SuppressStartupBanner>true</SuppressStartupBanner> <SuppressStartupBanner>true</SuppressStartupBanner>
<IgnoreSpecificDefaultLibraries>LIBCMT.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries> <IgnoreSpecificDefaultLibraries>LIBCMT.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
@ -204,7 +204,7 @@
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed> <FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers> <OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;WITH_ASSERT;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;WITH_ASSERT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling> <StringPooling>true</StringPooling>
<ExceptionHandling>Sync</ExceptionHandling> <ExceptionHandling>Sync</ExceptionHandling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@ -233,7 +233,7 @@
<Culture>0x0809</Culture> <Culture>0x0809</Culture>
</ResourceCompile> </ResourceCompile>
<Link> <Link>
<AdditionalDependencies>winmm.lib;ws2_32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SuppressStartupBanner>true</SuppressStartupBanner> <SuppressStartupBanner>true</SuppressStartupBanner>
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries> <IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
@ -256,7 +256,7 @@
<AdditionalOptions>/MP %(AdditionalOptions)</AdditionalOptions> <AdditionalOptions>/MP %(AdditionalOptions)</AdditionalOptions>
<Optimization>Disabled</Optimization> <Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PrecompiledHeader> <PrecompiledHeader>
@ -280,7 +280,7 @@
<Culture>0x0809</Culture> <Culture>0x0809</Culture>
</ResourceCompile> </ResourceCompile>
<Link> <Link>
<AdditionalDependencies>winmm.lib;ws2_32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SuppressStartupBanner>true</SuppressStartupBanner> <SuppressStartupBanner>true</SuppressStartupBanner>
<IgnoreSpecificDefaultLibraries>LIBCMT.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries> <IgnoreSpecificDefaultLibraries>LIBCMT.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
@ -304,12 +304,14 @@
<ClCompile Include="..\src\command.cpp" /> <ClCompile Include="..\src\command.cpp" />
<ClCompile Include="..\src\console.cpp" /> <ClCompile Include="..\src\console.cpp" />
<ClCompile Include="..\src\console_cmds.cpp" /> <ClCompile Include="..\src\console_cmds.cpp" />
<ClCompile Include="..\src\cpu.cpp" />
<ClCompile Include="..\src\crashlog.cpp" /> <ClCompile Include="..\src\crashlog.cpp" />
<ClCompile Include="..\src\currency.cpp" /> <ClCompile Include="..\src\currency.cpp" />
<ClCompile Include="..\src\date.cpp" /> <ClCompile Include="..\src\date.cpp" />
<ClCompile Include="..\src\debug.cpp" /> <ClCompile Include="..\src\debug.cpp" />
<ClCompile Include="..\src\dedicated.cpp" /> <ClCompile Include="..\src\dedicated.cpp" />
<ClCompile Include="..\src\depot.cpp" /> <ClCompile Include="..\src\depot.cpp" />
<ClCompile Include="..\src\disaster_vehicle.cpp" />
<ClCompile Include="..\src\driver.cpp" /> <ClCompile Include="..\src\driver.cpp" />
<ClCompile Include="..\src\economy.cpp" /> <ClCompile Include="..\src\economy.cpp" />
<ClCompile Include="..\src\effectvehicle.cpp" /> <ClCompile Include="..\src\effectvehicle.cpp" />
@ -339,6 +341,7 @@
<ClCompile Include="..\src\linkgraph\linkgraphjob.cpp" /> <ClCompile Include="..\src\linkgraph\linkgraphjob.cpp" />
<ClCompile Include="..\src\linkgraph\linkgraphschedule.cpp" /> <ClCompile Include="..\src\linkgraph\linkgraphschedule.cpp" />
<ClCompile Include="..\src\linkgraph\mcf.cpp" /> <ClCompile Include="..\src\linkgraph\mcf.cpp" />
<ClCompile Include="..\src\linkgraph\refresh.cpp" />
<ClCompile Include="..\src\map.cpp" /> <ClCompile Include="..\src\map.cpp" />
<ClCompile Include="..\src\misc.cpp" /> <ClCompile Include="..\src\misc.cpp" />
<ClCompile Include="..\src\mixer.cpp" /> <ClCompile Include="..\src\mixer.cpp" />
@ -353,7 +356,6 @@
<ClCompile Include="..\src\network\network_udp.cpp" /> <ClCompile Include="..\src\network\network_udp.cpp" />
<ClCompile Include="..\src\openttd.cpp" /> <ClCompile Include="..\src\openttd.cpp" />
<ClCompile Include="..\src\order_backup.cpp" /> <ClCompile Include="..\src\order_backup.cpp" />
<ClCompile Include="..\src\os_timer.cpp" />
<ClCompile Include="..\src\pbs.cpp" /> <ClCompile Include="..\src\pbs.cpp" />
<ClCompile Include="..\src\progress.cpp" /> <ClCompile Include="..\src\progress.cpp" />
<ClCompile Include="..\src\rail.cpp" /> <ClCompile Include="..\src\rail.cpp" />
@ -384,6 +386,7 @@
<ClCompile Include="..\src\vehicle.cpp" /> <ClCompile Include="..\src\vehicle.cpp" />
<ClCompile Include="..\src\vehiclelist.cpp" /> <ClCompile Include="..\src\vehiclelist.cpp" />
<ClCompile Include="..\src\viewport.cpp" /> <ClCompile Include="..\src\viewport.cpp" />
<ClCompile Include="..\src\viewport_sprite_sorter_sse4.cpp" />
<ClCompile Include="..\src\waypoint.cpp" /> <ClCompile Include="..\src\waypoint.cpp" />
<ClCompile Include="..\src\widget.cpp" /> <ClCompile Include="..\src\widget.cpp" />
<ClCompile Include="..\src\window.cpp" /> <ClCompile Include="..\src\window.cpp" />
@ -421,6 +424,7 @@
<ClInclude Include="..\src\console_gui.h" /> <ClInclude Include="..\src\console_gui.h" />
<ClInclude Include="..\src\console_internal.h" /> <ClInclude Include="..\src\console_internal.h" />
<ClInclude Include="..\src\console_type.h" /> <ClInclude Include="..\src\console_type.h" />
<ClInclude Include="..\src\cpu.h" />
<ClInclude Include="..\src\crashlog.h" /> <ClInclude Include="..\src\crashlog.h" />
<ClInclude Include="..\src\currency.h" /> <ClInclude Include="..\src\currency.h" />
<ClInclude Include="..\src\date_func.h" /> <ClInclude Include="..\src\date_func.h" />
@ -434,6 +438,7 @@
<ClInclude Include="..\src\depot_type.h" /> <ClInclude Include="..\src\depot_type.h" />
<ClInclude Include="..\src\direction_func.h" /> <ClInclude Include="..\src\direction_func.h" />
<ClInclude Include="..\src\direction_type.h" /> <ClInclude Include="..\src\direction_type.h" />
<ClInclude Include="..\src\disaster_vehicle.h" />
<ClInclude Include="..\src\music\dmusic.h" /> <ClInclude Include="..\src\music\dmusic.h" />
<ClInclude Include="..\src\driver.h" /> <ClInclude Include="..\src\driver.h" />
<ClInclude Include="..\src\economy_base.h" /> <ClInclude Include="..\src\economy_base.h" />
@ -491,6 +496,7 @@
<ClInclude Include="..\src\linkgraph\linkgraphjob_base.h" /> <ClInclude Include="..\src\linkgraph\linkgraphjob_base.h" />
<ClInclude Include="..\src\linkgraph\linkgraphschedule.h" /> <ClInclude Include="..\src\linkgraph\linkgraphschedule.h" />
<ClInclude Include="..\src\linkgraph\mcf.h" /> <ClInclude Include="..\src\linkgraph\mcf.h" />
<ClInclude Include="..\src\linkgraph\refresh.h" />
<ClInclude Include="..\src\livery.h" /> <ClInclude Include="..\src\livery.h" />
<ClInclude Include="..\src\map_func.h" /> <ClInclude Include="..\src\map_func.h" />
<ClInclude Include="..\src\map_type.h" /> <ClInclude Include="..\src\map_type.h" />
@ -564,6 +570,7 @@
<ClInclude Include="..\src\road_type.h" /> <ClInclude Include="..\src\road_type.h" />
<ClInclude Include="..\src\roadstop_base.h" /> <ClInclude Include="..\src\roadstop_base.h" />
<ClInclude Include="..\src\roadveh.h" /> <ClInclude Include="..\src\roadveh.h" />
<ClInclude Include="..\src\safeguards.h" />
<ClInclude Include="..\src\screenshot.h" /> <ClInclude Include="..\src\screenshot.h" />
<ClInclude Include="..\src\sdl.h" /> <ClInclude Include="..\src\sdl.h" />
<ClInclude Include="..\src\sound\sdl_s.h" /> <ClInclude Include="..\src\sound\sdl_s.h" />
@ -595,6 +602,7 @@
<ClInclude Include="..\src\story_base.h" /> <ClInclude Include="..\src\story_base.h" />
<ClInclude Include="..\src\story_type.h" /> <ClInclude Include="..\src\story_type.h" />
<ClInclude Include="..\src\strgen\strgen.h" /> <ClInclude Include="..\src\strgen\strgen.h" />
<ClInclude Include="..\src\string_base.h" />
<ClInclude Include="..\src\string_func.h" /> <ClInclude Include="..\src\string_func.h" />
<ClInclude Include="..\src\string_type.h" /> <ClInclude Include="..\src\string_type.h" />
<ClInclude Include="..\src\stringfilter_type.h" /> <ClInclude Include="..\src\stringfilter_type.h" />
@ -637,6 +645,7 @@
<ClInclude Include="..\src\vehicle_type.h" /> <ClInclude Include="..\src\vehicle_type.h" />
<ClInclude Include="..\src\vehiclelist.h" /> <ClInclude Include="..\src\vehiclelist.h" />
<ClInclude Include="..\src\viewport_func.h" /> <ClInclude Include="..\src\viewport_func.h" />
<ClInclude Include="..\src\viewport_sprite_sorter.h" />
<ClInclude Include="..\src\viewport_type.h" /> <ClInclude Include="..\src\viewport_type.h" />
<ClInclude Include="..\src\water.h" /> <ClInclude Include="..\src\water.h" />
<ClInclude Include="..\src\waypoint_base.h" /> <ClInclude Include="..\src\waypoint_base.h" />
@ -675,6 +684,7 @@
<ClInclude Include="..\src\core\random_func.hpp" /> <ClInclude Include="..\src\core\random_func.hpp" />
<ClInclude Include="..\src\core\smallmap_type.hpp" /> <ClInclude Include="..\src\core\smallmap_type.hpp" />
<ClInclude Include="..\src\core\smallmatrix_type.hpp" /> <ClInclude Include="..\src\core\smallmatrix_type.hpp" />
<ClInclude Include="..\src\core\smallstack_type.hpp" />
<ClInclude Include="..\src\core\smallvec_type.hpp" /> <ClInclude Include="..\src\core\smallvec_type.hpp" />
<ClInclude Include="..\src\core\sort_func.hpp" /> <ClInclude Include="..\src\core\sort_func.hpp" />
<ClInclude Include="..\src\core\string_compare_type.hpp" /> <ClInclude Include="..\src\core\string_compare_type.hpp" />
@ -797,7 +807,6 @@
<ClCompile Include="..\src\clear_cmd.cpp" /> <ClCompile Include="..\src\clear_cmd.cpp" />
<ClCompile Include="..\src\company_cmd.cpp" /> <ClCompile Include="..\src\company_cmd.cpp" />
<ClCompile Include="..\src\depot_cmd.cpp" /> <ClCompile Include="..\src\depot_cmd.cpp" />
<ClCompile Include="..\src\disaster_cmd.cpp" />
<ClCompile Include="..\src\group_cmd.cpp" /> <ClCompile Include="..\src\group_cmd.cpp" />
<ClCompile Include="..\src\industry_cmd.cpp" /> <ClCompile Include="..\src\industry_cmd.cpp" />
<ClCompile Include="..\src\misc_cmd.cpp" /> <ClCompile Include="..\src\misc_cmd.cpp" />
@ -874,6 +883,7 @@
<ClInclude Include="..\src\table\elrail_data.h" /> <ClInclude Include="..\src\table\elrail_data.h" />
<ClInclude Include="..\src\table\engines.h" /> <ClInclude Include="..\src\table\engines.h" />
<ClInclude Include="..\src\table\genland.h" /> <ClInclude Include="..\src\table\genland.h" />
<ClInclude Include="..\src\table\heightmap_colours.h" />
<ClInclude Include="..\src\table\industry_land.h" /> <ClInclude Include="..\src\table\industry_land.h" />
<ClInclude Include="..\src\table\landscape_sprite.h" /> <ClInclude Include="..\src\table\landscape_sprite.h" />
<ClInclude Include="..\src\table\newgrf_debug_data.h" /> <ClInclude Include="..\src\table\newgrf_debug_data.h" />
@ -888,6 +898,7 @@
<ClInclude Include="..\src\table\sprites.h" /> <ClInclude Include="..\src\table\sprites.h" />
<ClInclude Include="..\src\table\station_land.h" /> <ClInclude Include="..\src\table\station_land.h" />
<ClInclude Include="..\src\table\strgen_tables.h" /> <ClInclude Include="..\src\table\strgen_tables.h" />
<ClInclude Include="..\src\table\string_colours.h" />
<ClInclude Include="..\src\..\objs\langs\table\strings.h" /> <ClInclude Include="..\src\..\objs\langs\table\strings.h" />
<ClInclude Include="..\src\table\town_land.h" /> <ClInclude Include="..\src\table\town_land.h" />
<ClInclude Include="..\src\table\townname.h" /> <ClInclude Include="..\src\table\townname.h" />
@ -943,13 +954,8 @@
<ClInclude Include="..\src\3rdparty\squirrel\squirrel\sqpcheader.h" /> <ClInclude Include="..\src\3rdparty\squirrel\squirrel\sqpcheader.h" />
<ClInclude Include="..\src\3rdparty\squirrel\squirrel\sqstate.h" /> <ClInclude Include="..\src\3rdparty\squirrel\squirrel\sqstate.h" />
<ClInclude Include="..\src\3rdparty\squirrel\include\sqstdaux.h" /> <ClInclude Include="..\src\3rdparty\squirrel\include\sqstdaux.h" />
<ClInclude Include="..\src\3rdparty\squirrel\include\sqstdblob.h" />
<ClInclude Include="..\src\3rdparty\squirrel\sqstdlib\sqstdblobimpl.h" />
<ClInclude Include="..\src\3rdparty\squirrel\include\sqstdio.h" />
<ClInclude Include="..\src\3rdparty\squirrel\include\sqstdmath.h" /> <ClInclude Include="..\src\3rdparty\squirrel\include\sqstdmath.h" />
<ClInclude Include="..\src\3rdparty\squirrel\sqstdlib\sqstdstream.h" />
<ClInclude Include="..\src\3rdparty\squirrel\include\sqstdstring.h" /> <ClInclude Include="..\src\3rdparty\squirrel\include\sqstdstring.h" />
<ClInclude Include="..\src\3rdparty\squirrel\include\sqstdsystem.h" />
<ClInclude Include="..\src\3rdparty\squirrel\squirrel\sqstring.h" /> <ClInclude Include="..\src\3rdparty\squirrel\squirrel\sqstring.h" />
<ClInclude Include="..\src\3rdparty\squirrel\squirrel\sqtable.h" /> <ClInclude Include="..\src\3rdparty\squirrel\squirrel\sqtable.h" />
<ClInclude Include="..\src\3rdparty\squirrel\include\squirrel.h" /> <ClInclude Include="..\src\3rdparty\squirrel\include\squirrel.h" />
@ -1029,6 +1035,8 @@
<ClInclude Include="..\src\script\api\script_station.hpp" /> <ClInclude Include="..\src\script\api\script_station.hpp" />
<ClInclude Include="..\src\script\api\script_stationlist.hpp" /> <ClInclude Include="..\src\script\api\script_stationlist.hpp" />
<ClInclude Include="..\src\script\api\script_story_page.hpp" /> <ClInclude Include="..\src\script\api\script_story_page.hpp" />
<ClInclude Include="..\src\script\api\script_storypagelist.hpp" />
<ClInclude Include="..\src\script\api\script_storypageelementlist.hpp" />
<ClInclude Include="..\src\script\api\script_subsidy.hpp" /> <ClInclude Include="..\src\script\api\script_subsidy.hpp" />
<ClInclude Include="..\src\script\api\script_subsidylist.hpp" /> <ClInclude Include="..\src\script\api\script_subsidylist.hpp" />
<ClInclude Include="..\src\script\api\script_testmode.hpp" /> <ClInclude Include="..\src\script\api\script_testmode.hpp" />
@ -1091,6 +1099,8 @@
<ClCompile Include="..\src\script\api\script_station.cpp" /> <ClCompile Include="..\src\script\api\script_station.cpp" />
<ClCompile Include="..\src\script\api\script_stationlist.cpp" /> <ClCompile Include="..\src\script\api\script_stationlist.cpp" />
<ClCompile Include="..\src\script\api\script_story_page.cpp" /> <ClCompile Include="..\src\script\api\script_story_page.cpp" />
<ClCompile Include="..\src\script\api\script_storypagelist.cpp" />
<ClCompile Include="..\src\script\api\script_storypageelementlist.cpp" />
<ClCompile Include="..\src\script\api\script_subsidy.cpp" /> <ClCompile Include="..\src\script\api\script_subsidy.cpp" />
<ClCompile Include="..\src\script\api\script_subsidylist.cpp" /> <ClCompile Include="..\src\script\api\script_subsidylist.cpp" />
<ClCompile Include="..\src\script\api\script_testmode.cpp" /> <ClCompile Include="..\src\script\api\script_testmode.cpp" />
@ -1108,12 +1118,22 @@
<ClCompile Include="..\src\script\api\script_window.cpp" /> <ClCompile Include="..\src\script\api\script_window.cpp" />
<ClCompile Include="..\src\blitter\32bpp_anim.cpp" /> <ClCompile Include="..\src\blitter\32bpp_anim.cpp" />
<ClInclude Include="..\src\blitter\32bpp_anim.hpp" /> <ClInclude Include="..\src\blitter\32bpp_anim.hpp" />
<ClCompile Include="..\src\blitter\32bpp_anim_sse4.cpp" />
<ClInclude Include="..\src\blitter\32bpp_anim_sse4.hpp" />
<ClCompile Include="..\src\blitter\32bpp_base.cpp" /> <ClCompile Include="..\src\blitter\32bpp_base.cpp" />
<ClInclude Include="..\src\blitter\32bpp_base.hpp" /> <ClInclude Include="..\src\blitter\32bpp_base.hpp" />
<ClCompile Include="..\src\blitter\32bpp_optimized.cpp" /> <ClCompile Include="..\src\blitter\32bpp_optimized.cpp" />
<ClInclude Include="..\src\blitter\32bpp_optimized.hpp" /> <ClInclude Include="..\src\blitter\32bpp_optimized.hpp" />
<ClCompile Include="..\src\blitter\32bpp_simple.cpp" /> <ClCompile Include="..\src\blitter\32bpp_simple.cpp" />
<ClInclude Include="..\src\blitter\32bpp_simple.hpp" /> <ClInclude Include="..\src\blitter\32bpp_simple.hpp" />
<ClInclude Include="..\src\blitter\32bpp_sse_func.hpp" />
<ClInclude Include="..\src\blitter\32bpp_sse_type.h" />
<ClCompile Include="..\src\blitter\32bpp_sse2.cpp" />
<ClInclude Include="..\src\blitter\32bpp_sse2.hpp" />
<ClCompile Include="..\src\blitter\32bpp_sse4.cpp" />
<ClInclude Include="..\src\blitter\32bpp_sse4.hpp" />
<ClCompile Include="..\src\blitter\32bpp_ssse3.cpp" />
<ClInclude Include="..\src\blitter\32bpp_ssse3.hpp" />
<ClCompile Include="..\src\blitter\8bpp_base.cpp" /> <ClCompile Include="..\src\blitter\8bpp_base.cpp" />
<ClInclude Include="..\src\blitter\8bpp_base.hpp" /> <ClInclude Include="..\src\blitter\8bpp_base.hpp" />
<ClCompile Include="..\src\blitter\8bpp_optimized.cpp" /> <ClCompile Include="..\src\blitter\8bpp_optimized.cpp" />
@ -1235,6 +1255,7 @@
<ClCompile Include="..\src\pathfinder\yapf\yapf_rail.cpp" /> <ClCompile Include="..\src\pathfinder\yapf\yapf_rail.cpp" />
<ClCompile Include="..\src\pathfinder\yapf\yapf_road.cpp" /> <ClCompile Include="..\src\pathfinder\yapf\yapf_road.cpp" />
<ClCompile Include="..\src\pathfinder\yapf\yapf_ship.cpp" /> <ClCompile Include="..\src\pathfinder\yapf\yapf_ship.cpp" />
<ClInclude Include="..\src\pathfinder\yapf\yapf_type.hpp" />
<ClCompile Include="..\src\video\dedicated_v.cpp" /> <ClCompile Include="..\src\video\dedicated_v.cpp" />
<ClCompile Include="..\src\video\null_v.cpp" /> <ClCompile Include="..\src\video\null_v.cpp" />
<ClCompile Include="..\src\video\sdl_v.cpp" /> <ClCompile Include="..\src\video\sdl_v.cpp" />

@ -141,6 +141,9 @@
<ClCompile Include="..\src\console_cmds.cpp"> <ClCompile Include="..\src\console_cmds.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\src\cpu.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\crashlog.cpp"> <ClCompile Include="..\src\crashlog.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
@ -159,6 +162,9 @@
<ClCompile Include="..\src\depot.cpp"> <ClCompile Include="..\src\depot.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\src\disaster_vehicle.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\driver.cpp"> <ClCompile Include="..\src\driver.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
@ -246,6 +252,9 @@
<ClCompile Include="..\src\linkgraph\mcf.cpp"> <ClCompile Include="..\src\linkgraph\mcf.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\src\linkgraph\refresh.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\map.cpp"> <ClCompile Include="..\src\map.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
@ -288,9 +297,6 @@
<ClCompile Include="..\src\order_backup.cpp"> <ClCompile Include="..\src\order_backup.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\src\os_timer.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\pbs.cpp"> <ClCompile Include="..\src\pbs.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
@ -381,6 +387,9 @@
<ClCompile Include="..\src\viewport.cpp"> <ClCompile Include="..\src\viewport.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\src\viewport_sprite_sorter_sse4.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\waypoint.cpp"> <ClCompile Include="..\src\waypoint.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
@ -492,6 +501,9 @@
<ClInclude Include="..\src\console_type.h"> <ClInclude Include="..\src\console_type.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\src\cpu.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\src\crashlog.h"> <ClInclude Include="..\src\crashlog.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
@ -531,6 +543,9 @@
<ClInclude Include="..\src\direction_type.h"> <ClInclude Include="..\src\direction_type.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\src\disaster_vehicle.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\src\music\dmusic.h"> <ClInclude Include="..\src\music\dmusic.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
@ -702,6 +717,9 @@
<ClInclude Include="..\src\linkgraph\mcf.h"> <ClInclude Include="..\src\linkgraph\mcf.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\src\linkgraph\refresh.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\src\livery.h"> <ClInclude Include="..\src\livery.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
@ -921,6 +939,9 @@
<ClInclude Include="..\src\roadveh.h"> <ClInclude Include="..\src\roadveh.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\src\safeguards.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\src\screenshot.h"> <ClInclude Include="..\src\screenshot.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
@ -1014,6 +1035,9 @@
<ClInclude Include="..\src\strgen\strgen.h"> <ClInclude Include="..\src\strgen\strgen.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\src\string_base.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\src\string_func.h"> <ClInclude Include="..\src\string_func.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
@ -1140,6 +1164,9 @@
<ClInclude Include="..\src\viewport_func.h"> <ClInclude Include="..\src\viewport_func.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\src\viewport_sprite_sorter.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\src\viewport_type.h"> <ClInclude Include="..\src\viewport_type.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
@ -1254,6 +1281,9 @@
<ClInclude Include="..\src\core\smallmatrix_type.hpp"> <ClInclude Include="..\src\core\smallmatrix_type.hpp">
<Filter>Core Source Code</Filter> <Filter>Core Source Code</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\src\core\smallstack_type.hpp">
<Filter>Core Source Code</Filter>
</ClInclude>
<ClInclude Include="..\src\core\smallvec_type.hpp"> <ClInclude Include="..\src\core\smallvec_type.hpp">
<Filter>Core Source Code</Filter> <Filter>Core Source Code</Filter>
</ClInclude> </ClInclude>
@ -1620,9 +1650,6 @@
<ClCompile Include="..\src\depot_cmd.cpp"> <ClCompile Include="..\src\depot_cmd.cpp">
<Filter>Command handlers</Filter> <Filter>Command handlers</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\src\disaster_cmd.cpp">
<Filter>Command handlers</Filter>
</ClCompile>
<ClCompile Include="..\src\group_cmd.cpp"> <ClCompile Include="..\src\group_cmd.cpp">
<Filter>Command handlers</Filter> <Filter>Command handlers</Filter>
</ClCompile> </ClCompile>
@ -1851,6 +1878,9 @@
<ClInclude Include="..\src\table\genland.h"> <ClInclude Include="..\src\table\genland.h">
<Filter>Tables</Filter> <Filter>Tables</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\src\table\heightmap_colours.h">
<Filter>Tables</Filter>
</ClInclude>
<ClInclude Include="..\src\table\industry_land.h"> <ClInclude Include="..\src\table\industry_land.h">
<Filter>Tables</Filter> <Filter>Tables</Filter>
</ClInclude> </ClInclude>
@ -1893,6 +1923,9 @@
<ClInclude Include="..\src\table\strgen_tables.h"> <ClInclude Include="..\src\table\strgen_tables.h">
<Filter>Tables</Filter> <Filter>Tables</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\src\table\string_colours.h">
<Filter>Tables</Filter>
</ClInclude>
<ClInclude Include="..\src\..\objs\langs\table\strings.h"> <ClInclude Include="..\src\..\objs\langs\table\strings.h">
<Filter>Tables</Filter> <Filter>Tables</Filter>
</ClInclude> </ClInclude>
@ -2058,27 +2091,12 @@
<ClInclude Include="..\src\3rdparty\squirrel\include\sqstdaux.h"> <ClInclude Include="..\src\3rdparty\squirrel\include\sqstdaux.h">
<Filter>Squirrel headers</Filter> <Filter>Squirrel headers</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\src\3rdparty\squirrel\include\sqstdblob.h">
<Filter>Squirrel headers</Filter>
</ClInclude>
<ClInclude Include="..\src\3rdparty\squirrel\sqstdlib\sqstdblobimpl.h">
<Filter>Squirrel headers</Filter>
</ClInclude>
<ClInclude Include="..\src\3rdparty\squirrel\include\sqstdio.h">
<Filter>Squirrel headers</Filter>
</ClInclude>
<ClInclude Include="..\src\3rdparty\squirrel\include\sqstdmath.h"> <ClInclude Include="..\src\3rdparty\squirrel\include\sqstdmath.h">
<Filter>Squirrel headers</Filter> <Filter>Squirrel headers</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\src\3rdparty\squirrel\sqstdlib\sqstdstream.h">
<Filter>Squirrel headers</Filter>
</ClInclude>
<ClInclude Include="..\src\3rdparty\squirrel\include\sqstdstring.h"> <ClInclude Include="..\src\3rdparty\squirrel\include\sqstdstring.h">
<Filter>Squirrel headers</Filter> <Filter>Squirrel headers</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\src\3rdparty\squirrel\include\sqstdsystem.h">
<Filter>Squirrel headers</Filter>
</ClInclude>
<ClInclude Include="..\src\3rdparty\squirrel\squirrel\sqstring.h"> <ClInclude Include="..\src\3rdparty\squirrel\squirrel\sqstring.h">
<Filter>Squirrel headers</Filter> <Filter>Squirrel headers</Filter>
</ClInclude> </ClInclude>
@ -2316,6 +2334,12 @@
<ClInclude Include="..\src\script\api\script_story_page.hpp"> <ClInclude Include="..\src\script\api\script_story_page.hpp">
<Filter>Script API</Filter> <Filter>Script API</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\src\script\api\script_storypagelist.hpp">
<Filter>Script API</Filter>
</ClInclude>
<ClInclude Include="..\src\script\api\script_storypageelementlist.hpp">
<Filter>Script API</Filter>
</ClInclude>
<ClInclude Include="..\src\script\api\script_subsidy.hpp"> <ClInclude Include="..\src\script\api\script_subsidy.hpp">
<Filter>Script API</Filter> <Filter>Script API</Filter>
</ClInclude> </ClInclude>
@ -2502,6 +2526,12 @@
<ClCompile Include="..\src\script\api\script_story_page.cpp"> <ClCompile Include="..\src\script\api\script_story_page.cpp">
<Filter>Script API Implementation</Filter> <Filter>Script API Implementation</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\src\script\api\script_storypagelist.cpp">
<Filter>Script API Implementation</Filter>
</ClCompile>
<ClCompile Include="..\src\script\api\script_storypageelementlist.cpp">
<Filter>Script API Implementation</Filter>
</ClCompile>
<ClCompile Include="..\src\script\api\script_subsidy.cpp"> <ClCompile Include="..\src\script\api\script_subsidy.cpp">
<Filter>Script API Implementation</Filter> <Filter>Script API Implementation</Filter>
</ClCompile> </ClCompile>
@ -2553,6 +2583,12 @@
<ClInclude Include="..\src\blitter\32bpp_anim.hpp"> <ClInclude Include="..\src\blitter\32bpp_anim.hpp">
<Filter>Blitters</Filter> <Filter>Blitters</Filter>
</ClInclude> </ClInclude>
<ClCompile Include="..\src\blitter\32bpp_anim_sse4.cpp">
<Filter>Blitters</Filter>
</ClCompile>
<ClInclude Include="..\src\blitter\32bpp_anim_sse4.hpp">
<Filter>Blitters</Filter>
</ClInclude>
<ClCompile Include="..\src\blitter\32bpp_base.cpp"> <ClCompile Include="..\src\blitter\32bpp_base.cpp">
<Filter>Blitters</Filter> <Filter>Blitters</Filter>
</ClCompile> </ClCompile>
@ -2571,6 +2607,30 @@
<ClInclude Include="..\src\blitter\32bpp_simple.hpp"> <ClInclude Include="..\src\blitter\32bpp_simple.hpp">
<Filter>Blitters</Filter> <Filter>Blitters</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\src\blitter\32bpp_sse_func.hpp">
<Filter>Blitters</Filter>
</ClInclude>
<ClInclude Include="..\src\blitter\32bpp_sse_type.h">
<Filter>Blitters</Filter>
</ClInclude>
<ClCompile Include="..\src\blitter\32bpp_sse2.cpp">
<Filter>Blitters</Filter>
</ClCompile>
<ClInclude Include="..\src\blitter\32bpp_sse2.hpp">
<Filter>Blitters</Filter>
</ClInclude>
<ClCompile Include="..\src\blitter\32bpp_sse4.cpp">
<Filter>Blitters</Filter>
</ClCompile>
<ClInclude Include="..\src\blitter\32bpp_sse4.hpp">
<Filter>Blitters</Filter>
</ClInclude>
<ClCompile Include="..\src\blitter\32bpp_ssse3.cpp">
<Filter>Blitters</Filter>
</ClCompile>
<ClInclude Include="..\src\blitter\32bpp_ssse3.hpp">
<Filter>Blitters</Filter>
</ClInclude>
<ClCompile Include="..\src\blitter\8bpp_base.cpp"> <ClCompile Include="..\src\blitter\8bpp_base.cpp">
<Filter>Blitters</Filter> <Filter>Blitters</Filter>
</ClCompile> </ClCompile>
@ -2934,6 +2994,9 @@
<ClCompile Include="..\src\pathfinder\yapf\yapf_ship.cpp"> <ClCompile Include="..\src\pathfinder\yapf\yapf_ship.cpp">
<Filter>YAPF</Filter> <Filter>YAPF</Filter>
</ClCompile> </ClCompile>
<ClInclude Include="..\src\pathfinder\yapf\yapf_type.hpp">
<Filter>YAPF</Filter>
</ClInclude>
<ClCompile Include="..\src\video\dedicated_v.cpp"> <ClCompile Include="..\src\video\dedicated_v.cpp">
<Filter>Video</Filter> <Filter>Video</Filter>
</ClCompile> </ClCompile>

@ -102,7 +102,7 @@
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed> <FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers> <OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";WITH_ASSERT;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";WITH_ASSERT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling> <StringPooling>true</StringPooling>
<ExceptionHandling>Sync</ExceptionHandling> <ExceptionHandling>Sync</ExceptionHandling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@ -131,7 +131,7 @@
<Culture>0x0809</Culture> <Culture>0x0809</Culture>
</ResourceCompile> </ResourceCompile>
<Link> <Link>
<AdditionalDependencies>winmm.lib;ws2_32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SuppressStartupBanner>true</SuppressStartupBanner> <SuppressStartupBanner>true</SuppressStartupBanner>
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries> <IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
@ -156,7 +156,7 @@
<AdditionalOptions>/MP %(AdditionalOptions)</AdditionalOptions> <AdditionalOptions>/MP %(AdditionalOptions)</AdditionalOptions>
<Optimization>Disabled</Optimization> <Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PrecompiledHeader> <PrecompiledHeader>
@ -176,7 +176,7 @@
<Culture>0x0809</Culture> <Culture>0x0809</Culture>
</ResourceCompile> </ResourceCompile>
<Link> <Link>
<AdditionalDependencies>winmm.lib;ws2_32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SuppressStartupBanner>true</SuppressStartupBanner> <SuppressStartupBanner>true</SuppressStartupBanner>
<IgnoreSpecificDefaultLibraries>LIBCMT.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries> <IgnoreSpecificDefaultLibraries>LIBCMT.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
@ -204,7 +204,7 @@
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed> <FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers> <OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;WITH_ASSERT;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;WITH_ASSERT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling> <StringPooling>true</StringPooling>
<ExceptionHandling>Sync</ExceptionHandling> <ExceptionHandling>Sync</ExceptionHandling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@ -233,7 +233,7 @@
<Culture>0x0809</Culture> <Culture>0x0809</Culture>
</ResourceCompile> </ResourceCompile>
<Link> <Link>
<AdditionalDependencies>winmm.lib;ws2_32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SuppressStartupBanner>true</SuppressStartupBanner> <SuppressStartupBanner>true</SuppressStartupBanner>
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries> <IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
@ -256,7 +256,7 @@
<AdditionalOptions>/MP %(AdditionalOptions)</AdditionalOptions> <AdditionalOptions>/MP %(AdditionalOptions)</AdditionalOptions>
<Optimization>Disabled</Optimization> <Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PrecompiledHeader> <PrecompiledHeader>
@ -280,7 +280,7 @@
<Culture>0x0809</Culture> <Culture>0x0809</Culture>
</ResourceCompile> </ResourceCompile>
<Link> <Link>
<AdditionalDependencies>winmm.lib;ws2_32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SuppressStartupBanner>true</SuppressStartupBanner> <SuppressStartupBanner>true</SuppressStartupBanner>
<IgnoreSpecificDefaultLibraries>LIBCMT.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries> <IgnoreSpecificDefaultLibraries>LIBCMT.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>

@ -52,7 +52,7 @@
FavorSizeOrSpeed="2" FavorSizeOrSpeed="2"
OmitFramePointers="true" OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include" AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT"
StringPooling="true" StringPooling="true"
ExceptionHandling="1" ExceptionHandling="1"
RuntimeLibrary="0" RuntimeLibrary="0"
@ -87,7 +87,7 @@
/> />
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib" AdditionalDependencies="winmm.lib ws2_32.lib imm32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
LinkIncremental="1" LinkIncremental="1"
SuppressStartupBanner="true" SuppressStartupBanner="true"
IgnoreDefaultLibraryNames="" IgnoreDefaultLibraryNames=""
@ -156,7 +156,7 @@
AdditionalOptions="/MP" AdditionalOptions="/MP"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include" AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;" PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;"
BasicRuntimeChecks="3" BasicRuntimeChecks="3"
RuntimeLibrary="1" RuntimeLibrary="1"
UsePrecompiledHeader="0" UsePrecompiledHeader="0"
@ -184,7 +184,7 @@
/> />
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib" AdditionalDependencies="winmm.lib ws2_32.lib imm32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
LinkIncremental="0" LinkIncremental="0"
SuppressStartupBanner="true" SuppressStartupBanner="true"
IgnoreDefaultLibraryNames="LIBCMT.lib" IgnoreDefaultLibraryNames="LIBCMT.lib"
@ -257,7 +257,7 @@
FavorSizeOrSpeed="2" FavorSizeOrSpeed="2"
OmitFramePointers="true" OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include" AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64;WITH_ASSERT" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64;WITH_ASSERT"
StringPooling="true" StringPooling="true"
ExceptionHandling="1" ExceptionHandling="1"
RuntimeLibrary="0" RuntimeLibrary="0"
@ -292,7 +292,7 @@
/> />
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib" AdditionalDependencies="winmm.lib ws2_32.lib imm32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
LinkIncremental="1" LinkIncremental="1"
SuppressStartupBanner="true" SuppressStartupBanner="true"
IgnoreDefaultLibraryNames="" IgnoreDefaultLibraryNames=""
@ -362,7 +362,7 @@
AdditionalOptions="/MP" AdditionalOptions="/MP"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include" AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64" PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64"
BasicRuntimeChecks="3" BasicRuntimeChecks="3"
RuntimeLibrary="1" RuntimeLibrary="1"
UsePrecompiledHeader="0" UsePrecompiledHeader="0"
@ -392,7 +392,7 @@
/> />
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib" AdditionalDependencies="winmm.lib ws2_32.lib imm32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
LinkIncremental="0" LinkIncremental="0"
SuppressStartupBanner="true" SuppressStartupBanner="true"
IgnoreDefaultLibraryNames="LIBCMT.lib" IgnoreDefaultLibraryNames="LIBCMT.lib"
@ -486,6 +486,10 @@
RelativePath=".\..\src\console_cmds.cpp" RelativePath=".\..\src\console_cmds.cpp"
> >
</File> </File>
<File
RelativePath=".\..\src\cpu.cpp"
>
</File>
<File <File
RelativePath=".\..\src\crashlog.cpp" RelativePath=".\..\src\crashlog.cpp"
> >
@ -510,6 +514,10 @@
RelativePath=".\..\src\depot.cpp" RelativePath=".\..\src\depot.cpp"
> >
</File> </File>
<File
RelativePath=".\..\src\disaster_vehicle.cpp"
>
</File>
<File <File
RelativePath=".\..\src\driver.cpp" RelativePath=".\..\src\driver.cpp"
> >
@ -626,6 +634,10 @@
RelativePath=".\..\src\linkgraph\mcf.cpp" RelativePath=".\..\src\linkgraph\mcf.cpp"
> >
</File> </File>
<File
RelativePath=".\..\src\linkgraph\refresh.cpp"
>
</File>
<File <File
RelativePath=".\..\src\map.cpp" RelativePath=".\..\src\map.cpp"
> >
@ -682,10 +694,6 @@
RelativePath=".\..\src\order_backup.cpp" RelativePath=".\..\src\order_backup.cpp"
> >
</File> </File>
<File
RelativePath=".\..\src\os_timer.cpp"
>
</File>
<File <File
RelativePath=".\..\src\pbs.cpp" RelativePath=".\..\src\pbs.cpp"
> >
@ -806,6 +814,10 @@
RelativePath=".\..\src\viewport.cpp" RelativePath=".\..\src\viewport.cpp"
> >
</File> </File>
<File
RelativePath=".\..\src\viewport_sprite_sorter_sse4.cpp"
>
</File>
<File <File
RelativePath=".\..\src\waypoint.cpp" RelativePath=".\..\src\waypoint.cpp"
> >
@ -958,6 +970,10 @@
RelativePath=".\..\src\console_type.h" RelativePath=".\..\src\console_type.h"
> >
</File> </File>
<File
RelativePath=".\..\src\cpu.h"
>
</File>
<File <File
RelativePath=".\..\src\crashlog.h" RelativePath=".\..\src\crashlog.h"
> >
@ -1010,6 +1026,10 @@
RelativePath=".\..\src\direction_type.h" RelativePath=".\..\src\direction_type.h"
> >
</File> </File>
<File
RelativePath=".\..\src\disaster_vehicle.h"
>
</File>
<File <File
RelativePath=".\..\src\music\dmusic.h" RelativePath=".\..\src\music\dmusic.h"
> >
@ -1238,6 +1258,10 @@
RelativePath=".\..\src\linkgraph\mcf.h" RelativePath=".\..\src\linkgraph\mcf.h"
> >
</File> </File>
<File
RelativePath=".\..\src\linkgraph\refresh.h"
>
</File>
<File <File
RelativePath=".\..\src\livery.h" RelativePath=".\..\src\livery.h"
> >
@ -1530,6 +1554,10 @@
RelativePath=".\..\src\roadveh.h" RelativePath=".\..\src\roadveh.h"
> >
</File> </File>
<File
RelativePath=".\..\src\safeguards.h"
>
</File>
<File <File
RelativePath=".\..\src\screenshot.h" RelativePath=".\..\src\screenshot.h"
> >
@ -1654,6 +1682,10 @@
RelativePath=".\..\src\strgen\strgen.h" RelativePath=".\..\src\strgen\strgen.h"
> >
</File> </File>
<File
RelativePath=".\..\src\string_base.h"
>
</File>
<File <File
RelativePath=".\..\src\string_func.h" RelativePath=".\..\src\string_func.h"
> >
@ -1822,6 +1854,10 @@
RelativePath=".\..\src\viewport_func.h" RelativePath=".\..\src\viewport_func.h"
> >
</File> </File>
<File
RelativePath=".\..\src\viewport_sprite_sorter.h"
>
</File>
<File <File
RelativePath=".\..\src\viewport_type.h" RelativePath=".\..\src\viewport_type.h"
> >
@ -1978,6 +2014,10 @@
RelativePath=".\..\src\core\smallmatrix_type.hpp" RelativePath=".\..\src\core\smallmatrix_type.hpp"
> >
</File> </File>
<File
RelativePath=".\..\src\core\smallstack_type.hpp"
>
</File>
<File <File
RelativePath=".\..\src\core\smallvec_type.hpp" RelativePath=".\..\src\core\smallvec_type.hpp"
> >
@ -2478,10 +2518,6 @@
RelativePath=".\..\src\depot_cmd.cpp" RelativePath=".\..\src\depot_cmd.cpp"
> >
</File> </File>
<File
RelativePath=".\..\src\disaster_cmd.cpp"
>
</File>
<File <File
RelativePath=".\..\src\group_cmd.cpp" RelativePath=".\..\src\group_cmd.cpp"
> >
@ -2794,6 +2830,10 @@
RelativePath=".\..\src\table\genland.h" RelativePath=".\..\src\table\genland.h"
> >
</File> </File>
<File
RelativePath=".\..\src\table\heightmap_colours.h"
>
</File>
<File <File
RelativePath=".\..\src\table\industry_land.h" RelativePath=".\..\src\table\industry_land.h"
> >
@ -2850,6 +2890,10 @@
RelativePath=".\..\src\table\strgen_tables.h" RelativePath=".\..\src\table\strgen_tables.h"
> >
</File> </File>
<File
RelativePath=".\..\src\table\string_colours.h"
>
</File>
<File <File
RelativePath=".\..\src\..\objs\langs\table\strings.h" RelativePath=".\..\src\..\objs\langs\table\strings.h"
> >
@ -3086,34 +3130,14 @@
RelativePath=".\..\src\3rdparty\squirrel\include\sqstdaux.h" RelativePath=".\..\src\3rdparty\squirrel\include\sqstdaux.h"
> >
</File> </File>
<File
RelativePath=".\..\src\3rdparty\squirrel\include\sqstdblob.h"
>
</File>
<File
RelativePath=".\..\src\3rdparty\squirrel\sqstdlib\sqstdblobimpl.h"
>
</File>
<File
RelativePath=".\..\src\3rdparty\squirrel\include\sqstdio.h"
>
</File>
<File <File
RelativePath=".\..\src\3rdparty\squirrel\include\sqstdmath.h" RelativePath=".\..\src\3rdparty\squirrel\include\sqstdmath.h"
> >
</File> </File>
<File
RelativePath=".\..\src\3rdparty\squirrel\sqstdlib\sqstdstream.h"
>
</File>
<File <File
RelativePath=".\..\src\3rdparty\squirrel\include\sqstdstring.h" RelativePath=".\..\src\3rdparty\squirrel\include\sqstdstring.h"
> >
</File> </File>
<File
RelativePath=".\..\src\3rdparty\squirrel\include\sqstdsystem.h"
>
</File>
<File <File
RelativePath=".\..\src\3rdparty\squirrel\squirrel\sqstring.h" RelativePath=".\..\src\3rdparty\squirrel\squirrel\sqstring.h"
> >
@ -3450,6 +3474,14 @@
RelativePath=".\..\src\script\api\script_story_page.hpp" RelativePath=".\..\src\script\api\script_story_page.hpp"
> >
</File> </File>
<File
RelativePath=".\..\src\script\api\script_storypagelist.hpp"
>
</File>
<File
RelativePath=".\..\src\script\api\script_storypageelementlist.hpp"
>
</File>
<File <File
RelativePath=".\..\src\script\api\script_subsidy.hpp" RelativePath=".\..\src\script\api\script_subsidy.hpp"
> >
@ -3702,6 +3734,14 @@
RelativePath=".\..\src\script\api\script_story_page.cpp" RelativePath=".\..\src\script\api\script_story_page.cpp"
> >
</File> </File>
<File
RelativePath=".\..\src\script\api\script_storypagelist.cpp"
>
</File>
<File
RelativePath=".\..\src\script\api\script_storypageelementlist.cpp"
>
</File>
<File <File
RelativePath=".\..\src\script\api\script_subsidy.cpp" RelativePath=".\..\src\script\api\script_subsidy.cpp"
> >
@ -3774,6 +3814,14 @@
RelativePath=".\..\src\blitter\32bpp_anim.hpp" RelativePath=".\..\src\blitter\32bpp_anim.hpp"
> >
</File> </File>
<File
RelativePath=".\..\src\blitter\32bpp_anim_sse4.cpp"
>
</File>
<File
RelativePath=".\..\src\blitter\32bpp_anim_sse4.hpp"
>
</File>
<File <File
RelativePath=".\..\src\blitter\32bpp_base.cpp" RelativePath=".\..\src\blitter\32bpp_base.cpp"
> >
@ -3798,6 +3846,38 @@
RelativePath=".\..\src\blitter\32bpp_simple.hpp" RelativePath=".\..\src\blitter\32bpp_simple.hpp"
> >
</File> </File>
<File
RelativePath=".\..\src\blitter\32bpp_sse_func.hpp"
>
</File>
<File
RelativePath=".\..\src\blitter\32bpp_sse_type.h"
>
</File>
<File
RelativePath=".\..\src\blitter\32bpp_sse2.cpp"
>
</File>
<File
RelativePath=".\..\src\blitter\32bpp_sse2.hpp"
>
</File>
<File
RelativePath=".\..\src\blitter\32bpp_sse4.cpp"
>
</File>
<File
RelativePath=".\..\src\blitter\32bpp_sse4.hpp"
>
</File>
<File
RelativePath=".\..\src\blitter\32bpp_ssse3.cpp"
>
</File>
<File
RelativePath=".\..\src\blitter\32bpp_ssse3.hpp"
>
</File>
<File <File
RelativePath=".\..\src\blitter\8bpp_base.cpp" RelativePath=".\..\src\blitter\8bpp_base.cpp"
> >
@ -4318,6 +4398,10 @@
RelativePath=".\..\src\pathfinder\yapf\yapf_ship.cpp" RelativePath=".\..\src\pathfinder\yapf\yapf_ship.cpp"
> >
</File> </File>
<File
RelativePath=".\..\src\pathfinder\yapf\yapf_type.hpp"
>
</File>
</Filter> </Filter>
<Filter <Filter
Name="Video" Name="Video"

@ -52,7 +52,7 @@
FavorSizeOrSpeed="2" FavorSizeOrSpeed="2"
OmitFramePointers="true" OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include" AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT"
StringPooling="true" StringPooling="true"
ExceptionHandling="1" ExceptionHandling="1"
RuntimeLibrary="0" RuntimeLibrary="0"
@ -87,7 +87,7 @@
/> />
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib" AdditionalDependencies="winmm.lib ws2_32.lib imm32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
LinkIncremental="1" LinkIncremental="1"
SuppressStartupBanner="true" SuppressStartupBanner="true"
IgnoreDefaultLibraryNames="" IgnoreDefaultLibraryNames=""
@ -156,7 +156,7 @@
AdditionalOptions="/MP" AdditionalOptions="/MP"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include" AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;" PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;"
BasicRuntimeChecks="3" BasicRuntimeChecks="3"
RuntimeLibrary="1" RuntimeLibrary="1"
UsePrecompiledHeader="0" UsePrecompiledHeader="0"
@ -184,7 +184,7 @@
/> />
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib" AdditionalDependencies="winmm.lib ws2_32.lib imm32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
LinkIncremental="0" LinkIncremental="0"
SuppressStartupBanner="true" SuppressStartupBanner="true"
IgnoreDefaultLibraryNames="LIBCMT.lib" IgnoreDefaultLibraryNames="LIBCMT.lib"
@ -257,7 +257,7 @@
FavorSizeOrSpeed="2" FavorSizeOrSpeed="2"
OmitFramePointers="true" OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include" AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64;WITH_ASSERT" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64;WITH_ASSERT"
StringPooling="true" StringPooling="true"
ExceptionHandling="1" ExceptionHandling="1"
RuntimeLibrary="0" RuntimeLibrary="0"
@ -292,7 +292,7 @@
/> />
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib" AdditionalDependencies="winmm.lib ws2_32.lib imm32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
LinkIncremental="1" LinkIncremental="1"
SuppressStartupBanner="true" SuppressStartupBanner="true"
IgnoreDefaultLibraryNames="" IgnoreDefaultLibraryNames=""
@ -362,7 +362,7 @@
AdditionalOptions="/MP" AdditionalOptions="/MP"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include" AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64" PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64"
BasicRuntimeChecks="3" BasicRuntimeChecks="3"
RuntimeLibrary="1" RuntimeLibrary="1"
UsePrecompiledHeader="0" UsePrecompiledHeader="0"
@ -392,7 +392,7 @@
/> />
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib" AdditionalDependencies="winmm.lib ws2_32.lib imm32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
LinkIncremental="0" LinkIncremental="0"
SuppressStartupBanner="true" SuppressStartupBanner="true"
IgnoreDefaultLibraryNames="LIBCMT.lib" IgnoreDefaultLibraryNames="LIBCMT.lib"

@ -53,7 +53,7 @@
FavorSizeOrSpeed="2" FavorSizeOrSpeed="2"
OmitFramePointers="true" OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include" AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT"
StringPooling="true" StringPooling="true"
ExceptionHandling="1" ExceptionHandling="1"
RuntimeLibrary="0" RuntimeLibrary="0"
@ -88,7 +88,7 @@
/> />
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib" AdditionalDependencies="winmm.lib ws2_32.lib imm32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
LinkIncremental="1" LinkIncremental="1"
SuppressStartupBanner="true" SuppressStartupBanner="true"
IgnoreDefaultLibraryNames="" IgnoreDefaultLibraryNames=""
@ -155,7 +155,7 @@
AdditionalOptions="/MP" AdditionalOptions="/MP"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include" AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;" PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;"
BasicRuntimeChecks="3" BasicRuntimeChecks="3"
RuntimeLibrary="1" RuntimeLibrary="1"
UsePrecompiledHeader="0" UsePrecompiledHeader="0"
@ -183,7 +183,7 @@
/> />
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib" AdditionalDependencies="winmm.lib ws2_32.lib imm32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
LinkIncremental="0" LinkIncremental="0"
SuppressStartupBanner="true" SuppressStartupBanner="true"
IgnoreDefaultLibraryNames="LIBCMT.lib" IgnoreDefaultLibraryNames="LIBCMT.lib"
@ -255,7 +255,7 @@
FavorSizeOrSpeed="2" FavorSizeOrSpeed="2"
OmitFramePointers="true" OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include" AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64;WITH_ASSERT" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64;WITH_ASSERT"
StringPooling="true" StringPooling="true"
ExceptionHandling="1" ExceptionHandling="1"
RuntimeLibrary="0" RuntimeLibrary="0"
@ -290,7 +290,7 @@
/> />
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib" AdditionalDependencies="winmm.lib ws2_32.lib imm32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
LinkIncremental="1" LinkIncremental="1"
SuppressStartupBanner="true" SuppressStartupBanner="true"
IgnoreDefaultLibraryNames="" IgnoreDefaultLibraryNames=""
@ -359,7 +359,7 @@
AdditionalOptions="/MP" AdditionalOptions="/MP"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include" AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64" PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64"
BasicRuntimeChecks="3" BasicRuntimeChecks="3"
RuntimeLibrary="1" RuntimeLibrary="1"
UsePrecompiledHeader="0" UsePrecompiledHeader="0"
@ -389,7 +389,7 @@
/> />
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib" AdditionalDependencies="winmm.lib ws2_32.lib imm32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
LinkIncremental="0" LinkIncremental="0"
SuppressStartupBanner="true" SuppressStartupBanner="true"
IgnoreDefaultLibraryNames="LIBCMT.lib" IgnoreDefaultLibraryNames="LIBCMT.lib"
@ -483,6 +483,10 @@
RelativePath=".\..\src\console_cmds.cpp" RelativePath=".\..\src\console_cmds.cpp"
> >
</File> </File>
<File
RelativePath=".\..\src\cpu.cpp"
>
</File>
<File <File
RelativePath=".\..\src\crashlog.cpp" RelativePath=".\..\src\crashlog.cpp"
> >
@ -507,6 +511,10 @@
RelativePath=".\..\src\depot.cpp" RelativePath=".\..\src\depot.cpp"
> >
</File> </File>
<File
RelativePath=".\..\src\disaster_vehicle.cpp"
>
</File>
<File <File
RelativePath=".\..\src\driver.cpp" RelativePath=".\..\src\driver.cpp"
> >
@ -623,6 +631,10 @@
RelativePath=".\..\src\linkgraph\mcf.cpp" RelativePath=".\..\src\linkgraph\mcf.cpp"
> >
</File> </File>
<File
RelativePath=".\..\src\linkgraph\refresh.cpp"
>
</File>
<File <File
RelativePath=".\..\src\map.cpp" RelativePath=".\..\src\map.cpp"
> >
@ -679,10 +691,6 @@
RelativePath=".\..\src\order_backup.cpp" RelativePath=".\..\src\order_backup.cpp"
> >
</File> </File>
<File
RelativePath=".\..\src\os_timer.cpp"
>
</File>
<File <File
RelativePath=".\..\src\pbs.cpp" RelativePath=".\..\src\pbs.cpp"
> >
@ -803,6 +811,10 @@
RelativePath=".\..\src\viewport.cpp" RelativePath=".\..\src\viewport.cpp"
> >
</File> </File>
<File
RelativePath=".\..\src\viewport_sprite_sorter_sse4.cpp"
>
</File>
<File <File
RelativePath=".\..\src\waypoint.cpp" RelativePath=".\..\src\waypoint.cpp"
> >
@ -955,6 +967,10 @@
RelativePath=".\..\src\console_type.h" RelativePath=".\..\src\console_type.h"
> >
</File> </File>
<File
RelativePath=".\..\src\cpu.h"
>
</File>
<File <File
RelativePath=".\..\src\crashlog.h" RelativePath=".\..\src\crashlog.h"
> >
@ -1007,6 +1023,10 @@
RelativePath=".\..\src\direction_type.h" RelativePath=".\..\src\direction_type.h"
> >
</File> </File>
<File
RelativePath=".\..\src\disaster_vehicle.h"
>
</File>
<File <File
RelativePath=".\..\src\music\dmusic.h" RelativePath=".\..\src\music\dmusic.h"
> >
@ -1235,6 +1255,10 @@
RelativePath=".\..\src\linkgraph\mcf.h" RelativePath=".\..\src\linkgraph\mcf.h"
> >
</File> </File>
<File
RelativePath=".\..\src\linkgraph\refresh.h"
>
</File>
<File <File
RelativePath=".\..\src\livery.h" RelativePath=".\..\src\livery.h"
> >
@ -1527,6 +1551,10 @@
RelativePath=".\..\src\roadveh.h" RelativePath=".\..\src\roadveh.h"
> >
</File> </File>
<File
RelativePath=".\..\src\safeguards.h"
>
</File>
<File <File
RelativePath=".\..\src\screenshot.h" RelativePath=".\..\src\screenshot.h"
> >
@ -1651,6 +1679,10 @@
RelativePath=".\..\src\strgen\strgen.h" RelativePath=".\..\src\strgen\strgen.h"
> >
</File> </File>
<File
RelativePath=".\..\src\string_base.h"
>
</File>
<File <File
RelativePath=".\..\src\string_func.h" RelativePath=".\..\src\string_func.h"
> >
@ -1819,6 +1851,10 @@
RelativePath=".\..\src\viewport_func.h" RelativePath=".\..\src\viewport_func.h"
> >
</File> </File>
<File
RelativePath=".\..\src\viewport_sprite_sorter.h"
>
</File>
<File <File
RelativePath=".\..\src\viewport_type.h" RelativePath=".\..\src\viewport_type.h"
> >
@ -1975,6 +2011,10 @@
RelativePath=".\..\src\core\smallmatrix_type.hpp" RelativePath=".\..\src\core\smallmatrix_type.hpp"
> >
</File> </File>
<File
RelativePath=".\..\src\core\smallstack_type.hpp"
>
</File>
<File <File
RelativePath=".\..\src\core\smallvec_type.hpp" RelativePath=".\..\src\core\smallvec_type.hpp"
> >
@ -2475,10 +2515,6 @@
RelativePath=".\..\src\depot_cmd.cpp" RelativePath=".\..\src\depot_cmd.cpp"
> >
</File> </File>
<File
RelativePath=".\..\src\disaster_cmd.cpp"
>
</File>
<File <File
RelativePath=".\..\src\group_cmd.cpp" RelativePath=".\..\src\group_cmd.cpp"
> >
@ -2791,6 +2827,10 @@
RelativePath=".\..\src\table\genland.h" RelativePath=".\..\src\table\genland.h"
> >
</File> </File>
<File
RelativePath=".\..\src\table\heightmap_colours.h"
>
</File>
<File <File
RelativePath=".\..\src\table\industry_land.h" RelativePath=".\..\src\table\industry_land.h"
> >
@ -2847,6 +2887,10 @@
RelativePath=".\..\src\table\strgen_tables.h" RelativePath=".\..\src\table\strgen_tables.h"
> >
</File> </File>
<File
RelativePath=".\..\src\table\string_colours.h"
>
</File>
<File <File
RelativePath=".\..\src\..\objs\langs\table\strings.h" RelativePath=".\..\src\..\objs\langs\table\strings.h"
> >
@ -3083,34 +3127,14 @@
RelativePath=".\..\src\3rdparty\squirrel\include\sqstdaux.h" RelativePath=".\..\src\3rdparty\squirrel\include\sqstdaux.h"
> >
</File> </File>
<File
RelativePath=".\..\src\3rdparty\squirrel\include\sqstdblob.h"
>
</File>
<File
RelativePath=".\..\src\3rdparty\squirrel\sqstdlib\sqstdblobimpl.h"
>
</File>
<File
RelativePath=".\..\src\3rdparty\squirrel\include\sqstdio.h"
>
</File>
<File <File
RelativePath=".\..\src\3rdparty\squirrel\include\sqstdmath.h" RelativePath=".\..\src\3rdparty\squirrel\include\sqstdmath.h"
> >
</File> </File>
<File
RelativePath=".\..\src\3rdparty\squirrel\sqstdlib\sqstdstream.h"
>
</File>
<File <File
RelativePath=".\..\src\3rdparty\squirrel\include\sqstdstring.h" RelativePath=".\..\src\3rdparty\squirrel\include\sqstdstring.h"
> >
</File> </File>
<File
RelativePath=".\..\src\3rdparty\squirrel\include\sqstdsystem.h"
>
</File>
<File <File
RelativePath=".\..\src\3rdparty\squirrel\squirrel\sqstring.h" RelativePath=".\..\src\3rdparty\squirrel\squirrel\sqstring.h"
> >
@ -3447,6 +3471,14 @@
RelativePath=".\..\src\script\api\script_story_page.hpp" RelativePath=".\..\src\script\api\script_story_page.hpp"
> >
</File> </File>
<File
RelativePath=".\..\src\script\api\script_storypagelist.hpp"
>
</File>
<File
RelativePath=".\..\src\script\api\script_storypageelementlist.hpp"
>
</File>
<File <File
RelativePath=".\..\src\script\api\script_subsidy.hpp" RelativePath=".\..\src\script\api\script_subsidy.hpp"
> >
@ -3699,6 +3731,14 @@
RelativePath=".\..\src\script\api\script_story_page.cpp" RelativePath=".\..\src\script\api\script_story_page.cpp"
> >
</File> </File>
<File
RelativePath=".\..\src\script\api\script_storypagelist.cpp"
>
</File>
<File
RelativePath=".\..\src\script\api\script_storypageelementlist.cpp"
>
</File>
<File <File
RelativePath=".\..\src\script\api\script_subsidy.cpp" RelativePath=".\..\src\script\api\script_subsidy.cpp"
> >
@ -3771,6 +3811,14 @@
RelativePath=".\..\src\blitter\32bpp_anim.hpp" RelativePath=".\..\src\blitter\32bpp_anim.hpp"
> >
</File> </File>
<File
RelativePath=".\..\src\blitter\32bpp_anim_sse4.cpp"
>
</File>
<File
RelativePath=".\..\src\blitter\32bpp_anim_sse4.hpp"
>
</File>
<File <File
RelativePath=".\..\src\blitter\32bpp_base.cpp" RelativePath=".\..\src\blitter\32bpp_base.cpp"
> >
@ -3795,6 +3843,38 @@
RelativePath=".\..\src\blitter\32bpp_simple.hpp" RelativePath=".\..\src\blitter\32bpp_simple.hpp"
> >
</File> </File>
<File
RelativePath=".\..\src\blitter\32bpp_sse_func.hpp"
>
</File>
<File
RelativePath=".\..\src\blitter\32bpp_sse_type.h"
>
</File>
<File
RelativePath=".\..\src\blitter\32bpp_sse2.cpp"
>
</File>
<File
RelativePath=".\..\src\blitter\32bpp_sse2.hpp"
>
</File>
<File
RelativePath=".\..\src\blitter\32bpp_sse4.cpp"
>
</File>
<File
RelativePath=".\..\src\blitter\32bpp_sse4.hpp"
>
</File>
<File
RelativePath=".\..\src\blitter\32bpp_ssse3.cpp"
>
</File>
<File
RelativePath=".\..\src\blitter\32bpp_ssse3.hpp"
>
</File>
<File <File
RelativePath=".\..\src\blitter\8bpp_base.cpp" RelativePath=".\..\src\blitter\8bpp_base.cpp"
> >
@ -4315,6 +4395,10 @@
RelativePath=".\..\src\pathfinder\yapf\yapf_ship.cpp" RelativePath=".\..\src\pathfinder\yapf\yapf_ship.cpp"
> >
</File> </File>
<File
RelativePath=".\..\src\pathfinder\yapf\yapf_type.hpp"
>
</File>
</Filter> </Filter>
<Filter <Filter
Name="Video" Name="Video"

@ -53,7 +53,7 @@
FavorSizeOrSpeed="2" FavorSizeOrSpeed="2"
OmitFramePointers="true" OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include" AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT"
StringPooling="true" StringPooling="true"
ExceptionHandling="1" ExceptionHandling="1"
RuntimeLibrary="0" RuntimeLibrary="0"
@ -88,7 +88,7 @@
/> />
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib" AdditionalDependencies="winmm.lib ws2_32.lib imm32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
LinkIncremental="1" LinkIncremental="1"
SuppressStartupBanner="true" SuppressStartupBanner="true"
IgnoreDefaultLibraryNames="" IgnoreDefaultLibraryNames=""
@ -155,7 +155,7 @@
AdditionalOptions="/MP" AdditionalOptions="/MP"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include" AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;" PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;"
BasicRuntimeChecks="3" BasicRuntimeChecks="3"
RuntimeLibrary="1" RuntimeLibrary="1"
UsePrecompiledHeader="0" UsePrecompiledHeader="0"
@ -183,7 +183,7 @@
/> />
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib" AdditionalDependencies="winmm.lib ws2_32.lib imm32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
LinkIncremental="0" LinkIncremental="0"
SuppressStartupBanner="true" SuppressStartupBanner="true"
IgnoreDefaultLibraryNames="LIBCMT.lib" IgnoreDefaultLibraryNames="LIBCMT.lib"
@ -255,7 +255,7 @@
FavorSizeOrSpeed="2" FavorSizeOrSpeed="2"
OmitFramePointers="true" OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include" AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64;WITH_ASSERT" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64;WITH_ASSERT"
StringPooling="true" StringPooling="true"
ExceptionHandling="1" ExceptionHandling="1"
RuntimeLibrary="0" RuntimeLibrary="0"
@ -290,7 +290,7 @@
/> />
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib" AdditionalDependencies="winmm.lib ws2_32.lib imm32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
LinkIncremental="1" LinkIncremental="1"
SuppressStartupBanner="true" SuppressStartupBanner="true"
IgnoreDefaultLibraryNames="" IgnoreDefaultLibraryNames=""
@ -359,7 +359,7 @@
AdditionalOptions="/MP" AdditionalOptions="/MP"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include" AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64" PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64"
BasicRuntimeChecks="3" BasicRuntimeChecks="3"
RuntimeLibrary="1" RuntimeLibrary="1"
UsePrecompiledHeader="0" UsePrecompiledHeader="0"
@ -389,7 +389,7 @@
/> />
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib" AdditionalDependencies="winmm.lib ws2_32.lib imm32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
LinkIncremental="0" LinkIncremental="0"
SuppressStartupBanner="true" SuppressStartupBanner="true"
IgnoreDefaultLibraryNames="LIBCMT.lib" IgnoreDefaultLibraryNames="LIBCMT.lib"

@ -1,5 +1,5 @@
Last updated: 2013-06-01 Last updated: 2015-02-24
Release version: 1.3.1 Release version: 1.5.0-beta2
------------------------------------------------------------------------ ------------------------------------------------------------------------
@ -26,6 +26,7 @@ Table of contents
* 8.1) Translation * 8.1) Translation
* 8.2) Previewing * 8.2) Previewing
9.0) Troubleshooting 9.0) Troubleshooting
10.0) Licensing
X.X) Credits X.X) Credits
@ -35,9 +36,9 @@ OpenTTD is a transport simulation game based upon the popular game Transport
Tycoon Deluxe, written by Chris Sawyer. It attempts to mimic the original Tycoon Deluxe, written by Chris Sawyer. It attempts to mimic the original
game as closely as possible while extending it with new features. game as closely as possible while extending it with new features.
OpenTTD is licensed under the GNU General Public License version 2.0. For OpenTTD is licensed under the GNU General Public License version 2.0,
more information, see the file 'COPYING'. but includes some 3rd party software under different licenses. See the
section "Licensing" below for details.
2.0) Contacting 2.0) Contacting
---- ---------- ---- ----------
@ -281,7 +282,8 @@ your operating system:
C:\Documents and Settings\<username>\My Documents\OpenTTD (2000, XP) C:\Documents and Settings\<username>\My Documents\OpenTTD (2000, XP)
C:\Users\<username>\Documents\OpenTTD (Vista, 7) C:\Users\<username>\Documents\OpenTTD (Vista, 7)
Mac OSX: ~/Documents/OpenTTD Mac OSX: ~/Documents/OpenTTD
Linux: ~/.openttd Linux: $XDG_DATA_HOME/openttd which is usually ~/.local/share/openttd when
built with XDG base directory support, otherwise ~/.openttd
3. The shared directory 3. The shared directory
Windows: C:\Documents and Settings\All Users\Shared Documents\OpenTTD (2000, XP) Windows: C:\Documents and Settings\All Users\Shared Documents\OpenTTD (2000, XP)
C:\Users\Public\Documents\OpenTTD (Vista, 7) C:\Users\Public\Documents\OpenTTD (Vista, 7)
@ -306,9 +308,9 @@ chosen main OpenTTD directory:
32bpp Sets: newgrf (or a subdirectory thereof) 32bpp Sets: newgrf (or a subdirectory thereof)
Music Sets: baseset (or a subdirectory thereof) Music Sets: baseset (or a subdirectory thereof)
AIs: ai (or a subdirectory thereof) AIs: ai (or a subdirectory thereof)
AI Libraries: ai/libraries (or a subdirectory thereof) AI Libraries: ai/library (or a subdirectory thereof)
Game Scripts (GS): game (or a subdirectory thereof) Game Scripts (GS): game (or a subdirectory thereof)
GS Libraries: game/libraries (or a subdirectory thereof) GS Libraries: game/library (or a subdirectory thereof)
Savegames: save Savegames: save
Automatic Savegames: save/autosave Automatic Savegames: save/autosave
Scenarios: scenario Scenarios: scenario
@ -321,10 +323,13 @@ Notes:
others. others.
- The previous search order is also used for NewGRFs and openttd.cfg. - The previous search order is also used for NewGRFs and openttd.cfg.
- If openttd.cfg is not found, then it will be created using the 2, 4, 1, 3, - If openttd.cfg is not found, then it will be created using the 2, 4, 1, 3,
5 order. 5 order. When built with XDG base directory support, openttd.cfg will be
created in $XDG_CONFIG_HOME/openttd which is usually ~/.config/openttd.
- Savegames will be relative to the config file only if there is no save/ - Savegames will be relative to the config file only if there is no save/
directory in paths with higher priority than the config file path, but directory in paths with higher priority than the config file path, but
autosaves and screenshots will always be relative to the config file. autosaves and screenshots will always be relative to the config file.
Unless the configuration file is in $XDG_CONFIG_HOME/openttd, then all
other files will be saved under $XDG_DATA_HOME/openttd.
The preferred setup: The preferred setup:
Place 3rd party files in shared directory (or in personal directory if you do Place 3rd party files in shared directory (or in personal directory if you do
@ -476,9 +481,9 @@ DOS:
website. Compilation is straight forward: use make, but do a './configure' website. Compilation is straight forward: use make, but do a './configure'
before the first build. The build binary will need cwsdpmi.exe to be in before the first build. The build binary will need cwsdpmi.exe to be in
the same directory as the openttd executable. cwsdpmi.exe can be found in the same directory as the openttd executable. cwsdpmi.exe can be found in
the os/dos subdirectory. If you compile with stripping turned on a binary the os/dos/cwsdpmi subdirectory. If you compile with stripping turned on a
will be generated that does not need cwsdpmi.exe by adding the cswdstub.exe binary will be generated that does not need cwsdpmi.exe by adding the
to the created OpenTTD binary. cswdstub.exe to the created OpenTTD binary.
7.1) Required/optional libraries 7.1) Required/optional libraries
---- --------------------------- ---- ---------------------------
@ -642,50 +647,80 @@ development section (http://www.tt-forums.net/viewforum.php?f=66) or GrfCrawler
(see section 4.2 'OpenTTD directories') and rescan the list of available NewGRFs. (see section 4.2 'OpenTTD directories') and rescan the list of available NewGRFs.
Once you have all missing files, you are set to go. Once you have all missing files, you are set to go.
10.0) Licensing
----- ---------
OpenTTD is licensed under the GNU General Public License version 2.0. For
the complete license text, see the file 'COPYING'. This license applies
to all files in this distribution, except as noted below.
The squirrel implementation in src/3rdparty/squirrel is licensed under
the Zlib license. See src/3rdparty/squirrel/COPYRIGHT for the complete
license text.
The md5 implementation in src/3rdparty/md5 is licensed under the Zlib
license. See the comments in the source files in src/3rdparty/md5 for
the complete license text.
The implementations of Posix getaddrinfo and getnameinfo for OS/2 in
src/3rdparty/os2 are distributed partly under the GNU Lesser General Public
License 2.1, and partly under the (3-clause) BSD license. The exact licensing
terms can be found in src/3rdparty/os2/getaddrinfo.c resp.
src/3rdparty/os2/getnameinfo.c.
The exe2coff implementation in os/dos/exe2coff is available under the
GPL, with a number of additional terms. See os/dos/exe2coff/copying and
os/dos/exe2coff/copying.dj for the exact licensing terms.
The CWSDPMI implementation in os/dos/cwsdpmi is distributed under a
custom binary-only license that prohibits modification. The exact
licensing terms can be found in os/dos/cwsdpmi/cwsdpmi.txt. The sources
for these files can be downloaded at its author site, at:
http://homer.rice.edu/~sandmann/cwsdpmi/csdpmi5s.zip
X.X) Credits X.X) Credits
---- ------- ---- -------
The OpenTTD team (in alphabetical order): The OpenTTD team (in alphabetical order):
Albert Hofkamp (Alberth) - GUI expert Albert Hofkamp (Alberth) - GUI expert (since 0.7)
Jean-François Claeys (Belugas) - GUI, newindustries and more Matthijs Kooijman (blathijs) - Pathfinder-guru, Debian port (since 0.3)
Matthijs Kooijman (blathijs) - Pathfinder-guru, pool rework Ulf Hermann (fonsinchen) - Cargo Distribution (since 1.3)
Ulf Hermann (fonsinchen) - Cargo Distribution Christoph Elsenhans (frosch) - General coding (since 0.6)
Christoph Elsenhans (frosch) - General coding Loïc Guilloux (glx) - Windows Expert (since 0.4.5)
Loïc Guilloux (glx) - Windows Expert Michael Lutz (michi_cc) - Path based signals (since 0.7)
Michael Lutz (michi_cc) - Path based signals Owen Rudge (orudge) - Forum host, OS/2 port (since 0.1)
Owen Rudge (orudge) - Forum host, OS/2 port Peter Nelson (peter1138) - Spiritual descendant from newGRF gods (since 0.4.5)
Peter Nelson (peter1138) - Spiritual descendant from newGRF gods Ingo von Borstel (planetmaker) - General coding, Support (since 1.1)
Ingo von Borstel (planetmaker) - Support Remko Bijker (Rubidium) - Lead coder and way more (since 0.4.5)
Remko Bijker (Rubidium) - Lead coder and way more José Soler (Terkhen) - General coding (since 1.0)
Zdeněk Sojka (SmatZ) - Bug finder and fixer Leif Linse (Zuu) - AI/Game Script (since 1.2)
José Soler (Terkhen) - General coding
Thijs Marinussen (Yexo) - AI Framework
Leif Linse (Zuu) - AI/Game Script
Inactive Developers: Inactive Developers:
Bjarni Corfitzen (Bjarni) - MacOSX port, coder and vehicles Jean-François Claeys (Belugas) - GUI, newindustries and more (0.4.5 - 1.0)
Victor Fischer (Celestar) - Programming everywhere you need him to Bjarni Corfitzen (Bjarni) - MacOSX port, coder and vehicles (0.3 - 0.7)
Tamás Faragó (Darkvater) - Ex-Lead coder Victor Fischer (Celestar) - Programming everywhere you need him to (0.3 - 0.6)
Jaroslav Mazanec (KUDr) - YAPG (Yet Another Pathfinder God) ;) Jaroslav Mazanec (KUDr) - YAPG (Yet Another Pathfinder God) ;) (0.4.5 - 0.6)
Jonathan Coome (Maedhros) - High priest of the NewGRF Temple Jonathan Coome (Maedhros) - High priest of the NewGRF Temple (0.5 - 0.6)
Attila Bán (MiHaMiX) - WebTranslator 1 and 2 Attila Bán (MiHaMiX) - WebTranslator 1 and 2 (0.3 - 0.5)
Christoph Mallon (Tron) - Programmer, code correctness police Zdeněk Sojka (SmatZ) - Bug finder and fixer (0.6 - 1.3)
Christoph Mallon (Tron) - Programmer, code correctness police (0.3 - 0.5)
Patric Stout (TrueBrain) - NoProgrammer (0.3 - 1.2), sys op (active)
Thijs Marinussen (Yexo) - AI Framework, General (0.6 - 1.3)
Retired Developers: Retired Developers:
Ludvig Strigeus (ludde) - OpenTTD author, main coder (0.1 - 0.3.3) Tamás Faragó (Darkvater) - Ex-Lead coder (0.3 - 0.5)
Serge Paquet (vurlix) - Assistant project manager, coder (0.1 - 0.3.3) Dominik Scherer (dominik81) - Lead programmer, GUI expert (0.3 - 0.3)
Dominik Scherer (dominik81) - Lead programmer, GUI expert (0.3.0 - 0.3.6) Emil Djupfeld (egladil) - MacOSX port (0.4 - 0.6)
Benedikt Brüggemeier (skidd13) - Bug fixer and code reworker Simon Sasburg (HackyKid) - Bug fixer (0.4 - 0.4.5)
Patric Stout (TrueBrain) - NoProgrammer (0.3 - 1.2), sys op (active) Ludvig Strigeus (ludde) - Original author of OpenTTD, main coder (0.1 - 0.3)
Cian Duffy (MYOB) - BeOS port / manual writing (0.1 - 0.3)
Petr Baudiš (pasky) - Many patches, newgrf support, etc. (0.3 - 0.3)
Benedikt Brüggemeier (skidd13) - Bug fixer and code reworker (0.6 - 0.7)
Serge Paquet (vurlix) - 2nd contributor after ludde (0.1 - 0.3)
Thanks to: Thanks to:
Josef Drexler - For his great work on TTDPatch. Josef Drexler - For his great work on TTDPatch.
Marcin Grzegorczyk - For his TTDPatch work and documentation of Transport Tycoon Deluxe internals and track foundations Marcin Grzegorczyk - For his TTDPatch work and documentation of Transport Tycoon Deluxe internals 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 Stefan Meißner (sign_de) - For his work on the console
Mike Ragsdale - OpenTTD installer Mike Ragsdale - OpenTTD installer
Cian Duffy (MYOB) - BeOS port / manual writing
Christian Rosentreter (tokai) - MorphOS / AmigaOS port Christian Rosentreter (tokai) - MorphOS / AmigaOS port
Richard Kempton (RichK67) - Additional airports, initial TGP implementation Richard Kempton (RichK67) - Additional airports, initial TGP implementation
Alberto Demichelis - Squirrel scripting language Alberto Demichelis - Squirrel scripting language

@ -12,12 +12,14 @@ cheat.cpp
command.cpp command.cpp
console.cpp console.cpp
console_cmds.cpp console_cmds.cpp
cpu.cpp
crashlog.cpp crashlog.cpp
currency.cpp currency.cpp
date.cpp date.cpp
debug.cpp debug.cpp
dedicated.cpp dedicated.cpp
depot.cpp depot.cpp
disaster_vehicle.cpp
driver.cpp driver.cpp
economy.cpp economy.cpp
effectvehicle.cpp effectvehicle.cpp
@ -47,6 +49,7 @@ linkgraph/linkgraph.cpp
linkgraph/linkgraphjob.cpp linkgraph/linkgraphjob.cpp
linkgraph/linkgraphschedule.cpp linkgraph/linkgraphschedule.cpp
linkgraph/mcf.cpp linkgraph/mcf.cpp
linkgraph/refresh.cpp
map.cpp map.cpp
misc.cpp misc.cpp
mixer.cpp mixer.cpp
@ -61,7 +64,6 @@ network/network_server.cpp
network/network_udp.cpp network/network_udp.cpp
openttd.cpp openttd.cpp
order_backup.cpp order_backup.cpp
os_timer.cpp
pbs.cpp pbs.cpp
progress.cpp progress.cpp
rail.cpp rail.cpp
@ -97,6 +99,10 @@ townname.cpp
#else #else
#if OS2 #if OS2
os/os2/os2.cpp os/os2/os2.cpp
3rdparty/os2/getaddrinfo.c
3rdparty/os2/getaddrinfo.h
3rdparty/os2/getnameinfo.c
3rdparty/os2/getnameinfo.h
#else #else
#if OSX #if OSX
os/macosx/crashlog_osx.cpp os/macosx/crashlog_osx.cpp
@ -110,6 +116,9 @@ townname.cpp
vehicle.cpp vehicle.cpp
vehiclelist.cpp vehiclelist.cpp
viewport.cpp viewport.cpp
#if SSE
viewport_sprite_sorter_sse4.cpp
#end
waypoint.cpp waypoint.cpp
widget.cpp widget.cpp
window.cpp window.cpp
@ -154,6 +163,7 @@ console_func.h
console_gui.h console_gui.h
console_internal.h console_internal.h
console_type.h console_type.h
cpu.h
crashlog.h crashlog.h
currency.h currency.h
date_func.h date_func.h
@ -167,6 +177,7 @@ depot_map.h
depot_type.h depot_type.h
direction_func.h direction_func.h
direction_type.h direction_type.h
disaster_vehicle.h
music/dmusic.h music/dmusic.h
driver.h driver.h
economy_base.h economy_base.h
@ -224,6 +235,7 @@ linkgraph/linkgraphjob.h
linkgraph/linkgraphjob_base.h linkgraph/linkgraphjob_base.h
linkgraph/linkgraphschedule.h linkgraph/linkgraphschedule.h
linkgraph/mcf.h linkgraph/mcf.h
linkgraph/refresh.h
livery.h livery.h
map_func.h map_func.h
map_type.h map_type.h
@ -297,6 +309,7 @@ road_internal.h
road_type.h road_type.h
roadstop_base.h roadstop_base.h
roadveh.h roadveh.h
safeguards.h
screenshot.h screenshot.h
sdl.h sdl.h
sound/sdl_s.h sound/sdl_s.h
@ -328,6 +341,7 @@ stdafx.h
story_base.h story_base.h
story_type.h story_type.h
strgen/strgen.h strgen/strgen.h
string_base.h
string_func.h string_func.h
string_type.h string_type.h
stringfilter_type.h stringfilter_type.h
@ -370,6 +384,7 @@ vehicle_gui_base.h
vehicle_type.h vehicle_type.h
vehiclelist.h vehiclelist.h
viewport_func.h viewport_func.h
viewport_sprite_sorter.h
viewport_type.h viewport_type.h
water.h water.h
waypoint_base.h waypoint_base.h
@ -425,6 +440,7 @@ core/random_func.cpp
core/random_func.hpp core/random_func.hpp
core/smallmap_type.hpp core/smallmap_type.hpp
core/smallmatrix_type.hpp core/smallmatrix_type.hpp
core/smallstack_type.hpp
core/smallvec_type.hpp core/smallvec_type.hpp
core/sort_func.hpp core/sort_func.hpp
core/string_compare_type.hpp core/string_compare_type.hpp
@ -553,7 +569,6 @@ autoreplace_cmd.cpp
clear_cmd.cpp clear_cmd.cpp
company_cmd.cpp company_cmd.cpp
depot_cmd.cpp depot_cmd.cpp
disaster_cmd.cpp
group_cmd.cpp group_cmd.cpp
industry_cmd.cpp industry_cmd.cpp
misc_cmd.cpp misc_cmd.cpp
@ -634,6 +649,7 @@ table/control_codes.h
table/elrail_data.h table/elrail_data.h
table/engines.h table/engines.h
table/genland.h table/genland.h
table/heightmap_colours.h
table/industry_land.h table/industry_land.h
table/landscape_sprite.h table/landscape_sprite.h
table/newgrf_debug_data.h table/newgrf_debug_data.h
@ -648,6 +664,7 @@ table/roadveh_movement.h
table/sprites.h table/sprites.h
table/station_land.h table/station_land.h
table/strgen_tables.h table/strgen_tables.h
table/string_colours.h
../objs/langs/table/strings.h ../objs/langs/table/strings.h
table/town_land.h table/town_land.h
table/townname.h table/townname.h
@ -711,13 +728,8 @@ script/squirrel_std.hpp
3rdparty/squirrel/squirrel/sqpcheader.h 3rdparty/squirrel/squirrel/sqpcheader.h
3rdparty/squirrel/squirrel/sqstate.h 3rdparty/squirrel/squirrel/sqstate.h
3rdparty/squirrel/include/sqstdaux.h 3rdparty/squirrel/include/sqstdaux.h
3rdparty/squirrel/include/sqstdblob.h
3rdparty/squirrel/sqstdlib/sqstdblobimpl.h
3rdparty/squirrel/include/sqstdio.h
3rdparty/squirrel/include/sqstdmath.h 3rdparty/squirrel/include/sqstdmath.h
3rdparty/squirrel/sqstdlib/sqstdstream.h
3rdparty/squirrel/include/sqstdstring.h 3rdparty/squirrel/include/sqstdstring.h
3rdparty/squirrel/include/sqstdsystem.h
3rdparty/squirrel/squirrel/sqstring.h 3rdparty/squirrel/squirrel/sqstring.h
3rdparty/squirrel/squirrel/sqtable.h 3rdparty/squirrel/squirrel/sqtable.h
3rdparty/squirrel/include/squirrel.h 3rdparty/squirrel/include/squirrel.h
@ -807,6 +819,8 @@ script/api/script_signlist.hpp
script/api/script_station.hpp script/api/script_station.hpp
script/api/script_stationlist.hpp script/api/script_stationlist.hpp
script/api/script_story_page.hpp script/api/script_story_page.hpp
script/api/script_storypagelist.hpp
script/api/script_storypageelementlist.hpp
script/api/script_subsidy.hpp script/api/script_subsidy.hpp
script/api/script_subsidylist.hpp script/api/script_subsidylist.hpp
script/api/script_testmode.hpp script/api/script_testmode.hpp
@ -871,6 +885,8 @@ script/api/script_signlist.cpp
script/api/script_station.cpp script/api/script_station.cpp
script/api/script_stationlist.cpp script/api/script_stationlist.cpp
script/api/script_story_page.cpp script/api/script_story_page.cpp
script/api/script_storypagelist.cpp
script/api/script_storypageelementlist.cpp
script/api/script_subsidy.cpp script/api/script_subsidy.cpp
script/api/script_subsidylist.cpp script/api/script_subsidylist.cpp
script/api/script_testmode.cpp script/api/script_testmode.cpp
@ -892,12 +908,26 @@ script/api/script_window.cpp
#else #else
blitter/32bpp_anim.cpp blitter/32bpp_anim.cpp
blitter/32bpp_anim.hpp blitter/32bpp_anim.hpp
#if SSE
blitter/32bpp_anim_sse4.cpp
blitter/32bpp_anim_sse4.hpp
#end
blitter/32bpp_base.cpp blitter/32bpp_base.cpp
blitter/32bpp_base.hpp blitter/32bpp_base.hpp
blitter/32bpp_optimized.cpp blitter/32bpp_optimized.cpp
blitter/32bpp_optimized.hpp blitter/32bpp_optimized.hpp
blitter/32bpp_simple.cpp blitter/32bpp_simple.cpp
blitter/32bpp_simple.hpp blitter/32bpp_simple.hpp
#if SSE
blitter/32bpp_sse_func.hpp
blitter/32bpp_sse_type.h
blitter/32bpp_sse2.cpp
blitter/32bpp_sse2.hpp
blitter/32bpp_sse4.cpp
blitter/32bpp_sse4.hpp
blitter/32bpp_ssse3.cpp
blitter/32bpp_ssse3.hpp
#end
blitter/8bpp_base.cpp blitter/8bpp_base.cpp
blitter/8bpp_base.hpp blitter/8bpp_base.hpp
blitter/8bpp_optimized.cpp blitter/8bpp_optimized.cpp
@ -1038,6 +1068,7 @@ pathfinder/yapf/yapf_node_ship.hpp
pathfinder/yapf/yapf_rail.cpp pathfinder/yapf/yapf_rail.cpp
pathfinder/yapf/yapf_road.cpp pathfinder/yapf/yapf_road.cpp
pathfinder/yapf/yapf_ship.cpp pathfinder/yapf/yapf_ship.cpp
pathfinder/yapf/yapf_type.hpp
# Video # Video
video/dedicated_v.cpp video/dedicated_v.cpp
@ -1080,7 +1111,10 @@ music/null_m.cpp
#else #else
#if DOS #if DOS
#else #else
music/extmidi.cpp #if MORPHOS
#else
music/extmidi.cpp
#end
#end #end
#end #end
#end #end

@ -0,0 +1,3 @@
The files in this directory are not licensed under the same terms as the
rest of OpenTTD. Licensing details can be found in OpenTTD's readme.txt
and in this directory or subdirectories as well.

@ -60,6 +60,8 @@
#include "../../core/endian_func.hpp" #include "../../core/endian_func.hpp"
#include "md5.h" #include "md5.h"
#include "../../safeguards.h"
#define T_MASK ((uint32)~0) #define T_MASK ((uint32)~0)
#define T1 /* 0xd76aa478 */ (T_MASK ^ 0x28955b87) #define T1 /* 0xd76aa478 */ (T_MASK ^ 0x28955b87)
#define T2 /* 0xe8c7b756 */ (T_MASK ^ 0x173848a9) #define T2 /* 0xe8c7b756 */ (T_MASK ^ 0x173848a9)

@ -0,0 +1,299 @@
/*
* This file is part of libESMTP, a library for submission of RFC 2822
* formatted electronic mail messages using the SMTP protocol described
* in RFC 2821.
*
* Copyright (C) 2001,2002 Brian Stafford <brian@stafford.uklinux.net>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/* An emulation of the RFC 2553 / Posix getaddrinfo resolver interface.
*/
#if !HAVE_GETADDRINFO
/* Need to turn off Posix features in glibc to build this */
#undef _POSIX_C_SOURCE
#undef _XOPEN_SOURCE
#include "getaddrinfo.h"
//#include "compat/inet_pton.h"
#include <string.h>
#include <ctype.h>
#include <errno.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
static struct addrinfo *
dup_addrinfo (struct addrinfo *info, void *addr, size_t addrlen) {
struct addrinfo *ret;
ret = malloc (sizeof (struct addrinfo));
if (ret == NULL)
return NULL;
memcpy (ret, info, sizeof (struct addrinfo));
ret->ai_addr = malloc (addrlen);
if (ret->ai_addr == NULL) {
free (ret);
return NULL;
}
memcpy (ret->ai_addr, addr, addrlen);
ret->ai_addrlen = addrlen;
return ret;
}
int
getaddrinfo (const char *nodename, const char *servname,
const struct addrinfo *hints, struct addrinfo **res)
{
struct hostent *hp;
struct servent *servent;
const char *socktype;
int port;
struct addrinfo hint, result;
struct addrinfo *ai, *sai, *eai;
char **addrs;
if (servname == NULL && nodename == NULL)
return EAI_NONAME;
memset (&result, 0, sizeof result);
/* default for hints */
if (hints == NULL) {
memset (&hint, 0, sizeof hint);
hint.ai_family = PF_UNSPEC;
hints = &hint;
}
if (servname == NULL)
port = 0;
else {
/* check for tcp or udp sockets only */
if (hints->ai_socktype == SOCK_STREAM)
socktype = "tcp";
else if (hints->ai_socktype == SOCK_DGRAM)
socktype = "udp";
else
return EAI_SERVICE;
result.ai_socktype = hints->ai_socktype;
/* Note: maintain port in host byte order to make debugging easier */
if (isdigit (*servname))
port = strtol (servname, NULL, 10);
else if ((servent = getservbyname (servname, socktype)) != NULL)
port = ntohs (servent->s_port);
else
return EAI_NONAME;
}
/* if nodename == NULL refer to the local host for a client or any
for a server */
if (nodename == NULL) {
struct sockaddr_in sin;
/* check protocol family is PF_UNSPEC or PF_INET - could try harder
for IPv6 but that's more code than I'm prepared to write */
if (hints->ai_family == PF_UNSPEC || hints->ai_family == PF_INET)
result.ai_family = AF_INET;
else
return EAI_FAMILY;
sin.sin_family = result.ai_family;
sin.sin_port = htons (port);
if (hints->ai_flags & AI_PASSIVE)
sin.sin_addr.s_addr = htonl (INADDR_ANY);
else
sin.sin_addr.s_addr = htonl (INADDR_LOOPBACK);
/* Duplicate result and addr and return */
*res = dup_addrinfo (&result, &sin, sizeof sin);
return (*res == NULL) ? EAI_MEMORY : 0;
}
/* If AI_NUMERIC is specified, use inet_pton to translate numbers and
dots notation. */
if (hints->ai_flags & AI_NUMERICHOST) {
struct sockaddr_in sin;
/* check protocol family is PF_UNSPEC or PF_INET */
if (hints->ai_family == PF_UNSPEC || hints->ai_family == PF_INET)
result.ai_family = AF_INET;
else
return EAI_FAMILY;
sin.sin_family = result.ai_family;
sin.sin_port = htons (port);
if (inet_pton(result.ai_family, nodename, &sin.sin_addr)==0)
return EAI_NONAME;
sin.sin_addr.s_addr = inet_addr (nodename);
/* Duplicate result and addr and return */
*res = dup_addrinfo (&result, &sin, sizeof sin);
return (*res == NULL) ? EAI_MEMORY : 0;
}
#if HAVE_H_ERRNO
h_errno = 0;
#endif
errno = 0;
hp = gethostbyname(nodename);
if (hp == NULL) {
#ifdef EAI_SYSTEM
if (errno != 0) {
return EAI_SYSTEM;
}
#endif
switch (h_errno) {
case HOST_NOT_FOUND:
return EAI_NODATA;
case NO_DATA:
return EAI_NODATA;
#if defined(NO_ADDRESS) && NO_ADDRESS != NO_DATA
case NO_ADDRESS:
return EAI_NODATA;
#endif
case NO_RECOVERY:
return EAI_FAIL;
case TRY_AGAIN:
return EAI_AGAIN;
default:
return EAI_FAIL;
}
return EAI_FAIL;
}
/* Check that the address family is acceptable.
*/
switch (hp->h_addrtype) {
case AF_INET:
if (!(hints->ai_family == PF_UNSPEC || hints->ai_family == PF_INET))
return EAI_FAMILY;
break;
#ifndef __OS2__
case AF_INET6:
if (!(hints->ai_family == PF_UNSPEC || hints->ai_family == PF_INET6))
return EAI_FAMILY;
break;
#endif
default:
return EAI_FAMILY;
}
/* For each element pointed to by hp, create an element in the
result linked list. */
sai = eai = NULL;
for (addrs = hp->h_addr_list; *addrs != NULL; addrs++) {
struct sockaddr sa;
size_t addrlen;
if (hp->h_length < 1)
continue;
sa.sa_family = hp->h_addrtype;
switch (hp->h_addrtype) {
case AF_INET:
((struct sockaddr_in *) &sa)->sin_port = htons (port);
memcpy (&((struct sockaddr_in *) &sa)->sin_addr,
*addrs, hp->h_length);
addrlen = sizeof (struct sockaddr_in);
break;
#ifndef __OS2__
case AF_INET6:
#if SIN6_LEN
((struct sockaddr_in6 *) &sa)->sin6_len = hp->h_length;
#endif
((struct sockaddr_in6 *) &sa)->sin6_port = htons (port);
memcpy (&((struct sockaddr_in6 *) &sa)->sin6_addr,
*addrs, hp->h_length);
addrlen = sizeof (struct sockaddr_in6);
break;
#endif
default:
continue;
}
result.ai_family = hp->h_addrtype;
ai = dup_addrinfo (&result, &sa, addrlen);
if (ai == NULL) {
freeaddrinfo (sai);
return EAI_MEMORY;
}
if (sai == NULL)
sai = ai;
else
eai->ai_next = ai;
eai = ai;
}
if (sai == NULL) {
return EAI_NODATA;
}
if (hints->ai_flags & AI_CANONNAME) {
sai->ai_canonname = malloc (strlen (hp->h_name) + 1);
if (sai->ai_canonname == NULL) {
freeaddrinfo (sai);
return EAI_MEMORY;
}
strcpy (sai->ai_canonname, hp->h_name);
}
*res = sai;
return 0;
}
void
freeaddrinfo (struct addrinfo *ai)
{
struct addrinfo *next;
while (ai != NULL) {
next = ai->ai_next;
if (ai->ai_canonname != NULL)
free (ai->ai_canonname);
if (ai->ai_addr != NULL)
free (ai->ai_addr);
free (ai);
ai = next;
}
}
const char *
gai_strerror (int ecode)
{
static const char *eai_descr[] = {
"no error",
"address family for nodename not supported", /* EAI_ADDRFAMILY */
"temporary failure in name resolution", /* EAI_AGAIN */
"invalid value for ai_flags", /* EAI_BADFLAGS */
"non-recoverable failure in name resolution", /* EAI_FAIL */
"ai_family not supported", /* EAI_FAMILY */
"memory allocation failure", /* EAI_MEMORY */
"no address associated with nodename", /* EAI_NODATA */
"nodename nor servname provided, or not known", /* EAI_NONAME */
"servname not supported for ai_socktype", /* EAI_SERVICE */
"ai_socktype not supported", /* EAI_SOCKTYPE */
"system error returned in errno", /* EAI_SYSTEM */
"argument buffer overflow", /* EAI_OVERFLOW */
};
if (ecode < 0 || ecode > (int) (sizeof eai_descr/ sizeof eai_descr[0]))
return "unknown error";
return eai_descr[ecode];
}
#endif /* HAVE_GETADDRINFO */

@ -0,0 +1,101 @@
#ifndef _getaddrinfo_h
#define _getaddrinfo_h
/*
* Shamelessly duplicated from the fetchmail public sources
* for use by the Squid Project under GNU Public License.
*
* Update/Maintenance History:
*
* 15-Aug-2007 : Copied from fetchmail 6.3.8
* - added protection around libray headers
*
* 16-Aug-2007 : Altered configure checks
* Un-hacked slightly to use system gethostbyname()
*
* Original License and code follows.
*/
/*
* This file is part of libESMTP, a library for submission of RFC 2822
* formatted electronic mail messages using the SMTP protocol described
* in RFC 2821.
*
* Copyright (C) 2001,2002 Brian Stafford <brian@stafford.uklinux.net>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/* Structure and prototypes taken from RFC 2553 */
/* SG 23/09/2007:
On Windows the following definitions are already available, may be that
this could be needed on some other platform */
typedef int socklen_t;
struct addrinfo {
int ai_flags; /* AI_PASSIVE, AI_CANONNAME, AI_NUMERICHOST */
int ai_family; /* PF_xxx */
int ai_socktype; /* SOCK_xxx */
int ai_protocol; /* 0 or IPPROTO_xxx for IPv4 and IPv6 */
socklen_t ai_addrlen; /* length of ai_addr */
char *ai_canonname; /* canonical name for nodename */
struct sockaddr *ai_addr; /* binary address */
struct addrinfo *ai_next; /* next structure in linked list */
};
/* Supposed to be defined in <netdb.h> */
#define AI_ADDRCONFIG 0
#define AI_PASSIVE 1 /* Socket address is intended for `bind'. */
#define AI_CANONNAME 2 /* Request for canonical name. */
#define AI_NUMERICHOST 4 /* Don't use name resolution. */
/* Supposed to be defined in <netdb.h> */
#define EAI_ADDRFAMILY 1 /* address family for nodename not supported */
#define EAI_AGAIN 2 /* temporary failure in name resolution */
#define EAI_BADFLAGS 3 /* invalid value for ai_flags */
#define EAI_FAIL 4 /* non-recoverable failure in name resolution */
#define EAI_FAMILY 5 /* ai_family not supported */
#define EAI_MEMORY 6 /* memory allocation failure */
#define EAI_NODATA 7 /* no address associated with nodename */
#define EAI_NONAME 8 /* nodename nor servname provided, or not known */
#define EAI_SERVICE 9 /* servname not supported for ai_socktype */
#define EAI_SOCKTYPE 10 /* ai_socktype not supported */
#ifndef EAI_SYSTEM
/* Not defined on mingw32. */
#define EAI_SYSTEM 11 /* System error returned in `errno'. */
#endif
#ifndef EAI_OVERFLOW
/* Not defined on mingw32. */
#define EAI_OVERFLOW 12 /* Argument buffer overflow. */
#endif
#ifdef __cplusplus
extern "C" {
#endif
/* RFC 2553 / Posix resolver */
int getaddrinfo (const char *nodename, const char *servname,
const struct addrinfo *hints, struct addrinfo **res);
/* Free addrinfo structure and associated storage */
void freeaddrinfo (struct addrinfo *ai);
/* Convert error return from getaddrinfo() to string */
const char *gai_strerror (int code);
#ifdef __cplusplus
}
#endif
#endif /* _getaddrinfo_h */

@ -0,0 +1,367 @@
/*
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the project nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
/*
* Issues to be discussed:
* - RFC2553 says that we should raise error on short buffer. X/Open says
* we need to truncate the result. We obey RFC2553 (and X/Open should be
* modified). ipngwg rough consensus seems to follow RFC2553. RFC3493 says
* nothing about it, but defines a new error code EAI_OVERFLOW which seems
* to be intended the code for this case.
* - What is "local" in NI_NOFQDN? (see comments in the code)
* - NI_NAMEREQD and NI_NUMERICHOST conflict with each other.
* - (KAME extension) always attach textual scopeid (fe80::1%lo0), if
* sin6_scope_id is filled - standardization status?
* - what should we do if we should do getservbyport("sctp")?
*/
/*
* Considerations about thread-safeness
* The code in this file is thread-safe, and so the thread-safeness of
* getnameinfo() depends on the property of backend functions.
* - getservbyport() is not thread safe for most systems we are targeting.
* - getipnodebyaddr() is thread safe. However, many resolver libraries
* used in the function are not thread safe.
* - gethostbyaddr() is usually not thread safe.
*/
#if !HAVE_GETNAMEINFO
#include <sys/socket.h>
#include <net/if.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <arpa/nameser.h>
#include <netdb.h>
#include <resolv.h>
#include <string.h>
#include <stddef.h>
#include <errno.h>
#include <inttypes.h>
#include "getaddrinfo.h"
#include "getnameinfo.h"
static const struct afd {
int a_af;
int a_addrlen;
int a_socklen;
int a_off;
int a_portoff;
} afdl [] = {
#if INET6
{PF_INET6, sizeof(struct in6_addr), sizeof(struct sockaddr_in6),
offsetof(struct sockaddr_in6, sin6_addr),
offsetof(struct sockaddr_in6, sin6_port)},
#endif
{PF_INET, sizeof(struct in_addr), sizeof(struct sockaddr_in),
offsetof(struct sockaddr_in, sin_addr),
offsetof(struct sockaddr_in, sin_port)},
{0, 0, 0, 0, 0},
};
#if INET6
static int ip6_parsenumeric __P((const struct sockaddr *, const char *, char *,
size_t, int));
static int ip6_sa2str __P((const struct sockaddr_in6 *, char *, size_t, int));
#endif
int
getnameinfo(sa, salen, host, hostlen, serv, servlen, flags)
const struct sockaddr *sa;
socklen_t salen;
char *host;
size_t hostlen;
char *serv;
size_t servlen;
int flags;
{
const struct afd *afd;
struct servent *sp;
struct hostent *hp;
unsigned short port;
int family, i;
const char *addr;
uint32_t v4a;
char numserv[512];
if (sa == NULL)
return EAI_FAIL;
#if HAVE_SA_LEN /*XXX*/
if (sa->sa_len != salen)
return EAI_FAIL;
#endif
family = sa->sa_family;
for (i = 0; afdl[i].a_af; i++)
if (afdl[i].a_af == family) {
afd = &afdl[i];
goto found;
}
return EAI_FAMILY;
found:
if (salen != afd->a_socklen)
return EAI_FAIL;
/* network byte order */
memcpy(&port, (const char *)sa + afd->a_portoff, sizeof(port));
addr = (const char *)sa + afd->a_off;
if (serv == NULL || servlen == 0) {
/*
* do nothing in this case.
* in case you are wondering if "&&" is more correct than
* "||" here: RFC3493 says that serv == NULL OR servlen == 0
* means that the caller does not want the result.
*/
} else {
if (flags & NI_NUMERICSERV)
sp = NULL;
else {
sp = getservbyport(port,
(flags & NI_DGRAM) ? "udp" : "tcp");
}
if (sp) {
if (strlen(sp->s_name) + 1 > servlen)
return EAI_OVERFLOW;
strncpy(serv, sp->s_name, servlen);
} else {
snprintf(numserv, sizeof(numserv), "%u", ntohs(port));
if (strlen(numserv) + 1 > servlen)
return EAI_OVERFLOW;
strncpy(serv, numserv, servlen);
}
}
switch (sa->sa_family) {
case AF_INET:
v4a = (uint32_t)
ntohl(((const struct sockaddr_in *)sa)->sin_addr.s_addr);
if (IN_MULTICAST(v4a) || IN_EXPERIMENTAL(v4a))
flags |= NI_NUMERICHOST;
v4a >>= IN_CLASSA_NSHIFT;
if (v4a == 0)
flags |= NI_NUMERICHOST;
break;
#if INET6
case AF_INET6: {
const struct sockaddr_in6 *sin6;
sin6 = (const struct sockaddr_in6 *)sa;
switch (sin6->sin6_addr.s6_addr[0]) {
case 0x00:
if (IN6_IS_ADDR_V4MAPPED(&sin6->sin6_addr))
;
else if (IN6_IS_ADDR_LOOPBACK(&sin6->sin6_addr))
;
else
flags |= NI_NUMERICHOST;
break;
default:
if (IN6_IS_ADDR_LINKLOCAL(&sin6->sin6_addr))
flags |= NI_NUMERICHOST;
else if (IN6_IS_ADDR_MULTICAST(&sin6->sin6_addr))
flags |= NI_NUMERICHOST;
break;
}
}
break;
#endif
}
if (host == NULL || hostlen == 0) {
/*
* do nothing in this case.
* in case you are wondering if "&&" is more correct than
* "||" here: RFC3493 says that host == NULL or hostlen == 0
* means that the caller does not want the result.
*/
} else if (flags & NI_NUMERICHOST) {
/* NUMERICHOST and NAMEREQD conflicts with each other */
if (flags & NI_NAMEREQD)
return EAI_NONAME;
goto numeric;
} else {
#if USE_GETIPNODEBY
int h_error = 0;
hp = getipnodebyaddr(addr, afd->a_addrlen, afd->a_af, &h_error);
#else
hp = gethostbyaddr(addr, afd->a_addrlen, afd->a_af);
#if 0 // getnameinfo.c:161:9: error: variable 'h_error' set but not used
#if HAVE_H_ERRNO
h_error = h_errno;
#else
h_error = EINVAL;
#endif
#endif /* 0 */
#endif
if (hp) {
#if 0
if (flags & NI_NOFQDN) {
/*
* According to RFC3493 section 6.2, NI_NOFQDN
* means "node name portion of the FQDN shall
* be returned for local hosts." The following
* code tries to implement it by returning the
* first label (the part before the first
* period) of the FQDN. However, it is not
* clear if this always makes sense, since the
* given address may be outside of "local
* hosts." Due to the unclear description, we
* disable the code in this implementation.
*/
char *p;
p = strchr(hp->h_name, '.');
if (p)
*p = '\0';
}
#endif
if (strlen(hp->h_name) + 1 > hostlen) {
#if USE_GETIPNODEBY
freehostent(hp);
#endif
return EAI_OVERFLOW;
}
strncpy(host, hp->h_name, hostlen);
#if USE_GETIPNODEBY
freehostent(hp);
#endif
} else {
if (flags & NI_NAMEREQD)
return EAI_NONAME;
numeric:
switch (afd->a_af) {
#if INET6
case AF_INET6: {
int error;
if ((error = ip6_parsenumeric(sa, addr, host,
hostlen,
flags)) != 0)
return(error);
break;
}
#endif
default:
if (inet_ntop(afd->a_af, addr, host,
hostlen) == NULL)
return EAI_SYSTEM;
break;
}
}
}
return(0);
}
#if INET6
static int
ip6_parsenumeric(sa, addr, host, hostlen, flags)
const struct sockaddr *sa;
const char *addr;
char *host;
size_t hostlen;
int flags;
{
int numaddrlen;
char numaddr[512];
if (inet_ntop(AF_INET6, addr, numaddr, sizeof(numaddr)) == NULL)
return EAI_SYSTEM;
numaddrlen = strlen(numaddr);
if (numaddrlen + 1 > hostlen) /* don't forget terminator */
return EAI_OVERFLOW;
strncpy(host, numaddr, hostlen);
if (((const struct sockaddr_in6 *)sa)->sin6_scope_id) {
char zonebuf[SQUIDHOSTNAMELEN];
int zonelen;
zonelen = ip6_sa2str(
(const struct sockaddr_in6 *)(const void *)sa,
zonebuf, sizeof(zonebuf), flags);
if (zonelen < 0)
return EAI_OVERFLOW;
if (zonelen + 1 + numaddrlen + 1 > hostlen)
return EAI_OVERFLOW;
/* construct <numeric-addr><delim><zoneid> */
memcpy(host + numaddrlen + 1, zonebuf,
(size_t)zonelen);
host[numaddrlen] = SCOPE_DELIMITER;
host[numaddrlen + 1 + zonelen] = '\0';
}
return 0;
}
/* ARGSUSED */
static int
ip6_sa2str(sa6, buf, bufsiz, flags)
const struct sockaddr_in6 *sa6;
char *buf;
size_t bufsiz;
int flags;
{
unsigned int ifindex;
const struct in6_addr *a6;
int n;
ifindex = (unsigned int)sa6->sin6_scope_id;
a6 = &sa6->sin6_addr;
#if NI_NUMERICSCOPE
if ((flags & NI_NUMERICSCOPE) != 0) {
n = snprintf(buf, bufsiz, "%u", sa6->sin6_scope_id);
if (n < 0 || n >= bufsiz)
return -1;
else
return n;
}
#endif
/* if_indextoname() does not take buffer size. not a good api... */
if ((IN6_IS_ADDR_LINKLOCAL(a6) || IN6_IS_ADDR_MC_LINKLOCAL(a6) ||
IN6_IS_ADDR_MC_NODELOCAL(a6)) && bufsiz >= IF_NAMESIZE) {
char *p = if_indextoname(ifindex, buf);
if (p)
return (strlen(p));
}
/* last resort */
n = snprintf(buf, bufsiz, "%u", sa6->sin6_scope_id);
if (n < 0 || n >= bufsiz)
return -1;
else
return n;
}
#endif /* INET6 */
#endif

@ -0,0 +1,29 @@
#ifndef _getnameinfo_h
#define _getnameinfo_h
/*
* Reconstructed from KAME getnameinfo.c (in lib/)
*/
/* getnameinfo flags */
#define NI_NOFQDN 0x0001
#define NI_NUMERICHOST 0x0002 /* return numeric form of address */
#define NI_NAMEREQD 0x0004 /* request DNS name */
#define NI_NUMERICSERV 0x0008
#define NI_DGRAM 0x0010
#ifdef __cplusplus
extern "C" {
#endif
/* RFC 2553 / Posix resolver */
int getnameinfo(const struct sockaddr *sa,
socklen_t salen,
char *host,
size_t hostlen,
char *serv,
size_t servlen,
int flags );
#ifdef __cplusplus
}
#endif
#endif /* _getnameinfo_h */

@ -1,41 +0,0 @@
Squirrel 2.2.4 stable
--------------------------------------------------------
What is in this distribution?
squirrel
static library implementing the compiler and interpreter of the language
sqstdlib
the standard utility libraries
sq
stand alone interpreter
doc
The manual
etc
a minimalistic embedding sample
samples
samples programs
HOW TO COMPILE
---------------------------------------------------------
GCC USERS
.........................................................
There is a very simple makefile that compiles all libraries and exes
from the root of the project run 'make'
for 32 bits systems
$ make
for 64 bits systems
$ make sq64
VISUAL C++ USERS
.........................................................
Open squirrel.dsw from the root project directory and build(dho!)

@ -1,357 +0,0 @@
***version 2.2.5 stable***
-sq_getsize() now returns userdatasize for classes and instances
-added parameter 'isstatic' to _newmember metamethod(thx G.Meyer)
-now array.sort() is implemented with heapsort
-added SQUIRREL_VERSION_NUMBER preprocessor definition
-now floats in scientific notation also accept numbers with no '.' (eg. 1e+6 or 1e6)
-fixed some compiler warning
-fixed a minor compiler bug
-fixed some bugs when SQUSEDOUBLE is used in 32bits systems
-fixed bug in GC
***2009-11-15 ***
***version 2.2.4 stable***
-fixed bug in functions with default parameters
***2009-06-30 ***
***version 2.2.3 stable***
-added sq_getfunctioninfo
-added compile time flag SQUSEDOUBLE to use double precision floats
-added global slot _floatsize_ int the base lib to recognize single precision and double precision builds
-sq_wakeupvm can now resume the vm with an exception
-added sqstd_format
-generators can now be instantiated by calling sq_call() or closure.call()
-fixed a bug in sqstd_printcallstack(thx takayuki_h)
-fixed modulo by zero(thx jup)
-fixed negative enums and constants
-fixed generator crash bug if invoked as tail call (thx Mr.Accident)
-fixed some minor bug
***2008-09-24 ***
***version 2.2.2 stable***
-fixed some behaviour inconsistencies in thread.call() and thread.wakeup() (thx Mr.Accident)
-fixed coroutine error propagation
-fixed lingering return value from native function (thx Tom Leonard)
-fixed a bug if array.sort() is given a bad sort function (thx Tom Leonard)
-fixed some minor api bug
-added sq_arrayremove() and sq_arrayinsert()
***2008-05-16 ***
***version 2.2.1 stable***
-fixed a tailcall bug
***2008-02-17 ***
***version 2.2 stable ***
-added _newslot metamethod in classes
-added enums added constants
-added sq_pushconsttable, sq_setconsttable
-added default param
-added octal literals(thx Dinosaur)
-fixed debug hook, 'calls' and 'returns' are properly notified in the same number.
-fixed a coroutine bug
***2007-07-29 ***
***version 2.1.2 stable***
-new behaviour for generators iteration using foreach
now when a generator is iterated by foreach the value returned by a 'return val' statement
will terminate the iteration but will not be returned as foreach iteration
-added sq_setclassudsize()
-added sq_clear()
-added table.clear(), array.clear()
-fixed sq_cmp() (thx jyuill)
-fixed minor bugs
***2006-08-21 ***
***version 2.1.1 stable***
-vm refactoring
-optimized internal function memory layout
-new global symbol _version_ (is the version string)
-code size optimization for float literals(on 32bits float builts)
-now the raw ref API(sq_addref etc...) is fully reentrant.
-fixed a bug in sq_getdelegate() now pushes null if the object doesn't have a delegate(thx MatzeB)
-improved C reference performances in NO_GARBAGE_COLLECTOR builds
-sq_getlocal() now enumerates also outer values.
-fixed regexp library for GCC users.
***2006-03-19 ***
***version 2.1 stable***
-added static class fields, new keyword static
-added 64bits architecture support
-added global slot _intsize_ int the base lib to recognize 32bits and 64bits builds
-added functions with fixed environment, closure.bindenv() built-in function
-all types except userdata and null implement the tostring() method
-string concatenation now invokes metamethod _tostring
-new metamethods for class objects _newmember and _inherited
-sq_call() sq_resume() sq_wakeupvm() have a new signature
-new C referencing implementation(scales more with the amount of references)
-refactored hash table
-new api functions sq_newslot(),sq_tobool(),sq_getbase(), sq_instanceof(), sq_bindenv()
-the api func sq_createslot was deprecated but still supported in form of C macro on top of sq_newslot
-sq_setreleasehook() now also works for classes
-stream.readstr() and stream.writestr() have been deprecated(this affects file and blob)
-fixed squirrel.h undeclared api calls
-fixed few minor bugs
-SQChar is now defined as wchar_t
-removed warning when building with -Wall -pedantic for GCC users
-added new std io function writeclosuretofile()
-added new std string functions strip(),rstrip(),lstrip() and split()
-regular expressions operators (+,*) now have more POSIX greedyness behaviour
-class constructors are now invoked as normal functions
***2005-10-02 ***
***version 2.0.5 stable***
-fixed some 64bits incompatibilities (thx sarge)
-fixed minor bug in the stdlib format() function (thx Rick)
-fixed a bug in dofile() that was preventing to compile empty files
-added new API sq_poptop() & sq_getfreevariable()
-some performance improvements
***2005-08-14 ***
***version 2.0.4 stable***
-weak references and related API calls
-added sq_objtobool()
-class instances memory policies improved(1 mem allocation for the whole instance)
-typetags are now declared as SQUserPointer instead of unsigned int
-first pass for 64bits compatibility
-fixed minor bug in the stdio stream
-fixed a bug in format()
-fixed bug in string.tointeger() and string.tofloat()
***2005-06-24 ***
***version 2.0.3 stable***
-dofile() and loadfile() in the iolib now can decode ASCII, UTF8 files UCS2 big-endian and little-endian
-sq_setparamscheck() : now typemesk can check for null
-added string escape sequence \xhhhh
-fixed some C++ standard incompatibilities
***2005-05-15 ***
***version 2.0.2 stable***
-performances improvements (expecially for GCC users)
-removed all dependencies from C++ exception handling
-various bugfixes
***2005-04-12 ***
***version 2.0.1 stable***
-various bugfixes
-sq_setparamscheck() now allows spaces in the typemask
***2005-04-03 ***
***version 2.0 stable***
-added API sq_gettypetag()
-added built-in function to the bool type(tointeger, tostring etc...)
***2005-02-27 ***
***version 2.0 release candidate 1(RC 1)***
-added API sq_reseterror()
-modified sq_release()
-now class instances can be cloned
-various bufixes
***2005-01-26 ***
***version 2.0 beta 1***
-added bool type
-class properties can be redefined in a derived class
-added ops *= /= and %=
-new syntax for class attributes declaration </ and /> instead of ( and )
-increased the max number of literals per function from 65535 to 16777215
-now free variables have proper lexical scoping
-added API sq_createinstance(), sq_pushbool(), sq_getbool()
-added built-in function type()
-added built-in function obj.rawin(key) in table,class and instance
-sq_rawget() and sq_rawset() now work also on classes and instances
-the VM no longer uses C++ exception handling (more suitable for embedded devices)
-various bufixes
***2004-12-21 ***
***version 2.0 alpha 2***
-globals scoping changed, now if :: is omitted the VM automatically falls back on the root table
-various bufixes
-added class level attributes
***2004-12-12 ***
***version 2.0 alpha 1***
-codebase branch from version 1.x
-added classes
-added functions with variable number of parameters(vargc & vargv and the ...)
-0 and 0.0 are now considered 'false' by all conditional statements(if,while,for,?,do-while)
-added new api functions sq_newclass() sq_setinstanceup() sq_getinstanceup() sq_getattributes() sq_setattributes()
-modified api sq_settypetag()
***2004-11-01 ***
***version 1.0 stable***
-fixed some minor bug
-improoved operator 'delete' performances
-added scientific notation for float numbers( eg. 2.e16 or 2.e-2)
***2004-08-30 ***
***version 1.0 release candidate 2(RC 2)***
-fixed bug in the vm(thx Pierre Renaux)
-fixed bug in the optimizer(thx Pierre Renaux)
-fixed some bug in the documentation(thx JD)
-added new api functions for raw object handling
-removed nested multiline comments
-reduced memory footprint in C references
***2004-08-23 ***
***version 1.0 release candidate 1(RC 1)***
-fixed division by zero
-the 'in' operator and obj.rawget() do not query the default delegate anymore
-added function sq_getprintfunc()
-added new standard library 'auxlib'(implements default error handlers)
***2004-07-12 ***
***version 1.0 beta 4***
-fixed a bug in the integer.tochar() built-in method
-fixed unary minus operator
-fixed bug in dofile()
-fixed inconsistency between != and == operators(on float/integer comparison)
-added javascript style unsigned right shift operator '>>>'
-added array(size) constructor built-in function
-array.resize(size,[fill]) built-in function accepts an optional 'fill' value
-improved debug API, added sq_getclosureinfo() and sq_setnativeclosurename()
***2004-05-23 ***
***version 1.0 beta 3***
-minor vm bug fixes
-string allocation is now faster
-tables and array memory usage is now less conservative(they shrink)
-added regular expression routines in the standard library
-The 'c' expression now accepts only 1 character(thx irbrian)
-multiline strings <[ ]> have been substituted with C# style verbatim strings (eg. @"string")
-added new keyword 'parent' for accessing the delegate of tables and unserdata
-The metamethod '_clone' has been renamed '_cloned'
-the _delslot metamethod's behaviour and prototype have been changed
-new default function in the integer and float object 'tochar()'
-the built-in function chcode2string has been removed
-the default method [table].getdelegate() has been removed
-new api sq_rawdeleteslot()
-new table built-in method rawdelete(key)
-the dynamic mudule loading has been removed from the standard distribution
-some optimizations in the VM
***2004-04-21 ***
***version 1.0 beta 2***
-minor compiler/parser bug fixes
-sq_newclosure has a different prototype, the "paramscheck" of paramter has been moved to the new function sq_setparamscheck()
-sq_setparamscheck allows to add automatic parameters type checking in native closures
-sq_compile() lost the lineinfo parameter
-new api sq_enabledebuginfo() globally sets compiler's debug info generation
-added consistency check on bytecode serialization
-fixed += operator, now works on strings like +
-added global slot in the base lib _charsize_ to recognize unicode builds from ascii builds runtime
-added registry table
-new api call sq_pushregistrytable()
-added type tag to the userdata type sq_settypetag()
-sq_getuserdata now queries the userdata typetag
-the built in function collect_garbage() as been renamed collectgarbage() for consistency reasons
-new standard libraries(sqlibs are now obsolete)
***2004-02-20 ***
***version 1.0 beta 1***
-fixed a bug in the compiler (thanks Martin Kofler)
-fixed bug in the switch case statement
-fixed the _unm metamethod
-fixed minor bugs in the API
-fixed automatic stack resizing
-first beta version
first pass code clean up in the VM and base lib
first pass code coverege test has been done on VM and built-in lib
-new VM creation API sq_open() sq_close() (sq_newvm and sq_releasevm are now obsolete)
-new api allows to specifiy a "print" function to output text(sq_printfunc)
-added some small optimizations
-new cooperative multi-threading capabilities in the base library(coroutines), VMs are now a built in type("thread")
-new built in functions have been added for manipulating the new "thread" type
-friend virtual machines share the same root table, error handler and debug hook by default
-new compile time options
***2004-01-19 ***
***version 0.9 alpha***
-fixed a garbage collection bug
-fixed some API bugs(thanks to Joshua Jensen)
-fixed tail calls (in the version 0.8 the tail call optimization was erroneously disabled)
-new function parameters semantic, now passing a wrong number of parameters generates an exception
-native closures have now a built in parameter number checking
-sq_rawget and sq_rawset now work also on arrays
-sq_getsize now woks also on userdata
-the userdata release hook prototype is changed(now passes the size of the userdata)
-the lexer reader function now returns an integer instead of a char that allows better error checking on the input(thx Joshua Jensen)
-faster compiler
-try/catch blocks do not cause any runtime memory allocation anymore
***2003-12-06 ***
***version 0.8 alpha***
-fixed a bug that was preventing to have callable userdata throught the metamethod _call
-fixed a garbage collection bug
-fixed == operator now can compare correctly different types
-new built in method getstackinfos(level)
-improoved line informations precision for the debug hook
-new api call sq_compilebuffer()
-new built-in api function compilestring()
-new syntactic sugar for function declarations inside tables
-the debug API has been finalized
***2003-11-17 ***
***version 0.7 alpha***
-fixed critical bug SQInteger the tail call system
-fixed bug in the continue statement code generation
-fixed func call param issue(thanks to Rewoonenco Andrew)
-added _delslot metamethod(thanks to Rewoonenco Andrew)
-new multiline string expression ( delimited by <[ and ]> )
-normal strings ("") do not allow embedded new line anymore
-reduced vm memory footprint(C refs are shared between friend VMs)
-new api method sq_deleteslot()
-new debug hook event 'r' is triggered when a function returns
***2003-11-04 ***
***version 0.6 alpha***
-fixed switch statement(was executing the default case after a break)
-sq_call() doesn't pop the closure (just the params)
-the vm execution can be suspended from the C API anytime (micro-threads)
-new api calls sq_suspendvm() sq_wakeupvm() sq_getvmstate() and sq_reservestack()
***2003-10-13 ***
***version 0.5 alpha***
-fixed some minor bug
-tested with non ASCII identifiers in unicode mode(I've tried chinese chars)
-added built-in function string.find()
-the built-in function array.sort() optionally accepts a cmp(a,b) function
-the debug hook function now has a new prototype debug_hook(event_type,sourcefile,line,functionname)
-fixed some debug info imprecision
***2003-10-01 ***
***version 0.4 alpha***
-faster VM
-sq_call will pop arguments and closure also in case of failure
-fixed a bug in sq_remove
-now the VM detects delegation cycles(and throws an exception)
-new operators ++ and --
-new operator ',' comma operator
-fixed some expression precedence issue
-fixed bug in sq_arraypop
***2003-09-15 ***
***version 0.3 alpha***
-fixed a bug in array::insert()
-optional Unicode core(define SQUNICODE or _UNICODE on Win32)
-sq_compiler uses a new reader function SQLEXREADFUNC
-the debug hook passes 'l' instead of 'line' for line callbacks
and 'c' instead of 'call' for call callbacks
-new array.extend() bulit-in function
-new API sq_clone()
***2003-09-10 ***
***version 0.2 pre-alpha***
-new completely reentrant VM (sq_open and sq_close are now obsolete)
-sq_newvm() has a new prototype
-allocators are now global and linked in the VM
-_newslot meta method added
-rawset creates a slot if doesn't exists
-the compiler error callback pass the vm handle(thanks Pierre Renaux)
-sq_setforeignptr() sq_getforeingptr() are now public
-sq_resume() now is possible to resume generators from C
-sq_getlasterror() retrieve the last thrown error
-improved docs
***2003-09-06 ***
***version 0.1 pre-alpha***
first release

@ -1,23 +0,0 @@
SQUIRREL=.
MAKE=make
sq32:
cd squirrel; $(MAKE)
cd sqstdlib; $(MAKE)
cd sq; $(MAKE)
sqprof:
cd squirrel; $(MAKE) sqprof
cd sqstdlib; $(MAKE) sqprof
cd sq; $(MAKE) sqprof
sq64:
cd squirrel; $(MAKE) sq64
cd sqstdlib; $(MAKE) sq64
cd sq; $(MAKE) sq64
clean:
$(MAKE) -C squirrel clean
$(MAKE) -C sqstdlib clean
$(MAKE) -C sq clean

@ -1,22 +0,0 @@
The programming language SQUIRREL 2.2.5 stable
--------------------------------------------------
The project has been compiled and run on Windows(Windows XP/2000 on Intel x86 Windows XP Pro on AMD x64) and
Linux(Slackware 9.0 on Intel x86, Fedora Core 4 on AMD x64).
Has been tested with the following compilers:
MS Visual C++ 6.0,7.0,7.1 and 8.0 (32 and 64bits)
MinGW gcc 3.2 (mingw special 20020817-1)
Cygnus gcc 3.2
Linux gcc 3.2.3
Linux gcc 4.0.0 (x86 64bits)
Feedback and suggestions are appreciated
project page - http://www.squirrel-lang.org
community forums - http://www.squirrel-lang.org/Forums
wiki - http://wiki.squirrel-lang.org
author - alberto@demichelis.net
END OF README

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

Loading…
Cancel
Save