Merge branch 'cpp-11' into crashlog_improvements
# Conflicts: # Makefile.src.in # projects/determineversion.vbs # source.list # src/crashlog.cpp # src/misc.cpp # src/os/unix/crashlog_unix.cpp # src/os/windows/crashlog_win.cpp # src/rev.h # src/thread/thread.h # src/thread/thread_morphos.cpp # src/thread/thread_none.cpp # src/thread/thread_os2.cpp # src/thread/thread_pthread.cpp # src/thread/thread_win32.cpp
This commit is contained in:
13
.dorpsgek.yml
Normal file
13
.dorpsgek.yml
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
notifications:
|
||||||
|
push:
|
||||||
|
irc:
|
||||||
|
- openttd
|
||||||
|
- openttd.notice
|
||||||
|
pull-request:
|
||||||
|
irc:
|
||||||
|
- openttd
|
||||||
|
- openttd.notice
|
||||||
|
issue:
|
||||||
|
irc:
|
||||||
|
- openttd
|
||||||
|
- openttd.notice
|
7
.github/ISSUE_TEMPLATE.md
vendored
Normal file
7
.github/ISSUE_TEMPLATE.md
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
## Version of OpenTTD
|
||||||
|
|
||||||
|
## Expected result
|
||||||
|
|
||||||
|
## Actual result
|
||||||
|
|
||||||
|
## Steps to reproduce
|
34
.github/stale.yml
vendored
Normal file
34
.github/stale.yml
vendored
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
daysUntilClose: 7
|
||||||
|
staleLabel: stale
|
||||||
|
closeComment: false
|
||||||
|
exemptMilestones: true
|
||||||
|
exemptAssignees: true
|
||||||
|
|
||||||
|
issues:
|
||||||
|
daysUntilStale: 60
|
||||||
|
exemptLabels:
|
||||||
|
- pinned
|
||||||
|
- security
|
||||||
|
- "good first issue"
|
||||||
|
- regression
|
||||||
|
markComment: >
|
||||||
|
This issue has been automatically marked as stale because it has not had any activity in the last two months.
|
||||||
|
|
||||||
|
If you believe the issue is still relevant, please test on the latest nightly and report back.
|
||||||
|
|
||||||
|
It will be closed if no further activity occurs within 7 days.
|
||||||
|
|
||||||
|
Thank you for your contributions.
|
||||||
|
|
||||||
|
pulls:
|
||||||
|
daysUntilStale: 30
|
||||||
|
exemptLabels:
|
||||||
|
- pinned
|
||||||
|
markComment: >
|
||||||
|
This pull request has been automatically marked as stale because it has not had any activity in the last month.
|
||||||
|
|
||||||
|
Please feel free to give a status update now, ping for review, or re-open when it's ready.
|
||||||
|
|
||||||
|
It will be closed if no further activity occurs within 7 days.
|
||||||
|
|
||||||
|
Thank you for your contributions.
|
3
.gitignore
vendored
3
.gitignore
vendored
@@ -13,6 +13,9 @@ bin/baseset/*
|
|||||||
!bin/baseset/no_sound.obs
|
!bin/baseset/no_sound.obs
|
||||||
!bin/baseset/no_music.obm
|
!bin/baseset/no_music.obm
|
||||||
!bin/baseset/orig_*.obm
|
!bin/baseset/orig_*.obm
|
||||||
|
!bin/game
|
||||||
|
bin/game/*
|
||||||
|
!bin/game/compat*.nut
|
||||||
!bin/scripts
|
!bin/scripts
|
||||||
bin/scripts/*
|
bin/scripts/*
|
||||||
!bin/scripts/*.example
|
!bin/scripts/*.example
|
||||||
|
172
Doxyfile
172
Doxyfile
@@ -8,9 +8,14 @@
|
|||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
# Project related configuration options
|
# Project related configuration options
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
|
DOXYFILE_ENCODING = UTF-8
|
||||||
PROJECT_NAME = OpenTTD
|
PROJECT_NAME = OpenTTD
|
||||||
|
PROJECT_NUMBER =
|
||||||
|
PROJECT_BRIEF =
|
||||||
|
PROJECT_LOGO =
|
||||||
OUTPUT_DIRECTORY = docs/source/
|
OUTPUT_DIRECTORY = docs/source/
|
||||||
CREATE_SUBDIRS = NO
|
CREATE_SUBDIRS = YES
|
||||||
|
ALLOW_UNICODE_NAMES = NO
|
||||||
OUTPUT_LANGUAGE = English
|
OUTPUT_LANGUAGE = English
|
||||||
BRIEF_MEMBER_DESC = YES
|
BRIEF_MEMBER_DESC = YES
|
||||||
REPEAT_BRIEF = YES
|
REPEAT_BRIEF = YES
|
||||||
@@ -32,22 +37,42 @@ STRIP_FROM_PATH = ./
|
|||||||
STRIP_FROM_INC_PATH =
|
STRIP_FROM_INC_PATH =
|
||||||
SHORT_NAMES = NO
|
SHORT_NAMES = NO
|
||||||
JAVADOC_AUTOBRIEF = YES
|
JAVADOC_AUTOBRIEF = YES
|
||||||
|
QT_AUTOBRIEF = NO
|
||||||
MULTILINE_CPP_IS_BRIEF = NO
|
MULTILINE_CPP_IS_BRIEF = NO
|
||||||
INHERIT_DOCS = YES
|
INHERIT_DOCS = YES
|
||||||
DISTRIBUTE_GROUP_DOC = NO
|
SEPARATE_MEMBER_PAGES = NO
|
||||||
TAB_SIZE = 2
|
TAB_SIZE = 2
|
||||||
ALIASES =
|
ALIASES =
|
||||||
|
TCL_SUBST =
|
||||||
OPTIMIZE_OUTPUT_FOR_C = YES
|
OPTIMIZE_OUTPUT_FOR_C = YES
|
||||||
OPTIMIZE_OUTPUT_JAVA = NO
|
OPTIMIZE_OUTPUT_JAVA = NO
|
||||||
|
OPTIMIZE_FOR_FORTRAN = NO
|
||||||
|
OPTIMIZE_OUTPUT_VHDL = NO
|
||||||
|
EXTENSION_MAPPING =
|
||||||
|
MARKDOWN_SUPPORT = YES
|
||||||
|
TOC_INCLUDE_HEADINGS = 0
|
||||||
|
AUTOLINK_SUPPORT = YES
|
||||||
|
BUILTIN_STL_SUPPORT = NO
|
||||||
|
CPP_CLI_SUPPORT = NO
|
||||||
|
SIP_SUPPORT = NO
|
||||||
|
IDL_PROPERTY_SUPPORT = YES
|
||||||
|
DISTRIBUTE_GROUP_DOC = NO
|
||||||
|
GROUP_NESTED_COMPOUNDS = NO
|
||||||
SUBGROUPING = YES
|
SUBGROUPING = YES
|
||||||
|
INLINE_GROUPED_CLASSES = NO
|
||||||
|
INLINE_SIMPLE_STRUCTS = NO
|
||||||
|
TYPEDEF_HIDES_STRUCT = NO
|
||||||
|
LOOKUP_CACHE_SIZE = 0
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
# Build related configuration options
|
# Build related configuration options
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
EXTRACT_ALL = NO
|
EXTRACT_ALL = NO
|
||||||
EXTRACT_PRIVATE = YES
|
EXTRACT_PRIVATE = YES
|
||||||
|
EXTRACT_PACKAGE = NO
|
||||||
EXTRACT_STATIC = YES
|
EXTRACT_STATIC = YES
|
||||||
EXTRACT_LOCAL_CLASSES = YES
|
EXTRACT_LOCAL_CLASSES = YES
|
||||||
EXTRACT_LOCAL_METHODS = YES
|
EXTRACT_LOCAL_METHODS = YES
|
||||||
|
EXTRACT_ANON_NSPACES = YES
|
||||||
HIDE_UNDOC_MEMBERS = NO
|
HIDE_UNDOC_MEMBERS = NO
|
||||||
HIDE_UNDOC_CLASSES = NO
|
HIDE_UNDOC_CLASSES = NO
|
||||||
HIDE_FRIEND_COMPOUNDS = NO
|
HIDE_FRIEND_COMPOUNDS = NO
|
||||||
@@ -55,11 +80,17 @@ HIDE_IN_BODY_DOCS = NO
|
|||||||
INTERNAL_DOCS = NO
|
INTERNAL_DOCS = NO
|
||||||
CASE_SENSE_NAMES = YES
|
CASE_SENSE_NAMES = YES
|
||||||
HIDE_SCOPE_NAMES = NO
|
HIDE_SCOPE_NAMES = NO
|
||||||
|
HIDE_COMPOUND_REFERENCE= NO
|
||||||
SHOW_INCLUDE_FILES = YES
|
SHOW_INCLUDE_FILES = YES
|
||||||
|
SHOW_GROUPED_MEMB_INC = NO
|
||||||
|
FORCE_LOCAL_INCLUDES = NO
|
||||||
INLINE_INFO = YES
|
INLINE_INFO = YES
|
||||||
SORT_MEMBER_DOCS = YES
|
SORT_MEMBER_DOCS = YES
|
||||||
SORT_BRIEF_DOCS = NO
|
SORT_BRIEF_DOCS = NO
|
||||||
|
SORT_MEMBERS_CTORS_1ST = NO
|
||||||
|
SORT_GROUP_NAMES = NO
|
||||||
SORT_BY_SCOPE_NAME = NO
|
SORT_BY_SCOPE_NAME = NO
|
||||||
|
STRICT_PROTO_MATCHING = NO
|
||||||
GENERATE_TODOLIST = YES
|
GENERATE_TODOLIST = YES
|
||||||
GENERATE_TESTLIST = YES
|
GENERATE_TESTLIST = YES
|
||||||
GENERATE_BUGLIST = YES
|
GENERATE_BUGLIST = YES
|
||||||
@@ -67,22 +98,27 @@ GENERATE_DEPRECATEDLIST= YES
|
|||||||
ENABLED_SECTIONS =
|
ENABLED_SECTIONS =
|
||||||
MAX_INITIALIZER_LINES = 30
|
MAX_INITIALIZER_LINES = 30
|
||||||
SHOW_USED_FILES = YES
|
SHOW_USED_FILES = YES
|
||||||
SHOW_DIRECTORIES = YES
|
SHOW_FILES = YES
|
||||||
|
SHOW_NAMESPACES = YES
|
||||||
FILE_VERSION_FILTER =
|
FILE_VERSION_FILTER =
|
||||||
|
LAYOUT_FILE =
|
||||||
|
CITE_BIB_FILES =
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
# configuration options related to warning and progress messages
|
# Configuration options related to warning and progress messages
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
QUIET = NO
|
QUIET = NO
|
||||||
WARNINGS = YES
|
WARNINGS = YES
|
||||||
WARN_IF_UNDOCUMENTED = YES
|
WARN_IF_UNDOCUMENTED = YES
|
||||||
WARN_IF_DOC_ERROR = YES
|
WARN_IF_DOC_ERROR = YES
|
||||||
WARN_NO_PARAMDOC = NO
|
WARN_NO_PARAMDOC = NO
|
||||||
|
WARN_AS_ERROR = NO
|
||||||
WARN_FORMAT = "$file:$line: $text"
|
WARN_FORMAT = "$file:$line: $text"
|
||||||
WARN_LOGFILE =
|
WARN_LOGFILE =
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
# configuration options related to the input files
|
# Configuration options related to the input files
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
INPUT = ./src/
|
INPUT = ./src/
|
||||||
|
INPUT_ENCODING = UTF-8
|
||||||
FILE_PATTERNS = *.c \
|
FILE_PATTERNS = *.c \
|
||||||
*.cc \
|
*.cc \
|
||||||
*.cxx \
|
*.cxx \
|
||||||
@@ -93,31 +129,38 @@ FILE_PATTERNS = *.c \
|
|||||||
RECURSIVE = YES
|
RECURSIVE = YES
|
||||||
EXCLUDE =
|
EXCLUDE =
|
||||||
EXCLUDE_SYMLINKS = NO
|
EXCLUDE_SYMLINKS = NO
|
||||||
EXCLUDE_PATTERNS = */3rdparty */.svn */script/api
|
EXCLUDE_PATTERNS = */3rdparty \
|
||||||
|
*/script/api
|
||||||
|
EXCLUDE_SYMBOLS =
|
||||||
EXAMPLE_PATH =
|
EXAMPLE_PATH =
|
||||||
EXAMPLE_PATTERNS = *
|
EXAMPLE_PATTERNS = *
|
||||||
EXAMPLE_RECURSIVE = NO
|
EXAMPLE_RECURSIVE = NO
|
||||||
IMAGE_PATH =./docs/
|
IMAGE_PATH = ./docs/
|
||||||
INPUT_FILTER =
|
INPUT_FILTER =
|
||||||
FILTER_PATTERNS =
|
FILTER_PATTERNS =
|
||||||
FILTER_SOURCE_FILES = NO
|
FILTER_SOURCE_FILES = NO
|
||||||
|
FILTER_SOURCE_PATTERNS =
|
||||||
|
USE_MDFILE_AS_MAINPAGE =
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
# configuration options related to source browsing
|
# Configuration options related to source browsing
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
SOURCE_BROWSER = YES
|
SOURCE_BROWSER = YES
|
||||||
INLINE_SOURCES = NO
|
INLINE_SOURCES = NO
|
||||||
STRIP_CODE_COMMENTS = YES
|
STRIP_CODE_COMMENTS = YES
|
||||||
REFERENCED_BY_RELATION = YES
|
REFERENCED_BY_RELATION = YES
|
||||||
REFERENCES_RELATION = YES
|
REFERENCES_RELATION = YES
|
||||||
|
REFERENCES_LINK_SOURCE = YES
|
||||||
|
SOURCE_TOOLTIPS = YES
|
||||||
|
USE_HTAGS = NO
|
||||||
VERBATIM_HEADERS = YES
|
VERBATIM_HEADERS = YES
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
# configuration options related to the alphabetical class index
|
# Configuration options related to the alphabetical class index
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
ALPHABETICAL_INDEX = NO
|
ALPHABETICAL_INDEX = NO
|
||||||
COLS_IN_ALPHA_INDEX = 5
|
COLS_IN_ALPHA_INDEX = 5
|
||||||
IGNORE_PREFIX =
|
IGNORE_PREFIX =
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
# configuration options related to the HTML output
|
# Configuration options related to the HTML output
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
GENERATE_HTML = YES
|
GENERATE_HTML = YES
|
||||||
HTML_OUTPUT = html
|
HTML_OUTPUT = html
|
||||||
@@ -125,19 +168,58 @@ HTML_FILE_EXTENSION = .html
|
|||||||
HTML_HEADER =
|
HTML_HEADER =
|
||||||
HTML_FOOTER =
|
HTML_FOOTER =
|
||||||
HTML_STYLESHEET =
|
HTML_STYLESHEET =
|
||||||
HTML_ALIGN_MEMBERS = YES
|
HTML_EXTRA_STYLESHEET =
|
||||||
GENERATE_HTMLHELP = YES
|
HTML_EXTRA_FILES =
|
||||||
|
HTML_COLORSTYLE_HUE = 220
|
||||||
|
HTML_COLORSTYLE_SAT = 100
|
||||||
|
HTML_COLORSTYLE_GAMMA = 80
|
||||||
|
HTML_TIMESTAMP = NO
|
||||||
|
HTML_DYNAMIC_MENUS = YES
|
||||||
|
HTML_DYNAMIC_SECTIONS = NO
|
||||||
|
HTML_INDEX_NUM_ENTRIES = 100
|
||||||
|
GENERATE_DOCSET = NO
|
||||||
|
DOCSET_FEEDNAME = "Doxygen generated docs"
|
||||||
|
DOCSET_BUNDLE_ID = org.doxygen.Project
|
||||||
|
DOCSET_PUBLISHER_ID = org.doxygen.Publisher
|
||||||
|
DOCSET_PUBLISHER_NAME = Publisher
|
||||||
|
GENERATE_HTMLHELP = NO
|
||||||
CHM_FILE =
|
CHM_FILE =
|
||||||
HHC_LOCATION =
|
HHC_LOCATION =
|
||||||
GENERATE_CHI = NO
|
GENERATE_CHI = NO
|
||||||
|
CHM_INDEX_ENCODING =
|
||||||
BINARY_TOC = NO
|
BINARY_TOC = NO
|
||||||
TOC_EXPAND = YES
|
TOC_EXPAND = YES
|
||||||
|
GENERATE_QHP = NO
|
||||||
|
QCH_FILE =
|
||||||
|
QHP_NAMESPACE = org.doxygen.Project
|
||||||
|
QHP_VIRTUAL_FOLDER = doc
|
||||||
|
QHP_CUST_FILTER_NAME =
|
||||||
|
QHP_CUST_FILTER_ATTRS =
|
||||||
|
QHP_SECT_FILTER_ATTRS =
|
||||||
|
QHG_LOCATION =
|
||||||
|
GENERATE_ECLIPSEHELP = NO
|
||||||
|
ECLIPSE_DOC_ID = org.doxygen.Project
|
||||||
DISABLE_INDEX = NO
|
DISABLE_INDEX = NO
|
||||||
ENUM_VALUES_PER_LINE = 4
|
|
||||||
GENERATE_TREEVIEW = YES
|
GENERATE_TREEVIEW = YES
|
||||||
|
ENUM_VALUES_PER_LINE = 4
|
||||||
TREEVIEW_WIDTH = 250
|
TREEVIEW_WIDTH = 250
|
||||||
|
EXT_LINKS_IN_WINDOW = NO
|
||||||
|
FORMULA_FONTSIZE = 10
|
||||||
|
FORMULA_TRANSPARENT = YES
|
||||||
|
USE_MATHJAX = NO
|
||||||
|
MATHJAX_FORMAT = HTML-CSS
|
||||||
|
MATHJAX_RELPATH = https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/
|
||||||
|
MATHJAX_EXTENSIONS =
|
||||||
|
MATHJAX_CODEFILE =
|
||||||
|
SEARCHENGINE = NO
|
||||||
|
SERVER_BASED_SEARCH = NO
|
||||||
|
EXTERNAL_SEARCH = NO
|
||||||
|
SEARCHENGINE_URL =
|
||||||
|
SEARCHDATA_FILE = searchdata.xml
|
||||||
|
EXTERNAL_SEARCH_ID =
|
||||||
|
EXTRA_SEARCH_MAPPINGS =
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
# configuration options related to the LaTeX output
|
# Configuration options related to the LaTeX output
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
GENERATE_LATEX = NO
|
GENERATE_LATEX = NO
|
||||||
LATEX_OUTPUT = latex
|
LATEX_OUTPUT = latex
|
||||||
@@ -147,12 +229,18 @@ COMPACT_LATEX = NO
|
|||||||
PAPER_TYPE = a4wide
|
PAPER_TYPE = a4wide
|
||||||
EXTRA_PACKAGES =
|
EXTRA_PACKAGES =
|
||||||
LATEX_HEADER =
|
LATEX_HEADER =
|
||||||
|
LATEX_FOOTER =
|
||||||
|
LATEX_EXTRA_STYLESHEET =
|
||||||
|
LATEX_EXTRA_FILES =
|
||||||
PDF_HYPERLINKS = NO
|
PDF_HYPERLINKS = NO
|
||||||
USE_PDFLATEX = NO
|
USE_PDFLATEX = NO
|
||||||
LATEX_BATCHMODE = NO
|
LATEX_BATCHMODE = NO
|
||||||
LATEX_HIDE_INDICES = NO
|
LATEX_HIDE_INDICES = NO
|
||||||
|
LATEX_SOURCE_CODE = NO
|
||||||
|
LATEX_BIB_STYLE = plain
|
||||||
|
LATEX_TIMESTAMP = NO
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
# configuration options related to the RTF output
|
# Configuration options related to the RTF output
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
GENERATE_RTF = NO
|
GENERATE_RTF = NO
|
||||||
RTF_OUTPUT = rtf
|
RTF_OUTPUT = rtf
|
||||||
@@ -160,27 +248,33 @@ COMPACT_RTF = NO
|
|||||||
RTF_HYPERLINKS = NO
|
RTF_HYPERLINKS = NO
|
||||||
RTF_STYLESHEET_FILE =
|
RTF_STYLESHEET_FILE =
|
||||||
RTF_EXTENSIONS_FILE =
|
RTF_EXTENSIONS_FILE =
|
||||||
|
RTF_SOURCE_CODE = NO
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
# configuration options related to the man page output
|
# Configuration options related to the man page output
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
GENERATE_MAN = NO
|
GENERATE_MAN = NO
|
||||||
MAN_OUTPUT = man
|
MAN_OUTPUT = man
|
||||||
MAN_EXTENSION = .3
|
MAN_EXTENSION = .3
|
||||||
|
MAN_SUBDIR =
|
||||||
MAN_LINKS = NO
|
MAN_LINKS = NO
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
# configuration options related to the XML output
|
# Configuration options related to the XML output
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
GENERATE_XML = NO
|
GENERATE_XML = NO
|
||||||
XML_OUTPUT = xml
|
XML_OUTPUT = xml
|
||||||
XML_SCHEMA =
|
|
||||||
XML_DTD =
|
|
||||||
XML_PROGRAMLISTING = YES
|
XML_PROGRAMLISTING = YES
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
# configuration options for the AutoGen Definitions output
|
# Configuration options related to the DOCBOOK output
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
GENERATE_DOCBOOK = NO
|
||||||
|
DOCBOOK_OUTPUT = docbook
|
||||||
|
DOCBOOK_PROGRAMLISTING = NO
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
# Configuration options for the AutoGen Definitions output
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
GENERATE_AUTOGEN_DEF = NO
|
GENERATE_AUTOGEN_DEF = NO
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
# configuration options related to the Perl module output
|
# Configuration options related to the Perl module output
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
GENERATE_PERLMOD = NO
|
GENERATE_PERLMOD = NO
|
||||||
PERLMOD_LATEX = NO
|
PERLMOD_LATEX = NO
|
||||||
@@ -195,42 +289,66 @@ EXPAND_ONLY_PREDEF = YES
|
|||||||
SEARCH_INCLUDES = YES
|
SEARCH_INCLUDES = YES
|
||||||
INCLUDE_PATH =
|
INCLUDE_PATH =
|
||||||
INCLUDE_FILE_PATTERNS =
|
INCLUDE_FILE_PATTERNS =
|
||||||
PREDEFINED = ENABLE_NETWORK WITH_ZLIB WITH_LZO WITH_LZMA WITH_SDL WITH_PNG WITH_FONTCONFIG WITH_FREETYPE WITH_ICU_SORT WITH_ICU_LAYOUT UNICODE _UNICODE _GNU_SOURCE FINAL=
|
PREDEFINED = WITH_ZLIB \
|
||||||
|
WITH_LZO \
|
||||||
|
WITH_LIBLZMA \
|
||||||
|
WITH_SDL \
|
||||||
|
WITH_PNG \
|
||||||
|
WITH_FONTCONFIG \
|
||||||
|
WITH_FREETYPE \
|
||||||
|
WITH_ICU_I18N \
|
||||||
|
WITH_ICU_LX \
|
||||||
|
UNICODE \
|
||||||
|
_UNICODE \
|
||||||
|
_GNU_SOURCE \
|
||||||
|
FINAL=
|
||||||
EXPAND_AS_DEFINED =
|
EXPAND_AS_DEFINED =
|
||||||
SKIP_FUNCTION_MACROS = YES
|
SKIP_FUNCTION_MACROS = YES
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
# Configuration::additions related to external references
|
# Configuration options related to external references
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
TAGFILES =
|
TAGFILES =
|
||||||
GENERATE_TAGFILE = objs/openttd.tag
|
GENERATE_TAGFILE = objs/openttd.tag
|
||||||
ALLEXTERNALS = NO
|
ALLEXTERNALS = NO
|
||||||
EXTERNAL_GROUPS = YES
|
EXTERNAL_GROUPS = YES
|
||||||
|
EXTERNAL_PAGES = YES
|
||||||
PERL_PATH = /usr/bin/perl
|
PERL_PATH = /usr/bin/perl
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
# Configuration options related to the dot tool
|
# Configuration options related to the dot tool
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
CLASS_DIAGRAMS = YES
|
CLASS_DIAGRAMS = YES
|
||||||
|
MSCGEN_PATH =
|
||||||
|
DIA_PATH =
|
||||||
HIDE_UNDOC_RELATIONS = YES
|
HIDE_UNDOC_RELATIONS = YES
|
||||||
HAVE_DOT = NO
|
HAVE_DOT = NO
|
||||||
|
DOT_NUM_THREADS = 0
|
||||||
|
DOT_FONTNAME = Helvetica
|
||||||
|
DOT_FONTSIZE = 10
|
||||||
|
DOT_FONTPATH =
|
||||||
CLASS_GRAPH = YES
|
CLASS_GRAPH = YES
|
||||||
COLLABORATION_GRAPH = YES
|
COLLABORATION_GRAPH = YES
|
||||||
GROUP_GRAPHS = YES
|
GROUP_GRAPHS = YES
|
||||||
UML_LOOK = NO
|
UML_LOOK = NO
|
||||||
|
UML_LIMIT_NUM_FIELDS = 10
|
||||||
TEMPLATE_RELATIONS = NO
|
TEMPLATE_RELATIONS = NO
|
||||||
INCLUDE_GRAPH = YES
|
INCLUDE_GRAPH = YES
|
||||||
INCLUDED_BY_GRAPH = YES
|
INCLUDED_BY_GRAPH = YES
|
||||||
CALL_GRAPH = NO
|
CALL_GRAPH = NO
|
||||||
|
CALLER_GRAPH = NO
|
||||||
GRAPHICAL_HIERARCHY = YES
|
GRAPHICAL_HIERARCHY = YES
|
||||||
DIRECTORY_GRAPH = YES
|
DIRECTORY_GRAPH = YES
|
||||||
DOT_IMAGE_FORMAT = png
|
DOT_IMAGE_FORMAT = png
|
||||||
|
INTERACTIVE_SVG = NO
|
||||||
DOT_PATH =
|
DOT_PATH =
|
||||||
DOTFILE_DIRS =
|
DOTFILE_DIRS =
|
||||||
|
MSCFILE_DIRS =
|
||||||
|
DIAFILE_DIRS =
|
||||||
|
PLANTUML_JAR_PATH =
|
||||||
|
PLANTUML_CFG_FILE =
|
||||||
|
PLANTUML_INCLUDE_PATH =
|
||||||
|
DOT_GRAPH_MAX_NODES = 50
|
||||||
MAX_DOT_GRAPH_DEPTH = 1000
|
MAX_DOT_GRAPH_DEPTH = 1000
|
||||||
DOT_TRANSPARENT = NO
|
DOT_TRANSPARENT = NO
|
||||||
DOT_MULTI_TARGETS = NO
|
DOT_MULTI_TARGETS = NO
|
||||||
GENERATE_LEGEND = YES
|
GENERATE_LEGEND = YES
|
||||||
DOT_CLEANUP = YES
|
DOT_CLEANUP = YES
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# Configuration::additions related to the search engine
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
SEARCHENGINE = NO
|
|
||||||
|
75
Jenkinsfile
vendored
75
Jenkinsfile
vendored
@@ -1,75 +0,0 @@
|
|||||||
#!/usr/bin/env groovy
|
|
||||||
|
|
||||||
// The stages we run one by one
|
|
||||||
// Please don't add more than 2 items in a single stage; this hurts performance
|
|
||||||
def ci_stages = [
|
|
||||||
"Checkers": [
|
|
||||||
"commit-checker": "openttd/compile-farm-ci:commit-checker",
|
|
||||||
],
|
|
||||||
"Compilers": [
|
|
||||||
"linux-amd64-gcc-6": "openttd/compile-farm-ci:linux-amd64-gcc-6",
|
|
||||||
"linux-amd64-clang-3.8": "openttd/compile-farm-ci:linux-amd64-clang-3.8",
|
|
||||||
],
|
|
||||||
"Archs": [
|
|
||||||
"linux-i386-gcc-6": "openttd/compile-farm-ci:linux-i386-gcc-6",
|
|
||||||
],
|
|
||||||
"OS": [
|
|
||||||
"osx-10.9": "openttd/compile-farm-ci:osx-10.9",
|
|
||||||
],
|
|
||||||
]
|
|
||||||
|
|
||||||
def generateStage(targets) {
|
|
||||||
return targets.collectEntries{ key, target ->
|
|
||||||
["${key}": generateCI(key, target)]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
def generateCI(display_name, image_name) {
|
|
||||||
return {
|
|
||||||
githubNotify context: 'openttd/' + display_name, description: 'This commit is being built', status: 'PENDING'
|
|
||||||
|
|
||||||
try {
|
|
||||||
dir("${display_name}") {
|
|
||||||
unstash "source"
|
|
||||||
|
|
||||||
docker.image("${image_name}").pull()
|
|
||||||
docker.image("${image_name}").withRun("--volumes-from ${hostname} --workdir " + pwd()) { c ->
|
|
||||||
sh "docker logs --follow ${c.id}; exit `docker wait ${c.id}`"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
githubNotify context: 'openttd/' + display_name, description: 'The commit looks good', status: 'SUCCESS'
|
|
||||||
}
|
|
||||||
catch (error) {
|
|
||||||
githubNotify context: 'openttd/' + display_name, description: 'The commit cannot be built', status: 'FAILURE'
|
|
||||||
throw error
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
node {
|
|
||||||
ansiColor('xterm') {
|
|
||||||
stage("Checkout") {
|
|
||||||
checkout scm
|
|
||||||
|
|
||||||
// Ensure user.email and user.name is set, otherwise rebase cannot work
|
|
||||||
sh "git config user.email 'info@openttd.org'"
|
|
||||||
sh "git config user.name 'OpenTTD CI'"
|
|
||||||
|
|
||||||
// Ensure we also have origin/master available
|
|
||||||
sh "git fetch --no-tags origin master:refs/remotes/origin/master"
|
|
||||||
|
|
||||||
// Try to rebase to origin/master; if this fails, fail the CI
|
|
||||||
sh "git rebase origin/master"
|
|
||||||
|
|
||||||
stash name: "source", useDefaultExcludes: false
|
|
||||||
}
|
|
||||||
|
|
||||||
ci_stages.each { ci_stage ->
|
|
||||||
stage(ci_stage.key) {
|
|
||||||
parallel generateStage(ci_stage.value)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@@ -54,7 +54,7 @@ ifdef OSXAPP
|
|||||||
$(Q)mkdir -p "$(BUNDLE_DIR)/$(OSXAPP)/Contents/Resources"
|
$(Q)mkdir -p "$(BUNDLE_DIR)/$(OSXAPP)/Contents/Resources"
|
||||||
$(Q)echo "APPL????" > "$(BUNDLE_DIR)/$(OSXAPP)/Contents/PkgInfo"
|
$(Q)echo "APPL????" > "$(BUNDLE_DIR)/$(OSXAPP)/Contents/PkgInfo"
|
||||||
$(Q)cp "$(ROOT_DIR)/os/macosx/openttd.icns" "$(BUNDLE_DIR)/$(OSXAPP)/Contents/Resources/openttd.icns"
|
$(Q)cp "$(ROOT_DIR)/os/macosx/openttd.icns" "$(BUNDLE_DIR)/$(OSXAPP)/Contents/Resources/openttd.icns"
|
||||||
$(Q)$(ROOT_DIR)/os/macosx/plistgen.sh "$(BUNDLE_DIR)/$(OSXAPP)" "$(REV)"
|
$(Q)$(ROOT_DIR)/os/macosx/plistgen.sh "$(BUNDLE_DIR)/$(OSXAPP)" "$(VERSION)"
|
||||||
$(Q)cp "$(ROOT_DIR)/os/macosx/splash.png" "$(BASESET_DIR)"
|
$(Q)cp "$(ROOT_DIR)/os/macosx/splash.png" "$(BASESET_DIR)"
|
||||||
endif
|
endif
|
||||||
ifeq ($(OS),UNIX)
|
ifeq ($(OS),UNIX)
|
||||||
@@ -89,12 +89,6 @@ ifdef MENU_DIR
|
|||||||
endif
|
endif
|
||||||
ifeq ($(TTD), openttd.exe)
|
ifeq ($(TTD), openttd.exe)
|
||||||
$(Q)unix2dos "$(BUNDLE_DIR)/docs/"* "$(BUNDLE_DIR)/README.md" "$(BUNDLE_DIR)/COPYING" "$(BUNDLE_DIR)/changelog.txt" "$(BUNDLE_DIR)/known-bugs.txt"
|
$(Q)unix2dos "$(BUNDLE_DIR)/docs/"* "$(BUNDLE_DIR)/README.md" "$(BUNDLE_DIR)/COPYING" "$(BUNDLE_DIR)/changelog.txt" "$(BUNDLE_DIR)/known-bugs.txt"
|
||||||
ifeq ($(OS), DOS)
|
|
||||||
$(Q)cp "$(ROOT_DIR)/os/dos/cwsdpmi/cwsdpmi.txt" "$(BUNDLE_DIR)/docs/"
|
|
||||||
ifndef STRIP
|
|
||||||
$(Q)cp "$(ROOT_DIR)/os/dos/cwsdpmi/cwsdpmi.exe" "$(TTD_DIR)/"
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
### Packing the current bundle into several compressed file formats ###
|
### Packing the current bundle into several compressed file formats ###
|
||||||
@@ -151,10 +145,10 @@ bundle_lha: bundle
|
|||||||
|
|
||||||
bundle_dmg: bundle
|
bundle_dmg: bundle
|
||||||
@echo '[BUNDLE] Creating $(BUNDLE_NAME).dmg'
|
@echo '[BUNDLE] Creating $(BUNDLE_NAME).dmg'
|
||||||
$(Q)mkdir -p "$(BUNDLES_DIR)/OpenTTD $(REV)"
|
$(Q)mkdir -p "$(BUNDLES_DIR)/OpenTTD $(VERSION)"
|
||||||
$(Q)cp -R "$(BUNDLE_DIR)/" "$(BUNDLES_DIR)/OpenTTD $(REV)"
|
$(Q)cp -R "$(BUNDLE_DIR)/" "$(BUNDLES_DIR)/OpenTTD $(VERSION)"
|
||||||
$(Q)hdiutil create -ov -format UDZO -srcfolder "$(BUNDLES_DIR)/OpenTTD $(REV)" "$(BUNDLES_DIR)/$(BUNDLE_NAME).dmg"
|
$(Q)hdiutil create -ov -format UDZO -srcfolder "$(BUNDLES_DIR)/OpenTTD $(VERSION)" "$(BUNDLES_DIR)/$(BUNDLE_NAME).dmg"
|
||||||
$(Q)rm -fr "$(BUNDLES_DIR)/OpenTTD $(REV)"
|
$(Q)rm -fr "$(BUNDLES_DIR)/OpenTTD $(VERSION)"
|
||||||
|
|
||||||
bundle_exe: all
|
bundle_exe: all
|
||||||
@echo '[BUNDLE] Creating $(BUNDLE_NAME).exe'
|
@echo '[BUNDLE] Creating $(BUNDLE_NAME).exe'
|
||||||
|
@@ -42,11 +42,22 @@ MD5SUM := $(shell [ "$(OS)" = "OSX" ] && echo "md5 -r" || echo "md5sum")
|
|||||||
NFO_FILES := $(GRF_DIR)/*.nfo $(GRF_DIR)/rivers/*.nfo
|
NFO_FILES := $(GRF_DIR)/*.nfo $(GRF_DIR)/rivers/*.nfo
|
||||||
PNG_FILES := $(GRF_DIR)/*.png $(GRF_DIR)/rivers/*.png
|
PNG_FILES := $(GRF_DIR)/*.png $(GRF_DIR)/rivers/*.png
|
||||||
|
|
||||||
|
# List of target files.
|
||||||
|
OBT_FILES := $(BIN_DIR)/orig_dos.obg
|
||||||
|
OBT_FILES += $(BIN_DIR)/orig_dos_de.obg
|
||||||
|
OBT_FILES += $(BIN_DIR)/orig_win.obg
|
||||||
|
OBT_FILES += $(BIN_DIR)/orig_dos.obs
|
||||||
|
OBT_FILES += $(BIN_DIR)/orig_win.obs
|
||||||
|
OBT_FILES += $(BIN_DIR)/no_sound.obs
|
||||||
|
OBT_FILES += $(BIN_DIR)/orig_dos.obm
|
||||||
|
OBT_FILES += $(BIN_DIR)/orig_win.obm
|
||||||
|
OBT_FILES += $(BIN_DIR)/no_music.obm
|
||||||
|
OBT_FILES += $(BIN_DIR)/orig_tto.obm
|
||||||
|
|
||||||
# Build the GRF.
|
# Build the GRF.
|
||||||
|
all: $(OBT_FILES)
|
||||||
ifdef GRFCODEC
|
ifdef GRFCODEC
|
||||||
all: $(BIN_DIR)/openttd.grf $(BIN_DIR)/orig_extra.grf $(BIN_DIR)/orig_dos.obg $(BIN_DIR)/orig_dos_de.obg $(BIN_DIR)/orig_win.obg $(BIN_DIR)/orig_dos.obs $(BIN_DIR)/orig_win.obs $(BIN_DIR)/no_sound.obs $(BIN_DIR)/orig_win.obm $(BIN_DIR)/no_music.obm
|
all: $(BIN_DIR)/openttd.grf $(BIN_DIR)/orig_extra.grf
|
||||||
else
|
|
||||||
all:
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
$(OBJS_DIR)/langfiles.tmp: $(LANG_DIR)/*.txt
|
$(OBJS_DIR)/langfiles.tmp: $(LANG_DIR)/*.txt
|
||||||
@@ -67,6 +78,10 @@ $(BIN_DIR)/%.obm: $(BASESET_DIR)/%.obm $(OBJS_DIR)/langfiles.tmp $(BASESET_DIR)/
|
|||||||
$(E) '$(STAGE) Updating $(notdir $@)'
|
$(E) '$(STAGE) Updating $(notdir $@)'
|
||||||
$(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 $< >$@
|
||||||
|
|
||||||
|
# Guard against trying to run GRFCODEC/NFORENUM without either being set.
|
||||||
|
ifdef GRFCODEC
|
||||||
|
ifdef NFORENUM
|
||||||
|
|
||||||
# Compile extra grf
|
# Compile extra grf
|
||||||
$(BIN_DIR)/openttd.grf: $(PNG_FILES) $(NFO_FILES) $(GRF_DIR)/assemble_nfo.awk
|
$(BIN_DIR)/openttd.grf: $(PNG_FILES) $(NFO_FILES) $(GRF_DIR)/assemble_nfo.awk
|
||||||
$(E) '$(STAGE) Assembling openttd.nfo'
|
$(E) '$(STAGE) Assembling openttd.nfo'
|
||||||
@@ -89,9 +104,12 @@ $(BIN_DIR)/orig_extra.grf: $(PNG_FILES) $(NFO_FILES) $(GRF_DIR)/assemble_nfo.awk
|
|||||||
$(Q) $(GRFCODEC) -n -s -e -p1 $(OBJS_DIR)/orig_extra.grf
|
$(Q) $(GRFCODEC) -n -s -e -p1 $(OBJS_DIR)/orig_extra.grf
|
||||||
$(Q)cp $(OBJS_DIR)/orig_extra.grf $(BIN_DIR)/orig_extra.grf
|
$(Q)cp $(OBJS_DIR)/orig_extra.grf $(BIN_DIR)/orig_extra.grf
|
||||||
|
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
# Clean up temporary files.
|
# Clean up temporary files.
|
||||||
clean:
|
clean:
|
||||||
$(Q)rm -f *.bak *.grf
|
$(Q)rm -f *.bak *.grf $(OBT_FILES)
|
||||||
|
|
||||||
# Clean up temporary files
|
# Clean up temporary files
|
||||||
mrproper: clean
|
mrproper: clean
|
||||||
|
@@ -78,7 +78,7 @@ depend:
|
|||||||
|
|
||||||
clean:
|
clean:
|
||||||
$(E) '$(STAGE) Cleaning up language files'
|
$(E) '$(STAGE) Cleaning up language files'
|
||||||
$(Q)rm -f strgen.o string.o alloc_func.o getoptdata.o table/strings.h $(STRGEN) $(LANGS) $(LANGS:%=$(BIN_DIR)/lang/%) lang/english.*
|
$(Q)rm -f strgen_base.o strgen.o string.o alloc_func.o getoptdata.o table/strings.h $(STRGEN) $(LANGS) $(LANGS:%=$(BIN_DIR)/lang/%) lang/english.*
|
||||||
|
|
||||||
mrproper: clean
|
mrproper: clean
|
||||||
$(Q)rm -rf $(BIN_DIR)/lang
|
$(Q)rm -rf $(BIN_DIR)/lang
|
||||||
|
@@ -58,7 +58,7 @@ depend:
|
|||||||
|
|
||||||
clean:
|
clean:
|
||||||
$(E) '$(STAGE) Cleaning up settings files'
|
$(E) '$(STAGE) Cleaning up settings files'
|
||||||
$(Q)rm -f settingsgen.o alloc_func.o getoptdata.o ini_load.o $(SETTINGSGEN) table/settings.h
|
$(Q)rm -f settingsgen.o alloc_func.o getoptdata.o string.o ini_load.o $(SETTINGSGEN) table/settings.h
|
||||||
|
|
||||||
mrproper: clean
|
mrproper: clean
|
||||||
|
|
||||||
|
@@ -92,6 +92,9 @@ MODIFIED := $(shell echo "$(VERSIONS)" | cut -f 3 -d' ')
|
|||||||
# Use autodetected revisions
|
# Use autodetected revisions
|
||||||
VERSION := $(shell echo "$(VERSIONS)" | cut -f 1 -d' ')
|
VERSION := $(shell echo "$(VERSIONS)" | cut -f 1 -d' ')
|
||||||
ISODATE := $(shell echo "$(VERSIONS)" | cut -f 2 -d' ')
|
ISODATE := $(shell echo "$(VERSIONS)" | cut -f 2 -d' ')
|
||||||
|
GITHASH := $(shell echo "$(VERSIONS)" | cut -f 4 -d' ')
|
||||||
|
ISTAG := $(shell echo "$(VERSIONS)" | cut -f 5 -d' ')
|
||||||
|
ISSTABLETAG := $(shell echo "$(VERSIONS)" | cut -f 6 -d' ')
|
||||||
|
|
||||||
# Make sure we have something in VERSION and ISODATE
|
# Make sure we have something in VERSION and ISODATE
|
||||||
ifeq ($(VERSION),)
|
ifeq ($(VERSION),)
|
||||||
@@ -140,7 +143,7 @@ $(OBJS_CPP:%.o=%.d): %.d: $(SRC_DIR)/%.cpp $(FILE_DEP)
|
|||||||
|
|
||||||
$(OBJS_MM:%.o=%.d): %.d: $(SRC_DIR)/%.mm $(FILE_DEP)
|
$(OBJS_MM:%.o=%.d): %.d: $(SRC_DIR)/%.mm $(FILE_DEP)
|
||||||
$(E) '$(STAGE) DEP $(<:$(SRC_DIR)/%.mm=%.mm)'
|
$(E) '$(STAGE) DEP $(<:$(SRC_DIR)/%.mm=%.mm)'
|
||||||
$(Q)$(CC_HOST) $(CFLAGS) -MM $< | sed 's@^$(@F:%.d=%.o):@$@ $(@:%.d=%.o):@' > $@
|
$(Q)$(CXX_HOST) $(CFLAGS) $(CXXFLAGS) -MM $< | sed 's@^$(@F:%.d=%.o):@$@ $(@:%.d=%.o):@' > $@
|
||||||
|
|
||||||
$(OBJS_RC:%.o=%.d): %.d: $(SRC_DIR)/%.rc $(FILE_DEP)
|
$(OBJS_RC:%.o=%.d): %.d: $(SRC_DIR)/%.rc $(FILE_DEP)
|
||||||
$(E) '$(STAGE) DEP $(<:$(SRC_DIR)/%.rc=%.rc)'
|
$(E) '$(STAGE) DEP $(<:$(SRC_DIR)/%.rc=%.rc)'
|
||||||
@@ -163,6 +166,19 @@ $(SRC_OBJS_DIR)/$(DEPEND): $(SRC_DIR)/depend/depend.cpp
|
|||||||
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) $(LDFLAGS_BUILD) -o $@ $<
|
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) $(LDFLAGS_BUILD) -o $@ $<
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# Macro for invoking a command on groups of 100 words at a time
|
||||||
|
# (analogous to xargs(1)). The macro invokes itself recursively
|
||||||
|
# until the list of words is depleted.
|
||||||
|
#
|
||||||
|
# Usage: $(call xargs,COMMAND,LIST)
|
||||||
|
#
|
||||||
|
# COMMAND should be a shell command to which the words will be
|
||||||
|
# appended as arguments in groups of 100.
|
||||||
|
define xargs
|
||||||
|
$(1) $(wordlist 1,100,$(2))
|
||||||
|
$(if $(word 101,$(2)),$(call xargs,$(1),$(wordlist 101,$(words $(2)),$(2))))
|
||||||
|
endef
|
||||||
|
|
||||||
# Make sure that only 'make depend' ALWAYS triggers a recheck
|
# Make sure that only 'make depend' ALWAYS triggers a recheck
|
||||||
ifeq ($(filter depend, $(MAKECMDGOALS)),)
|
ifeq ($(filter depend, $(MAKECMDGOALS)),)
|
||||||
Makefile.dep: $(FILE_DEP) $(SRCS:%=$(SRC_DIR)/%) $(CONFIG_CACHE_SOURCE) $(DEP)
|
Makefile.dep: $(FILE_DEP) $(SRCS:%=$(SRC_DIR)/%) $(CONFIG_CACHE_SOURCE) $(DEP)
|
||||||
@@ -174,14 +190,7 @@ endif
|
|||||||
$(Q)touch Makefile.dep.tmp
|
$(Q)touch Makefile.dep.tmp
|
||||||
|
|
||||||
# Calculate the deps via makedepend
|
# Calculate the deps via makedepend
|
||||||
$(Q)$(MAKEDEPEND) -f$(SRC_OBJS_DIR)/Makefile.dep.tmp -o.o -Y -v -- $(CFLAGS_MAKEDEP) -- $(SRCS:%=$(SRC_DIR)/%) 2>/dev/null
|
$(call xargs,$(Q)$(MAKEDEPEND) -f$(SRC_OBJS_DIR)/Makefile.dep.tmp -o.o -Y -v -a -- $(CFLAGS_MAKEDEP) -- 2>/dev/null,$(SRCS:%=$(SRC_DIR)/%))
|
||||||
|
|
||||||
# Convert x:/... paths to /x/... for mingw
|
|
||||||
ifeq ($(OS), MINGW)
|
|
||||||
@cat Makefile.dep.tmp | sed 's@/\([a-zA-Z]\):\/@\/\1\/@g' > Makefile.dep.tmp.mingw
|
|
||||||
@cp Makefile.dep.tmp.mingw Makefile.dep.tmp
|
|
||||||
@rm -f Makefile.dep.tmp.mingw
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Remove all comments and includes that don't start with $(SRC_DIR)
|
# Remove all comments and includes that don't start with $(SRC_DIR)
|
||||||
# Remove $(SRC_DIR) from object-file-name
|
# Remove $(SRC_DIR) from object-file-name
|
||||||
@@ -244,11 +253,11 @@ $(filter %sse4.o, $(OBJS_CPP)): %.o: $(SRC_DIR)/%.cpp $(DEP_MASK) $(FILE_DEP)
|
|||||||
|
|
||||||
$(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)$(CXX_HOST) $(CFLAGS) $(CXXFLAGS) -c -o $@ $<
|
||||||
|
|
||||||
$(OBJS_RC): %.o: $(SRC_DIR)/%.rc $(FILE_DEP)
|
$(OBJS_RC): %.o: $(SRC_DIR)/%.rc $(FILE_DEP)
|
||||||
$(E) '$(STAGE) Compiling resource $(<:$(SRC_DIR)/%.rc=%.rc)'
|
$(E) '$(STAGE) Compiling resource $(<:$(SRC_DIR)/%.rc=%.rc)'
|
||||||
$(Q)$(WINDRES) -o $@ -I `basename $<` $<
|
$(Q)$(WINDRES) -o $@ $<
|
||||||
|
|
||||||
$(BIN_DIR)/$(TTD): $(TTD)
|
$(BIN_DIR)/$(TTD): $(TTD)
|
||||||
$(Q)cp $(TTD) $(BIN_DIR)/$(TTD)
|
$(Q)cp $(TTD) $(BIN_DIR)/$(TTD)
|
||||||
@@ -265,18 +274,14 @@ $(TTD): $(OBJS) $(CONFIG_CACHE_LINKER)
|
|||||||
ifdef STRIP
|
ifdef STRIP
|
||||||
$(Q)$(STRIP) $@
|
$(Q)$(STRIP) $@
|
||||||
endif
|
endif
|
||||||
ifeq ($(OS), DOS)
|
|
||||||
$(E) '$(STAGE) Adding CWSDPMI stub to $@'
|
|
||||||
$(Q)$(ROOT_DIR)/os/dos/make_dos_binary_selfcontained.sh $(SRC_OBJS_DIR)/$@
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Revision files
|
# Revision files
|
||||||
|
|
||||||
$(SRC_DIR)/rev.cpp: $(CONFIG_CACHE_VERSION) $(CONFIG_CACHE_INVOCATION) $(SRC_DIR)/rev.cpp.in
|
$(SRC_DIR)/rev.cpp: $(CONFIG_CACHE_VERSION) $(CONFIG_CACHE_INVOCATION) $(SRC_DIR)/rev.cpp.in
|
||||||
$(Q)cat $(SRC_DIR)/rev.cpp.in | sed "s@\!\!ISODATE\!\!@$(ISODATE)@g;s@!!VERSION!!@$(VERSION)@g;s@!!MODIFIED!!@$(MODIFIED)@g;s@!!DATE!!@`date +%d.%m.%y`@g;s@\!\!CONFIGURE_INVOCATION\!\!@$(CONFIGURE_INVOCATION)@g;" > $(SRC_DIR)/rev.cpp
|
$(Q)cat $(SRC_DIR)/rev.cpp.in | sed "s@\!\!ISODATE\!\!@$(ISODATE)@g;s@!!VERSION!!@$(VERSION)@g;s@!!MODIFIED!!@$(MODIFIED)@g;s@!!DATE!!@`date +%d.%m.%y`@g;s@!!GITHASH!!@$(GITHASH)@g;s@!!ISTAG!!@$(ISTAG)@g;s@!!ISSTABLETAG!!@$(ISSTABLETAG)@g;s@\!\!CONFIGURE_INVOCATION\!\!@$(CONFIGURE_INVOCATION)@g;" > $(SRC_DIR)/rev.cpp
|
||||||
|
|
||||||
$(SRC_DIR)/os/windows/ottdres.rc: $(CONFIG_CACHE_VERSION) $(SRC_DIR)/os/windows/ottdres.rc.in
|
$(SRC_DIR)/os/windows/ottdres.rc: $(CONFIG_CACHE_VERSION) $(SRC_DIR)/os/windows/ottdres.rc.in
|
||||||
$(Q)cat $(SRC_DIR)/os/windows/ottdres.rc.in | sed "s@\!\!ISODATE\!\!@$(ISODATE)@g;s@!!VERSION!!@$(VERSION)@g;s@!!DATE!!@`date +%d.%m.%y`@g" > $(SRC_DIR)/os/windows/ottdres.rc
|
$(Q)cat $(SRC_DIR)/os/windows/ottdres.rc.in | sed "s@\!\!ISODATE\!\!@$(ISODATE)@g;s@!!VERSION!!@$(VERSION)@g;s@!!DATE!!@`date +%d.%m.%y`@g;s@!!GITHASH!!@$(GITHASH)@g;s@!!ISTAG!!@$(ISTAG)@g;s@!!ISSTABLETAG!!@$(ISSTABLETAG)@g" > $(SRC_DIR)/os/windows/ottdres.rc
|
||||||
|
|
||||||
FORCE:
|
FORCE:
|
||||||
|
|
||||||
|
96
README.md
96
README.md
@@ -78,7 +78,7 @@ When you are sure it is not already reported you should:
|
|||||||
After you have done all that you can report the bug. Please include the
|
After you have done all that you can report the bug. Please include the
|
||||||
following information in your bug report:
|
following information in your bug report:
|
||||||
|
|
||||||
- OpenTTD version (PLEASE test the latest SVN/nightly build)
|
- OpenTTD version (PLEASE test the latest Git revision/nightly build)
|
||||||
- Bug details, including instructions how to reproduce it
|
- Bug details, including instructions how to reproduce it
|
||||||
- Platform (Windows, Linux, FreeBSD, …) and compiler (including version) if
|
- Platform (Windows, Linux, FreeBSD, …) and compiler (including version) if
|
||||||
you compiled OpenTTD yourself.
|
you compiled OpenTTD yourself.
|
||||||
@@ -152,12 +152,10 @@ OpenTTD has been ported to several platforms and operating systems. It should
|
|||||||
not be very difficult to port it to a new platform. The currently working
|
not be very difficult to port it to a new platform. The currently working
|
||||||
platforms are:
|
platforms are:
|
||||||
|
|
||||||
- BeOS (SDL or Allegro)
|
|
||||||
- DOS (Allegro)
|
|
||||||
- FreeBSD (SDL)
|
- FreeBSD (SDL)
|
||||||
|
- Haiku (SDL)
|
||||||
- Linux (SDL or Allegro)
|
- Linux (SDL or Allegro)
|
||||||
- macOS (universal) (Cocoa video and sound drivers)
|
- macOS (universal) (Cocoa video and sound drivers)
|
||||||
- MorphOS (SDL)
|
|
||||||
- OpenBSD (SDL)
|
- OpenBSD (SDL)
|
||||||
- OS/2 (SDL)
|
- OS/2 (SDL)
|
||||||
- Windows (Win32 GDI (faster) or SDL or Allegro)
|
- Windows (Win32 GDI (faster) or SDL or Allegro)
|
||||||
@@ -310,22 +308,22 @@ your operating system:
|
|||||||
Different types of data or extensions go into different subdirectories of the
|
Different types of data or extensions go into different subdirectories of the
|
||||||
chosen main OpenTTD directory:
|
chosen main OpenTTD directory:
|
||||||
|
|
||||||
| data type | directory | additional info |
|
| data type | directory | additional info |
|
||||||
| --- | --- | --- |
|
| ------------------- | ----------------- | --------------------------- |
|
||||||
| Config File | (no subdirectory) | |
|
| Config File | (no subdirectory) | |
|
||||||
| Screenshots | screenshot | |
|
| Screenshots | screenshot | |
|
||||||
| Base Graphics | baseset | (or a subdirectory thereof) |
|
| Base Graphics | baseset | (or a subdirectory thereof) |
|
||||||
| Sound Sets | baseset | (or a subdirectory thereof) |
|
| Sound Sets | baseset | (or a subdirectory thereof) |
|
||||||
| NewGRFs | newgrf | (or a subdirectory thereof) |
|
| NewGRFs | newgrf | (or a subdirectory thereof) |
|
||||||
| 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/library | (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/library | (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 | |
|
||||||
|
|
||||||
The (automatically created) directory content_download is for OpenTTD's internal
|
The (automatically created) directory content_download is for OpenTTD's internal
|
||||||
use and no files should be added to it or its subdirectories manually.
|
use and no files should be added to it or its subdirectories manually.
|
||||||
@@ -476,6 +474,12 @@ The following is an explanation of the different statistics:
|
|||||||
- *World ticks* - Time spent on other world/landscape processing. This
|
- *World ticks* - Time spent on other world/landscape processing. This
|
||||||
includes towns growing, building animations, updates of farmland and trees,
|
includes towns growing, building animations, updates of farmland and trees,
|
||||||
and station rating updates.
|
and station rating updates.
|
||||||
|
- *GS/AI total*, *Game script*, and *AI players* - Time spent running logic
|
||||||
|
for game scripts and AI players. The total may show as less than the current
|
||||||
|
sum of the individual scripts, this is because AI players at lower
|
||||||
|
difficulty settings do not run every game tick, and hence contribute less
|
||||||
|
to the average across all ticks. Keep in mind that the "Current" figure is
|
||||||
|
also an average, just only over short term.
|
||||||
- *Link graph delay* - Time overruns of the cargo distribution link graph
|
- *Link graph delay* - Time overruns of the cargo distribution link graph
|
||||||
update thread. Usually the link graph is updated in a background thread,
|
update thread. Usually the link graph is updated in a background thread,
|
||||||
but these updates need to synchronise with the main game loop occasionally,
|
but these updates need to synchronise with the main game loop occasionally,
|
||||||
@@ -511,16 +515,15 @@ create one after closing.
|
|||||||
|
|
||||||
### Windows:
|
### Windows:
|
||||||
|
|
||||||
You need Microsoft Visual Studio .NET. Open the project file
|
You need Microsoft Visual Studio 2015 Update 3 or more recent. Open the project file
|
||||||
and it should build automatically. In case you want to build with SDL support
|
and it should build automatically. In case you want to build with SDL support
|
||||||
you need to add WITH_SDL to the project settings.
|
you need to add WITH_SDL to the project settings.
|
||||||
|
|
||||||
PNG (WITH_PNG) and ZLIB (WITH_ZLIB) support is enabled by default. For these
|
PNG (WITH_PNG), ZLIB (WITH_ZLIB), LZO (WITH_LZO), Freetype (WITH_FREETYPE) and
|
||||||
to work you need their development files. For best results, download the
|
libLZMA (WITH_LIBLZMA) support is enabled by default. For these to work you need their
|
||||||
openttd-useful.zip file from https://www.openttd.org/download-openttd-useful.
|
development files. To get them just use vcpkg from https://github.com/Microsoft/vcpkg
|
||||||
Put the header files into your compiler's include/ directory and the
|
using x86-windows-static and x64-windows-static triplets.
|
||||||
library (.lib) files into the lib/ directory.
|
For more help with VS see docs/Readme_Windows_MSVC.md.
|
||||||
For more help with VS see docs/Readme_Windows_MSVC.txt.
|
|
||||||
|
|
||||||
You can also build it using the Makefile with MSYS/MinGW or Cygwin/MinGW.
|
You can also build it using the Makefile with MSYS/MinGW or Cygwin/MinGW.
|
||||||
Please read the Makefile for more information.
|
Please read the Makefile for more information.
|
||||||
@@ -542,33 +545,15 @@ However, for the first build one has to do a '`./configure`' first.
|
|||||||
To make a universal binary type '`./configure --enabled-universal`'
|
To make a universal binary type '`./configure --enabled-universal`'
|
||||||
instead of '`./configure`'.
|
instead of '`./configure`'.
|
||||||
|
|
||||||
### BeOS:
|
### Haiku:
|
||||||
|
|
||||||
Use '`make`', but do a '`./configure`' before the first build.
|
Use '`make`', but do a '`./configure`' before the first build.
|
||||||
|
|
||||||
### MorphOS:
|
|
||||||
|
|
||||||
Use '`make`'. However, for the first build one has to do a '`./configure`'
|
|
||||||
first. Note that you need the MorphOS SDK, latest libnix updates (else C++
|
|
||||||
parts of OpenTTD will not build) and the powersdl.library SDK. Optionally libz,
|
|
||||||
libpng and freetype2 developer files.
|
|
||||||
|
|
||||||
### OS/2:
|
### OS/2:
|
||||||
|
|
||||||
A comprehensive GNU build environment is required to build the OS/2 version.
|
A comprehensive GNU build environment is required to build the OS/2 version.
|
||||||
See the docs/Readme_OS2.txt file for more information.
|
See the docs/Readme_OS2.txt file for more information.
|
||||||
|
|
||||||
### DOS:
|
|
||||||
|
|
||||||
A build environment with DJGPP is needed as well as libraries such as
|
|
||||||
Allegro, zlib and libpng, which all can be downloaded from the DJGPP
|
|
||||||
website. Compilation is straight forward: use '`make`', but do a '`./configure`'
|
|
||||||
before the first build. The build binary will need cwsdpmi.exe to be in
|
|
||||||
the same directory as the openttd executable. cwsdpmi.exe can be found in
|
|
||||||
the os/dos/cwsdpmi subdirectory. If you compile with stripping turned on a
|
|
||||||
binary will be generated that does not need cwsdpmi.exe by adding the
|
|
||||||
cswdstub.exe to the created OpenTTD binary.
|
|
||||||
|
|
||||||
### 7.1) Required/optional libraries
|
### 7.1) Required/optional libraries
|
||||||
|
|
||||||
The following libraries are used by OpenTTD for:
|
The following libraries are used by OpenTTD for:
|
||||||
@@ -594,8 +579,7 @@ no graphical user interface; you would be building a dedicated server.
|
|||||||
|
|
||||||
The following compilers are known to compile OpenTTD:
|
The following compilers are known to compile OpenTTD:
|
||||||
|
|
||||||
- Microsoft Visual C++ (MSVC) 2005, 2008 and 2010.
|
- Microsoft Visual C++ (MSVC) 2015, 2017 and 2019.
|
||||||
Version 2005 gives bogus warnings about scoping issues.
|
|
||||||
- GNU Compiler Collection (GCC) 3.3 - 4.4, 4.6 - 4.8.
|
- GNU Compiler Collection (GCC) 3.3 - 4.4, 4.6 - 4.8.
|
||||||
- Versions 4.1 and earlier give bogus warnings about uninitialised variables.
|
- Versions 4.1 and earlier give bogus warnings about uninitialised variables.
|
||||||
- Versions 4.4, 4.6 give bogus warnings about freeing non-heap objects.
|
- Versions 4.4, 4.6 give bogus warnings about freeing non-heap objects.
|
||||||
@@ -606,7 +590,8 @@ The following compilers are known to compile OpenTTD:
|
|||||||
|
|
||||||
The following compilers are known not to compile OpenTTD:
|
The following compilers are known not to compile OpenTTD:
|
||||||
|
|
||||||
- Microsoft Visual C++ (MSVC) 2003 and earlier.
|
- Microsoft Visual C++ (MSVC) 2013 and earlier.
|
||||||
|
These old versions do not support modern C++ language features.
|
||||||
- GNU Compiler Collection (GCC) 3.2 and earlier.
|
- GNU Compiler Collection (GCC) 3.2 and earlier.
|
||||||
These old versions fail due to OpenTTD's template usage.
|
These old versions fail due to OpenTTD's template usage.
|
||||||
- GNU Compiler Collection (GCC) 4.5. It optimizes enums too aggressively.
|
- GNU Compiler Collection (GCC) 4.5. It optimizes enums too aggressively.
|
||||||
@@ -656,7 +641,7 @@ someone else may have already started translating to the same language.
|
|||||||
|
|
||||||
So, now that you have notified the development team about your intention to
|
So, now that you have notified the development team about your intention to
|
||||||
translate (You did, right? Of course you did.) you can pick up english.txt
|
translate (You did, right? Of course you did.) you can pick up english.txt
|
||||||
(found in the SVN repository under /src/lang) and translate.
|
(found in the Git repository under /src/lang) and translate.
|
||||||
|
|
||||||
You must change the first two lines of the file appropriately:
|
You must change the first two lines of the file appropriately:
|
||||||
|
|
||||||
@@ -755,16 +740,6 @@ 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.
|
terms can be found in src/3rdparty/os2/getaddrinfo.c resp.
|
||||||
src/3rdparty/os2/getnameinfo.c.
|
src/3rdparty/os2/getnameinfo.c.
|
||||||
|
|
||||||
The exe2coff implementation in os/dos/exe2coff is available under the
|
|
||||||
GPL, with a number of additional terms. See os/dos/exe2coff/copying and
|
|
||||||
os/dos/exe2coff/copying.dj for the exact licensing terms.
|
|
||||||
|
|
||||||
The CWSDPMI implementation in os/dos/cwsdpmi is distributed under a
|
|
||||||
custom binary-only license that prohibits modification. The exact
|
|
||||||
licensing terms can be found in os/dos/cwsdpmi/cwsdpmi.txt. The sources
|
|
||||||
for these files can be downloaded at its author site, at
|
|
||||||
http://homer.rice.edu/~sandmann/cwsdpmi/csdpmi5s.zip.
|
|
||||||
|
|
||||||
CONTRIBUTING.md is adapted from
|
CONTRIBUTING.md is adapted from
|
||||||
[Bootstrap](https://github.com/twbs/bootstrap/blob/master/CONTRIBUTING.md)
|
[Bootstrap](https://github.com/twbs/bootstrap/blob/master/CONTRIBUTING.md)
|
||||||
under the [Creative Commons Attribution 3.0 Unported
|
under the [Creative Commons Attribution 3.0 Unported
|
||||||
@@ -782,6 +757,7 @@ terms for Bootstrap documentation.
|
|||||||
- Christoph Elsenhans (frosch) - General coding (since 0.6)
|
- Christoph Elsenhans (frosch) - General coding (since 0.6)
|
||||||
- Loïc Guilloux (glx) - Windows Expert (since 0.4.5)
|
- Loïc Guilloux (glx) - Windows Expert (since 0.4.5)
|
||||||
- Michael Lutz (michi_cc) - Path based signals (since 0.7)
|
- Michael Lutz (michi_cc) - Path based signals (since 0.7)
|
||||||
|
- Niels Martin Hansen (nielsm) - Music system, general coding (since 1.9)
|
||||||
- Owen Rudge (orudge) - Forum host, OS/2 port (since 0.1)
|
- Owen Rudge (orudge) - Forum host, OS/2 port (since 0.1)
|
||||||
- Peter Nelson (peter1138) - Spiritual descendant from newGRF gods (since 0.4.5)
|
- Peter Nelson (peter1138) - Spiritual descendant from newGRF gods (since 0.4.5)
|
||||||
- Ingo von Borstel (planetmaker) - General coding, Support (since 1.1)
|
- Ingo von Borstel (planetmaker) - General coding, Support (since 1.1)
|
||||||
|
69
azure-pipelines-ci.yml
Normal file
69
azure-pipelines-ci.yml
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
trigger:
|
||||||
|
- master
|
||||||
|
- release/*
|
||||||
|
pr:
|
||||||
|
- master
|
||||||
|
- release/*
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
- job: windows
|
||||||
|
displayName: 'Windows'
|
||||||
|
pool:
|
||||||
|
vmImage: 'VS2017-Win2016'
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
Win32:
|
||||||
|
BuildPlatform: 'Win32'
|
||||||
|
Win64:
|
||||||
|
BuildPlatform: 'x64'
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- template: azure-pipelines/templates/ci-git-rebase.yml
|
||||||
|
- template: azure-pipelines/templates/windows-dependencies.yml
|
||||||
|
- template: azure-pipelines/templates/ci-opengfx.yml
|
||||||
|
- template: azure-pipelines/templates/windows-build.yml
|
||||||
|
parameters:
|
||||||
|
BuildPlatform: $(BuildPlatform)
|
||||||
|
- script: |
|
||||||
|
call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x86
|
||||||
|
cd projects
|
||||||
|
call regression.bat
|
||||||
|
displayName: 'Test'
|
||||||
|
|
||||||
|
- job: linux
|
||||||
|
displayName: 'Linux'
|
||||||
|
pool:
|
||||||
|
vmImage: 'ubuntu-16.04'
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
commit-checker: {}
|
||||||
|
linux-amd64-clang-3.8: {}
|
||||||
|
linux-amd64-gcc-6: {}
|
||||||
|
linux-i386-gcc-6: {}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- template: azure-pipelines/templates/ci-git-rebase.yml
|
||||||
|
# The dockers already have the dependencies installed
|
||||||
|
# The dockers already have OpenGFX installed
|
||||||
|
- template: azure-pipelines/templates/linux-build.yml
|
||||||
|
parameters:
|
||||||
|
Image: compile-farm-ci
|
||||||
|
Tag: $(Agent.JobName)
|
||||||
|
|
||||||
|
- job: macos
|
||||||
|
displayName: 'MacOS'
|
||||||
|
pool:
|
||||||
|
vmImage: 'macOS-10.13'
|
||||||
|
|
||||||
|
variables:
|
||||||
|
MACOSX_DEPLOYMENT_TARGET: 10.9
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- template: azure-pipelines/templates/ci-git-rebase.yml
|
||||||
|
- template: azure-pipelines/templates/osx-dependencies.yml
|
||||||
|
- template: azure-pipelines/templates/ci-opengfx.yml
|
||||||
|
- template: azure-pipelines/templates/osx-build.yml
|
||||||
|
- script: 'make regression'
|
||||||
|
displayName: 'Test'
|
10
azure-pipelines-release-stable.yml
Normal file
10
azure-pipelines-release-stable.yml
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
trigger:
|
||||||
|
branches:
|
||||||
|
include:
|
||||||
|
- refs/tags/*
|
||||||
|
pr: none
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
- template: azure-pipelines/templates/release.yml
|
||||||
|
parameters:
|
||||||
|
IsStableRelease: true
|
7
azure-pipelines-release.yml
Normal file
7
azure-pipelines-release.yml
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
trigger: none
|
||||||
|
pr: none
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
- template: azure-pipelines/templates/release.yml
|
||||||
|
parameters:
|
||||||
|
IsStableRelease: false
|
16
azure-pipelines/changelog.sh
Executable file
16
azure-pipelines/changelog.sh
Executable file
@@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
tag=$(git describe --tags 2>/dev/null)
|
||||||
|
|
||||||
|
# If we are a tag, show the part of the changelog till (but excluding) the last stable
|
||||||
|
if [ -n "$tag" ]; then
|
||||||
|
grep='^[0-9]\.[0-9]\.[0-9][^-]'
|
||||||
|
next=$(cat changelog.txt | grep '^[0-9]' | awk 'BEGIN { show="false" } // { if (show=="true") print $0; if ($1=="'$tag'") show="true"} ' | grep "$grep" | head -n1 | sed 's/ .*//')
|
||||||
|
cat changelog.txt | awk 'BEGIN { show="false" } /^[0-9].[0-9].[0-9]/ { if ($1=="'$next'") show="false"; if ($1=="'$tag'") show="true";} // { if (show=="true") print $0 }'
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# In all other cases, show the git log of the last 7 days
|
||||||
|
revdate=$(git log -1 --pretty=format:"%ci")
|
||||||
|
last_week=$(date -u -d "$revdate -7days" +"%Y-%m-%d %H:%M")
|
||||||
|
git log --after="${last_week}" --pretty=fuller
|
60
azure-pipelines/manifest.sh
Executable file
60
azure-pipelines/manifest.sh
Executable file
@@ -0,0 +1,60 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
if [ -z "$1" ]; then
|
||||||
|
echo "Usage: $0 <folder-with-bundles>"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
FOLDER=$1
|
||||||
|
|
||||||
|
if [ ! -e .version ] || [ ! -e .release_date ]; then
|
||||||
|
echo "This script should be executed in the root of an extracted source tarball"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Find the name based on the version
|
||||||
|
if [ -e .is_stable ]; then
|
||||||
|
isTesting=$(cat .version | grep "RC\|beta" || true)
|
||||||
|
if [ -z "${isTesting}" ]; then
|
||||||
|
NAME="stable"
|
||||||
|
else
|
||||||
|
NAME="testing"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
NAME=$(cat .version | cut -d- -f2 | cut -d- -f-2)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Convert the date to a YAML date
|
||||||
|
DATE=$(cat .release_date | tr ' ' T | sed 's/TUTC/:00-00:00/')
|
||||||
|
VERSION=$(cat .version)
|
||||||
|
BASE="openttd-${VERSION}"
|
||||||
|
|
||||||
|
echo "name: ${NAME}" >> manifest.yaml
|
||||||
|
echo "date: ${DATE}" >> manifest.yaml
|
||||||
|
echo "base: ${BASE}-" >> manifest.yaml
|
||||||
|
echo "files:" >> manifest.yaml
|
||||||
|
|
||||||
|
error=""
|
||||||
|
for i in $(ls ${FOLDER} | grep -v ".txt$\|.md$\|sum$" | sort); do
|
||||||
|
if [ -n "$(echo $i | grep pdb.xz)" ]; then continue; fi
|
||||||
|
if [ -n "$(echo $i | grep dbg.deb)" ]; then continue; fi
|
||||||
|
|
||||||
|
if [ ! -e ${FOLDER}/$i.md5sum ] || [ ! -e ${FOLDER}/$i.sha1sum ] || [ ! -e ${FOLDER}/$i.sha256sum ]; then
|
||||||
|
echo "ERROR: missing checksum file for ${i}" 1>&2
|
||||||
|
error="y"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "- id: $i" >> manifest.yaml
|
||||||
|
echo " size: $(stat -c"%s" ${FOLDER}/$i)" >> manifest.yaml
|
||||||
|
echo " md5sum: $(cat ${FOLDER}/$i.md5sum | cut -d\ -f1)" >> manifest.yaml
|
||||||
|
echo " sha1sum: $(cat ${FOLDER}/$i.sha1sum | cut -d\ -f1)" >> manifest.yaml
|
||||||
|
echo " sha256sum: $(cat ${FOLDER}/$i.sha256sum | cut -d\ -f1)" >> manifest.yaml
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -n "${error}" ]; then
|
||||||
|
echo "ERROR: exiting due to earlier errors" 1>&2
|
||||||
|
exit 1
|
||||||
|
fi
|
10
azure-pipelines/templates/ci-git-rebase.yml
Normal file
10
azure-pipelines/templates/ci-git-rebase.yml
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
steps:
|
||||||
|
# Rebase to target branch for every PR. This means users don't have to
|
||||||
|
# rebase every time target branch changes. As long as the PR applies cleanly, we
|
||||||
|
# will validate it.
|
||||||
|
- bash: |
|
||||||
|
git config user.email 'info@openttd.org'
|
||||||
|
git config user.name 'OpenTTD CI'
|
||||||
|
git rebase origin/${SYSTEM_PULLREQUEST_TARGETBRANCH}
|
||||||
|
displayName: 'Rebase to target branch'
|
||||||
|
condition: and(succeeded(), eq(variables['Build.Reason'], 'PullRequest'))
|
8
azure-pipelines/templates/ci-opengfx.yml
Normal file
8
azure-pipelines/templates/ci-opengfx.yml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
steps:
|
||||||
|
- bash: |
|
||||||
|
set -ex
|
||||||
|
cd bin/baseset
|
||||||
|
curl -L https://binaries.openttd.org/extra/opengfx/0.5.2/opengfx-0.5.2-all.zip > opengfx-0.5.2-all.zip
|
||||||
|
unzip opengfx-0.5.2-all.zip
|
||||||
|
rm -f opengfx-0.5.2-all.zip
|
||||||
|
displayName: 'Install OpenGFX'
|
36
azure-pipelines/templates/linux-build.yml
Normal file
36
azure-pipelines/templates/linux-build.yml
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
parameters:
|
||||||
|
Image: ''
|
||||||
|
Tag: ''
|
||||||
|
ContainerCommand: ''
|
||||||
|
|
||||||
|
steps:
|
||||||
|
# 'envVars' in the 'Docker@1' task is a bit funky. When you want to use a
|
||||||
|
# variable, you have to quote it. But the quote is also sent directly to
|
||||||
|
# Docker and ends up in the variable, which you don't want. To work around
|
||||||
|
# this, we set the correct variable first (which becomes an env-variable), and
|
||||||
|
# pass that env-variable through to Docker. We cannot use the normal
|
||||||
|
# 'variables' entry, as we are a template. So that results in this bit of
|
||||||
|
# Bash code. Not because it is pretty, but it is the only way we found that
|
||||||
|
# works.
|
||||||
|
- bash: |
|
||||||
|
echo "##vso[task.setvariable variable=TARGET_BRANCH]${SYSTEM_PULLREQUEST_TARGETBRANCH}"
|
||||||
|
echo "Target branch is ${SYSTEM_PULLREQUEST_TARGETBRANCH}"
|
||||||
|
displayName: "Set target branch"
|
||||||
|
condition: and(succeeded(), eq(variables['Build.Reason'], 'PullRequest'))
|
||||||
|
|
||||||
|
- task: Docker@1
|
||||||
|
${{ if eq(parameters.Image, 'compile-farm') }}:
|
||||||
|
displayName: 'Build'
|
||||||
|
${{ if eq(parameters.Image, 'compile-farm-ci') }}:
|
||||||
|
displayName: 'Build and test'
|
||||||
|
# Run the commit-checker only if it is a Pull Request
|
||||||
|
condition: and(succeeded(), or(ne(variables['Agent.JobName'], 'commit-checker'), eq(variables['Build.Reason'], 'PullRequest')))
|
||||||
|
inputs:
|
||||||
|
command: 'Run an image'
|
||||||
|
imageName: openttd/${{ parameters.Image }}:${{ parameters.Tag }}
|
||||||
|
volumes: '$(Build.SourcesDirectory):$(Build.SourcesDirectory)'
|
||||||
|
workingDirectory: '$(Build.SourcesDirectory)'
|
||||||
|
containerCommand: ${{ parameters.ContainerCommand }}
|
||||||
|
runInBackground: false
|
||||||
|
envVars: |
|
||||||
|
TARGET_BRANCH
|
5
azure-pipelines/templates/linux-claim-bundles.yml
Normal file
5
azure-pipelines/templates/linux-claim-bundles.yml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
steps:
|
||||||
|
# Because we run the compile in a docker (under root), we are not owner
|
||||||
|
# of the 'bundles' folder. Fix that by executing a chown on it.
|
||||||
|
- bash: sudo chown -R $(id -u):$(id -g) bundles
|
||||||
|
displayName: 'Claim bundles folder back'
|
5
azure-pipelines/templates/osx-build.yml
Normal file
5
azure-pipelines/templates/osx-build.yml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
steps:
|
||||||
|
- script: './configure PKG_CONFIG_PATH=/usr/local/lib/pkgconfig --enable-static'
|
||||||
|
displayName: 'Configure'
|
||||||
|
- script: 'make -j2'
|
||||||
|
displayName: 'Build'
|
12
azure-pipelines/templates/osx-dependencies.yml
Normal file
12
azure-pipelines/templates/osx-dependencies.yml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
steps:
|
||||||
|
- script: |
|
||||||
|
set -ex
|
||||||
|
HOMEBREW_NO_AUTO_UPDATE=1 brew install pkg-config lzo xz libpng freetype
|
||||||
|
# Remove the dynamic libraries of these libraries, to ensure we use
|
||||||
|
# the static versions. That is important, as it is unlikely any
|
||||||
|
# end-user has these brew libraries installed.
|
||||||
|
rm /usr/local/Cellar/lzo/*/lib/*.dylib
|
||||||
|
rm /usr/local/Cellar/xz/*/lib/*.dylib
|
||||||
|
rm /usr/local/Cellar/libpng/*/lib/*.dylib
|
||||||
|
rm /usr/local/Cellar/freetype/*/lib/*.dylib
|
||||||
|
displayName: 'Install dependencies'
|
19
azure-pipelines/templates/release-bundles.yml
Normal file
19
azure-pipelines/templates/release-bundles.yml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
parameters:
|
||||||
|
CalculateChecksums: true
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- ${{ if eq(parameters.CalculateChecksums, true) }}:
|
||||||
|
- bash: |
|
||||||
|
set -ex
|
||||||
|
cd bundles
|
||||||
|
for i in $(ls); do
|
||||||
|
openssl dgst -r -md5 -hex $i > $i.md5sum
|
||||||
|
openssl dgst -r -sha1 -hex $i > $i.sha1sum
|
||||||
|
openssl dgst -r -sha256 -hex $i > $i.sha256sum
|
||||||
|
done
|
||||||
|
displayName: 'Calculate checksums'
|
||||||
|
- task: PublishBuildArtifacts@1
|
||||||
|
displayName: 'Publish bundles'
|
||||||
|
inputs:
|
||||||
|
PathtoPublish: bundles/
|
||||||
|
ArtifactName: bundles
|
20
azure-pipelines/templates/release-fetch-source.yml
Normal file
20
azure-pipelines/templates/release-fetch-source.yml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
# Fetch the source tarball as prepared by an earlier job. In there is the
|
||||||
|
# version predefined. This ensures we are all going to compile the same
|
||||||
|
# source with the same version.
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- checkout: none
|
||||||
|
- task: DownloadBuildArtifacts@0
|
||||||
|
displayName: 'Download source'
|
||||||
|
inputs:
|
||||||
|
downloadType: specific
|
||||||
|
itemPattern: 'bundles/openttd-*-source.tar.xz'
|
||||||
|
downloadPath: '$(Build.ArtifactStagingDirectory)'
|
||||||
|
- bash: tar --xz -xf ../a/bundles/openttd-*-source.tar.xz --strip-components=1
|
||||||
|
displayName: 'Extracting source'
|
||||||
|
- bash: |
|
||||||
|
set -e
|
||||||
|
VERSION=$(cat .version)
|
||||||
|
echo "${VERSION}"
|
||||||
|
echo "##vso[build.updatebuildnumber]${VERSION}"
|
||||||
|
displayName: 'Change BuildNumber to version'
|
20
azure-pipelines/templates/release-manifest.yml
Normal file
20
azure-pipelines/templates/release-manifest.yml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
parameters:
|
||||||
|
IsStableRelease: false
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- task: DownloadBuildArtifacts@0
|
||||||
|
displayName: 'Download all bundles'
|
||||||
|
inputs:
|
||||||
|
downloadType: specific
|
||||||
|
itemPattern: 'bundles/*'
|
||||||
|
downloadPath: '$(Build.ArtifactStagingDirectory)'
|
||||||
|
- ${{ if eq(parameters.IsStableRelease, true) }}:
|
||||||
|
- script: |
|
||||||
|
touch .is_stable
|
||||||
|
displayName: 'Mark as stable release'
|
||||||
|
- script: |
|
||||||
|
set -ex
|
||||||
|
./azure-pipelines/manifest.sh ../a/bundles/
|
||||||
|
mkdir -p bundles
|
||||||
|
mv manifest.yaml bundles/
|
||||||
|
displayName: 'Create manifest.yaml'
|
35
azure-pipelines/templates/release-prepare-source.yml
Normal file
35
azure-pipelines/templates/release-prepare-source.yml
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
# Set the revisions, and remove the VCS files.
|
||||||
|
# This ensures everything else picks up on the predefined versions, and not
|
||||||
|
# that because of some build process the version all of a sudden changes.
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- script: |
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
if [ -n "${SYSTEM_PULLREQUEST_PULLREQUESTNUMBER}" ]; then
|
||||||
|
# We are triggered from a GitHub Pull Request
|
||||||
|
git checkout -B pr${SYSTEM_PULLREQUEST_PULLREQUESTNUMBER}
|
||||||
|
elif [ "${BUILD_SOURCEBRANCHNAME}" = "merge" ] || [ "${BUILD_SOURCEBRANCHNAME}" = "head" ]; then
|
||||||
|
# We are manually triggered based on a GitHub Pull Request
|
||||||
|
PULLREQUESTNUMBER=$(echo ${BUILD_SOURCEBRANCH} | cut -d/ -f3)
|
||||||
|
git checkout -B pr${PULLREQUESTNUMBER}
|
||||||
|
else
|
||||||
|
git checkout -B ${BUILD_SOURCEBRANCHNAME}
|
||||||
|
fi
|
||||||
|
|
||||||
|
./findversion.sh > .ottdrev
|
||||||
|
./azure-pipelines/changelog.sh > .changelog
|
||||||
|
TZ='UTC' date +"%Y-%m-%d %H:%M UTC" > .release_date
|
||||||
|
cat .ottdrev | cut -f 1 -d$'\t' > .version
|
||||||
|
echo "Release Date: $(cat .release_date)"
|
||||||
|
echo "Revision: $(cat .ottdrev)"
|
||||||
|
echo "Version: $(cat .version)"
|
||||||
|
displayName: 'Create version files'
|
||||||
|
- script: |
|
||||||
|
set -e
|
||||||
|
VERSION=$(cat .version)
|
||||||
|
echo "${VERSION}"
|
||||||
|
echo "##vso[build.updatebuildnumber]${VERSION}"
|
||||||
|
displayName: 'Change BuildNumber to version'
|
||||||
|
- script: find . -iname .hg -or -iname .git -or -iname .svn | xargs rm -rf
|
||||||
|
displayName: 'Remove VCS information'
|
175
azure-pipelines/templates/release.yml
Normal file
175
azure-pipelines/templates/release.yml
Normal file
@@ -0,0 +1,175 @@
|
|||||||
|
parameters:
|
||||||
|
# If this is false, not all targets are triggered. For example:
|
||||||
|
# The NSIS installer for Windows and the creation of debs only work for
|
||||||
|
# releases. Not for any other type of binary. So they are skilled if this
|
||||||
|
# is set to false.
|
||||||
|
IsStableRelease: false
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
- job: source
|
||||||
|
displayName: 'Source'
|
||||||
|
pool:
|
||||||
|
vmImage: 'ubuntu-16.04'
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- template: release-prepare-source.yml
|
||||||
|
- script: |
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
# Rename the folder to openttd-NNN-source
|
||||||
|
mkdir openttd-$(Build.BuildNumber)
|
||||||
|
find . -maxdepth 1 -not -name . -not -name openttd-$(Build.BuildNumber) -exec mv {} openttd-$(Build.BuildNumber)/ \;
|
||||||
|
# Copy back release_date, as it is needed for the template 'release-bundles'
|
||||||
|
cp openttd-$(Build.BuildNumber)/.release_date .release_date
|
||||||
|
|
||||||
|
mkdir bundles
|
||||||
|
tar --xz -cf bundles/openttd-$(Build.BuildNumber)-source.tar.xz openttd-$(Build.BuildNumber)
|
||||||
|
zip -9 -r -q bundles/openttd-$(Build.BuildNumber)-source.zip openttd-$(Build.BuildNumber)
|
||||||
|
displayName: 'Create bundle'
|
||||||
|
- template: release-bundles.yml
|
||||||
|
|
||||||
|
- job: meta
|
||||||
|
displayName: 'Metadata'
|
||||||
|
pool:
|
||||||
|
vmImage: 'ubuntu-16.04'
|
||||||
|
dependsOn: source
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- template: release-fetch-source.yml
|
||||||
|
- script: |
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
mkdir -p bundles
|
||||||
|
cp .changelog bundles/changelog.txt
|
||||||
|
cp .release_date bundles/released.txt
|
||||||
|
cp README.md bundles/README.md
|
||||||
|
displayName: 'Copy meta files'
|
||||||
|
- template: release-bundles.yml
|
||||||
|
parameters:
|
||||||
|
CalculateChecksums: false
|
||||||
|
|
||||||
|
- job: docs
|
||||||
|
displayName: 'Docs'
|
||||||
|
pool:
|
||||||
|
vmImage: 'ubuntu-16.04'
|
||||||
|
dependsOn: source
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- template: release-fetch-source.yml
|
||||||
|
- template: linux-build.yml
|
||||||
|
parameters:
|
||||||
|
Image: compile-farm
|
||||||
|
ContainerCommand: '$(Build.BuildNumber)'
|
||||||
|
Tag: docs
|
||||||
|
- template: linux-claim-bundles.yml
|
||||||
|
- template: release-bundles.yml
|
||||||
|
|
||||||
|
- job: windows
|
||||||
|
displayName: 'Windows'
|
||||||
|
pool:
|
||||||
|
vmImage: 'VS2017-Win2016'
|
||||||
|
dependsOn: source
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
Win32:
|
||||||
|
BuildPlatform: 'Win32'
|
||||||
|
BundlePlatform: 'win32'
|
||||||
|
Win64:
|
||||||
|
BuildPlatform: 'x64'
|
||||||
|
BundlePlatform: 'win64'
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- template: release-fetch-source.yml
|
||||||
|
- template: windows-dependencies.yml
|
||||||
|
- template: windows-dependency-zip.yml
|
||||||
|
- ${{ if eq(parameters.IsStableRelease, true) }}:
|
||||||
|
- template: windows-dependency-nsis.yml
|
||||||
|
- template: windows-build.yml
|
||||||
|
parameters:
|
||||||
|
BuildPlatform: $(BuildPlatform)
|
||||||
|
- bash: |
|
||||||
|
set -ex
|
||||||
|
make -f Makefile.msvc bundle_pdb bundle_zip PLATFORM=$(BundlePlatform) BUNDLE_NAME=openttd-$(Build.BuildNumber)-windows-$(BundlePlatform)
|
||||||
|
displayName: 'Create bundles'
|
||||||
|
- ${{ if eq(parameters.IsStableRelease, true) }}:
|
||||||
|
- bash: |
|
||||||
|
set -ex
|
||||||
|
# NSIS will be part of the Hosted image in the next update. Till then, we set the PATH ourself
|
||||||
|
export PATH="${PATH}:/c/Program Files (x86)/NSIS"
|
||||||
|
make -f Makefile.msvc bundle_exe PLATFORM=$(BundlePlatform) BUNDLE_NAME=openttd-$(Build.BuildNumber)-windows-$(BundlePlatform)
|
||||||
|
displayName: 'Create installer bundle'
|
||||||
|
- template: release-bundles.yml
|
||||||
|
|
||||||
|
- ${{ if eq(parameters.IsStableRelease, true) }}:
|
||||||
|
- job: linux_stable
|
||||||
|
displayName: 'Linux'
|
||||||
|
pool:
|
||||||
|
vmImage: 'ubuntu-16.04'
|
||||||
|
dependsOn: source
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
linux-ubuntu-xenial-i386-gcc: {}
|
||||||
|
linux-ubuntu-xenial-amd64-gcc: {}
|
||||||
|
linux-ubuntu-bionic-i386-gcc: {}
|
||||||
|
linux-ubuntu-bionic-amd64-gcc: {}
|
||||||
|
linux-debian-jessie-i386-gcc: {}
|
||||||
|
linux-debian-jessie-amd64-gcc: {}
|
||||||
|
linux-debian-stretch-i386-gcc: {}
|
||||||
|
linux-debian-stretch-amd64-gcc: {}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- template: release-fetch-source.yml
|
||||||
|
- template: linux-build.yml
|
||||||
|
parameters:
|
||||||
|
Image: compile-farm
|
||||||
|
ContainerCommand: '$(Build.BuildNumber)'
|
||||||
|
Tag: $(Agent.JobName)
|
||||||
|
- template: linux-claim-bundles.yml
|
||||||
|
- template: release-bundles.yml
|
||||||
|
|
||||||
|
- job: macos
|
||||||
|
displayName: 'MacOS'
|
||||||
|
pool:
|
||||||
|
vmImage: 'macOS-10.13'
|
||||||
|
dependsOn: source
|
||||||
|
|
||||||
|
variables:
|
||||||
|
MACOSX_DEPLOYMENT_TARGET: 10.9
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- template: release-fetch-source.yml
|
||||||
|
- template: osx-dependencies.yml
|
||||||
|
- template: osx-build.yml
|
||||||
|
- script: 'make bundle_zip bundle_dmg BUNDLE_NAME=openttd-$(Build.BuildNumber)-macosx'
|
||||||
|
displayName: 'Create bundles'
|
||||||
|
- template: release-bundles.yml
|
||||||
|
|
||||||
|
- job: manifest
|
||||||
|
displayName: 'Manifest'
|
||||||
|
pool:
|
||||||
|
vmImage: 'ubuntu-16.04'
|
||||||
|
dependsOn:
|
||||||
|
- source
|
||||||
|
- docs
|
||||||
|
- windows
|
||||||
|
- ${{ if eq(parameters.IsStableRelease, true) }}:
|
||||||
|
- linux_stable
|
||||||
|
- macos
|
||||||
|
# "Skipped" is not a status, and is not succeeded. So it seems to be
|
||||||
|
# considered failed. So we trigger if all the earlier jobs are done (which
|
||||||
|
# might be succeeded, failed, or skipped), and run this job. This is not
|
||||||
|
# optimal, but given the rules, it is the only way to get this to work (as
|
||||||
|
# some jobs might be skipped).
|
||||||
|
condition: succeededOrFailed()
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- template: release-fetch-source.yml
|
||||||
|
- template: release-manifest.yml
|
||||||
|
${{ if eq(parameters.IsStableRelease, true) }}:
|
||||||
|
parameters:
|
||||||
|
IsStableRelease: true
|
||||||
|
- template: release-bundles.yml
|
||||||
|
parameters:
|
||||||
|
CalculateChecksums: false
|
11
azure-pipelines/templates/windows-build.yml
Normal file
11
azure-pipelines/templates/windows-build.yml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
parameters:
|
||||||
|
BuildPlatform: ''
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- task: VSBuild@1
|
||||||
|
displayName: 'Build'
|
||||||
|
inputs:
|
||||||
|
solution: 'projects/openttd_vs141.sln'
|
||||||
|
platform: ${{ parameters.BuildPlatform }}
|
||||||
|
configuration: Release
|
||||||
|
maximumCpuCount: true
|
14
azure-pipelines/templates/windows-dependencies.yml
Normal file
14
azure-pipelines/templates/windows-dependencies.yml
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
steps:
|
||||||
|
- bash: |
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
curl -L https://github.com/OpenTTD/CompileFarm/releases/download/latest/windows-dependencies.zip > windows-dependencies.zip
|
||||||
|
unzip windows-dependencies.zip
|
||||||
|
rm -f windows-dependencies.zip
|
||||||
|
|
||||||
|
mv windows-dependencies/installed /c/vcpkg/
|
||||||
|
rm -rf windows-dependencies
|
||||||
|
displayName: 'Install dependencies'
|
||||||
|
workingDirectory: $(Build.ArtifactStagingDirectory)
|
||||||
|
- script: c:\vcpkg\vcpkg.exe integrate install
|
||||||
|
displayName: 'Integrate vcpkg'
|
26
azure-pipelines/templates/windows-dependency-nsis.yml
Normal file
26
azure-pipelines/templates/windows-dependency-nsis.yml
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
parameters:
|
||||||
|
condition: true
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- bash: |
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
mkdir nsis-plugin; cd nsis-plugin
|
||||||
|
curl -L https://devs.openttd.org/~truebrain/nsis-plugins/Nsis7z.zip > Nsis7z.zip
|
||||||
|
unzip Nsis7z.zip
|
||||||
|
cp -R Plugins/* "/c/Program Files (x86)/NSIS/Plugins/"
|
||||||
|
cd ..; rm -rf nsis-plugin
|
||||||
|
|
||||||
|
mkdir nsis-plugin; cd nsis-plugin
|
||||||
|
curl -L https://devs.openttd.org/~truebrain/nsis-plugins/NsisGetVersion.zip > NsisGetVersion.zip
|
||||||
|
unzip NsisGetVersion.zip
|
||||||
|
cp -R Plugins/* "/c/Program Files (x86)/NSIS/Plugins/x86-ansi/"
|
||||||
|
cd ..; rm -rf nsis-plugin
|
||||||
|
|
||||||
|
mkdir nsis-plugin; cd nsis-plugin
|
||||||
|
curl -L https://devs.openttd.org/~truebrain/nsis-plugins/NsisFindProc.zip > NsisFindProc.zip
|
||||||
|
unzip NsisFindProc.zip
|
||||||
|
cp -R *.dll "/c/Program Files (x86)/NSIS/Plugins/x86-ansi/"
|
||||||
|
cd ..; rm -rf nsis-plugin
|
||||||
|
displayName: 'Install NSIS with the 7z, GetVersion, and FindProc plugins'
|
||||||
|
condition: and(succeeded(), ${{ parameters.condition }})
|
5
azure-pipelines/templates/windows-dependency-zip.yml
Normal file
5
azure-pipelines/templates/windows-dependency-zip.yml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
steps:
|
||||||
|
- bash: |
|
||||||
|
set -ex
|
||||||
|
choco install zip
|
||||||
|
displayName: 'Install zip'
|
@@ -367,3 +367,17 @@ AIOrder.AIOF_UNLOAD_FLAGS <- AIOrder.OF_UNLOAD_FLAGS
|
|||||||
AIOrder.AIOF_LOAD_FLAGS <- AIOrder.OF_LOAD_FLAGS
|
AIOrder.AIOF_LOAD_FLAGS <- AIOrder.OF_LOAD_FLAGS
|
||||||
AIOrder.AIOF_DEPOT_FLAGS <- AIOrder.OF_DEPOT_FLAGS
|
AIOrder.AIOF_DEPOT_FLAGS <- AIOrder.OF_DEPOT_FLAGS
|
||||||
AIOrder.AIOF_INVALID <- AIOrder.OF_INVALID
|
AIOrder.AIOF_INVALID <- AIOrder.OF_INVALID
|
||||||
|
|
||||||
|
/* 1.9 adds a vehicle type parameter. */
|
||||||
|
AIBridge._GetName <- AIBridge.GetName;
|
||||||
|
AIBridge.GetName <- function(bridge_id)
|
||||||
|
{
|
||||||
|
return AIBridge._GetName(bridge_id, AIVehicle.VT_RAIL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 1.9 adds parent_group_id to CreateGroup function */
|
||||||
|
AIGroup._CreateGroup <- AIGroup.CreateGroup;
|
||||||
|
AIGroup.CreateGroup <- function(vehicle_type)
|
||||||
|
{
|
||||||
|
return AIGroup._CreateGroup(vehicle_type, AIGroup.GROUP_INVALID);
|
||||||
|
}
|
||||||
|
@@ -119,3 +119,17 @@ AIOrder.AIOF_UNLOAD_FLAGS <- AIOrder.OF_UNLOAD_FLAGS
|
|||||||
AIOrder.AIOF_LOAD_FLAGS <- AIOrder.OF_LOAD_FLAGS
|
AIOrder.AIOF_LOAD_FLAGS <- AIOrder.OF_LOAD_FLAGS
|
||||||
AIOrder.AIOF_DEPOT_FLAGS <- AIOrder.OF_DEPOT_FLAGS
|
AIOrder.AIOF_DEPOT_FLAGS <- AIOrder.OF_DEPOT_FLAGS
|
||||||
AIOrder.AIOF_INVALID <- AIOrder.OF_INVALID
|
AIOrder.AIOF_INVALID <- AIOrder.OF_INVALID
|
||||||
|
|
||||||
|
/* 1.9 adds a vehicle type parameter. */
|
||||||
|
AIBridge._GetName <- AIBridge.GetName;
|
||||||
|
AIBridge.GetName <- function(bridge_id)
|
||||||
|
{
|
||||||
|
return AIBridge._GetName(bridge_id, AIVehicle.VT_RAIL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 1.9 adds parent_group_id to CreateGroup function */
|
||||||
|
AIGroup._CreateGroup <- AIGroup.CreateGroup;
|
||||||
|
AIGroup.CreateGroup <- function(vehicle_type)
|
||||||
|
{
|
||||||
|
return AIGroup._CreateGroup(vehicle_type, AIGroup.GROUP_INVALID);
|
||||||
|
}
|
||||||
|
@@ -56,3 +56,17 @@ AIOrder.AIOF_UNLOAD_FLAGS <- AIOrder.OF_UNLOAD_FLAGS
|
|||||||
AIOrder.AIOF_LOAD_FLAGS <- AIOrder.OF_LOAD_FLAGS
|
AIOrder.AIOF_LOAD_FLAGS <- AIOrder.OF_LOAD_FLAGS
|
||||||
AIOrder.AIOF_DEPOT_FLAGS <- AIOrder.OF_DEPOT_FLAGS
|
AIOrder.AIOF_DEPOT_FLAGS <- AIOrder.OF_DEPOT_FLAGS
|
||||||
AIOrder.AIOF_INVALID <- AIOrder.OF_INVALID
|
AIOrder.AIOF_INVALID <- AIOrder.OF_INVALID
|
||||||
|
|
||||||
|
/* 1.9 adds a vehicle type parameter. */
|
||||||
|
AIBridge._GetName <- AIBridge.GetName;
|
||||||
|
AIBridge.GetName <- function(bridge_id)
|
||||||
|
{
|
||||||
|
return AIBridge._GetName(bridge_id, AIVehicle.VT_RAIL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 1.9 adds parent_group_id to CreateGroup function */
|
||||||
|
AIGroup._CreateGroup <- AIGroup.CreateGroup;
|
||||||
|
AIGroup.CreateGroup <- function(vehicle_type)
|
||||||
|
{
|
||||||
|
return AIGroup._CreateGroup(vehicle_type, AIGroup.GROUP_INVALID);
|
||||||
|
}
|
||||||
|
8
bin/ai/compat_1.10.nut
Normal file
8
bin/ai/compat_1.10.nut
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of OpenTTD.
|
||||||
|
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||||
|
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
@@ -8,3 +8,17 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
AILog.Info("1.2 API compatibility in effect.");
|
AILog.Info("1.2 API compatibility in effect.");
|
||||||
|
|
||||||
|
/* 1.9 adds a vehicle type parameter. */
|
||||||
|
AIBridge._GetName <- AIBridge.GetName;
|
||||||
|
AIBridge.GetName <- function(bridge_id)
|
||||||
|
{
|
||||||
|
return AIBridge._GetName(bridge_id, AIVehicle.VT_RAIL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 1.9 adds parent_group_id to CreateGroup function */
|
||||||
|
AIGroup._CreateGroup <- AIGroup.CreateGroup;
|
||||||
|
AIGroup.CreateGroup <- function(vehicle_type)
|
||||||
|
{
|
||||||
|
return AIGroup._CreateGroup(vehicle_type, AIGroup.GROUP_INVALID);
|
||||||
|
}
|
||||||
|
@@ -8,3 +8,17 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
AILog.Info("1.3 API compatibility in effect.");
|
AILog.Info("1.3 API compatibility in effect.");
|
||||||
|
|
||||||
|
/* 1.9 adds a vehicle type parameter. */
|
||||||
|
AIBridge._GetName <- AIBridge.GetName;
|
||||||
|
AIBridge.GetName <- function(bridge_id)
|
||||||
|
{
|
||||||
|
return AIBridge._GetName(bridge_id, AIVehicle.VT_RAIL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 1.9 adds parent_group_id to CreateGroup function */
|
||||||
|
AIGroup._CreateGroup <- AIGroup.CreateGroup;
|
||||||
|
AIGroup.CreateGroup <- function(vehicle_type)
|
||||||
|
{
|
||||||
|
return AIGroup._CreateGroup(vehicle_type, AIGroup.GROUP_INVALID);
|
||||||
|
}
|
||||||
|
@@ -8,3 +8,17 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
AILog.Info("1.4 API compatibility in effect.");
|
AILog.Info("1.4 API compatibility in effect.");
|
||||||
|
|
||||||
|
/* 1.9 adds a vehicle type parameter. */
|
||||||
|
AIBridge._GetName <- AIBridge.GetName;
|
||||||
|
AIBridge.GetName <- function(bridge_id)
|
||||||
|
{
|
||||||
|
return AIBridge._GetName(bridge_id, AIVehicle.VT_RAIL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 1.9 adds parent_group_id to CreateGroup function */
|
||||||
|
AIGroup._CreateGroup <- AIGroup.CreateGroup;
|
||||||
|
AIGroup.CreateGroup <- function(vehicle_type)
|
||||||
|
{
|
||||||
|
return AIGroup._CreateGroup(vehicle_type, AIGroup.GROUP_INVALID);
|
||||||
|
}
|
||||||
|
@@ -8,3 +8,17 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
AILog.Info("1.5 API compatibility in effect.");
|
AILog.Info("1.5 API compatibility in effect.");
|
||||||
|
|
||||||
|
/* 1.9 adds a vehicle type parameter. */
|
||||||
|
AIBridge._GetName <- AIBridge.GetName;
|
||||||
|
AIBridge.GetName <- function(bridge_id)
|
||||||
|
{
|
||||||
|
return AIBridge._GetName(bridge_id, AIVehicle.VT_RAIL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 1.9 adds parent_group_id to CreateGroup function */
|
||||||
|
AIGroup._CreateGroup <- AIGroup.CreateGroup;
|
||||||
|
AIGroup.CreateGroup <- function(vehicle_type)
|
||||||
|
{
|
||||||
|
return AIGroup._CreateGroup(vehicle_type, AIGroup.GROUP_INVALID);
|
||||||
|
}
|
||||||
|
@@ -8,3 +8,17 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
AILog.Info("1.6 API compatibility in effect.");
|
AILog.Info("1.6 API compatibility in effect.");
|
||||||
|
|
||||||
|
/* 1.9 adds a vehicle type parameter. */
|
||||||
|
AIBridge._GetName <- AIBridge.GetName;
|
||||||
|
AIBridge.GetName <- function(bridge_id)
|
||||||
|
{
|
||||||
|
return AIBridge._GetName(bridge_id, AIVehicle.VT_RAIL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 1.9 adds parent_group_id to CreateGroup function */
|
||||||
|
AIGroup._CreateGroup <- AIGroup.CreateGroup;
|
||||||
|
AIGroup.CreateGroup <- function(vehicle_type)
|
||||||
|
{
|
||||||
|
return AIGroup._CreateGroup(vehicle_type, AIGroup.GROUP_INVALID);
|
||||||
|
}
|
||||||
|
@@ -8,3 +8,17 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
AILog.Info("1.7 API compatibility in effect.");
|
AILog.Info("1.7 API compatibility in effect.");
|
||||||
|
|
||||||
|
/* 1.9 adds a vehicle type parameter. */
|
||||||
|
AIBridge._GetName <- AIBridge.GetName;
|
||||||
|
AIBridge.GetName <- function(bridge_id)
|
||||||
|
{
|
||||||
|
return AIBridge._GetName(bridge_id, AIVehicle.VT_RAIL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 1.9 adds parent_group_id to CreateGroup function */
|
||||||
|
AIGroup._CreateGroup <- AIGroup.CreateGroup;
|
||||||
|
AIGroup.CreateGroup <- function(vehicle_type)
|
||||||
|
{
|
||||||
|
return AIGroup._CreateGroup(vehicle_type, AIGroup.GROUP_INVALID);
|
||||||
|
}
|
||||||
|
@@ -8,3 +8,17 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
AILog.Info("1.8 API compatibility in effect.");
|
AILog.Info("1.8 API compatibility in effect.");
|
||||||
|
|
||||||
|
/* 1.9 adds a vehicle type parameter. */
|
||||||
|
AIBridge._GetName <- AIBridge.GetName;
|
||||||
|
AIBridge.GetName <- function(bridge_id)
|
||||||
|
{
|
||||||
|
return AIBridge._GetName(bridge_id, AIVehicle.VT_RAIL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 1.9 adds parent_group_id to CreateGroup function */
|
||||||
|
AIGroup._CreateGroup <- AIGroup.CreateGroup;
|
||||||
|
AIGroup.CreateGroup <- function(vehicle_type)
|
||||||
|
{
|
||||||
|
return AIGroup._CreateGroup(vehicle_type, AIGroup.GROUP_INVALID);
|
||||||
|
}
|
||||||
|
@@ -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.9 API compatibility in effect.");
|
||||||
|
@@ -6,7 +6,7 @@ class Regression extends AIInfo {
|
|||||||
function GetShortName() { return "REGR"; }
|
function GetShortName() { return "REGR"; }
|
||||||
function GetDescription() { return "This runs regression-tests on some commands. On the same map the result should always be the same."; }
|
function 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.9"; }
|
function GetAPIVersion() { return "1.10"; }
|
||||||
function GetDate() { return "2007-03-18"; }
|
function GetDate() { return "2007-03-18"; }
|
||||||
function CreateInstance() { return "Regression"; }
|
function CreateInstance() { return "Regression"; }
|
||||||
}
|
}
|
||||||
|
@@ -43,11 +43,11 @@ for tst in $tests; do
|
|||||||
if [ -n "$gdb" ]; then
|
if [ -n "$gdb" ]; then
|
||||||
$gdb ./openttd -x -c ai/regression/regression.cfg $params -g $sav
|
$gdb ./openttd -x -c ai/regression/regression.cfg $params -g $sav
|
||||||
else
|
else
|
||||||
./openttd -x -c ai/regression/regression.cfg $params -g $sav -d script=2 -d misc=9 2>&1 | awk '{ gsub("0x(\\(nil\\)|0+)(x0)?", "0x00000000", $0); gsub("^dbg: \\[script\\]", "", $0); gsub("^ ", "ERROR: ", $0); gsub("ERROR: \\[1\\] ", "", $0); gsub("\\[P\\] ", "", $0); print $0; }' | grep -v '^dbg: \[.*\]' > tmp.regression
|
./openttd -x -c ai/regression/regression.cfg $params -g $sav -d script=2 -d misc=9 2>&1 | awk '{ gsub("0x(\\(nil\\)|0+)(x0)?", "0x00000000", $0); gsub("^dbg: \\[script\\]", "", $0); gsub("^ ", "ERROR: ", $0); gsub("ERROR: \\[1\\] ", "", $0); gsub("\\[P\\] ", "", $0); print $0; }' | grep -v '^dbg: \[.*\]' > $tst/tmp.regression
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -z "$gdb" ]; then
|
if [ -z "$gdb" ]; then
|
||||||
res="`diff -ub $tst/result.txt tmp.regression`"
|
res="`diff -ub $tst/result.txt $tst/tmp.regression`"
|
||||||
if [ -z "$res" ]; then
|
if [ -z "$res" ]; then
|
||||||
echo "passed!"
|
echo "passed!"
|
||||||
else
|
else
|
||||||
@@ -58,14 +58,14 @@ for tst in $tests; do
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
rm $tst/info.nut
|
rm $tst/info.nut
|
||||||
|
|
||||||
|
if [ "$1" != "-k" ]; then
|
||||||
|
rm -f $tst/tmp.regression
|
||||||
|
fi
|
||||||
done
|
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
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$1" != "-k" ]; then
|
|
||||||
rm -f tmp.regression
|
|
||||||
fi
|
|
||||||
|
|
||||||
exit $ret
|
exit $ret
|
||||||
|
154
bin/ai/regression/run.vbs
Normal file
154
bin/ai/regression/run.vbs
Normal file
@@ -0,0 +1,154 @@
|
|||||||
|
Option Explicit
|
||||||
|
|
||||||
|
' $Id$
|
||||||
|
'
|
||||||
|
' This file is part of OpenTTD.
|
||||||
|
' OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||||
|
' OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
' See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Dim FSO
|
||||||
|
Set FSO = CreateObject("Scripting.FileSystemObject")
|
||||||
|
|
||||||
|
Function GetTestList()
|
||||||
|
Dim retests, i, tests, dir
|
||||||
|
Set retests = New RegExp
|
||||||
|
Set GetTestList = CreateObject("Scripting.Dictionary")
|
||||||
|
|
||||||
|
retests.Pattern = "ai/regression/tst_*"
|
||||||
|
retests.Global = True
|
||||||
|
For i = 0 To WScript.Arguments.Count - 1
|
||||||
|
Dim test
|
||||||
|
test = "ai/regression/tst_" & WScript.Arguments.Item(i)
|
||||||
|
If FSO.FolderExists(test) Then
|
||||||
|
retests.Pattern = test
|
||||||
|
Exit For
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
|
||||||
|
For Each dir In FSO.GetFolder("ai/regression/").SubFolders
|
||||||
|
Dim name
|
||||||
|
name = "ai/regression/" & dir.Name
|
||||||
|
If retests.Test(name) Then
|
||||||
|
GetTestList.Add name, name
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Function GetParams()
|
||||||
|
GetParams = "-snull -mnull -vnull:ticks=30000"
|
||||||
|
If WScript.Arguments.Count = 0 Then Exit Function
|
||||||
|
If WScript.Arguments.Item(0) <> "-r" Then Exit Function
|
||||||
|
GetParams = ""
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Sub FilterFile(filename)
|
||||||
|
Dim lines, filter, file
|
||||||
|
|
||||||
|
Set file = FSO.OpenTextFile(filename, 1)
|
||||||
|
If Not file.AtEndOfStream Then
|
||||||
|
lines = file.ReadAll
|
||||||
|
End If
|
||||||
|
file.Close
|
||||||
|
|
||||||
|
Set filter = New RegExp
|
||||||
|
filter.Global = True
|
||||||
|
filter.Multiline = True
|
||||||
|
filter.Pattern = "0x(\(nil\)|0+)(x0)?"
|
||||||
|
lines = filter.Replace(lines, "0x00000000")
|
||||||
|
filter.Pattern = "^dbg: \[script\]"
|
||||||
|
lines = filter.Replace(lines, "")
|
||||||
|
filter.Pattern = "^ "
|
||||||
|
lines = filter.Replace(lines, "ERROR: ")
|
||||||
|
filter.Pattern = "ERROR: \[1\] \[P\] "
|
||||||
|
lines = filter.Replace(lines, "")
|
||||||
|
filter.Pattern = "^dbg: .*\r\n"
|
||||||
|
lines = filter.Replace(lines, "")
|
||||||
|
|
||||||
|
Set file = FSO.OpenTextFile(filename, 2)
|
||||||
|
file.Write lines
|
||||||
|
file.Close
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Function CompareFiles(filename1, filename2)
|
||||||
|
Dim file, lines1, lines2
|
||||||
|
Set file = FSO.OpenTextFile(filename1, 1)
|
||||||
|
If Not file.AtEndOfStream Then
|
||||||
|
lines1 = file.ReadAll
|
||||||
|
End IF
|
||||||
|
file.Close
|
||||||
|
Set file = FSO.OpenTextFile(filename2, 1)
|
||||||
|
If Not file.AtEndOfStream Then
|
||||||
|
lines2 = file.ReadAll
|
||||||
|
End IF
|
||||||
|
file.Close
|
||||||
|
CompareFiles = (lines1 = lines2)
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Function RunTest(test, params, ret)
|
||||||
|
Dim WshShell, oExec, sav, command
|
||||||
|
Set WshShell = CreateObject("WScript.Shell")
|
||||||
|
|
||||||
|
' Make sure that only one info.nut is present for each test run. Otherwise openttd gets confused.
|
||||||
|
FSO.CopyFile "ai/regression/regression_info.nut", test & "/info.nut"
|
||||||
|
|
||||||
|
sav = test & "/test.sav"
|
||||||
|
If Not FSO.FileExists(sav) Then
|
||||||
|
sav = "ai/regression/empty.sav"
|
||||||
|
End If
|
||||||
|
|
||||||
|
command = ".\openttd -x -c ai/regression/regression.cfg " & params & " -g " & sav & " -d script=2 -d misc=9"
|
||||||
|
' 2>&1 must be after >tmp.regression, else stderr is not redirected to the file
|
||||||
|
WshShell.Run "cmd /c " & command & " >"& test & "/tmp.regression 2>&1", 0, True
|
||||||
|
|
||||||
|
FilterFile test & "/tmp.regression"
|
||||||
|
|
||||||
|
If CompareFiles(test & "/result.txt", test & "/tmp.regression") Then
|
||||||
|
RunTest = "passed!"
|
||||||
|
Else
|
||||||
|
RunTest = "failed!"
|
||||||
|
ret = 1
|
||||||
|
End If
|
||||||
|
|
||||||
|
FSO.DeleteFile test & "/info.nut"
|
||||||
|
|
||||||
|
If WScript.Arguments.Count > 0 Then
|
||||||
|
If WScript.Arguments.Item(0) = "-k" Then
|
||||||
|
Exit Function
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
|
FSO.DeleteFile test & "/tmp.regression"
|
||||||
|
End Function
|
||||||
|
|
||||||
|
On Error Resume Next
|
||||||
|
WScript.StdOut.WriteLine ""
|
||||||
|
If Err.Number <> 0 Then
|
||||||
|
WScript.Echo "This script must be started with cscript."
|
||||||
|
WScript.Quit 1
|
||||||
|
End If
|
||||||
|
On Error Goto 0
|
||||||
|
|
||||||
|
If Not FSO.FileExists("ai/regression/run.vbs") Then
|
||||||
|
WScript.Echo "Make sure you are in the root of OpenTTD before starting this script."
|
||||||
|
WScript.Quit 1
|
||||||
|
End If
|
||||||
|
|
||||||
|
If FSO.FileExists("scripts/game_start.scr") Then
|
||||||
|
FSO.MoveFile "scripts/game_start.scr", "scripts/game_start.scr.regression"
|
||||||
|
End If
|
||||||
|
|
||||||
|
Dim params, test, ret
|
||||||
|
params = GetParams()
|
||||||
|
ret = 0
|
||||||
|
|
||||||
|
For Each test in GetTestList()
|
||||||
|
WScript.StdOut.Write "Running " & test & "... "
|
||||||
|
WScript.StdOut.WriteLine RunTest(test, params, ret)
|
||||||
|
Next
|
||||||
|
|
||||||
|
If FSO.FileExists("scripts/game_start.scr.regression") Then
|
||||||
|
FSO.MoveFile "scripts/game_start.scr.regression", "scripts/game_start.scr"
|
||||||
|
End If
|
||||||
|
|
||||||
|
WScript.Quit ret
|
@@ -253,7 +253,11 @@ function Regression::Bridge()
|
|||||||
if (AIBridge.IsValidBridge(i)) j++;
|
if (AIBridge.IsValidBridge(i)) j++;
|
||||||
print(" Bridge " + i);
|
print(" Bridge " + i);
|
||||||
print(" IsValidBridge(): " + AIBridge.IsValidBridge(i));
|
print(" IsValidBridge(): " + AIBridge.IsValidBridge(i));
|
||||||
print(" GetName(): " + AIBridge.GetName(i));
|
print(" GetName():");
|
||||||
|
print(" VT_RAIL: " + AIBridge.GetName(i, AIVehicle.VT_RAIL));
|
||||||
|
print(" VT_ROAD: " + AIBridge.GetName(i, AIVehicle.VT_ROAD));
|
||||||
|
print(" VT_WATER: " + AIBridge.GetName(i, AIVehicle.VT_WATER));
|
||||||
|
print(" VT_AIR: " + AIBridge.GetName(i, AIVehicle.VT_AIR));
|
||||||
print(" GetMaxSpeed(): " + AIBridge.GetMaxSpeed(i));
|
print(" GetMaxSpeed(): " + AIBridge.GetMaxSpeed(i));
|
||||||
print(" GetPrice(): " + AIBridge.GetPrice(i, 5));
|
print(" GetPrice(): " + AIBridge.GetPrice(i, 5));
|
||||||
print(" GetMaxLength(): " + AIBridge.GetMaxLength(i));
|
print(" GetMaxLength(): " + AIBridge.GetMaxLength(i));
|
||||||
@@ -570,7 +574,7 @@ function Regression::Group()
|
|||||||
local vehicle = AIVehicle.BuildVehicle(10000, 116);
|
local vehicle = AIVehicle.BuildVehicle(10000, 116);
|
||||||
print(" AIVehicle.BuildVehicle(): " + vehicle);
|
print(" AIVehicle.BuildVehicle(): " + vehicle);
|
||||||
print(" GetNumEngines(): " + AIGroup.GetNumEngines(AIGroup.GROUP_ALL, 116));
|
print(" GetNumEngines(): " + AIGroup.GetNumEngines(AIGroup.GROUP_ALL, 116));
|
||||||
local group = AIGroup.CreateGroup(AIVehicle.VT_ROAD);
|
local group = AIGroup.CreateGroup(AIVehicle.VT_ROAD, AIGroup.GROUP_INVALID);
|
||||||
print(" CreateGroup(): " + group);
|
print(" CreateGroup(): " + group);
|
||||||
print(" MoveVehicle(): " + AIGroup.MoveVehicle(group, vehicle));
|
print(" MoveVehicle(): " + AIGroup.MoveVehicle(group, vehicle));
|
||||||
print(" GetNumEngines(): " + AIGroup.GetNumEngines(group, 116));
|
print(" GetNumEngines(): " + AIGroup.GetNumEngines(group, 116));
|
||||||
@@ -1018,7 +1022,36 @@ function Regression::Rail()
|
|||||||
print(" BuildRail(): " + AIRail.BuildRail(10002, 10003, 10006));
|
print(" BuildRail(): " + AIRail.BuildRail(10002, 10003, 10006));
|
||||||
print(" HasTransportType(): " + AITile.HasTransportType(10005, AITile.TRANSPORT_RAIL));
|
print(" HasTransportType(): " + AITile.HasTransportType(10005, AITile.TRANSPORT_RAIL));
|
||||||
print(" HasTransportType(): " + AITile.HasTransportType(10006, AITile.TRANSPORT_RAIL));
|
print(" HasTransportType(): " + AITile.HasTransportType(10006, AITile.TRANSPORT_RAIL));
|
||||||
print(" RemoveRail(): " + AIRail.RemoveRail(10005, 10004, 10001));
|
print(" RemoveRail(): " + AIRail.RemoveRail(10006, 10005, 10002));
|
||||||
|
print(" HasTransportType(): " + AITile.HasTransportType(10004, AITile.TRANSPORT_RAIL));
|
||||||
|
print(" HasTransportType(): " + AITile.HasTransportType(10005, AITile.TRANSPORT_RAIL));
|
||||||
|
print(" BuildRailTrack(): " + AIRail.BuildRailTrack(6200, AIRail.RAILTRACK_NE_SW));
|
||||||
|
print(" RemoveRailTrack(): " + AIRail.RemoveRailTrack(6200, AIRail.RAILTRACK_NW_NE));
|
||||||
|
print(" RemoveRailTrack(): " + AIRail.RemoveRailTrack(6200, AIRail.RAILTRACK_NE_SW));
|
||||||
|
print(" BuildRail(): " + AIRail.BuildRail(6200, 6200 + 256, 6200 + (256 * 4)));
|
||||||
|
print(" HasTransportType(): " + AITile.HasTransportType(6200 + (256 * 3), AITile.TRANSPORT_RAIL));
|
||||||
|
print(" HasTransportType(): " + AITile.HasTransportType(6200 + (256 * 4), AITile.TRANSPORT_RAIL));
|
||||||
|
print(" RemoveRail(): " + AIRail.RemoveRail(6200 + (256 * 3), 6200 + (256 * 2), 6200 - 256));
|
||||||
|
print(" HasTransportType(): " + AITile.HasTransportType(6200 + (256 * 3), AITile.TRANSPORT_RAIL));
|
||||||
|
print(" HasTransportType(): " + AITile.HasTransportType(6200 + (256 * 4), AITile.TRANSPORT_RAIL));
|
||||||
|
print(" BuildRailTrack(): " + AIRail.BuildRail(14706, 14705, 12907));
|
||||||
|
print(" HasTransportType(): " + AITile.HasTransportType(13421, AITile.TRANSPORT_RAIL));
|
||||||
|
print(" HasTransportType(): " + AITile.HasTransportType(14191, AITile.TRANSPORT_RAIL));
|
||||||
|
print(" RemoveRail(): " + AIRail.RemoveRail(12907, 13163, 14706));
|
||||||
|
print(" HasTransportType(): " + AITile.HasTransportType(13421, AITile.TRANSPORT_RAIL));
|
||||||
|
print(" HasTransportType(): " + AITile.HasTransportType(14191, AITile.TRANSPORT_RAIL));
|
||||||
|
print(" BuildRailTrack(): " + AIRail.BuildRailTrack(61533, AIRail.RAILTRACK_NW_SW));
|
||||||
|
print(" BuildRailTrack(): " + AIRail.BuildRailTrack(61533, AIRail.RAILTRACK_NE_SE));
|
||||||
|
print(" BuildRailTrack(): " + AIRail.BuildRailTrack(61533, AIRail.RAILTRACK_NW_NE));
|
||||||
|
print(" BuildRailTrack(): " + AIRail.BuildRailTrack(61533, AIRail.RAILTRACK_SW_SE));
|
||||||
|
print(" BuildRailTrack(): " + AIRail.BuildRailTrack(61533, AIRail.RAILTRACK_NE_SW));
|
||||||
|
print(" DemolishTile(): " + AITile.DemolishTile(61533));
|
||||||
|
print(" BuildRailTrack(): " + AIRail.BuildRailTrack(61533, AIRail.RAILTRACK_NE_SW));
|
||||||
|
print(" BuildRailTrack(): " + AIRail.BuildRailTrack(61533, AIRail.RAILTRACK_NW_SE));
|
||||||
|
print(" BuildRailTrack(): " + AIRail.BuildRailTrack(61533, AIRail.RAILTRACK_NW_NE));
|
||||||
|
print(" BuildRailTrack(): " + AIRail.BuildRailTrack(61533, AIRail.RAILTRACK_SW_SE));
|
||||||
|
print(" DemolishTile(): " + AITile.DemolishTile(61533));
|
||||||
|
print(" BuildRailTrack(): " + AIRail.BuildRailTrack(61533, AIRail.RAILTRACK_NW_SE));
|
||||||
|
|
||||||
print(" Depot");
|
print(" Depot");
|
||||||
print(" IsRailTile(): " + AIRail.IsRailTile(33411));
|
print(" IsRailTile(): " + AIRail.IsRailTile(33411));
|
||||||
@@ -1053,6 +1086,31 @@ function Regression::Rail()
|
|||||||
print(" IsRailStationTile(): " + AIRail.IsRailStationTile(7957));
|
print(" IsRailStationTile(): " + AIRail.IsRailStationTile(7957));
|
||||||
print(" IsRailStationTile(): " + AIRail.IsRailStationTile(7958));
|
print(" IsRailStationTile(): " + AIRail.IsRailStationTile(7958));
|
||||||
print(" IsRailStationTile(): " + AIRail.IsRailStationTile(7959));
|
print(" IsRailStationTile(): " + AIRail.IsRailStationTile(7959));
|
||||||
|
|
||||||
|
print(" Waypoint");
|
||||||
|
print(" BuildRailTrack(): " + AIRail.BuildRailTrack(12646, AIRail.RAILTRACK_NW_SE));
|
||||||
|
print(" BuildRailTrack(): " + AIRail.BuildRailTrack(12648, AIRail.RAILTRACK_NE_SW));
|
||||||
|
print(" BuildRailTrack(): " + AIRail.BuildRailTrack(12650, AIRail.RAILTRACK_NW_NE));
|
||||||
|
print(" BuildRailWaypoint(): " + AIRail.BuildRailWaypoint(12644));
|
||||||
|
print(" BuildRailWaypoint(): " + AIRail.BuildRailWaypoint(12646));
|
||||||
|
print(" BuildRailWaypoint(): " + AIRail.BuildRailWaypoint(12648));
|
||||||
|
print(" BuildRailWaypoint(): " + AIRail.BuildRailWaypoint(12650));
|
||||||
|
print(" IsRailWaypointTile(): " + AIRail.IsRailWaypointTile(12644));
|
||||||
|
print(" IsRailWaypointTile(): " + AIRail.IsRailWaypointTile(12646));
|
||||||
|
print(" IsRailWaypointTile(): " + AIRail.IsRailWaypointTile(12648));
|
||||||
|
print(" IsRailWaypointTile(): " + AIRail.IsRailWaypointTile(12650));
|
||||||
|
print(" RemoveRailWaypointTileRectangle():" + AIRail.RemoveRailWaypointTileRectangle(12644, 12646, false));
|
||||||
|
print(" RemoveRailWaypointTileRectangle():" + AIRail.RemoveRailWaypointTileRectangle(12648, 12650, true));
|
||||||
|
print(" IsRailWaypointTile(): " + AIRail.IsRailWaypointTile(12644));
|
||||||
|
print(" IsRailWaypointTile(): " + AIRail.IsRailWaypointTile(12646));
|
||||||
|
print(" IsRailWaypointTile(): " + AIRail.IsRailWaypointTile(12648));
|
||||||
|
print(" IsRailWaypointTile(): " + AIRail.IsRailWaypointTile(12650));
|
||||||
|
print(" HasTransportType(): " + AITile.HasTransportType(12644, AITile.TRANSPORT_RAIL));
|
||||||
|
print(" HasTransportType(): " + AITile.HasTransportType(12646, AITile.TRANSPORT_RAIL));
|
||||||
|
print(" HasTransportType(): " + AITile.HasTransportType(12648, AITile.TRANSPORT_RAIL));
|
||||||
|
print(" HasTransportType(): " + AITile.HasTransportType(12650, AITile.TRANSPORT_RAIL));
|
||||||
|
print(" DemolishTile(): " + AITile.DemolishTile(12648));
|
||||||
|
print(" DemolishTile(): " + AITile.DemolishTile(12650));
|
||||||
}
|
}
|
||||||
|
|
||||||
function Regression::Road()
|
function Regression::Road()
|
||||||
@@ -1441,7 +1499,7 @@ function Regression::TileList()
|
|||||||
print(" " + i + " => " + list.GetValue(i));
|
print(" " + i + " => " + list.GetValue(i));
|
||||||
}
|
}
|
||||||
|
|
||||||
list = AITileList_StationType(4, AIStation.STATION_BUS_STOP);
|
list = AITileList_StationType(6, AIStation.STATION_BUS_STOP);
|
||||||
print("");
|
print("");
|
||||||
print("--TileList_StationType--");
|
print("--TileList_StationType--");
|
||||||
print(" Count(): " + list.Count());
|
print(" Count(): " + list.Count());
|
||||||
@@ -1646,6 +1704,19 @@ function Regression::Vehicle()
|
|||||||
print(" GetWagonEngineType(): " + AIVehicle.GetWagonEngineType(17 3));
|
print(" GetWagonEngineType(): " + AIVehicle.GetWagonEngineType(17 3));
|
||||||
print(" GetWagonAge(): " + AIVehicle.GetWagonAge(17, 3));
|
print(" GetWagonAge(): " + AIVehicle.GetWagonAge(17, 3));
|
||||||
|
|
||||||
|
print(" --Refit--");
|
||||||
|
print(" GetBuildWithRefitCapacity(): " + AIVehicle.GetBuildWithRefitCapacity(28479, 211, 255));
|
||||||
|
print(" GetBuildWithRefitCapacity(): " + AIVehicle.GetBuildWithRefitCapacity(28479, 211, 0));
|
||||||
|
print(" GetBuildWithRefitCapacity(): " + AIVehicle.GetBuildWithRefitCapacity(28479, 211, 9));
|
||||||
|
print(" BuildVehicleWithRefit(): " + AIVehicle.BuildVehicleWithRefit(28479, 211, 9));
|
||||||
|
print(" GetCapacity(): " + AIVehicle.GetCapacity(20, 9));
|
||||||
|
print(" GetCapacity(): " + AIVehicle.GetCapacity(20, 5));
|
||||||
|
print(" GetRefitCapacity(): " + AIVehicle.GetRefitCapacity(20, 5));
|
||||||
|
print(" RefitVehicle(): " + AIVehicle.RefitVehicle(20, 5));
|
||||||
|
print(" GetCapacity(): " + AIVehicle.GetCapacity(20, 9));
|
||||||
|
print(" GetCapacity(): " + AIVehicle.GetCapacity(20, 5));
|
||||||
|
print(" SellVehicle(): " + AIVehicle.SellVehicle(20));
|
||||||
|
|
||||||
print(" --Errors--");
|
print(" --Errors--");
|
||||||
print(" RefitVehicle(): " + AIVehicle.RefitVehicle(12, 0));
|
print(" RefitVehicle(): " + AIVehicle.RefitVehicle(12, 0));
|
||||||
print(" GetLastErrorString(): " + AIError.GetLastErrorString());
|
print(" GetLastErrorString(): " + AIError.GetLastErrorString());
|
||||||
|
@@ -867,105 +867,165 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
|||||||
--Bridge--
|
--Bridge--
|
||||||
Bridge -1
|
Bridge -1
|
||||||
IsValidBridge(): false
|
IsValidBridge(): false
|
||||||
GetName(): (null : 0x00000000)
|
GetName():
|
||||||
|
VT_RAIL: (null : 0x00000000)
|
||||||
|
VT_ROAD: (null : 0x00000000)
|
||||||
|
VT_WATER: (null : 0x00000000)
|
||||||
|
VT_AIR: (null : 0x00000000)
|
||||||
GetMaxSpeed(): -1
|
GetMaxSpeed(): -1
|
||||||
GetPrice(): -1
|
GetPrice(): -1
|
||||||
GetMaxLength(): -1
|
GetMaxLength(): -1
|
||||||
GetMinLength(): -1
|
GetMinLength(): -1
|
||||||
Bridge 0
|
Bridge 0
|
||||||
IsValidBridge(): true
|
IsValidBridge(): true
|
||||||
GetName(): Wooden rail bridge
|
GetName():
|
||||||
|
VT_RAIL: Wooden rail bridge
|
||||||
|
VT_ROAD: Wooden road bridge
|
||||||
|
VT_WATER: Aqueduct
|
||||||
|
VT_AIR: (null : 0x00000000)
|
||||||
GetMaxSpeed(): 32
|
GetMaxSpeed(): 32
|
||||||
GetPrice(): 450
|
GetPrice(): 450
|
||||||
GetMaxLength(): 66
|
GetMaxLength(): 66
|
||||||
GetMinLength(): 2
|
GetMinLength(): 2
|
||||||
Bridge 1
|
Bridge 1
|
||||||
IsValidBridge(): true
|
IsValidBridge(): true
|
||||||
GetName(): Concrete rail bridge
|
GetName():
|
||||||
|
VT_RAIL: Concrete rail bridge
|
||||||
|
VT_ROAD: Concrete road bridge
|
||||||
|
VT_WATER: Aqueduct
|
||||||
|
VT_AIR: (null : 0x00000000)
|
||||||
GetMaxSpeed(): 48
|
GetMaxSpeed(): 48
|
||||||
GetPrice(): 630
|
GetPrice(): 630
|
||||||
GetMaxLength(): 4
|
GetMaxLength(): 4
|
||||||
GetMinLength(): 2
|
GetMinLength(): 2
|
||||||
Bridge 2
|
Bridge 2
|
||||||
IsValidBridge(): true
|
IsValidBridge(): true
|
||||||
GetName(): Steel girder rail bridge
|
GetName():
|
||||||
|
VT_RAIL: Steel girder rail bridge
|
||||||
|
VT_ROAD: Steel girder road bridge
|
||||||
|
VT_WATER: Aqueduct
|
||||||
|
VT_AIR: (null : 0x00000000)
|
||||||
GetMaxSpeed(): 64
|
GetMaxSpeed(): 64
|
||||||
GetPrice(): 811
|
GetPrice(): 811
|
||||||
GetMaxLength(): 7
|
GetMaxLength(): 7
|
||||||
GetMinLength(): 2
|
GetMinLength(): 2
|
||||||
Bridge 3
|
Bridge 3
|
||||||
IsValidBridge(): true
|
IsValidBridge(): true
|
||||||
GetName(): Reinforced concrete suspension rail bridge
|
GetName():
|
||||||
|
VT_RAIL: Reinforced concrete suspension rail bridge
|
||||||
|
VT_ROAD: Reinforced concrete suspension road bridge
|
||||||
|
VT_WATER: Aqueduct
|
||||||
|
VT_AIR: (null : 0x00000000)
|
||||||
GetMaxSpeed(): 80
|
GetMaxSpeed(): 80
|
||||||
GetPrice(): 946
|
GetPrice(): 946
|
||||||
GetMaxLength(): 12
|
GetMaxLength(): 12
|
||||||
GetMinLength(): 4
|
GetMinLength(): 4
|
||||||
Bridge 4
|
Bridge 4
|
||||||
IsValidBridge(): true
|
IsValidBridge(): true
|
||||||
GetName(): Steel suspension rail bridge
|
GetName():
|
||||||
|
VT_RAIL: Steel suspension rail bridge
|
||||||
|
VT_ROAD: Steel suspension road bridge
|
||||||
|
VT_WATER: Aqueduct
|
||||||
|
VT_AIR: (null : 0x00000000)
|
||||||
GetMaxSpeed(): 96
|
GetMaxSpeed(): 96
|
||||||
GetPrice(): 1042
|
GetPrice(): 1042
|
||||||
GetMaxLength(): 66
|
GetMaxLength(): 66
|
||||||
GetMinLength(): 5
|
GetMinLength(): 5
|
||||||
Bridge 5
|
Bridge 5
|
||||||
IsValidBridge(): true
|
IsValidBridge(): true
|
||||||
GetName(): Steel suspension rail bridge
|
GetName():
|
||||||
|
VT_RAIL: Steel suspension rail bridge
|
||||||
|
VT_ROAD: Steel suspension road bridge
|
||||||
|
VT_WATER: Aqueduct
|
||||||
|
VT_AIR: (null : 0x00000000)
|
||||||
GetMaxSpeed(): 112
|
GetMaxSpeed(): 112
|
||||||
GetPrice(): 1081
|
GetPrice(): 1081
|
||||||
GetMaxLength(): 66
|
GetMaxLength(): 66
|
||||||
GetMinLength(): 5
|
GetMinLength(): 5
|
||||||
Bridge 6
|
Bridge 6
|
||||||
IsValidBridge(): true
|
IsValidBridge(): true
|
||||||
GetName(): Steel cantilever rail bridge
|
GetName():
|
||||||
|
VT_RAIL: Steel cantilever rail bridge
|
||||||
|
VT_ROAD: Steel cantilever road bridge
|
||||||
|
VT_WATER: Aqueduct
|
||||||
|
VT_AIR: (null : 0x00000000)
|
||||||
GetMaxSpeed(): 160
|
GetMaxSpeed(): 160
|
||||||
GetPrice(): 1261
|
GetPrice(): 1261
|
||||||
GetMaxLength(): 9
|
GetMaxLength(): 9
|
||||||
GetMinLength(): 5
|
GetMinLength(): 5
|
||||||
Bridge 7
|
Bridge 7
|
||||||
IsValidBridge(): true
|
IsValidBridge(): true
|
||||||
GetName(): Steel cantilever rail bridge
|
GetName():
|
||||||
|
VT_RAIL: Steel cantilever rail bridge
|
||||||
|
VT_ROAD: Steel cantilever road bridge
|
||||||
|
VT_WATER: Aqueduct
|
||||||
|
VT_AIR: (null : 0x00000000)
|
||||||
GetMaxSpeed(): 208
|
GetMaxSpeed(): 208
|
||||||
GetPrice(): 1306
|
GetPrice(): 1306
|
||||||
GetMaxLength(): 10
|
GetMaxLength(): 10
|
||||||
GetMinLength(): 5
|
GetMinLength(): 5
|
||||||
Bridge 8
|
Bridge 8
|
||||||
IsValidBridge(): true
|
IsValidBridge(): true
|
||||||
GetName(): Steel cantilever rail bridge
|
GetName():
|
||||||
|
VT_RAIL: Steel cantilever rail bridge
|
||||||
|
VT_ROAD: Steel cantilever road bridge
|
||||||
|
VT_WATER: Aqueduct
|
||||||
|
VT_AIR: (null : 0x00000000)
|
||||||
GetMaxSpeed(): 240
|
GetMaxSpeed(): 240
|
||||||
GetPrice(): 1396
|
GetPrice(): 1396
|
||||||
GetMaxLength(): 11
|
GetMaxLength(): 11
|
||||||
GetMinLength(): 5
|
GetMinLength(): 5
|
||||||
Bridge 9
|
Bridge 9
|
||||||
IsValidBridge(): true
|
IsValidBridge(): true
|
||||||
GetName(): Steel girder rail bridge
|
GetName():
|
||||||
|
VT_RAIL: Steel girder rail bridge
|
||||||
|
VT_ROAD: Steel girder road bridge
|
||||||
|
VT_WATER: Aqueduct
|
||||||
|
VT_AIR: (null : 0x00000000)
|
||||||
GetMaxSpeed(): 256
|
GetMaxSpeed(): 256
|
||||||
GetPrice(): 1351
|
GetPrice(): 1351
|
||||||
GetMaxLength(): 4
|
GetMaxLength(): 4
|
||||||
GetMinLength(): 2
|
GetMinLength(): 2
|
||||||
Bridge 10
|
Bridge 10
|
||||||
IsValidBridge(): false
|
IsValidBridge(): false
|
||||||
GetName(): (null : 0x00000000)
|
GetName():
|
||||||
|
VT_RAIL: (null : 0x00000000)
|
||||||
|
VT_ROAD: (null : 0x00000000)
|
||||||
|
VT_WATER: (null : 0x00000000)
|
||||||
|
VT_AIR: (null : 0x00000000)
|
||||||
GetMaxSpeed(): -1
|
GetMaxSpeed(): -1
|
||||||
GetPrice(): -1
|
GetPrice(): -1
|
||||||
GetMaxLength(): -1
|
GetMaxLength(): -1
|
||||||
GetMinLength(): -1
|
GetMinLength(): -1
|
||||||
Bridge 11
|
Bridge 11
|
||||||
IsValidBridge(): false
|
IsValidBridge(): false
|
||||||
GetName(): (null : 0x00000000)
|
GetName():
|
||||||
|
VT_RAIL: (null : 0x00000000)
|
||||||
|
VT_ROAD: (null : 0x00000000)
|
||||||
|
VT_WATER: (null : 0x00000000)
|
||||||
|
VT_AIR: (null : 0x00000000)
|
||||||
GetMaxSpeed(): -1
|
GetMaxSpeed(): -1
|
||||||
GetPrice(): -1
|
GetPrice(): -1
|
||||||
GetMaxLength(): -1
|
GetMaxLength(): -1
|
||||||
GetMinLength(): -1
|
GetMinLength(): -1
|
||||||
Bridge 12
|
Bridge 12
|
||||||
IsValidBridge(): false
|
IsValidBridge(): false
|
||||||
GetName(): (null : 0x00000000)
|
GetName():
|
||||||
|
VT_RAIL: (null : 0x00000000)
|
||||||
|
VT_ROAD: (null : 0x00000000)
|
||||||
|
VT_WATER: (null : 0x00000000)
|
||||||
|
VT_AIR: (null : 0x00000000)
|
||||||
GetMaxSpeed(): -1
|
GetMaxSpeed(): -1
|
||||||
GetPrice(): -1
|
GetPrice(): -1
|
||||||
GetMaxLength(): -1
|
GetMaxLength(): -1
|
||||||
GetMinLength(): -1
|
GetMinLength(): -1
|
||||||
Bridge 13
|
Bridge 13
|
||||||
IsValidBridge(): false
|
IsValidBridge(): false
|
||||||
GetName(): (null : 0x00000000)
|
GetName():
|
||||||
|
VT_RAIL: (null : 0x00000000)
|
||||||
|
VT_ROAD: (null : 0x00000000)
|
||||||
|
VT_WATER: (null : 0x00000000)
|
||||||
|
VT_AIR: (null : 0x00000000)
|
||||||
GetMaxSpeed(): -1
|
GetMaxSpeed(): -1
|
||||||
GetPrice(): -1
|
GetPrice(): -1
|
||||||
GetMaxLength(): -1
|
GetMaxLength(): -1
|
||||||
@@ -1292,7 +1352,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
|||||||
GetRunningCost(): 820
|
GetRunningCost(): 820
|
||||||
GetPower(): 300
|
GetPower(): 300
|
||||||
GetWeight(): 47
|
GetWeight(): 47
|
||||||
GetMaxTractiveEffort(): 139
|
GetMaxTractiveEffort(): 136
|
||||||
GetVehicleType(): 0
|
GetVehicleType(): 0
|
||||||
GetRailType(): 0
|
GetRailType(): 0
|
||||||
GetRoadType(): -1
|
GetRoadType(): -1
|
||||||
@@ -1436,7 +1496,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
|||||||
GetRunningCost(): 1968
|
GetRunningCost(): 1968
|
||||||
GetPower(): 1000
|
GetPower(): 1000
|
||||||
GetWeight(): 131
|
GetWeight(): 131
|
||||||
GetMaxTractiveEffort(): 388
|
GetMaxTractiveEffort(): 381
|
||||||
GetVehicleType(): 0
|
GetVehicleType(): 0
|
||||||
GetRailType(): 0
|
GetRailType(): 0
|
||||||
GetRoadType(): -1
|
GetRoadType(): -1
|
||||||
@@ -1454,7 +1514,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
|||||||
GetRunningCost(): 2296
|
GetRunningCost(): 2296
|
||||||
GetPower(): 1200
|
GetPower(): 1200
|
||||||
GetWeight(): 162
|
GetWeight(): 162
|
||||||
GetMaxTractiveEffort(): 480
|
GetMaxTractiveEffort(): 471
|
||||||
GetVehicleType(): 0
|
GetVehicleType(): 0
|
||||||
GetRailType(): 0
|
GetRailType(): 0
|
||||||
GetRoadType(): -1
|
GetRoadType(): -1
|
||||||
@@ -7253,7 +7313,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
|||||||
IsBuoyTile(): false
|
IsBuoyTile(): false
|
||||||
IsLockTile(): false
|
IsLockTile(): false
|
||||||
IsCanalTile(): false
|
IsCanalTile(): false
|
||||||
GetBankBalance(): 479851
|
GetBankBalance(): 479664
|
||||||
BuildWaterDepot(): true
|
BuildWaterDepot(): true
|
||||||
BuildDock(): true
|
BuildDock(): true
|
||||||
BuildBuoy(): true
|
BuildBuoy(): true
|
||||||
@@ -7266,7 +7326,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
|||||||
IsBuoyTile(): true
|
IsBuoyTile(): true
|
||||||
IsLockTile(): true
|
IsLockTile(): true
|
||||||
IsCanalTile(): true
|
IsCanalTile(): true
|
||||||
GetBankBalance(): 465257
|
GetBankBalance(): 465070
|
||||||
|
|
||||||
--AIWaypointList(BUOY)--
|
--AIWaypointList(BUOY)--
|
||||||
Count(): 1
|
Count(): 1
|
||||||
@@ -7285,7 +7345,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
|||||||
IsBuoyTile(): false
|
IsBuoyTile(): false
|
||||||
IsLockTile(): false
|
IsLockTile(): false
|
||||||
IsCanalTile(): false
|
IsCanalTile(): false
|
||||||
GetBankBalance(): 459862
|
GetBankBalance(): 459675
|
||||||
BuildWaterDepot(): true
|
BuildWaterDepot(): true
|
||||||
BuildDock(): true
|
BuildDock(): true
|
||||||
|
|
||||||
@@ -7334,6 +7394,35 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
|||||||
HasTransportType(): true
|
HasTransportType(): true
|
||||||
HasTransportType(): false
|
HasTransportType(): false
|
||||||
RemoveRail(): true
|
RemoveRail(): true
|
||||||
|
HasTransportType(): false
|
||||||
|
HasTransportType(): false
|
||||||
|
BuildRailTrack(): true
|
||||||
|
RemoveRailTrack(): false
|
||||||
|
RemoveRailTrack(): true
|
||||||
|
BuildRail(): true
|
||||||
|
HasTransportType(): true
|
||||||
|
HasTransportType(): false
|
||||||
|
RemoveRail(): true
|
||||||
|
HasTransportType(): true
|
||||||
|
HasTransportType(): false
|
||||||
|
BuildRailTrack(): true
|
||||||
|
HasTransportType(): true
|
||||||
|
HasTransportType(): true
|
||||||
|
RemoveRail(): true
|
||||||
|
HasTransportType(): false
|
||||||
|
HasTransportType(): false
|
||||||
|
BuildRailTrack(): false
|
||||||
|
BuildRailTrack(): false
|
||||||
|
BuildRailTrack(): true
|
||||||
|
BuildRailTrack(): true
|
||||||
|
BuildRailTrack(): false
|
||||||
|
DemolishTile(): true
|
||||||
|
BuildRailTrack(): true
|
||||||
|
BuildRailTrack(): false
|
||||||
|
BuildRailTrack(): false
|
||||||
|
BuildRailTrack(): false
|
||||||
|
DemolishTile(): true
|
||||||
|
BuildRailTrack(): true
|
||||||
Depot
|
Depot
|
||||||
IsRailTile(): false
|
IsRailTile(): false
|
||||||
BuildRailDepot(): false
|
BuildRailDepot(): false
|
||||||
@@ -7362,6 +7451,30 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
|||||||
IsRailStationTile(): false
|
IsRailStationTile(): false
|
||||||
IsRailStationTile(): false
|
IsRailStationTile(): false
|
||||||
IsRailStationTile(): false
|
IsRailStationTile(): false
|
||||||
|
Waypoint
|
||||||
|
BuildRailTrack(): true
|
||||||
|
BuildRailTrack(): true
|
||||||
|
BuildRailTrack(): true
|
||||||
|
BuildRailWaypoint(): false
|
||||||
|
BuildRailWaypoint(): true
|
||||||
|
BuildRailWaypoint(): true
|
||||||
|
BuildRailWaypoint(): false
|
||||||
|
IsRailWaypointTile(): false
|
||||||
|
IsRailWaypointTile(): true
|
||||||
|
IsRailWaypointTile(): true
|
||||||
|
IsRailWaypointTile(): false
|
||||||
|
RemoveRailWaypointTileRectangle():true
|
||||||
|
RemoveRailWaypointTileRectangle():true
|
||||||
|
IsRailWaypointTile(): false
|
||||||
|
IsRailWaypointTile(): false
|
||||||
|
IsRailWaypointTile(): false
|
||||||
|
IsRailWaypointTile(): false
|
||||||
|
HasTransportType(): false
|
||||||
|
HasTransportType(): false
|
||||||
|
HasTransportType(): true
|
||||||
|
HasTransportType(): true
|
||||||
|
DemolishTile(): true
|
||||||
|
DemolishTile(): true
|
||||||
|
|
||||||
--RailTypeList--
|
--RailTypeList--
|
||||||
Count(): 1
|
Count(): 1
|
||||||
@@ -7485,9 +7598,9 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
|||||||
GetName(0): Look, a station
|
GetName(0): Look, a station
|
||||||
GetLocation(1): 29253
|
GetLocation(1): 29253
|
||||||
GetLocation(1000): -1
|
GetLocation(1000): -1
|
||||||
GetStationID(33411): 4
|
GetStationID(33411): 6
|
||||||
GetStationID(34411): 65535
|
GetStationID(34411): 65535
|
||||||
GetStationID(33411): 4
|
GetStationID(33411): 6
|
||||||
HasRoadType(3, TRAM): false
|
HasRoadType(3, TRAM): false
|
||||||
HasRoadType(3, ROAD): false
|
HasRoadType(3, ROAD): false
|
||||||
HasRoadType(33411, TRAM): false
|
HasRoadType(33411, TRAM): false
|
||||||
@@ -8423,7 +8536,6 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
|||||||
--TileList_IndustryProducing--
|
--TileList_IndustryProducing--
|
||||||
Count(): 92
|
Count(): 92
|
||||||
Location ListDump:
|
Location ListDump:
|
||||||
46920 => 1
|
|
||||||
46919 => 1
|
46919 => 1
|
||||||
46918 => 1
|
46918 => 1
|
||||||
46917 => 1
|
46917 => 1
|
||||||
@@ -8432,7 +8544,6 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
|||||||
46914 => 1
|
46914 => 1
|
||||||
46913 => 1
|
46913 => 1
|
||||||
46912 => 1
|
46912 => 1
|
||||||
46911 => 1
|
|
||||||
46664 => 1
|
46664 => 1
|
||||||
46663 => 1
|
46663 => 1
|
||||||
46662 => 1
|
46662 => 1
|
||||||
@@ -8515,6 +8626,8 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
|||||||
44353 => 1
|
44353 => 1
|
||||||
44352 => 1
|
44352 => 1
|
||||||
44351 => 1
|
44351 => 1
|
||||||
|
46920 => 0
|
||||||
|
46911 => 0
|
||||||
|
|
||||||
--TileList_StationType--
|
--TileList_StationType--
|
||||||
Count(): 4
|
Count(): 4
|
||||||
@@ -9015,6 +9128,18 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
|||||||
GetWagonAge(): 0
|
GetWagonAge(): 0
|
||||||
GetWagonEngineType(): 65535
|
GetWagonEngineType(): 65535
|
||||||
GetWagonAge(): -1
|
GetWagonAge(): -1
|
||||||
|
--Refit--
|
||||||
|
GetBuildWithRefitCapacity(): -1
|
||||||
|
GetBuildWithRefitCapacity(): 0
|
||||||
|
GetBuildWithRefitCapacity(): 160
|
||||||
|
BuildVehicleWithRefit(): 20
|
||||||
|
GetCapacity(): 160
|
||||||
|
GetCapacity(): 0
|
||||||
|
GetRefitCapacity(): 160
|
||||||
|
RefitVehicle(): true
|
||||||
|
GetCapacity(): 0
|
||||||
|
GetCapacity(): 160
|
||||||
|
SellVehicle(): true
|
||||||
--Errors--
|
--Errors--
|
||||||
RefitVehicle(): false
|
RefitVehicle(): false
|
||||||
GetLastErrorString(): ERR_VEHICLE_NOT_IN_DEPOT
|
GetLastErrorString(): ERR_VEHICLE_NOT_IN_DEPOT
|
||||||
@@ -9062,7 +9187,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
|||||||
13 => 5489
|
13 => 5489
|
||||||
12 => 5489
|
12 => 5489
|
||||||
CurrentSpeed ListDump:
|
CurrentSpeed ListDump:
|
||||||
12 => 21
|
12 => 27
|
||||||
17 => 0
|
17 => 0
|
||||||
16 => 0
|
16 => 0
|
||||||
14 => 0
|
14 => 0
|
||||||
|
@@ -1,103 +0,0 @@
|
|||||||
; $Id$
|
|
||||||
;
|
|
||||||
; This represents more or less nothingness
|
|
||||||
;
|
|
||||||
[metadata]
|
|
||||||
name = NoMusic
|
|
||||||
shortname = NULL
|
|
||||||
version = 0
|
|
||||||
fallback = true
|
|
||||||
description = A music pack without actual music.
|
|
||||||
description.af_ZA = 'n Musiek stel sonder enige musiek.
|
|
||||||
description.ar_EG = مجموعة موسيقى بدون موسيقى
|
|
||||||
description.be_BY = "Пусты" набор музычнага афармлення, які не зьмяшчае ніякай музыкі.
|
|
||||||
description.bg_BG = Празен музикален пакет.
|
|
||||||
description.ca_ES = Una llista de música sense cap peça.
|
|
||||||
description.cs_CZ = Prázná hudební sada.
|
|
||||||
description.cy_GB = Pecyn cerddoriaeth heb unrhyw gerddoriaeth ynddo.
|
|
||||||
description.da_DK = En musikpakke uden musik.
|
|
||||||
description.de_DE = Ein Musikset ohne Musik.
|
|
||||||
description.el_GR = Ένα πάκετο μουσικής χωρίς πραγματική μουσική.
|
|
||||||
description.en_AU = A music pack without actual music.
|
|
||||||
description.en_US = A music pack without actual music.
|
|
||||||
description.es_ES = Un conjunto de música vacío.
|
|
||||||
description.es_MX = Paquete de música vacío
|
|
||||||
description.et_EE = Muusikakogu ilma muusikata.
|
|
||||||
description.eu_ES = Musika gabeko musika paketea.
|
|
||||||
description.fi_FI = Musiikkipaketti, jossa ei ole musiikkia.
|
|
||||||
description.fr_FR = Un pack de musiques sans musiques.
|
|
||||||
description.ga_IE = Pacáiste ceoil gan aon cheol iarbhír ann.
|
|
||||||
description.gd_GB = Pacaid ciùil anns nach eil fonn sam bith.
|
|
||||||
description.gl_ES = Un conxunto de músicas sen ningunha música.
|
|
||||||
description.he_IL = אוסף מנגינות ללא מנגינות.
|
|
||||||
description.hr_HR = Glazbeni paket bez ikakve glazbe.
|
|
||||||
description.hu_HU = Zenei alapcsomag zene nélkül.
|
|
||||||
description.id_ID = Paket musik tanpa musik sungguhan.
|
|
||||||
description.is_IS = Tónlistarpakki sem er í raun án tónlistar.
|
|
||||||
description.it_IT = Un pacchetto musicale non contenente alcuna musica.
|
|
||||||
description.ja_JP = 空の音楽パック
|
|
||||||
description.ko_KR = 실제 음악이 없는 음악 목록입니다.
|
|
||||||
description.la_VA = Sarcina musicae sine ulla musica.
|
|
||||||
description.lb_LU = E Musikpack ouni aktuell Musik.
|
|
||||||
description.lt_LT = Muzikos pakas be muzikos.
|
|
||||||
description.lv_LV = Mūzikas kopa bez mūzikas
|
|
||||||
description.ms_MY = Pek muzik tanpa muzik sebenar.
|
|
||||||
description.nb_NO = En musikkpakke uten noe musikk.
|
|
||||||
description.nl_NL = Een muziekset zonder muziek.
|
|
||||||
description.nn_NO = Ei musikkpakke utan noko musikk.
|
|
||||||
description.pl_PL = Zestaw utworów muzycznych nie zawierający żadnej muzyki.
|
|
||||||
description.pt_BR = Um pacote de músicas sem músicas.
|
|
||||||
description.pt_PT = Um conjunto de música vazio.
|
|
||||||
description.ro_RO = Un set de muzică fără muzică inclusă.
|
|
||||||
description.ru_RU = "Пустой" набор музыкального оформления, не содержащий никакой музыки.
|
|
||||||
description.sk_SK = Sada hudby neobsahujúca hudbu.
|
|
||||||
description.sl_SI = Glasbeni paket z vključeno glasbo.
|
|
||||||
description.sr_RS = Prazan skup muzičkih numera.
|
|
||||||
description.sv_SE = Ett musikpaket utan någon musik.
|
|
||||||
description.ta_IN = இசை இல்லாத இசைத்தொகுப்பு.
|
|
||||||
description.th_TH = ชุดเพลงประกอบแบบไม่มีเสียงเพลง
|
|
||||||
description.tr_TR = Müzik içermeyen boş bir müzik paketi.
|
|
||||||
description.uk_UA = Порожній набір музики.
|
|
||||||
description.vi_VN = Gói âm nhạc này không có nhạc nào.
|
|
||||||
description.zh_CN = 一个没有实际内容的音乐包.
|
|
||||||
description.zh_TW = 不含任何音樂的音樂集。
|
|
||||||
|
|
||||||
[files]
|
|
||||||
theme =
|
|
||||||
old_0 =
|
|
||||||
old_1 =
|
|
||||||
old_2 =
|
|
||||||
old_3 =
|
|
||||||
old_4 =
|
|
||||||
old_5 =
|
|
||||||
old_6 =
|
|
||||||
old_7 =
|
|
||||||
old_8 =
|
|
||||||
old_9 =
|
|
||||||
new_0 =
|
|
||||||
new_1 =
|
|
||||||
new_2 =
|
|
||||||
new_3 =
|
|
||||||
new_4 =
|
|
||||||
new_5 =
|
|
||||||
new_6 =
|
|
||||||
new_7 =
|
|
||||||
new_8 =
|
|
||||||
new_9 =
|
|
||||||
ezy_0 =
|
|
||||||
ezy_1 =
|
|
||||||
ezy_2 =
|
|
||||||
ezy_3 =
|
|
||||||
ezy_4 =
|
|
||||||
ezy_5 =
|
|
||||||
ezy_6 =
|
|
||||||
ezy_7 =
|
|
||||||
ezy_8 =
|
|
||||||
ezy_9 =
|
|
||||||
|
|
||||||
[md5s]
|
|
||||||
|
|
||||||
[names]
|
|
||||||
|
|
||||||
[origin]
|
|
||||||
default = This file was part of your OpenTTD installation.
|
|
@@ -1,70 +0,0 @@
|
|||||||
; $Id$
|
|
||||||
;
|
|
||||||
; This represents more or less nothingness
|
|
||||||
;
|
|
||||||
[metadata]
|
|
||||||
name = NoSound
|
|
||||||
shortname = NULL
|
|
||||||
version = 2
|
|
||||||
fallback = true
|
|
||||||
description = A sound pack without any sounds.
|
|
||||||
description.af_ZA = 'n Klank stel sonder enige klanke.
|
|
||||||
description.ar_EG = مجموعة صوت بدوت اصوات مضافة
|
|
||||||
description.be_BY = "Пусты" набор гукавога афармленьня, які не зьмяшчае ніякіх гукаў.
|
|
||||||
description.bg_BG = Празен звуков пакет.
|
|
||||||
description.ca_ES = Una llista de sons buida.
|
|
||||||
description.cs_CZ = Prázdná sada zvuků.
|
|
||||||
description.cy_GB = Pecyn sain heb unrhyw effeithiau sain ynddo.
|
|
||||||
description.da_DK = En lydpakke uden lyde.
|
|
||||||
description.de_DE = Basissounds ohne Sound.
|
|
||||||
description.el_GR = Ένα πάκετο ήχων χώρις ήχους.
|
|
||||||
description.en_AU = A sound pack without any sounds.
|
|
||||||
description.en_US = A sound pack without any sounds.
|
|
||||||
description.es_ES = Un conjunto de sonidos vacío.
|
|
||||||
description.es_MX = Paquete de sonidos vacío
|
|
||||||
description.et_EE = Helikogu ilma helideta.
|
|
||||||
description.eu_ES = Soinurik gabeko soinu pakete bat
|
|
||||||
description.fi_FI = Äänipaketti, jossa ei ole ääniä.
|
|
||||||
description.fr_FR = Un pack de sons sans sons.
|
|
||||||
description.ga_IE = Pacáiste fuaimeanna gan aon fhuaimeanna ann.
|
|
||||||
description.gd_GB = Pacaid fhuaimean anns nach eil fuaim sam bith.
|
|
||||||
description.gl_ES = Un conxunto de sons sen ningún son
|
|
||||||
description.he_IL = אוסף צלילים ללא צלילים.
|
|
||||||
description.hr_HR = Zvučni paket bez ikakvih zvukova.
|
|
||||||
description.hu_HU = Hang alapcsomag hangok nélkül.
|
|
||||||
description.id_ID = Paket efek suara tanpa suara apapun.
|
|
||||||
description.is_IS = Hljóðpakki án hljóðs.
|
|
||||||
description.it_IT = Un pacchetto sonoro non contenente alcun suono.
|
|
||||||
description.ja_JP = 空の効果音パック
|
|
||||||
description.ko_KR = 아무런 효과음도 없는 효과음 팩입니다.
|
|
||||||
description.la_VA = Sarcina sonorum sine ullis sonis.
|
|
||||||
description.lb_LU = E Soundpack ouni iergendee Sound.
|
|
||||||
description.lt_LT = Garsų pakas be jokių garsų.
|
|
||||||
description.lv_LV = Skaņu kopa bez skaņas.
|
|
||||||
description.nb_NO = En lydpakke uten noen lyder.
|
|
||||||
description.nl_NL = Een geluidset zonder geluid.
|
|
||||||
description.nn_NO = Ei lydpakke utan nokon lydar.
|
|
||||||
description.pl_PL = Zestaw dźwięków nie zawierający żadnych dźwięków.
|
|
||||||
description.pt_BR = Um pacote de sons sem sons.
|
|
||||||
description.pt_PT = Um conjunto de sons vazio.
|
|
||||||
description.ro_RO = Un set de sunete fără nici un sunet inclus.
|
|
||||||
description.ru_RU = "Пустой" набор звукового оформления, не содержащий никаких звуков.
|
|
||||||
description.sk_SK = Zvuková sada neobsahujúca zvuky.
|
|
||||||
description.sl_SI = Zvočni paket brez zvoka.
|
|
||||||
description.sr_RS = Prazan skup zvukova.
|
|
||||||
description.sv_SE = Ett ljudpaket utan några ljud.
|
|
||||||
description.ta_IN = ஒலிகள் இல்லாத ஒலி தொகுப்பு.
|
|
||||||
description.th_TH = ชุดเสียงแบบไร้เสียง
|
|
||||||
description.tr_TR = Ses içermeyen boş bir ses kümesi.
|
|
||||||
description.uk_UA = Порожній набір звуків.
|
|
||||||
description.vi_VN = Gói âm thanh này không có âm thanh nào.
|
|
||||||
description.zh_CN = 一个空的音效包.
|
|
||||||
description.zh_TW = 不含任何音效的音效集。
|
|
||||||
|
|
||||||
[files]
|
|
||||||
samples =
|
|
||||||
|
|
||||||
[md5s]
|
|
||||||
|
|
||||||
[origin]
|
|
||||||
default = This file was part of your OpenTTD installation.
|
|
Binary file not shown.
@@ -1,84 +0,0 @@
|
|||||||
; $Id$
|
|
||||||
;
|
|
||||||
; This represents the original graphics as on the non-German Transport
|
|
||||||
; Tycoon Deluxe DOS CD.
|
|
||||||
;
|
|
||||||
[metadata]
|
|
||||||
name = original_dos
|
|
||||||
shortname = TTDD
|
|
||||||
version = 1
|
|
||||||
palette = DOS
|
|
||||||
description = Original Transport Tycoon Deluxe DOS edition graphics.
|
|
||||||
description.af_ZA = Oorspronklike Transport Tycoon Deluxe DOS uitgawe grafieke.
|
|
||||||
description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الرسومية نسخة الدوس
|
|
||||||
description.be_BY = Арыґінальная ґрафіка з Transport Tycoon Deluxe для DOS.
|
|
||||||
description.bg_BG = Оригинални графики на Transport Tycoon Deluxe за DOS.
|
|
||||||
description.ca_ES = Gràfics originals del Transport Tycoon Deluxe pel DOS.
|
|
||||||
description.cs_CZ = Původní sada grafik Transport Tycoon Deluxe (verze pro DOS).
|
|
||||||
description.cy_GB = Graffeg gwreiddiol fersiwn DOS o Transport Tycoon Deluxe.
|
|
||||||
description.da_DK = Originalgrafik fra Transport Tycoon Deluxe DOS-version.
|
|
||||||
description.de_DE = Original Transport Tycoon Deluxe DOS Basisgrafiken.
|
|
||||||
description.el_GR = Αρχικά γραφικά από το Transport Tycoon Deluxe έκδοση DOS.
|
|
||||||
description.en_AU = Original Transport Tycoon Deluxe DOS edition graphics.
|
|
||||||
description.en_US = Original Transport Tycoon Deluxe DOS edition graphics.
|
|
||||||
description.es_ES = Gráficos originales de Transport Tycoon Deluxe versión DOS.
|
|
||||||
description.es_MX = Gráficos originales de Transport Tycoon Deluxe para DOS.
|
|
||||||
description.et_EE = Algse Transport Tycoon Deluxe DOSi versiooni graafika.
|
|
||||||
description.eu_ES = Transport Tycoon Deluxe originaleko DOS edizioko grafikoak.
|
|
||||||
description.fi_FI = Alkuperäiset Transport Tycoon Deluxen DOS-version grafiikat.
|
|
||||||
description.fr_FR = Graphiques originaux de Transport Tycoon Deluxe (version DOS).
|
|
||||||
description.ga_IE = Grafaicí bunaidhTransport Tycoon Deluxe, eagrán DOS.
|
|
||||||
description.gd_GB = Grafaigeachd aig an deasachadh DOS tùsail aig Transport Tycoon Deluxe.
|
|
||||||
description.gl_ES = Graficos da edición orixinal de Transport Tycoon Deluxe para DOS.
|
|
||||||
description.he_IL = גרפיקות Transport Tycoon Deluxe המקורי בגרסת DOS.
|
|
||||||
description.hr_HR = Originalna grafika za Transport Tycoon Deluxe DOS izdanje.
|
|
||||||
description.hu_HU = Az eredeti Transport Tycoon Deluxe DOS verziójának grafikája.
|
|
||||||
description.id_ID = Grafik orisinil Transport Tycoon Deluxe versi DOS.
|
|
||||||
description.is_IS = Upprunalega grafíkin úr Transport Tycoon Deluxe DOS útgáfunni.
|
|
||||||
description.it_IT = Grafica originale di Transport Tycoon Deluxe, edizione DOS.
|
|
||||||
description.ja_JP = Transport Tycoon Deluxe オリジナル版 グラフィック (DOS)
|
|
||||||
description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 도스 에디션의 그래픽입니다.
|
|
||||||
description.la_VA = Graphica ex editione originale Transport Tycoon Deluxe DOS.
|
|
||||||
description.lb_LU = Original Transport Tycoon Deluxe DOS Editioun Grafik.
|
|
||||||
description.lt_LT = Originali Transport Tycoon Deluxe DOS leidimo grafika.
|
|
||||||
description.lv_LV = Oriģinālā Transport Tycoon Deluxe DOS izdevuma grafika.
|
|
||||||
description.ms_MY = Grafik asal Transport Tycoon Deluxe DOS edition.
|
|
||||||
description.nb_NO = Original grafikk fra Transport Tycoon Deluxe for DOS.
|
|
||||||
description.nl_NL = Originele graphics van de Transport Tycoon Deluxe DOS-versie.
|
|
||||||
description.nn_NO = Original grafikk frå Transport Tycoon Deluxe for DOS.
|
|
||||||
description.pl_PL = Oryginalna edycja grafik dla Transport Tycoon Deluxe DOS.
|
|
||||||
description.pt_BR = Gráficos Originais do Transport Tycoon Deluxe, Edição DOS.
|
|
||||||
description.pt_PT = Gráficos originais da edição DOS de Transport Tycoon Deluxe.
|
|
||||||
description.ro_RO = Setul grafic original al Transport Tycoon Deluxe pentru DOS.
|
|
||||||
description.ru_RU = Оригинальная графика из Transport Tycoon Deluxe для DOS.
|
|
||||||
description.sk_SK = Pôvodná grafika Transport Tycoon Deluxe (DOS).
|
|
||||||
description.sl_SI = Originalna grafika Transport Tycoon Deluxe za različico DOS.
|
|
||||||
description.sr_RS = Originalni skup grafika Transport Tycoon Deluxe DOS izdanja.
|
|
||||||
description.sv_SE = Originalgrafiken från Transport Tycoon Deluxe, DOS-utgåvan.
|
|
||||||
description.ta_IN = அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் DOS பதிப்பு அசைவூட்டங்கள்.
|
|
||||||
description.th_TH = กราฟฟิกต้นตำหรับของ Transport Tycoon Deluxe DOS edition
|
|
||||||
description.tr_TR = Özgün Transport Tycoon Deluxe DOS sürümü grafikleri.
|
|
||||||
description.uk_UA = Оригінальна графіка з Transport Tycoon Deluxe DOS edition.
|
|
||||||
description.vi_VN = Đồ họa gốc từ phiên bản Transport Tycoon Deluxe trên DOS
|
|
||||||
description.zh_CN = 运输大亨DOS豪华版原版图形包.
|
|
||||||
description.zh_TW = 原版 Transport Tycoon Deluxe DOS 版的圖形。
|
|
||||||
|
|
||||||
[files]
|
|
||||||
base = TRG1.GRF
|
|
||||||
logos = TRGI.GRF
|
|
||||||
arctic = TRGC.GRF
|
|
||||||
tropical = TRGH.GRF
|
|
||||||
toyland = TRGT.GRF
|
|
||||||
extra = ORIG_EXTRA.GRF
|
|
||||||
|
|
||||||
[md5s]
|
|
||||||
TRG1.GRF = 9311676280e5b14077a8ee41c1b42192
|
|
||||||
TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8
|
|
||||||
TRGC.GRF = ed446637e034104c5559b32c18afe78d
|
|
||||||
TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9
|
|
||||||
TRGT.GRF = e30e8a398ae86c03dc534a8ac7dfb3b6
|
|
||||||
ORIG_EXTRA.GRF = 67bcfac5911667309d86b7749ea8d08c
|
|
||||||
|
|
||||||
[origin]
|
|
||||||
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
|
|
||||||
ORIG_EXTRA.GRF = This file was part of your OpenTTD installation.
|
|
@@ -1,76 +0,0 @@
|
|||||||
; $Id$
|
|
||||||
;
|
|
||||||
; This represents the original music as on the Transport
|
|
||||||
; Tycoon Deluxe for DOS CD.
|
|
||||||
;
|
|
||||||
[metadata]
|
|
||||||
name = original_dos
|
|
||||||
shortname = TTDD
|
|
||||||
version = 1
|
|
||||||
description = Original Transport Tycoon Deluxe DOS edition music.
|
|
||||||
|
|
||||||
[files]
|
|
||||||
theme = gm.cat
|
|
||||||
old_0 = gm.cat
|
|
||||||
old_1 = gm.cat
|
|
||||||
old_2 = gm.cat
|
|
||||||
old_3 = gm.cat
|
|
||||||
old_4 = gm.cat
|
|
||||||
old_5 = gm.cat
|
|
||||||
old_6 = gm.cat
|
|
||||||
old_7 = gm.cat
|
|
||||||
old_8 =
|
|
||||||
old_9 =
|
|
||||||
new_0 = gm.cat
|
|
||||||
new_1 = gm.cat
|
|
||||||
new_2 = gm.cat
|
|
||||||
new_3 = gm.cat
|
|
||||||
new_4 = gm.cat
|
|
||||||
new_5 = gm.cat
|
|
||||||
new_6 = gm.cat
|
|
||||||
new_7 =
|
|
||||||
new_8 =
|
|
||||||
new_9 =
|
|
||||||
ezy_0 = gm.cat
|
|
||||||
ezy_1 = gm.cat
|
|
||||||
ezy_2 = gm.cat
|
|
||||||
ezy_3 = gm.cat
|
|
||||||
ezy_4 = gm.cat
|
|
||||||
ezy_5 = gm.cat
|
|
||||||
ezy_6 =
|
|
||||||
ezy_7 =
|
|
||||||
ezy_8 =
|
|
||||||
ezy_9 =
|
|
||||||
|
|
||||||
[md5s]
|
|
||||||
gm.cat = 7a29d2d0c4f7d2e03091ffa9b2bdfffb
|
|
||||||
|
|
||||||
[catindex]
|
|
||||||
theme = 0
|
|
||||||
old_0 = 1
|
|
||||||
old_1 = 8
|
|
||||||
old_2 = 2
|
|
||||||
old_3 = 9
|
|
||||||
old_4 = 14
|
|
||||||
old_5 = 15
|
|
||||||
old_6 = 19
|
|
||||||
old_7 = 13
|
|
||||||
new_0 = 6
|
|
||||||
new_1 = 11
|
|
||||||
new_2 = 10
|
|
||||||
new_3 = 17
|
|
||||||
new_4 = 21
|
|
||||||
new_5 = 18
|
|
||||||
new_6 = 5
|
|
||||||
ezy_0 = 12
|
|
||||||
ezy_1 = 7
|
|
||||||
ezy_2 = 16
|
|
||||||
ezy_3 = 3
|
|
||||||
ezy_4 = 20
|
|
||||||
ezy_5 = 4
|
|
||||||
|
|
||||||
[names]
|
|
||||||
; Names get read from the CAT file
|
|
||||||
|
|
||||||
[origin]
|
|
||||||
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
|
|
@@ -1,70 +0,0 @@
|
|||||||
; $Id$
|
|
||||||
;
|
|
||||||
; This represents the original sounds as on the Transport
|
|
||||||
; Tycoon Deluxe DOS CD.
|
|
||||||
;
|
|
||||||
[metadata]
|
|
||||||
name = original_dos
|
|
||||||
shortname = TTDO
|
|
||||||
version = 0
|
|
||||||
description = Original Transport Tycoon Deluxe DOS edition sounds.
|
|
||||||
description.af_ZA = Oorspronklike Transport Tycoon Deluxe DOS uitgawe klanke.
|
|
||||||
description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الصوتية نسخة الدوس
|
|
||||||
description.be_BY = Арыґінальны набор гукавога афармленьня з гульні Transport Tycoon Deluxe для DOS.
|
|
||||||
description.bg_BG = Оригинални звуци на Transport Tycoon Deluxe за DOS.
|
|
||||||
description.ca_ES = Sons originals del Transport Tycoon Deluxe pel DOS.
|
|
||||||
description.cs_CZ = Původní sada zvuků Transport Tycoon Deluxe (verze pro DOS).
|
|
||||||
description.cy_GB = Effeithiau sain gwreiddiol fersiwn DOS o Transport Tycoon Deluxe.
|
|
||||||
description.da_DK = Originallyd fra Transport Tycoon Deluxe DOS-version.
|
|
||||||
description.de_DE = Original Transport Tycoon Deluxe DOS Basissounds.
|
|
||||||
description.el_GR = Αρχικοί ήχοι από το Transport Tycoon Deluxe έκδοση DOS.
|
|
||||||
description.en_AU = Original Transport Tycoon Deluxe DOS edition sounds.
|
|
||||||
description.en_US = Original Transport Tycoon Deluxe DOS edition sounds.
|
|
||||||
description.es_ES = Sonidos originales de Transport Tycoon Deluxe versión DOS.
|
|
||||||
description.es_MX = Sonidos originales de Transport Tycoon Deluxe para DOS.
|
|
||||||
description.et_EE = Algse Transport Tycoon Deluxe DOSi versiooni helid.
|
|
||||||
description.eu_ES = Transport Tycoon Deluxe originaleko DOS edizioko soinuak.
|
|
||||||
description.fi_FI = Alkuperäiset Transport Tycoon Deluxen DOS-version äänet.
|
|
||||||
description.fr_FR = Sons originaux de Transport Tycoon Deluxe (version DOS).
|
|
||||||
description.ga_IE = Fuaimeanna bunaidh Transport Tycoon Deluxe, eagrán DOS.
|
|
||||||
description.gd_GB = Fuaimean aig an deasachadh DOS tùsail aig Transport Tycoon Deluxe.
|
|
||||||
description.gl_ES = Sons da edición orixinal de Transport Tycoon Deluxe para DOS.
|
|
||||||
description.he_IL = צלילי Transport Tycoon Deluxe המקורי בגרסת DOS.
|
|
||||||
description.hr_HR = Originalni zvukovi za Transport Tycoon Deluxe DOS izdanje.
|
|
||||||
description.hu_HU = Az eredeti Transport Tycoon Deluxe DOS verziójának hangjai.
|
|
||||||
description.id_ID = Efek suara orisinil Transport Tycoon Deluxe versi DOS.
|
|
||||||
description.is_IS = Upprunalega hljóðið úr Transport Tycoon Deluxe DOS útgáfunni.
|
|
||||||
description.it_IT = Suoni originali di Transport Tycoon Deluxe, edizione DOS.
|
|
||||||
description.ja_JP = Transport Tycoon Deluxe オリジナル版 効果音 (DOS)
|
|
||||||
description.ko_KR = 오리지널 트랜스포트 타이쿤 도스 에디션의 효과음입니다.
|
|
||||||
description.la_VA = Soni ex editione originale Transport Tycoon Deluxe DOS.
|
|
||||||
description.lb_LU = Original Transport Tycoon Deluxe DOS Editioun Sound.
|
|
||||||
description.lt_LT = Originalūs Transport Tycoon Deluxe DOS leidimo garsai.
|
|
||||||
description.nb_NO = Originale lyder fra Transport Tycoon Deluxe for DOS.
|
|
||||||
description.nl_NL = Originele geluiden van de Transport Tycoon Deluxe DOS-versie.
|
|
||||||
description.nn_NO = Originale lydar frå Transport Tycoon Deluxe for DOS.
|
|
||||||
description.pl_PL = Oryginalna edycja dźwięków dla Transport Tycoon Deluxe DOS.
|
|
||||||
description.pt_BR = Sons Originais do Transport Tycoon Deluxe, Edição DOS.
|
|
||||||
description.pt_PT = Sons originais da edição DOS de Transport Tycoon Deluxe.
|
|
||||||
description.ro_RO = Setul de sunete original al Transport Tycoon Deluxe pentru DOS.
|
|
||||||
description.ru_RU = Оригинальный набор звукового оформления из игры Transport Tycoon Deluxe для DOS.
|
|
||||||
description.sk_SK = Pôvodné zvuky Transport Tycoon Deluxe (DOS).
|
|
||||||
description.sl_SI = Originalni zvoki Transport Tycoon Deluxe različice DOS.
|
|
||||||
description.sr_RS = Originalni skup zvukova Transport Tycoon Deluxe DOS izdanja.
|
|
||||||
description.sv_SE = Originalljuden från Transport Tycoon Deluxe, DOS-utgåvan.
|
|
||||||
description.ta_IN = அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் DOS பதிப்பு ஒலிகள்.
|
|
||||||
description.th_TH = เสียงต้นตำหรับของ Transport Tycoon Deluxe DOS edition
|
|
||||||
description.tr_TR = Özgün Transport Tycoon Deluxe DOS sürümü sesleri.
|
|
||||||
description.uk_UA = Оригінальний набір звуків з Transport Tycoon Deluxe DOS edition.
|
|
||||||
description.vi_VN = Âm thanh gốc từ phiên bản Transport Tycoon Deluxe trên DOS
|
|
||||||
description.zh_CN = 运输大亨DOS豪华版原版音效包.
|
|
||||||
description.zh_TW = 原版 Transport Tycoon Deluxe DOS 版的音效。
|
|
||||||
|
|
||||||
[files]
|
|
||||||
samples = SAMPLE.CAT
|
|
||||||
|
|
||||||
[md5s]
|
|
||||||
SAMPLE.CAT = 422ea3dd074d2859bb51639a6e0e85da
|
|
||||||
|
|
||||||
[origin]
|
|
||||||
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
|
|
@@ -1,82 +0,0 @@
|
|||||||
; $Id$
|
|
||||||
;
|
|
||||||
; This represents the original graphics as on the German Transport
|
|
||||||
; Tycoon Deluxe DOS CD. It contains one broken sprite.
|
|
||||||
;
|
|
||||||
[metadata]
|
|
||||||
name = original_dos_de
|
|
||||||
shortname = TTDD
|
|
||||||
version = 0
|
|
||||||
palette = DOS
|
|
||||||
description = Original Transport Tycoon Deluxe DOS (German) edition graphics.
|
|
||||||
description.af_ZA = Oorspronklike Transport Tycoon Deluxe DOS (German) uitgawe grafieke.
|
|
||||||
description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الالمانية نسخة الدوس
|
|
||||||
description.be_BY = Арыґінальная ґрафіка зь нямецкай версіі Transport Tycoon Deluxe для DOS.
|
|
||||||
description.bg_BG = Оригинални графики на Transport Tycoon Deluxe за DOS (немски) .
|
|
||||||
description.ca_ES = Gràfics originals del Transport Tycoon Deluxe (alemany) pel DOS.
|
|
||||||
description.cs_CZ = Původní sada grafik Transport Tycoon Deluxe (německá verze pro DOS).
|
|
||||||
description.cy_GB = Graffeg gwreiddiol fersiwn DOS (Almaenig) o Transport Tycoon Deluxe.
|
|
||||||
description.da_DK = Originalgrafik fra Transport Tycoon Deluxe DOS (Tysk) version.
|
|
||||||
description.de_DE = Original Transport Tycoon Deluxe DOS (Deutsch) Basisgrafiken.
|
|
||||||
description.el_GR = Αρχικά γραφικά από το Transport Tycoon Deluxe έκδοση DOS (Γερμανικό).
|
|
||||||
description.en_AU = Original Transport Tycoon Deluxe DOS (German) edition graphics.
|
|
||||||
description.en_US = Original Transport Tycoon Deluxe DOS (German) edition graphics.
|
|
||||||
description.es_ES = Gráficos originales de Transport Tycoon Deluxe versión DOS (Alemán).
|
|
||||||
description.es_MX = Gráficos originales de Transport Tycoon Deluxe para DOS (en alemán).
|
|
||||||
description.et_EE = Algse Transport Tycoon Deluxe DOSi (Saksa) versiooni graafika.
|
|
||||||
description.fi_FI = Alkuperäiset Saksassa julkaistun Transport Tycoon Deluxen DOS-version grafiikat.
|
|
||||||
description.fr_FR = Graphiques originaux de Transport Tycoon Deluxe (version DOS allemande).
|
|
||||||
description.ga_IE = Grafaicí bunaidhTransport Tycoon Deluxe, eagrán DOS (Gearmánach).
|
|
||||||
description.gd_GB = Grafaigeachd aig an deasachadh DOS (Gearmailteach) tùsail aig Transport Tycoon Deluxe.
|
|
||||||
description.gl_ES = Graficos da edición orixinal (alemá) de Transport Tycoon Deluxe para DOS.
|
|
||||||
description.he_IL = גרפיקות Transport Tycoon Deluxe המקורי בגרסת DOS (גרמנית).
|
|
||||||
description.hr_HR = Originalna grafika za Transport Tycoon Deluxe DOS (Njemački) izdanje.
|
|
||||||
description.hu_HU = Az eredeti Transport Tycoon Deluxe DOS (német) verziójának grafikája.
|
|
||||||
description.id_ID = Grafik orisinil Transport Tycoon Deluxe versi DOS (Jerman).
|
|
||||||
description.is_IS = Upprunalega grafíkin úr Transport Tycoon Deluxe DOS (þýsku) útgáfunni.
|
|
||||||
description.it_IT = Grafica originale di Transport Tycoon Deluxe (tedesco), edizione DOS.
|
|
||||||
description.ja_JP = Transport Tycoon Deluxe オリジナル版 グラフィック (DOS・ドイツ版)
|
|
||||||
description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 도스 에디션(독일)의 그래픽입니다.
|
|
||||||
description.la_VA = Graphica ex editione originale Transport Tycoon Deluxe DOS (Germanica).
|
|
||||||
description.lb_LU = Original Transport Tycoon Deluxe DOS (Däitsch) Editioun Grafik.
|
|
||||||
description.lt_LT = Originali Transport Tycoon Deluxe DOS (Vokiečių) leidimo grafika.
|
|
||||||
description.lv_LV = Oriģinālā Transport Tycoon Deluxe DOS (vācu) izdevuma grafika.
|
|
||||||
description.nb_NO = Original grafikk fra Transport Tycoon Deluxe for DOS (tysk).
|
|
||||||
description.nl_NL = Originele graphics van de Duitse Transport Tycoon Deluxe DOS-versie.
|
|
||||||
description.nn_NO = Original grafikk frå Transport Tycoon Deluxe for DOS (tysk).
|
|
||||||
description.pl_PL = Oryginalna edycja grafik dla Transport Tycoon Deluxe DOS (German).
|
|
||||||
description.pt_BR = Gráficos Originais do Transport Tycoon Deluxe, Edição DOS alemã.
|
|
||||||
description.pt_PT = Gráficos originais da edição DOS (Alemã) de Transport Tycoon Deluxe.
|
|
||||||
description.ro_RO = Setul grafic original al Transport Tycoon Deluxe pentru DOS (ediţia germană).
|
|
||||||
description.ru_RU = Оригинальная графика из немецкой версии Transport Tycoon Deluxe для DOS.
|
|
||||||
description.sk_SK = Pôvodná grafika Transport Tycoon Deluxe (DOS) (v jazyku nemčina).
|
|
||||||
description.sl_SI = Originalna grafika Transport Tycoon Deluxe za nemško različico DOS.
|
|
||||||
description.sr_RS = Originalni skup grafika nemačkog Transport Tycoon Deluxe DOS izdanja.
|
|
||||||
description.sv_SE = Originalgrafiken från Transport Tycoon Deluxe, DOS-utgåvan (tyska).
|
|
||||||
description.ta_IN = அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் DOS (செருமன்) பதிப்பு அசைவூட்டங்கள்.
|
|
||||||
description.th_TH = กราฟฟิกต้นตำหรับของ Transport Tycoon Deluxe DOS (German) edition
|
|
||||||
description.tr_TR = Özgün Transport Tycoon Deluxe DOS (Almanca) sürümü grafikleri.
|
|
||||||
description.uk_UA = Оригінальна графіка з Transport Tycoon Deluxe DOS edition (німецького).
|
|
||||||
description.vi_VN = Đồ họa gốc từ phiên bản Transport Tycoon Deluxe trên DOS (tiếng Đức)
|
|
||||||
description.zh_CN = 运输大亨DOS豪华德语版原版图形包.
|
|
||||||
description.zh_TW = 原版 Transport Tycoon Deluxe DOS 版 (德國版) 的圖形。
|
|
||||||
|
|
||||||
[files]
|
|
||||||
base = TRG1.GRF
|
|
||||||
logos = TRGI.GRF
|
|
||||||
arctic = TRGC.GRF
|
|
||||||
tropical = TRGH.GRF
|
|
||||||
toyland = TRGT.GRF
|
|
||||||
extra = ORIG_EXTRA.GRF
|
|
||||||
|
|
||||||
[md5s]
|
|
||||||
TRG1.GRF = 9311676280e5b14077a8ee41c1b42192
|
|
||||||
TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8
|
|
||||||
TRGC.GRF = ed446637e034104c5559b32c18afe78d
|
|
||||||
TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9
|
|
||||||
TRGT.GRF = fcde1d7e8a74197d72a62695884b909e
|
|
||||||
ORIG_EXTRA.GRF = 67bcfac5911667309d86b7749ea8d08c
|
|
||||||
|
|
||||||
[origin]
|
|
||||||
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
|
|
||||||
ORIG_EXTRA.GRF = This file was part of your OpenTTD installation.
|
|
@@ -1,71 +0,0 @@
|
|||||||
; $Id$
|
|
||||||
;
|
|
||||||
; This represents the original music as on the Transport
|
|
||||||
; Tycoon (with World Editor) for DOS CD.
|
|
||||||
;
|
|
||||||
[metadata]
|
|
||||||
name = original_tto
|
|
||||||
shortname = TTOD
|
|
||||||
version = 1
|
|
||||||
description = Original Transport Tycoon (Original/World Editor) music.
|
|
||||||
|
|
||||||
[files]
|
|
||||||
theme = gm-tto.cat
|
|
||||||
old_0 = gm-tto.cat
|
|
||||||
old_1 = gm-tto.cat
|
|
||||||
old_2 = gm-tto.cat
|
|
||||||
old_3 = gm-tto.cat
|
|
||||||
old_4 = gm-tto.cat
|
|
||||||
old_5 = gm-tto.cat
|
|
||||||
old_6 = gm-tto.cat
|
|
||||||
old_7 = gm-tto.cat
|
|
||||||
old_8 =
|
|
||||||
old_9 =
|
|
||||||
new_0 = gm-tto.cat
|
|
||||||
new_1 = gm-tto.cat
|
|
||||||
new_2 = gm-tto.cat
|
|
||||||
new_3 = gm-tto.cat
|
|
||||||
new_4 = gm-tto.cat
|
|
||||||
new_5 = gm-tto.cat
|
|
||||||
new_6 = gm-tto.cat
|
|
||||||
new_7 = gm-tto.cat
|
|
||||||
new_8 =
|
|
||||||
new_9 =
|
|
||||||
ezy_0 =
|
|
||||||
ezy_1 =
|
|
||||||
ezy_2 =
|
|
||||||
ezy_3 =
|
|
||||||
ezy_4 =
|
|
||||||
ezy_5 =
|
|
||||||
ezy_6 =
|
|
||||||
ezy_7 =
|
|
||||||
ezy_8 =
|
|
||||||
ezy_9 =
|
|
||||||
|
|
||||||
[catindex]
|
|
||||||
theme = 0
|
|
||||||
old_0 = 1
|
|
||||||
old_1 = 6
|
|
||||||
old_2 = 2
|
|
||||||
old_3 = 7
|
|
||||||
old_4 = 11
|
|
||||||
old_5 = 12
|
|
||||||
old_6 = 15
|
|
||||||
old_7 = 10
|
|
||||||
new_0 = 4
|
|
||||||
new_1 = 5
|
|
||||||
new_2 = 9
|
|
||||||
new_3 = 8
|
|
||||||
new_4 = 13
|
|
||||||
new_5 = 16
|
|
||||||
new_6 = 14
|
|
||||||
new_7 = 3
|
|
||||||
|
|
||||||
[md5s]
|
|
||||||
gm-tto.cat = 26e85ff84b0063aa5da05dd4698fc76e
|
|
||||||
|
|
||||||
[names]
|
|
||||||
; Names get read from the CAT file
|
|
||||||
|
|
||||||
[origin]
|
|
||||||
default = You can find it on your Transport Tycoon CD-ROM.
|
|
@@ -1,83 +0,0 @@
|
|||||||
; $Id$
|
|
||||||
;
|
|
||||||
; This represents the original graphics as on the Transport
|
|
||||||
; Tycoon Deluxe for Windows CD.
|
|
||||||
;
|
|
||||||
[metadata]
|
|
||||||
name = original_windows
|
|
||||||
shortname = TTDW
|
|
||||||
version = 0
|
|
||||||
palette = Windows
|
|
||||||
description = Original Transport Tycoon Deluxe Windows edition graphics.
|
|
||||||
description.af_ZA = Oorspronklike Transport Tycoon Deluxe Windows uitgawe grafieke.
|
|
||||||
description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الرسومية نسخة وندوز
|
|
||||||
description.be_BY = Арыґінальная ґрафіка з Transport Tycoon Deluxe для Windows.
|
|
||||||
description.bg_BG = Оригинални графики на Transport Tycoon Deluxe за Windows.
|
|
||||||
description.ca_ES = Gràfics originals del Transport Tycoon Deluxe pel Windows.
|
|
||||||
description.cs_CZ = Původní sada grafik Transport Tycoon Deluxe (verze pro Windows).
|
|
||||||
description.cy_GB = Graffeg gwreiddiol fersiwn Windows o Transport Tycoon Deluxe.
|
|
||||||
description.da_DK = Originalgrafik fra Transport Tycoon Deluxe Windows-version.
|
|
||||||
description.de_DE = Original Transport Tycoon Deluxe Windows Basisgrafiken.
|
|
||||||
description.el_GR = Αρχικά γραφικά από το Transport Tycoon Deluxe έκδοση Windows.
|
|
||||||
description.en_AU = Original Transport Tycoon Deluxe Windows edition graphics.
|
|
||||||
description.en_US = Original Transport Tycoon Deluxe Windows edition graphics.
|
|
||||||
description.es_ES = Gráficos originales de Transport Tycoon Deluxe versión Windows.
|
|
||||||
description.es_MX = Gráficos originales de Transport Tycoon Deluxe para Windows.
|
|
||||||
description.et_EE = Algse Transport Tycoon Deluxe Windowsi versiooni graafika.
|
|
||||||
description.fi_FI = Alkuperäiset Transport Tycoon Deluxen Windows-version grafiikat.
|
|
||||||
description.fr_FR = Graphiques originaux de Transport Tycoon Deluxe (version Windows).
|
|
||||||
description.ga_IE = Grafaicí bunaidhTransport Tycoon Deluxe, eagrán Windows.
|
|
||||||
description.gd_GB = Grafaigeachd aig an deasachadh Windows tùsail aig Transport Tycoon Deluxe.
|
|
||||||
description.gl_ES = Graficos da edición orixinal de Transport Tycoon Deluxe para Windows.
|
|
||||||
description.he_IL = גרפיקות Transport Tycoon Deluxe המקורי בגרסת Windows.
|
|
||||||
description.hr_HR = Originalna grafika za Transport Tycoon Deluxe Windows izdanje.
|
|
||||||
description.hu_HU = Az eredeti Transport Tycoon Deluxe Windows verziójának grafikája.
|
|
||||||
description.id_ID = Grafik orisinil Transport Tycoon Deluxe versi Windows.
|
|
||||||
description.is_IS = Upprunalega grafíkin úr Transport Tycoon Deluxe Windows útgáfunni.
|
|
||||||
description.it_IT = Grafica originale di Transport Tycoon Deluxe, edizione Windows.
|
|
||||||
description.ja_JP = Transport Tycoon Deluxe オリジナル版 グラフィック (Windows)
|
|
||||||
description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 윈도 에디션의 그래픽입니다.
|
|
||||||
description.la_VA = Graphica ex editione originale Transport Tycoon Deluxe Windows.
|
|
||||||
description.lb_LU = Original Transport Tycoon Deluxe Windows Editioun Grafik.
|
|
||||||
description.lt_LT = Originali Transport Tycoon Deluxe Windows leidimo grafika.
|
|
||||||
description.lv_LV = Oriģinālā Transport Tycoon Deluxe Windows izdevuma grafika.
|
|
||||||
description.ms_MY = Grafik asal Transport Tycoon Deluxe edisi 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.nn_NO = Original grafikk frå Transport Tycoon Deluxe for Windows.
|
|
||||||
description.pl_PL = Oryginalna edycja grafik dla Transport Tycoon Deluxe Windows.
|
|
||||||
description.pt_BR = Gráficos Originais do Transport Tycoon, Edição Windows.
|
|
||||||
description.pt_PT = Gráficos originais da edição Windows de Transport Tycoon Deluxe.
|
|
||||||
description.ro_RO = Setul grafic original al Transport Tycoon Deluxe pentru Windows.
|
|
||||||
description.ru_RU = Оригинальная графика из Transport Tycoon Deluxe для Windows.
|
|
||||||
description.sk_SK = Pôvodná grafika Transport Tycoon Deluxe (Windows).
|
|
||||||
description.sl_SI = Originalna grafika Transport Tycoon Deluxe za različico oken(windows).
|
|
||||||
description.sr_RS = Originalni skup grafika Transport Tycoon Deluxe Windows izdanja.
|
|
||||||
description.sv_SE = Originalgrafiken från Transport Tycoon Deluxe, Windows-utgåvan.
|
|
||||||
description.ta_IN = அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் விண்டோஸ் பதிப்பு அசைவூட்டங்கள்.
|
|
||||||
description.th_TH = กราฟฟิกต้ำตำหรับของ Transport Tycoon Deluxe Windows edition
|
|
||||||
description.tr_TR = Özgün Transport Tycoon Deluxe Windows sürümü grafikleri.
|
|
||||||
description.uk_UA = Оригінальна графіка з Transport Tycoon Deluxe Windows edition.
|
|
||||||
description.vi_VN = Đồ họa gốc từ phiên bản Transport Tycoon Deluxe trên Windows
|
|
||||||
description.zh_CN = 运输大亨Windows豪华版原版图形包.
|
|
||||||
description.zh_TW = 原版 Transport Tycoon Deluxe Windows 版的圖形。
|
|
||||||
|
|
||||||
[files]
|
|
||||||
base = TRG1R.GRF
|
|
||||||
logos = TRGIR.GRF
|
|
||||||
arctic = TRGCR.GRF
|
|
||||||
tropical = TRGHR.GRF
|
|
||||||
toyland = TRGTR.GRF
|
|
||||||
extra = ORIG_EXTRA.GRF
|
|
||||||
|
|
||||||
[md5s]
|
|
||||||
TRG1R.GRF = b04ce593d8c5016e07473a743d7d3358
|
|
||||||
TRGIR.GRF = 0c2484ff6be49fc63a83be6ab5c38f32
|
|
||||||
TRGCR.GRF = 3668f410c761a050b5e7095a2b14879b
|
|
||||||
TRGHR.GRF = 06bf2b7a31766f048baac2ebe43457b1
|
|
||||||
TRGTR.GRF = de53650517fe661ceaa3138c6edb0eb8
|
|
||||||
ORIG_EXTRA.GRF = 67bcfac5911667309d86b7749ea8d08c
|
|
||||||
|
|
||||||
[origin]
|
|
||||||
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
|
|
||||||
ORIG_EXTRA.GRF = This file was part of your OpenTTD installation.
|
|
@@ -1,158 +0,0 @@
|
|||||||
; $Id$
|
|
||||||
;
|
|
||||||
; This represents the original music as on the Transport
|
|
||||||
; Tycoon Deluxe for Windows CD.
|
|
||||||
;
|
|
||||||
[metadata]
|
|
||||||
name = original_windows
|
|
||||||
shortname = TTDW
|
|
||||||
version = 1
|
|
||||||
description = Original Transport Tycoon Deluxe Windows edition music.
|
|
||||||
description.af_ZA = Oorspronklike Transport Tycoon Deluxe Windows uitgawe musiek.
|
|
||||||
description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الموسيقية نسخة وندوز
|
|
||||||
description.be_BY = Арыґінальны набор музычнага афармленьня з гульні Transport Tycoon Deluxe для Windows.
|
|
||||||
description.bg_BG = Оригинална музика на Transport Tycoon Deluxe за Windows.
|
|
||||||
description.ca_ES = Música original del Transport Tycoon Deluxe pel Windows.
|
|
||||||
description.cs_CZ = Původní hudba Transport Tycoon Deluxe (verze pro Windows).
|
|
||||||
description.cy_GB = Cerddoriaeth gwreiddiol fersion Windows o Transport Tycoon Deluxe.
|
|
||||||
description.da_DK = Originalmusik fra Transport Tycoon Deluxe Windows-version.
|
|
||||||
description.de_DE = Original Transport Tycoon Deluxe Windows Musikset.
|
|
||||||
description.el_GR = Αρχική μουσική από το Transport Tycoon Deluxe έκδοση Windows.
|
|
||||||
description.en_AU = Original Transport Tycoon Deluxe Windows edition music.
|
|
||||||
description.en_US = Original Transport Tycoon Deluxe Windows edition music.
|
|
||||||
description.es_ES = Música original de Transport Tycoon Deluxe versión Windows.
|
|
||||||
description.es_MX = Música original de Transport Tycoon Deluxe para Windows.
|
|
||||||
description.et_EE = Algse Transport Tycoon Deluxe Windowsi versiooni muusika.
|
|
||||||
description.fi_FI = Alkuperäinen Transport Tycoon Deluxen Windows-version musiikki.
|
|
||||||
description.fr_FR = Musiques originales de Transport Tycoon Deluxe (version Windows).
|
|
||||||
description.ga_IE = Ceol bunaidh Transport Tycoon Deluxe, eagrán Windows.
|
|
||||||
description.gd_GB = Ceòl aig an deasachadh Windows tùsail aig Transport Tycoon Deluxe.
|
|
||||||
description.gl_ES = Música da edición orixinal de Transport Tycoon Deluxe para Windows.
|
|
||||||
description.he_IL = מנגינות Transport Tycoon Deluxe המקורי בגרסת Windows.
|
|
||||||
description.hr_HR = Originalna glazba za Transport Tycoon Deluxe Windows izdanje.
|
|
||||||
description.hu_HU = Az eredeti Transport Tycoon Deluxe Windows verziójának zenéje.
|
|
||||||
description.id_ID = Musik pengiring orisinil Transport Tycoon Deluxe versi Windows.
|
|
||||||
description.is_IS = Upprunalega tónlistin úr Transport Tycoon Deluxe Windows útgáfunni.
|
|
||||||
description.it_IT = Musica originale di Transport Tycoon Deluxe, edizione Windows.
|
|
||||||
description.ja_JP = Transport Tycoon Deluxe オリジナル版 音楽 (Windows)
|
|
||||||
description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 윈도 에디션의 음악입니다.
|
|
||||||
description.la_VA = Musica ex editione originale Transport Tycoon Deluxe Windows.
|
|
||||||
description.lb_LU = Original Transport Tycoon Deluxe Windows Editioun Musik.
|
|
||||||
description.lt_LT = Originali Transport Tycoon Deluxe Windows leidimo muzika.
|
|
||||||
description.lv_LV = Oriģinālā Transport Tycoon Deluxe Windows izdevuma mūzika.
|
|
||||||
description.ms_MY = Muzik asal Transport Tycoon Deluxe edisi 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.nn_NO = Original musikk frå Transport Tycoon Deluxe for Windows.
|
|
||||||
description.pl_PL = Oryginalna edycja utworów muzycznych w Transport Tycoon Deluxe Windows.
|
|
||||||
description.pt_BR = Música Original do Transport Tycoon Deluxe, Edição Windows
|
|
||||||
description.pt_PT = Música original da edição Windows de Transport Tycoon Deluxe.
|
|
||||||
description.ro_RO = Setul de muzică original al Transport Tycoon Deluxe pentru Windows.
|
|
||||||
description.ru_RU = Оригинальный набор музыкального оформления из игры Transport Tycoon Deluxe для Windows.
|
|
||||||
description.sk_SK = Pôvodná hudba z Transport Tycoon Deluxe (Windows).
|
|
||||||
description.sl_SI = Originalna glasba Transport Tycoon Deluxe različice oken(windows).
|
|
||||||
description.sr_RS = Originalni skup muzičkih numera Transport Tycoon Deluxe Windows izdanja.
|
|
||||||
description.sv_SE = Originalmusiken från Transport Tycoon Deluxe, Windows-utgåvan.
|
|
||||||
description.ta_IN = அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் விண்டோஸ் பதிப்பு இசை.
|
|
||||||
description.th_TH = เพลงต้นตำหรับชอง Transport Tycoon Deluxe Windows edition
|
|
||||||
description.tr_TR = Özgün Transport Tycoon Deluxe Windows sürümü müzikleri.
|
|
||||||
description.uk_UA = Оригінальна музика з Transport Tycoon Deluxe Windows edition.
|
|
||||||
description.vi_VN = Nhạc gốc từ phiên bản Transport Tycoon Deluxe trên Windows
|
|
||||||
description.zh_CN = Transport Tycoon Deluxe(运输大亨Windows豪华版)的原版音乐包
|
|
||||||
description.zh_TW = 原版 Transport Tycoon Deluxe Windows 版的音樂。
|
|
||||||
|
|
||||||
[files]
|
|
||||||
theme = GM_TT00.GM
|
|
||||||
old_0 = GM_TT02.GM
|
|
||||||
old_1 = GM_TT06.GM
|
|
||||||
old_2 = GM_TT03.GM
|
|
||||||
old_3 = GM_TT12.GM
|
|
||||||
old_4 = GM_TT08.GM
|
|
||||||
old_5 = GM_TT13.GM
|
|
||||||
old_6 = GM_TT14.GM
|
|
||||||
old_7 = GM_TT10.GM
|
|
||||||
old_8 =
|
|
||||||
old_9 =
|
|
||||||
new_0 = GM_TT04.GM
|
|
||||||
new_1 = GM_TT01.GM
|
|
||||||
new_2 = GM_TT05.GM
|
|
||||||
new_3 = GM_TT15.GM
|
|
||||||
new_4 = GM_TT11.GM
|
|
||||||
new_5 = GM_TT16.GM
|
|
||||||
new_6 = GM_TT09.GM
|
|
||||||
new_7 =
|
|
||||||
new_8 =
|
|
||||||
new_9 =
|
|
||||||
ezy_0 = GM_TT18.GM
|
|
||||||
ezy_1 = GM_TT19.GM
|
|
||||||
ezy_2 = GM_TT21.GM
|
|
||||||
ezy_3 = GM_TT17.GM
|
|
||||||
ezy_4 = GM_TT20.GM
|
|
||||||
ezy_5 = GM_TT07.GM
|
|
||||||
ezy_6 =
|
|
||||||
ezy_7 =
|
|
||||||
ezy_8 =
|
|
||||||
ezy_9 =
|
|
||||||
|
|
||||||
[md5s]
|
|
||||||
GM_TT00.GM = 45cfec1b9d8c7a0ad45e755833cbf221
|
|
||||||
GM_TT01.GM = ab14ed3392d848abd2a2e90a9d75d121
|
|
||||||
GM_TT02.GM = dd4f696e4be5987ce738257b08b50171
|
|
||||||
GM_TT03.GM = a1bfde23343df9e4063419bf29c166b8
|
|
||||||
GM_TT04.GM = 4e6943aa0c455203d76c79389054747d
|
|
||||||
GM_TT05.GM = cee281cb85a2e2343552d97640545a47
|
|
||||||
GM_TT06.GM = 26d1de5efa8675f94065784e9d539e49
|
|
||||||
GM_TT07.GM = 6f2691e17558f552ec4c565e4ab7139c
|
|
||||||
GM_TT08.GM = a42bf2cb3340a822f1a69646fc7a487d
|
|
||||||
GM_TT09.GM = eb35761a58a8df3c59ed8929cce13916
|
|
||||||
GM_TT10.GM = 42fecd686720a785d20a78590c466a82
|
|
||||||
GM_TT11.GM = 50ef1ef02e49d2112786dd45e69dc3ee
|
|
||||||
GM_TT12.GM = 4ce707a0e0e72419f0681dd9bd95271b
|
|
||||||
GM_TT13.GM = e765753be29d889ec818f38009103619
|
|
||||||
GM_TT14.GM = 270e2d63bd32b95a4d007ce15a6ce45f
|
|
||||||
GM_TT15.GM = 89e116a1c0c69f1845cc903a9bfbe460
|
|
||||||
GM_TT16.GM = f824e2371b3bedfe61aad4b9c62dd6be
|
|
||||||
GM_TT17.GM = 1b23eebb0796c1ab99cd97fa7082cf7b
|
|
||||||
GM_TT18.GM = 15650de3bad645d0e88c4f5c7a2df92a
|
|
||||||
GM_TT19.GM = 7aec079e15bd09588660b85545ac4dfc
|
|
||||||
GM_TT20.GM = 1509097889dee617aa1e9a1738a5a930
|
|
||||||
GM_TT21.GM = a8d0aaad02e1a762d8d54cf81da56bab
|
|
||||||
|
|
||||||
[names]
|
|
||||||
GM_TT00.GM = Tycoon DELUXE Theme
|
|
||||||
GM_TT01.GM = Snarl Up
|
|
||||||
GM_TT02.GM = Easy Driver
|
|
||||||
GM_TT03.GM = Little Red Diesel
|
|
||||||
GM_TT04.GM = City Groove
|
|
||||||
GM_TT05.GM = Aliens Ate My Railway
|
|
||||||
GM_TT06.GM = Stoke It
|
|
||||||
GM_TT07.GM = Don't Walk!
|
|
||||||
GM_TT08.GM = Sawyer's Tune
|
|
||||||
GM_TT09.GM = Fell Apart On Me
|
|
||||||
GM_TT10.GM = Can't Get There From Here
|
|
||||||
GM_TT11.GM = Hard Drivin'
|
|
||||||
GM_TT12.GM = Road Hog
|
|
||||||
GM_TT13.GM = Hold That Train!
|
|
||||||
GM_TT14.GM = Broomer's Oil Rag
|
|
||||||
GM_TT15.GM = Goss Groove
|
|
||||||
GM_TT16.GM = Small Town
|
|
||||||
GM_TT17.GM = Cruise Control
|
|
||||||
GM_TT18.GM = Stroll On
|
|
||||||
GM_TT19.GM = Funk Central
|
|
||||||
GM_TT20.GM = Jammit
|
|
||||||
GM_TT21.GM = Movin' On
|
|
||||||
|
|
||||||
; MIDI timecodes where the playback should attemp to start and stop short.
|
|
||||||
; This is to allow fixing undesired silences in original MIDI files.
|
|
||||||
; However not all music drivers may support this.
|
|
||||||
[timingtrim]
|
|
||||||
; Theme has two beats silence at the beginning which prevents clean looping.
|
|
||||||
GM_TT00.GM = 768:53760
|
|
||||||
; Can't Get There From Here from the Windows version has a long silence at the end,
|
|
||||||
; followed by a solo repeat. This isn't in the original DOS version music and is likely
|
|
||||||
; unintentional from the people who converted the music from the DOS version.
|
|
||||||
; Actual song ends after measure 152.
|
|
||||||
GM_TT10.GM = 0:235008
|
|
||||||
|
|
||||||
[origin]
|
|
||||||
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
|
|
@@ -1,70 +0,0 @@
|
|||||||
; $Id$
|
|
||||||
;
|
|
||||||
; This represents the original sounds as on the Transport
|
|
||||||
; Tycoon Deluxe for Windows CD.
|
|
||||||
;
|
|
||||||
[metadata]
|
|
||||||
name = original_windows
|
|
||||||
shortname = TTDO
|
|
||||||
version = 0
|
|
||||||
description = Original Transport Tycoon Deluxe Windows edition sounds.
|
|
||||||
description.af_ZA = Oorspronklike Transport Tycoon Deluxe Windows uitgawe klanke.
|
|
||||||
description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الصوتية نسخة وندوز
|
|
||||||
description.be_BY = Арыґінальны набор гукавога афармленьня з гульні Transport Tycoon Deluxe для Windows.
|
|
||||||
description.bg_BG = Оригинални звуци на Transport Tycoon Deluxe за Windows.
|
|
||||||
description.ca_ES = Sons originals del Transport Tycoon Deluxe pel Windows.
|
|
||||||
description.cs_CZ = Původní sada zvuků Transport Tycoon Deluxe (verze pro Windows).
|
|
||||||
description.cy_GB = Effeithiau sain gwreiddiol fersiwn Windows o Transport Tycoon Deluxe.
|
|
||||||
description.da_DK = Originallyd fra Transport Tycoon Deluxe Windows-version.
|
|
||||||
description.de_DE = Original Transport Tycoon Deluxe Windows Basissounds.
|
|
||||||
description.el_GR = Αρχικοί ήχοι από το Transport Tycoon Deluxe έκδοση Windows.
|
|
||||||
description.en_AU = Original Transport Tycoon Deluxe Windows edition sounds.
|
|
||||||
description.en_US = Original Transport Tycoon Deluxe Windows edition sounds.
|
|
||||||
description.es_ES = Sonidos originales de Transport Tycoon Deluxe versión Windows.
|
|
||||||
description.es_MX = Sonidos originales de Transport Tycoon Deluxe para Windows.
|
|
||||||
description.et_EE = Algse Transport Tycoon Deluxe Windowsi versiooni helid.
|
|
||||||
description.eu_ES = Transport Tycoon Deluxe originaleko Windows edizioko grafikoak.
|
|
||||||
description.fi_FI = Alkuperäiset Transport Tycoon Deluxen Windows-version äänet.
|
|
||||||
description.fr_FR = Sons originaux de Transport Tycoon Deluxe (version Windows).
|
|
||||||
description.ga_IE = Fuaimeanna bunaidh Transport Tycoon Deluxe, eagrán Windows.
|
|
||||||
description.gd_GB = Fuaimean aig an deasachadh Windows tùsail aig Transport Tycoon Deluxe.
|
|
||||||
description.gl_ES = Sons da edición orixinal de Transport Tycoon Deluxe para Windows.
|
|
||||||
description.he_IL = צלילי Transport Tycoon Deluxe המקורי בגרסת Windows.
|
|
||||||
description.hr_HR = Originalni zvukovi za Transport Tycoon Deluxe Windows izdanje.
|
|
||||||
description.hu_HU = Az eredeti Transport Tycoon Deluxe Windows verziójának hangjai.
|
|
||||||
description.id_ID = Efek suara orisinil Transport Tycoon Deluxe versi Windows.
|
|
||||||
description.is_IS = Upprunalega hljóðið úr Transport Tycoon Deluxe Windows útgáfunni.
|
|
||||||
description.it_IT = Suoni originali di Transport Tycoon Deluxe, edizione Windows.
|
|
||||||
description.ja_JP = Transport Tycoon Deluxe オリジナル版 効果音 (Windows)
|
|
||||||
description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 윈도 에디션의 효과음입니다.
|
|
||||||
description.la_VA = Soni ex editione originale Transport Tycoon Deluxe Windows.
|
|
||||||
description.lb_LU = Original Transport Tycoon Deluxe Windows Editioun Sound.
|
|
||||||
description.lt_LT = Originalūs Transport Tycoon Deluxe Windows leidimo garsai.
|
|
||||||
description.nb_NO = Originale lyder fra Transport Tycoon Deluxe for Windows.
|
|
||||||
description.nl_NL = Originele geluiden van de Transport Tycoon Deluxe Windows-versie.
|
|
||||||
description.nn_NO = Originale lydar frå Transport Tycoon Deluxe for Windows.
|
|
||||||
description.pl_PL = Oryginalna edycja dźwięków dla Transport Tycoon Deluxe Windows.
|
|
||||||
description.pt_BR = Sons Originais do Transport Tycoon Deluxe, Edição Windows.
|
|
||||||
description.pt_PT = Sons originais da edição Windows de Transport Tycoon Deluxe.
|
|
||||||
description.ro_RO = Setul de sunete original al Transport Tycoon Deluxe pentru Windows.
|
|
||||||
description.ru_RU = Оригинальный набор звукового оформления из игры Transport Tycoon Deluxe для Windows.
|
|
||||||
description.sk_SK = Pôvodné zvuky Transport Tycoon Deluxe (Windows).
|
|
||||||
description.sl_SI = Originalni zvoki Transport Tycoon Deluxe različice oken(windows).
|
|
||||||
description.sr_RS = Originalni skup zvukova Transport Tycoon Deluxe Windows izdanja.
|
|
||||||
description.sv_SE = Originalljuden från Transport Tycoon Deluxe, Windows-utgåvan.
|
|
||||||
description.ta_IN = அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் விண்டோஸ் பதிப்பு ஒலிகள்.
|
|
||||||
description.th_TH = เสียงต้นตำหรับของ Transport Tycoon Deluxe Windows edition
|
|
||||||
description.tr_TR = Özgün Transport Tycoon Deluxe Windows sürümü sesleri.
|
|
||||||
description.uk_UA = Оригінальний набір звуків з Transport Tycoon Deluxe Windows edition.
|
|
||||||
description.vi_VN = Âm thanh gốc từ phiên bản Transport Tycoon Deluxe trên Windows
|
|
||||||
description.zh_CN = Transport Tycoon Deluxe Windows (运输大亨Windows豪华版)的原版音效包.
|
|
||||||
description.zh_TW = 原版 Transport Tycoon Deluxe Windows 版的音效。
|
|
||||||
|
|
||||||
[files]
|
|
||||||
samples = SAMPLE.CAT
|
|
||||||
|
|
||||||
[md5s]
|
|
||||||
SAMPLE.CAT = 9212e81e72badd4bbe1eaeae66458e10
|
|
||||||
|
|
||||||
[origin]
|
|
||||||
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
|
|
8
bin/game/compat_1.10.nut
Normal file
8
bin/game/compat_1.10.nut
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of OpenTTD.
|
||||||
|
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||||
|
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
@@ -23,3 +23,10 @@ GSNews.Create <- function(type, text, company)
|
|||||||
{
|
{
|
||||||
return GSNews._Create(type, text, company, GSNews.NR_NONE, 0);
|
return GSNews._Create(type, text, company, GSNews.NR_NONE, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* 1.9 adds a vehicle type parameter. */
|
||||||
|
GSBridge._GetName <- GSBridge.GetName;
|
||||||
|
GSBridge.GetName <- function(bridge_id)
|
||||||
|
{
|
||||||
|
return GSBridge._GetName(bridge_id, GSVehicle.VT_RAIL);
|
||||||
|
}
|
||||||
|
@@ -23,3 +23,10 @@ GSNews.Create <- function(type, text, company)
|
|||||||
{
|
{
|
||||||
return GSNews._Create(type, text, company, GSNews.NR_NONE, 0);
|
return GSNews._Create(type, text, company, GSNews.NR_NONE, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* 1.9 adds a vehicle type parameter. */
|
||||||
|
GSBridge._GetName <- GSBridge.GetName;
|
||||||
|
GSBridge.GetName <- function(bridge_id)
|
||||||
|
{
|
||||||
|
return GSBridge._GetName(bridge_id, GSVehicle.VT_RAIL);
|
||||||
|
}
|
||||||
|
@@ -15,3 +15,10 @@ GSNews.Create <- function(type, text, company)
|
|||||||
{
|
{
|
||||||
return GSNews._Create(type, text, company, GSNews.NR_NONE, 0);
|
return GSNews._Create(type, text, company, GSNews.NR_NONE, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* 1.9 adds a vehicle type parameter. */
|
||||||
|
GSBridge._GetName <- GSBridge.GetName;
|
||||||
|
GSBridge.GetName <- function(bridge_id)
|
||||||
|
{
|
||||||
|
return GSBridge._GetName(bridge_id, GSVehicle.VT_RAIL);
|
||||||
|
}
|
||||||
|
@@ -8,3 +8,10 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
GSLog.Info("1.5 API compatibility in effect.");
|
GSLog.Info("1.5 API compatibility in effect.");
|
||||||
|
|
||||||
|
/* 1.9 adds a vehicle type parameter. */
|
||||||
|
GSBridge._GetName <- GSBridge.GetName;
|
||||||
|
GSBridge.GetName <- function(bridge_id)
|
||||||
|
{
|
||||||
|
return GSBridge._GetName(bridge_id, GSVehicle.VT_RAIL);
|
||||||
|
}
|
||||||
|
@@ -8,3 +8,10 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
GSLog.Info("1.6 API compatibility in effect.");
|
GSLog.Info("1.6 API compatibility in effect.");
|
||||||
|
|
||||||
|
/* 1.9 adds a vehicle type parameter. */
|
||||||
|
GSBridge._GetName <- GSBridge.GetName;
|
||||||
|
GSBridge.GetName <- function(bridge_id)
|
||||||
|
{
|
||||||
|
return GSBridge._GetName(bridge_id, GSVehicle.VT_RAIL);
|
||||||
|
}
|
||||||
|
@@ -8,3 +8,10 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
GSLog.Info("1.7 API compatibility in effect.");
|
GSLog.Info("1.7 API compatibility in effect.");
|
||||||
|
|
||||||
|
/* 1.9 adds a vehicle type parameter. */
|
||||||
|
GSBridge._GetName <- GSBridge.GetName;
|
||||||
|
GSBridge.GetName <- function(bridge_id)
|
||||||
|
{
|
||||||
|
return GSBridge._GetName(bridge_id, GSVehicle.VT_RAIL);
|
||||||
|
}
|
||||||
|
@@ -8,3 +8,10 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
GSLog.Info("1.8 API compatibility in effect.");
|
GSLog.Info("1.8 API compatibility in effect.");
|
||||||
|
|
||||||
|
/* 1.9 adds a vehicle type parameter. */
|
||||||
|
GSBridge._GetName <- GSBridge.GetName;
|
||||||
|
GSBridge.GetName <- function(bridge_id)
|
||||||
|
{
|
||||||
|
return GSBridge._GetName(bridge_id, GSVehicle.VT_RAIL);
|
||||||
|
}
|
||||||
|
@@ -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/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
GSLog.Info("1.9 API compatibility in effect.");
|
||||||
|
135
changelog.txt
135
changelog.txt
@@ -1,3 +1,138 @@
|
|||||||
|
1.9.0 (2019-04-01)
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
- Fix #7411: Use industry production callback (if used) on initial industry cargo generation (#7412)
|
||||||
|
|
||||||
|
|
||||||
|
1.9.0-RC2 (2019-03-24)
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
- Fix #7400: WaterClass for tree tiles was not converted for old saves preventing industry creation (#7405)
|
||||||
|
- Fix: Filtered file list did not scroll properly (#7402)
|
||||||
|
- Fix #7391: Don't invalidate go to depot orders of non-aircraft when invalidating hangar orders that happen to share IDs (#7392)
|
||||||
|
- Fix #7386: Measurement tooltip for tunnels, aqueducts & docks did not display or flickered (#7389)
|
||||||
|
- Fix: Wrong company performance rating when money exceeds INT_MAX (#7382)
|
||||||
|
- Fix: Permit loading of industry production callback with invalid cargo type (#7364)
|
||||||
|
- Fix: Spelling for a few real town names (#7338)
|
||||||
|
- Fix: Runway too short for large aircraft message should not depend on plane crashes setting (#7325)
|
||||||
|
- Fix #7334: Ship lost after crossing bridge due to path cache not being consumed while on final bridge end (#7335)
|
||||||
|
|
||||||
|
|
||||||
|
1.9.0-RC1 (2019-03-03)
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
- Add: Various AI/GS functions for vehicle groups (#7225)
|
||||||
|
- Change: Synchronise introduction date and reliability randomness across vehicles with the same base introduction date (#7147)
|
||||||
|
- Change: Allow towns to build bridges over rails and one-way roads (#7291)
|
||||||
|
- Fix: Detection of coast tiles with trees on them (#7309)
|
||||||
|
- Fix: Emergency netsave saved the title game instead of the broken game in question (#7298)
|
||||||
|
- Fix: Company livery window showed incorrect groups when opened in multiplayer (#7288)
|
||||||
|
- Fix: Unable to select last group in open livery window (#7283)
|
||||||
|
- Fix: Goto hangar orders were not invalidated when rebuilding airports (#7100)
|
||||||
|
|
||||||
|
|
||||||
|
1.9.0-beta3 (2019-02-24)
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
- Feature: Option to adjust font size separately from GUI size (#7003)
|
||||||
|
- Feature: Increase maximum number of orders from 64000 to ~16.7m (#7220)
|
||||||
|
- Add: Show performance of AI and GS in framerate window
|
||||||
|
- Add: News menu entry and shortcut for deleting all messages (#7240)
|
||||||
|
- Change: [OSX] Improved scrolling behaviour when using touchpads
|
||||||
|
- Change: Add scrollbar to cargo legend in cargo payment rates window
|
||||||
|
- Change: Owner of vehicle with exclusive transport rights may now load cargo from neutral stations (#7256)
|
||||||
|
- Change: Improved UI behaviour when dragging sound volume sliders with the mouse (#7227)
|
||||||
|
- Change: Use selected vehicle group as parent when creating a new group (#7224)
|
||||||
|
- Change: Use SlErrorCorrupt() on pool index error when loading a savegame, instead of terminating (#7219)
|
||||||
|
- Change: Skip reliability decay if servicing is disabled
|
||||||
|
- Fix: Remove desert around lakes upon generation
|
||||||
|
- Fix: Re-sorting file list did not update filtered rows
|
||||||
|
- Fix #7159: Waiting time at red one-way signals was too short
|
||||||
|
- Fix #7189: Fluidsynth volume gain too high
|
||||||
|
- Fix #7004: Cargo flow legend was not properly refreshed after zooming (#7265)
|
||||||
|
- Fix: Possibility to modify wrong AI/GS settings when switching AI/GS scripts around (#7090, #7091)
|
||||||
|
- Fix: Use more descriptive "spectator" strings for story book and goal dropdown menus
|
||||||
|
- Fix #6599: Disable build and rename button in build vehicle window when no vehicle is selected
|
||||||
|
- Fix: Do not mangle tagged revision strings for network revision strings
|
||||||
|
- Fix #7151: AI start date deviation was still applied when not set to a random AI (#7223)
|
||||||
|
- Fix #7197: Invalidate depot buttons when necessary (#7212)
|
||||||
|
- Doc: [AI] UnshareOrders empties the orders list of the vehicle
|
||||||
|
|
||||||
|
|
||||||
|
1.9.0-beta2 (2019-02-09)
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
- Fix: Non-Windows builds did not get correct git hash
|
||||||
|
|
||||||
|
|
||||||
|
1.9.0-beta1 (2019-02-09)
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
Note: OpenTTD was migrated to GitHub for 1.9, so SVN revision and FlySpray numbers have been replaced with Pull Requests and Issue numbers
|
||||||
|
- Feature: Group liveries, and livery window usability enhancements (#7108)
|
||||||
|
- Feature: Overhaul of music system, support MPSMIDI music files (TTD DOS/TTO) (#6839)
|
||||||
|
- Feature: [Win32] Rewritten DMusic and WinMM music drivers
|
||||||
|
- Feature: [Win32] New XAudio2 sound driver
|
||||||
|
- Feature: [Linux] New Fluidsynth music driver
|
||||||
|
- Feature: Framerate display window (#6822)
|
||||||
|
- Feature: [NewGRF] Ability for industries & houses to produce and/or accept up to 16 different cargoes
|
||||||
|
- Feature #6610: Allow towns to build houses on road turns (#6758)
|
||||||
|
- Feature: Replace independent map scrolling GUI settings with single option, and add choice to not lock cursor position when scrolling (#6756)
|
||||||
|
- Feature #6459: API for querying network clients from GS (#6736)
|
||||||
|
- Feature: New Russian Ruble & Mexican Peso as currencies (#6678, #7035)
|
||||||
|
- Feature #4186: Append '(City)' after city names in the town directory
|
||||||
|
- Feature #986: Automatic save when losing connection to a network game
|
||||||
|
- Add: [NewGRF] Flag to hide rail types from construction (#7118)
|
||||||
|
- Add: [NewGRF] Airport animation trigger for plane landing (#6334)
|
||||||
|
- Add #4115: Default starting company colour setting (#6998)
|
||||||
|
- Add: Mixer feature for streaming sampled music
|
||||||
|
- Add #6460: [AI] start_date parameter for Random AIs on new game
|
||||||
|
- Add: BACKSPACE can be mapped as a hotkey
|
||||||
|
- Add: 32bpp SSE2 blitter palette animator (#6795)
|
||||||
|
- Change: Make ships turn slowly when changing direction and stop when going up or down a lock (#7065, #7150)
|
||||||
|
- Change: Improve ship pathfinder performance
|
||||||
|
- Change: Decouple GUI timing from game ticks (#6780)
|
||||||
|
- Change: Desert tiles are now half-desert if a neighboured tile is non-desert or sea/coast (#4754)
|
||||||
|
- Change: Gradually slow down aircraft speed on breakdown (#6932)
|
||||||
|
- Change: [NewGRF] Increase rail type & cargo type limits to 64
|
||||||
|
- Change: [NewGRF] Increase size of persistent storage to 256
|
||||||
|
- Change: [NewGRF] Use last OpenTTD SVN revision in NewGRF version number (#6843)
|
||||||
|
- Change: Clone tool in depot window now behaves like clone button in vehicle window (#6754)
|
||||||
|
- Change #6397: Keep town growth rate in sync with house count
|
||||||
|
- Change: Scale default FreeType font size selection by UI zoom level
|
||||||
|
- Change: [OSX] Reversed pinch to zoom behaviour
|
||||||
|
- Change: Switch town growth rate and counter to actual game ticks (#6763)
|
||||||
|
- Change: Non-tag revisions are now named '<commitdate>-<branch>-g<shorthash><modified>'
|
||||||
|
- Change: Rewrite several bits of documentation in markdown
|
||||||
|
- Fix: Reinitialise graph GUI on game restart (#7191)
|
||||||
|
- Fix: Potential crash during shutdown after unpacking downloaded content (#7185)
|
||||||
|
- Fix #6584: Text layout in engine preview dialogue
|
||||||
|
- Fix #6636: Airplanes could be sent to helicopter station depots
|
||||||
|
- Fix: Deadlock when launched with -n switch (#7103)
|
||||||
|
- Fix: Various corrections to town names in non-English languages (#7038, 7141)
|
||||||
|
- Fix: Only consider airport tiles when placing (for non-rectangular airports) (#6613)
|
||||||
|
- Fix: Spelling fixes on some Latin American town names
|
||||||
|
- Fix #7001: Pathfinders should see standard road stations as tiles where to reverse
|
||||||
|
- Fix #6676: Prevent helicopters from stopping in midair during some kinds of landing
|
||||||
|
- Fix: Remove need to use Ctrl+Click when building stations next to competitors (#6906)
|
||||||
|
- Fix: [NewGRF] Make VA2 operator 11 (ror) behave well-defined when rotating by 0 bits
|
||||||
|
- Fix #4109: Add more water checks to the Oil Rig layout
|
||||||
|
- Fix #6938: Incorrect value for "Cost to Clear" was displayed for Company Headquarters in tile inspector (#6939)
|
||||||
|
- Fix #6920: Make 9.8m/s^2 a common constant for TE-calculation
|
||||||
|
- Fix #6892: [Script] CONFIG_RANDOM did not use the full parameter range (#6902)
|
||||||
|
- Fix #6622: News message when GS constructs a town had empty company name
|
||||||
|
- Fix: [NewGRF] Action7 variable 0x85 had no bounds checks
|
||||||
|
- Fix #6875: Depot building cost did not include foundation build cost (#6883)
|
||||||
|
- Fix: Some pixels in ship autoreplace icon (sprite 106) were transparent
|
||||||
|
- Fix: Poor contrast in cargo dest flow legend window cargo labels
|
||||||
|
- Fix #6553: Make viewport button text unambiguous
|
||||||
|
- Fix: [OSX] Setting mouse-wheel to scroll the map does not disable pinch to zoom
|
||||||
|
- Fix #6969: Account for BOM when reading script files
|
||||||
|
- Fix #6898: Ability to use seeds above INT_MAX (#6936)
|
||||||
|
- Fix #6659: Bus stations could be demolished when not in demolish mode (#6815)
|
||||||
|
- Fix: One-way roads could be over-built by road stops regardless of road owner
|
||||||
|
- Fix: Use name of cargo instead of Passengers/Mail in town statistics (#6801)
|
||||||
|
- Fix: Prevent ships moving into docks after finishing (un)loading (#6791)
|
||||||
|
- Fix: Tractive effort was slightly too high as per NewGRF spec (#6785)
|
||||||
|
- Fix #6465: Add {NORMAL_FONT} and {MONO_FONT} control codes to GS strings (#6726)
|
||||||
|
- Fix: Four group action icons were misplaced and cropped
|
||||||
|
- Remove: PSP, WinCE support
|
||||||
|
|
||||||
|
|
||||||
1.8.0 (2018-04-01)
|
1.8.0 (2018-04-01)
|
||||||
------------------------------------------------------------------------
|
------------------------------------------------------------------------
|
||||||
(None)
|
(None)
|
||||||
|
203
config.lib
203
config.lib
@@ -52,7 +52,6 @@ set_default() {
|
|||||||
enable_profiling="0"
|
enable_profiling="0"
|
||||||
enable_lto="0"
|
enable_lto="0"
|
||||||
enable_dedicated="0"
|
enable_dedicated="0"
|
||||||
enable_network="1"
|
|
||||||
enable_static="1"
|
enable_static="1"
|
||||||
enable_translator="0"
|
enable_translator="0"
|
||||||
enable_unicode="1"
|
enable_unicode="1"
|
||||||
@@ -82,7 +81,7 @@ set_default() {
|
|||||||
with_iconv="1"
|
with_iconv="1"
|
||||||
with_midi=""
|
with_midi=""
|
||||||
with_midi_arg=""
|
with_midi_arg=""
|
||||||
with_libtimidity="1"
|
with_fluidsynth="1"
|
||||||
with_freetype="1"
|
with_freetype="1"
|
||||||
with_fontconfig="1"
|
with_fontconfig="1"
|
||||||
with_icu_layout="1"
|
with_icu_layout="1"
|
||||||
@@ -133,7 +132,6 @@ set_default() {
|
|||||||
enable_profiling
|
enable_profiling
|
||||||
enable_lto
|
enable_lto
|
||||||
enable_dedicated
|
enable_dedicated
|
||||||
enable_network
|
|
||||||
enable_static
|
enable_static
|
||||||
enable_translator
|
enable_translator
|
||||||
enable_unicode
|
enable_unicode
|
||||||
@@ -162,7 +160,7 @@ set_default() {
|
|||||||
with_iconv
|
with_iconv
|
||||||
with_midi
|
with_midi
|
||||||
with_midi_arg
|
with_midi_arg
|
||||||
with_libtimidity
|
with_fluidsynth
|
||||||
with_freetype
|
with_freetype
|
||||||
with_fontconfig
|
with_fontconfig
|
||||||
with_icu_layout
|
with_icu_layout
|
||||||
@@ -295,9 +293,6 @@ detect_params() {
|
|||||||
--enable-ipo=*) enable_lto="$optarg";;
|
--enable-ipo=*) enable_lto="$optarg";;
|
||||||
--enable-dedicated) enable_dedicated="1";;
|
--enable-dedicated) enable_dedicated="1";;
|
||||||
--enable-dedicated=*) enable_dedicated="$optarg";;
|
--enable-dedicated=*) enable_dedicated="$optarg";;
|
||||||
--enable-network) enable_network="2";;
|
|
||||||
--enable-network=*) enable_network="$optarg";;
|
|
||||||
--disable-network) enable_network="0";;
|
|
||||||
--disable-static) enable_static="0";;
|
--disable-static) enable_static="0";;
|
||||||
--enable-static) enable_static="2";;
|
--enable-static) enable_static="2";;
|
||||||
--enable-static=*) enable_static="$optarg";;
|
--enable-static=*) enable_static="$optarg";;
|
||||||
@@ -374,9 +369,9 @@ detect_params() {
|
|||||||
--without-libpng) with_png="0";;
|
--without-libpng) with_png="0";;
|
||||||
--with-libpng=*) with_png="$optarg";;
|
--with-libpng=*) with_png="$optarg";;
|
||||||
|
|
||||||
--with-libtimidity) with_libtimidity="2";;
|
--with-fluidsynth) with_fluidsynth="2";;
|
||||||
--without-libtimidity) with_libtimidity="0";;
|
--without-fluidsynth) with_fluidsynth="0";;
|
||||||
--with-libtimidity=*) with_libtimidity="$optarg";;
|
--with-fluidsynth=*) with_fluidsynth="$optarg";;
|
||||||
|
|
||||||
--with-freetype) with_freetype="2";;
|
--with-freetype) with_freetype="2";;
|
||||||
--without-freetype) with_freetype="0";;
|
--without-freetype) with_freetype="0";;
|
||||||
@@ -577,10 +572,10 @@ check_params() {
|
|||||||
|
|
||||||
# Check if all params have valid values
|
# Check if all params have valid values
|
||||||
|
|
||||||
# OS only allows DETECT, UNIX, OSX, FREEBSD, DRAGONFLY, OPENBSD, NETBSD, MORPHOS, BEOS, HAIKU, SUNOS, CYGWIN, MINGW, OS2, and DOS
|
# OS only allows DETECT, UNIX, OSX, FREEBSD, DRAGONFLY, OPENBSD, NETBSD, HAIKU, SUNOS, CYGWIN, MINGW, and OS2
|
||||||
if [ -z "`echo $os | egrep '^(DETECT|UNIX|OSX|FREEBSD|DRAGONFLY|OPENBSD|NETBSD|HPUX|MORPHOS|BEOS|HAIKU|SUNOS|CYGWIN|MINGW|OS2|DOS)$'`" ]; then
|
if [ -z "`echo $os | egrep '^(DETECT|UNIX|OSX|FREEBSD|DRAGONFLY|OPENBSD|NETBSD|HPUX|HAIKU|SUNOS|CYGWIN|MINGW|OS2)$'`" ]; 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|DRAGONFLY|OPENBSD|NETBSD|HPUX|MORPHOS|BEOS|HAIKU|SUNOS|CYGWIN|MINGW|OS2|DOS]"
|
log 1 " Available options are: --os=[DETECT|UNIX|OSX|FREEBSD|DRAGONFLY|OPENBSD|NETBSD|HPUX|HAIKU|SUNOS|CYGWIN|MINGW|OS2]"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
# cpu_type can be either 32 or 64
|
# cpu_type can be either 32 or 64
|
||||||
@@ -647,7 +642,7 @@ check_params() {
|
|||||||
detect_sse_capable_architecture
|
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" ]; then
|
||||||
enable_static="2"
|
enable_static="2"
|
||||||
else
|
else
|
||||||
enable_static="0"
|
enable_static="0"
|
||||||
@@ -657,8 +652,8 @@ check_params() {
|
|||||||
if [ "$enable_static" != "0" ]; then
|
if [ "$enable_static" != "0" ]; then
|
||||||
log 1 "checking static... yes"
|
log 1 "checking static... yes"
|
||||||
|
|
||||||
if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ] && [ "$os" != "OSX" ] && [ "$os" != "MORPHOS" ] && [ "$os" != "DOS" ]; then
|
if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ] && [ "$os" != "OSX" ]; then
|
||||||
log 1 "WARNING: static is only known to work on Windows, DOS, MacOSX and MorphOS"
|
log 1 "WARNING: static is only known to work on Windows, and MacOSX"
|
||||||
log 1 "WARNING: use static at your own risk on this platform"
|
log 1 "WARNING: use static at your own risk on this platform"
|
||||||
|
|
||||||
sleep 5
|
sleep 5
|
||||||
@@ -668,7 +663,7 @@ check_params() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$enable_unicode" = "1" ]; then
|
if [ "$enable_unicode" = "1" ]; then
|
||||||
if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "DOS" ]; then
|
if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ]; then
|
||||||
enable_unicode="2"
|
enable_unicode="2"
|
||||||
else
|
else
|
||||||
enable_unicode="0"
|
enable_unicode="0"
|
||||||
@@ -773,11 +768,6 @@ check_params() {
|
|||||||
if [ "$enable_dedicated" != "0" ]; then
|
if [ "$enable_dedicated" != "0" ]; then
|
||||||
log 1 "checking GDI video driver... dedicated server, skipping"
|
log 1 "checking GDI video driver... dedicated server, skipping"
|
||||||
log 1 "checking dedicated... found"
|
log 1 "checking dedicated... found"
|
||||||
|
|
||||||
if [ "$enable_network" = "0" ]; then
|
|
||||||
log 1 "configure: error: building a dedicated server without network support is pointless"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ]; then
|
if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ]; then
|
||||||
log 1 "checking GDI video driver... found"
|
log 1 "checking GDI video driver... found"
|
||||||
@@ -808,15 +798,6 @@ check_params() {
|
|||||||
log 1 "checking console application... enabled"
|
log 1 "checking console application... enabled"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$enable_network" = "1" ] && [ "$os" = "DOS" ]; then
|
|
||||||
log 1 "checking network... DOS, skipping"
|
|
||||||
enable_network=0
|
|
||||||
elif [ "$enable_network" != "0" ]; then
|
|
||||||
log 1 "checking network... found"
|
|
||||||
else
|
|
||||||
log 1 "checking network... disabled"
|
|
||||||
fi
|
|
||||||
|
|
||||||
log 1 "checking squirrel... found"
|
log 1 "checking squirrel... found"
|
||||||
SCRIPT_SRC_DIR="$ROOT_DIR/src/3rdparty/squirrel/include"
|
SCRIPT_SRC_DIR="$ROOT_DIR/src/3rdparty/squirrel/include"
|
||||||
|
|
||||||
@@ -838,7 +819,7 @@ check_params() {
|
|||||||
pre_detect_with_zlib=$with_zlib
|
pre_detect_with_zlib=$with_zlib
|
||||||
detect_zlib
|
detect_zlib
|
||||||
|
|
||||||
if [ "$with_zlib" = "0" ] || [ -z "$zlib-config" ]; then
|
if [ "$with_zlib" = "0" ] || [ -z "$zlib_config" ]; then
|
||||||
log 1 "WARNING: zlib was not detected or disabled"
|
log 1 "WARNING: zlib was not detected or disabled"
|
||||||
log 1 "WARNING: OpenTTD doesn't require zlib, but it does mean that many features"
|
log 1 "WARNING: OpenTTD doesn't require zlib, but it does mean that many features"
|
||||||
log 1 "WARNING: (like loading most old savegames/scenarios, loading heightmaps,"
|
log 1 "WARNING: (like loading most old savegames/scenarios, loading heightmaps,"
|
||||||
@@ -913,7 +894,7 @@ check_params() {
|
|||||||
detect_fontconfig
|
detect_fontconfig
|
||||||
detect_icu_layout
|
detect_icu_layout
|
||||||
detect_icu_sort
|
detect_icu_sort
|
||||||
detect_libtimidity
|
detect_fluidsynth
|
||||||
|
|
||||||
if [ "$with_direct_music" != "0" ]; then
|
if [ "$with_direct_music" != "0" ]; then
|
||||||
if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ]; then
|
if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ]; then
|
||||||
@@ -956,9 +937,7 @@ check_params() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$enable_debug" = "0" ] && [ "$enable_profiling" = "0" ] && [ "$enable_strip" != "0" ]; then
|
if [ "$enable_debug" = "0" ] && [ "$enable_profiling" = "0" ] && [ "$enable_strip" != "0" ]; then
|
||||||
if [ "$os" = "MORPHOS" ]; then
|
if [ "$os" = "OSX" ]; then
|
||||||
strip_arg="--strip-all --strip-unneeded --remove-section .comment"
|
|
||||||
elif [ "$os" = "OSX" ]; then
|
|
||||||
strip_arg=""
|
strip_arg=""
|
||||||
elif [ "$os" = "OS2" ]; then
|
elif [ "$os" = "OS2" ]; then
|
||||||
strip_arg=""
|
strip_arg=""
|
||||||
@@ -1049,10 +1028,6 @@ check_params() {
|
|||||||
grfcodec=""
|
grfcodec=""
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$os" = "DOS" ]; then
|
|
||||||
with_threads="0"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$os" != "OSX" ] && [ "$with_application_bundle" != "0" ]; then
|
if [ "$os" != "OSX" ] && [ "$with_application_bundle" != "0" ]; then
|
||||||
if [ "$with_application_bundle" = "1" ]; then
|
if [ "$with_application_bundle" = "1" ]; then
|
||||||
with_application_bundle="0"
|
with_application_bundle="0"
|
||||||
@@ -1155,7 +1130,7 @@ check_params() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$personal_dir" = "1" ]; then
|
if [ "$personal_dir" = "1" ]; then
|
||||||
if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "DOS" ] || [ "$os" = "HAIKU" ]; then
|
if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "HAIKU" ]; then
|
||||||
personal_dir="OpenTTD"
|
personal_dir="OpenTTD"
|
||||||
elif [ "$os" = "OSX" ]; then
|
elif [ "$os" = "OSX" ]; then
|
||||||
personal_dir="Documents/OpenTTD"
|
personal_dir="Documents/OpenTTD"
|
||||||
@@ -1260,6 +1235,8 @@ make_compiler_cflags() {
|
|||||||
eval eval "ldflags=\\\$$4"
|
eval eval "ldflags=\\\$$4"
|
||||||
eval eval "features=\\\$$5"
|
eval eval "features=\\\$$5"
|
||||||
|
|
||||||
|
cppstd="-std=c++11"
|
||||||
|
|
||||||
if [ `echo "$version_line" | cut -d' ' -f1` = "icc" ]; then
|
if [ `echo "$version_line" | cut -d' ' -f1` = "icc" ]; then
|
||||||
# Enable some things only for certain ICC versions
|
# Enable some things only for certain ICC versions
|
||||||
cc_version=`$1 -dumpversion | cut -c 1-4 | sed s@\\\.@@g`
|
cc_version=`$1 -dumpversion | cut -c 1-4 | sed s@\\\.@@g`
|
||||||
@@ -1335,8 +1312,6 @@ make_compiler_cflags() {
|
|||||||
if [ $cc_version -ge 110 ]; then
|
if [ $cc_version -ge 110 ]; then
|
||||||
# remark #2259: non-pointer conversion from ... to ... may lose significant bits
|
# remark #2259: non-pointer conversion from ... to ... may lose significant bits
|
||||||
flags="$flags -wd2259"
|
flags="$flags -wd2259"
|
||||||
# Use c++0x mode so static_assert() is available
|
|
||||||
cxxflags="$cxxflags -std=c++11"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ $cc_version -lt 140 ]; then
|
if [ $cc_version -lt 140 ]; then
|
||||||
@@ -1354,7 +1329,8 @@ make_compiler_cflags() {
|
|||||||
fi
|
fi
|
||||||
elif echo "$version_line" | grep -q "clang"; then
|
elif echo "$version_line" | grep -q "clang"; then
|
||||||
# Enable some things only for certain clang versions
|
# Enable some things only for certain clang versions
|
||||||
cc_version="`$1 -v 2>&1 | head -n 1 | sed s@[^0-9]@@g | cut -c 1-2`"
|
# Need to try really hard to get the version line, because OSX clang likes to hide its true version
|
||||||
|
cc_version="`$1 -v 2>&1 | grep -i version | head -n 1 | sed s@[^0-9.]@@g | $awk -F . '{printf "%d%02d\n", $1, $2}'`"
|
||||||
|
|
||||||
# aliasing rules are not held in openttd code
|
# aliasing rules are not held in openttd code
|
||||||
flags="$flags -fno-strict-aliasing"
|
flags="$flags -fno-strict-aliasing"
|
||||||
@@ -1376,14 +1352,17 @@ make_compiler_cflags() {
|
|||||||
# it happens when using the FOR_ALL_WINDOWS_FROM_BACK_FROM macro
|
# it happens when using the FOR_ALL_WINDOWS_FROM_BACK_FROM macro
|
||||||
flags="$flags -Wno-self-assign"
|
flags="$flags -Wno-self-assign"
|
||||||
|
|
||||||
if [ "$cc_version" -lt "30" ]; then
|
# warning: <something> is a C++11 extension
|
||||||
|
flags="$flags -Wno-c++11-extensions"
|
||||||
|
|
||||||
|
if [ "$cc_version" -lt "300" ]; then
|
||||||
# warning: equality comparison with extraneous parentheses
|
# warning: equality comparison with extraneous parentheses
|
||||||
flags="$flags -Wno-parentheses"
|
flags="$flags -Wno-parentheses"
|
||||||
# warning: operands of ? are integers of different signs: 'unsigned int' and 'int'
|
# warning: operands of ? are integers of different signs: 'unsigned int' and 'int'
|
||||||
flags="$flags -Wno-sign-compare"
|
flags="$flags -Wno-sign-compare"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$cc_version" -ge "30" ]; then
|
if [ "$cc_version" -ge "300" ]; then
|
||||||
# warning: equality comparison with extraneous parentheses
|
# warning: equality comparison with extraneous parentheses
|
||||||
# this warning could be useful, but it warns about code in squirrel
|
# this warning could be useful, but it warns about code in squirrel
|
||||||
flags="$flags -Wno-parentheses-equality"
|
flags="$flags -Wno-parentheses-equality"
|
||||||
@@ -1402,11 +1381,8 @@ make_compiler_cflags() {
|
|||||||
flags="$flags -Wno-unused-variable"
|
flags="$flags -Wno-unused-variable"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$cc_version" -ge "33" ]; then
|
if [ "$cc_version" -lt "303" ]; then
|
||||||
# clang completed C++11 support in version 3.3
|
log 1 "configure: error: clang version is too old: `$1 -v 2>&1 | grep -i version | head -n 1`, minumum: 3.3"
|
||||||
flags="$flags -std=c++11"
|
|
||||||
else
|
|
||||||
log 1 "configure: error: clang version is too old: `$1 -v 2>&1 | head -n 1`, minumum: 3.3"
|
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -1429,6 +1405,7 @@ make_compiler_cflags() {
|
|||||||
flags="$flags -Wwrite-strings -Wpointer-arith"
|
flags="$flags -Wwrite-strings -Wpointer-arith"
|
||||||
flags="$flags -W -Wno-unused-parameter -Wredundant-decls"
|
flags="$flags -W -Wno-unused-parameter -Wredundant-decls"
|
||||||
flags="$flags -Wformat=2 -Wformat-security"
|
flags="$flags -Wformat=2 -Wformat-security"
|
||||||
|
cppstd="-std=gnu++11"
|
||||||
|
|
||||||
if [ $enable_assert -eq 0 ]; then
|
if [ $enable_assert -eq 0 ]; then
|
||||||
# Do not warn about unused variables when building without asserts
|
# Do not warn about unused variables when building without asserts
|
||||||
@@ -1468,12 +1445,6 @@ make_compiler_cflags() {
|
|||||||
flags="$flags -Wnon-virtual-dtor"
|
flags="$flags -Wnon-virtual-dtor"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ $cc_version -ge 403 ] && [ $cc_version -lt 600 ]; then
|
|
||||||
# Use gnu++0x mode so static_assert() is available.
|
|
||||||
# Don't use c++0x, it breaks mingw (with gcc 4.4.0).
|
|
||||||
cxxflags="$cxxflags -std=gnu++11"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ $cc_version -eq 405 ]; then
|
if [ $cc_version -eq 405 ]; then
|
||||||
# Prevent optimisation supposing enums are in a range specified by the standard
|
# Prevent optimisation supposing enums are in a range specified by the standard
|
||||||
# For details, see http://gcc.gnu.org/PR43680
|
# For details, see http://gcc.gnu.org/PR43680
|
||||||
@@ -1498,7 +1469,7 @@ make_compiler_cflags() {
|
|||||||
if [ $cc_version -ge 600 ]; then
|
if [ $cc_version -ge 600 ]; then
|
||||||
# -flifetime-dse=2 (default since GCC 6) doesn't play
|
# -flifetime-dse=2 (default since GCC 6) doesn't play
|
||||||
# well with our custom pool item allocator
|
# well with our custom pool item allocator
|
||||||
cxxflags="$cxxflags -flifetime-dse=1 -std=gnu++14"
|
cxxflags="$cxxflags -flifetime-dse=1"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$enable_lto" != "0" ]; then
|
if [ "$enable_lto" != "0" ]; then
|
||||||
@@ -1525,7 +1496,7 @@ make_compiler_cflags() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
eval "$2=\"$flags\""
|
eval "$2=\"$flags\""
|
||||||
eval "$3=\"$cxxflags\""
|
eval "$3=\"$cxxflags $cppstd\""
|
||||||
eval "$4=\"$ldflags\""
|
eval "$4=\"$ldflags\""
|
||||||
eval "$5=\"$features\""
|
eval "$5=\"$features\""
|
||||||
}
|
}
|
||||||
@@ -1577,7 +1548,7 @@ make_cflags_and_ldflags() {
|
|||||||
CXXFLAGS_ENV="$CXXFLAGS"
|
CXXFLAGS_ENV="$CXXFLAGS"
|
||||||
CXXFLAGS=""
|
CXXFLAGS=""
|
||||||
# Libs to compile. In fact this is just LDFLAGS
|
# Libs to compile. In fact this is just LDFLAGS
|
||||||
LIBS="-lstdc++"
|
LIBS=""
|
||||||
# LDFLAGS used for HOST
|
# LDFLAGS used for HOST
|
||||||
LDFLAGS_ENV="$LDFLAGS"
|
LDFLAGS_ENV="$LDFLAGS"
|
||||||
LDFLAGS=""
|
LDFLAGS=""
|
||||||
@@ -1593,10 +1564,6 @@ make_cflags_and_ldflags() {
|
|||||||
if [ "$enable_debug" = "0" ]; then
|
if [ "$enable_debug" = "0" ]; then
|
||||||
# No debug, add default stuff
|
# No debug, add default stuff
|
||||||
OBJS_SUBDIR="release"
|
OBJS_SUBDIR="release"
|
||||||
if [ "$os" = "MORPHOS" ]; then
|
|
||||||
CFLAGS="-I/gg/os-include -noixemul -fstrict-aliasing -fexpensive-optimizations -mcpu=604 -fno-inline -mstring -mmultiple $CFLAGS"
|
|
||||||
LDFLAGS="$LDFLAGS -noixemul"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$enable_profiling" = "0" ]; then
|
if [ "$enable_profiling" = "0" ]; then
|
||||||
# -fomit-frame-pointer and -pg do not go well together (gcc errors they are incompatible)
|
# -fomit-frame-pointer and -pg do not go well together (gcc errors they are incompatible)
|
||||||
@@ -1685,7 +1652,7 @@ make_cflags_and_ldflags() {
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$os" != "CYGWIN" ] && [ "$os" != "HAIKU" ] && [ "$os" != "OPENBSD" ] && [ "$os" != "MINGW" ] && [ "$os" != "MORPHOS" ] && [ "$os" != "OSX" ] && [ "$os" != "DOS" ] && [ "$os" != "OS2" ]; then
|
if [ "$os" != "CYGWIN" ] && [ "$os" != "HAIKU" ] && [ "$os" != "OPENBSD" ] && [ "$os" != "MINGW" ] && [ "$os" != "OSX" ] && [ "$os" != "OS2" ]; then
|
||||||
LIBS="$LIBS -lpthread"
|
LIBS="$LIBS -lpthread"
|
||||||
fi
|
fi
|
||||||
if [ "$os" != "CYGWIN" ] && [ "$os" != "HAIKU" ] && [ "$os" != "MINGW" ] && [ "$os" != "MORPHOS" ] && [ "$os" != "OSX" ] && [ "$os" != "DOS" ] && [ "$os" != "WINCE" ] && [ "$os" != "PSP" ] && [ "$os" != "OS2" ]; then
|
if [ "$os" != "CYGWIN" ] && [ "$os" != "HAIKU" ] && [ "$os" != "MINGW" ] && [ "$os" != "MORPHOS" ] && [ "$os" != "OSX" ] && [ "$os" != "DOS" ] && [ "$os" != "WINCE" ] && [ "$os" != "PSP" ] && [ "$os" != "OS2" ]; then
|
||||||
@@ -1896,15 +1863,10 @@ EOL
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$os" != "CYGWIN" ] && [ "$os" != "HAIKU" ] && [ "$os" != "MINGW" ] && [ "$os" != "DOS" ]; then
|
if [ "$os" != "CYGWIN" ] && [ "$os" != "HAIKU" ] && [ "$os" != "MINGW" ]; then
|
||||||
LIBS="$LIBS -lc"
|
LIBS="$LIBS -lc"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$os" = "MORPHOS" ]; then
|
|
||||||
# -Wstrict-prototypes generates much noise because of system headers
|
|
||||||
CFLAGS="$CFLAGS -Wno-strict-prototypes"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$os" = "OPENBSD" ]; then
|
if [ "$os" = "OPENBSD" ]; then
|
||||||
LIBS="$LIBS -pthread"
|
LIBS="$LIBS -pthread"
|
||||||
fi
|
fi
|
||||||
@@ -1928,12 +1890,12 @@ EOL
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$os" = "BEOS" ] || [ "$os" = "HAIKU" ]; then
|
if [ "$os" = "HAIKU" ]; then
|
||||||
LIBS="$LIBS -lmidi -lbe"
|
LIBS="$LIBS -lmidi -lbe"
|
||||||
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" = "DRAGONFLY" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ] || [ "$os" = "OS2" ]; then
|
if [ "$os" = "HAIKU" ] || [ "$os" = "OSX" ] || [ "$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
|
||||||
@@ -1957,12 +1919,10 @@ EOL
|
|||||||
CFLAGS="$CFLAGS -DWITH_SDL"
|
CFLAGS="$CFLAGS -DWITH_SDL"
|
||||||
# SDL must not add _GNU_SOURCE as it breaks many platforms
|
# SDL must not add _GNU_SOURCE as it breaks many platforms
|
||||||
CFLAGS="$CFLAGS `$sdl_config --cflags | sed 's@-D_GNU_SOURCE[^ ]*@@'`"
|
CFLAGS="$CFLAGS `$sdl_config --cflags | sed 's@-D_GNU_SOURCE[^ ]*@@'`"
|
||||||
if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ]; then
|
if [ "$enable_static" != "0" ]; then
|
||||||
if [ "$enable_static" != "0" ]; then
|
LIBS="$LIBS `$sdl_config --static --libs`"
|
||||||
LIBS="$LIBS `$sdl_config --static-libs`"
|
else
|
||||||
else
|
LIBS="$LIBS `$sdl_config --libs`"
|
||||||
LIBS="$LIBS `$sdl_config --libs`"
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -1990,7 +1950,7 @@ EOL
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "$lzma_config" ]; then
|
if [ -n "$lzma_config" ]; then
|
||||||
CFLAGS="$CFLAGS -DWITH_LZMA"
|
CFLAGS="$CFLAGS -DWITH_LIBLZMA"
|
||||||
CFLAGS="$CFLAGS `$lzma_config --cflags | tr '\n\r' ' '`"
|
CFLAGS="$CFLAGS `$lzma_config --cflags | tr '\n\r' ' '`"
|
||||||
|
|
||||||
if [ "$enable_static" != "0" ]; then
|
if [ "$enable_static" != "0" ]; then
|
||||||
@@ -2061,7 +2021,7 @@ EOL
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "$icu_layout_config" ]; then
|
if [ -n "$icu_layout_config" ]; then
|
||||||
CFLAGS="$CFLAGS -DWITH_ICU_LAYOUT"
|
CFLAGS="$CFLAGS -DWITH_ICU_LX"
|
||||||
CFLAGS="$CFLAGS `$icu_layout_config --cflags | tr '\n\r' ' '`"
|
CFLAGS="$CFLAGS `$icu_layout_config --cflags | tr '\n\r' ' '`"
|
||||||
|
|
||||||
if [ "$static_icu" != "0" ]; then
|
if [ "$static_icu" != "0" ]; then
|
||||||
@@ -2072,7 +2032,7 @@ EOL
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "$icu_sort_config" ]; then
|
if [ -n "$icu_sort_config" ]; then
|
||||||
CFLAGS="$CFLAGS -DWITH_ICU_SORT"
|
CFLAGS="$CFLAGS -DWITH_ICU_I18N"
|
||||||
CFLAGS="$CFLAGS `$icu_sort_config --cflags | tr '\n\r' ' '`"
|
CFLAGS="$CFLAGS `$icu_sort_config --cflags | tr '\n\r' ' '`"
|
||||||
|
|
||||||
if [ "$static_icu" != "0" ]; then
|
if [ "$static_icu" != "0" ]; then
|
||||||
@@ -2101,15 +2061,9 @@ EOL
|
|||||||
CFLAGS="$CFLAGS -DWITH_XAUDIO2"
|
CFLAGS="$CFLAGS -DWITH_XAUDIO2"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "$libtimidity_config" ]; then
|
if [ -n "$fluidsynth" ]; then
|
||||||
CFLAGS="$CFLAGS -DLIBTIMIDITY"
|
LIBS="$LIBS -lfluidsynth"
|
||||||
CFLAGS="$CFLAGS `$libtimidity_config --cflags | tr '\n\r' ' '`"
|
CFLAGS="$CFLAGS -DFLUIDSYNTH"
|
||||||
|
|
||||||
if [ "$enable_static" != "0" ]; then
|
|
||||||
LIBS="$LIBS `$libtimidity_config --libs --static | tr '\n\r' ' '`"
|
|
||||||
else
|
|
||||||
LIBS="$LIBS `$libtimidity_config --libs | tr '\n\r' ' '`"
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$with_iconv" != "0" ]; then
|
if [ "$with_iconv" != "0" ]; then
|
||||||
@@ -2142,20 +2096,12 @@ EOL
|
|||||||
CFLAGS="$CFLAGS -DUNICODE -D_UNICODE"
|
CFLAGS="$CFLAGS -DUNICODE -D_UNICODE"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$enable_network" != "0" ]; then
|
if [ "$os" = "HAIKU" ]; then
|
||||||
CFLAGS="$CFLAGS -DENABLE_NETWORK"
|
LDFLAGS="$LDFLAGS -lnetwork"
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$os" = "BEOS" ]; then
|
if [ "$os" = "SUNOS" ]; then
|
||||||
LDFLAGS="$LDFLAGS -lbind -lsocket"
|
LDFLAGS="$LDFLAGS -lnsl -lsocket"
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$os" = "HAIKU" ]; then
|
|
||||||
LDFLAGS="$LDFLAGS -lnetwork"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$os" = "SUNOS" ]; then
|
|
||||||
LDFLAGS="$LDFLAGS -lnsl -lsocket"
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$enable_static" != "0" ]; then
|
if [ "$enable_static" != "0" ]; then
|
||||||
@@ -2230,7 +2176,7 @@ EOL
|
|||||||
cflags_makedep="`echo | $cxx_host $CXXFLAGS -E -x c++ -dM - | sed 's@.define @-D@g;s@ .*@ @g;s@(.*)@@g' | tr -d '\r\n'`"
|
cflags_makedep="`echo | $cxx_host $CXXFLAGS -E -x c++ -dM - | sed 's@.define @-D@g;s@ .*@ @g;s@(.*)@@g' | tr -d '\r\n'`"
|
||||||
|
|
||||||
# Please escape ALL " within ` because e.g. "" terminates the string in some sh implementations
|
# Please escape ALL " within ` because e.g. "" terminates the string in some sh implementations
|
||||||
cflags_makedep="$cflags_makedep `echo \"$CFLAGS\" \"$CXXFLAGS\" | sed 's@ /@ -@g;s@-I[ ]*[^ ]*@@g'`"
|
cflags_makedep="$cflags_makedep `echo \"$CFLAGS\" \"$CXXFLAGS\" | sed 's@ /@ -@g;s@-I[ ]*[^ ]*@@g;s@[ ]*-[^D][^ ]*@@g'`"
|
||||||
else
|
else
|
||||||
makedepend=""
|
makedepend=""
|
||||||
fi
|
fi
|
||||||
@@ -2634,7 +2580,7 @@ detect_awk() {
|
|||||||
|
|
||||||
detect_os() {
|
detect_os() {
|
||||||
if [ "$os" = "DETECT" ]; then
|
if [ "$os" = "DETECT" ]; then
|
||||||
# Detect UNIX, OSX, FREEBSD, DRAGONFLY, OPENBSD, NETBSD, HPUX, MORPHOS, BEOS, SUNOS, CYGWIN, MINGW, OS2, and DOS
|
# Detect UNIX, OSX, FREEBSD, DRAGONFLY, OPENBSD, NETBSD, HPUX, SUNOS, CYGWIN, MINGW, and OS2
|
||||||
|
|
||||||
# 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 '
|
||||||
@@ -2645,15 +2591,12 @@ detect_os() {
|
|||||||
/openbsd/ { print "OPENBSD"; exit}
|
/openbsd/ { print "OPENBSD"; exit}
|
||||||
/netbsd/ { print "NETBSD"; exit}
|
/netbsd/ { print "NETBSD"; exit}
|
||||||
/hp-ux/ { print "HPUX"; exit}
|
/hp-ux/ { print "HPUX"; exit}
|
||||||
/morphos/ { print "MORPHOS"; exit}
|
|
||||||
/beos/ { print "BEOS"; exit}
|
|
||||||
/haiku/ { print "HAIKU"; exit}
|
/haiku/ { print "HAIKU"; exit}
|
||||||
/sunos/ { print "SUNOS"; exit}
|
/sunos/ { print "SUNOS"; exit}
|
||||||
/solaris/ { print "SUNOS"; exit}
|
/solaris/ { print "SUNOS"; exit}
|
||||||
/cygwin/ { print "CYGWIN"; exit}
|
/cygwin/ { print "CYGWIN"; exit}
|
||||||
/mingw/ { print "MINGW"; exit}
|
/mingw/ { print "MINGW"; exit}
|
||||||
/os2/ { print "OS2"; exit}
|
/os2/ { print "OS2"; exit}
|
||||||
/dos/ { print "DOS"; exit}
|
|
||||||
'`
|
'`
|
||||||
|
|
||||||
if [ -z "$os" ]; then
|
if [ -z "$os" ]; then
|
||||||
@@ -2665,8 +2608,6 @@ detect_os() {
|
|||||||
/openbsd/ { print "OPENBSD"; exit}
|
/openbsd/ { print "OPENBSD"; exit}
|
||||||
/netbsd/ { print "NETBSD"; exit}
|
/netbsd/ { print "NETBSD"; exit}
|
||||||
/hp-ux/ { print "HPUX"; exit}
|
/hp-ux/ { print "HPUX"; exit}
|
||||||
/morphos/ { print "MORPHOS"; exit}
|
|
||||||
/beos/ { print "BEOS"; exit}
|
|
||||||
/haiku/ { print "HAIKU"; exit}
|
/haiku/ { print "HAIKU"; exit}
|
||||||
/sunos/ { print "SUNOS"; exit}
|
/sunos/ { print "SUNOS"; exit}
|
||||||
/cygwin/ { print "CYGWIN"; exit}
|
/cygwin/ { print "CYGWIN"; exit}
|
||||||
@@ -2679,7 +2620,7 @@ detect_os() {
|
|||||||
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, DRAGONFLY, OPENBSD, NETBSD, MORPHOS, HPUX, BEOS, HAIKU, SUNOS, CYGWIN, MINGW, OS2, and DOS"
|
log 1 "Allowed values are: UNIX, OSX, FREEBSD, DRAGONFLY, OPENBSD, NETBSD, HPUX, HAIKU, SUNOS, CYGWIN, MINGW, and OS2"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -3044,8 +2985,8 @@ detect_lzo2() {
|
|||||||
detect_library "$with_lzo2" "lzo2" "liblzo2.a" "lzo/" "lzo1x.h"
|
detect_library "$with_lzo2" "lzo2" "liblzo2.a" "lzo/" "lzo1x.h"
|
||||||
}
|
}
|
||||||
|
|
||||||
detect_libtimidity() {
|
detect_fluidsynth() {
|
||||||
detect_pkg_config "$with_libtimidity" "libtimidity" "libtimidity_config" "0.1" "1"
|
detect_library "$with_fluidsynth" "fluidsynth" "" "" "fluidsynth.h"
|
||||||
}
|
}
|
||||||
|
|
||||||
detect_pkg_config() {
|
detect_pkg_config() {
|
||||||
@@ -3148,10 +3089,22 @@ detect_fontconfig() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
detect_icu_layout() {
|
detect_icu_layout() {
|
||||||
|
if [ "$with_cocoa" != "0" ] && [ "$with_icu_layout" = "1" ]; then
|
||||||
|
log 1 "checking icu-lx... OSX, skipping"
|
||||||
|
icu_layout_config=""
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
detect_pkg_config "$with_icu_layout" "icu-lx" "icu_layout_config" "4.8" "1"
|
detect_pkg_config "$with_icu_layout" "icu-lx" "icu_layout_config" "4.8" "1"
|
||||||
}
|
}
|
||||||
|
|
||||||
detect_icu_sort() {
|
detect_icu_sort() {
|
||||||
|
if [ "$with_cocoa" != "0" ] && [ "$with_icu_sort" = "1" ]; then
|
||||||
|
log 1 "checking icu-i18n... OSX, skipping"
|
||||||
|
icu_sort_config=""
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
detect_pkg_config "$with_icu_sort" "icu-i18n" "icu_sort_config" "4.8" "1"
|
detect_pkg_config "$with_icu_sort" "icu-i18n" "icu_sort_config" "4.8" "1"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3173,10 +3126,16 @@ detect_iconv() {
|
|||||||
# Try to find iconv.h, seems to only thing to detect iconv with
|
# Try to find iconv.h, seems to only thing to detect iconv with
|
||||||
|
|
||||||
if [ "$with_iconv" = "1" ] || [ "$with_iconv" = "" ] || [ "$with_iconv" = "2" ]; then
|
if [ "$with_iconv" = "1" ] || [ "$with_iconv" = "" ] || [ "$with_iconv" = "2" ]; then
|
||||||
iconv=`ls -1 /usr/include 2>/dev/null | grep "iconv.h"`
|
# Iterate over search paths
|
||||||
if [ -z "$iconv" ]; then
|
iconv=""
|
||||||
iconv=`ls -1 /usr/local/include 2>/dev/null | grep "iconv.h"`
|
search_paths=`LC_ALL=C $cxx_host $OSX_SYSROOT $CFLAGS -E - -v </dev/null 2>&1 | \
|
||||||
fi
|
$awk '/#include <...> search starts here:/{flag=1;next}/End of search list./{flag=0}flag'`
|
||||||
|
for path in $search_paths; do
|
||||||
|
iconv=`ls -1 $path 2>/dev/null | grep "iconv.h"`
|
||||||
|
if [ -n "$iconv" ]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
else
|
else
|
||||||
# Make sure it exists
|
# Make sure it exists
|
||||||
iconv=`ls $with_iconv/include/iconv.h 2>/dev/null`
|
iconv=`ls $with_iconv/include/iconv.h 2>/dev/null`
|
||||||
@@ -3762,8 +3721,8 @@ showhelp() {
|
|||||||
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/DRAGONFLY/OPENBSD/"
|
echo " DETECT/UNIX/OSX/FREEBSD/DRAGONFLY/OPENBSD/"
|
||||||
echo " NETBSD/MORPHOS/HPUX/BEOS/SUNOS/CYGWIN/"
|
echo " NETBSD/HPUX/SUNOS/CYGWIN/"
|
||||||
echo " MINGW/OS2/DOS/HAIKU"
|
echo " MINGW/OS2/HAIKU"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Paths:"
|
echo "Paths:"
|
||||||
echo " --prefix-dir=dir specifies the prefix for all installed"
|
echo " --prefix-dir=dir specifies the prefix for all installed"
|
||||||
@@ -3817,7 +3776,6 @@ showhelp() {
|
|||||||
echo " --enable-console compile as a console application instead of as a GUI application."
|
echo " --enable-console compile as a console application instead of as a GUI application."
|
||||||
echo " If this setting is active, debug output will appear in the same"
|
echo " If this setting is active, debug output will appear in the same"
|
||||||
echo " console instead of opening a new window. (Win32 ONLY)"
|
echo " console instead of opening a new window. (Win32 ONLY)"
|
||||||
echo " --disable-network disable network support"
|
|
||||||
echo " --disable-assert disable asserts (continue on errors)"
|
echo " --disable-assert disable asserts (continue on errors)"
|
||||||
echo " --enable-strip enable any possible stripping"
|
echo " --enable-strip enable any possible stripping"
|
||||||
echo " --without-osx-sysroot disable the automatic adding of sysroot "
|
echo " --without-osx-sysroot disable the automatic adding of sysroot "
|
||||||
@@ -3832,8 +3790,7 @@ showhelp() {
|
|||||||
echo " --with-midi=midi define which midi-player to use"
|
echo " --with-midi=midi define which midi-player to use"
|
||||||
echo " --with-midi-arg=arg define which args to use for the"
|
echo " --with-midi-arg=arg define which args to use for the"
|
||||||
echo " midi-player"
|
echo " midi-player"
|
||||||
echo " --with-libtimidity[=\"pkg-config libtimidity\"]"
|
echo " --with-fluidsynth enables fluidsynth support"
|
||||||
echo " enables libtimidity support"
|
|
||||||
echo " --with-allegro[=\"pkg-config allegro\"]"
|
echo " --with-allegro[=\"pkg-config allegro\"]"
|
||||||
echo " enables Allegro video driver support"
|
echo " enables Allegro video driver support"
|
||||||
echo " --with-cocoa enables COCOA video driver (OSX ONLY)"
|
echo " --with-cocoa enables COCOA video driver (OSX ONLY)"
|
||||||
|
14
configure
vendored
14
configure
vendored
@@ -75,7 +75,7 @@ save_params
|
|||||||
make_cflags_and_ldflags
|
make_cflags_and_ldflags
|
||||||
|
|
||||||
EXE=""
|
EXE=""
|
||||||
if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "OS2" ] || [ "$os" = "DOS" ]; then
|
if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "OS2" ]; then
|
||||||
EXE=".exe"
|
EXE=".exe"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -116,17 +116,15 @@ AWKCOMMAND='
|
|||||||
if ($0 == "DEDICATED" && "'$enable_dedicated'" != "1") { next; }
|
if ($0 == "DEDICATED" && "'$enable_dedicated'" != "1") { next; }
|
||||||
if ($0 == "AI" && "'$enable_ai'" == "0") { next; }
|
if ($0 == "AI" && "'$enable_ai'" == "0") { next; }
|
||||||
if ($0 == "COCOA" && "'$with_cocoa'" == "0") { next; }
|
if ($0 == "COCOA" && "'$with_cocoa'" == "0") { next; }
|
||||||
if ($0 == "DOS" && "'$os'" != "DOS") { next; }
|
if ($0 == "HAIKU" && "'$os'" != "HAIKU") { next; }
|
||||||
if ($0 == "BEOS" && "'$os'" != "BEOS" &&
|
|
||||||
"'$os'" != "HAIKU") { next; }
|
|
||||||
if ($0 == "WIN32" && "'$os'" != "MINGW" &&
|
if ($0 == "WIN32" && "'$os'" != "MINGW" &&
|
||||||
"'$os'" != "CYGWIN" && "'$os'" != "MSVC") { next; }
|
"'$os'" != "CYGWIN" && "'$os'" != "MSVC") { next; }
|
||||||
if ($0 == "MORPHOS" && "'$os'" != "MORPHOS") { next; }
|
|
||||||
if ($0 == "MSVC" && "'$os'" != "MSVC") { next; }
|
if ($0 == "MSVC" && "'$os'" != "MSVC") { next; }
|
||||||
if ($0 == "DIRECTMUSIC" && "'$with_direct_music'" == "0") { next; }
|
if ($0 == "DIRECTMUSIC" && "'$with_direct_music'" == "0") { next; }
|
||||||
if ($0 == "LIBTIMIDITY" && "'$libtimidity'" == "" ) { next; }
|
if ($0 == "FLUIDSYNTH" && "'$fluidsynth'" == "" ) { next; }
|
||||||
if ($0 == "HAVE_THREAD" && "'$with_threads'" == "0") { next; }
|
if ($0 == "USE_XAUDIO2" && "'$with_xaudio2'" == "0") { next; }
|
||||||
if ($0 == "SSE" && "'$with_sse'" != "1") { next; }
|
if ($0 == "USE_THREADS" && "'$with_threads'" == "0") { next; }
|
||||||
|
if ($0 == "USE_SSE" && "'$with_sse'" != "1") { next; }
|
||||||
|
|
||||||
skip += 1;
|
skip += 1;
|
||||||
|
|
||||||
|
@@ -29,7 +29,7 @@ english.txt to work. Below are some examples of strgen usage.
|
|||||||
1.1) Examples
|
1.1) Examples
|
||||||
---- --------
|
---- --------
|
||||||
Example 1:
|
Example 1:
|
||||||
if you are in the root of your working copy (svn code), you should type
|
if you are in the root of your working copy (git repository), you should type
|
||||||
strgen/strgen -s lang lang/english.txt
|
strgen/strgen -s lang lang/english.txt
|
||||||
to compile englist.txt into english.lng. It will be placed in the lang dir
|
to compile englist.txt into english.lng. It will be placed in the lang dir
|
||||||
|
|
||||||
@@ -50,7 +50,7 @@ You can interchange english.txt to whichever language you want to generate a
|
|||||||
1.2) strgen command switches
|
1.2) strgen command switches
|
||||||
---- -----------------------
|
---- -----------------------
|
||||||
-v | --version
|
-v | --version
|
||||||
strgen will tell what svn revision it was last modified
|
strgen will tell what git revision it was last modified
|
||||||
|
|
||||||
-t | --todo
|
-t | --todo
|
||||||
strgen will add <TODO> to any untranslated/missing strings and use the english
|
strgen will add <TODO> to any untranslated/missing strings and use the english
|
||||||
|
71
docs/Readme_Windows_MSVC.md
Normal file
71
docs/Readme_Windows_MSVC.md
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
# Compiling OpenTTD using Microsoft Visual C++
|
||||||
|
|
||||||
|
Last updated: 2018-12-27
|
||||||
|
|
||||||
|
## Supported MSVC compilers
|
||||||
|
|
||||||
|
OpenTTD includes projects for Visual Studio 2015 Update 3 or more recent.
|
||||||
|
You can download the free Visual Studio Community Edition from Microsoft at
|
||||||
|
https://visualstudio.microsoft.com/vs/community/.
|
||||||
|
|
||||||
|
## Required files
|
||||||
|
|
||||||
|
### Microsoft platform files
|
||||||
|
|
||||||
|
OpenTTD needs the Platform SDK, if it isn't installed already. This can be
|
||||||
|
done during installing Visual Studio, by selecting
|
||||||
|
`Visual C++ MFC for x86 and x64` (and possibly
|
||||||
|
`Visual C++ ATL for x86 and x64` depending on your version). If not, you
|
||||||
|
can get it at this location:
|
||||||
|
|
||||||
|
- [MS Windows Platform SDK](https://developer.microsoft.com/en-US/windows/downloads/windows-10-sdk)
|
||||||
|
|
||||||
|
Install the SDK by following the instructions as given.
|
||||||
|
|
||||||
|
### OpenTTD dependencies
|
||||||
|
|
||||||
|
Dependencies for OpenTTD on Windows are handled via
|
||||||
|
[vcpkg](https://github.com/Microsoft/vcpkg/). First you need to install vcpkg
|
||||||
|
by following the `Quick Start` intructions of their
|
||||||
|
[README](https://github.com/Microsoft/vcpkg/blob/master/README.md).
|
||||||
|
|
||||||
|
After this, you can install the dependencies OpenTTD needs. We advise to use
|
||||||
|
the `static` versions, and OpenTTD currently needs the following dependencies:
|
||||||
|
|
||||||
|
- freetype
|
||||||
|
- liblzma
|
||||||
|
- libpng
|
||||||
|
- lzo
|
||||||
|
- zlib
|
||||||
|
|
||||||
|
To install both the x64 (64bit) and x86 (32bit) variants, you can use:
|
||||||
|
|
||||||
|
```ps
|
||||||
|
.\vcpkg install freetype:x64-windows-static liblzma:x64-windows-static libpng:x64-windows-static lzo:x64-windows-static zlib:x64-windows-static
|
||||||
|
.\vcpkg install freetype:x86-windows-static liblzma:x86-windows-static libpng:x86-windows-static lzo:x86-windows-static zlib:x86-windows-static
|
||||||
|
```
|
||||||
|
|
||||||
|
## TTD Graphics files
|
||||||
|
|
||||||
|
See section 4.1 of README.md for the required 3rdparty files and how to install them.
|
||||||
|
|
||||||
|
## Compiling
|
||||||
|
|
||||||
|
Open the appropriate `sln` (Solution) file for your version of Visual Studio:
|
||||||
|
|
||||||
|
- VS 2015: projects/openttd_vs140.sln
|
||||||
|
- VS 2017: projects/openttd_vs141.sln
|
||||||
|
- VS 2019: projects/openttd_vs142.sln
|
||||||
|
|
||||||
|
Set the build mode to `Release` in
|
||||||
|
`Build > Configuration manager > Active solution configuration`.
|
||||||
|
You can now compile.
|
||||||
|
|
||||||
|
If everything works well the binary should be in `objs\Win[32|64]\Release\openttd.exe`
|
||||||
|
and in `bin\openttd.exe`
|
||||||
|
|
||||||
|
## Problems
|
||||||
|
|
||||||
|
If compilation fails, double-check that you are using the latest github
|
||||||
|
source. If it still doesn't work, check in on IRC (irc://irc.oftc.net/openttd),
|
||||||
|
to ask for help.
|
@@ -1,109 +0,0 @@
|
|||||||
Compiling OpenTTD using Microsoft Visual C++
|
|
||||||
Last updated: 2018-03-21
|
|
||||||
--------------------------------------------
|
|
||||||
PLEASE READ THE ENTIRE DOCUMENT BEFORE DOING ANY ACTUAL CHANGES!!
|
|
||||||
|
|
||||||
|
|
||||||
SUPPORTED MSVC COMPILERS
|
|
||||||
------------------------
|
|
||||||
OpenTTD includes projects for Microsoft Visual Studio 2005 and later.
|
|
||||||
This is the earliest compiler supported, Visual C++ 2003, Visual C++ 6.0,
|
|
||||||
or earlier, will not compile OpenTTD.
|
|
||||||
You can download the free Visual Studio Community Edition from Microsoft.
|
|
||||||
|
|
||||||
|
|
||||||
1) REQUIRED FILES
|
|
||||||
-----------------
|
|
||||||
You might already have some of the files already installed, so check before
|
|
||||||
downloading; mostly because the Platform SDK is about 500MB.
|
|
||||||
Download the following files:
|
|
||||||
|
|
||||||
* openttd-useful.zip (http://binaries.openttd.org/extra/openttd-useful/)
|
|
||||||
* MS Windows Platform SDK (http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en)
|
|
||||||
* afxres.h (http://www-d0.fnal.gov/d0dist/dist/packages/d0ve/devel/windows/AFXRES.H)
|
|
||||||
|
|
||||||
...and of course the newest source from svn://svn.openttd.org/trunk
|
|
||||||
|
|
||||||
You need an SVN-client to download the source from subversion:
|
|
||||||
|
|
||||||
* CLI Subversion (http://subversion.tigris.org/)
|
|
||||||
* GUI TortoiseSVN (http://tortoisesvn.tigris.org/)
|
|
||||||
|
|
||||||
|
|
||||||
2) INCLUDES AND LIBRARIES
|
|
||||||
-------------------------
|
|
||||||
Put the newly downloaded files in the VC lib\ and include\ directories; where
|
|
||||||
"C:\Program Files\Microsoft Visual Studio 9.0\VC" is your location of Visual C.
|
|
||||||
If you are compiling for an x64 system, use the include\ and lib\ directories
|
|
||||||
from the win64/ folder.
|
|
||||||
|
|
||||||
* openttd-useful.zip\include\*
|
|
||||||
* afxresh.h
|
|
||||||
to > C:\Program Files\Microsoft Visual Studio 9.0\VC\Include
|
|
||||||
|
|
||||||
* openttd-useful.zip\lib\*
|
|
||||||
to > C:\Program Files\Microsoft Visual Studio 9.0\VC\Lib
|
|
||||||
|
|
||||||
Custom directories might be recommended, check 2.2)
|
|
||||||
|
|
||||||
|
|
||||||
2.1) INCLUDES AND LIBRARIES - DIRECTX/PLATFORM SDK
|
|
||||||
--------------------------------------------------
|
|
||||||
Basically the same procedure as with the useful zip file, providing
|
|
||||||
you are not using the Microsoft installer. Put the include files in the
|
|
||||||
include\ directory and the library files to the Lib\ directory.
|
|
||||||
|
|
||||||
It is recommended to use custom directories so you don't overwrite any
|
|
||||||
default header or library files.
|
|
||||||
|
|
||||||
|
|
||||||
2.2) CUSTOM DIRECTORIES
|
|
||||||
-----------------------
|
|
||||||
If you have put the above include and/or library files into custom folders,
|
|
||||||
MSVC will not find them by default. You need to add these paths to VC through:
|
|
||||||
|
|
||||||
Tools > Options > Projects and Solutions > VC++ Directories > show directories for
|
|
||||||
|
|
||||||
* Include files: Add the DirectX/Platform SDK include dir you've created
|
|
||||||
* Library files: Add the path to the SDK custom lib dir
|
|
||||||
|
|
||||||
NOTE: make sure that the directory for the DirectX SDK is the first one in the
|
|
||||||
list, above all others, otherwise compilation will most likely fail!!
|
|
||||||
|
|
||||||
|
|
||||||
3) TTD GRAPHICS FILES
|
|
||||||
---------------------
|
|
||||||
See section 4.1 of README.md for the required 3rdparty files and how to install them.
|
|
||||||
|
|
||||||
|
|
||||||
4) COMPILING
|
|
||||||
------------
|
|
||||||
Open the appropriate "sln" (Solution) file for your version of Visual Studio:
|
|
||||||
- VS 2005: projects/openttd_vs80.sln
|
|
||||||
- VS 2008: projects/openttd_vs90.sln
|
|
||||||
- VS 2010: projects/openttd_vs100.sln
|
|
||||||
- VS 2015: projects/openttd_vs140.sln
|
|
||||||
Set the build mode to 'Release' in
|
|
||||||
Build > Configuration manager > Active solution configuration > select "Release"
|
|
||||||
Compile...
|
|
||||||
|
|
||||||
If everything works well the binary should be in objs/Win[32|64]/Release/openttd.exe
|
|
||||||
|
|
||||||
|
|
||||||
5) EDITING, CHANGING SOURCE CODE
|
|
||||||
--------------------------------
|
|
||||||
Set the build mode (back to) 'Debug'
|
|
||||||
Change the startup project to openttd by right-clicking the 'openttd' project
|
|
||||||
in the Solution Explorer and selecting 'Set as Startup Project'. The 'openttd'
|
|
||||||
project should now show up bold instead of 'strgen'.
|
|
||||||
|
|
||||||
|
|
||||||
6) PROBLEMS?
|
|
||||||
------------
|
|
||||||
If compilation fails, double-check that you are using the latest SVN (!)
|
|
||||||
source. If it still doesn't work, check in on IRC (irc://irc.oftc.net/openttd),
|
|
||||||
to ask about reasons; or just wait. The problem will most likely solve itself
|
|
||||||
within a few days as the problem is noticed and fixed.
|
|
||||||
|
|
||||||
An up-to-date version of this README can be found on the wiki:
|
|
||||||
http://wiki.openttd.org/Microsoft_Visual_C%2B%2B_2008_Express_Editions
|
|
@@ -759,6 +759,7 @@
|
|||||||
<td valign=top nowrap> </td>
|
<td valign=top nowrap> </td>
|
||||||
<td>
|
<td>
|
||||||
<ul>
|
<ul>
|
||||||
|
<li>m1 bits 6..5: water class (sea or land)</li>
|
||||||
<li>m1 bits 4..0: <a href="#OwnershipInfo">owner</a> (normally <tt>10</tt>)</li>
|
<li>m1 bits 4..0: <a href="#OwnershipInfo">owner</a> (normally <tt>10</tt>)</li>
|
||||||
<li>m2 bits 8..6: ground
|
<li>m2 bits 8..6: ground
|
||||||
<table>
|
<table>
|
||||||
|
@@ -93,7 +93,7 @@ the array so you can quickly see what is used and what is not.
|
|||||||
<td class="bits">-inherit-</td>
|
<td class="bits">-inherit-</td>
|
||||||
<td class="bits"><span class="free">OOO</span>X XX<span class="free">OO</span></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>
|
||||||
<td class="bits">-inherit-</td>
|
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td rowspan=3>1</td>
|
<td rowspan=3>1</td>
|
||||||
@@ -156,7 +156,7 @@ the array so you can quickly see what is used and what is not.
|
|||||||
<td class="bits">-inherit-</td>
|
<td class="bits">-inherit-</td>
|
||||||
<td class="bits">-inherit-</td>
|
<td class="bits">-inherit-</td>
|
||||||
<td class="bits">XXXX <span class="free">OOOO</span></td>
|
<td class="bits">XXXX <span class="free">OOOO</span></td>
|
||||||
<td class="bits">-inherit-</td>
|
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||||
<td class="bits">XXXX <span class="free">OOO</span>X</td>
|
<td class="bits">XXXX <span class="free">OOO</span>X</td>
|
||||||
<td class="bits"><span class="free">OO</span>XX X<span class="free">OOO</span></td>
|
<td class="bits"><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>
|
||||||
@@ -173,7 +173,7 @@ the array so you can quickly see what is used and what is not.
|
|||||||
<td class="bits">XX<span class="free">OO OO</span>XX</td>
|
<td class="bits">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">XXX<span class="free">O</span> XXXX</td>
|
<td class="bits">XXX<span class="free">O</span> XXXX</td>
|
||||||
<td class="bits">-inherit-</td>
|
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>3</td>
|
<td>3</td>
|
||||||
@@ -194,7 +194,7 @@ the array so you can quickly see what is used and what is not.
|
|||||||
<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">XXXX XXXX</td>
|
||||||
<td class="bits"><span class="free">OOO</span><span class="option">~ ~~~~</span></td>
|
<td class="bits"><span class="free">O</span>XX<span class="option">~ ~~~~</span></td>
|
||||||
<td class="bits"><span class="free">OOOO OOO</span>X XXXX XXXX</td>
|
<td class="bits"><span class="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>
|
||||||
@@ -241,7 +241,7 @@ the array so you can quickly see what is used and what is not.
|
|||||||
<td class="bits"><span class="option">~~~~ ~</span>XXX</td>
|
<td class="bits"><span class="option">~~~~ ~</span>XXX</td>
|
||||||
<td class="bits"><span class="free">OO</span>XX X<span class="free">OOO</span></td>
|
<td class="bits"><span class="free">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>
|
||||||
<td class="bits">-inherit-</td>
|
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="caption">dock</td>
|
<td class="caption">dock</td>
|
||||||
@@ -254,7 +254,7 @@ the array so you can quickly see what is used and what is not.
|
|||||||
<td class="bits"><span class="option">~~~~ ~</span>XXX</td>
|
<td class="bits"><span class="option">~~~~ ~</span>XXX</td>
|
||||||
<td class="bits"><span class="free">OO</span>XX X<span class="free">OOO</span></td>
|
<td class="bits"><span class="free">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>
|
||||||
<td class="bits">-inherit-</td>
|
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="caption">airport</td>
|
<td class="caption">airport</td>
|
||||||
@@ -267,7 +267,7 @@ the array so you can quickly see what is used and what is not.
|
|||||||
<td class="bits">XXXX XXXX</td>
|
<td class="bits">XXXX XXXX</td>
|
||||||
<td class="bits"><span class="free">OO</span>XX X<span class="free">OOO</span></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>
|
||||||
<td class="bits">-inherit-</td>
|
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="caption">buoy</td>
|
<td class="caption">buoy</td>
|
||||||
@@ -280,7 +280,7 @@ the array so you can quickly see what is used and what is not.
|
|||||||
<td class="bits"><span class="option">~~~~ ~~~~</span></td>
|
<td class="bits"><span class="option">~~~~ ~~~~</span></td>
|
||||||
<td class="bits"><span class="free">OO</span>XX X<span class="free">OOO</span></td>
|
<td class="bits"><span class="free">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>
|
||||||
<td class="bits">-inherit-</td>
|
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="caption">oilrig</td>
|
<td class="caption">oilrig</td>
|
||||||
@@ -293,7 +293,7 @@ the array so you can quickly see what is used and what is not.
|
|||||||
<td class="bits"><span class="option">~~~~ ~~~~</span></td>
|
<td class="bits"><span class="option">~~~~ ~~~~</span></td>
|
||||||
<td class="bits"><span class="free">OO</span>XX X<span class="free">OOO</span></td>
|
<td class="bits"><span class="free">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>
|
||||||
<td class="bits">-inherit-</td>
|
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td rowspan=3>6</td>
|
<td rowspan=3>6</td>
|
||||||
@@ -320,7 +320,7 @@ the array so you can quickly see what is used and what is not.
|
|||||||
<td class="bits">-inherit-</td>
|
<td class="bits">-inherit-</td>
|
||||||
<td class="bits"><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"><span class="free">OOOO OOOO OOOO OOOO</span></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="caption">shipdepot</td>
|
<td class="caption">shipdepot</td>
|
||||||
@@ -333,7 +333,7 @@ the array so you can quickly see what is used and what is not.
|
|||||||
<td class="bits">-inherit-</td>
|
<td class="bits">-inherit-</td>
|
||||||
<td class="bits"><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"><span class="free">OOOO OOOO OOOO OOOO</span></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>8</td>
|
<td>8</td>
|
||||||
@@ -368,9 +368,9 @@ 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 OOOO OOOO</span></td>
|
||||||
<td class="bits">-inherit-</td>
|
<td class="bits">-inherit-</td>
|
||||||
<td class="bits">-inherit-</td>
|
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||||
<td class="bits">-inherit-</td>
|
|
||||||
<td class="bits">-inherit-</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"><span class="free">OO</span>XX XX<span class="free">OO</span></td>
|
||||||
<td class="bits">-inherit-</td>
|
<td class="bits">-inherit-</td>
|
||||||
|
@@ -90,7 +90,7 @@ Table of contents
|
|||||||
- [network] sync_freq:
|
- [network] sync_freq:
|
||||||
change it in console with: 'set network.sync_freq <number>'
|
change it in console with: 'set network.sync_freq <number>'
|
||||||
the number should be between the 50 and 1000, not much lower, not much
|
the number should be between the 50 and 1000, not much lower, not much
|
||||||
higer. It indicates the time between sync-frames. A sync-frame is a frame
|
higher. It indicates the time between sync-frames. A sync-frame is a frame
|
||||||
which checks if all clients are still in sync. When the value it too high,
|
which checks if all clients are still in sync. When the value it too high,
|
||||||
clients can desync in 1960, but the server detects it in 1970. Not really
|
clients can desync in 1960, but the server detects it in 1970. Not really
|
||||||
handy. The lower the value, the more bandwidth it uses.
|
handy. The lower the value, the more bandwidth it uses.
|
||||||
@@ -104,7 +104,7 @@ Table of contents
|
|||||||
- In UNIX like systems, you can fork your dedicated server by adding -f as
|
- In UNIX like systems, you can fork your dedicated server by adding -f as
|
||||||
parameter.
|
parameter.
|
||||||
|
|
||||||
- You can automaticly clean companies that do not have a client connected to
|
- You can automatically clean companies that do not have a client connected to
|
||||||
them, for, let's say, 3 years. You can do this via: 'set autoclean_companies'
|
them, for, let's say, 3 years. You can do this via: 'set autoclean_companies'
|
||||||
and 'set autoclean_protected' and 'set autoclean_unprotected'. Unprotected
|
and 'set autoclean_protected' and 'set autoclean_unprotected'. Unprotected
|
||||||
removes a password from a company when it is not used for more then the
|
removes a password from a company when it is not used for more then the
|
||||||
@@ -113,7 +113,7 @@ Table of contents
|
|||||||
|
|
||||||
- You can also do this manually via the console: 'reset_company'.
|
- You can also do this manually via the console: 'reset_company'.
|
||||||
|
|
||||||
- You can let your server automaticly restart a map when, let's say, year 2030
|
- You can let your server automatically restart a map when, let's say, year 2030
|
||||||
is reached. See 'set restart_game_date' for detail.
|
is reached. See 'set restart_game_date' for detail.
|
||||||
|
|
||||||
- If you want to be on the server-list, enable Advertising. To do this, select
|
- If you want to be on the server-list, enable Advertising. To do this, select
|
||||||
|
@@ -67,22 +67,33 @@ if [ -d "$ROOT_DIR/.git" ]; then
|
|||||||
MODIFIED="2"
|
MODIFIED="2"
|
||||||
fi
|
fi
|
||||||
HASH=`LC_ALL=C git rev-parse --verify HEAD 2>/dev/null`
|
HASH=`LC_ALL=C git rev-parse --verify HEAD 2>/dev/null`
|
||||||
SHORTHASH=`echo ${HASH} | cut -c1-8`
|
SHORTHASH=`echo ${HASH} | cut -c1-10`
|
||||||
ISODATE=`LC_ALL=C git show -s --pretty='format:%ci' HEAD | "$AWK" '{ gsub("-", "", $1); print $1 }'`
|
ISODATE=`LC_ALL=C git show -s --pretty='format:%ci' HEAD | "$AWK" '{ gsub("-", "", $1); print $1 }'`
|
||||||
BRANCH="`git symbolic-ref -q HEAD 2>/dev/null | sed 's@.*/@@'`"
|
BRANCH="`git symbolic-ref -q HEAD 2>/dev/null | sed 's@.*/@@'`"
|
||||||
TAG="`git name-rev --name-only --tags --no-undefined HEAD 2>/dev/null | sed 's@\^0$@@'`"
|
TAG="`git name-rev --name-only --tags --no-undefined HEAD 2>/dev/null | sed 's@\^0$@@'`"
|
||||||
|
|
||||||
if [ -n "$TAG" ]; then
|
if [ "$MODIFIED" -eq "0" ]; then
|
||||||
VERSION="${TAG}"
|
hashprefix="-g"
|
||||||
elif [ "${BRANCH}" = "master" ]; then
|
elif [ "$MODIFIED" -eq "2" ]; then
|
||||||
VERSION="${ISODATE}-g${SHORTHASH}"
|
hashprefix="-m"
|
||||||
else
|
else
|
||||||
VERSION="${ISODATE}-${BRANCH}-g${SHORTHASH}"
|
hashprefix="-u"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$MODIFIED" -eq "2" ]; then
|
if [ -n "$TAG" ]; then
|
||||||
VERSION="${VERSION}M"
|
VERSION="${TAG}"
|
||||||
|
ISTAG="1"
|
||||||
|
if [ -n "`echo \"${TAG}\" | grep \"^[0-9.]*$\"`" ]; then
|
||||||
|
ISSTABLETAG="1"
|
||||||
|
else
|
||||||
|
ISSTABLETAG="0"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
VERSION="${ISODATE}-${BRANCH}${hashprefix}${SHORTHASH}"
|
||||||
|
ISTAG="0"
|
||||||
|
ISSTABLETAG="0"
|
||||||
fi
|
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
|
||||||
cat $ROOT_DIR/.ottdrev
|
cat $ROOT_DIR/.ottdrev
|
||||||
@@ -96,6 +107,8 @@ else
|
|||||||
ISODATE=""
|
ISODATE=""
|
||||||
TAG=""
|
TAG=""
|
||||||
VERSION=""
|
VERSION=""
|
||||||
|
ISTAG="0"
|
||||||
|
ISSTABLETAG="0"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "$VERSION $ISODATE $MODIFIED $HASH"
|
echo "$VERSION $ISODATE $MODIFIED $HASH $ISTAG $ISSTABLETAG"
|
||||||
|
741
known-bugs.txt
741
known-bugs.txt
@@ -1,6 +1,6 @@
|
|||||||
OpenTTD's known bugs
|
OpenTTD's known bugs
|
||||||
Last updated: 2016-07-01
|
Last updated: 2019-02-24
|
||||||
Release version: 1.6.1
|
Release version: 1.9.0-beta3
|
||||||
------------------------------------------------------------------------
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
@@ -14,12 +14,12 @@ Table of contents
|
|||||||
---- -----
|
---- -----
|
||||||
All bugs listed below are marked as known. Please do not submit any bugs
|
All bugs listed below are marked as known. Please do not submit any bugs
|
||||||
that are the same as these. If you do, do not act surprised, because
|
that are the same as these. If you do, do not act surprised, because
|
||||||
we WILL flame you!!
|
we WILL flame you!
|
||||||
|
|
||||||
The current list of known bugs that we intend to fix can be found in our
|
The current list of known bugs that we intend to fix can be found in our
|
||||||
bug tracking system at: https://github.com/OpenTTD/OpenTTD/issues
|
bug tracking system at https://github.com/OpenTTD/OpenTTD/issues
|
||||||
Also check the closed bugs when searching for your bug in this system as
|
Also check the closed bugs when searching for your bug in this system as we
|
||||||
we might have fixed the bug in the mean time.
|
might have fixed the bug in the mean time.
|
||||||
|
|
||||||
|
|
||||||
2.0) Known bugs
|
2.0) Known bugs
|
||||||
@@ -29,436 +29,383 @@ reasons why we think that fixing them is infeasible. We might make some
|
|||||||
minor improvements that reduce the scope of these bugs, but we will not
|
minor improvements that reduce the scope of these bugs, but we will not
|
||||||
be able to completely fix them.
|
be able to completely fix them.
|
||||||
|
|
||||||
No suitable AI can be found
|
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: Either you set the number of AI players to 0 so that
|
for this problem: Either you set the number of AI players to 0 so that
|
||||||
no AI is started. You find that setting at the top of the window in the
|
no AI is started. You find that setting at the top of the window in the
|
||||||
"AI / Game Scripts Settings" window.
|
"AI / Game Scripts Settings" window.
|
||||||
The other solution is acquiring (downloading) some AI. The easiest way
|
The other solution is acquiring (downloading) some AI. The easiest way
|
||||||
to do this is via the "Check Online Content" button in the main (intro)
|
to do this is via the "Check Online Content" button in the main (intro)
|
||||||
menu or directly in the "AI / Game Scripts Settings" dialogue via the
|
menu or directly in the "AI / Game Scripts Settings" dialogue via the
|
||||||
"Check Online Content" button.
|
"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
|
||||||
OpenTTD's 8bpp screen modes. Workarounds for this are:
|
of OpenTTD's 8bpp screen modes. Workarounds for this are:
|
||||||
a) Switching to windowed mode, instead of fullscreen
|
a) Switching to windowed mode, instead of fullscreen
|
||||||
b) Switching off background slideshow
|
b) Switching off background slideshow
|
||||||
c) Setting up the 32bpp-anim or 32bpp-optimized blitter
|
c) Setting up the 32bpp-anim or 32bpp-optimized blitter
|
||||||
|
|
||||||
Long delay between switching songs/music
|
Custom vehicle type name is incorrectly aligned:
|
||||||
On Windows there is a delay of a (few) second(s) between switching of
|
Some NewGRFs use sprites that are bigger than normal in the "buy
|
||||||
songs for the "win32" driver. This delay is caused by the fact that
|
vehicle" window. Due to this they have to encode an offset for
|
||||||
opening a MIDI file via MCI is extremely slow.
|
the vehicle type name. Upon renaming the vehicle type this encoded
|
||||||
|
offset is stripped from the name because the "edit box" cannot show
|
||||||
|
this encoding. As a result the custom vehicle type names will get
|
||||||
|
the default alignment. The only way to (partially) fix this is by
|
||||||
|
adding spaces to the custom name.
|
||||||
|
|
||||||
DirectMusic, known as "dmusic" in OpenTTD, has a much shorter delay.
|
Clipping problems [#119]:
|
||||||
However, under some circumstances DirectMusic does not reset its
|
In some cases sprites are not drawn as one would expect. Examples of
|
||||||
state properly causing wrongly pitched/bad sounding songs. This
|
this are aircraft that might be hidden below the runway or trees that
|
||||||
problem is in DirectMusic as it is reproducable with Microsoft's
|
in some cases are rendered over vehicles.
|
||||||
DirectMusic Producer. DirectMusic has been deprecated since 2004
|
The primary cause of this problem is that OpenTTD does not have enough
|
||||||
and as such has no support for 64 bits OpenTTD.
|
data (like a 3D model) to properly determine what needs to be drawn in
|
||||||
|
front of what. OpenTTD has bounding boxes but in lots of cases they
|
||||||
|
are either too big or too small and then cause problems with what
|
||||||
|
needs to be drawn in front of what. Also some visual tricks are used.
|
||||||
|
For example trains at 8 pixels high, the catenary needs to be drawn
|
||||||
|
above that. When you want to draw bridges on top of that, which are
|
||||||
|
only one height level (= 8 pixels) higher, you are getting into some
|
||||||
|
big problems.
|
||||||
|
We can not change the height levels; it would require us to either
|
||||||
|
redraw all vehicle or all landscape graphics. Doing so would mean we
|
||||||
|
leave the Transport Tycoon graphics, which in effect means OpenTTD
|
||||||
|
will not be a Transport Tycoon clone anymore.
|
||||||
|
|
||||||
As a delay is favourable over bad sounding music the "win32" driver
|
Mouse scrolling not possible at the edges of the screen [#383] [#3966]:
|
||||||
is the default driver for OpenTTD. You can change this default by
|
Scrolling the viewport with the mouse cursor at the edges of the screen
|
||||||
setting the "musicdriver" in your openttd.cfg to "dmusic".
|
in the same direction of the edge will fail. If the cursor is near the
|
||||||
|
edge the scrolling will be very slow.
|
||||||
|
OpenTTD only receives cursor position updates when the cursor is inside
|
||||||
|
OpenTTD's window. It is not told how far you have moved the cursor
|
||||||
|
outside of OpenTTD's window.
|
||||||
|
|
||||||
Custom vehicle type name is incorrectly aligned
|
Lost trains ignore (block) exit signals [#1473]:
|
||||||
Some NewGRFs use sprites that are bigger than normal in the "buy
|
If trains are lost they ignore block exit signals, blocking junctions
|
||||||
vehicle" window. Due to this they have to encode an offset for the
|
with presignals. This is caused because the path finders cannot tell
|
||||||
vehicle type name. Upon renaming the vehicle type this encoded offset
|
where the train needs to go. As such a random direction is chosen at
|
||||||
is stripped from the name because the "edit box" cannot show this
|
each junction. This causes the trains to occasionally to make choices
|
||||||
encoding. As a result the custom vehicle type names will get the
|
that are unwanted from a player's point of view.
|
||||||
default alignment. The only way to (partly) fix this is by adding
|
This will not be fixed because lost trains are in almost all cases a
|
||||||
spaces to the custom name.
|
network problem, e.g. a train can never reach a specific place. This
|
||||||
|
makes the impact of fixing the bug enormously small against the amount
|
||||||
|
of work needed to write a system that prevents the lost trains from
|
||||||
|
taking the wrong direction.
|
||||||
|
|
||||||
Clipping problems [FS#119]
|
Vehicle owner of last transfer leg gets paid for all [#2427]:
|
||||||
In some cases sprites are not drawn as one would expect. Examples of
|
When you make a transfer system that switches vehicle owners. This
|
||||||
this are aircraft that might be hidden below the runway or trees that
|
is only possible with 'industry stations', e.g. the oil rig station
|
||||||
in some cases are rendered over vehicles.
|
the owner of the vehicle that does the final delivery gets paid for
|
||||||
The primary cause of this problem is that OpenTTD does not have enough
|
the whole trip. It is not shared amongst the different vehicle
|
||||||
data (like a 3D model) to properly determine what needs to be drawn in
|
owners that have participated in transporting the cargo.
|
||||||
front of what. OpenTTD has bounding boxes but in lots of cases they
|
This sharing is not done because it would enormously increase the
|
||||||
are either too big or too small and then cause problems with what
|
memory and CPU usage in big games for something that is happening
|
||||||
needs to be drawn in front of what. Also some visual tricks are used.
|
in only one corner case. We think it is not worth the effort until
|
||||||
For example trains at 8 pixels high, the catenary needs to be drawn
|
sharing of stations is an official feature.
|
||||||
above that. When you want to draw bridges on top of that, which are
|
|
||||||
only one height level (= 8 pixels) higher, you are getting into some
|
|
||||||
big problems.
|
|
||||||
We can not change the height levels; it would require us to either
|
|
||||||
redraw all vehicle or all landscape graphics. Doing so would mean we
|
|
||||||
leave the Transport Tycoon graphics, which in effect means OpenTTD
|
|
||||||
will not be a Transport Tycoon clone anymore.
|
|
||||||
|
|
||||||
Mouse scrolling not possible at the edges of the screen [FS#383] [FS#3966]
|
Forbid 90 degree turns does not work for crossing PBS paths [#2737]:
|
||||||
Scrolling the viewport with the mouse cursor at the edges of the screen
|
When you run a train through itself on a X junction with PBS turned on
|
||||||
in the same direction of the edge will fail. If the cursor is near the
|
the train will not obey the 'forbid 90 degree turns' setting. This is
|
||||||
edge the scrolling will be very slow.
|
due to the fact that we can not be sure that the setting was turned
|
||||||
OpenTTD only receives cursor position updates when the cursor is inside
|
off when the track was reserved, which means that we assume it was
|
||||||
OpenTTD's window. It is not told how far you have moved the cursor
|
turned on and that the setting does not hold at the time. We made it
|
||||||
outside of OpenTTD's window.
|
this way to allow one to change the setting in-game, but it breaks
|
||||||
|
slightly when you are running your train through itself. Running a
|
||||||
|
train through means that your network is broken and is thus a user
|
||||||
|
error which OpenTTD tries to graciously handle.
|
||||||
|
Fixing this bug means that we need to record whether this particular
|
||||||
|
setting was turned on or off at the time the reservation was made. This
|
||||||
|
means adding quite a bit of data to the savegame for solving an issue
|
||||||
|
that is basically an user error. We think it is not worth the effort.
|
||||||
|
|
||||||
Lost trains ignore (block) exit signals [FS#1473]
|
Duplicate (station) names after renaming [#3204]:
|
||||||
If trains are lost they ignore block exit signals, blocking junctions
|
After renaming stations one can create duplicate station names. This
|
||||||
with presignals. This is caused because the path finders cannot tell
|
is done giving a station the same custom name as another station with
|
||||||
where the train needs to go. As such a random direction is chosen at
|
an automatically generated name.
|
||||||
each junction. This causes the trains to occasionally to make choices
|
The major part of this problem is that station names are translatable.
|
||||||
that are unwanted from a player's point of view.
|
Meaning that a station is called e.g. '<TOWN> Central' in English and
|
||||||
This will not be fixed because lost trains are in almost all cases a
|
'<TOWN> Centraal' in Dutch. This means that in network games the
|
||||||
network problem, e.g. a train can never reach a specific place. This
|
renaming of a town could cause the rename to succeed on some clients
|
||||||
makes the impact of fixing the bug enormously small against the
|
and fail at others. This creates an inconsistent game state that will
|
||||||
amount of work needed to write a system that prevents the lost trains
|
be seen as a 'desync'. Secondly the custom names are intended to fall
|
||||||
from taking the wrong direction.
|
completely outside of the '<TOWN> <name>' naming of stations, so when
|
||||||
|
you rename a town all station names are updated accordingly.
|
||||||
|
As a result the decision has been made that all custom names are only
|
||||||
|
compared to the other custom names in the same class and not compared
|
||||||
|
to the automatically generated names.
|
||||||
|
|
||||||
Vehicle owner of last transfer leg gets paid for all [FS#2427]
|
Extreme CPU usage/hangs when using SDL and PulseAudio [#3294],
|
||||||
When you make a transfer system that switches vehicle owners. This
|
OpenTTD hangs/freezes when closing, OpenTTD is slow, OpenTTD uses a lot of CPU:
|
||||||
is only possible with 'industry stations', e.g. the oil rig station
|
OpenTTD can be extremely slow/use a lot of CPU when the sound is
|
||||||
the owner of the vehicle that does the final delivery gets paid for
|
played via SDL and then through PulseAudio's ALSA wrapper. Under the
|
||||||
the whole trip. It is not shared amongst the different vehicle
|
same configuration OpenTTD, or rather SDL, might hang when exiting
|
||||||
owners that have participated in transporting the cargo.
|
the game. This problem is seen most in Ubuntu 9.04 and higher.
|
||||||
This sharing is not done because it would enormously increase the
|
|
||||||
memory and CPU usage in big games for something that is happening
|
|
||||||
in only one corner case. We think it is not worth the effort until
|
|
||||||
sharing of stations is an official feature.
|
|
||||||
|
|
||||||
Forbid 90 degree turns does not work for crossing PBS paths [FS#2737]
|
This is because recent versions of the PulseAudio sound server
|
||||||
When you run a train through itself on a X junction with PBS turned on
|
are configured to use timer-based audio scheduling rather than
|
||||||
the train will not obey the 'forbid 90 degree turns' setting. This is
|
interrupt-based audio scheduling. Configuring PulseAudio to force
|
||||||
due to the fact that we can not be sure that the setting was turned
|
use of interrupt-based scheduling may resolve sound problems for
|
||||||
off when the track was reserved, which means that we assume it was
|
some users. Under recent versions of Ubuntu Linux (9.04 and higher)
|
||||||
turned on and that the setting does not hold at the time. We made it
|
this can be accomplished by changing the following line in the
|
||||||
this way to allow one to change the setting in-game, but it breaks
|
/etc/pulse/default.pa file:
|
||||||
slightly when you are running your train through itself. Running a
|
load-module module-udev-detect
|
||||||
train through means that your network is broken and is thus a user
|
to
|
||||||
error which OpenTTD tries to graciously handle.
|
load-module module-udev-detect tsched=0
|
||||||
Fixing this bug means that we need to record whether this particular
|
Note that PulseAudio must be restarted for changes to take effect. Older
|
||||||
setting was turned on or off at the time the reservation was made. This
|
versions of PulseAudio may use the module-hal-detect module instead.
|
||||||
means adding quite a bit of data to the savegame for solving an issue
|
Adding tsched=0 to the end of that line will have a similar effect.
|
||||||
that is basically an user error. We think it is not worth the effort.
|
|
||||||
|
|
||||||
Duplicate (station) names after renaming [FS#3204]
|
Another possible solution is selecting the "pulse" backend of SDL
|
||||||
After renaming stations one can create duplicate station names. This
|
by either using "SDL_AUDIODRIVER=pulse openttd" at the command
|
||||||
is done giving a station the same custom name as another station with
|
prompt or installing the 'libsdl1.2debian-pulseaudio' package from
|
||||||
an automatically generated name.
|
Ubuntu's Universe repository. For other distributions a similar
|
||||||
The major part of this problem is that station names are translatable.
|
package needs to be installed.
|
||||||
Meaning that a station is called e.g. '<TOWN> Central' in English and
|
|
||||||
'<TOWN> Centraal' in Dutch. This means that in network games the
|
|
||||||
renaming of a town could cause the rename to succeed on some clients
|
|
||||||
and fail at others. This creates an inconsistent game state that will
|
|
||||||
be seen as a 'desync'. Secondly the custom names are intended to fall
|
|
||||||
completely outside of the '<TOWN> <name>' naming of stations, so when
|
|
||||||
you rename a town all station names are updated accordingly.
|
|
||||||
As a result the decision has been made that all custom names are only
|
|
||||||
compared to the other custom names in the same class and not compared
|
|
||||||
to the automatically generated names.
|
|
||||||
|
|
||||||
Extreme CPU usage/hangs when using SDL and PulseAudio [FS#3294]
|
OpenTTD not properly resizing with SDL on X [#3305]:
|
||||||
OpenTTD hangs/freezes when closing, OpenTTD is slow, OpenTTD uses a lot of CPU
|
Under some X window managers OpenTTD's window does not properly
|
||||||
OpenTTD can be extremely slow/use a lot of CPU when the sound is
|
resize. You will either end up with a black bar at the right/bottom
|
||||||
played via SDL and then through PulseAudio's ALSA wrapper. Under the
|
side of the window or you cannot see the right/bottom of the window,
|
||||||
same configuration OpenTTD, or rather SDL, might hang when exiting
|
e.g. you cannot see the status bar. The problem is that OpenTTD does
|
||||||
the game. This problem is seen most in Ubuntu 9.04 and higher.
|
not always receive a resize event from SDL making it impossible for
|
||||||
|
OpenTTD to know that the window was resized; sometimes moving the
|
||||||
This is because recent versions of the PulseAudio sound server are
|
window will solve the problem.
|
||||||
configured to use timer-based audio scheduling rather than
|
Window managers that are known to exhibit this behaviour are GNOME's
|
||||||
interrupt-based audio scheduling. Configuring PulseAudio to force
|
and KDE's. With the XFCE's and LXDE's window managers the resize
|
||||||
use of interrupt-based scheduling may resolve sound problems for
|
event is sent when the user releases the mouse.
|
||||||
some users. Under recent versions of Ubuntu Linux (9.04 and higher)
|
|
||||||
this can be accomplished by changing the following line in the
|
|
||||||
/etc/pulse/default.pa file:
|
|
||||||
load-module module-udev-detect
|
|
||||||
to
|
|
||||||
load-module module-udev-detect tsched=0
|
|
||||||
Note that PulseAudio must be restarted for changes to take effect.
|
|
||||||
Older versions of PulseAudio may use the module-hal-detect module
|
|
||||||
instead. Adding tsched=0 to the end of that line will have a similar
|
|
||||||
effect.
|
|
||||||
|
|
||||||
Another possible solution is selecting the "pulse" backend of SDL
|
|
||||||
by either using "SDL_AUDIODRIVER=pulse openttd" at the command
|
|
||||||
prompt or installing the 'libsdl1.2debian-pulseaudio' package from
|
|
||||||
Ubuntu's Universe repository. For other distributions a similar
|
|
||||||
package needs to be installed.
|
|
||||||
|
|
||||||
OpenTTD not properly resizing with SDL on X [FS#3305]
|
|
||||||
Under some X window managers OpenTTD's window does not properly
|
|
||||||
resize. You will either end up with a black bar at the right/bottom
|
|
||||||
side of the window or you cannot see the right/bottom of the window,
|
|
||||||
e.g you cannot see the status bar. The problem is that OpenTTD does
|
|
||||||
not always receive a resize event from SDL making it impossible for
|
|
||||||
OpenTTD to know that the window was resized; sometimes moving the
|
|
||||||
window will solve the problem.
|
|
||||||
Window managers that are known to exhibit this behaviour are KDE's
|
|
||||||
and GNOME's. With the XFCE's and LXDE's window managers the resize
|
|
||||||
event is sent when the user releases the mouse.
|
|
||||||
|
|
||||||
Incorrect colours, crashes upon exit, debug warnings and smears upon
|
Incorrect colours, crashes upon exit, debug warnings and smears upon
|
||||||
window resizing with SDL on Mac OS X [FS#3447]
|
window resizing with SDL on macOS [#3447]:
|
||||||
Video handling with (lib)SDL under Mac OS X is known to fail on some
|
Video handling with (lib)SDL under macOS is known to fail on some
|
||||||
versions of Mac OS X with some hardware configurations. Some of the
|
versions of macOS with some hardware configurations. Some of
|
||||||
problems happen only under some circumstances whereas others are
|
the problems happen only under some circumstances whereas others
|
||||||
always present.
|
are always present.
|
||||||
We suggest that the SDL video/sound backend is not used for OpenTTD
|
We suggest that the SDL video/sound backend is not used for OpenTTD
|
||||||
in combinations with Mac OS X.
|
in combinations with macOS.
|
||||||
|
|
||||||
Train crashes entering same junction from block and path signals [FS#3928]
|
Train crashes entering same junction from block and path signals [#3928]:
|
||||||
When a train has reserved a path from a path signal to a two way
|
When a train has reserved a path from a path signal to a two way
|
||||||
block signal and the reservation passes a path signal through the
|
block signal and the reservation passes a path signal through the
|
||||||
back another train can enter the reserved path (only) via that same
|
back another train can enter the reserved path (only) via that
|
||||||
two way block signal.
|
same two way block signal.
|
||||||
The reason for this has to do with optimisation; to fix this issue
|
The reason for this has to do with optimisation; to fix this issue
|
||||||
the signal update has to pass all path signals until it finds either
|
the signal update has to pass all path signals until it finds either
|
||||||
a train or a backwards facing signal. This is a very expensive task.
|
a train or a backwards facing signal. This is a very expensive task.
|
||||||
The (signal) setups that allow these crashes can furthermore be
|
The (signal) setups that allow these crashes can furthermore be
|
||||||
considered incorrectly signalled; one extra safe waiting point for
|
considered incorrectly signalled; one extra safe waiting point for
|
||||||
the train entering from path signal just after the backwards facing
|
the train entering from path signal just after the backwards facing
|
||||||
signal (from the path signal train) resolves the issue.
|
signal (from the path signal train) resolves the issue.
|
||||||
|
|
||||||
Crashes when playing music [FS#3941]
|
Crashes when run in a VM using Parallels Desktop [#4003]:
|
||||||
Mac OS X's QuickTime (default music driver) and Windows' MCI (win32
|
When the Windows version of OpenTTD is executed in a VM under
|
||||||
music driver) crash on some songs from OpenMSX. OpenTTD cannot do
|
Parallels Desktop a privileged instruction exception may be thrown.
|
||||||
anything about this. Please report these crashes to the authors of
|
As OpenTTD works natively on macOS as well as natively on Windows and
|
||||||
OpenMSX so the crash causing songs can be removed or fixed.
|
these native builds both don't exhibit this behaviour this crash is
|
||||||
|
most likely due to a bug in the virtual machine, something out of
|
||||||
|
the scope of OpenTTD. Most likely this is due to Parallels Desktop
|
||||||
|
lacking support for RDTSC calls. The problem can be avoided by using
|
||||||
|
other VM-software, Wine, or running natively on macOS.
|
||||||
|
|
||||||
Crashes when run in a VM using Parallels Desktop [FS#4003]
|
Entry- and exit signals are not dragged [#4378]:
|
||||||
When the Windows version of OpenTTD is executed in a VM under
|
Unlike all other signal types, the entry- and exit signals are not
|
||||||
Parallels Desktop a privileged instruction exception may be thrown.
|
dragged but instead normal signals are placed on subsequent track
|
||||||
As OpenTTD works natively on OSX as well as natively on Windows and
|
sections. This is done on purpose as this is the usually more
|
||||||
these native builds both don't exhibit this behaviour this crash is
|
convenient solution. There are little to no occasions where more
|
||||||
most likely due to a bug in the virtual machine, something out of
|
than one entry or exit signal in a row are useful. This is different
|
||||||
the scope of OpenTTD. Most likely this is due to Parallels Desktop
|
for all other signal types where several in a row can serve one
|
||||||
lacking support for RDTSC calls. The problem can be avoided by using
|
purpose or another.
|
||||||
other VM-software, Wine, or running natively on OSX.
|
|
||||||
|
|
||||||
OpenTTD hangs when started on 32 bits Windows [FS#4083]
|
Station build date is incorrect [#4415]:
|
||||||
Under some circumstances OpenTTD might hang for hours on the
|
The tile query tool will show the date of the last (re)construction
|
||||||
initialisation of the music driver. The exact circumstances are
|
at the station and not the date of the first construction. This is
|
||||||
unknown except that it is the "dmusic" music driver that has the
|
due to compatability reasons with NewGRFs and the fact that it is
|
||||||
problem and that the "win32" music driver does not.
|
wrong to say that the station is built in a particular year when it
|
||||||
As a result using the "win32" music driver will work around this
|
was completely destroyed/rebuilt later on.
|
||||||
issue.
|
The tile query tool can be fixed by changing the "Build date" text
|
||||||
|
to "Date at which the last (re)construction took place" but this is
|
||||||
|
deemed too specific and long for that window.
|
||||||
|
|
||||||
As the exact circumstances are unknown, and the obvious
|
(Temporary) wrong colours when switching to full screen [#4511]:
|
||||||
configuration settings related to the music driver are at their
|
On Windows it can happen that you temporarily see wrong colours
|
||||||
default we are not able to detect this failure, except when Windows'
|
when switching to full screen OpenTTD, either by starting
|
||||||
music initialisation function returns after several hours and then
|
OpenTTD in full screen mode, changing to full screen mode or by
|
||||||
there is no point in switching the music driver anymore.
|
ALT-TAB-ing into a full screen OpenTTD. This is caused by the
|
||||||
The reason we still use the "win32" music driver as default are
|
fact that OpenTTD, by default, uses 8bpp paletted output. The
|
||||||
described in the "Long delay between switching music/song" section
|
wrong colours you are seeing is a temporary effect of the video
|
||||||
of this document.
|
driver switching to 8bpp palette mode.
|
||||||
|
|
||||||
Pre- and exit signals are not dragged [FS#4378]
|
This issue can be worked around in two ways:
|
||||||
Unlike all other signal types, the entry- and exit signals are not
|
a) Setting fullscreen_bpp to 32
|
||||||
dragged but instead normal signals are placed on subsequent track
|
b) Setting up the 32bpp-anim or 32bpp-optimized blitter
|
||||||
sections. This is done on purpose as this is the usually more con-
|
|
||||||
venient solution. There are little to no occasions where more than
|
|
||||||
one entry or exit signal in a row are useful. This is different
|
|
||||||
for all other signal types where several in a row can serve one
|
|
||||||
purpose or another.
|
|
||||||
|
|
||||||
Station build date is incorrect [FS#4415]
|
Can't run OpenTTD with the -d option from a MSYS console [#4587]:
|
||||||
The tile query tool will show the date of the last (re)construction
|
The MSYS console does not allow OpenTTD to open an extra console for
|
||||||
at the station and not the date of the first construction. This is
|
debugging output. Compiling OpenTTD with the --enable-console
|
||||||
due to compatability reasons with NewGRFs and the fact that it is
|
configure option prevents this issue and allows the -d option to use
|
||||||
wrong to say that the station is built in a particular year when it
|
the MSYS console for its output.
|
||||||
was completely destroyed/rebuilt later on.
|
|
||||||
The tile query tool can be fixed by changing the "Build date" text
|
|
||||||
to "Date at which the last (re)construction took place" but this is
|
|
||||||
deemed too specific and long for that window.
|
|
||||||
|
|
||||||
Can't change volume inside OpenTTD [FS#4416]
|
Unreadable characters for non-latin locales [#4607]:
|
||||||
Some backends do not provide a means to change the volume of sound
|
OpenTTD does not ship a non-latin font in its graphics files. As a
|
||||||
effects or music. The mixing of music and sound is left to external
|
result OpenTTD needs to acquire the font from somewhere else. What
|
||||||
libraries/the operating system we can't handle the volume control
|
OpenTTD does is ask the operating system, or a system library, for
|
||||||
in OpenTTD. As a result you can't change the volume inside OpenTTD
|
the best font for a given language if the currently loaded font
|
||||||
for backends such as SDL; just use the volume control provided by
|
does not provide all characters of the chosen translation. This
|
||||||
your operating system.
|
means that OpenTTD has no influence over the quality of the chosen
|
||||||
|
font; it just does the best it can do.
|
||||||
|
|
||||||
Can't run OpenTTD with the -d option from a MSYS console [FS#4587]
|
If the text is unreadable there are several steps that you can take
|
||||||
The MSYS console does not allow OpenTTD to open an extra console for
|
to improve this. The first step is finding a good font and configure
|
||||||
debugging output. Compiling OpenTTD with the --enable-console
|
this in the configuration file. See section 9.0 of README.md for
|
||||||
configure option prevents this issue and allows the -d option to use
|
more information. You can also increase the font size to make the
|
||||||
the MSYS console for its output.
|
characters bigger and possible better readable.
|
||||||
|
|
||||||
Unreadable characters for non-latin locales [FS#4607]
|
If the problem is with the clarity of the font you might want to
|
||||||
OpenTTD does not ship a non-latin font in its graphics files. As a
|
enable anti-aliasing by setting the small_aa/medium_aa/large_aa
|
||||||
result OpenTTD needs to acquire the font from somewhere else. What
|
settings to "true". However, anti-aliasing only works when a 32-bit
|
||||||
OpenTTD does is ask the operating system, or a system library, for
|
blitter has been selected, e.g. blitter = "32bpp-anim", as with the
|
||||||
the best font for a given language if the currently loaded font
|
8 bits blitter there are not enough colours to properly perform the
|
||||||
does not provide all characters of the chosen translation. This
|
anti-aliasing.
|
||||||
means that OpenTTD has no influence over the quality of the chosen
|
|
||||||
font; it just does the best it can do.
|
|
||||||
|
|
||||||
If the text is unreadable there are several steps that you can take
|
Train does not crash with itself [#4635]:
|
||||||
to improve this. The first step is finding a good font and configure
|
When a train drives in a circle the front engine passes through
|
||||||
this in the configuration file. See section 9.0 of readme.txt for
|
wagons of the same train without crashing. This is intentional.
|
||||||
more information. You can also increase the font size to make the
|
Signals are only aware of tracks, they do not consider the train
|
||||||
characters bigger and possible better readable.
|
length and whether there would be enough room for a train in some
|
||||||
|
circle it might drive on. Also the path a train might take is not
|
||||||
|
necessarily known when passing a signal.
|
||||||
|
Checking all circumstances would take a lot of additional
|
||||||
|
computational power for signals, which is not considered worth
|
||||||
|
the effort, as it does not add anything to gameplay.
|
||||||
|
Nevertheless trains shall not crash in normal operation, so making
|
||||||
|
a train not crash with itself is the best solution for everyone.
|
||||||
|
|
||||||
If the problem is with the clarity of the font you might want to
|
Aircraft coming through wall in rotated airports [#4705]:
|
||||||
enable anti-aliasing by setting the small_aa/medium_aa/large_aa
|
With rotated airports, specifically hangars, you will see that the
|
||||||
settings to "true". However, anti-aliasing only works when a 32 bits
|
aircraft will show a part through the back wall of the hangar.
|
||||||
blitter has been selected, e.g. blitter = "32bpp-anim", as with the
|
This can be solved by only drawing a part of the plane when being
|
||||||
8 bits blitter there are not enough colours to properly perform the
|
at the back of the hangar, however then with transparency turned on
|
||||||
anti-aliasing.
|
the aircraft would be shown partially which would be even weirder.
|
||||||
|
As such the current behaviour is deemed the least bad.
|
||||||
|
The same applies to overly long ships and their depots.
|
||||||
|
|
||||||
(Temporary) wrong colours when switching to full screen [FS#4511]:
|
Vehicles not keeping their "maximum" speed [#4815]:
|
||||||
On Windows it can happen that you temporarily see wrong colours
|
Vehicles that have not enough power to reach and maintain their
|
||||||
when switching to full screen OpenTTD, either by starting
|
advertised maximum speed might be constantly jumping between two
|
||||||
OpenTTD in full screen mode, changing to full screen mode or by
|
speeds. This is due to the fact that speed and its calculations
|
||||||
ALT-TAB-ing into a full screen OpenTTD. This is caused by the
|
are done with integral numbers instead of floating point numbers.
|
||||||
fact that OpenTTD, by default, uses 8bpp paletted output. The
|
As a result of this a vehicle will never reach its equilibrium
|
||||||
wrong colours you are seeing is a temporary effect of the video
|
between the drag/friction and propulsion. So in effect it will be
|
||||||
driver switching to 8bpp palette mode.
|
in a vicious circle of speeding up and slowing down due to being
|
||||||
|
just at the other side of the equilibrium.
|
||||||
|
|
||||||
This issue can be worked around in two ways:
|
Not speeding up when near the equilibrium will cause the vehicle to
|
||||||
a) Setting fullscreen_bpp to 32
|
never come in the neighbourhood of the equilibrium and not slowing
|
||||||
b) Setting up the 32bpp-anim or 32bpp-optimized blitter
|
down when near the equilibrium will cause the vehicle to never slow
|
||||||
|
down towards the equilibrium once it has come down a hill.
|
||||||
|
|
||||||
Train does not crash with itself [FS#4635]:
|
It is possible to calculate whether the equilibrium will be passed,
|
||||||
When a train drives in a circle the front engine passes through
|
but then all acceleration calculations need to be done twice.
|
||||||
wagons of the same train without crashing. This is intentional.
|
|
||||||
Signals are only aware of tracks, they do not consider the train
|
|
||||||
length and whether there would be enough room for a train in some
|
|
||||||
circle it might drive on. Also the path a train might take is not
|
|
||||||
necessarily known when passing a signal.
|
|
||||||
Checking all circumstances would take a lot of additional computational
|
|
||||||
power for signals, which is not considered worth the effort, as
|
|
||||||
it does not add anything to gameplay.
|
|
||||||
Nevertheless trains shall not crash in normal operation, so making
|
|
||||||
a train not crash with itself is the best solution for everyone.
|
|
||||||
|
|
||||||
Aircraft coming through wall in rotated airports [FS#4705]:
|
Settings not saved when OpenTTD crashes [#4846]:
|
||||||
With rotated airports, specifically hangars, you will see that the
|
The settings are not saved when OpenTTD crashes for several reasons.
|
||||||
aircraft will show a part through the back wall of the hangar.
|
The most important is that the game state is broken and as such the
|
||||||
This can be solved by only drawing a part of the plane when being
|
settings might contain invalid values, or the settings have not even
|
||||||
at the back of the hangar, however then with transparency turned on
|
been loaded yet. This would cause invalid or totally wrong settings
|
||||||
the aircraft would be shown partially which would be even weirder.
|
to be written to the configuration file.
|
||||||
As such the current behaviour is deemed the least bad.
|
|
||||||
The same applies to overly long ships and their depots.
|
|
||||||
|
|
||||||
Vehicles not keeping their "maximum" speed [FS#4815]:
|
A solution to that would be saving the settings whenever one changes,
|
||||||
Vehicles that have not enough power to reach and maintain their
|
however due to the way the configuration file is saved this requires
|
||||||
advertised maximum speed might be constantly jumping between two
|
a flush of the file to the disk and OpenTTD needs to wait till that
|
||||||
speeds. This is due to the fact that speed and its calculations
|
is finished. On some file system implementations this causes the
|
||||||
are done with integral numbers instead of floating point numbers.
|
flush of all 'write-dirty' caches, which can be a significant amount
|
||||||
As a result of this a vehicle will never reach its equilibrium
|
of data to be written. This can further be aggravated by spinning
|
||||||
between the drag/friction and propulsion. So in effect it will be
|
down disks to conserve power, in which case this disk needs to be
|
||||||
in a vicious circle of speeding up and slowing down due to being
|
spun up first. This means that many seconds may pass before the
|
||||||
just at the other side of the equilibrium.
|
configuration file is actually written, and all that time OpenTTD
|
||||||
|
will not be able to show any progress. Changing the way the
|
||||||
|
configuration file is saved is not an option as that leaves us more
|
||||||
|
vulnerable to corrupt configuration files.
|
||||||
|
|
||||||
Not speeding up when near the equilibrium will cause the vehicle
|
Finally, crashes should not be happening. If they happen they should
|
||||||
to never come in the neighbourhood of the equilibrium and not
|
be reported and fixed, so essentially fixing this is fixing the wrong
|
||||||
slowing down when near the equilibrium will cause the vehicle
|
thing. If you really need the configuration changes to be saved,
|
||||||
to never slow down towards the equilibrium once it has come down
|
and you need to run a version that crashes regularly, then you can
|
||||||
a hill.
|
use the 'saveconfig' command in the console to save the settings.
|
||||||
|
|
||||||
It is possible to calculate whether the equilibrium will be
|
Not all NewGRFs, AIs, game scripts are found [#4887]:
|
||||||
passed, but then all acceleration calculations need to be done
|
Under certain situations, where the path for the content within a
|
||||||
twice.
|
tar file is the same as other content on the file system or in another
|
||||||
|
tar file, it is possible that content is not found. A more thorough
|
||||||
|
explanation and solutions are described in section 4.4 of README.md.
|
||||||
|
|
||||||
Settings not saved when OpenTTD crashes [FS#4846]:
|
Mouse cursor going missing with SDL [#4997]:
|
||||||
The settings are not saved when OpenTTD crashes for several reasons.
|
Under certain circumstances SDL does not notify OpenTTD of changes with
|
||||||
The most important is that the game state is broken and as such the
|
respect to the mouse pointer, specifically whether the mouse pointer
|
||||||
settings might contain invalid values, or the settings have not even
|
is within the bounds of OpenTTD or not. For example, if you "Alt-Tab"
|
||||||
been loaded yet. This would cause invalid or totally wrong settings
|
to another application the mouse cursor will still be shown in OpenTTD,
|
||||||
to be written to the configuration file.
|
and when you move the mouse outside of the OpenTTD window so the cursor
|
||||||
|
gets hidden, open/move another application on top of the OpenTTD window
|
||||||
|
and then Alt-tab back into OpenTTD the cursor will not be shown.
|
||||||
|
|
||||||
A solution to that would be saving the settings whenever one changes,
|
We cannot fix this problem as SDL simply does not provide the required
|
||||||
however due to the way the configuration file is saved this requires
|
information in these corner cases. This is a bug in SDL and as such
|
||||||
a flush of the file to the disk and OpenTTD needs to wait till that
|
there is little that we can do about it.
|
||||||
is finished. On some file system implementations this causes the
|
|
||||||
flush of all 'write-dirty' caches, which can be a significant amount
|
|
||||||
of data to be written. This can further be aggravated by spinning
|
|
||||||
down disks to conserve power, in which case this disk needs to be
|
|
||||||
spun up first. This means that many seconds may pass before the
|
|
||||||
configuration file is actually written, and all that time OpenTTD
|
|
||||||
will not be able to show any progress. Changing the way the
|
|
||||||
configuration file is saved is not an option as that leaves us more
|
|
||||||
vulnerable to corrupt configuration files.
|
|
||||||
|
|
||||||
Finally, crashes should not be happening. If they happen they should
|
Trains might not stop at platforms that are currently being changed [#5553]:
|
||||||
be reported and fixed, so essentially fixing this is fixing the
|
If you add tiles to or remove tiles from a platform while a train is
|
||||||
wrong thing. If you really need the configuration changes to be
|
approaching to stop at the same platform, that train can miss the place
|
||||||
saved, and you need to run a version that crashes regularly, then
|
where it's supposed to stop and pass the station without stopping.
|
||||||
you can use the 'saveconfig' command in the console to save the
|
This is caused by the fact that the train is considered to already
|
||||||
settings.
|
have stopped if it's beyond its assigned stopping location. We can't
|
||||||
|
let the train stop just anywhere in the station because then it would
|
||||||
|
never leave the station if you have the same station in the order
|
||||||
|
list multiple times in a row or if there is only one station
|
||||||
|
in theorder list (see #5684).
|
||||||
|
|
||||||
Not all NewGRFs, AIs, game scripts are found [FS#4887]:
|
Inconsistent catchment areas [#5661]:
|
||||||
Under certain situations, where the path for the content within a
|
Due to performance decisions the catchment area for cargo accepted by a
|
||||||
tar file is the same as other content on the file system or in another
|
station for delivery to houses or industries differs from the catchment
|
||||||
tar file, it is possible that content is not found. A more thorough
|
area for cargo that is delivered to stations from houses or industries.
|
||||||
explanation and solutions are described in section 4.4 of readme.txt.
|
|
||||||
|
|
||||||
Mouse cursor going missing with SDL [FS#4997]:
|
Conceptually they work the same, but the effect in game differs. They
|
||||||
Under certain circumstances SDL does not notify OpenTTD of changes
|
work by finding the closest destination "around" the source which is
|
||||||
with respect to the mouse pointer, specifically whether the mouse
|
within a certain distance. This distance depends on the type of station,
|
||||||
pointer is within the bounds of OpenTTD or not. For example, if you
|
e.g. road stops have a smaller catchment area than large airports.
|
||||||
Alt-tab to another application the mouse cursor will still be shown
|
In both cases the bounding box, the smallest rectangle that contains
|
||||||
in OpenTTD, and when you move the mouse outside of the OpenTTD
|
all tiles of something, is searched for the target of the cargo,
|
||||||
window so the cursor gets hidden, open/move another application on
|
and then spiraling outwards finding the closest tile of the target.
|
||||||
top of the OpenTTD window and then Alt-tab back into OpenTTD the
|
|
||||||
cursor will not be shown.
|
|
||||||
|
|
||||||
We cannot fix this problem as SDL simply does not provide the
|
In the case of a station with two tiles spread far apart with a house
|
||||||
required information in these corner cases. This is a bug in SDL
|
that is within the station's bounding box, it would be possible that
|
||||||
and as such there is little that we can do about it.
|
the spiraling search from the house does not reach one of the station
|
||||||
|
tiles before the search ends, i.e. all tiles within that distance
|
||||||
|
are searched. So the house does not deliver cargo to the station.
|
||||||
|
On the other hand, the station will deliver cargo because the house
|
||||||
|
falls within the bounding box, and thus search area.
|
||||||
|
|
||||||
Inconsistent catchment areas [FS#5661]:
|
It is possible to make these consistent, but then cargo from a house
|
||||||
Due to performance decisions the catchment area for cargo accepted
|
to a station needs to search up to 32 tiles around itself, i.e. 64
|
||||||
by a station for delivery to houses or industries differs from the
|
by 64 tiles, to find all possible stations it could deliver to
|
||||||
catchment area for cargo that is delivered to stations from houses
|
instead of 10 by 10 tiles (40 times more tiles). Alternatively the
|
||||||
or industries.
|
search from a station could be changed to use the actual tiles, but
|
||||||
|
that would require considering checking 10 by 10 tiles for each of
|
||||||
|
the tiles of a station, instead of just once.
|
||||||
|
|
||||||
Conceptually they work the same, but the effect in game differs.
|
Some houses and industries are not affected by transparency [#5817]:
|
||||||
They work by finding the closest destination "around" the source
|
Some of the default houses and industries (f.e. the iron ore mine) are
|
||||||
which is within a certain distance. This distance depends on the
|
not affected by the transparency options. This is because the graphics
|
||||||
type of station, e.g. road stops have a smaller catchment area than
|
do not (completely) separate the ground from the building.
|
||||||
large airports. In both cases the bounding box, the smallest
|
This is a bug of the original graphics, and unfortunately cannot be
|
||||||
rectangle that contains all tiles of something, is searched for the
|
fixed with OpenGFX for the sake of maintaining compatibility with
|
||||||
target of the cargo, and then spiraling outwards finding the closest
|
the original graphics.
|
||||||
tile of the target.
|
|
||||||
|
|
||||||
In the case of a station with two tiles spread far apart with a house
|
Involuntary cargo exchange with cargodist via neutral station [#6114]:
|
||||||
that is within the station's bounding box, it would be possible that
|
When two players serve a neutral station at an industry, a cross-company
|
||||||
the spiraling search from the house does not reach one of the station
|
chain for cargo flow can and will be established which can only be
|
||||||
tiles before the search ends, i.e. all tiles within that distance
|
interrupted if one of the players stops competing for the ressources of
|
||||||
are searched. So the house does not deliver cargo to the station. On
|
that industry. There is an easy fix for this: If you are loading at the
|
||||||
the other hand, the station will deliver cargo because the house
|
shared station make the order "no unload" and if you're unloading make
|
||||||
falls within the bounding box, and thus search area.
|
it "no load". Cargodist will then figure out that it should not create
|
||||||
|
such a route.
|
||||||
It is possible to make these consistent, but then cargo from a house
|
|
||||||
to a station needs to search up to 32 tiles around itself, i.e. 64
|
|
||||||
by 64 tiles, to find all possible stations it could deliver to
|
|
||||||
instead of 10 by 10 tiles (40 times more tiles). Alternatively the
|
|
||||||
search from a station could be changed to use the actual tiles, but
|
|
||||||
that would require considering checking 10 by 10 tiles for each of
|
|
||||||
the tiles of a station, instead of just once.
|
|
||||||
|
|
||||||
Trains might not stop at platforms that are currently being changed [FS#5553]:
|
|
||||||
If you add tiles to or remove tiles from a platform while a train is
|
|
||||||
approaching to stop at the same platform, that train can miss the place
|
|
||||||
where it's supposed to stop and pass the station without stopping. This
|
|
||||||
is caused by the fact that the train is considered to already have stopped
|
|
||||||
if it's beyond its assigned stopping location. We can't let the train stop
|
|
||||||
just anywhere in the station because then it would never leave the station
|
|
||||||
if you have the same station in the order list multiple times in a row or
|
|
||||||
if there is only one station in the order list (see FS#5684).
|
|
||||||
|
|
||||||
Some houses and industries are not affected by transparency [FS#5817]:
|
|
||||||
Some of the default houses and industries (f.e. the iron ore mine) are
|
|
||||||
not affected by the transparency options. This is because the graphics do
|
|
||||||
not (completely) separate the ground from the building.
|
|
||||||
This is a bug of the original graphics, and unfortunately cannot be
|
|
||||||
fixed with OpenGFX for the sake of maintaining compatibility with the
|
|
||||||
original graphics.
|
|
||||||
|
|
||||||
Involuntary cargo exchange with cargodist via neutral station [FS#6114]:
|
|
||||||
When two players serve a neutral station at an industry, a cross-company
|
|
||||||
chain for cargo flow can and will be established which can only be
|
|
||||||
interrupted if one of the players stops competing for the ressources of
|
|
||||||
that industry. There is an easy fix for this: If you are loading at the
|
|
||||||
shared station make the order "no unload" and if you're unloading make
|
|
||||||
it "no load". Cargodist will then figure out that it should not create
|
|
||||||
such a route.
|
|
||||||
|
123
media/baseset/translations.vbs
Normal file
123
media/baseset/translations.vbs
Normal file
@@ -0,0 +1,123 @@
|
|||||||
|
Option Explicit
|
||||||
|
|
||||||
|
' This file is part of OpenTTD.
|
||||||
|
' OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||||
|
' OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
' See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Dim FSO
|
||||||
|
Set FSO = CreateObject("Scripting.FileSystemObject")
|
||||||
|
|
||||||
|
Dim inputfile, outputfile, langpath, extra_grf
|
||||||
|
inputfile = WScript.Arguments(0)
|
||||||
|
outputfile = WScript.Arguments(1)
|
||||||
|
langpath = WScript.Arguments(2)
|
||||||
|
|
||||||
|
If WScript.Arguments.Length > 3 Then
|
||||||
|
extra_grf = WScript.Arguments(3)
|
||||||
|
End If
|
||||||
|
|
||||||
|
Function GetExtraGrfHash
|
||||||
|
Dim WSO, exe, line
|
||||||
|
|
||||||
|
Set WSO = WScript.CreateObject("WScript.Shell")
|
||||||
|
Set exe = WSO.Exec("certutil -hashfile " & extra_grf & " MD5")
|
||||||
|
|
||||||
|
Do Until exe.StdOut.AtEndOfStream
|
||||||
|
line = exe.StdOut.ReadLine
|
||||||
|
If Len(line) = 32 Then GetExtraGrfHash = line
|
||||||
|
Loop
|
||||||
|
|
||||||
|
Set WSO = Nothing
|
||||||
|
End Function
|
||||||
|
|
||||||
|
' Simple insertion sort, copied from translations.awk
|
||||||
|
Sub ISort(a)
|
||||||
|
Dim i, j, n, hold
|
||||||
|
n = UBound(a)
|
||||||
|
|
||||||
|
For i = 1 To n
|
||||||
|
j = i
|
||||||
|
hold = a(j)
|
||||||
|
Do While a(j - 1) > hold
|
||||||
|
j = j - 1
|
||||||
|
a(j + 1) = a(j)
|
||||||
|
|
||||||
|
If j = 0 Then Exit Do
|
||||||
|
Loop
|
||||||
|
a(j) = hold
|
||||||
|
Next
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub Lookup(ini_key, str_id, outfile)
|
||||||
|
Dim folder, file, line, p, lang, i
|
||||||
|
|
||||||
|
' Ensure only complete string matches
|
||||||
|
str_id = str_id & " "
|
||||||
|
|
||||||
|
Set folder = FSO.GetFolder(langpath)
|
||||||
|
|
||||||
|
Dim output()
|
||||||
|
ReDim output(folder.Files.Count)
|
||||||
|
|
||||||
|
For Each file In folder.Files
|
||||||
|
If UCase(FSO.GetExtensionName(file.Name)) = "TXT" Then
|
||||||
|
Dim f
|
||||||
|
Set f = FSO.OpenTextFile(file.Path)
|
||||||
|
|
||||||
|
Do Until f.atEndOfStream
|
||||||
|
line = f.ReadLine()
|
||||||
|
|
||||||
|
If InStr(1, line, "##isocode ") = 1 Then
|
||||||
|
p = Split(line)
|
||||||
|
lang = p(1)
|
||||||
|
ElseIf InStr(1, line, str_id) = 1 Then
|
||||||
|
p = Split(line, ":", 2)
|
||||||
|
If lang = "en_GB" Then
|
||||||
|
output(i) = ini_key & " = " & p(1)
|
||||||
|
Else
|
||||||
|
output(i) = ini_key & "." & lang & " = " & p(1)
|
||||||
|
End If
|
||||||
|
i = i + 1
|
||||||
|
End If
|
||||||
|
|
||||||
|
Loop
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
|
||||||
|
ReDim Preserve output(i - 1)
|
||||||
|
ISort output
|
||||||
|
|
||||||
|
For Each line In output
|
||||||
|
outfile.Write line & vbCrLf
|
||||||
|
Next
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Dim line, p
|
||||||
|
|
||||||
|
Dim infile
|
||||||
|
Set infile = FSO.OpenTextFile(inputfile)
|
||||||
|
|
||||||
|
Dim outfile
|
||||||
|
Set outfile = FSO.CreateTextFile(outputfile, True)
|
||||||
|
|
||||||
|
Do Until infile.atEndOfStream
|
||||||
|
|
||||||
|
line = infile.ReadLine()
|
||||||
|
|
||||||
|
If InStr(1, line, "ORIG_EXTRA.GRF ") = 1 Then
|
||||||
|
p = Split(line, "=")
|
||||||
|
If Trim(p(1)) = "" Then
|
||||||
|
outfile.Write("ORIG_EXTRA.GRF = " & GetExtraGrfHash() & vbCrLf)
|
||||||
|
Else
|
||||||
|
outfile.Write(line & vbCrLf)
|
||||||
|
End If
|
||||||
|
ElseIf InStr(1, line, "!! ") = 1 Then
|
||||||
|
p = Split(line)
|
||||||
|
Lookup p(1), p(2), outfile
|
||||||
|
Else
|
||||||
|
outfile.Write(line & vbCrLf)
|
||||||
|
End If
|
||||||
|
|
||||||
|
Loop
|
@@ -14,6 +14,8 @@
|
|||||||
// allowing it to be used.
|
// allowing it to be used.
|
||||||
//
|
//
|
||||||
|
|
||||||
|
//@@WARNING DISABLE 60
|
||||||
|
|
||||||
//
|
//
|
||||||
// Number of sprites, it is wrong, but GRFcodec automagically gets it right.
|
// Number of sprites, it is wrong, but GRFcodec automagically gets it right.
|
||||||
//
|
//
|
||||||
|
@@ -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 175 // OPENTTD_SPRITE_COUNT
|
-1 * 3 05 15 \b 179 // OPENTTD_SPRITE_COUNT
|
||||||
-1 sprites/openttdgui.png 8bpp 66 8 64 31 -31 7 normal
|
-1 sprites/openttdgui.png 8bpp 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
|
||||||
@@ -183,3 +183,7 @@
|
|||||||
-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
|
-1 sprites/openttdgui.png 8bpp 490 440 20 20 0 0 normal
|
||||||
|
-1 sprites/openttdgui_group_livery.png 8bpp 0 0 20 20 0 0 normal
|
||||||
|
-1 sprites/openttdgui_group_livery.png 8bpp 21 0 20 20 0 0 normal
|
||||||
|
-1 sprites/openttdgui_group_livery.png 8bpp 42 0 20 20 0 0 normal
|
||||||
|
-1 sprites/openttdgui_group_livery.png 8bpp 63 0 20 20 0 0 normal
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
BIN
media/extra_grf/openttdgui_group_livery.png
Normal file
BIN
media/extra_grf/openttdgui_group_livery.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.4 KiB |
@@ -1,3 +1,51 @@
|
|||||||
|
openttd (1.9.0-0) unstable; urgency=low
|
||||||
|
|
||||||
|
* New upstream release 1.9.0
|
||||||
|
|
||||||
|
-- OpenTTD <info@openttd.org> Mon, 01 Apr 2019 00:00:00 +0200
|
||||||
|
|
||||||
|
openttd (1.9.0~RC2-0) unstable; urgency=low
|
||||||
|
|
||||||
|
* New upstream release 1.9.0-RC2
|
||||||
|
|
||||||
|
-- OpenTTD <info@openttd.org> Sun, 24 Mar 2019 23:00:00 +0000
|
||||||
|
|
||||||
|
openttd (1.9.0~RC1-0) unstable; urgency=low
|
||||||
|
|
||||||
|
* New upstream release 1.9.0-RC1
|
||||||
|
|
||||||
|
-- OpenTTD <info@openttd.org> Sun, 3 Mar 2019 23:00:00 +0000
|
||||||
|
|
||||||
|
openttd (1.9.0~beta3-0) unstable; urgency=low
|
||||||
|
|
||||||
|
* New upstream release 1.9.0-beta3
|
||||||
|
|
||||||
|
-- OpenTTD <info@openttd.org> Sun, 24 Feb 2019 23:00:00 +0000
|
||||||
|
|
||||||
|
openttd (1.9.0~beta2-0) unstable; urgency=low
|
||||||
|
|
||||||
|
* New upstream release 1.9.0-beta2
|
||||||
|
|
||||||
|
-- OpenTTD <info@openttd.org> Sat, 09 Feb 2019 23:00:00 +0000
|
||||||
|
|
||||||
|
openttd (1.9.0~beta1-0) unstable; urgency=low
|
||||||
|
|
||||||
|
* New upstream release 1.9.0-beta1
|
||||||
|
|
||||||
|
-- OpenTTD <info@openttd.org> Sat, 09 Feb 2019 16:00:00 +0000
|
||||||
|
|
||||||
|
openttd (1.8.0-0) unstable; urgency=low
|
||||||
|
|
||||||
|
* New upstream release 1.8.0
|
||||||
|
|
||||||
|
-- OpenTTD <info@openttd.org> Sun, 01 Apr 2018 14:00:00 +0200
|
||||||
|
|
||||||
|
openttd (1.8.0~RC1-0) unstable; urgency=low
|
||||||
|
|
||||||
|
* New upstream release 1.8.0-RC1
|
||||||
|
|
||||||
|
-- OpenTTD <info@openttd.org> Wed, 21 Mar 2018 21:00:00 +0100
|
||||||
|
|
||||||
openttd (1.7.2-0) unstable; urgency=low
|
openttd (1.7.2-0) unstable; urgency=low
|
||||||
|
|
||||||
* New upstream release 1.7.2
|
* New upstream release 1.7.2
|
||||||
@@ -1002,4 +1050,3 @@ openttd (0.3.5-1) unstable; urgency=low
|
|||||||
* Initial Release.
|
* Initial Release.
|
||||||
|
|
||||||
-- Matthijs Kooijman <m.kooijman@student.utwente.nl> Fri, 24 Dec 2004 02:58:47 +0100
|
-- Matthijs Kooijman <m.kooijman@student.utwente.nl> Fri, 24 Dec 2004 02:58:47 +0100
|
||||||
|
|
||||||
|
@@ -5,7 +5,7 @@ Source: http://www.openttd.org
|
|||||||
|
|
||||||
|
|
||||||
Files: *
|
Files: *
|
||||||
Copyright: © 2004-2018 Ludvig Strigeous and others.
|
Copyright: © 2004-2019 Ludvig Strigeous and others.
|
||||||
License: GPL-2.0
|
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
|
||||||
|
@@ -1,3 +0,0 @@
|
|||||||
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.
|
|
Binary file not shown.
@@ -1,173 +0,0 @@
|
|||||||
CWSDPMI is Copyright (C) 1995-2000 Charles W Sandmann (sandmann@clio.rice.edu)
|
|
||||||
1206 Braelinn, Sugar Land, TX 77479
|
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
CWSDPMI was written to provide DPMI services for V2 of DJGPP. It currently
|
|
||||||
does not support 16-bit DPMI applications, or DPMI applications requiring a
|
|
||||||
built in extender. It does support virtual memory and hardware interrupt
|
|
||||||
reflection from real mode to protected mode. DJGPP V1.1x and RSX applications
|
|
||||||
will also run using this server, which can be used to provide enhanced control
|
|
||||||
over hardware interrupts. Some DPMI 1.0 extensions (0x506, 0x507, 0x508) have
|
|
||||||
been implemented.
|
|
||||||
|
|
||||||
CWSDPR0.EXE is an alternate version which runs at ring 0 with virtual memory
|
|
||||||
disabled. It may be used if access to ring-0 features are desired. It
|
|
||||||
currently does not switch stacks on HW interrupts, so some DJGPP features
|
|
||||||
such as SIGINT and SIGFPE are not supported and will generate a double fault
|
|
||||||
or stack fault error (to be fixed someday).
|
|
||||||
|
|
||||||
CWSDSTUB.EXE is a stub loader image for DJGPP which includes CWSDPMI. This
|
|
||||||
allows single executable image distributions. You can use the EXE2COFF
|
|
||||||
program and COPY /B CWSDSTUB.EXE+yourimage yourimage.exe to create a
|
|
||||||
standalone executable image.
|
|
||||||
|
|
||||||
Some of the internal tuning and configuration parameters may be modified
|
|
||||||
in the image using CWSPARAM.EXE (see CWSPARAM.DOC).
|
|
||||||
|
|
||||||
If you want to use CWSDPMI with DJGPP, you expand the distribution into the
|
|
||||||
DJGPP directory tree. CWSDPMI.EXE will be put in the BIN directory with your
|
|
||||||
DJGPP images and it will automatically be loaded when they run.
|
|
||||||
|
|
||||||
Directions for use (server can be used in either of two different ways):
|
|
||||||
|
|
||||||
1) "cwsdpmi" alone with no parameters will terminate and stay resident
|
|
||||||
FOR A SINGLE DPMI PROCESS. This means it unloads itself when your
|
|
||||||
DPMI application exits. This mode is useful in software which needs
|
|
||||||
DPMI services, since CWSDPMI can be exec'ed and then will unload on exit.
|
|
||||||
|
|
||||||
2) "cwsdpmi -p" will terminate and stay resident until you remove it.
|
|
||||||
It can be loaded into UMBs with LH. "cwsdpmi -u" will unload the TSR.
|
|
||||||
|
|
||||||
3) The file used for virtual memory swapping, if desired, is controlled
|
|
||||||
by the "-sc:\cwsdpmi.swp" syntax on the command line. You must specify
|
|
||||||
either a file with full disk/directory syntax, or "-s-" which disables
|
|
||||||
virtual memory.
|
|
||||||
|
|
||||||
4) The default swap file name is c:\cwsdpmi.swp, but this can be changed
|
|
||||||
with the CWSPARAM image, as can some other parameters.
|
|
||||||
|
|
||||||
5) You can disable the DPMI 1.0 extensions by starting the image with the
|
|
||||||
"cwsdpmi -x" syntax. This feature allows you to run programs developed
|
|
||||||
under other DPMI providers which do not behave properly with these
|
|
||||||
extensions enabled (typically use of NULL pointers).
|
|
||||||
|
|
||||||
I would like to give special thanks to DJ Delorie who wrote the original
|
|
||||||
GO32 code on which CWSDPMI is based. Morten Welinder also provided and
|
|
||||||
improved much of the code in this program.
|
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
This section contains a list of the error messages you might see out of
|
|
||||||
CWSDPMI and some details on what they mean.
|
|
||||||
|
|
||||||
Exceptions are only handled by CWSDPMI if the application does not establish
|
|
||||||
an exception handler, exceptions nest 5 deep, or the error is particularly bad:
|
|
||||||
|
|
||||||
"Page fault" -
|
|
||||||
1) an illegal page fault happens in a RMCB or HW interrupt, (lock all pages!)
|
|
||||||
2) all available pages have been locked,
|
|
||||||
3) the application is using non-committed pages for null pointer protection.
|
|
||||||
"Double Fault" - multiple exceptions occurred
|
|
||||||
"Invalid TSS" - typically due to RMCB or HW interrupt being called after the
|
|
||||||
selectors/memory have been deallocated (remember to reset the mouse)
|
|
||||||
"General Protection Fault" - bad parameter sent to a DPMI call
|
|
||||||
|
|
||||||
"80386 required."
|
|
||||||
|
|
||||||
Since 80286 and lesser processors don't have the hardware necessary to
|
|
||||||
run CWSDPMI. No workaround, upgrade.
|
|
||||||
|
|
||||||
"DOS 3 required."
|
|
||||||
|
|
||||||
A few interrupts are used which need DOS 3.0 or higher. I don't expect to
|
|
||||||
ever see this message, since 80386 machines were introduced after DOS 3.0
|
|
||||||
and that check is made first.
|
|
||||||
|
|
||||||
"CWSDPMI V0.90+ (r5) Copyright (C) 2000 CW Sandmann ABSOLUTELY NO WARRANTY"
|
|
||||||
|
|
||||||
An informational message displayed if the program is not run in one-pass mode.
|
|
||||||
|
|
||||||
"Protected mode not accessible."
|
|
||||||
|
|
||||||
This message should only be displayed if running CWSDPMI in a protected
|
|
||||||
environment with no access to protected mode. In this case, DPMI should
|
|
||||||
already be available and CWSDPMI would not be needed. This might happen if
|
|
||||||
a 16-bit DPMI client is loaded and a DJGPP image attempts to load CWSDPMI
|
|
||||||
to provide 32-bit DPMI services under Windows.
|
|
||||||
|
|
||||||
"Warning: cannot open swap file c:\cwsdpmi.swp"
|
|
||||||
|
|
||||||
Maybe you are out of file handles, or the swap file name is incorrectly
|
|
||||||
specified in the image (change the name with cwsparam).
|
|
||||||
|
|
||||||
"No swap space!"
|
|
||||||
|
|
||||||
This message means you tried to use more paging file than CWSDPMI was
|
|
||||||
configured to handle. Since this is protected against in the memory
|
|
||||||
allocation code, you should never see this message.
|
|
||||||
|
|
||||||
"Swap disk full!"
|
|
||||||
|
|
||||||
This means the paging file could not be expanded when trying to page
|
|
||||||
memory out to disk. This would normally not be seen, unless you are
|
|
||||||
writing output to the same disk which holds the paging file. Decrease
|
|
||||||
the amount of memory your DPMI application is using or free up disk space.
|
|
||||||
|
|
||||||
"Interrupt 0x??"
|
|
||||||
|
|
||||||
Your application tried to call an interrupt from protected mode which
|
|
||||||
normally shouldn't be called (something like a data pointer). If the
|
|
||||||
request was allowed to continue it would likely hang your machine. If you
|
|
||||||
see this message and think the interrupt should be allowed to continue, let
|
|
||||||
me know.
|
|
||||||
|
|
||||||
"Error: Using XMS switched CPU into V86 mode."
|
|
||||||
|
|
||||||
This message might be seen if you have your memory manager in AUTO mode. The
|
|
||||||
only workaround in this case is to stop using AUTO mode.
|
|
||||||
|
|
||||||
"Error: could not allocate page table memory"
|
|
||||||
|
|
||||||
The page table memory (a minimum of 16Kb) is allocated from conventional
|
|
||||||
memory (either in the 640Kb region or UMBs). If CWSDPMI cannot allocate the
|
|
||||||
minimum necessary memory, you would see this message. Free up some
|
|
||||||
conventional memory. You may also see this message if a page directory needs
|
|
||||||
to be faulted in, and there are no available pages. This means too many pages
|
|
||||||
have been locked for the allocated page tables available. While CWSDPMI
|
|
||||||
tries to dynamically allocate these if needed, this effort failed. You need
|
|
||||||
to increase the number of page tables with CWSPARAM, or increase the amount
|
|
||||||
of free conventional memory if it is low. If the application which calls
|
|
||||||
CWSDPMI internally manages all the DOS memory, the page tables may need to
|
|
||||||
be pre-allocated at DPMI startup time (if this is needed, try using the
|
|
||||||
run option flag 2 in cwsparam).
|
|
||||||
|
|
||||||
"16-bit DPMI unsupported."
|
|
||||||
|
|
||||||
CWSDPMI is a 32-bit only DPMI server. Ideally, on the request to enter DPMI's
|
|
||||||
PM with a 16-bit request, we would just fail the call setting the carry bit
|
|
||||||
like the DPMI specification describes. Some buggy 16-bit compiler tools don't
|
|
||||||
check the return status and will hang the machine in this case. So, I issue
|
|
||||||
an error message and exit the image instead.
|
|
||||||
|
|
||||||
"Descriptors exhausted."
|
|
||||||
|
|
||||||
An attempt to nest a DPMI client failed in the setup phase due to insufficient
|
|
||||||
free selectors in the LDT.
|
|
||||||
|
|
||||||
"CWSDPMI not removed"
|
|
||||||
|
|
||||||
When the -u parameter is specified, if DPMI is not detected this message is
|
|
||||||
printed. Informational.
|
|
Binary file not shown.
@@ -1,3 +0,0 @@
|
|||||||
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.
|
|
@@ -1,339 +0,0 @@
|
|||||||
GNU GENERAL PUBLIC LICENSE
|
|
||||||
Version 2, June 1991
|
|
||||||
|
|
||||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
|
||||||
675 Mass Ave, Cambridge, MA 02139, USA
|
|
||||||
Everyone is permitted to copy and distribute verbatim copies
|
|
||||||
of this license document, but changing it is not allowed.
|
|
||||||
|
|
||||||
Preamble
|
|
||||||
|
|
||||||
The licenses for most software are designed to take away your
|
|
||||||
freedom to share and change it. By contrast, the GNU General Public
|
|
||||||
License is intended to guarantee your freedom to share and change free
|
|
||||||
software--to make sure the software is free for all its users. This
|
|
||||||
General Public License applies to most of the Free Software
|
|
||||||
Foundation's software and to any other program whose authors commit to
|
|
||||||
using it. (Some other Free Software Foundation software is covered by
|
|
||||||
the GNU Library General Public License instead.) You can apply it to
|
|
||||||
your programs, too.
|
|
||||||
|
|
||||||
When we speak of free software, we are referring to freedom, not
|
|
||||||
price. Our General Public Licenses are designed to make sure that you
|
|
||||||
have the freedom to distribute copies of free software (and charge for
|
|
||||||
this service if you wish), that you receive source code or can get it
|
|
||||||
if you want it, that you can change the software or use pieces of it
|
|
||||||
in new free programs; and that you know you can do these things.
|
|
||||||
|
|
||||||
To protect your rights, we need to make restrictions that forbid
|
|
||||||
anyone to deny you these rights or to ask you to surrender the rights.
|
|
||||||
These restrictions translate to certain responsibilities for you if you
|
|
||||||
distribute copies of the software, or if you modify it.
|
|
||||||
|
|
||||||
For example, if you distribute copies of such a program, whether
|
|
||||||
gratis or for a fee, you must give the recipients all the rights that
|
|
||||||
you have. You must make sure that they, too, receive or can get the
|
|
||||||
source code. And you must show them these terms so they know their
|
|
||||||
rights.
|
|
||||||
|
|
||||||
We protect your rights with two steps: (1) copyright the software, and
|
|
||||||
(2) offer you this license which gives you legal permission to copy,
|
|
||||||
distribute and/or modify the software.
|
|
||||||
|
|
||||||
Also, for each author's protection and ours, we want to make certain
|
|
||||||
that everyone understands that there is no warranty for this free
|
|
||||||
software. If the software is modified by someone else and passed on, we
|
|
||||||
want its recipients to know that what they have is not the original, so
|
|
||||||
that any problems introduced by others will not reflect on the original
|
|
||||||
authors' reputations.
|
|
||||||
|
|
||||||
Finally, any free program is threatened constantly by software
|
|
||||||
patents. We wish to avoid the danger that redistributors of a free
|
|
||||||
program will individually obtain patent licenses, in effect making the
|
|
||||||
program proprietary. To prevent this, we have made it clear that any
|
|
||||||
patent must be licensed for everyone's free use or not licensed at all.
|
|
||||||
|
|
||||||
The precise terms and conditions for copying, distribution and
|
|
||||||
modification follow.
|
|
||||||
|
|
||||||
GNU GENERAL PUBLIC LICENSE
|
|
||||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
|
||||||
|
|
||||||
0. This License applies to any program or other work which contains
|
|
||||||
a notice placed by the copyright holder saying it may be distributed
|
|
||||||
under the terms of this General Public License. The "Program", below,
|
|
||||||
refers to any such program or work, and a "work based on the Program"
|
|
||||||
means either the Program or any derivative work under copyright law:
|
|
||||||
that is to say, a work containing the Program or a portion of it,
|
|
||||||
either verbatim or with modifications and/or translated into another
|
|
||||||
language. (Hereinafter, translation is included without limitation in
|
|
||||||
the term "modification".) Each licensee is addressed as "you".
|
|
||||||
|
|
||||||
Activities other than copying, distribution and modification are not
|
|
||||||
covered by this License; they are outside its scope. The act of
|
|
||||||
running the Program is not restricted, and the output from the Program
|
|
||||||
is covered only if its contents constitute a work based on the
|
|
||||||
Program (independent of having been made by running the Program).
|
|
||||||
Whether that is true depends on what the Program does.
|
|
||||||
|
|
||||||
1. You may copy and distribute verbatim copies of the Program's
|
|
||||||
source code as you receive it, in any medium, provided that you
|
|
||||||
conspicuously and appropriately publish on each copy an appropriate
|
|
||||||
copyright notice and disclaimer of warranty; keep intact all the
|
|
||||||
notices that refer to this License and to the absence of any warranty;
|
|
||||||
and give any other recipients of the Program a copy of this License
|
|
||||||
along with the Program.
|
|
||||||
|
|
||||||
You may charge a fee for the physical act of transferring a copy, and
|
|
||||||
you may at your option offer warranty protection in exchange for a fee.
|
|
||||||
|
|
||||||
2. You may modify your copy or copies of the Program or any portion
|
|
||||||
of it, thus forming a work based on the Program, and copy and
|
|
||||||
distribute such modifications or work under the terms of Section 1
|
|
||||||
above, provided that you also meet all of these conditions:
|
|
||||||
|
|
||||||
a) You must cause the modified files to carry prominent notices
|
|
||||||
stating that you changed the files and the date of any change.
|
|
||||||
|
|
||||||
b) You must cause any work that you distribute or publish, that in
|
|
||||||
whole or in part contains or is derived from the Program or any
|
|
||||||
part thereof, to be licensed as a whole at no charge to all third
|
|
||||||
parties under the terms of this License.
|
|
||||||
|
|
||||||
c) If the modified program normally reads commands interactively
|
|
||||||
when run, you must cause it, when started running for such
|
|
||||||
interactive use in the most ordinary way, to print or display an
|
|
||||||
announcement including an appropriate copyright notice and a
|
|
||||||
notice that there is no warranty (or else, saying that you provide
|
|
||||||
a warranty) and that users may redistribute the program under
|
|
||||||
these conditions, and telling the user how to view a copy of this
|
|
||||||
License. (Exception: if the Program itself is interactive but
|
|
||||||
does not normally print such an announcement, your work based on
|
|
||||||
the Program is not required to print an announcement.)
|
|
||||||
|
|
||||||
These requirements apply to the modified work as a whole. If
|
|
||||||
identifiable sections of that work are not derived from the Program,
|
|
||||||
and can be reasonably considered independent and separate works in
|
|
||||||
themselves, then this License, and its terms, do not apply to those
|
|
||||||
sections when you distribute them as separate works. But when you
|
|
||||||
distribute the same sections as part of a whole which is a work based
|
|
||||||
on the Program, the distribution of the whole must be on the terms of
|
|
||||||
this License, whose permissions for other licensees extend to the
|
|
||||||
entire whole, and thus to each and every part regardless of who wrote it.
|
|
||||||
|
|
||||||
Thus, it is not the intent of this section to claim rights or contest
|
|
||||||
your rights to work written entirely by you; rather, the intent is to
|
|
||||||
exercise the right to control the distribution of derivative or
|
|
||||||
collective works based on the Program.
|
|
||||||
|
|
||||||
In addition, mere aggregation of another work not based on the Program
|
|
||||||
with the Program (or with a work based on the Program) on a volume of
|
|
||||||
a storage or distribution medium does not bring the other work under
|
|
||||||
the scope of this License.
|
|
||||||
|
|
||||||
3. You may copy and distribute the Program (or a work based on it,
|
|
||||||
under Section 2) in object code or executable form under the terms of
|
|
||||||
Sections 1 and 2 above provided that you also do one of the following:
|
|
||||||
|
|
||||||
a) Accompany it with the complete corresponding machine-readable
|
|
||||||
source code, which must be distributed under the terms of Sections
|
|
||||||
1 and 2 above on a medium customarily used for software interchange; or,
|
|
||||||
|
|
||||||
b) Accompany it with a written offer, valid for at least three
|
|
||||||
years, to give any third party, for a charge no more than your
|
|
||||||
cost of physically performing source distribution, a complete
|
|
||||||
machine-readable copy of the corresponding source code, to be
|
|
||||||
distributed under the terms of Sections 1 and 2 above on a medium
|
|
||||||
customarily used for software interchange; or,
|
|
||||||
|
|
||||||
c) Accompany it with the information you received as to the offer
|
|
||||||
to distribute corresponding source code. (This alternative is
|
|
||||||
allowed only for noncommercial distribution and only if you
|
|
||||||
received the program in object code or executable form with such
|
|
||||||
an offer, in accord with Subsection b above.)
|
|
||||||
|
|
||||||
The source code for a work means the preferred form of the work for
|
|
||||||
making modifications to it. For an executable work, complete source
|
|
||||||
code means all the source code for all modules it contains, plus any
|
|
||||||
associated interface definition files, plus the scripts used to
|
|
||||||
control compilation and installation of the executable. However, as a
|
|
||||||
special exception, the source code distributed need not include
|
|
||||||
anything that is normally distributed (in either source or binary
|
|
||||||
form) with the major components (compiler, kernel, and so on) of the
|
|
||||||
operating system on which the executable runs, unless that component
|
|
||||||
itself accompanies the executable.
|
|
||||||
|
|
||||||
If distribution of executable or object code is made by offering
|
|
||||||
access to copy from a designated place, then offering equivalent
|
|
||||||
access to copy the source code from the same place counts as
|
|
||||||
distribution of the source code, even though third parties are not
|
|
||||||
compelled to copy the source along with the object code.
|
|
||||||
|
|
||||||
4. You may not copy, modify, sublicense, or distribute the Program
|
|
||||||
except as expressly provided under this License. Any attempt
|
|
||||||
otherwise to copy, modify, sublicense or distribute the Program is
|
|
||||||
void, and will automatically terminate your rights under this License.
|
|
||||||
However, parties who have received copies, or rights, from you under
|
|
||||||
this License will not have their licenses terminated so long as such
|
|
||||||
parties remain in full compliance.
|
|
||||||
|
|
||||||
5. You are not required to accept this License, since you have not
|
|
||||||
signed it. However, nothing else grants you permission to modify or
|
|
||||||
distribute the Program or its derivative works. These actions are
|
|
||||||
prohibited by law if you do not accept this License. Therefore, by
|
|
||||||
modifying or distributing the Program (or any work based on the
|
|
||||||
Program), you indicate your acceptance of this License to do so, and
|
|
||||||
all its terms and conditions for copying, distributing or modifying
|
|
||||||
the Program or works based on it.
|
|
||||||
|
|
||||||
6. Each time you redistribute the Program (or any work based on the
|
|
||||||
Program), the recipient automatically receives a license from the
|
|
||||||
original licensor to copy, distribute or modify the Program subject to
|
|
||||||
these terms and conditions. You may not impose any further
|
|
||||||
restrictions on the recipients' exercise of the rights granted herein.
|
|
||||||
You are not responsible for enforcing compliance by third parties to
|
|
||||||
this License.
|
|
||||||
|
|
||||||
7. If, as a consequence of a court judgment or allegation of patent
|
|
||||||
infringement or for any other reason (not limited to patent issues),
|
|
||||||
conditions are imposed on you (whether by court order, agreement or
|
|
||||||
otherwise) that contradict the conditions of this License, they do not
|
|
||||||
excuse you from the conditions of this License. If you cannot
|
|
||||||
distribute so as to satisfy simultaneously your obligations under this
|
|
||||||
License and any other pertinent obligations, then as a consequence you
|
|
||||||
may not distribute the Program at all. For example, if a patent
|
|
||||||
license would not permit royalty-free redistribution of the Program by
|
|
||||||
all those who receive copies directly or indirectly through you, then
|
|
||||||
the only way you could satisfy both it and this License would be to
|
|
||||||
refrain entirely from distribution of the Program.
|
|
||||||
|
|
||||||
If any portion of this section is held invalid or unenforceable under
|
|
||||||
any particular circumstance, the balance of the section is intended to
|
|
||||||
apply and the section as a whole is intended to apply in other
|
|
||||||
circumstances.
|
|
||||||
|
|
||||||
It is not the purpose of this section to induce you to infringe any
|
|
||||||
patents or other property right claims or to contest validity of any
|
|
||||||
such claims; this section has the sole purpose of protecting the
|
|
||||||
integrity of the free software distribution system, which is
|
|
||||||
implemented by public license practices. Many people have made
|
|
||||||
generous contributions to the wide range of software distributed
|
|
||||||
through that system in reliance on consistent application of that
|
|
||||||
system; it is up to the author/donor to decide if he or she is willing
|
|
||||||
to distribute software through any other system and a licensee cannot
|
|
||||||
impose that choice.
|
|
||||||
|
|
||||||
This section is intended to make thoroughly clear what is believed to
|
|
||||||
be a consequence of the rest of this License.
|
|
||||||
|
|
||||||
8. If the distribution and/or use of the Program is restricted in
|
|
||||||
certain countries either by patents or by copyrighted interfaces, the
|
|
||||||
original copyright holder who places the Program under this License
|
|
||||||
may add an explicit geographical distribution limitation excluding
|
|
||||||
those countries, so that distribution is permitted only in or among
|
|
||||||
countries not thus excluded. In such case, this License incorporates
|
|
||||||
the limitation as if written in the body of this License.
|
|
||||||
|
|
||||||
9. The Free Software Foundation may publish revised and/or new versions
|
|
||||||
of the General Public License from time to time. Such new versions will
|
|
||||||
be similar in spirit to the present version, but may differ in detail to
|
|
||||||
address new problems or concerns.
|
|
||||||
|
|
||||||
Each version is given a distinguishing version number. If the Program
|
|
||||||
specifies a version number of this License which applies to it and "any
|
|
||||||
later version", you have the option of following the terms and conditions
|
|
||||||
either of that version or of any later version published by the Free
|
|
||||||
Software Foundation. If the Program does not specify a version number of
|
|
||||||
this License, you may choose any version ever published by the Free Software
|
|
||||||
Foundation.
|
|
||||||
|
|
||||||
10. If you wish to incorporate parts of the Program into other free
|
|
||||||
programs whose distribution conditions are different, write to the author
|
|
||||||
to ask for permission. For software which is copyrighted by the Free
|
|
||||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
|
||||||
make exceptions for this. Our decision will be guided by the two goals
|
|
||||||
of preserving the free status of all derivatives of our free software and
|
|
||||||
of promoting the sharing and reuse of software generally.
|
|
||||||
|
|
||||||
NO WARRANTY
|
|
||||||
|
|
||||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
|
||||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
|
||||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
|
||||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
|
||||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
||||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
|
||||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
|
||||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
|
||||||
REPAIR OR CORRECTION.
|
|
||||||
|
|
||||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
|
||||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
|
||||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
|
||||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
|
||||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
|
||||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
|
||||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
|
||||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
|
||||||
POSSIBILITY OF SUCH DAMAGES.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
Appendix: How to Apply These Terms to Your New Programs
|
|
||||||
|
|
||||||
If you develop a new program, and you want it to be of the greatest
|
|
||||||
possible use to the public, the best way to achieve this is to make it
|
|
||||||
free software which everyone can redistribute and change under these terms.
|
|
||||||
|
|
||||||
To do so, attach the following notices to the program. It is safest
|
|
||||||
to attach them to the start of each source file to most effectively
|
|
||||||
convey the exclusion of warranty; and each file should have at least
|
|
||||||
the "copyright" line and a pointer to where the full notice is found.
|
|
||||||
|
|
||||||
<one line to give the program's name and a brief idea of what it does.>
|
|
||||||
Copyright (C) 19yy <name of author>
|
|
||||||
|
|
||||||
This program 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; either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program 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 this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
|
|
||||||
Also add information on how to contact you by electronic and paper mail.
|
|
||||||
|
|
||||||
If the program is interactive, make it output a short notice like this
|
|
||||||
when it starts in an interactive mode:
|
|
||||||
|
|
||||||
Gnomovision version 69, Copyright (C) 19yy name of author
|
|
||||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
|
||||||
This is free software, and you are welcome to redistribute it
|
|
||||||
under certain conditions; type `show c' for details.
|
|
||||||
|
|
||||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
|
||||||
parts of the General Public License. Of course, the commands you use may
|
|
||||||
be called something other than `show w' and `show c'; they could even be
|
|
||||||
mouse-clicks or menu items--whatever suits your program.
|
|
||||||
|
|
||||||
You should also get your employer (if you work as a programmer) or your
|
|
||||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
|
||||||
necessary. Here is a sample; alter the names:
|
|
||||||
|
|
||||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
|
||||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
|
||||||
|
|
||||||
<signature of Ty Coon>, 1 April 1989
|
|
||||||
Ty Coon, President of Vice
|
|
||||||
|
|
||||||
This General Public License does not permit incorporating your program into
|
|
||||||
proprietary programs. If your program is a subroutine library, you may
|
|
||||||
consider it more useful to permit linking proprietary applications with the
|
|
||||||
library. If this is what you want to do, use the GNU Library General
|
|
||||||
Public License instead of this License.
|
|
@@ -1,48 +0,0 @@
|
|||||||
This is the file "copying.dj". It does NOT apply to any sources or
|
|
||||||
binaries copyrighted by UCB Berkeley, the Free Software Foundation, or
|
|
||||||
any other agency besides DJ Delorie and others who have agreed to
|
|
||||||
allow their sources to be distributed under these terms.
|
|
||||||
|
|
||||||
Copyright Information for sources and executables that are marked
|
|
||||||
Copyright (C) DJ Delorie
|
|
||||||
7 Kim Lane
|
|
||||||
Rochester NH 03867-2954
|
|
||||||
|
|
||||||
This document is Copyright (C) DJ Delorie and may be distributed
|
|
||||||
verbatim, but changing it is not allowed.
|
|
||||||
|
|
||||||
Source code copyright DJ Delorie is distributed under the terms of the
|
|
||||||
GNU General Public Licence, with the following exceptions:
|
|
||||||
|
|
||||||
* Sources used to build crt0.o, gcrt0.o, libc.a, libdbg.a, and
|
|
||||||
libemu.a are distributed under the terms of the GNU Library General
|
|
||||||
Public License, rather than the GNU GPL.
|
|
||||||
|
|
||||||
* Any existing copyright or authorship information in any given source
|
|
||||||
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.
|
|
||||||
|
|
||||||
* Runtime binaries, as provided by DJ in DJGPP, may be distributed
|
|
||||||
without sources ONLY if the recipient is given sufficient information
|
|
||||||
to obtain a copy of djgpp themselves. This primarily applies to
|
|
||||||
go32-v2.exe, emu387.dxe, and stubedit.exe.
|
|
||||||
|
|
||||||
* 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.
|
|
||||||
|
|
||||||
-----
|
|
||||||
|
|
||||||
Changes to source code copyright BSD, FSF, or others, by DJ Delorie
|
|
||||||
fall under the terms of the original copyright. Such files usually
|
|
||||||
have multiple copyright notices in them.
|
|
||||||
|
|
||||||
A copy of the files "COPYING" and "COPYING.LIB" are included with this
|
|
||||||
document. If you did not receive a copy of these files, you may
|
|
||||||
obtain one from whence this document was obtained, or by writing:
|
|
||||||
|
|
||||||
Free Software Foundation
|
|
||||||
59 Temple Place - Suite 330
|
|
||||||
Boston, MA 02111-1307
|
|
||||||
USA
|
|
@@ -1,481 +0,0 @@
|
|||||||
GNU LIBRARY GENERAL PUBLIC LICENSE
|
|
||||||
Version 2, June 1991
|
|
||||||
|
|
||||||
Copyright (C) 1991 Free Software Foundation, Inc.
|
|
||||||
675 Mass Ave, Cambridge, MA 02139, USA
|
|
||||||
Everyone is permitted to copy and distribute verbatim copies
|
|
||||||
of this license document, but changing it is not allowed.
|
|
||||||
|
|
||||||
[This is the first released version of the library GPL. It is
|
|
||||||
numbered 2 because it goes with version 2 of the ordinary GPL.]
|
|
||||||
|
|
||||||
Preamble
|
|
||||||
|
|
||||||
The licenses for most software are designed to take away your
|
|
||||||
freedom to share and change it. By contrast, the GNU General Public
|
|
||||||
Licenses are intended to guarantee your freedom to share and change
|
|
||||||
free software--to make sure the software is free for all its users.
|
|
||||||
|
|
||||||
This license, the Library General Public License, applies to some
|
|
||||||
specially designated Free Software Foundation software, and to any
|
|
||||||
other libraries whose authors decide to use it. You can use it for
|
|
||||||
your libraries, too.
|
|
||||||
|
|
||||||
When we speak of free software, we are referring to freedom, not
|
|
||||||
price. Our General Public Licenses are designed to make sure that you
|
|
||||||
have the freedom to distribute copies of free software (and charge for
|
|
||||||
this service if you wish), that you receive source code or can get it
|
|
||||||
if you want it, that you can change the software or use pieces of it
|
|
||||||
in new free programs; and that you know you can do these things.
|
|
||||||
|
|
||||||
To protect your rights, we need to make restrictions that forbid
|
|
||||||
anyone to deny you these rights or to ask you to surrender the rights.
|
|
||||||
These restrictions translate to certain responsibilities for you if
|
|
||||||
you distribute copies of the library, or if you modify it.
|
|
||||||
|
|
||||||
For example, if you distribute copies of the library, whether gratis
|
|
||||||
or for a fee, you must give the recipients all the rights that we gave
|
|
||||||
you. You must make sure that they, too, receive or can get the source
|
|
||||||
code. If you link a program with the library, you must provide
|
|
||||||
complete object files to the recipients so that they can relink them
|
|
||||||
with the library, after making changes to the library and recompiling
|
|
||||||
it. And you must show them these terms so they know their rights.
|
|
||||||
|
|
||||||
Our method of protecting your rights has two steps: (1) copyright
|
|
||||||
the library, and (2) offer you this license which gives you legal
|
|
||||||
permission to copy, distribute and/or modify the library.
|
|
||||||
|
|
||||||
Also, for each distributor's protection, we want to make certain
|
|
||||||
that everyone understands that there is no warranty for this free
|
|
||||||
library. If the library is modified by someone else and passed on, we
|
|
||||||
want its recipients to know that what they have is not the original
|
|
||||||
version, so that any problems introduced by others will not reflect on
|
|
||||||
the original authors' reputations.
|
|
||||||
|
|
||||||
Finally, any free program is threatened constantly by software
|
|
||||||
patents. We wish to avoid the danger that companies distributing free
|
|
||||||
software will individually obtain patent licenses, thus in effect
|
|
||||||
transforming the program into proprietary software. To prevent this,
|
|
||||||
we have made it clear that any patent must be licensed for everyone's
|
|
||||||
free use or not licensed at all.
|
|
||||||
|
|
||||||
Most GNU software, including some libraries, is covered by the ordinary
|
|
||||||
GNU General Public License, which was designed for utility programs. This
|
|
||||||
license, the GNU Library General Public License, applies to certain
|
|
||||||
designated libraries. This license is quite different from the ordinary
|
|
||||||
one; be sure to read it in full, and don't assume that anything in it is
|
|
||||||
the same as in the ordinary license.
|
|
||||||
|
|
||||||
The reason we have a separate public license for some libraries is that
|
|
||||||
they blur the distinction we usually make between modifying or adding to a
|
|
||||||
program and simply using it. Linking a program with a library, without
|
|
||||||
changing the library, is in some sense simply using the library, and is
|
|
||||||
analogous to running a utility program or application program. However, in
|
|
||||||
a textual and legal sense, the linked executable is a combined work, a
|
|
||||||
derivative of the original library, and the ordinary General Public License
|
|
||||||
treats it as such.
|
|
||||||
|
|
||||||
Because of this blurred distinction, using the ordinary General
|
|
||||||
Public License for libraries did not effectively promote software
|
|
||||||
sharing, because most developers did not use the libraries. We
|
|
||||||
concluded that weaker conditions might promote sharing better.
|
|
||||||
|
|
||||||
However, unrestricted linking of non-free programs would deprive the
|
|
||||||
users of those programs of all benefit from the free status of the
|
|
||||||
libraries themselves. This Library General Public License is intended to
|
|
||||||
permit developers of non-free programs to use free libraries, while
|
|
||||||
preserving your freedom as a user of such programs to change the free
|
|
||||||
libraries that are incorporated in them. (We have not seen how to achieve
|
|
||||||
this as regards changes in header files, but we have achieved it as regards
|
|
||||||
changes in the actual functions of the Library.) The hope is that this
|
|
||||||
will lead to faster development of free libraries.
|
|
||||||
|
|
||||||
The precise terms and conditions for copying, distribution and
|
|
||||||
modification follow. Pay close attention to the difference between a
|
|
||||||
"work based on the library" and a "work that uses the library". The
|
|
||||||
former contains code derived from the library, while the latter only
|
|
||||||
works together with the library.
|
|
||||||
|
|
||||||
Note that it is possible for a library to be covered by the ordinary
|
|
||||||
General Public License rather than by this special one.
|
|
||||||
|
|
||||||
GNU LIBRARY GENERAL PUBLIC LICENSE
|
|
||||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
|
||||||
|
|
||||||
0. This License Agreement applies to any software library which
|
|
||||||
contains a notice placed by the copyright holder or other authorized
|
|
||||||
party saying it may be distributed under the terms of this Library
|
|
||||||
General Public License (also called "this License"). Each licensee is
|
|
||||||
addressed as "you".
|
|
||||||
|
|
||||||
A "library" means a collection of software functions and/or data
|
|
||||||
prepared so as to be conveniently linked with application programs
|
|
||||||
(which use some of those functions and data) to form executables.
|
|
||||||
|
|
||||||
The "Library", below, refers to any such software library or work
|
|
||||||
which has been distributed under these terms. A "work based on the
|
|
||||||
Library" means either the Library or any derivative work under
|
|
||||||
copyright law: that is to say, a work containing the Library or a
|
|
||||||
portion of it, either verbatim or with modifications and/or translated
|
|
||||||
straightforwardly into another language. (Hereinafter, translation is
|
|
||||||
included without limitation in the term "modification".)
|
|
||||||
|
|
||||||
"Source code" for a work means the preferred form of the work for
|
|
||||||
making modifications to it. For a library, complete source code means
|
|
||||||
all the source code for all modules it contains, plus any associated
|
|
||||||
interface definition files, plus the scripts used to control compilation
|
|
||||||
and installation of the library.
|
|
||||||
|
|
||||||
Activities other than copying, distribution and modification are not
|
|
||||||
covered by this License; they are outside its scope. The act of
|
|
||||||
running a program using the Library is not restricted, and output from
|
|
||||||
such a program is covered only if its contents constitute a work based
|
|
||||||
on the Library (independent of the use of the Library in a tool for
|
|
||||||
writing it). Whether that is true depends on what the Library does
|
|
||||||
and what the program that uses the Library does.
|
|
||||||
|
|
||||||
1. You may copy and distribute verbatim copies of the Library's
|
|
||||||
complete source code as you receive it, in any medium, provided that
|
|
||||||
you conspicuously and appropriately publish on each copy an
|
|
||||||
appropriate copyright notice and disclaimer of warranty; keep intact
|
|
||||||
all the notices that refer to this License and to the absence of any
|
|
||||||
warranty; and distribute a copy of this License along with the
|
|
||||||
Library.
|
|
||||||
|
|
||||||
You may charge a fee for the physical act of transferring a copy,
|
|
||||||
and you may at your option offer warranty protection in exchange for a
|
|
||||||
fee.
|
|
||||||
|
|
||||||
2. You may modify your copy or copies of the Library or any portion
|
|
||||||
of it, thus forming a work based on the Library, and copy and
|
|
||||||
distribute such modifications or work under the terms of Section 1
|
|
||||||
above, provided that you also meet all of these conditions:
|
|
||||||
|
|
||||||
a) The modified work must itself be a software library.
|
|
||||||
|
|
||||||
b) You must cause the files modified to carry prominent notices
|
|
||||||
stating that you changed the files and the date of any change.
|
|
||||||
|
|
||||||
c) You must cause the whole of the work to be licensed at no
|
|
||||||
charge to all third parties under the terms of this License.
|
|
||||||
|
|
||||||
d) If a facility in the modified Library refers to a function or a
|
|
||||||
table of data to be supplied by an application program that uses
|
|
||||||
the facility, other than as an argument passed when the facility
|
|
||||||
is invoked, then you must make a good faith effort to ensure that,
|
|
||||||
in the event an application does not supply such function or
|
|
||||||
table, the facility still operates, and performs whatever part of
|
|
||||||
its purpose remains meaningful.
|
|
||||||
|
|
||||||
(For example, a function in a library to compute square roots has
|
|
||||||
a purpose that is entirely well-defined independent of the
|
|
||||||
application. Therefore, Subsection 2d requires that any
|
|
||||||
application-supplied function or table used by this function must
|
|
||||||
be optional: if the application does not supply it, the square
|
|
||||||
root function must still compute square roots.)
|
|
||||||
|
|
||||||
These requirements apply to the modified work as a whole. If
|
|
||||||
identifiable sections of that work are not derived from the Library,
|
|
||||||
and can be reasonably considered independent and separate works in
|
|
||||||
themselves, then this License, and its terms, do not apply to those
|
|
||||||
sections when you distribute them as separate works. But when you
|
|
||||||
distribute the same sections as part of a whole which is a work based
|
|
||||||
on the Library, the distribution of the whole must be on the terms of
|
|
||||||
this License, whose permissions for other licensees extend to the
|
|
||||||
entire whole, and thus to each and every part regardless of who wrote
|
|
||||||
it.
|
|
||||||
|
|
||||||
Thus, it is not the intent of this section to claim rights or contest
|
|
||||||
your rights to work written entirely by you; rather, the intent is to
|
|
||||||
exercise the right to control the distribution of derivative or
|
|
||||||
collective works based on the Library.
|
|
||||||
|
|
||||||
In addition, mere aggregation of another work not based on the Library
|
|
||||||
with the Library (or with a work based on the Library) on a volume of
|
|
||||||
a storage or distribution medium does not bring the other work under
|
|
||||||
the scope of this License.
|
|
||||||
|
|
||||||
3. You may opt to apply the terms of the ordinary GNU General Public
|
|
||||||
License instead of this License to a given copy of the Library. To do
|
|
||||||
this, you must alter all the notices that refer to this License, so
|
|
||||||
that they refer to the ordinary GNU General Public License, version 2,
|
|
||||||
instead of to this License. (If a newer version than version 2 of the
|
|
||||||
ordinary GNU General Public License has appeared, then you can specify
|
|
||||||
that version instead if you wish.) Do not make any other change in
|
|
||||||
these notices.
|
|
||||||
|
|
||||||
Once this change is made in a given copy, it is irreversible for
|
|
||||||
that copy, so the ordinary GNU General Public License applies to all
|
|
||||||
subsequent copies and derivative works made from that copy.
|
|
||||||
|
|
||||||
This option is useful when you wish to copy part of the code of
|
|
||||||
the Library into a program that is not a library.
|
|
||||||
|
|
||||||
4. You may copy and distribute the Library (or a portion or
|
|
||||||
derivative of it, under Section 2) in object code or executable form
|
|
||||||
under the terms of Sections 1 and 2 above provided that you accompany
|
|
||||||
it with the complete corresponding machine-readable source code, which
|
|
||||||
must be distributed under the terms of Sections 1 and 2 above on a
|
|
||||||
medium customarily used for software interchange.
|
|
||||||
|
|
||||||
If distribution of object code is made by offering access to copy
|
|
||||||
from a designated place, then offering equivalent access to copy the
|
|
||||||
source code from the same place satisfies the requirement to
|
|
||||||
distribute the source code, even though third parties are not
|
|
||||||
compelled to copy the source along with the object code.
|
|
||||||
|
|
||||||
5. A program that contains no derivative of any portion of the
|
|
||||||
Library, but is designed to work with the Library by being compiled or
|
|
||||||
linked with it, is called a "work that uses the Library". Such a
|
|
||||||
work, in isolation, is not a derivative work of the Library, and
|
|
||||||
therefore falls outside the scope of this License.
|
|
||||||
|
|
||||||
However, linking a "work that uses the Library" with the Library
|
|
||||||
creates an executable that is a derivative of the Library (because it
|
|
||||||
contains portions of the Library), rather than a "work that uses the
|
|
||||||
library". The executable is therefore covered by this License.
|
|
||||||
Section 6 states terms for distribution of such executables.
|
|
||||||
|
|
||||||
When a "work that uses the Library" uses material from a header file
|
|
||||||
that is part of the Library, the object code for the work may be a
|
|
||||||
derivative work of the Library even though the source code is not.
|
|
||||||
Whether this is true is especially significant if the work can be
|
|
||||||
linked without the Library, or if the work is itself a library. The
|
|
||||||
threshold for this to be true is not precisely defined by law.
|
|
||||||
|
|
||||||
If such an object file uses only numerical parameters, data
|
|
||||||
structure layouts and accessors, and small macros and small inline
|
|
||||||
functions (ten lines or less in length), then the use of the object
|
|
||||||
file is unrestricted, regardless of whether it is legally a derivative
|
|
||||||
work. (Executables containing this object code plus portions of the
|
|
||||||
Library will still fall under Section 6.)
|
|
||||||
|
|
||||||
Otherwise, if the work is a derivative of the Library, you may
|
|
||||||
distribute the object code for the work under the terms of Section 6.
|
|
||||||
Any executables containing that work also fall under Section 6,
|
|
||||||
whether or not they are linked directly with the Library itself.
|
|
||||||
|
|
||||||
6. As an exception to the Sections above, you may also compile or
|
|
||||||
link a "work that uses the Library" with the Library to produce a
|
|
||||||
work containing portions of the Library, and distribute that work
|
|
||||||
under terms of your choice, provided that the terms permit
|
|
||||||
modification of the work for the customer's own use and reverse
|
|
||||||
engineering for debugging such modifications.
|
|
||||||
|
|
||||||
You must give prominent notice with each copy of the work that the
|
|
||||||
Library is used in it and that the Library and its use are covered by
|
|
||||||
this License. You must supply a copy of this License. If the work
|
|
||||||
during execution displays copyright notices, you must include the
|
|
||||||
copyright notice for the Library among them, as well as a reference
|
|
||||||
directing the user to the copy of this License. Also, you must do one
|
|
||||||
of these things:
|
|
||||||
|
|
||||||
a) Accompany the work with the complete corresponding
|
|
||||||
machine-readable source code for the Library including whatever
|
|
||||||
changes were used in the work (which must be distributed under
|
|
||||||
Sections 1 and 2 above); and, if the work is an executable linked
|
|
||||||
with the Library, with the complete machine-readable "work that
|
|
||||||
uses the Library", as object code and/or source code, so that the
|
|
||||||
user can modify the Library and then relink to produce a modified
|
|
||||||
executable containing the modified Library. (It is understood
|
|
||||||
that the user who changes the contents of definitions files in the
|
|
||||||
Library will not necessarily be able to recompile the application
|
|
||||||
to use the modified definitions.)
|
|
||||||
|
|
||||||
b) Accompany the work with a written offer, valid for at
|
|
||||||
least three years, to give the same user the materials
|
|
||||||
specified in Subsection 6a, above, for a charge no more
|
|
||||||
than the cost of performing this distribution.
|
|
||||||
|
|
||||||
c) If distribution of the work is made by offering access to copy
|
|
||||||
from a designated place, offer equivalent access to copy the above
|
|
||||||
specified materials from the same place.
|
|
||||||
|
|
||||||
d) Verify that the user has already received a copy of these
|
|
||||||
materials or that you have already sent this user a copy.
|
|
||||||
|
|
||||||
For an executable, the required form of the "work that uses the
|
|
||||||
Library" must include any data and utility programs needed for
|
|
||||||
reproducing the executable from it. However, as a special exception,
|
|
||||||
the source code distributed need not include anything that is normally
|
|
||||||
distributed (in either source or binary form) with the major
|
|
||||||
components (compiler, kernel, and so on) of the operating system on
|
|
||||||
which the executable runs, unless that component itself accompanies
|
|
||||||
the executable.
|
|
||||||
|
|
||||||
It may happen that this requirement contradicts the license
|
|
||||||
restrictions of other proprietary libraries that do not normally
|
|
||||||
accompany the operating system. Such a contradiction means you cannot
|
|
||||||
use both them and the Library together in an executable that you
|
|
||||||
distribute.
|
|
||||||
|
|
||||||
7. You may place library facilities that are a work based on the
|
|
||||||
Library side-by-side in a single library together with other library
|
|
||||||
facilities not covered by this License, and distribute such a combined
|
|
||||||
library, provided that the separate distribution of the work based on
|
|
||||||
the Library and of the other library facilities is otherwise
|
|
||||||
permitted, and provided that you do these two things:
|
|
||||||
|
|
||||||
a) Accompany the combined library with a copy of the same work
|
|
||||||
based on the Library, uncombined with any other library
|
|
||||||
facilities. This must be distributed under the terms of the
|
|
||||||
Sections above.
|
|
||||||
|
|
||||||
b) Give prominent notice with the combined library of the fact
|
|
||||||
that part of it is a work based on the Library, and explaining
|
|
||||||
where to find the accompanying uncombined form of the same work.
|
|
||||||
|
|
||||||
8. You may not copy, modify, sublicense, link with, or distribute
|
|
||||||
the Library except as expressly provided under this License. Any
|
|
||||||
attempt otherwise to copy, modify, sublicense, link with, or
|
|
||||||
distribute the Library is void, and will automatically terminate your
|
|
||||||
rights under this License. However, parties who have received copies,
|
|
||||||
or rights, from you under this License will not have their licenses
|
|
||||||
terminated so long as such parties remain in full compliance.
|
|
||||||
|
|
||||||
9. You are not required to accept this License, since you have not
|
|
||||||
signed it. However, nothing else grants you permission to modify or
|
|
||||||
distribute the Library or its derivative works. These actions are
|
|
||||||
prohibited by law if you do not accept this License. Therefore, by
|
|
||||||
modifying or distributing the Library (or any work based on the
|
|
||||||
Library), you indicate your acceptance of this License to do so, and
|
|
||||||
all its terms and conditions for copying, distributing or modifying
|
|
||||||
the Library or works based on it.
|
|
||||||
|
|
||||||
10. Each time you redistribute the Library (or any work based on the
|
|
||||||
Library), the recipient automatically receives a license from the
|
|
||||||
original licensor to copy, distribute, link with or modify the Library
|
|
||||||
subject to these terms and conditions. You may not impose any further
|
|
||||||
restrictions on the recipients' exercise of the rights granted herein.
|
|
||||||
You are not responsible for enforcing compliance by third parties to
|
|
||||||
this License.
|
|
||||||
|
|
||||||
11. If, as a consequence of a court judgment or allegation of patent
|
|
||||||
infringement or for any other reason (not limited to patent issues),
|
|
||||||
conditions are imposed on you (whether by court order, agreement or
|
|
||||||
otherwise) that contradict the conditions of this License, they do not
|
|
||||||
excuse you from the conditions of this License. If you cannot
|
|
||||||
distribute so as to satisfy simultaneously your obligations under this
|
|
||||||
License and any other pertinent obligations, then as a consequence you
|
|
||||||
may not distribute the Library at all. For example, if a patent
|
|
||||||
license would not permit royalty-free redistribution of the Library by
|
|
||||||
all those who receive copies directly or indirectly through you, then
|
|
||||||
the only way you could satisfy both it and this License would be to
|
|
||||||
refrain entirely from distribution of the Library.
|
|
||||||
|
|
||||||
If any portion of this section is held invalid or unenforceable under any
|
|
||||||
particular circumstance, the balance of the section is intended to apply,
|
|
||||||
and the section as a whole is intended to apply in other circumstances.
|
|
||||||
|
|
||||||
It is not the purpose of this section to induce you to infringe any
|
|
||||||
patents or other property right claims or to contest validity of any
|
|
||||||
such claims; this section has the sole purpose of protecting the
|
|
||||||
integrity of the free software distribution system which is
|
|
||||||
implemented by public license practices. Many people have made
|
|
||||||
generous contributions to the wide range of software distributed
|
|
||||||
through that system in reliance on consistent application of that
|
|
||||||
system; it is up to the author/donor to decide if he or she is willing
|
|
||||||
to distribute software through any other system and a licensee cannot
|
|
||||||
impose that choice.
|
|
||||||
|
|
||||||
This section is intended to make thoroughly clear what is believed to
|
|
||||||
be a consequence of the rest of this License.
|
|
||||||
|
|
||||||
12. If the distribution and/or use of the Library is restricted in
|
|
||||||
certain countries either by patents or by copyrighted interfaces, the
|
|
||||||
original copyright holder who places the Library under this License may add
|
|
||||||
an explicit geographical distribution limitation excluding those countries,
|
|
||||||
so that distribution is permitted only in or among countries not thus
|
|
||||||
excluded. In such case, this License incorporates the limitation as if
|
|
||||||
written in the body of this License.
|
|
||||||
|
|
||||||
13. The Free Software Foundation may publish revised and/or new
|
|
||||||
versions of the Library General Public License from time to time.
|
|
||||||
Such new versions will be similar in spirit to the present version,
|
|
||||||
but may differ in detail to address new problems or concerns.
|
|
||||||
|
|
||||||
Each version is given a distinguishing version number. If the Library
|
|
||||||
specifies a version number of this License which applies to it and
|
|
||||||
"any later version", you have the option of following the terms and
|
|
||||||
conditions either of that version or of any later version published by
|
|
||||||
the Free Software Foundation. If the Library does not specify a
|
|
||||||
license version number, you may choose any version ever published by
|
|
||||||
the Free Software Foundation.
|
|
||||||
|
|
||||||
14. If you wish to incorporate parts of the Library into other free
|
|
||||||
programs whose distribution conditions are incompatible with these,
|
|
||||||
write to the author to ask for permission. For software which is
|
|
||||||
copyrighted by the Free Software Foundation, write to the Free
|
|
||||||
Software Foundation; we sometimes make exceptions for this. Our
|
|
||||||
decision will be guided by the two goals of preserving the free status
|
|
||||||
of all derivatives of our free software and of promoting the sharing
|
|
||||||
and reuse of software generally.
|
|
||||||
|
|
||||||
NO WARRANTY
|
|
||||||
|
|
||||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
|
||||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
|
||||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
|
||||||
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
|
|
||||||
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
||||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
|
|
||||||
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
|
||||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
|
||||||
|
|
||||||
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
|
||||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
|
||||||
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
|
|
||||||
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
|
|
||||||
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
|
|
||||||
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
|
|
||||||
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
|
|
||||||
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
|
||||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
|
||||||
DAMAGES.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
Appendix: How to Apply These Terms to Your New Libraries
|
|
||||||
|
|
||||||
If you develop a new library, and you want it to be of the greatest
|
|
||||||
possible use to the public, we recommend making it free software that
|
|
||||||
everyone can redistribute and change. You can do so by permitting
|
|
||||||
redistribution under these terms (or, alternatively, under the terms of the
|
|
||||||
ordinary General Public License).
|
|
||||||
|
|
||||||
To apply these terms, attach the following notices to the library. It is
|
|
||||||
safest to attach them to the start of each source file to most effectively
|
|
||||||
convey the exclusion of warranty; and each file should have at least the
|
|
||||||
"copyright" line and a pointer to where the full notice is found.
|
|
||||||
|
|
||||||
<one line to give the library's name and a brief idea of what it does.>
|
|
||||||
Copyright (C) <year> <name of author>
|
|
||||||
|
|
||||||
This library is free software; you can redistribute it and/or
|
|
||||||
modify it under the terms of the GNU Library General Public
|
|
||||||
License as published by the Free Software Foundation; either
|
|
||||||
version 2 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
|
|
||||||
Library General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU Library General Public
|
|
||||||
License along with this library; if not, write to the Free
|
|
||||||
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
|
|
||||||
Also add information on how to contact you by electronic and paper mail.
|
|
||||||
|
|
||||||
You should also get your employer (if you work as a programmer) or your
|
|
||||||
school, if any, to sign a "copyright disclaimer" for the library, if
|
|
||||||
necessary. Here is a sample; alter the names:
|
|
||||||
|
|
||||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
|
||||||
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
|
|
||||||
|
|
||||||
<signature of Ty Coon>, 1 April 1990
|
|
||||||
Ty Coon, President of Vice
|
|
||||||
|
|
||||||
That's all there is to it!
|
|
@@ -1,94 +0,0 @@
|
|||||||
/* Copyright (C) 1998 DJ Delorie, see COPYING.DJ for details */
|
|
||||||
/* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */
|
|
||||||
/* Updated 2008 to use fread/fopen and friends instead of read/open so it compiles with GCC on Unix (Rubidium) */
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <ctype.h>
|
|
||||||
|
|
||||||
|
|
||||||
static void
|
|
||||||
exe2aout(char *fname)
|
|
||||||
{
|
|
||||||
unsigned short header[3];
|
|
||||||
FILE *ifile;
|
|
||||||
FILE *ofile;
|
|
||||||
char buf[4096];
|
|
||||||
int rbytes;
|
|
||||||
char *dot = strrchr(fname, '.');
|
|
||||||
if (!dot || strlen(dot) != 4
|
|
||||||
|| tolower(dot[1]) != 'e'
|
|
||||||
|| tolower(dot[2]) != 'x'
|
|
||||||
|| tolower(dot[3]) != 'e')
|
|
||||||
{
|
|
||||||
fprintf(stderr, "%s: Arguments MUST end with a .exe extension\n", fname);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
ifile = fopen(fname, "rb");
|
|
||||||
if (!ifile)
|
|
||||||
{
|
|
||||||
perror(fname);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
fread(header, sizeof(header), 1, ifile);
|
|
||||||
if (header[0] == 0x5a4d)
|
|
||||||
{
|
|
||||||
long header_offset = (long)header[2]*512L;
|
|
||||||
if (header[1])
|
|
||||||
header_offset += (long)header[1] - 512L;
|
|
||||||
fseek(ifile, header_offset, SEEK_SET);
|
|
||||||
header[0] = 0;
|
|
||||||
fread(header, sizeof(header), 1, ifile);
|
|
||||||
if ((header[0] != 0x010b) && (header[0] != 0x014c))
|
|
||||||
{
|
|
||||||
fprintf(stderr, "`%s' does not have a COFF/AOUT program appended to it\n", fname);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
fseek(ifile, header_offset, SEEK_SET);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
fprintf(stderr, "`%s' is not an .EXE file\n", fname);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
*dot = 0;
|
|
||||||
ofile = fopen(fname, "w+b");
|
|
||||||
if (!ofile)
|
|
||||||
{
|
|
||||||
perror(fname);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
while ((rbytes=fread(buf, 1, 4096, ifile)) > 0)
|
|
||||||
{
|
|
||||||
int wb = fwrite(buf, 1, rbytes, ofile);
|
|
||||||
if (wb < 0)
|
|
||||||
{
|
|
||||||
perror(fname);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (wb < rbytes)
|
|
||||||
{
|
|
||||||
fprintf(stderr, "`%s': disk full\n", fname);
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
fclose(ifile);
|
|
||||||
fclose(ofile);
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
main(int argc, char **argv)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
if (argc == 1) printf("Usage: %s <exename>", argv[0]);
|
|
||||||
for (i=1; i<argc; i++)
|
|
||||||
exe2aout(argv[i]);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
@@ -1,11 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# $Id$
|
|
||||||
|
|
||||||
cd `dirname $0`
|
|
||||||
cc -o exe2coff/exe2coff exe2coff/exe2coff.c || exit
|
|
||||||
cp $1 binary.exe || exit
|
|
||||||
./exe2coff/exe2coff binary.exe || exit
|
|
||||||
cat cwsdpmi/cwsdstub.exe binary > binary.exe || exit
|
|
||||||
mv binary.exe $1
|
|
||||||
rm binary exe2coff/exe2coff
|
|
@@ -1,6 +1,6 @@
|
|||||||
@echo off
|
@echo off
|
||||||
|
|
||||||
set OPENTTD_VERSION=1.9.0
|
set OPENTTD_VERSION=1.10.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
|
||||||
|
@@ -2,7 +2,7 @@
|
|||||||
# spec file for package openttd
|
# spec file for package openttd
|
||||||
#
|
#
|
||||||
# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||||
# Copyright (c) 2007-2018 The OpenTTD developers
|
# Copyright (c) 2007-2019 The OpenTTD developers
|
||||||
#
|
#
|
||||||
# All modifications and additions to the file contributed by third parties
|
# All modifications and additions to the file contributed by third parties
|
||||||
# remain the property of their copyright owners, unless otherwise agreed
|
# remain the property of their copyright owners, unless otherwise agreed
|
||||||
@@ -17,9 +17,9 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
Name: openttd
|
Name: openttd
|
||||||
Version: 1.9.beta1
|
Version: 1.10.beta1
|
||||||
Release: 0
|
Release: 0
|
||||||
%define srcver 1.9.0-beta1
|
%define srcver 1.10.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,6 +1,6 @@
|
|||||||
# Version numbers to update
|
# Version numbers to update
|
||||||
!define APPV_MAJOR 1
|
!define APPV_MAJOR 1
|
||||||
!define APPV_MINOR 9
|
!define APPV_MINOR 10
|
||||||
!define APPV_MAINT 0
|
!define APPV_MAINT 0
|
||||||
!define APPV_BUILD 0
|
!define APPV_BUILD 0
|
||||||
!define APPV_EXTRA "-beta1"
|
!define APPV_EXTRA "-beta1"
|
||||||
@@ -24,6 +24,7 @@
|
|||||||
!define MUI_HEADERIMAGE
|
!define MUI_HEADERIMAGE
|
||||||
!define MUI_HEADERIMAGE_BITMAP "top.bmp"
|
!define MUI_HEADERIMAGE_BITMAP "top.bmp"
|
||||||
|
|
||||||
|
ManifestDPIAware true
|
||||||
BrandingText "OpenTTD Installer"
|
BrandingText "OpenTTD Installer"
|
||||||
SetCompressor LZMA
|
SetCompressor LZMA
|
||||||
|
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user