mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2024-11-15 17:22:12 +00:00
Merge branch 'master' into thinkerlists
# Conflicts: # src/f_finale.c # src/p_enemy.c
This commit is contained in:
commit
a67900b453
150 changed files with 16554 additions and 1782 deletions
|
@ -25,6 +25,13 @@ jobs:
|
|||
- run:
|
||||
name: Add i386 arch
|
||||
command: dpkg --add-architecture i386
|
||||
- run:
|
||||
name: Add STJr PPA
|
||||
command: |
|
||||
apt-get -qq update
|
||||
apt-get -qq -y install dirmngr
|
||||
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0B1702D71499D9C25F986507F240F4449D3B0EC6
|
||||
echo "deb http://ppa.launchpad.net/stjr/srb2/ubuntu trusty main" >> /etc/apt/sources.list
|
||||
- run:
|
||||
name: Update APT listing
|
||||
command: apt-get -qq update
|
||||
|
@ -36,7 +43,8 @@ jobs:
|
|||
- v1-SRB2-APT
|
||||
- run:
|
||||
name: Install SDK
|
||||
command: apt-get -qq -y --no-install-recommends install git build-essential nasm libpng-dev:i386 libsdl2-mixer-dev:i386 libgme-dev:i386 gettext ccache wget gcc-multilib upx openssh-client
|
||||
command: apt-get -qq -y --no-install-recommends install git build-essential nasm libpng-dev:i386 libsdl2-mixer-dev:i386 libgme-dev:i386 libopenmpt-dev:i386 gettext ccache wget gcc-multilib upx openssh-client
|
||||
|
||||
- save_cache:
|
||||
key: v1-SRB2-APT
|
||||
paths:
|
||||
|
@ -63,4 +71,4 @@ jobs:
|
|||
- save_cache:
|
||||
key: v1-SRB2-{{ .Branch }}-{{ checksum "objs/Linux/SDL/Release/depend.dep" }}
|
||||
paths:
|
||||
- /root/.ccache
|
||||
- /root/.ccache
|
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -19,3 +19,5 @@ Win32_LIB_ASM_Release
|
|||
*.db
|
||||
*.opendb
|
||||
/.vs
|
||||
/debian
|
||||
/assets/debian
|
||||
|
|
729
.travis.yml
729
.travis.yml
|
@ -1,57 +1,323 @@
|
|||
# Travis-CI Config
|
||||
#
|
||||
# You may use the Deployer to upload packages and builds to external servers.
|
||||
# See deployer/travis/deployer_defaults.sh for environment variables to configure.
|
||||
|
||||
language: c
|
||||
sudo: required
|
||||
dist: trusty
|
||||
|
||||
matrix:
|
||||
include:
|
||||
################################
|
||||
# Test Buildbots
|
||||
# Deployer does not operate on these. See Deployer Buildbots, below.
|
||||
# These bots are disabled when a deployment is triggered by 'deployer' branch name AND DPL_TERMINATE_TESTS=1.
|
||||
# These bots remain enabled when a deployment is triggered by release tag.
|
||||
################################
|
||||
- os: linux
|
||||
addons:
|
||||
apt:
|
||||
sources:
|
||||
- sourceline: 'ppa:stjr/srb2'
|
||||
packages:
|
||||
- libsdl2-mixer-dev
|
||||
- libpng-dev
|
||||
- libgl1-mesa-dev
|
||||
- libgme-dev
|
||||
- libopenmpt-dev
|
||||
- p7zip-full
|
||||
- gcc-4.4
|
||||
compiler: gcc-4.4
|
||||
env: GCC44=1
|
||||
if: env(DPL_ENABLED) != "1" OR env(DPL_TERMINATE_TESTS) != "1" OR NOT branch =~ /^.*deployer.*$/
|
||||
#gcc-4.4 (Ubuntu/Linaro 4.4.7-8ubuntu1) 4.4.7
|
||||
- os: linux
|
||||
addons:
|
||||
apt:
|
||||
sources:
|
||||
- sourceline: 'ppa:stjr/srb2'
|
||||
packages:
|
||||
- libsdl2-mixer-dev
|
||||
- libpng-dev
|
||||
- libgl1-mesa-dev
|
||||
- libgme-dev
|
||||
- libopenmpt-dev
|
||||
- p7zip-full
|
||||
- gcc-4.6
|
||||
compiler: gcc-4.6
|
||||
env: GCC46=1
|
||||
if: env(DPL_ENABLED) != "1" OR env(DPL_TERMINATE_TESTS) != "1" OR NOT branch =~ /^.*deployer.*$/
|
||||
#gcc-4.6 (Ubuntu/Linaro 4.6.4-6ubuntu2) 4.6.4
|
||||
- os: linux
|
||||
addons:
|
||||
apt:
|
||||
sources:
|
||||
- sourceline: 'ppa:stjr/srb2'
|
||||
packages:
|
||||
- libsdl2-mixer-dev
|
||||
- libpng-dev
|
||||
- libgl1-mesa-dev
|
||||
- libgme-dev
|
||||
- libopenmpt-dev
|
||||
- p7zip-full
|
||||
- gcc-4.7
|
||||
compiler: gcc-4.7
|
||||
env: GCC47=1
|
||||
if: env(DPL_ENABLED) != "1" OR env(DPL_TERMINATE_TESTS) != "1" OR NOT branch =~ /^.*deployer.*$/
|
||||
#gcc-4.7
|
||||
- os: linux
|
||||
compiler: gcc
|
||||
env: GCC48=1
|
||||
if: env(DPL_ENABLED) != "1" OR env(DPL_TERMINATE_TESTS) != "1" OR NOT branch =~ /^.*deployer.*$/
|
||||
#gcc (Ubuntu 4.8.4-2ubuntu1~14.04) 4.8.4
|
||||
- os: linux
|
||||
addons:
|
||||
apt:
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
- sourceline: 'ppa:stjr/srb2'
|
||||
packages:
|
||||
- libsdl2-mixer-dev
|
||||
- libpng-dev
|
||||
- libgl1-mesa-dev
|
||||
- libgme-dev
|
||||
- libopenmpt-dev
|
||||
- p7zip-full
|
||||
- gcc-4.8
|
||||
compiler: gcc-4.8
|
||||
env: GCC48=1
|
||||
if: env(DPL_ENABLED) != "1" OR env(DPL_TERMINATE_TESTS) != "1" OR NOT branch =~ /^.*deployer.*$/
|
||||
#gcc-4.8 (Ubuntu 4.8.5-2ubuntu1~14.04.1) 4.8.5
|
||||
- os: linux
|
||||
addons:
|
||||
apt:
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
- sourceline: 'ppa:stjr/srb2'
|
||||
packages:
|
||||
- libsdl2-mixer-dev
|
||||
- libpng-dev
|
||||
- libgl1-mesa-dev
|
||||
- libgme-dev
|
||||
- libopenmpt-dev
|
||||
- p7zip-full
|
||||
- gcc-7
|
||||
compiler: gcc-7
|
||||
env: WFLAGS="-Wno-tautological-compare -Wno-error=implicit-fallthrough -Wno-implicit-fallthrough" GCC72=1
|
||||
if: env(DPL_ENABLED) != "1" OR env(DPL_TERMINATE_TESTS) != "1" OR NOT branch =~ /^.*deployer.*$/
|
||||
#gcc-7 (Ubuntu 7.2.0-1ubuntu1~14.04) 7.2.0 20170802
|
||||
- os: linux
|
||||
addons:
|
||||
apt:
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
- sourceline: 'ppa:stjr/srb2'
|
||||
packages:
|
||||
- libsdl2-mixer-dev
|
||||
- libpng-dev
|
||||
- libgl1-mesa-dev
|
||||
- libgme-dev
|
||||
- libopenmpt-dev
|
||||
- p7zip-full
|
||||
- gcc-8
|
||||
compiler: gcc-8
|
||||
env: WFLAGS="-Wno-tautological-compare -Wno-error=implicit-fallthrough -Wno-implicit-fallthrough -Wno-error=format-overflow -Wno-error=format-truncation" GCC81=1
|
||||
if: env(DPL_ENABLED) != "1" OR env(DPL_TERMINATE_TESTS) != "1" OR NOT branch =~ /^.*deployer.*$/
|
||||
#gcc-8 (Ubuntu 7.2.0-1ubuntu1~14.04) 8.1.0
|
||||
- os: linux
|
||||
compiler: clang
|
||||
if: env(DPL_ENABLED) != "1" OR env(DPL_TERMINATE_TESTS) != "1" OR NOT branch =~ /^.*deployer.*$/
|
||||
#clang version 3.5.0 (tags/RELEASE_350/final)
|
||||
- os: linux
|
||||
addons:
|
||||
apt:
|
||||
sources:
|
||||
- llvm-toolchain-precise-3.5
|
||||
- sourceline: 'ppa:stjr/srb2'
|
||||
packages:
|
||||
- libsdl2-mixer-dev
|
||||
- libpng-dev
|
||||
- libgl1-mesa-dev
|
||||
- libgme-dev
|
||||
- libopenmpt-dev
|
||||
- p7zip-full
|
||||
- clang-3.5
|
||||
compiler: clang-3.5
|
||||
if: env(DPL_ENABLED) != "1" OR env(DPL_TERMINATE_TESTS) != "1" OR NOT branch =~ /^.*deployer.*$/
|
||||
#Ubuntu clang version 3.5.0-4ubuntu2~trusty2 (tags/RELEASE_350/final) (based on LLVM 3.5.0)
|
||||
- os: linux
|
||||
addons:
|
||||
apt:
|
||||
sources:
|
||||
- llvm-toolchain-precise-3.6
|
||||
- ubuntu-toolchain-r-test
|
||||
- sourceline: 'ppa:stjr/srb2'
|
||||
packages:
|
||||
- libsdl2-mixer-dev
|
||||
- libpng-dev
|
||||
- libgl1-mesa-dev
|
||||
- libgme-dev
|
||||
- libopenmpt-dev
|
||||
- p7zip-full
|
||||
- clang-3.6
|
||||
compiler: clang-3.6
|
||||
if: env(DPL_ENABLED) != "1" OR env(DPL_TERMINATE_TESTS) != "1" OR NOT branch =~ /^.*deployer.*$/
|
||||
#Ubuntu clang version 3.6.2-svn240577-1~exp1 (branches/release_36) (based on LLVM 3.6.2)
|
||||
- os: linux
|
||||
addons:
|
||||
apt:
|
||||
sources:
|
||||
- llvm-toolchain-precise-3.7
|
||||
- ubuntu-toolchain-r-test
|
||||
- sourceline: 'ppa:stjr/srb2'
|
||||
packages:
|
||||
- libsdl2-mixer-dev
|
||||
- libpng-dev
|
||||
- libgl1-mesa-dev
|
||||
- libgme-dev
|
||||
- libopenmpt-dev
|
||||
- p7zip-full
|
||||
- clang-3.7
|
||||
compiler: clang-3.7
|
||||
if: env(DPL_ENABLED) != "1" OR env(DPL_TERMINATE_TESTS) != "1" OR NOT branch =~ /^.*deployer.*$/
|
||||
#Ubuntu clang version 3.7.1-svn253571-1~exp1 (branches/release_37) (based on LLVM 3.7.1)
|
||||
- os: linux
|
||||
addons:
|
||||
apt:
|
||||
sources:
|
||||
- llvm-toolchain-precise-3.8
|
||||
- ubuntu-toolchain-r-test
|
||||
- sourceline: 'ppa:stjr/srb2'
|
||||
packages:
|
||||
- libsdl2-mixer-dev
|
||||
- libpng-dev
|
||||
- libgl1-mesa-dev
|
||||
- libgme-dev
|
||||
- libopenmpt-dev
|
||||
- p7zip-full
|
||||
- clang-3.8
|
||||
compiler: clang-3.8
|
||||
if: env(DPL_ENABLED) != "1" OR env(DPL_TERMINATE_TESTS) != "1" OR NOT branch =~ /^.*deployer.*$/
|
||||
#clang version 3.8.1-svn271127-1~exp1 (branches/release_38)
|
||||
- os: linux
|
||||
addons:
|
||||
apt:
|
||||
sources:
|
||||
- llvm-toolchain-precise-3.9
|
||||
- ubuntu-toolchain-r-test
|
||||
- sourceline: 'ppa:stjr/srb2'
|
||||
packages:
|
||||
- libsdl2-mixer-dev
|
||||
- libpng-dev
|
||||
- libgl1-mesa-dev
|
||||
- libgme-dev
|
||||
- libopenmpt-dev
|
||||
- p7zip-full
|
||||
- clang-3.9
|
||||
compiler: clang-3.9
|
||||
if: env(DPL_ENABLED) != "1" OR env(DPL_TERMINATE_TESTS) != "1" OR NOT branch =~ /^.*deployer.*$/
|
||||
#clang version 3.9.X
|
||||
# - os: linux
|
||||
# addons:
|
||||
# apt:
|
||||
# sources:
|
||||
# - llvm-toolchain-precise-4.0
|
||||
# - ubuntu-toolchain-r-test
|
||||
# - sourceline: 'ppa:stjr/srb2'
|
||||
# packages:
|
||||
# - libsdl2-mixer-dev
|
||||
# - libpng-dev
|
||||
# - libgl1-mesa-dev
|
||||
# - libgme-dev
|
||||
# - libopenmpt-dev
|
||||
# - p7zip-full
|
||||
# - clang-4.0
|
||||
# compiler: clang-4.0
|
||||
# if: env(DPL_ENABLED) != "1" OR env(DPL_TERMINATE_TESTS) != "1" OR NOT branch =~ /^.*deployer.*$/
|
||||
# #clang version 4.0.X
|
||||
# - os: linux
|
||||
# addons:
|
||||
# apt:
|
||||
# sources:
|
||||
# - llvm-toolchain-precise-5.0
|
||||
# - ubuntu-toolchain-r-test
|
||||
# - sourceline: 'ppa:stjr/srb2'
|
||||
# packages:
|
||||
# - libsdl2-mixer-dev
|
||||
# - libpng-dev
|
||||
# - libgl1-mesa-dev
|
||||
# - libgme-dev
|
||||
# - libopenmpt-dev
|
||||
# - p7zip-full
|
||||
# - clang-5.0
|
||||
# compiler: clang-5.0
|
||||
# if: env(DPL_ENABLED) != "1" OR env(DPL_TERMINATE_TESTS) != "1" OR NOT branch =~ /^.*deployer.*$/
|
||||
# #clang version 5.0.X
|
||||
# - os: osx
|
||||
# osx_image: beta-xcode6.1
|
||||
# if: env(DPL_ENABLED) != "1" OR env(DPL_TERMINATE_TESTS) != "1" OR NOT branch =~ /^.*deployer.*$/
|
||||
# #Apple LLVM version 6.0 (clang-600.0.54) (based on LLVM 3.5svn)
|
||||
# - os: osx
|
||||
# osx_image: beta-xcode6.2
|
||||
# compiler: gcc
|
||||
# if: env(DPL_ENABLED) != "1" OR env(DPL_TERMINATE_TESTS) != "1" OR NOT branch =~ /^.*deployer.*$/
|
||||
# #Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn)
|
||||
## - os: osx
|
||||
## osx_image: beta-xcode6.3
|
||||
## if: env(DPL_ENABLED) != "1" OR env(DPL_TERMINATE_TESTS) != "1" OR NOT branch =~ /^.*deployer.*$/
|
||||
## #I think xcode.6.3 VM is broken, it does not boot
|
||||
# - os: osx
|
||||
# osx_image: xcode6.4
|
||||
# if: env(DPL_ENABLED) != "1" OR env(DPL_TERMINATE_TESTS) != "1" OR NOT branch =~ /^.*deployer.*$/
|
||||
# #Apple LLVM version 6.1.0 (clang-602.0.53) (based on LLVM 3.6.0svn)
|
||||
# - os: osx
|
||||
# osx_image: xcode7
|
||||
# if: env(DPL_ENABLED) != "1" OR env(DPL_TERMINATE_TESTS) != "1" OR NOT branch =~ /^.*deployer.*$/
|
||||
# #Apple LLVM version 7.0.0 (clang-700.0.72)
|
||||
# - os: osx
|
||||
# osx_image: xcode7.1
|
||||
# if: env(DPL_ENABLED) != "1" OR env(DPL_TERMINATE_TESTS) != "1" OR NOT branch =~ /^.*deployer.*$/
|
||||
# #Apple LLVM version 7.0.0 (clang-700.1.76)
|
||||
# - os: osx
|
||||
# osx_image: xcode7.2
|
||||
# if: env(DPL_ENABLED) != "1" OR env(DPL_TERMINATE_TESTS) != "1" OR NOT branch =~ /^.*deployer.*$/
|
||||
# #Apple LLVM version 7.0.2 (clang-700.1.81)
|
||||
# - os: osx
|
||||
# osx_image: xcode7.3
|
||||
# #Apple LLVM version 7.3.0 (clang-703.0.31)
|
||||
# - os: osx
|
||||
# osx_image: xcode7.3
|
||||
# #Apple LLVM version 7.3.0 (clang-703.0.31)
|
||||
- os: osx
|
||||
if: env(DPL_ENABLED) != "1" OR env(DPL_TERMINATE_TESTS) != "1" OR NOT branch =~ /^.*deployer.*$/
|
||||
#Default: macOS 10.13 and Xcode 9.4.1
|
||||
|
||||
|
||||
################################
|
||||
# Deployer Buildbots - OSX
|
||||
################################
|
||||
- os: osx
|
||||
if: env(DPL_ENABLED) = "1" AND (env(_DPL_JOB_ENABLED) = "1" OR env(DPL_JOB_ENABLE_ALL) = "1")
|
||||
AND (branch =~ /^.*deployer.*$/ OR (tag IS present AND env(DPL_TAG_ENABLED) = "1"))
|
||||
AND env(DPL_TERMINATE_MAIN) != "1"
|
||||
env:
|
||||
- _DPL_JOB_ENABLED=1
|
||||
- _DPL_JOB_NAME=osx
|
||||
- _DPL_FTP_TARGET=1
|
||||
- _DPL_PACKAGE_BINARY=1
|
||||
#Apple LLVM version 7.3.0 (clang-703.0.31)
|
||||
|
||||
|
||||
################################
|
||||
# Deployer Buildbots - Linux assets
|
||||
# Set DPL_TERMINATE_ASSETS to disable all of these
|
||||
# List Ubuntu LTS next, newest to oldest
|
||||
# Then list non-LTS, newest to oldest
|
||||
################################
|
||||
- os: linux
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- libsdl2-mixer-dev
|
||||
- libpng-dev
|
||||
|
@ -60,172 +326,251 @@ matrix:
|
|||
- p7zip-full
|
||||
- gcc-4.8
|
||||
compiler: gcc-4.8
|
||||
env: GCC48=1
|
||||
dist: xenial
|
||||
if: env(DPL_ENABLED) = "1" AND (env(_DPL_JOB_ENABLED) = "1" OR env(DPL_JOB_ENABLE_ALL) = "1")
|
||||
AND (branch =~ /^.*deployer.*$/ OR (tag IS present AND env(DPL_TAG_ENABLED) = "1"))
|
||||
AND env(DPL_TERMINATE_ASSETS) != "1"
|
||||
env:
|
||||
- _DPL_JOB_ENABLED=1
|
||||
- _DPL_JOB_NAME=bionic-asset
|
||||
- _DPL_DPUT_TARGET=1
|
||||
- _DPL_PACKAGE_SOURCE=1
|
||||
- _DPL_PACKAGE_MAIN=0
|
||||
- _DPL_PACKAGE_ASSET=1
|
||||
- PACKAGE_DISTRO=bionic
|
||||
#- PACKAGE_SUBVERSION=~18.04bionic
|
||||
#gcc-4.8 (Ubuntu 4.8.5-2ubuntu1~14.04.1) 4.8.5
|
||||
|
||||
################################
|
||||
# The below asset bots produce packages that occupy too much space.
|
||||
# It would be nice if the asset files were not included in the source package itself,
|
||||
# so these can deploy to each Ubuntu target without manual intervention.
|
||||
#
|
||||
# Currently, to get around Launchpad's space limitation,
|
||||
# copy the packages from *one* bot and the space usage is not increased.
|
||||
################################
|
||||
# - os: linux
|
||||
# addons:
|
||||
# apt:
|
||||
# packages:
|
||||
# - libsdl2-mixer-dev
|
||||
# - libpng-dev
|
||||
# - libgl1-mesa-dev
|
||||
# - libgme-dev
|
||||
# - p7zip-full
|
||||
# - gcc-4.8
|
||||
# compiler: gcc-4.8
|
||||
# dist: trusty
|
||||
# if: env(DPL_ENABLED) = "1" AND (env(_DPL_JOB_ENABLED) = "1" OR env(DPL_JOB_ENABLE_ALL) = "1")
|
||||
# AND (branch =~ /^.*deployer.*$/ OR (tag IS present AND env(DPL_TAG_ENABLED) = "1"))
|
||||
# AND env(DPL_TERMINATE_ASSETS) != "1"
|
||||
# env:
|
||||
# - _DPL_JOB_ENABLED=1
|
||||
# - _DPL_JOB_NAME=trusty-asset
|
||||
# - _DPL_DPUT_TARGET=1
|
||||
# - _DPL_PACKAGE_SOURCE=1
|
||||
# - _DPL_PACKAGE_MAIN=0
|
||||
# - _DPL_PACKAGE_ASSET=1
|
||||
# - PACKAGE_DISTRO=trusty
|
||||
# #- PACKAGE_SUBVERSION=~14.04trusty
|
||||
# #gcc-4.8 (Ubuntu 4.8.5-2ubuntu1~14.04.1) 4.8.5
|
||||
# - os: linux
|
||||
# addons:
|
||||
# apt:
|
||||
# packages:
|
||||
# - libsdl2-mixer-dev
|
||||
# - libpng-dev
|
||||
# - libgl1-mesa-dev
|
||||
# - libgme-dev
|
||||
# - p7zip-full
|
||||
# - gcc-4.8
|
||||
# compiler: gcc-4.8
|
||||
# dist: xenial
|
||||
# if: env(DPL_ENABLED) = "1" AND (env(_DPL_JOB_ENABLED) = "1" OR env(DPL_JOB_ENABLE_ALL) = "1")
|
||||
# AND (branch =~ /^.*deployer.*$/ OR (tag IS present AND env(DPL_TAG_ENABLED) = "1"))
|
||||
# AND env(DPL_TERMINATE_ASSETS) != "1"
|
||||
# env:
|
||||
# - _DPL_JOB_ENABLED=1
|
||||
# - _DPL_JOB_NAME=disco-asset
|
||||
# - _DPL_DPUT_TARGET=1
|
||||
# - _DPL_PACKAGE_SOURCE=1
|
||||
# - _DPL_PACKAGE_MAIN=0
|
||||
# - _DPL_PACKAGE_ASSET=1
|
||||
# - PACKAGE_DISTRO=disco
|
||||
# #- PACKAGE_SUBVERSION=~19.04disco
|
||||
# #gcc-4.8 (Ubuntu 4.8.5-2ubuntu1~14.04.1) 4.8.5
|
||||
# - os: linux
|
||||
# addons:
|
||||
# apt:
|
||||
# packages:
|
||||
# - libsdl2-mixer-dev
|
||||
# - libpng-dev
|
||||
# - libgl1-mesa-dev
|
||||
# - libgme-dev
|
||||
# - p7zip-full
|
||||
# - gcc-4.8
|
||||
# compiler: gcc-4.8
|
||||
# dist: xenial
|
||||
# if: env(DPL_ENABLED) = "1" AND (env(_DPL_JOB_ENABLED) = "1" OR env(DPL_JOB_ENABLE_ALL) = "1")
|
||||
# AND (branch =~ /^.*deployer.*$/ OR (tag IS present AND env(DPL_TAG_ENABLED) = "1"))
|
||||
# AND env(DPL_TERMINATE_ASSETS) != "1"
|
||||
# env:
|
||||
# - _DPL_JOB_ENABLED=1
|
||||
# - _DPL_JOB_NAME=cosmic-asset
|
||||
# - _DPL_DPUT_TARGET=1
|
||||
# - _DPL_PACKAGE_SOURCE=1
|
||||
# - _DPL_PACKAGE_MAIN=0
|
||||
# - _DPL_PACKAGE_ASSET=1
|
||||
# - PACKAGE_DISTRO=cosmic
|
||||
# #- PACKAGE_SUBVERSION=~18.10cosmic
|
||||
# #gcc-4.8 (Ubuntu 4.8.5-2ubuntu1~14.04.1) 4.8.5
|
||||
# - os: linux
|
||||
# addons:
|
||||
# apt:
|
||||
# packages:
|
||||
# - libsdl2-mixer-dev
|
||||
# - libpng-dev
|
||||
# - libgl1-mesa-dev
|
||||
# - libgme-dev
|
||||
# - p7zip-full
|
||||
# - gcc-4.8
|
||||
# compiler: gcc-4.8
|
||||
# dist: xenial
|
||||
# if: env(DPL_ENABLED) = "1" AND (env(_DPL_JOB_ENABLED) = "1" OR env(DPL_JOB_ENABLE_ALL) = "1")
|
||||
# AND (branch =~ /^.*deployer.*$/ OR (tag IS present AND env(DPL_TAG_ENABLED) = "1"))
|
||||
# AND env(DPL_TERMINATE_ASSETS) != "1"
|
||||
# env:
|
||||
# - _DPL_JOB_ENABLED=1
|
||||
# - _DPL_JOB_NAME=xenial-asset
|
||||
# - _DPL_DPUT_TARGET=1
|
||||
# - _DPL_PACKAGE_SOURCE=1
|
||||
# - _DPL_PACKAGE_MAIN=0
|
||||
# - _DPL_PACKAGE_ASSET=1
|
||||
# - PACKAGE_DISTRO=xenial
|
||||
# #- PACKAGE_SUBVERSION=~16.04xenial
|
||||
# #gcc-4.8 (Ubuntu 4.8.5-2ubuntu1~14.04.1) 4.8.5
|
||||
|
||||
|
||||
################################
|
||||
# Deployer Buildbots - Linux binaries
|
||||
# List Ubuntu LTS, newest to oldest
|
||||
# Then list non-LTS, newest to oldest
|
||||
################################
|
||||
- os: linux
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- libsdl2-mixer-dev
|
||||
- libpng-dev
|
||||
- libgl1-mesa-dev
|
||||
- libgme-dev
|
||||
- p7zip-full
|
||||
- gcc-4.8
|
||||
compiler: gcc-4.8
|
||||
dist: xenial
|
||||
if: env(DPL_ENABLED) = "1" AND (env(_DPL_JOB_ENABLED) = "1" OR env(DPL_JOB_ENABLE_ALL) = "1")
|
||||
AND (branch =~ /^.*deployer.*$/ OR (tag IS present AND env(DPL_TAG_ENABLED) = "1"))
|
||||
AND env(DPL_TERMINATE_MAIN) != "1"
|
||||
env:
|
||||
- _DPL_JOB_ENABLED=1
|
||||
- _DPL_JOB_NAME=bionic
|
||||
- _DPL_DPUT_TARGET=1
|
||||
- _DPL_PACKAGE_SOURCE=1
|
||||
- PACKAGE_DISTRO=bionic
|
||||
- PACKAGE_SUBVERSION=~18.04bionic
|
||||
#gcc-4.8 (Ubuntu 4.8.5-2ubuntu1~14.04.1) 4.8.5
|
||||
- os: linux
|
||||
addons:
|
||||
apt:
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
packages:
|
||||
- libsdl2-mixer-dev
|
||||
- libpng-dev
|
||||
- libgl1-mesa-dev
|
||||
- libgme-dev
|
||||
- p7zip-full
|
||||
- gcc-7
|
||||
compiler: gcc-7
|
||||
env: WFLAGS="-Wno-tautological-compare -Wno-error=implicit-fallthrough -Wno-implicit-fallthrough" GCC72=1
|
||||
#gcc-7 (Ubuntu 7.2.0-1ubuntu1~14.04) 7.2.0 20170802
|
||||
- gcc-4.8
|
||||
compiler: gcc-4.8
|
||||
dist: trusty
|
||||
if: env(DPL_ENABLED) = "1" AND (env(_DPL_JOB_ENABLED) = "1" OR env(DPL_JOB_ENABLE_ALL) = "1")
|
||||
AND (branch =~ /^.*deployer.*$/ OR (tag IS present AND env(DPL_TAG_ENABLED) = "1"))
|
||||
AND env(DPL_TERMINATE_MAIN) != "1"
|
||||
env:
|
||||
- _DPL_JOB_ENABLED=1
|
||||
- _DPL_JOB_NAME=trusty
|
||||
- _DPL_DPUT_TARGET=1
|
||||
- _DPL_PACKAGE_SOURCE=1
|
||||
- PACKAGE_DISTRO=trusty
|
||||
- PACKAGE_SUBVERSION=~14.04trusty
|
||||
#gcc-4.8 (Ubuntu 4.8.5-2ubuntu1~14.04.1) 4.8.5
|
||||
- os: linux
|
||||
addons:
|
||||
apt:
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
packages:
|
||||
- libsdl2-mixer-dev
|
||||
- libpng-dev
|
||||
- libgl1-mesa-dev
|
||||
- libgme-dev
|
||||
- p7zip-full
|
||||
- gcc-8
|
||||
compiler: gcc-8
|
||||
env: WFLAGS="-Wno-tautological-compare -Wno-error=implicit-fallthrough -Wno-implicit-fallthrough -Wno-error=format-overflow" GCC81=1
|
||||
#gcc-8 (Ubuntu 7.2.0-1ubuntu1~14.04) 8.1.0
|
||||
- os: linux
|
||||
compiler: clang
|
||||
#clang version 3.5.0 (tags/RELEASE_350/final)
|
||||
- gcc-4.8
|
||||
compiler: gcc-4.8
|
||||
dist: xenial
|
||||
if: env(DPL_ENABLED) = "1" AND (env(_DPL_JOB_ENABLED) = "1" OR env(DPL_JOB_ENABLE_ALL) = "1")
|
||||
AND (branch =~ /^.*deployer.*$/ OR (tag IS present AND env(DPL_TAG_ENABLED) = "1"))
|
||||
AND env(DPL_TERMINATE_MAIN) != "1"
|
||||
env:
|
||||
- _DPL_JOB_ENABLED=1
|
||||
- _DPL_JOB_NAME=disco
|
||||
- _DPL_DPUT_TARGET=1
|
||||
- _DPL_PACKAGE_SOURCE=1
|
||||
- PACKAGE_DISTRO=disco
|
||||
- PACKAGE_SUBVERSION=~19.04disco
|
||||
#gcc-4.8 (Ubuntu 4.8.5-2ubuntu1~14.04.1) 4.8.5
|
||||
- os: linux
|
||||
addons:
|
||||
apt:
|
||||
sources:
|
||||
- llvm-toolchain-precise-3.5
|
||||
packages:
|
||||
- libsdl2-mixer-dev
|
||||
- libpng-dev
|
||||
- libgl1-mesa-dev
|
||||
- libgme-dev
|
||||
- p7zip-full
|
||||
- clang-3.5
|
||||
compiler: clang-3.5
|
||||
#Ubuntu clang version 3.5.0-4ubuntu2~trusty2 (tags/RELEASE_350/final) (based on LLVM 3.5.0)
|
||||
- gcc-4.8
|
||||
compiler: gcc-4.8
|
||||
dist: xenial
|
||||
if: env(DPL_ENABLED) = "1" AND (env(_DPL_JOB_ENABLED) = "1" OR env(DPL_JOB_ENABLE_ALL) = "1")
|
||||
AND (branch =~ /^.*deployer.*$/ OR (tag IS present AND env(DPL_TAG_ENABLED) = "1"))
|
||||
AND env(DPL_TERMINATE_MAIN) != "1"
|
||||
env:
|
||||
- _DPL_JOB_ENABLED=1
|
||||
- _DPL_JOB_NAME=cosmic
|
||||
- _DPL_DPUT_TARGET=1
|
||||
- _DPL_PACKAGE_SOURCE=1
|
||||
- PACKAGE_DISTRO=cosmic
|
||||
- PACKAGE_SUBVERSION=~18.10cosmic
|
||||
#gcc-4.8 (Ubuntu 4.8.5-2ubuntu1~14.04.1) 4.8.5
|
||||
- os: linux
|
||||
addons:
|
||||
apt:
|
||||
sources:
|
||||
- llvm-toolchain-precise-3.6
|
||||
- ubuntu-toolchain-r-test
|
||||
packages:
|
||||
- libsdl2-mixer-dev
|
||||
- libpng-dev
|
||||
- libgl1-mesa-dev
|
||||
- libgme-dev
|
||||
- p7zip-full
|
||||
- clang-3.6
|
||||
compiler: clang-3.6
|
||||
#Ubuntu clang version 3.6.2-svn240577-1~exp1 (branches/release_36) (based on LLVM 3.6.2)
|
||||
- os: linux
|
||||
addons:
|
||||
apt:
|
||||
sources:
|
||||
- llvm-toolchain-precise-3.7
|
||||
- ubuntu-toolchain-r-test
|
||||
packages:
|
||||
- libsdl2-mixer-dev
|
||||
- libpng-dev
|
||||
- libgl1-mesa-dev
|
||||
- libgme-dev
|
||||
- p7zip-full
|
||||
- clang-3.7
|
||||
compiler: clang-3.7
|
||||
#Ubuntu clang version 3.7.1-svn253571-1~exp1 (branches/release_37) (based on LLVM 3.7.1)
|
||||
- os: linux
|
||||
addons:
|
||||
apt:
|
||||
sources:
|
||||
- llvm-toolchain-precise-3.8
|
||||
- ubuntu-toolchain-r-test
|
||||
packages:
|
||||
- libsdl2-mixer-dev
|
||||
- libpng-dev
|
||||
- libgl1-mesa-dev
|
||||
- libgme-dev
|
||||
- p7zip-full
|
||||
- clang-3.8
|
||||
compiler: clang-3.8
|
||||
#clang version 3.8.1-svn271127-1~exp1 (branches/release_38)
|
||||
- os: linux
|
||||
addons:
|
||||
apt:
|
||||
sources:
|
||||
- llvm-toolchain-precise-3.9
|
||||
- ubuntu-toolchain-r-test
|
||||
packages:
|
||||
- libsdl2-mixer-dev
|
||||
- libpng-dev
|
||||
- libgl1-mesa-dev
|
||||
- libgme-dev
|
||||
- p7zip-full
|
||||
- clang-3.9
|
||||
compiler: clang-3.9
|
||||
#clang version 3.9.X
|
||||
# - os: linux
|
||||
# addons:
|
||||
# apt:
|
||||
# sources:
|
||||
# - llvm-toolchain-precise-4.0
|
||||
# - ubuntu-toolchain-r-test
|
||||
# packages:
|
||||
# - libsdl2-mixer-dev
|
||||
# - libpng-dev
|
||||
# - libgl1-mesa-dev
|
||||
# - libgme-dev
|
||||
# - p7zip-full
|
||||
# - clang-4.0
|
||||
# compiler: clang-4.0
|
||||
# #clang version 4.0.X
|
||||
# - os: linux
|
||||
# addons:
|
||||
# apt:
|
||||
# sources:
|
||||
# - llvm-toolchain-precise-5.0
|
||||
# - ubuntu-toolchain-r-test
|
||||
# packages:
|
||||
# - libsdl2-mixer-dev
|
||||
# - libpng-dev
|
||||
# - libgl1-mesa-dev
|
||||
# - libgme-dev
|
||||
# - p7zip-full
|
||||
# - clang-5.0
|
||||
# compiler: clang-5.0
|
||||
# #clang version 5.0.X
|
||||
# - os: osx
|
||||
# osx_image: beta-xcode6.1
|
||||
# #Apple LLVM version 6.0 (clang-600.0.54) (based on LLVM 3.5svn)
|
||||
# - os: osx
|
||||
# osx_image: beta-xcode6.2
|
||||
# compiler: gcc
|
||||
# #Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn)
|
||||
## - os: osx
|
||||
## osx_image: beta-xcode6.3
|
||||
## #I think xcode.6.3 VM is broken, it does not boot
|
||||
# - os: osx
|
||||
# osx_image: xcode6.4
|
||||
# #Apple LLVM version 6.1.0 (clang-602.0.53) (based on LLVM 3.6.0svn)
|
||||
# - os: osx
|
||||
# osx_image: xcode7
|
||||
# #Apple LLVM version 7.0.0 (clang-700.0.72)
|
||||
# - os: osx
|
||||
# osx_image: xcode7.1
|
||||
# #Apple LLVM version 7.0.0 (clang-700.1.76)
|
||||
# - os: osx
|
||||
# osx_image: xcode7.2
|
||||
# #Apple LLVM version 7.0.2 (clang-700.1.81)
|
||||
# - os: osx
|
||||
# osx_image: xcode7.3
|
||||
# #Apple LLVM version 7.3.0 (clang-703.0.31)
|
||||
- os: osx
|
||||
#Default: macOS 10.13 and Xcode 9.4.1
|
||||
- gcc-4.8
|
||||
compiler: gcc-4.8
|
||||
dist: xenial
|
||||
if: env(DPL_ENABLED) = "1" AND (env(_DPL_JOB_ENABLED) = "1" OR env(DPL_JOB_ENABLE_ALL) = "1")
|
||||
AND (branch =~ /^.*deployer.*$/ OR (tag IS present AND env(DPL_TAG_ENABLED) = "1"))
|
||||
AND env(DPL_TERMINATE_MAIN) != "1"
|
||||
env:
|
||||
- _DPL_JOB_ENABLED=1
|
||||
- _DPL_JOB_NAME=xenial
|
||||
- _DPL_DPUT_TARGET=1
|
||||
- _DPL_PACKAGE_SOURCE=1
|
||||
- PACKAGE_DISTRO=xenial
|
||||
- PACKAGE_SUBVERSION=~16.04xenial
|
||||
#gcc-4.8 (Ubuntu 4.8.5-2ubuntu1~14.04.1) 4.8.5
|
||||
allow_failures:
|
||||
- compiler: clang-3.5
|
||||
- compiler: clang-3.6
|
||||
|
@ -235,19 +580,25 @@ matrix:
|
|||
- compiler: clang-4.0
|
||||
- compiler: clang-5.0
|
||||
|
||||
|
||||
cache:
|
||||
apt: true
|
||||
ccache: true
|
||||
directories:
|
||||
- $HOME/srb2_cache
|
||||
|
||||
|
||||
addons:
|
||||
apt:
|
||||
sources:
|
||||
- sourceline: 'ppa:stjr/srb2'
|
||||
packages:
|
||||
- libsdl2-mixer-dev
|
||||
- libpng-dev
|
||||
- libgl1-mesa-dev
|
||||
- libgme-dev
|
||||
- zlib1g-dev
|
||||
- libopenmpt-dev
|
||||
- p7zip-full
|
||||
homebrew:
|
||||
taps:
|
||||
|
@ -256,22 +607,120 @@ addons:
|
|||
- sdl2_mixer
|
||||
- game-music-emu
|
||||
- p7zip
|
||||
- libopenmpt
|
||||
- cmake
|
||||
update: true
|
||||
|
||||
|
||||
before_script:
|
||||
- wget --verbose --server-response -c http://rosenthalcastle.org/srb2/SRB2-v2115-assets-2.7z -O $HOME/srb2_cache/SRB2-v2115-assets-2.7z
|
||||
- 7z x $HOME/srb2_cache/SRB2-v2115-assets-2.7z -oassets
|
||||
- mkdir build
|
||||
- cd build
|
||||
- export CFLAGS="-Wall -W -Werror $WFLAGS"
|
||||
- export CCACHE_COMPRESS=true
|
||||
- cmake .. -DCMAKE_BUILD_TYPE=Release
|
||||
|
||||
before_install:
|
||||
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then curl -O -L https://www.libsdl.org/release/SDL2-2.0.6.dmg; hdiutil attach SDL2-2.0.6.dmg; sudo cp -a /Volumes/SDL2/SDL2.framework /Library/Frameworks/; fi
|
||||
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then curl -O -L https://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-2.0.1.dmg; hdiutil attach SDL2_mixer-2.0.1.dmg; sudo cp -a /Volumes/SDL2_mixer/SDL2_mixer.framework /Library/Frameworks/; fi
|
||||
# Initialize Deployer defaults
|
||||
- . ./deployer/travis/deployer_defaults.sh
|
||||
|
||||
# Initialize Deployer; check if Deployer is enabled
|
||||
# This needs to be run in the current shell so that $__DPL_ACTIVE is set for this session
|
||||
- . ./deployer/travis/deployer.sh
|
||||
|
||||
# Also check if we should now terminate -- see `deployer.sh` for conditions.
|
||||
# This should never happen on non-release buildbots when Deployer is not triggered.
|
||||
- if [[ "$__DPL_TRY_TERMINATE_EARLY" == "1" ]]; then
|
||||
if [[ "$__DPL_ACTIVE" != "1" ]]; then
|
||||
echo "Exiting early because this job is not deploying.";
|
||||
exit;
|
||||
fi;
|
||||
fi
|
||||
|
||||
# If we're triggered by release tag, force ASSET_FILES_OPTIONAL_GET=1
|
||||
- if [[ "$__DPL_TAG_ELIGIBLE" = "1" ]]; then
|
||||
ASSET_FILES_OPTIONAL_GET=1;
|
||||
fi;
|
||||
|
||||
|
||||
install:
|
||||
# Install OS X library dependencies via Homebrew
|
||||
# Do this differently for release buildbots:
|
||||
# * `brew install --build-bottle` builds libraries for x86_64's lowest common denominator CPU, core2
|
||||
# * `sdl2_mixer` requires options from the formula tap https://github.com/mazmazz/homebrew-srb2
|
||||
# * `brew postinstall` runs post-install scripts after building a bottle
|
||||
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
|
||||
if [[ "$__DPL_ACTIVE" == "1" ]]; then
|
||||
brew install --build-bottle sdl2 game-music-emu;
|
||||
brew install --build-bottle mazmazz/srb2/sdl2_mixer --with-flac --with-mpg123;
|
||||
brew postinstall sdl2 game-music-emu mazmazz/srb2/sdl2_mixer;
|
||||
fi;
|
||||
fi
|
||||
- mkdir -p $HOME/srb2_cache
|
||||
|
||||
script: make -k
|
||||
|
||||
before_script:
|
||||
# OLDPWD is root repo folder
|
||||
- OLDPWD=$PWD
|
||||
- __ASSET_DIRECTORY="$OLDPWD/assets/installer"
|
||||
- mkdir -p "$__ASSET_DIRECTORY"
|
||||
- cd "$HOME/srb2_cache"
|
||||
|
||||
# Get stat command so we know what the cached archive date is.
|
||||
# stat is different for OSX
|
||||
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
|
||||
STATCMD="stat -f %m";
|
||||
else
|
||||
STATCMD="stat -c %y";
|
||||
fi
|
||||
|
||||
# Get asset files (required for MD5)
|
||||
# See `deployer_defaults.sh` for asset download path
|
||||
- if [[ "$ASSET_ARCHIVE_PATH" != "" ]]; then
|
||||
if [ -f "$(basename $ASSET_ARCHIVE_PATH)" ]; then
|
||||
echo "$(basename $ASSET_ARCHIVE_PATH) cache date -- $($STATCMD $(basename $ASSET_ARCHIVE_PATH))";
|
||||
fi;
|
||||
wget --verbose --server-response -N "$ASSET_ARCHIVE_PATH";
|
||||
7z x "$(basename $ASSET_ARCHIVE_PATH)" -o"$__ASSET_DIRECTORY" -aos;
|
||||
fi;
|
||||
|
||||
# Get optional files too
|
||||
- if [[ "$__DPL_ACTIVE" == "1" ]] && [[ "$ASSET_FILES_OPTIONAL_GET" == "1" ]] && [[ "$ASSET_ARCHIVE_OPTIONAL_PATH" != "" ]]; then
|
||||
if [ -f "$(basename $ASSET_ARCHIVE_OPTIONAL_PATH)" ]; then
|
||||
echo "$(basename $ASSET_ARCHIVE_OPTIONAL_PATH) cache date -- $($STATCMD $(basename $ASSET_ARCHIVE_OPTIONAL_PATH))";
|
||||
fi;
|
||||
wget --verbose --server-response -N "$ASSET_ARCHIVE_OPTIONAL_PATH";
|
||||
7z x "$(basename $ASSET_ARCHIVE_OPTIONAL_PATH)" -o"$__ASSET_DIRECTORY" -aos;
|
||||
fi;
|
||||
|
||||
# Go back to root repo folder
|
||||
- cd "$OLDPWD"
|
||||
|
||||
# Prepare CMake asset lists
|
||||
- SRB2_ASSET_HASHED=$(echo ${ASSET_FILES_HASHED// /\;})
|
||||
- SRB2_ASSET_DOCS=$(echo ${ASSET_FILES_DOCS// /\;})
|
||||
- SRB2_ASSET_DIRECTORY="$__ASSET_DIRECTORY"
|
||||
|
||||
# Prepare CMake
|
||||
- mkdir build
|
||||
- cd build
|
||||
- mkdir package
|
||||
- export CFLAGS="-Wall -W -Werror $WFLAGS"
|
||||
- export CCACHE_COMPRESS=true
|
||||
# If OS X, set -march=core2 to build compatible binaries with old Macs
|
||||
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
|
||||
export CFLAGS="${CFLAGS} -march=core2";
|
||||
fi;
|
||||
- cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PWD/bin -DCPACK_PACKAGE_DIRECTORY=$PWD/package
|
||||
-DSRB2_ASSET_HASHED="${SRB2_ASSET_HASHED}" -DSRB2_ASSET_DOCS="${SRB2_ASSET_DOCS}"
|
||||
-DSRB2_ASSET_DIRECTORY="${SRB2_ASSET_DIRECTORY}"
|
||||
-DCPACK_PACKAGE_DESCRIPTION_SUMMARY="${PROGRAM_NAME}"
|
||||
-DCPACK_PACKAGE_VENDOR="${PROGRAM_VENDOR}"
|
||||
-DSRB2_SDL2_EXE_NAME="${PROGRAM_FILENAME}"
|
||||
|
||||
script:
|
||||
# Build our Makefile from Cmake!
|
||||
- if [[ "$__DPL_ACTIVE" == "1" ]]; then
|
||||
. ../deployer/travis/deployer_build.sh;
|
||||
else
|
||||
make -k;
|
||||
fi;
|
||||
|
||||
after_success:
|
||||
# Run the upload scripts
|
||||
# These do nothing if Deployer is not triggered
|
||||
- . ../deployer/travis/deployer_ftp.sh
|
||||
- . ../deployer/travis/deployer_dput.sh
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
cmake_minimum_required(VERSION 3.0)
|
||||
# DO NOT CHANGE THIS SRB2 STRING! Some variable names depend on this string.
|
||||
# Version change is fine.
|
||||
project(SRB2
|
||||
VERSION 2.1.23
|
||||
VERSION 2.1.24
|
||||
LANGUAGES C)
|
||||
|
||||
if(${PROJECT_SOURCE_DIR} MATCHES ${PROJECT_BINARY_DIR})
|
||||
|
@ -92,8 +94,8 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
|
|||
set(CMAKE_PDB_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
|
||||
|
||||
# Set EXE names so the assets CMakeLists can refer to its target
|
||||
set(SRB2_SDL2_EXE_NAME srb2)
|
||||
set(SRB2_WIN_EXE_NAME srb2dd)
|
||||
set(SRB2_SDL2_EXE_NAME srb2 CACHE STRING "Executable binary output name")
|
||||
set(SRB2_WIN_EXE_NAME srb2dd CACHE STRING "Executable binary output name for DirectDraw build")
|
||||
|
||||
include_directories(${CMAKE_CURRENT_BINARY_DIR}/src)
|
||||
|
||||
|
@ -122,8 +124,8 @@ if(${CMAKE_SYSTEM} MATCHES "Darwin")
|
|||
set(CPACK_GENERATOR "DragNDrop")
|
||||
endif()
|
||||
|
||||
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Sonic Robo Blast 2")
|
||||
set(CPACK_PACKAGE_VENDOR "Sonic Team Jr.")
|
||||
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Sonic Robo Blast 2" CACHE STRING "Program name for display purposes")
|
||||
set(CPACK_PACKAGE_VENDOR "Sonic Team Jr." CACHE STRING "Vendor name for display purposes")
|
||||
#set(CPACK_PACKAGE_DESCRIPTION_FILE )
|
||||
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
|
||||
set(CPACK_PACKAGE_VERSION_MAJOR ${SRB2_VERSION_MAJOR})
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
- SDL2-Mixer (Linux/OS X only)
|
||||
- libupnp (Linux/OS X only)
|
||||
- libgme (Linux/OS X only)
|
||||
- libopenmpt (Linux/OS X only)
|
||||
|
||||
## Compiling
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
version: 2.1.23.{branch}-{build}
|
||||
version: 2.1.24.{branch}-{build}
|
||||
os: MinGW
|
||||
|
||||
environment:
|
||||
|
|
11
assets/.gitignore
vendored
11
assets/.gitignore
vendored
|
@ -1,5 +1,10 @@
|
|||
*
|
||||
*.*
|
||||
*.srb
|
||||
*.pk3
|
||||
*.dta
|
||||
*.wad
|
||||
*.txt
|
||||
!README.txt
|
||||
!LICENSE.txt
|
||||
!LICENSE-3RD-PARTY.txt
|
||||
!LICENSE-3RD-PARTY.txt
|
||||
!CMakeLists.txt
|
||||
!debian-template/*
|
||||
|
|
|
@ -1,40 +1,58 @@
|
|||
## Assets Target Configuration ##
|
||||
|
||||
# MD5 generation
|
||||
set(SRB2_ASSET_ALL
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/srb2.srb
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/player.dta
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/rings.dta
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/zones.dta
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/patch.dta
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/music.dta
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/README.txt
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.txt
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/LICENSE-3RD-PARTY.txt
|
||||
)
|
||||
# For prepending the current source path, later
|
||||
FUNCTION(PREPEND var prefix)
|
||||
SET(listVar "")
|
||||
FOREACH(f ${ARGN})
|
||||
LIST(APPEND listVar "${prefix}/${f}")
|
||||
ENDFOREACH(f)
|
||||
SET(${var} "${listVar}" PARENT_SCOPE)
|
||||
ENDFUNCTION(PREPEND)
|
||||
|
||||
set(SRB2_ASSET_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/installer"
|
||||
CACHE STRING "Path to directory that contains all asset files for the installer.")
|
||||
|
||||
set(SRB2_ASSET_HASHED
|
||||
srb2.srb
|
||||
player.dta
|
||||
rings.dta
|
||||
zones.dta
|
||||
patch.dta
|
||||
"srb2.srb;\
|
||||
player.dta;\
|
||||
rings.dta;\
|
||||
zones.dta;\
|
||||
patch.dta"
|
||||
CACHE STRING "Asset filenames to apply MD5 checks. No spaces between entries!"
|
||||
)
|
||||
|
||||
set(SRB2_ASSET_DOCS
|
||||
"README.txt;\
|
||||
LICENSE.txt;\
|
||||
LICENSE-3RD-PARTY.txt"
|
||||
CACHE STRING "Documentation filenames. In OS X, these are packaged separately from other assets. No spaces between entries!"
|
||||
)
|
||||
|
||||
PREPEND(SRB2_ASSET_DOCS ${SRB2_ASSET_DIRECTORY} ${SRB2_ASSET_DOCS})
|
||||
|
||||
foreach(SRB2_ASSET ${SRB2_ASSET_HASHED})
|
||||
file(MD5 ${CMAKE_CURRENT_SOURCE_DIR}/${SRB2_ASSET} "SRB2_ASSET_${SRB2_ASSET}_HASH")
|
||||
file(MD5 ${SRB2_ASSET_DIRECTORY}/${SRB2_ASSET} "SRB2_ASSET_${SRB2_ASSET}_HASH")
|
||||
set(SRB2_ASSET_${SRB2_ASSET}_HASH ${SRB2_ASSET_${SRB2_ASSET}_HASH} PARENT_SCOPE)
|
||||
endforeach()
|
||||
|
||||
# Installation
|
||||
|
||||
if(CLANG)
|
||||
if(${CMAKE_SYSTEM} MATCHES Darwin)
|
||||
get_target_property(outname SRB2SDL2 OUTPUT_NAME)
|
||||
install(FILES ${SRB2_ASSET_ALL}
|
||||
install(DIRECTORY "${SRB2_ASSET_DIRECTORY}/"
|
||||
DESTINATION "${outname}.app/Contents/Resources"
|
||||
)
|
||||
install(FILES ${SRB2_ASSET_DOCS}
|
||||
DESTINATION .
|
||||
OPTIONAL
|
||||
)
|
||||
else()
|
||||
install(FILES ${SRB2_ASSET_ALL}
|
||||
install(DIRECTORY "${SRB2_ASSET_DIRECTORY}/"
|
||||
DESTINATION .
|
||||
)
|
||||
# Docs are assumed to be located in SRB2_ASSET_DIRECTORY, so don't install again
|
||||
#install(FILES ${SRB2_ASSET_DOCS}
|
||||
# DESTINATION .
|
||||
# OPTIONAL
|
||||
#)
|
||||
endif()
|
||||
|
|
|
@ -12,9 +12,39 @@ with apt-key add. Thanks!
|
|||
-- Callum Dickinson <gcfreak_ag20@hotmail.com> Fri, 26 Nov 2010 18:25:31 +1300
|
||||
|
||||
|
||||
---------------
|
||||
|
||||
|
||||
Templating
|
||||
|
||||
Note that you MUST run [repo-root]/debian_template.sh before running debuild
|
||||
on these scripts! debian_template.sh fills these template files with working values.
|
||||
|
||||
You should also set PACKAGE_NAME_EMAIL="John Doe <jdoe@example.com>" to match
|
||||
the identity of the key you will use to sign the package.
|
||||
|
||||
|
||||
Building for Launchpad PPA
|
||||
|
||||
Run this step first:
|
||||
|
||||
1. source [repo-root]/debian_template.sh
|
||||
* Initializes defaults for the package variables and fills in templates.
|
||||
|
||||
Use these steps to prepare building a source package for Launchpad:
|
||||
|
||||
1. cd [repo-root]/assets/
|
||||
2. debuild -T clean-all (optional; if you already have asset files, this clears them)
|
||||
|
||||
Build the source package:
|
||||
|
||||
1. debuild -T build (this downloads the asset files from srb2.org if necessary)
|
||||
2. debuild -S (builds the source package for Launchpad, including the asset files)
|
||||
|
||||
|
||||
Signing for Launchpad PPA
|
||||
|
||||
First, follow the above instructions to generate a GnuPG key with your identity. You will need
|
||||
First, follow Callum's instructions to generate a GnuPG key with your identity. You will need
|
||||
to publish the fingerprint of that key to Ubuntu's key server.
|
||||
|
||||
https://help.ubuntu.com/community/GnuPrivacyGuardHowto#Uploading_the_key_to_Ubuntu_keyserver
|
||||
|
@ -26,22 +56,18 @@ upload signed source packages and publish them onto your PPA.
|
|||
IF YOU UPLOAD A PACKAGE and Launchpad does NOT send you a confirmation or rejection email, that
|
||||
means your key is not set up correctly with your Launchpad account.
|
||||
|
||||
Finally, if your packages have not already been signed, follow these steps:
|
||||
|
||||
Building for Launchpad PPA
|
||||
1. cd ..
|
||||
* Packages are located in the parent folder of where debuild was called
|
||||
2. debsign "srb2-data_[version]_source.changes"
|
||||
* You may need to specify -k [key-fingerprint]
|
||||
|
||||
Use these steps to prepare building a source package for Launchpad:
|
||||
|
||||
1. Highly recommend copying the assets/ folder to outside your repo folder, or else the asset
|
||||
files may be included in the main source package, when you build that.
|
||||
2. cd [wherever-your-assets-folder-is]/assets/
|
||||
3. debuild -T clean (optional, if you already have asset files)
|
||||
Uploading for Launchpad PPA
|
||||
|
||||
Building the source package is a two-step process:
|
||||
|
||||
1. debuild -T build (this downloads the asset files from srb2.org if necessary)
|
||||
2. debuild -S (builds the source package for Launchpad, including the asset files)
|
||||
|
||||
Then follow the instructions at <https://help.launchpad.net/Packaging/PPA/Uploading> to upload
|
||||
Follow the instructions at <https://help.launchpad.net/Packaging/PPA/Uploading> to upload
|
||||
to your PPA and have Launchpad build your binary deb packages.
|
||||
|
||||
|
||||
-- Marco Zafra <marco.a.zafra@gmail.com> Mon, 26 Nov 2018 21:13:00 -0500
|
5
assets/debian-template/changelog
Normal file
5
assets/debian-template/changelog
Normal file
|
@ -0,0 +1,5 @@
|
|||
${PACKAGE_NAME}-data (${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION}) ${PACKAGE_DISTRO}; urgency=${PACKAGE_URGENCY}
|
||||
|
||||
* ${PROGRAM_NAME} v${PROGRAM_VERSION} asset data
|
||||
|
||||
-- ${PACKAGE_NAME_EMAIL} ${__PACKAGE_DATETIME}
|
|
@ -1,15 +1,15 @@
|
|||
# SRB2-data Debian package control file.
|
||||
|
||||
Source: srb2-data
|
||||
Source: ${PACKAGE_NAME}-data
|
||||
Section: games
|
||||
Priority: extra
|
||||
Maintainer: Sonic Team Junior <stjr@srb2.org>
|
||||
Maintainer: ${PACKAGE_GROUP_NAME_EMAIL}
|
||||
Build-Depends: debhelper (>= 7.0.50~),
|
||||
wget
|
||||
Standards-Version: 3.8.4
|
||||
Homepage: http://www.srb2.org
|
||||
Homepage: ${PACKAGE_WEBSITE}
|
||||
|
||||
Package: srb2-data
|
||||
Package: ${PACKAGE_NAME}-data
|
||||
Architecture: all
|
||||
Description: A cross-platform 3D Sonic fangame
|
||||
Sonic Robo Blast 2 is a 3D open-source Sonic the Hedgehog
|
|
@ -1,18 +1,18 @@
|
|||
This work was packaged for Debian by:
|
||||
|
||||
Marco Zafra <marco.a.zafra@gmail.com> Mon, 26 Nov 2018 14:31:00 -0500
|
||||
${PACKAGE_NAME_EMAIL} ${__PACKAGE_DATETIME}
|
||||
|
||||
It was downloaded from:
|
||||
|
||||
<http://srb2.org>
|
||||
${PACKAGE_WEBSITE}
|
||||
|
||||
Upstream Author(s):
|
||||
|
||||
Sonic Team Junior <stjr@srb2.org>
|
||||
${PACKAGE_GROUP_NAME_EMAIL}
|
||||
|
||||
Copyright:
|
||||
|
||||
Copyright (C) 1998-2018 Sonic Team Junior
|
||||
Copyright (C) 1998-2018 by Sonic Team Junior
|
||||
|
||||
License:
|
||||
|
||||
|
@ -21,7 +21,7 @@ License:
|
|||
The Debian packaging is:
|
||||
|
||||
Copyright (C) 2010 Callum Dickinson <gcfreak_ag20@hotmail.com>
|
||||
Copyright (C) 2010-2018 Sonic Team Junior <stjr@srb2.org>
|
||||
Copyright (C) 2010-2018 by Sonic Team Junior <stjr@srb2.org>
|
||||
|
||||
and is licensed under the GPL version 2,
|
||||
see "/usr/share/common-licenses/GPL-2".
|
42
assets/debian/rules → assets/debian-template/rules
Executable file → Normal file
42
assets/debian/rules → assets/debian-template/rules
Executable file → Normal file
|
@ -23,6 +23,16 @@
|
|||
#
|
||||
#############################################################################
|
||||
|
||||
#############################################################################
|
||||
#
|
||||
# !!!!!!!!!! DEPLOYER NOTE !!!!!!!!!!
|
||||
#
|
||||
# Variables to be templated are curly-braced ${PACKAGE_INSTALL_PATH}
|
||||
# Variables used by the rules script are parenthese'd $(DATADIR)
|
||||
# See [repo-root]/debian_template.sh
|
||||
#
|
||||
#############################################################################
|
||||
|
||||
# Uncomment this to turn on verbose mode.
|
||||
#export DH_VERBOSE=1
|
||||
|
||||
|
@ -37,30 +47,32 @@ RM := rm -rf
|
|||
DIR := $(shell pwd)
|
||||
|
||||
PACKAGE := $(shell cat $(DIR)/debian/control | grep 'Package:' | sed -e 's/Package: //g')
|
||||
DATAFILES := srb2.srb zones.dta player.dta rings.dta music.dta patch.dta README.txt LICENSE.txt LICENSE-3RD-PARTY.txt
|
||||
ARCHIVEPATH := ${ASSET_ARCHIVE_PATH}
|
||||
ARCHIVEOPTIONALPATH := ${ASSET_ARCHIVE_OPTIONAL_PATH}
|
||||
GETOPTIONALFILES := ${ASSET_FILES_OPTIONAL_GET}
|
||||
|
||||
DATADIR := usr/games/SRB2
|
||||
DATADIR := $(shell echo "${PACKAGE_INSTALL_PATH}" | sed -e 's/^\///')
|
||||
RESOURCEDIR := .
|
||||
STAGINGDIR := $(RESOURCEDIR)/installer
|
||||
WGET := wget -P $(RESOURCEDIR) -c -nc
|
||||
|
||||
build:
|
||||
$(MKDIR) $(DIR)/debian/tmp/$(DATADIR)
|
||||
> $(DIR)/debian/source/include-binaries
|
||||
# This will need to be updated every time SRB2 official version is
|
||||
# Copy data files to their install locations, and add data files to include-binaries
|
||||
for file in $(DATAFILES); do \
|
||||
if [ ! -f $(RESOURCEDIR)/$$file ]; then \
|
||||
$(WGET) http://alam.srb2.org/SRB2/2.1.21-Final/Resources/$$file; \
|
||||
if [ ! -d $(STAGINGDIR) ]; then \
|
||||
mkdir -p "$(STAGINGDIR)"; \
|
||||
$(WGET) $(ARCHIVEPATH); \
|
||||
7z x "$(RESOURCEDIR)/$(shell basename $(ARCHIVEPATH))" -aos; \
|
||||
if [ "$(GETOPTIONALFILES)" = "1" ]; then \
|
||||
$(WGET) $(ARCHIVEOPTIONALPATH); \
|
||||
7z x "$(RESOURCEDIR)/$(shell basename $(ARCHIVEOPTIONALPATH))" -aos; \
|
||||
fi; \
|
||||
if [ -f $(RESOURCEDIR)/$$file ]; then \
|
||||
$(INSTALL) $(RESOURCEDIR)/$$file $(DIR)/debian/tmp/$(DATADIR)/$$file; \
|
||||
echo $(RESOURCEDIR)/$$file >> $(DIR)/debian/source/include-binaries; \
|
||||
fi; \
|
||||
if [ ! -f $(DIR)/debian/tmp/$(DATADIR)/$$file ]; then \
|
||||
echo $(DIR)/debian/tmp/$(DATADIR)/$$file not found and could not be downloaded!; \
|
||||
return 1; \
|
||||
fi; \
|
||||
done
|
||||
fi
|
||||
# Install asset directory and add asset file to include-binaries
|
||||
cp -vr "$(STAGINGDIR)/." "$(DIR)/debian/tmp/$(DATADIR)"
|
||||
find "$(STAGINGDIR)" >> $(DIR)/debian/source/include-binaries
|
||||
|
||||
|
||||
binary-indep:
|
||||
# Generate install folder file
|
|
@ -1,19 +0,0 @@
|
|||
srb2-data (2.1.21~7) trusty; urgency=high
|
||||
|
||||
* Updated for SRB2 v2.1.21
|
||||
|
||||
-- Marco Zafra <marco.a.zafra@gmail.com> Mon, 26 Nov 2018 14:31:00 -0500
|
||||
|
||||
|
||||
srb2-data (2.1.14~1) unstable; urgency=low
|
||||
|
||||
* Updated for SRB2 v2.1.14
|
||||
|
||||
-- Alam Arias <alam+debian@srb2.org> Sat, 6 Jan 2016 11:00:00 -0500
|
||||
|
||||
|
||||
srb2-data (2.0.6-2) maverick; urgency=high
|
||||
|
||||
* Initial proper release..
|
||||
|
||||
-- Callum Dickinson <gcfreak_ag20@hotmail.com> Sat, 29 Jan 2011 01:18:42 +1300
|
23
cmake/Modules/FindOPENMPT.cmake
Normal file
23
cmake/Modules/FindOPENMPT.cmake
Normal file
|
@ -0,0 +1,23 @@
|
|||
include(LibFindMacros)
|
||||
|
||||
libfind_pkg_check_modules(OPENMPT_PKGCONF OPENMPT)
|
||||
|
||||
find_path(OPENMPT_INCLUDE_DIR
|
||||
NAMES libopenmpt.h
|
||||
PATHS
|
||||
${OPENMPT_PKGCONF_INCLUDE_DIRS}
|
||||
"/usr/include/libopenmpt"
|
||||
"/usr/local/include/libopenmpt"
|
||||
)
|
||||
|
||||
find_library(OPENMPT_LIBRARY
|
||||
NAMES openmpt
|
||||
PATHS
|
||||
${OPENMPT_PKGCONF_LIBRARY_DIRS}
|
||||
"/usr/lib"
|
||||
"/usr/local/lib"
|
||||
)
|
||||
|
||||
set(OPENMPT_PROCESS_INCLUDES OPENMPT_INCLUDE_DIR)
|
||||
set(OPENMPT_PROCESS_LIBS OPENMPT_LIBRARY)
|
||||
libfind_process(OPENMPT)
|
|
@ -10,10 +10,38 @@ and give them to your users to install with apt-key add. Thanks!
|
|||
|
||||
-- Callum Dickinson <gcfreak_ag20@hotmail.com> Fri, 26 Nov 2010 18:25:31 +1300
|
||||
|
||||
---------------
|
||||
|
||||
|
||||
Templating
|
||||
|
||||
Note that you MUST run [repo-root]/debian_template.sh before running debuild
|
||||
on these scripts! debian_template.sh fills these template files with working values.
|
||||
|
||||
You should also set PACKAGE_NAME_EMAIL="John Doe <jdoe@example.com>" to match
|
||||
the identity of the key you will use to sign the package.
|
||||
|
||||
|
||||
Building for Launchpad PPA
|
||||
|
||||
Use these steps to prepare building a source package for Launchpad:
|
||||
|
||||
1. cd [repo-root]
|
||||
2. git reset --hard; git clean -fd; git clean -fx;
|
||||
* Resets your repo folder to a committed state and removes untracked files
|
||||
* If you built srb2-data in the assets/ folder, MAKE SURE THAT FOLDER DOES NOT HAVE ASSETS,
|
||||
OR THEY MAY BE INCLUDED IN THE MAIN SOURCE PACKAGE!
|
||||
|
||||
Build the source package:
|
||||
|
||||
1. source [repo-root]/debian_template.sh
|
||||
* Initializes defaults for the package variables and fills in templates.
|
||||
2. debuild -S (builds the source package for Launchpad)
|
||||
|
||||
|
||||
Signing for Launchpad PPA
|
||||
|
||||
First, follow the above instructions to generate a GnuPG key with your identity. You will need
|
||||
First, follow Callum's instructions to generate a GnuPG key with your identity. You will need
|
||||
to publish the fingerprint of that key to Ubuntu's key server.
|
||||
|
||||
https://help.ubuntu.com/community/GnuPrivacyGuardHowto#Uploading_the_key_to_Ubuntu_keyserver
|
||||
|
@ -25,22 +53,18 @@ upload signed source packages and publish them onto your PPA.
|
|||
IF YOU UPLOAD A PACKAGE and Launchpad does NOT send you a confirmation or rejection email, that
|
||||
means your key is not set up correctly with your Launchpad account.
|
||||
|
||||
Finally, if your packages have not already been signed, follow these steps:
|
||||
|
||||
Building for Launchpad PPA
|
||||
1. cd ..
|
||||
* Packages are located in the parent folder of where debuild was called
|
||||
2. debsign "srb2_[version]_source.changes"
|
||||
* You may need to specify -k [key-fingerprint]
|
||||
|
||||
Use these steps to prepare building a source package for Launchpad:
|
||||
|
||||
1. cd [srb2repo]
|
||||
2. git reset --hard; git clean -fd; git clean -fx;
|
||||
* Resets your repo folder to a committed state and removes untracked files
|
||||
* If you built srb2-data in the assets/ folder, MAKE SURE THAT FOLDER DOES NOT HAVE ASSETS,
|
||||
OR THEY MAY BE INCLUDED IN THE MAIN SOURCE PACKAGE!
|
||||
Uploading for Launchpad PPA
|
||||
|
||||
Building the source package takes just one step:
|
||||
|
||||
1. debuild -S (builds the source package for Launchpad)
|
||||
|
||||
Then follow the instructions at <https://help.launchpad.net/Packaging/PPA/Uploading> to upload
|
||||
Follow the instructions at <https://help.launchpad.net/Packaging/PPA/Uploading> to upload
|
||||
to your PPA and have Launchpad build your binary deb packages.
|
||||
|
||||
|
||||
-- Marco Zafra <marco.a.zafra@gmail.com> Mon, 26 Nov 2018 21:13:00 -0500
|
5
debian-template/changelog
Normal file
5
debian-template/changelog
Normal file
|
@ -0,0 +1,5 @@
|
|||
${PACKAGE_NAME} (${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION}) ${PACKAGE_DISTRO}; urgency=${PACKAGE_URGENCY}
|
||||
|
||||
* ${PROGRAM_NAME} v${PROGRAM_VERSION} program build
|
||||
|
||||
-- ${PACKAGE_NAME_EMAIL} ${__PACKAGE_DATETIME}
|
|
@ -1,24 +1,30 @@
|
|||
# SRB2 Debian package control file.
|
||||
|
||||
Source: srb2
|
||||
Source: ${PACKAGE_NAME}
|
||||
Section: games
|
||||
Priority: extra
|
||||
Maintainer: Sonic Team Junior <stjr@srb2.org>
|
||||
Maintainer: ${PACKAGE_GROUP_NAME_EMAIL}
|
||||
Build-Depends: debhelper (>= 7.0.50~),
|
||||
libsdl2-dev,
|
||||
libsdl2-mixer-dev,
|
||||
libpng12-dev (>= 1.2.7) | libpng-dev,
|
||||
libpng-dev | libpng16-dev | libpng12-dev (>= 1.2.7),
|
||||
zlib1g-dev,
|
||||
libgme-dev,
|
||||
libglu1-dev | libglu-dev,
|
||||
libosmesa6-dev | libgl-dev,
|
||||
nasm [i386]
|
||||
Standards-Version: 3.8.4
|
||||
Homepage: http://www.srb2.org
|
||||
Homepage: ${PACKAGE_WEBSITE}
|
||||
|
||||
Package: srb2
|
||||
Package: ${PACKAGE_NAME}
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}, srb2-data (>= 2.1.15), srb2-data (<= 2.1.23)
|
||||
Depends: ${SHLIBS_DEPENDS}, ${MISC_DEPENDS},
|
||||
${PACKAGE_NAME}-data (>> ${PACKAGE_ASSET_MINVERSION}), ${PACKAGE_NAME}-data (<< ${PACKAGE_ASSET_MAXVERSION}),
|
||||
libsdl2-2.0-0,
|
||||
libsdl2-mixer-2.0-0,
|
||||
zlib1g,
|
||||
libgme0,
|
||||
libpng | libpng16-16 | libpng12-0
|
||||
Description: A cross-platform 3D Sonic fangame
|
||||
Sonic Robo Blast 2 is a 3D open-source Sonic the Hedgehog
|
||||
fangame built using a modified version of the Doom Legacy
|
||||
|
@ -28,10 +34,10 @@ Description: A cross-platform 3D Sonic fangame
|
|||
and quite a lot of the fun that the original Sonic games provided.
|
||||
|
||||
|
||||
Package: srb2-dbg
|
||||
Package: ${PACKAGE_NAME}-dbg
|
||||
Architecture: any
|
||||
# FIXME: should be Depends: ${shlibs:Depends}, ${misc:Depends}, srb2-data (= 2.1.14), srb2 but dh_shlibdeps is being an asshat
|
||||
Depends: libc6, ${misc:Depends}, srb2-data (>= 2.1.15), srb2-data (<= 2.1.23), srb2
|
||||
# FIXME: should be Depends: ${SHLIBS_DEPENDS}, ${MISC_DEPENDS}, srb2-data (= 2.1.14), srb2 but dh_shlibdeps is being an asshat
|
||||
Depends: libc6, ${MISC_DEPENDS}, ${PACKAGE_NAME}-data (>> ${PACKAGE_ASSET_MINVERSION}), ${PACKAGE_NAME}-data (<< ${PACKAGE_ASSET_MAXVERSION}), ${PACKAGE_NAME}
|
||||
Description: A cross-platform 3D Sonic fangame
|
||||
Sonic Robo Blast 2 is a 3D open-source Sonic the Hedgehog
|
||||
fangame built using a modified version of the Doom Legacy
|
|
@ -1,18 +1,18 @@
|
|||
This work was packaged for Debian by:
|
||||
|
||||
Marco Zafra <marco.a.zafra@gmail.com> Mon, 26 Nov 2018 14:31:00 -0500
|
||||
${PACKAGE_NAME_EMAIL} ${__PACKAGE_DATETIME}
|
||||
|
||||
It was downloaded from:
|
||||
|
||||
<http://srb2.org>
|
||||
${PACKAGE_WEBSITE}
|
||||
|
||||
Upstream Author(s):
|
||||
|
||||
Sonic Team Junior <stjr@srb2.org>
|
||||
${PACKAGE_GROUP_NAME_EMAIL}
|
||||
|
||||
Copyright:
|
||||
|
||||
Copyright (C) 1998-2018 Sonic Team Junior
|
||||
Copyright (C) 1998-2018 by Sonic Team Junior
|
||||
|
||||
License:
|
||||
|
||||
|
@ -21,7 +21,7 @@ License:
|
|||
The Debian packaging is:
|
||||
|
||||
Copyright (C) 2010 Callum Dickinson <gcfreak_ag20@hotmail.com>
|
||||
Copyright (C) 2010-2018 Sonic Team Junior <stjr@srb2.org>
|
||||
Copyright (C) 2010-2018 by Sonic Team Junior <stjr@srb2.org>
|
||||
|
||||
and is licensed under the GPL version 2,
|
||||
see "/usr/share/common-licenses/GPL-2".
|
26
debian/rules → debian-template/rules
Executable file → Normal file
26
debian/rules → debian-template/rules
Executable file → Normal file
|
@ -23,6 +23,16 @@
|
|||
#
|
||||
#############################################################################
|
||||
|
||||
#############################################################################
|
||||
#
|
||||
# !!!!!!!!!! DEPLOYER NOTE !!!!!!!!!!
|
||||
#
|
||||
# Variables to be templated are curly-braced ${PACKAGE_INSTALL_PATH}
|
||||
# Variables used by the rules script are parenthese'd $(PKGDIR)
|
||||
# See [repo-root]/debian_template.sh
|
||||
#
|
||||
#############################################################################
|
||||
|
||||
# Uncomment this to turn on verbose mode.
|
||||
#export DH_VERBOSE=1
|
||||
|
||||
|
@ -50,16 +60,16 @@ DIR := $(shell pwd)
|
|||
|
||||
# FIXME: hate hate hate head/tail hack :(
|
||||
CONTROLF = $(DIR)/debian/control
|
||||
PACKAGE = srb2
|
||||
DBGPKG = $(PACKAGE)-dbg
|
||||
TITLE = Sonic Robo Blast 2
|
||||
PACKAGE = ${PACKAGE_NAME}
|
||||
DBGPKG = ${PACKAGE}-dbg
|
||||
TITLE = ${PROGRAM_NAME}
|
||||
SECTION = Games/Action
|
||||
EXENAME = srb2
|
||||
EXENAME = ${PROGRAM_FILENAME}
|
||||
DBGNAME = debug/$(EXENAME)
|
||||
|
||||
PKGDIR = usr/games/SRB2
|
||||
PKGDIR = $(shell echo "${PACKAGE_INSTALL_PATH}" | sed -e 's/^\///')
|
||||
DBGDIR = usr/lib/debug/$(PKGDIR)
|
||||
LINKDIR = usr/games
|
||||
LINKDIR = $(shell echo "${PACKAGE_LINK_PATH}" | sed -e 's/^\///')
|
||||
PIXMAPS_DIR = usr/share/pixmaps
|
||||
DESKTOP_DIR = usr/share/applications
|
||||
PREFIX = $(shell test "$(CROSS_COMPILE_BUILD)" != "$(CROSS_COMPILE_HOST)" && echo "PREFIX=$(CROSS_COMPILE_HOST)")
|
||||
|
@ -102,8 +112,8 @@ binary-arch:
|
|||
$(INSTALL) $(BINDIR)/$(EXENAME) $(DIR)/debian/tmp/$(PKGDIR)/$(PACKAGE)
|
||||
$(INSTALL) $(BINDIR)/$(DBGNAME) $(DIR)/debian/tmp/$(DBGDIR)/$(PACKAGE)
|
||||
# Install desktop file and banner image
|
||||
$(INSTALL) $(DIR)/srb2.png $(DIR)/debian/tmp/usr/share/pixmaps
|
||||
$(INSTALL) $(DIR)/debian/srb2.desktop $(DIR)/debian/tmp/usr/share/applications
|
||||
$(INSTALL) $(DIR)/srb2.png $(DIR)/debian/tmp/usr/share/pixmaps/${PROGRAM_FILENAME}.png
|
||||
$(INSTALL) $(DIR)/debian/srb2.desktop $(DIR)/debian/tmp/usr/share/applications/${PROGRAM_FILENAME}.desktop
|
||||
# add compiled binaries to include-binaries
|
||||
echo $(BINDIR)/$(EXENAME) >> $(DIR)/debian/source/include-binaries
|
||||
echo $(BINDIR)/$(EXENAME) >> $(DIR)/debian/source/include-binaries
|
|
@ -2,7 +2,7 @@ tar-ignore = "assets/*.srb"
|
|||
tar-ignore = "assets/*.pk3"
|
||||
tar-ignore = "assets/*.dta"
|
||||
tar-ignore = "assets/*.wad"
|
||||
tar-ignore = "assets/debian/srb2-data/*"
|
||||
tar-ignore = "assets/debian/${PACKAGE_NAME}-data/*"
|
||||
tar-ignore = "assets/debian/tmp/*"
|
||||
tar-ignore = "*.obj"
|
||||
tar-ignore = "*.dep"
|
10
debian-template/srb2.desktop
Normal file
10
debian-template/srb2.desktop
Normal file
|
@ -0,0 +1,10 @@
|
|||
[Desktop Entry]
|
||||
Name=${PROGRAM_NAME}
|
||||
Comment=${PROGRAM_DESCRIPTION}
|
||||
Encoding=UTF-8
|
||||
Exec=${PACKAGE_INSTALL_PATH}/${PROGRAM_FILENAME}
|
||||
Icon=/usr/share/pixmaps/${PROGRAM_FILENAME}.png
|
||||
Terminal=false
|
||||
Type=Application
|
||||
StartupNotify=false
|
||||
Categories=Application;Game;
|
12
debian/changelog
vendored
12
debian/changelog
vendored
|
@ -1,12 +0,0 @@
|
|||
srb2 (2.1.23~9) trusty; urgency=high
|
||||
|
||||
* SRB2 v2.1.23 release
|
||||
|
||||
-- Marco Zafra <marco.a.zafra@gmail.com> Mon, 27 Nov 2018 16:45:00 -0500
|
||||
|
||||
|
||||
srb2 (2.0.6-5) maverick; urgency=high
|
||||
|
||||
* Initial proper release..
|
||||
|
||||
-- Callum Dickinson <gcfreak_ag20@hotmail.com> Sat, 29 Jan 2011 01:18:42 +1300
|
10
debian/srb2.desktop
vendored
10
debian/srb2.desktop
vendored
|
@ -1,10 +0,0 @@
|
|||
[Desktop Entry]
|
||||
Name=Sonic Robo Blast 2
|
||||
Comment=A free 3D Sonic the Hedgehog fangame closely inspired by the original Sonic games on the Sega Genesis.
|
||||
Encoding=UTF-8
|
||||
Exec=/usr/games/SRB2/srb2
|
||||
Icon=/usr/share/pixmaps/srb2.png
|
||||
Terminal=false
|
||||
Type=Application
|
||||
StartupNotify=false
|
||||
Categories=Application;Game;
|
166
debian_template.sh
Normal file
166
debian_template.sh
Normal file
|
@ -0,0 +1,166 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Deployer for Travis-CI
|
||||
# Debian package templating
|
||||
#
|
||||
# Call this script BEFORE running debuild!
|
||||
# source ./debian_template.sh [clean] [main/asset]
|
||||
#
|
||||
# Before running this script,
|
||||
# you should also set PACKAGE_NAME_EMAIL="John Doe <jdoe@example.com>" to match
|
||||
# the identity of the key you will use to sign the package.
|
||||
#
|
||||
|
||||
# Get script's actual path
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
|
||||
|
||||
# Recursive function for directory crawling
|
||||
# $1 = Directory root to crawl
|
||||
# $2 = Code to eval on file
|
||||
# $3 = Code to eval on directory
|
||||
# Exposes $dirtails, $dirlevel, and $dirtailname
|
||||
dirlevel=0 # initialize
|
||||
dirtails=()
|
||||
|
||||
# Utility function to make dira/dirb/dirc string
|
||||
makedirtailname () {
|
||||
dirtailname=""
|
||||
for tail in $dirtails; do
|
||||
if [[ "$dirtailname" == "" ]]; then
|
||||
dirtailname="/$tail";
|
||||
else
|
||||
dirtailname="$dirtailname/$tail";
|
||||
fi;
|
||||
done;
|
||||
}
|
||||
|
||||
evaldirectory () {
|
||||
if [ -d "$1" ]; then
|
||||
# Set contextual variables
|
||||
# dirtails is an array of directory basenames after the crawl root
|
||||
if (( $dirlevel > 0 )); then
|
||||
dirtails+=( "$(basename $1)" );
|
||||
else
|
||||
dirtails=();
|
||||
fi;
|
||||
dirlevel=$((dirlevel+1));
|
||||
|
||||
# Generate directory path after the crawl root
|
||||
makedirtailname;
|
||||
|
||||
# Eval our directory with the latest contextual info
|
||||
# Don't eval on root
|
||||
if (( $dirlevel > 1 )) && [[ "$3" != "" ]]; then
|
||||
eval "$3";
|
||||
fi;
|
||||
|
||||
# Iterate entries
|
||||
for name in $1/*; do
|
||||
if [ -d "$name" ]; then
|
||||
# Name is a directory, but don't eval yet
|
||||
# Recurse so our vars are updated
|
||||
evaldirectory "$name" "$2" "$3";
|
||||
|
||||
# Decrement our directory level and remove a dirtail
|
||||
unset 'dirtails[ ${#dirtails[@]}-1 ]';
|
||||
dirlevel=$((dirlevel-1));
|
||||
makedirtailname;
|
||||
else
|
||||
# Name is a file
|
||||
if [ -f "$name" ] && [[ "$2" != "" ]]; then
|
||||
eval "$2";
|
||||
fi;
|
||||
fi;
|
||||
done;
|
||||
|
||||
# Reset our variables; we're done iterating
|
||||
if (( $dirlevel == 1 )); then
|
||||
dirlevel=0;
|
||||
fi;
|
||||
fi;
|
||||
}
|
||||
|
||||
#
|
||||
# Initialize package parameter defaults
|
||||
#
|
||||
if [[ "$__DEBIAN_PARAMETERS_INITIALIZED" != "1" ]]; then
|
||||
. ${DIR}/deployer/travis/deployer_defaults.sh;
|
||||
fi;
|
||||
|
||||
# Clean up after ourselves; we only expect to run this script once
|
||||
# during buildboting
|
||||
__DEBIAN_PARAMETERS_INITIALIZED=0
|
||||
|
||||
# for envsubst
|
||||
export __PACKAGE_DATETIME="$(date '+%a, %d %b %Y %H:%M:%S %z')"
|
||||
export __PACKAGE_DATETIME_DIGIT="$(date -u '+%Y%m%d%H%M%S')"
|
||||
|
||||
if [[ "$PACKAGE_REVISION" == "" ]]; then
|
||||
PACKAGE_REVISION="-$__PACKAGE_DATETIME_DIGIT";
|
||||
__PACKAGE_REVISION_BY_DATE=1;
|
||||
export PACKAGE_REVISION=${PACKAGE_REVISION}; # for envsubst
|
||||
fi;
|
||||
|
||||
#
|
||||
# Clean the old debian/ directories
|
||||
#
|
||||
if [[ "$1" == "clean" ]]; then
|
||||
toclean=$2;
|
||||
else
|
||||
toclean=$1;
|
||||
fi;
|
||||
|
||||
if [[ "$toclean" == "" ]] || [[ "$toclean" == "main" ]]; then
|
||||
echo "Cleaning main package scripts";
|
||||
if [[ ! -f ${DIR}/debian ]]; then
|
||||
rm -rf ${DIR}/debian;
|
||||
fi;
|
||||
fi;
|
||||
if [[ "$toclean" == "" ]] || [[ "$toclean" == "asset" ]]; then
|
||||
echo "Cleaning asset package scripts";
|
||||
if [[ ! -f ${DIR}/assets/debian ]]; then
|
||||
rm -rf ${DIR}/assets/debian;
|
||||
fi;
|
||||
fi;
|
||||
|
||||
#
|
||||
# Make new templates
|
||||
#
|
||||
if [[ "$1" != "clean" ]]; then
|
||||
totemplate=$1;
|
||||
|
||||
# HACK: ${shlibs:Depends} in the templates make the templating fail
|
||||
# So just define replacemment variables
|
||||
export SHLIBS_DEPENDS=${SHLIBS_DEPENDS};
|
||||
export MISC_DEPENDS=${MISC_DEPENDS};
|
||||
export DEBFILEVAR='$$file'; # used in assets/debian/rules
|
||||
|
||||
# Package parameters are exported for envsubst in deployer_defaults.sh
|
||||
|
||||
if [[ "$totemplate" == "" ]] || [[ "$totemplate" == "main" ]]; then
|
||||
echo "Generating main package scripts";
|
||||
fromroot=${DIR}/debian-template;
|
||||
toroot=${DIR}/debian;
|
||||
mkdir ${toroot};
|
||||
|
||||
evaldirectory ${fromroot} \
|
||||
"cat \$name | envsubst > ${toroot}\${dirtailname}/\$( basename \$name )" \
|
||||
"mkdir \"${toroot}\${dirtailname}\"";
|
||||
fi;
|
||||
|
||||
if [[ "$totemplate" == "" ]] || [[ "$totemplate" == "asset" ]]; then
|
||||
echo "Generating asset package scripts";
|
||||
fromroot=${DIR}/assets/debian-template;
|
||||
toroot=${DIR}/assets/debian;
|
||||
mkdir ${toroot};
|
||||
|
||||
# Root dir to crawl; file eval; directory eval
|
||||
evaldirectory ${fromroot} \
|
||||
"cat \$name | envsubst > ${toroot}\${dirtailname}/\$( basename \$name )" \
|
||||
"mkdir \"${toroot}\${dirtailname}\"";
|
||||
fi;
|
||||
fi;
|
||||
|
||||
if [[ "$__DPL_ACTIVE" != "1" ]] && [[ "$__PACKAGE_REVISION_BY_DATE" == "1" ]]; then
|
||||
unset PACKAGE_REVISION; # so we can reset the date on subsequent runs
|
||||
fi;
|
157
deployer/travis/deployer.sh
Normal file
157
deployer/travis/deployer.sh
Normal file
|
@ -0,0 +1,157 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Deployer for Travis-CI
|
||||
# Initialization
|
||||
#
|
||||
# Performs validity checks to ensure that Deployer is allowed to run
|
||||
# e.g., is an FTP hostname specified? Are we whitelisted by OSNAMES and BRANCHES?
|
||||
#
|
||||
# Set these environment variables in your Travis-CI settings, where they are stored securely.
|
||||
# See other shell scripts for more options.
|
||||
#
|
||||
# DPL_ENABLED = 1 (leave blank to disable)
|
||||
# DPL_TAG_ENABLED = 1 (run Deployer on all tags)
|
||||
# DPL_JOB_ENABLE_ALL = 1 (run Deployer on all jobs; leave blank to act on specific jobs, see below)
|
||||
# DPL_JOBNAMES = name1,name2 (whitelist of job names to allow uploading; leave blank to upload from all jobs)
|
||||
# DPL_OSNAMES = osx (whitelist of OS names to allow uploading; leave blank to upload from all OSes)
|
||||
# DPL_BRANCHES = master,branch1,branch2 (whitelist of branches to upload; leave blank to upload all branches)
|
||||
#
|
||||
# To enable Deployer on specific jobs, set _DPL_JOB_ENABLED=1 for that job. Example:
|
||||
# - matrix:
|
||||
# - os: osx
|
||||
# env:
|
||||
# - _DPL_JOB_ENABLED=1
|
||||
#
|
||||
# DO NOT set __DPL_ACTIVE, because that would bypass these validity checks.
|
||||
|
||||
# Validate Deployer state
|
||||
if [[ "$DPL_ENABLED" == "1" ]] && [[ "$TRAVIS_PULL_REQUEST" == "false" ]]; then
|
||||
# Test for base eligibility:
|
||||
# Are we in a deployer branch? Or
|
||||
# Are we in a release tag AND DPL_TAG_ENABLED=1?
|
||||
if [[ $TRAVIS_BRANCH == *"deployer"* ]]; then
|
||||
__DPL_BASE_ELIGIBLE=1;
|
||||
__DPL_TERMINATE_EARLY_ELIGIBLE=1;
|
||||
fi;
|
||||
|
||||
if [[ "$TRAVIS_TAG" != "" ]] && [[ "$DPL_TAG_ENABLED" == "1" ]]; then
|
||||
__DPL_BASE_ELIGIBLE=1;
|
||||
__DPL_TAG_ELIGIBLE=1;
|
||||
__DPL_TERMINATE_EARLY_ELIGIBLE=1;
|
||||
fi;
|
||||
|
||||
# Logging message for trigger word
|
||||
if [[ "$__DPL_TAG_ELIGIBLE" != "1" ]] && [[ "$DPL_TRIGGER" != "" ]]; then
|
||||
echo "Testing for trigger $DPL_TRIGGER, commit message: $TRAVIS_COMMIT_MESSAGE";
|
||||
echo "[${DPL_TRIGGER}]";
|
||||
echo "[${DPL_TRIGGER}-${_DPL_JOB_NAME}]";
|
||||
echo "[${DPL_TRIGGER}-${TRAVIS_OS_NAME}]";
|
||||
fi;
|
||||
|
||||
#
|
||||
# Search for the trigger word
|
||||
# Force enable if release tags are eligible
|
||||
#
|
||||
if [[ "$__DPL_TAG_ELIGIBLE" == "1" ]] || [[ "$DPL_TRIGGER" == "" ]] \
|
||||
|| [[ $TRAVIS_COMMIT_MESSAGE == *"[$DPL_TRIGGER]"* ]] \
|
||||
|| [[ $TRAVIS_COMMIT_MESSAGE == *"[${DPL_TRIGGER}-${_DPL_JOB_NAME}]"* ]] \
|
||||
|| [[ $TRAVIS_COMMIT_MESSAGE == *"[${DPL_TRIGGER}-${TRAVIS_OS_NAME}]"* ]]; then
|
||||
#
|
||||
# Whitelist by branch name
|
||||
# Force enable if release tags are eligible
|
||||
#
|
||||
if [[ "$__DPL_TAG_ELIGIBLE" == "1" ]] || [[ "$DPL_BRANCHES" == "" ]] || [[ $DPL_BRANCHES == *"$TRAVIS_BRANCH"* ]]; then
|
||||
# Set this so we only early-terminate builds when we are specifically deploying
|
||||
# Trigger string and branch are encompassing conditions; the rest are job-specific
|
||||
# This check only matters for deployer branches and when DPL_TERMINATE_TESTS=1,
|
||||
# because we're filtering non-deployer jobs.
|
||||
#
|
||||
# __DPL_TRY_TERMINATE_EARLY is invalidated in .travis.yml if __DPL_ACTIVE=1
|
||||
if [[ "$__DPL_TERMINATE_EARLY_ELIGIBLE" == "1" ]] && [[ "$DPL_TERMINATE_TESTS" == "1" ]]; then
|
||||
__DPL_TRY_TERMINATE_EARLY=1;
|
||||
fi;
|
||||
|
||||
#
|
||||
# Is the job enabled for deployment?
|
||||
#
|
||||
if [[ "$DPL_JOB_ENABLE_ALL" == "1" ]] || [[ "$_DPL_JOB_ENABLED" == "1" ]]; then
|
||||
#
|
||||
# Whitelist by job names
|
||||
#
|
||||
if [[ "$DPL_JOBNAMES" == "" ]] || [[ "$_DPL_JOB_NAME" == "" ]] || [[ $DPL_JOBNAMES == *"$_DPL_JOB_NAME"* ]]; then
|
||||
#
|
||||
# Whitelist by OS names
|
||||
#
|
||||
if [[ "$DPL_OSNAMES" == "" ]] || [[ $DPL_OSNAMES == *"$TRAVIS_OS_NAME"* ]]; then
|
||||
# Base Deployer is eligible for becoming active
|
||||
|
||||
# Are we building for Linux?
|
||||
if [[ "$_DPL_PACKAGE_BINARY" == "1" ]] || [[ "$_DPL_PACKAGE_SOURCE" == "1" ]]; then
|
||||
if [[ "$_DPL_PACKAGE_MAIN" == "1" ]] || [[ "$_DPL_PACKAGE_ASSET" == "1" ]]; then
|
||||
if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
|
||||
__DPL_DEBIAN_ACTIVE=1;
|
||||
fi;
|
||||
fi;
|
||||
fi;
|
||||
|
||||
# Now check for deployment targets
|
||||
if [[ "$_DPL_FTP_TARGET" == "1" ]] && [[ "$DPL_FTP_HOSTNAME" != "" ]]; then
|
||||
if [[ "$TRAVIS_OS_HOST" == "linux" ]] && [[ "$DPL_FTP_PROTOCOL" == "ftp" ]]; then
|
||||
echo "Non-secure FTP will not work on Linux Travis-CI jobs!";
|
||||
echo "Try SFTP or another target. Details:";
|
||||
echo "https://blog.travis-ci.com/2018-07-23-the-tale-of-ftp-at-travis-ci";
|
||||
else
|
||||
if [[ "$__DPL_DEBIAN_ACTIVE" == "1" ]] || [[ "$_DPL_PACKAGE_BINARY" == "1" ]] || [[ "$_DPL_BINARY" == "1" ]]; then
|
||||
echo "Deployer FTP target is enabled";
|
||||
__DPL_FTP_ACTIVE=1;
|
||||
else
|
||||
echo "Deployer FTP target cannot be enabled: You must specify _DPL_PACKAGE_BINARY=1,";
|
||||
echo "and/or _DPL_BINARY=1 in your job's environment variables.";
|
||||
fi;
|
||||
fi;
|
||||
fi;
|
||||
|
||||
if [[ "$_DPL_DPUT_TARGET" == "1" ]] && [[ "$__DPL_DEBIAN_ACTIVE" == "1" ]] \
|
||||
&& [[ "$DPL_DPUT_INCOMING" != "" ]]; then
|
||||
if [[ "$DPL_DPUT_METHOD" == "ftp" ]]; then
|
||||
echo "DPUT will not work with non-secure FTP on Linux Travis-CI jobs!";
|
||||
echo "Try SFTP or another method for DPUT. Details:";
|
||||
echo "https://blog.travis-ci.com/2018-07-23-the-tale-of-ftp-at-travis-ci";
|
||||
else
|
||||
echo "Deployer DPUT target is enabled";
|
||||
__DPL_DPUT_ACTIVE=1;
|
||||
fi;
|
||||
fi;
|
||||
|
||||
# If any deployment targets are active, then so is the Deployer at large
|
||||
if [[ "$__DPL_FTP_ACTIVE" == "1" ]] || [[ "$__DPL_DPUT_ACTIVE" == "1" ]]; then
|
||||
__DPL_ACTIVE=1;
|
||||
fi;
|
||||
fi;
|
||||
fi;
|
||||
fi;
|
||||
fi;
|
||||
else
|
||||
if [[ "$DPL_TRIGGER" != "" ]]; then
|
||||
echo "Testing for global trigger [$DPL_TRIGGER, commit message: $TRAVIS_COMMIT_MESSAGE";
|
||||
fi;
|
||||
if [[ "$DPL_TRIGGER" != "" ]] && [[ $TRAVIS_COMMIT_MESSAGE == *"[$DPL_TRIGGER"* ]]; then
|
||||
if [[ "$__DPL_TAG_ELIGIBLE" == "1" ]] || [[ "$DPL_BRANCHES" == "" ]] || [[ $DPL_BRANCHES == *"$TRAVIS_BRANCH"* ]]; then
|
||||
# This check only matters for deployer branches and when DPL_TERMINATE_TESTS=1,
|
||||
# because we're filtering non-deployer jobs.
|
||||
if [[ "$__DPL_TERMINATE_EARLY_ELIGIBLE" == "1" ]] && [[ "$DPL_TERMINATE_TESTS" == "1" ]]; then
|
||||
# Assume that some job received the trigger, so mark this for early termination
|
||||
__DPL_TRY_TERMINATE_EARLY=1;
|
||||
fi;
|
||||
fi;
|
||||
fi;
|
||||
fi;
|
||||
fi;
|
||||
|
||||
if [[ "$__DPL_TRY_TERMINATE_EARLY" == "1" ]] && [[ "$__DPL_ACTIVE" != "1" ]]; then
|
||||
echo "Deployer is active in another job";
|
||||
fi;
|
||||
|
||||
if [[ "$__DPL_TRY_TERMINATE_EARLY" != "1" ]] && [[ "$__DPL_ACTIVE" != "1" ]]; then
|
||||
echo "Deployer is not active";
|
||||
fi;
|
190
deployer/travis/deployer_build.sh
Normal file
190
deployer/travis/deployer_build.sh
Normal file
|
@ -0,0 +1,190 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Deployer for Travis-CI
|
||||
# Build Script
|
||||
#
|
||||
# Builds the required targets depending on which sub-modules are enabled
|
||||
|
||||
if [[ "$__DPL_FTP_ACTIVE" == "1" ]] || [[ "$__DPL_DPUT_ACTIVE" == "1" ]]; then
|
||||
if [[ "$__DPL_DEBIAN_ACTIVE" == "1" ]]; then
|
||||
echo "Building Debian package(s)"
|
||||
|
||||
sudo apt-get install devscripts debhelper fakeroot secure-delete expect;
|
||||
|
||||
# Build source packages first, since they zip up the entire source folder,
|
||||
# binaries and all
|
||||
if [[ "$_DPL_PACKAGE_MAIN" == "1" ]]; then
|
||||
. ../debian_template.sh main;
|
||||
OLDPWD=$PWD; # [repo]/build
|
||||
cd ..; # repo root
|
||||
|
||||
if [[ "$_DPL_PACKAGE_SOURCE" == "1" ]]; then
|
||||
echo "Building main source Debian package";
|
||||
expect <(cat <<EOD
|
||||
spawn debuild -S -us -uc;
|
||||
expect "continue anyway? (y/n)"
|
||||
send "y\r"
|
||||
interact
|
||||
EOD
|
||||
);
|
||||
fi;
|
||||
|
||||
if [[ "$_DPL_PACKAGE_BINARY" == "1" ]]; then
|
||||
echo "Building main binary Debian package";
|
||||
expect <(cat <<EOD
|
||||
spawn debuild -us -uc;
|
||||
expect "continue anyway? (y/n)"
|
||||
send "y\r"
|
||||
interact
|
||||
EOD
|
||||
);
|
||||
fi;
|
||||
|
||||
cd $OLDPWD;
|
||||
fi;
|
||||
|
||||
# Also an asset package
|
||||
if [[ "$_DPL_PACKAGE_ASSET" == "1" ]]; then
|
||||
. ../debian_template.sh asset;
|
||||
OLDPWD=$PWD; # [repo]/build
|
||||
cd ../assets;
|
||||
|
||||
# make sure the asset files exist, download them if they don't
|
||||
#echo "Checking asset files for asset Debian package";
|
||||
#debuild -T build;
|
||||
|
||||
if [[ "$_DPL_PACKAGE_SOURCE" == "1" ]]; then
|
||||
echo "Building asset source Debian package";
|
||||
expect <(cat <<EOD
|
||||
spawn debuild -S -us -uc;
|
||||
expect "continue anyway? (y/n)"
|
||||
send "y\r"
|
||||
interact
|
||||
EOD
|
||||
);
|
||||
fi;
|
||||
|
||||
if [[ "$_DPL_PACKAGE_BINARY" == "1" ]]; then
|
||||
echo "Building asset binary Debian package";
|
||||
expect <(cat <<EOD
|
||||
spawn debuild -us -uc;
|
||||
expect "continue anyway? (y/n)"
|
||||
send "y\r"
|
||||
interact
|
||||
EOD
|
||||
);
|
||||
fi;
|
||||
|
||||
cd $OLDPWD;
|
||||
fi;
|
||||
|
||||
# Now sign our packages
|
||||
if [[ "$DPL_PGP_KEY_PRIVATE" != "" ]] && [[ "$DPL_PGP_KEY_PASSPHRASE" != "" ]]; then
|
||||
# Get the key to sign
|
||||
# Do this AFTER debuild so that we can specify the passphrase in command line
|
||||
echo "$DPL_PGP_KEY_PRIVATE" | base64 --decode > key.asc;
|
||||
echo "$DPL_PGP_KEY_PASSPHRASE" > phrase.txt;
|
||||
gpg --import key.asc;
|
||||
|
||||
if [[ "$_DPL_PACKAGE_MAIN" == "1" ]]; then
|
||||
echo "Signing main package(s)";
|
||||
|
||||
PACKAGEFILENAME=${PACKAGE_NAME}_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
|
||||
PACKAGEDBGFILENAME=${PACKAGE_NAME}-dbg_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
|
||||
#PACKAGENIGHTLYFILENAME=${PACKAGE_NAME}-nightly_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
|
||||
#PACKAGENIGHTLYDBGFILENAME=${PACKAGE_NAME}-nightly-dbg_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
|
||||
#PACKAGEPATCHFILENAME=${PACKAGE_NAME}-patch_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
|
||||
#PACKAGEPATCHDBGFILENAME=${PACKAGE_NAME}-patch-dbg_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
|
||||
#PACKAGEPATCHNIGHTLYFILENAME=${PACKAGE_NAME}-patch-nightly_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
|
||||
#PACKAGEPATCHNIGHTLYDBGFILENAME=${PACKAGE_NAME}-patch-nightly-dbg_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
|
||||
|
||||
PACKAGEFILENAMES=(
|
||||
$PACKAGEFILENAME
|
||||
$PACKAGEDBGFILENAME
|
||||
#$PACKAGENIGHTLYFILENAME
|
||||
#$PACKAGENIGHTLYDBGFILENAME
|
||||
#$PACKAGEPATCHFILENAME
|
||||
#$PACKAGEPATCHDBGFILENAME
|
||||
#$PACKAGEPATCHNIGHTLYFILENAME
|
||||
#$PACKAGEPATCHNIGHTLYDBGFILENAME
|
||||
);
|
||||
|
||||
# Main packages are in parent of root repo folder
|
||||
OLDPWD=$PWD; # [repo]/build
|
||||
cd ../..; # parent of repo root
|
||||
|
||||
for n in ${PACKAGEFILENAMES}; do
|
||||
for f in ./$n*.changes; do
|
||||
debsign --no-re-sign -p"gpg --passphrase-file $OLDPWD/phrase.txt --batch" "$f";
|
||||
done;
|
||||
done;
|
||||
|
||||
cd $OLDPWD;
|
||||
fi;
|
||||
|
||||
if [[ "$_DPL_PACKAGE_ASSET" == "1" ]]; then
|
||||
echo "Signing asset package(s)";
|
||||
|
||||
PACKAGEFILENAME=${PACKAGE_NAME}-data_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
|
||||
#PACKAGENIGHTLYFILENAME=${PACKAGE_NAME}-nightly-data_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
|
||||
#PACKAGEPATCHFILENAME=${PACKAGE_NAME}-patch-data_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
|
||||
#PACKAGEPATCHNIGHTLYFILENAME=${PACKAGE_NAME}-patch-nightly-data_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
|
||||
|
||||
PACKAGEFILENAMES=(
|
||||
$PACKAGEFILENAME
|
||||
#$PACKAGENIGHTLYFILENAME
|
||||
#$PACKAGEPATCHFILENAME
|
||||
#$PACKAGEPATCHNIGHTLYFILENAME
|
||||
)
|
||||
|
||||
# Asset packages are in root repo folder
|
||||
OLDPWD=$PWD; # [repo]/build
|
||||
cd ..; # repo root
|
||||
|
||||
for n in ${PACKAGEFILENAMES}; do
|
||||
for f in ./$n*.changes; do
|
||||
debsign --no-re-sign -p"gpg --passphrase-file $OLDPWD/phrase.txt --batch" "$f";
|
||||
done;
|
||||
done;
|
||||
|
||||
cd $OLDPWD;
|
||||
fi;
|
||||
|
||||
# Delete the keys :eyes:
|
||||
srm key.asc;
|
||||
srm phrase.txt;
|
||||
fi;
|
||||
fi;
|
||||
|
||||
# all other OSes
|
||||
if [[ "$TRAVIS_OS_NAME" != "linux" ]]; then
|
||||
#
|
||||
# Check for binary building
|
||||
#
|
||||
if [[ "$_DPL_BINARY" == "1" ]]; then
|
||||
echo "Building a Binary";
|
||||
make -k;
|
||||
fi;
|
||||
|
||||
#
|
||||
# Check for package building
|
||||
#
|
||||
if [[ "$_DPL_PACKAGE_BINARY" == "1" ]]; then
|
||||
echo "Building a Package";
|
||||
|
||||
# Make an OSX package; superuser is required for library bundling
|
||||
#
|
||||
# HACK: OSX packaging can't write libraries to .app package unless we're superuser
|
||||
# because the original library files don't have WRITE permission
|
||||
# Bug may be sidestepped by using CHMOD_BUNDLE_ITEMS=TRUE
|
||||
# But I don't know where this is set. Not `cmake -D...` because this var is ignored.
|
||||
# https://cmake.org/Bug/view.php?id=9284
|
||||
if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
|
||||
sudo make -k package;
|
||||
else
|
||||
# Some day, when Windows is supported, we'll just make a standard package
|
||||
make -k package;
|
||||
fi;
|
||||
fi;
|
||||
fi;
|
||||
fi;
|
105
deployer/travis/deployer_defaults.sh
Normal file
105
deployer/travis/deployer_defaults.sh
Normal file
|
@ -0,0 +1,105 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Deployer for Travis-CI
|
||||
# Default Variables
|
||||
#
|
||||
# Here are all of the user-set variables used by Deployer.
|
||||
# See the "Cross-platform deployment" page on SRB2 Wiki for documentation.
|
||||
|
||||
# Core Parameters
|
||||
: ${DPL_ENABLED} # Enable Deployer behavior; must be set for any deployment activity
|
||||
: ${DPL_TAG_ENABLED} # Trigger Deployer for all tag releases
|
||||
: ${DPL_JOB_ENABLE_ALL} # Enable all jobs for deployment
|
||||
: ${DPL_TERMINATE_TESTS} # Terminate all build test jobs (used in .travis.yml)
|
||||
: ${DPL_TRIGGER} # Use a [word] in the commit message to trigger Deployer
|
||||
: ${DPL_JOBNAMES} # Trigger Deployer by job name
|
||||
: ${DPL_OSNAMES} # Trigger Deployer by OS name (osx,linux)
|
||||
: ${DPL_BRANCHES} # Trigger Deployer by git branch name
|
||||
|
||||
# Job Parameters
|
||||
: ${_DPL_JOB_ENABLED} # Enable Deployer for this specific job. DPL_ENABLED must be set too.
|
||||
: ${_DPL_JOB_NAME} # Identifier for the job, used for logging and trigger word matching
|
||||
: ${_DPL_FTP_TARGET} # Deploy to FTP
|
||||
: ${_DPL_DPUT_TARGET} # Deploy to DPUT
|
||||
: ${_DPL_PACKAGE_SOURCE} # Build packages into a Source distribution. Linux only.
|
||||
: ${_DPL_PACKAGE_BINARY} # Build packages into a Binary distribution.
|
||||
: ${_DPL_PACKAGE_MAIN:=1} # Build main installation package. Linux only; OS X assumes this.
|
||||
: ${_DPL_PACKAGE_ASSET} # Build asset installation package. Linux only.
|
||||
|
||||
# Asset File Parameters
|
||||
: ${ASSET_ARCHIVE_PATH:=https://github.com/mazmazz/SRB2/releases/download/SRB2_assets/SRB2-v2122-assets.7z}
|
||||
: ${ASSET_ARCHIVE_OPTIONAL_PATH:=https://github.com/mazmazz/SRB2/releases/download/SRB2_assets/SRB2-v2122-optional-assets.7z}
|
||||
: ${ASSET_FILES_HASHED:=srb2.srb zones.dta player.dta rings.dta patch.dta}
|
||||
: ${ASSET_FILES_DOCS:=README.txt LICENSE.txt LICENSE-3RD-PARTY.txt}
|
||||
: ${ASSET_FILES_OPTIONAL_GET:=0}
|
||||
|
||||
# FTP Parameters
|
||||
: ${DPL_FTP_PROTOCOL}
|
||||
: ${DPL_FTP_USER}
|
||||
: ${DPL_FTP_PASS}
|
||||
: ${DPL_FTP_HOSTNAME}
|
||||
: ${DPL_FTP_PORT}
|
||||
: ${DPL_FTP_PATH}
|
||||
|
||||
# DPUT Parameters
|
||||
: ${DPL_DPUT_DOMAIN:=ppa.launchpad.net}
|
||||
: ${DPL_DPUT_METHOD:=sftp}
|
||||
: ${DPL_DPUT_INCOMING}
|
||||
: ${DPL_DPUT_LOGIN:=anonymous}
|
||||
: ${DPL_SSH_KEY_PRIVATE} # Base64-encoded private key file. Used to sign repository uploads
|
||||
: ${DPL_SSH_KEY_PASSPHRASE} # Decodes the private key file.
|
||||
|
||||
# Package Parameters
|
||||
: ${PACKAGE_NAME:=srb2}
|
||||
: ${PACKAGE_VERSION:=2.1.23}
|
||||
: ${PACKAGE_SUBVERSION} # Highly recommended to set this to reflect the distro series target (e.g., ~18.04bionic)
|
||||
: ${PACKAGE_REVISION} # Defaults to UTC timestamp
|
||||
: ${PACKAGE_INSTALL_PATH:=/usr/games/SRB2}
|
||||
: ${PACKAGE_LINK_PATH:=/usr/games}
|
||||
: ${PACKAGE_DISTRO:=trusty}
|
||||
: ${PACKAGE_URGENCY:=high}
|
||||
: ${PACKAGE_NAME_EMAIL:=Sonic Team Junior <stjr@srb2.org>}
|
||||
: ${PACKAGE_GROUP_NAME_EMAIL:=Sonic Team Junior <stjr@srb2.org>}
|
||||
: ${PACKAGE_WEBSITE:=<http://www.srb2.org>}
|
||||
|
||||
: ${PACKAGE_ASSET_MINVERSION:=2.1.21} # Number this the version BEFORE the actual required version, because we do a > check
|
||||
: ${PACKAGE_ASSET_MAXVERSION:=2.1.24} # Number this the version AFTER the actual required version, because we do a < check
|
||||
|
||||
: ${PROGRAM_NAME:=Sonic Robo Blast 2}
|
||||
: ${PROGRAM_VENDOR:=Sonic Team Junior}
|
||||
: ${PROGRAM_VERSION:=2.1.23}
|
||||
: ${PROGRAM_DESCRIPTION:=A free 3D Sonic the Hedgehog fangame closely inspired by the original Sonic games on the Sega Genesis.}
|
||||
: ${PROGRAM_FILENAME:=srb2}
|
||||
|
||||
: ${DPL_PGP_KEY_PRIVATE} # Base64-encoded private key file. Used to sign Debian packages
|
||||
: ${DPL_PGP_KEY_PASSPHRASE} # Decodes the private key file.
|
||||
|
||||
# Export Asset and Package Parameters for envsubst templating
|
||||
|
||||
export ASSET_ARCHIVE_PATH="${ASSET_ARCHIVE_PATH}"
|
||||
export ASSET_ARCHIVE_OPTIONAL_PATH="${ASSET_ARCHIVE_OPTIONAL_PATH}"
|
||||
export ASSET_FILES_HASHED="${ASSET_FILES_HASHED}"
|
||||
export ASSET_FILES_DOCS="${ASSET_FILES_DOCS}"
|
||||
export ASSET_FILES_OPTIONAL_GET="${ASSET_FILES_OPTIONAL_GET}"
|
||||
|
||||
export PACKAGE_NAME="${PACKAGE_NAME}"
|
||||
export PACKAGE_VERSION="${PACKAGE_VERSION}"
|
||||
export PACKAGE_SUBVERSION="${PACKAGE_SUBVERSION}" # in case we have this
|
||||
export PACKAGE_REVISION="${PACKAGE_REVISION}"
|
||||
export PACKAGE_ASSET_MINVERSION="${PACKAGE_ASSET_MINVERSION}"
|
||||
export PACKAGE_ASSET_MAXVERSION="${PACKAGE_ASSET_MAXVERSION}"
|
||||
export PACKAGE_INSTALL_PATH="${PACKAGE_INSTALL_PATH}"
|
||||
export PACKAGE_LINK_PATH="${PACKAGE_LINK_PATH}"
|
||||
export PACKAGE_DISTRO="${PACKAGE_DISTRO}"
|
||||
export PACKAGE_URGENCY="${PACKAGE_URGENCY}"
|
||||
export PACKAGE_NAME_EMAIL="${PACKAGE_NAME_EMAIL}"
|
||||
export PACKAGE_GROUP_NAME_EMAIL="${PACKAGE_GROUP_NAME_EMAIL}"
|
||||
export PACKAGE_WEBSITE="${PACKAGE_WEBSITE}"
|
||||
|
||||
export PROGRAM_NAME="${PROGRAM_NAME}"
|
||||
export PROGRAM_VERSION="${PROGRAM_VERSION}"
|
||||
export PROGRAM_DESCRIPTION="${PROGRAM_DESCRIPTION}"
|
||||
export PROGRAM_FILENAME="${PROGRAM_FILENAME}"
|
||||
|
||||
# This file is called in debian_template.sh, so mark our completion so we don't run it again
|
||||
__DEBIAN_PARAMETERS_INITIALIZED=1
|
133
deployer/travis/deployer_dput.sh
Normal file
133
deployer/travis/deployer_dput.sh
Normal file
|
@ -0,0 +1,133 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Deployer for Travis-CI
|
||||
# DPUT uploader (e.g., Launchpad PPA)
|
||||
#
|
||||
|
||||
if [[ "$__DPL_DPUT_ACTIVE" == "1" ]]; then
|
||||
# Install APT dependencies
|
||||
# paramiko required for ssh
|
||||
sudo apt-get install python-paramiko expect dput; # python-pip
|
||||
#pip install paramiko;
|
||||
|
||||
# Output the DPUT config
|
||||
# Dput only works if you're using secure FTP, so that's what we default to.
|
||||
cat > "./dput.cf" << EOM
|
||||
[deployer]
|
||||
fqdn = ${DPL_DPUT_DOMAIN}
|
||||
method = ${DPL_DPUT_METHOD}
|
||||
incoming = ${DPL_DPUT_INCOMING}
|
||||
login = ${DPL_DPUT_LOGIN}
|
||||
allow_unsigned_uploads = 0
|
||||
EOM
|
||||
|
||||
# Output SSH config
|
||||
# Don't let SSH prompt us for untrusted hosts
|
||||
cat >> "./ssh_config" << EOM
|
||||
|
||||
Host *
|
||||
StrictHostKeyChecking no
|
||||
UserKnownHostsFile=/dev/null
|
||||
PubKeyAuthentication yes
|
||||
IdentityFile ${PWD}/key.private
|
||||
IdentitiesOnly yes
|
||||
EOM
|
||||
sudo sh -c "cat < ${PWD}/ssh_config >> /etc/ssh/ssh_config";
|
||||
|
||||
# Get the private key
|
||||
echo "$DPL_SSH_KEY_PRIVATE" | base64 --decode > key.private;
|
||||
chmod 700 ./key.private;
|
||||
|
||||
if [[ "$_DPL_PACKAGE_MAIN" == "1" ]]; then
|
||||
PACKAGEFILENAME=${PACKAGE_NAME}_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
|
||||
PACKAGEDBGFILENAME=${PACKAGE_NAME}-dbg_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
|
||||
#PACKAGENIGHTLYFILENAME=${PACKAGE_NAME}-nightly_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
|
||||
#PACKAGENIGHTLYDBGFILENAME=${PACKAGE_NAME}-nightly-dbg_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
|
||||
#PACKAGEPATCHFILENAME=${PACKAGE_NAME}-patch_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
|
||||
#PACKAGEPATCHDBGFILENAME=${PACKAGE_NAME}-patch-dbg_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
|
||||
#PACKAGEPATCHNIGHTLYFILENAME=${PACKAGE_NAME}-patch-nightly_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
|
||||
#PACKAGEPATCHNIGHTLYDBGFILENAME=${PACKAGE_NAME}-patch-nightly-dbg_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
|
||||
|
||||
PACKAGEFILENAMES=(
|
||||
$PACKAGEFILENAME
|
||||
$PACKAGEDBGFILENAME
|
||||
#$PACKAGENIGHTLYFILENAME
|
||||
#$PACKAGENIGHTLYDBGFILENAME
|
||||
#$PACKAGEPATCHFILENAME
|
||||
#$PACKAGEPATCHDBGFILENAME
|
||||
#$PACKAGEPATCHNIGHTLYFILENAME
|
||||
#$PACKAGEPATCHNIGHTLYDBGFILENAME
|
||||
);
|
||||
|
||||
# Main packages are in parent of root repo folder
|
||||
OLDPWD=$PWD; # [repo]/build
|
||||
cd ../..;
|
||||
|
||||
# Enter passphrase if required
|
||||
for n in ${PACKAGEFILENAMES}; do
|
||||
for f in $n*.changes; do
|
||||
# Binary builds also generate source builds, so exclude the source
|
||||
# builds if desired
|
||||
if [[ "$_DPL_PACKAGE_SOURCE" != "1" ]]; then
|
||||
if [[ "$f" == *"_source"* ]] || [[ "$f" == *".tar.xz"* ]]; then
|
||||
continue;
|
||||
fi;
|
||||
fi;
|
||||
|
||||
expect <(cat <<EOD
|
||||
spawn dput -c "${OLDPWD}/dput.cf" deployer "$f";
|
||||
expect "Enter passphrase for key"
|
||||
send "${DPL_SSH_KEY_PASSPHRASE}\r"
|
||||
interact
|
||||
EOD
|
||||
);
|
||||
done;
|
||||
done;
|
||||
|
||||
# Go back to [repo]/build folder
|
||||
cd $OLDPWD;
|
||||
fi;
|
||||
|
||||
if [[ "$_DPL_PACKAGE_ASSET" == "1" ]]; then
|
||||
PACKAGEFILENAME=${PACKAGE_NAME}-data_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
|
||||
#PACKAGENIGHTLYFILENAME=${PACKAGE_NAME}-nightly-data_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
|
||||
#PACKAGEPATCHFILENAME=${PACKAGE_NAME}-patch-data_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
|
||||
#PACKAGEPATCHNIGHTLYFILENAME=${PACKAGE_NAME}-patch-nightly-data_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
|
||||
|
||||
PACKAGEFILENAMES=(
|
||||
$PACKAGEFILENAME
|
||||
#$PACKAGENIGHTLYFILENAME
|
||||
#$PACKAGEPATCHFILENAME
|
||||
#$PACKAGEPATCHNIGHTLYFILENAME
|
||||
)
|
||||
|
||||
# Asset packages are in root repo folder
|
||||
OLDPWD=$PWD; # [repo]/build
|
||||
cd ..;
|
||||
|
||||
# Enter passphrase if required
|
||||
for n in ${PACKAGEFILENAMES}; do
|
||||
for f in $n*.changes; do
|
||||
# Binary builds also generate source builds, so exclude the source
|
||||
# builds if desired
|
||||
if [[ "$_DPL_PACKAGE_SOURCE" != "1" ]]; then
|
||||
if [[ "$f" == *"_source"* ]] || [[ "$f" == *".tar.xz"* ]]; then
|
||||
continue;
|
||||
fi;
|
||||
fi;
|
||||
expect <(cat <<EOD
|
||||
spawn dput -c "${OLDPWD}/dput.cf" deployer "$f";
|
||||
expect "Enter passphrase for key"
|
||||
send "${DPL_SSH_KEY_PASSPHRASE}\r"
|
||||
interact
|
||||
EOD
|
||||
);
|
||||
done;
|
||||
done;
|
||||
|
||||
# Go back to [repo]/build folder
|
||||
cd $OLDPWD;
|
||||
fi;
|
||||
|
||||
srm ./key.private;
|
||||
fi;
|
137
deployer/travis/deployer_ftp.sh
Normal file
137
deployer/travis/deployer_ftp.sh
Normal file
|
@ -0,0 +1,137 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Deployer for Travis-CI
|
||||
# FTP Uploader
|
||||
#
|
||||
# Package files are uploaded to, e.g., ftp://username:password@example.com:21/path/to/upload/STJr/SRB2/master/460873812-151.1
|
||||
# With file `commit.txt` and folder(s) `bin` and `package`
|
||||
#
|
||||
# Set these environment variables in your Travis-CI settings, where they are stored securely.
|
||||
# See other shell scripts for more options.
|
||||
#
|
||||
# DPL_FTP_PROTOCOL = ftp (ftp or sftp or ftps or however your FTP URI begins)
|
||||
# DPL_FTP_USER = username
|
||||
# DPL_FTP_PASS = password
|
||||
# DPL_FTP_HOSTNAME = example.com
|
||||
# DPL_FTP_PORT = 21
|
||||
# DPL_FTP_PATH = path/to/upload (do not add trailing slash)
|
||||
|
||||
if [[ "$__DPL_FTP_ACTIVE" == "1" ]]; then
|
||||
if [[ "$TRAVIS_JOB_NAME" != "" ]]; then
|
||||
JOBNAME=$TRAVIS_JOB_NAME;
|
||||
else
|
||||
if [[ "$_DPL_JOB_NAME" != "" ]]; then
|
||||
JOBNAME=$_DPL_JOB_NAME;
|
||||
else
|
||||
JOBNAME=$TRAVIS_OS_NAME;
|
||||
fi;
|
||||
fi;
|
||||
|
||||
# Generate commit.txt file
|
||||
echo "Travis-CI Build $TRAVIS_OS_NAME - $TRAVIS_REPO_SLUG/$TRAVIS_BRANCH - $TRAVIS_JOB_NUMBER - $JOBNAME" > "commit.txt";
|
||||
echo "Job ID $TRAVIS_JOB_ID" >> "commit.txt";
|
||||
echo "" >> "commit.txt";
|
||||
echo "Commit $TRAVIS_COMMIT" >> "commit.txt";
|
||||
echo "$TRAVIS_COMMIT_MESSAGE" >> "commit.txt";
|
||||
echo "" >> "commit.txt";
|
||||
|
||||
# Initialize FTP parameters
|
||||
if [[ "$DPL_FTP_PORT" == "" ]]; then
|
||||
DPL_FTP_PORT=21;
|
||||
fi;
|
||||
if [[ "$DPL_FTP_PROTOCOL" == "" ]]; then
|
||||
DPL_FTP_PROTOCOL=ftp;
|
||||
fi;
|
||||
__DPL_FTP_LOCATION=$DPL_FTP_PROTOCOL://$DPL_FTP_HOSTNAME:$DPL_FTP_PORT/$DPL_FTP_PATH/$TRAVIS_REPO_SLUG/$TRAVIS_BRANCH/$TRAVIS_JOB_ID-$TRAVIS_JOB_NUMBER-$JOBNAME;
|
||||
|
||||
# Upload to FTP!
|
||||
echo "Uploading to FTP...";
|
||||
curl --ftp-create-dirs -T "commit.txt" -u $DPL_FTP_USER:$DPL_FTP_PASS "$__DPL_FTP_LOCATION/commit.txt";
|
||||
|
||||
if [[ "$__DPL_DEBIAN_ACTIVE" == "1" ]]; then
|
||||
if [[ "$_DPL_PACKAGE_MAIN" == "1" ]]; then
|
||||
PACKAGEFILENAME=${PACKAGE_NAME}_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
|
||||
PACKAGEDBGFILENAME=${PACKAGE_NAME}-dbg_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
|
||||
#PACKAGENIGHTLYFILENAME=${PACKAGE_NAME}-nightly_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
|
||||
#PACKAGENIGHTLYDBGFILENAME=${PACKAGE_NAME}-nightly-dbg_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
|
||||
#PACKAGEPATCHFILENAME=${PACKAGE_NAME}-patch_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
|
||||
#PACKAGEPATCHDBGFILENAME=${PACKAGE_NAME}-patch-dbg_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
|
||||
#PACKAGEPATCHNIGHTLYFILENAME=${PACKAGE_NAME}-patch-nightly_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
|
||||
#PACKAGEPATCHNIGHTLYDBGFILENAME=${PACKAGE_NAME}-patch-nightly-dbg_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
|
||||
|
||||
PACKAGEFILENAMES=(
|
||||
$PACKAGEFILENAME
|
||||
$PACKAGEDBGFILENAME
|
||||
#$PACKAGENIGHTLYFILENAME
|
||||
#$PACKAGENIGHTLYDBGFILENAME
|
||||
#$PACKAGEPATCHFILENAME
|
||||
#$PACKAGEPATCHDBGFILENAME
|
||||
#$PACKAGEPATCHNIGHTLYFILENAME
|
||||
#$PACKAGEPATCHNIGHTLYDBGFILENAME
|
||||
);
|
||||
|
||||
# Main packages are in parent of root repo folder
|
||||
OLDPWD=$PWD; # [repo]/build
|
||||
cd ../..;
|
||||
|
||||
for n in ${PACKAGEFILENAMES}; do
|
||||
for f in ./$n*; do
|
||||
# Binary builds also generate source builds, so exclude the source
|
||||
# builds if desired
|
||||
if [[ "$_DPL_PACKAGE_SOURCE" != "1" ]]; then
|
||||
if [[ "$f" == *"_source"* ]] || [[ "$f" == *".tar.xz"* ]]; then
|
||||
continue;
|
||||
fi;
|
||||
fi;
|
||||
curl --ftp-create-dirs -T "$f" -u $DPL_FTP_USER:$DPL_FTP_PASS "$__DPL_FTP_LOCATION/package/main/$f";
|
||||
done;
|
||||
done;
|
||||
|
||||
# Go back to [repo]/build folder
|
||||
cd $OLDPWD;
|
||||
fi;
|
||||
|
||||
if [[ "$_DPL_PACKAGE_ASSET" == "1" ]]; then
|
||||
PACKAGEFILENAME=${PACKAGE_NAME}-data_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
|
||||
#PACKAGENIGHTLYFILENAME=${PACKAGE_NAME}-nightly-data_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
|
||||
#PACKAGEPATCHFILENAME=${PACKAGE_NAME}-patch-data_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
|
||||
#PACKAGEPATCHNIGHTLYFILENAME=${PACKAGE_NAME}-patch-nightly-data_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
|
||||
|
||||
PACKAGEFILENAMES=(
|
||||
$PACKAGEFILENAME
|
||||
#$PACKAGENIGHTLYFILENAME
|
||||
#$PACKAGEPATCHFILENAME
|
||||
#$PACKAGEPATCHNIGHTLYFILENAME
|
||||
)
|
||||
|
||||
# Asset packages are in root repo folder
|
||||
OLDPWD=$PWD; # [repo]/build
|
||||
cd ..;
|
||||
|
||||
for n in ${PACKAGEFILENAMES}; do
|
||||
for f in ./$n*; do
|
||||
# Binary builds also generate source builds, so exclude the source
|
||||
# builds if desired
|
||||
if [[ "$_DPL_PACKAGE_SOURCE" != "1" ]]; then
|
||||
if [[ "$f" == *"_source"* ]] || [[ "$f" == *".tar.xz"* ]]; then
|
||||
continue;
|
||||
fi;
|
||||
fi;
|
||||
curl --ftp-create-dirs -T "$f" -u $DPL_FTP_USER:$DPL_FTP_PASS "$__DPL_FTP_LOCATION/package/asset/$f";
|
||||
done;
|
||||
done;
|
||||
|
||||
# Go back to [repo]/build folder
|
||||
cd $OLDPWD;
|
||||
fi;
|
||||
else
|
||||
if [[ "$_DPL_BINARY" == "1" ]]; then
|
||||
find bin -type f -exec curl -u $DPL_FTP_USER:$DPL_FTP_PASS --ftp-create-dirs -T {} $__DPL_FTP_LOCATION/{} \;;
|
||||
fi;
|
||||
|
||||
if [[ "$_DPL_PACKAGE_BINARY" == "1" ]]; then
|
||||
sudo rm -r package/_CPack_Packages
|
||||
find package -type f -exec curl -u $DPL_FTP_USER:$DPL_FTP_PASS --ftp-create-dirs -T {} $__DPL_FTP_LOCATION/{} \;;
|
||||
fi;
|
||||
fi;
|
||||
fi
|
|
@ -7,6 +7,7 @@ Here are the required DLLs, per build. For each architecture, copy all the binar
|
|||
* libs\dll-binaries\[i686/x86_64]
|
||||
* libs\SDL2\[i686/x86_64]...\bin
|
||||
* libs\SDL2_mixer\[i686/x86_64]...\bin
|
||||
* libs\libopenmpt\[x86/x86_64]...\bin\mingw
|
||||
|
||||
and don't forget to build r_opengl.dll for srb2dd.
|
||||
|
||||
|
@ -17,6 +18,7 @@ and don't forget to build r_opengl.dll for srb2dd.
|
|||
* libs\dll-binaries\i686\mgwhelp.dll (depend for exchndl.dll)
|
||||
* libs\SDL2\i686-w64-mingw32\bin\SDL2.dll
|
||||
* libs\SDL2_mixer\i686-w64-mingw32\bin\*.dll (get everything)
|
||||
* libs\libopenmpt\x86\bin\mingw\libopenmpt.dll
|
||||
|
||||
## srb2win, 64-bit
|
||||
|
||||
|
@ -25,6 +27,7 @@ and don't forget to build r_opengl.dll for srb2dd.
|
|||
* libs\dll-binaries\x86_64\mgwhelp.dll (depend for exchndl.dll)
|
||||
* libs\SDL2\x86_64-w64-mingw32\bin\SDL2.dll
|
||||
* libs\SDL2_mixer\x86_64-w64-mingw32\bin\*.dll (get everything)
|
||||
* libs\libopenmpt\x86_64\bin\mingw\libopenmpt.dll
|
||||
|
||||
## srb2dd, 32-bit
|
||||
|
||||
|
|
16
libs/libgme.props
Normal file
16
libs/libgme.props
Normal file
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ImportGroup Label="PropertySheets" />
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Platform)' == 'Win32' OR '$(Platform)' == 'x64'">
|
||||
<IncludePath>$(SolutionDir)libs\gme\include;$(IncludePath)</IncludePath>
|
||||
<LibraryPath Condition="'$(Platform)' == 'Win32'">$(SolutionDir)libs\gme\win32;$(LibraryPath)</LibraryPath>
|
||||
<LibraryPath Condition="'$(Platform)' == 'x64'">$(SolutionDir)libs\gme\win64;$(LibraryPath)</LibraryPath>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Platform)' == 'Win32' OR '$(Platform)' == 'x64'">
|
||||
<Link>
|
||||
<AdditionalDependencies>libgme.dll.a;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup />
|
||||
</Project>
|
16
libs/libopenmpt.props
Normal file
16
libs/libopenmpt.props
Normal file
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ImportGroup Label="PropertySheets" />
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<IncludePath>$(SolutionDir)libs\libopenmpt\inc;$(IncludePath)</IncludePath>
|
||||
<LibraryPath Condition="'$(Platform)' == 'Win32'">$(SolutionDir)libs\libopenmpt\lib\x86;$(LibraryPath)</LibraryPath>
|
||||
<LibraryPath Condition="'$(Platform)' == 'x64'">$(SolutionDir)libs\libopenmpt\lib\x86_64;$(LibraryPath)</LibraryPath>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup>
|
||||
<Link>
|
||||
<AdditionalDependencies>libopenmpt.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup />
|
||||
</Project>
|
26
libs/libopenmpt/LICENSE.txt
Normal file
26
libs/libopenmpt/LICENSE.txt
Normal file
|
@ -0,0 +1,26 @@
|
|||
Copyright (c) 2004-2019, OpenMPT contributors
|
||||
Copyright (c) 1997-2003, Olivier Lapicque
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
* Neither the name of the OpenMPT project nor the
|
||||
names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND ANY
|
||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
28
libs/libopenmpt/Licenses/License.Vorbis.txt
Normal file
28
libs/libopenmpt/Licenses/License.Vorbis.txt
Normal file
|
@ -0,0 +1,28 @@
|
|||
Copyright (c) 2002-2018 Xiph.org Foundation
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
- Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
- Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
- Neither the name of the Xiph.org Foundation nor the names of its
|
||||
contributors may be used to endorse or promote products derived from
|
||||
this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION
|
||||
OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
175
libs/libopenmpt/Licenses/License.mpg123.Authors.txt
Normal file
175
libs/libopenmpt/Licenses/License.mpg123.Authors.txt
Normal file
|
@ -0,0 +1,175 @@
|
|||
This is an attempt to give credit to the people who contributed in some way to the mpg123 project.
|
||||
There are names and email addresses listed. Please use these addresses only to contact contributors with some question about their mpg123 contribution.
|
||||
You are explicitly not allowed to send them unwanted business offers or to question the quality of their sex life.
|
||||
--------------------
|
||||
|
||||
Being on the list of contributing authors not necessarily means that there
|
||||
is significant copyright in parts of the source code. There are obviously
|
||||
contributions of differing complexity. I try to mention people who motivated
|
||||
changes at least by suggesting some definite code changes, even if their
|
||||
code did not enter the mpg123 source verbatim. Trivial changes like pointing
|
||||
out ovbious syntax errors that make compilers cry do not land here.
|
||||
|
||||
--------------------
|
||||
|
||||
Current maintainers with various sorts of contributions:
|
||||
Thomas Orgis <thomas@orgis.org>
|
||||
Patrick Dehne <patrick@steidle.net>
|
||||
Jonathan Yong <10walls@gmail.com>
|
||||
Taihei Momma <tmkk@mac.com>
|
||||
|
||||
Co-initiator of the revived mpg123 project, but not that involved anymore:
|
||||
Nicholas J Humfrey <njh@ecs.soton.ac.uk>
|
||||
|
||||
Special thanks go to Taihei, the person who keeps the assembly optimisations alive
|
||||
and takes care of portability to OSX/iOS platforms.
|
||||
|
||||
Generic address pointing to the current maintainer (hopefully still works in future in case maintainership will change again): <maintainer@mpg123.org>
|
||||
|
||||
The creator: Michael Hipp (email: hippm@informatik.uni-tuebingen.de - please bother maintainers first)
|
||||
|
||||
Contributions/ideas Thomas Orgis era (includes backports from mhipp trunk):
|
||||
|
||||
Won-Kyu Park <wkpark@gmail.com>: patch to get rid of asm textrels (x86 PIC)
|
||||
Michael Weiser <michaelweiser@users.sf.net>: update of coreaudio output to AudioComponents API
|
||||
Bent Bisballe Nyeng <bbn@dynastrom.com>: patch for MPG123_NO_PEEK_END and MPG123_FORCE_SEEKABLE
|
||||
Eric S. Raymond <esr@thyrsus.com>: man page fixes
|
||||
Tobias Weber <tobiw@suprafluid.com>: patch for --disable-equalizer
|
||||
Hans de Goede <j.w.r.degoede@gmail.com>: patch to skip APE tags
|
||||
Stephan Vedder <stephan.vedder@gmail.com>: MSVC++ 2013 port update
|
||||
Rajeev V. Pillai <rajeevvp@users.sf.net>: pointing out/patching issues in HTTP code and behaviour of mpg123 remote/terminal control
|
||||
Jarno Lehtinen <lehtinen@sci.fi>: tinyalsa output
|
||||
Anthony Wells <borgboyone@yahoo.com>: initial version of ID3v2 APIC patch
|
||||
David Wohlferd <limegreensocks@yahoo.com>: Win32 WaveOut buffer destructor fix.
|
||||
Mike Gorchak <mike.gorchak.qnx@gmail.com>: QNX native audio output (QSA)
|
||||
Dan McGee <dpmcgee@gmail.com>: various patches (also for test suite)
|
||||
Jonathan Yong (jon_y) <10walls@gmail.com>: win32 hacking, win32 wasapi audio.
|
||||
Malcolm Boczek <MBoczek@terraindustries.com>: Common language runtime wrapper
|
||||
Elbert Pol (TeLLie) <elbert.pol@gmail.com>: OS/2 port fixup
|
||||
Jeroen Valkonet <jvalkon@xs4all.nl>: motivate pitch control, suggestive patch for pitch command in generic control interface
|
||||
Andy Hefner <ahefner@gmail.com>: patch for that second UTF16 issue
|
||||
Taihei Monma <tmkk@mac.com>: A whole lot of new/improved assembler code, including Altivec!
|
||||
Christian Weisgerber <naddy@openbsd.org>, Brad Smith: sndio output
|
||||
Patrick Dehne (P4tr3ck) <patrick@steidle.net>: more MSVC++ porting, patch to handle missing bit reservoirs
|
||||
Thorsten Glaser <tg@mirbsd.de>: icy2utf8, suggest utf8 locale stuff
|
||||
Dan Smith <dan@algenta.com>: ABI fixes for ensuring stack alignment (esp. for MinGW-built DLL with MSVC)
|
||||
Michael Ryzhykh <mclroy@gmail.com>: mpg123.spec.in
|
||||
Stefan Lenselink <Stefan@lenselink.org>: initial aRts output
|
||||
Sergej Kvachonok <ravenexp@gmail.com>: win32 audio rewrite
|
||||
Winston: SunOS-4.1.4/gcc-2.7.0 testing and suggestions for fixes (legacy Makefile, integer type headers)
|
||||
Mika Tiainen: pointing out the fix for the UTF to ASCII filtering of tags to actually work
|
||||
Nick Kurshev <nickols_k@mail.ru>: extended 3dnow (from mplayer)
|
||||
Zuxy Meng <zuxy.meng@gmail.com>: SSE (from mplayer)
|
||||
Honza <cundrak@quick.cz>: idea and prototype patch for ICY meta data support
|
||||
Petr Baudis <pasky@ucw.cz>: patches: term sigcont, id3 display unicode fallback and condensed output
|
||||
Petr Salinger <Petr.Salinger@seznam.cz>: i486 enhancement
|
||||
mpdavig@users.sourceforge.net: linux-ppc-nas Makefile.legacy entry
|
||||
Adrian Bacon <adrian.bacon@xs4all.nl>: patched decode_i586_dither (noise shaped float/int rounding)
|
||||
Cool Feet Audio project <nutcase@dtfm.org>: realtime equalizer control
|
||||
Steve Grundell <www@grundell.u-net.com>: clean stdout in control mode with stdout decoding
|
||||
Romain Dolbeau <romain@dolbeau.org>: Altivec support (taken from mplayer)
|
||||
higway <higway@mednet.md>: MMX Patch
|
||||
Clemens Ladisch <clemens@ladisch.de>: ALSA 0.9/1.0 support
|
||||
|
||||
Debian Daniel Kobras <kobras@debian.org> era:
|
||||
|
||||
Steve Kemp <skx@debian.org>
|
||||
Dan Olson <theoddone33@icculus.org>
|
||||
Syuuhei Kashiyama <squash@mb.kcom.ne.jp>
|
||||
Rupert Levene <rupert.debian@hotpop.com>
|
||||
Andreas Dilger <adilger@turbolinux.com>
|
||||
Erik B. Andersen <andersee@debian.org>
|
||||
Chris Butler <chrisb@debian.org>
|
||||
Martin Sjogren <md9ms@mdstud.chalmers.se>
|
||||
Chet Hosey <chosey@budapress.com>
|
||||
Roland Rosenfeld <roland@spinnaker.de>
|
||||
|
||||
|
||||
Debian Colin Watson <cjwatson@debian.org> era:
|
||||
|
||||
Helge Deller <deller@gmx.de>
|
||||
Chet Hosey <chosey@budapress.com>
|
||||
Christopher C. Chimelis <chris@debian.org>
|
||||
Roland Rosenfeld <roland@spinnaker.de>
|
||||
Marcelo E. Magallon <mmagallo@debian.org>
|
||||
|
||||
|
||||
Initial Debianers:
|
||||
|
||||
Tommi Virtanen <tv@debian.org>
|
||||
Paul Haggart <phaggart@debian.org>
|
||||
|
||||
|
||||
Contributions/ideas Michael Hipp era:
|
||||
|
||||
Mikko Tommila: DCT9
|
||||
Oliver Fromme <oliver.fromme@heim3.tu-clausthal.de>
|
||||
MPEG Software Simulation Group: reference decoder package
|
||||
Tobias Bading: idea for DCT64 in subband synthesis from maplay package
|
||||
Jeff Tsay and Mikko Tommila: MDCT36 from maplay package
|
||||
Philipp Knirsch <phil@mpik-tueb.mpg.de>: DCT36/manual unroll idea
|
||||
Thomas Woerner: SGI Audio
|
||||
Damien Clermonte: HP-UX audio fixes
|
||||
Niclas Lindstrom <nil@wineasy.se>: OS2 port
|
||||
Stefan Bieschewski <stb@acm.org>: Pentium optimizations, decode_i586.s
|
||||
Martin Denn <mdenn@unix-ag.uni-kl.de>: NAS port
|
||||
Niklas Beisert <nbeisert@physik.tu-muenchen.de>: MPEG 2.5 tables
|
||||
<mycroft@NetBSD.ORG> and <augustss@cs.chalmers.se>: NetBSD Patch(es)
|
||||
Kevin Brintnall <kbrint@visi.com>: BSD patch
|
||||
Tony Million: win32 port
|
||||
Steven Tiger Lang: advanced shuffle
|
||||
Eric B. Mitchell: esd port
|
||||
Ryan R. Prosser <prosser@geocities.com>: esd port for Solaris
|
||||
Andreas Neuhaus: initial generic control interface
|
||||
|
||||
(additionally fetched from changelog:)
|
||||
|
||||
Ralf Hildebrandt <R.Hildebrandt@TU-BS.DE>: audio_alib changes
|
||||
<sms@moe.2bsd.com>: BSDOS 4.0 with gcc added to Makefile
|
||||
Bertrand Petit <elrond@phoe.netdev.net>: frontend changes
|
||||
Erik Mouw <J.A.K.Mouw@its.tudelft.nl>: SGI audio fix for non RAD machines
|
||||
Daniel O'Connor <darius@guppy.dons.net.au>: freebsd-esd make-entry
|
||||
D. Skarda <0rfelyus@atrey.karlin.mff.cuni.cz>: enhanced head_check
|
||||
Wilson, Jeff D <jeff.wilson@wilcom.com>: xterm-title
|
||||
Robert Bihlmeyer <robbe@orcus.priv.at>: esd changes
|
||||
Hannu Napari's <Hannu.Napari@hut.fi>: SGI audio patches
|
||||
<Juergen.Schoew@unix-ag.uni-siegen.de>: native AIX support
|
||||
<psst@euskalnet.net>: playlist patch
|
||||
Gilles Zunino <Gilles.Zunino@hei.fupl.asso.fr>: SGI audio patches
|
||||
Matthew Parslow <roy@alpha.alphalink.com.au>: esdserver patch
|
||||
<dlux@dlux.sch.bme.hu>: equalizer patch (equalfile setting)
|
||||
Ducroquet Erwan <ducroque@ufr-info-p7.ibp.fr>: HPUX/ALib support
|
||||
Shane Wegner <shane@CM.NU>: genrepatch
|
||||
Samuel Audet <guardia@step.polymtl.ca>: wav-File patch
|
||||
"J. Dean Brederson" <jdb@cs.utah.edu>: SGI-RAD support
|
||||
Chou Ye-chi <is84002@cis.nctu.edu.tw>: sajberplay/FreeBSD patch
|
||||
Fabrice Bellard <bellard@email.enst.fr>: 486 optimizations
|
||||
A. Hermansen <ahermans@vf.telia.no> and J. Kysela <perex@jcu.cz>: ALSA output
|
||||
KIMURA Takuhiro <kim@hannah.ipc.miyakyo-u.ac.jp>: K6-3DNow
|
||||
Petr Stehlik <stehlik@cas3.zlin.vutbr.cz>: MINT
|
||||
Andy <andy@snoogie.demon.co.uk>: float2int speed up proposal
|
||||
Brian Foutz <foutz@anise.ee.cornell.edu>: TK3Play
|
||||
Thomas Niederreiter <tn@tarantel.rz.fh-muenchen.de>: RIFF header fix
|
||||
Stefan Gybas <cab@studbox.uni-stuttgart.de>: m68k patch
|
||||
Grant Erickson <eric0139@tc.umn.edu>: Linux PPC patch
|
||||
Peter Berger <peterb@hoopoe.psc.edu>: BSDi patch
|
||||
Henrik P Johnson <king@one.se>: HTTP auth
|
||||
Steven Tiger Lang <tiger@tyger.org>: advanced shuffle
|
||||
"Brian J. Swetland" <swetland@uiuc.edu>: front-end (remote) patch
|
||||
<leo@zycad.com>
|
||||
Tillmann Steinbrecher <tst@gmx.de>: shuffle patch
|
||||
M.Stekelenburg <m.stekelenburg@student.utwente.nl>: i386-getbits
|
||||
Antti Andreimann <anttix@cyberix.edu.ee>: outburst patch
|
||||
Hur TaeSung <saturn@arari.snu.ac.kr>: 'http accept' patch
|
||||
|
||||
(from post-0.59 changes that yet have to go into new trunk:)
|
||||
|
||||
Hans Schwengeler <schweng@astro.unibas.ch>: audio_dec additions
|
||||
Wojciech Barañski's Mp3Play (check the tools folder): Mp3Play frontend
|
||||
Daniel Koukola: audio_oss.c patch
|
||||
Munechika SUMIKAWA <sumikawa@ebina.hitachi.co.jp>: IPv6
|
||||
TEMNOTA <temnota@kmv.ru>: HTTP,FTP patch/playlist fix
|
||||
Peter Surda <shurdeek@panorama.sth.ac.at>: VBR patch
|
||||
Ben <ben@blaukopf.com>: ARM startup time improvements
|
||||
Dave MacKenzie <djm@pix.net>: init_output() patch
|
||||
pasky's <pasky@ju.cz>: close-on-stop patch
|
772
libs/libopenmpt/Licenses/License.mpg123.txt
Normal file
772
libs/libopenmpt/Licenses/License.mpg123.txt
Normal file
|
@ -0,0 +1,772 @@
|
|||
This is the file that contains the terms of use, copying, etc. for the mpg123 distribution package.
|
||||
|
||||
Main message, to include in "About ..." boxes, etc:
|
||||
|
||||
Copyright (c) 1995-2013 by Michael Hipp and others,
|
||||
free software under the terms of the LGPL v2.1
|
||||
|
||||
There is an attempt to cover the actual list of authors in the AUTHORS file.
|
||||
Project maintainer since 2006 is Thomas Orgis and many people have contributed
|
||||
since the Michael Hipp era, but he stays the initial source and it would
|
||||
be impractical to count them all individually, so it's "and others".
|
||||
Source files contain the phrase "the mpg123 project" to the same effect
|
||||
in their license boilerplate; especially those that were added after
|
||||
maintainership changed. The person mainly responsible for the first version
|
||||
is usually named in the phrase "initially written by ...".
|
||||
|
||||
All files in the distribution that don't carry a license note on their own are
|
||||
licensed under the terms of the LGPL 2.1; exceptions may apply, especially to
|
||||
files not in the official distribution but in the revision control repository.
|
||||
|
||||
The formal license text follows.
|
||||
|
||||
=======================
|
||||
1. The LGPL version 2.1
|
||||
=======================
|
||||
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 2.1, February 1999
|
||||
|
||||
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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 Lesser GPL. It also counts
|
||||
as the successor of the GNU Library Public License, version 2, hence
|
||||
the version number 2.1.]
|
||||
|
||||
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 Lesser General Public License, applies to some
|
||||
specially designated software packages--typically libraries--of the
|
||||
Free Software Foundation and other authors who decide to use it. You
|
||||
can use it too, but we suggest you first think carefully about whether
|
||||
this license or the ordinary General Public License is the better
|
||||
strategy to use in any particular case, based on the explanations below.
|
||||
|
||||
When we speak of free software, we are referring to freedom of use,
|
||||
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 and use pieces of
|
||||
it in new free programs; and that you are informed that you can do
|
||||
these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
distributors to deny you these rights or to ask you to surrender these
|
||||
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 other code 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.
|
||||
|
||||
We protect your rights with a two-step method: (1) we copyright the
|
||||
library, and (2) we offer you this license, which gives you legal
|
||||
permission to copy, distribute and/or modify the library.
|
||||
|
||||
To protect each distributor, we want to make it very clear that
|
||||
there is no warranty for the free library. Also, if the library is
|
||||
modified by someone else and passed on, the recipients should know
|
||||
that what they have is not the original version, so that the original
|
||||
author's reputation will not be affected by problems that might be
|
||||
introduced by others.
|
||||
|
||||
Finally, software patents pose a constant threat to the existence of
|
||||
any free program. We wish to make sure that a company cannot
|
||||
effectively restrict the users of a free program by obtaining a
|
||||
restrictive license from a patent holder. Therefore, we insist that
|
||||
any patent license obtained for a version of the library must be
|
||||
consistent with the full freedom of use specified in this license.
|
||||
|
||||
Most GNU software, including some libraries, is covered by the
|
||||
ordinary GNU General Public License. This license, the GNU Lesser
|
||||
General Public License, applies to certain designated libraries, and
|
||||
is quite different from the ordinary General Public License. We use
|
||||
this license for certain libraries in order to permit linking those
|
||||
libraries into non-free programs.
|
||||
|
||||
When a program is linked with a library, whether statically or using
|
||||
a shared library, the combination of the two is legally speaking a
|
||||
combined work, a derivative of the original library. The ordinary
|
||||
General Public License therefore permits such linking only if the
|
||||
entire combination fits its criteria of freedom. The Lesser General
|
||||
Public License permits more lax criteria for linking other code with
|
||||
the library.
|
||||
|
||||
We call this license the "Lesser" General Public License because it
|
||||
does Less to protect the user's freedom than the ordinary General
|
||||
Public License. It also provides other free software developers Less
|
||||
of an advantage over competing non-free programs. These disadvantages
|
||||
are the reason we use the ordinary General Public License for many
|
||||
libraries. However, the Lesser license provides advantages in certain
|
||||
special circumstances.
|
||||
|
||||
For example, on rare occasions, there may be a special need to
|
||||
encourage the widest possible use of a certain library, so that it becomes
|
||||
a de-facto standard. To achieve this, non-free programs must be
|
||||
allowed to use the library. A more frequent case is that a free
|
||||
library does the same job as widely used non-free libraries. In this
|
||||
case, there is little to gain by limiting the free library to free
|
||||
software only, so we use the Lesser General Public License.
|
||||
|
||||
In other cases, permission to use a particular library in non-free
|
||||
programs enables a greater number of people to use a large body of
|
||||
free software. For example, permission to use the GNU C Library in
|
||||
non-free programs enables many more people to use the whole GNU
|
||||
operating system, as well as its variant, the GNU/Linux operating
|
||||
system.
|
||||
|
||||
Although the Lesser General Public License is Less protective of the
|
||||
users' freedom, it does ensure that the user of a program that is
|
||||
linked with the Library has the freedom and the wherewithal to run
|
||||
that program using a modified version of the Library.
|
||||
|
||||
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, whereas the latter must
|
||||
be combined with the library in order to run.
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License Agreement applies to any software library or other
|
||||
program which contains a notice placed by the copyright holder or
|
||||
other authorized party saying it may be distributed under the terms of
|
||||
this Lesser 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 combine 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) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (1) uses at run time a
|
||||
copy of the library already present on the user's computer system,
|
||||
rather than copying library functions into the executable, and (2)
|
||||
will operate properly with a modified version of the library, if
|
||||
the user installs one, as long as the modified version is
|
||||
interface-compatible with the version that the work was made with.
|
||||
|
||||
c) 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.
|
||||
|
||||
d) 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.
|
||||
|
||||
e) 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 materials to be 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 with
|
||||
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 Lesser 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
|
||||
|
||||
|
||||
====================
|
||||
2. The GPL version 2
|
||||
====================
|
||||
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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 Lesser 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
|
28
libs/libopenmpt/Licenses/License.ogg.txt
Normal file
28
libs/libopenmpt/Licenses/License.ogg.txt
Normal file
|
@ -0,0 +1,28 @@
|
|||
Copyright (c) 2002, Xiph.org Foundation
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
- Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
- Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
- Neither the name of the Xiph.org Foundation nor the names of its
|
||||
contributors may be used to endorse or promote products derived from
|
||||
this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION
|
||||
OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
115
libs/libopenmpt/Licenses/License.zlib.txt
Normal file
115
libs/libopenmpt/Licenses/License.zlib.txt
Normal file
|
@ -0,0 +1,115 @@
|
|||
ZLIB DATA COMPRESSION LIBRARY
|
||||
|
||||
zlib 1.2.11 is a general purpose data compression library. All the code is
|
||||
thread safe. The data format used by the zlib library is described by RFCs
|
||||
(Request for Comments) 1950 to 1952 in the files
|
||||
http://tools.ietf.org/html/rfc1950 (zlib format), rfc1951 (deflate format) and
|
||||
rfc1952 (gzip format).
|
||||
|
||||
All functions of the compression library are documented in the file zlib.h
|
||||
(volunteer to write man pages welcome, contact zlib@gzip.org). A usage example
|
||||
of the library is given in the file test/example.c which also tests that
|
||||
the library is working correctly. Another example is given in the file
|
||||
test/minigzip.c. The compression library itself is composed of all source
|
||||
files in the root directory.
|
||||
|
||||
To compile all files and run the test program, follow the instructions given at
|
||||
the top of Makefile.in. In short "./configure; make test", and if that goes
|
||||
well, "make install" should work for most flavors of Unix. For Windows, use
|
||||
one of the special makefiles in win32/ or contrib/vstudio/ . For VMS, use
|
||||
make_vms.com.
|
||||
|
||||
Questions about zlib should be sent to <zlib@gzip.org>, or to Gilles Vollant
|
||||
<info@winimage.com> for the Windows DLL version. The zlib home page is
|
||||
http://zlib.net/ . Before reporting a problem, please check this site to
|
||||
verify that you have the latest version of zlib; otherwise get the latest
|
||||
version and check whether the problem still exists or not.
|
||||
|
||||
PLEASE read the zlib FAQ http://zlib.net/zlib_faq.html before asking for help.
|
||||
|
||||
Mark Nelson <markn@ieee.org> wrote an article about zlib for the Jan. 1997
|
||||
issue of Dr. Dobb's Journal; a copy of the article is available at
|
||||
http://marknelson.us/1997/01/01/zlib-engine/ .
|
||||
|
||||
The changes made in version 1.2.11 are documented in the file ChangeLog.
|
||||
|
||||
Unsupported third party contributions are provided in directory contrib/ .
|
||||
|
||||
zlib is available in Java using the java.util.zip package, documented at
|
||||
http://java.sun.com/developer/technicalArticles/Programming/compression/ .
|
||||
|
||||
A Perl interface to zlib written by Paul Marquess <pmqs@cpan.org> is available
|
||||
at CPAN (Comprehensive Perl Archive Network) sites, including
|
||||
http://search.cpan.org/~pmqs/IO-Compress-Zlib/ .
|
||||
|
||||
A Python interface to zlib written by A.M. Kuchling <amk@amk.ca> is
|
||||
available in Python 1.5 and later versions, see
|
||||
http://docs.python.org/library/zlib.html .
|
||||
|
||||
zlib is built into tcl: http://wiki.tcl.tk/4610 .
|
||||
|
||||
An experimental package to read and write files in .zip format, written on top
|
||||
of zlib by Gilles Vollant <info@winimage.com>, is available in the
|
||||
contrib/minizip directory of zlib.
|
||||
|
||||
|
||||
Notes for some targets:
|
||||
|
||||
- For Windows DLL versions, please see win32/DLL_FAQ.txt
|
||||
|
||||
- For 64-bit Irix, deflate.c must be compiled without any optimization. With
|
||||
-O, one libpng test fails. The test works in 32 bit mode (with the -n32
|
||||
compiler flag). The compiler bug has been reported to SGI.
|
||||
|
||||
- zlib doesn't work with gcc 2.6.3 on a DEC 3000/300LX under OSF/1 2.1 it works
|
||||
when compiled with cc.
|
||||
|
||||
- On Digital Unix 4.0D (formely OSF/1) on AlphaServer, the cc option -std1 is
|
||||
necessary to get gzprintf working correctly. This is done by configure.
|
||||
|
||||
- zlib doesn't work on HP-UX 9.05 with some versions of /bin/cc. It works with
|
||||
other compilers. Use "make test" to check your compiler.
|
||||
|
||||
- gzdopen is not supported on RISCOS or BEOS.
|
||||
|
||||
- For PalmOs, see http://palmzlib.sourceforge.net/
|
||||
|
||||
|
||||
Acknowledgments:
|
||||
|
||||
The deflate format used by zlib was defined by Phil Katz. The deflate and
|
||||
zlib specifications were written by L. Peter Deutsch. Thanks to all the
|
||||
people who reported problems and suggested various improvements in zlib; they
|
||||
are too numerous to cite here.
|
||||
|
||||
Copyright notice:
|
||||
|
||||
(C) 1995-2017 Jean-loup Gailly and Mark Adler
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
arising from the use of this software.
|
||||
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
|
||||
1. The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
2. Altered source versions must be plainly marked as such, and must not be
|
||||
misrepresented as being the original software.
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
|
||||
Jean-loup Gailly Mark Adler
|
||||
jloup@gzip.org madler@alumni.caltech.edu
|
||||
|
||||
If you use the zlib library in a product, we would appreciate *not* receiving
|
||||
lengthy legal documents to sign. The sources are provided for free but without
|
||||
warranty of any kind. The library has been entirely written by Jean-loup
|
||||
Gailly and Mark Adler; it does not include third-party code.
|
||||
|
||||
If you redistribute modified sources, we would appreciate that you include in
|
||||
the file ChangeLog history information documenting your changes. Please read
|
||||
the FAQ for more information on the distribution of modified source versions.
|
90
libs/libopenmpt/SRB2NOTE-DEBIAN.md
Normal file
90
libs/libopenmpt/SRB2NOTE-DEBIAN.md
Normal file
|
@ -0,0 +1,90 @@
|
|||
# libopenmpt Debian backport info
|
||||
|
||||
Backported libopenmpt 0.4.0 packages are available at ppa:stjr/srb2
|
||||
for Ubuntu Disco, Cosmic, Bionic, Xenial, and Trusty as of 2019/01/04.
|
||||
|
||||
Debian Jessie users should use the Trusty package. Later Debian versions
|
||||
may use Disco or another working version.
|
||||
|
||||
* libopenmpt 0.4.0 source package: http://archive.ubuntu.com/ubuntu/pool/universe/libo/libopenmpt/libopenmpt_0.4.0-1.dsc
|
||||
|
||||
# Backporting from Disco to Cosmic and Bionic
|
||||
|
||||
Cosmic and Bionic require no changes to the source package. They have
|
||||
the prerequisite `debhelper` and `dpkg-dev` versions, a matching
|
||||
`automake` version (1.15), as well as G++ > 5.
|
||||
|
||||
Use the `backportpackage` script to automatically tag the package to
|
||||
Cosmic and Bionic, then upload to PPA:
|
||||
|
||||
```
|
||||
sudo apt install ubuntu-dev-tools
|
||||
export UBUMAIL="John Doe <email@com.com>" # Name and email associated with your PGP sign key
|
||||
backportpackage -d [cosmic/bionic] -u [path-to-ppa] --key=[key-fingerprint] http://archive.ubuntu.com/ubuntu/pool/universe/libo/libopenmpt/libopenmpt_0.4.0-1.dsc
|
||||
```
|
||||
|
||||
# Backporting from Disco to Xenial
|
||||
|
||||
Download the package:
|
||||
|
||||
```
|
||||
dget http://archive.ubuntu.com/ubuntu/pool/universe/libo/libopenmpt/libopenmpt_0.4.0-1.dsc
|
||||
```
|
||||
|
||||
Xenial has an earlier `debhelper` version, but the rest of the prerequisites
|
||||
are available.
|
||||
|
||||
The required changes (see patch `debian/libopenmpt-0.4.0-xenial-backport.diff` in this directory):
|
||||
|
||||
* `debian/control`
|
||||
* Add `automake` to Build-Depends
|
||||
* Change `debhelper` version to `(>= 9.0~)`
|
||||
* `debian/compat`
|
||||
* Change to `10`
|
||||
|
||||
Then run these commands:
|
||||
|
||||
```
|
||||
dch -i # Edit the changelog; make sure the Name and email match the PGP sign key and that the changelog targets xenial
|
||||
debuild -s -d -k0x[key-fingerprint] # Build the updated package
|
||||
dput [path-to-ppa] [path-to-changes-file] # Upload to PPA
|
||||
```
|
||||
|
||||
# Backporting from Disco to Trusty
|
||||
|
||||
Download the package:
|
||||
|
||||
```
|
||||
dget http://archive.ubuntu.com/ubuntu/pool/universe/libo/libopenmpt/libopenmpt_0.4.0-1.dsc
|
||||
```
|
||||
|
||||
Trusty requires more changes because it uses G++ 4.8 whereas the source
|
||||
package expects G++ >= 5. Automake is an earlier version as well --
|
||||
1.14 vs 1.15 -- so `autoreconf` needs to be run at build time.
|
||||
|
||||
The required changes (see patch `debian/libopenmpt-0.4.0-trusty-backport.diff` in this directory):
|
||||
|
||||
* `debian/control`
|
||||
* Add `automake` and `libtool` to Build-Depends
|
||||
* Change `debhelper` version to `(>= 9.0~)`
|
||||
* Change `dpkg-dev` version to `(>= 1.17.0)`
|
||||
* `debian/compat`
|
||||
* Change to `10`
|
||||
* `debian/rules`
|
||||
* Under `override_dh_auto_configure`, input this line as the first command:
|
||||
`autoreconf --force --install`
|
||||
* This re-configures the package for Automake 1.14
|
||||
* `debian/libopenmpt-modplug1.symbols` and `debian/libopenmpt0.symbols`
|
||||
* Delete these files
|
||||
* The C++ ABI for G++ 4.8 is incompatible with G++ >= 5, so the
|
||||
generated symbols will be different than the expected symbols
|
||||
in the `*.symbols` files. Deleting these files will skip the
|
||||
symbol check.
|
||||
|
||||
Then run these commands:
|
||||
|
||||
```
|
||||
dch -i # Edit the changelog; make sure the Name and email match the PGP sign key and that the changelog targets trusty
|
||||
debuild -s -d -k0x[key-fingerprint] # Build the updated package
|
||||
dput [path-to-ppa] [path-to-changes-file] # Upload to PPA
|
||||
```
|
54
libs/libopenmpt/SRB2NOTE.md
Normal file
54
libs/libopenmpt/SRB2NOTE.md
Normal file
|
@ -0,0 +1,54 @@
|
|||
# libopenmpt mingw-w64 binary info
|
||||
|
||||
Current built version as of 2019/05/23 is 0.4.4+r11531.pkg
|
||||
|
||||
* mingw binaries (.dll): `bin/[x86 or x86_64]/mingw`
|
||||
* mingw import libraries (.dll.a): `lib/[x86 or x86_64]/mingw`
|
||||
|
||||
# Building libopenmpt with mingw-w64
|
||||
|
||||
libopenmpt must be built from the Makefile / Android dev package in the
|
||||
[Downloads page](https://lib.openmpt.org/libopenmpt/download/#all-downloads)
|
||||
|
||||
Use the mingw-w64 distributions from
|
||||
[SourceForge](https://sourceforge.net/projects/mingw-w64/files/#readme).
|
||||
|
||||
You can download the appropriate 7-zip archive, extract to a folder of
|
||||
your choice, remove any existing mingw directories from your PATH,
|
||||
then call `mingw32-make.exe` from its direct location.
|
||||
|
||||
FOR LIBOPENMPT, YOU MUST USE A MINGW PACKAGE THAT SUPPORTS THE POSIX
|
||||
THREADING MODEL! DO NOT COMPILE WITH A WIN32 THREADING MODEL!
|
||||
|
||||
I use GCC 7.3.0:
|
||||
|
||||
* [x86_64-posix-seh](https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/7.3.0/threads-posix/seh/x86_64-7.3.0-release-posix-seh-rt_v5-rev0.7z)
|
||||
* [i686-posix-dwarf](https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/7.3.0/threads-posix/dwarf/i686-7.3.0-release-posix-dwarf-rt_v5-rev0.7z)
|
||||
|
||||
## x86 build instructions
|
||||
|
||||
```
|
||||
set CFLAGS=-march=pentium -static-libgcc
|
||||
set CXXFLAGS=-march=pentium -static-libgcc -static-libstdc++
|
||||
set LDFLAGS=-Wl,--out-implib,bin/libopenmpt.dll.a -Wl,-Bstatic,--whole-archive -lwinpthread -Wl,-Bdynamic,--no-whole-archive
|
||||
|
||||
cd [libopenmpt-make-src]
|
||||
[x86-mingw-w64-bin]/mingw32-make.exe CONFIG=mingw64-win32
|
||||
```
|
||||
|
||||
`libopenmpt.dll` and `libopenmpt.dll.a` will be built in the
|
||||
`bin/` folder.
|
||||
|
||||
## x86_64 build instructions
|
||||
|
||||
```
|
||||
set CFLAGS=-march=nocona -static-libgcc
|
||||
set CXXFLAGS=-march=nocona -static-libgcc -static-libstdc++
|
||||
set LDFLAGS=-Wl,--out-implib,bin/libopenmpt.dll.a -Wl,-Bstatic,--whole-archive -lwinpthread -Wl,-Bdynamic,--no-whole-archive
|
||||
|
||||
cd [libopenmpt-make-src]
|
||||
[x86_64-mingw-w64-bin]/mingw32-make.exe CONFIG=mingw64-win64
|
||||
```
|
||||
|
||||
`libopenmpt.dll` and `libopenmpt.dll.a` will be built in the
|
||||
`bin/` folder.
|
BIN
libs/libopenmpt/bin/x86/libopenmpt.dll
Normal file
BIN
libs/libopenmpt/bin/x86/libopenmpt.dll
Normal file
Binary file not shown.
BIN
libs/libopenmpt/bin/x86/mingw/libopenmpt.dll
Normal file
BIN
libs/libopenmpt/bin/x86/mingw/libopenmpt.dll
Normal file
Binary file not shown.
BIN
libs/libopenmpt/bin/x86/openmpt-mpg123.dll
Normal file
BIN
libs/libopenmpt/bin/x86/openmpt-mpg123.dll
Normal file
Binary file not shown.
BIN
libs/libopenmpt/bin/x86/openmpt-ogg.dll
Normal file
BIN
libs/libopenmpt/bin/x86/openmpt-ogg.dll
Normal file
Binary file not shown.
BIN
libs/libopenmpt/bin/x86/openmpt-vorbis.dll
Normal file
BIN
libs/libopenmpt/bin/x86/openmpt-vorbis.dll
Normal file
Binary file not shown.
BIN
libs/libopenmpt/bin/x86/openmpt-zlib.dll
Normal file
BIN
libs/libopenmpt/bin/x86/openmpt-zlib.dll
Normal file
Binary file not shown.
BIN
libs/libopenmpt/bin/x86_64/libopenmpt.dll
Normal file
BIN
libs/libopenmpt/bin/x86_64/libopenmpt.dll
Normal file
Binary file not shown.
BIN
libs/libopenmpt/bin/x86_64/mingw/libopenmpt.dll
Normal file
BIN
libs/libopenmpt/bin/x86_64/mingw/libopenmpt.dll
Normal file
Binary file not shown.
BIN
libs/libopenmpt/bin/x86_64/openmpt-mpg123.dll
Normal file
BIN
libs/libopenmpt/bin/x86_64/openmpt-mpg123.dll
Normal file
Binary file not shown.
BIN
libs/libopenmpt/bin/x86_64/openmpt-ogg.dll
Normal file
BIN
libs/libopenmpt/bin/x86_64/openmpt-ogg.dll
Normal file
Binary file not shown.
BIN
libs/libopenmpt/bin/x86_64/openmpt-vorbis.dll
Normal file
BIN
libs/libopenmpt/bin/x86_64/openmpt-vorbis.dll
Normal file
Binary file not shown.
BIN
libs/libopenmpt/bin/x86_64/openmpt-zlib.dll
Normal file
BIN
libs/libopenmpt/bin/x86_64/openmpt-zlib.dll
Normal file
Binary file not shown.
791
libs/libopenmpt/changelog.md
Normal file
791
libs/libopenmpt/changelog.md
Normal file
|
@ -0,0 +1,791 @@
|
|||
|
||||
Changelog {#changelog}
|
||||
=========
|
||||
|
||||
For fully detailed change log, please see the source repository directly. This
|
||||
is just a high-level summary.
|
||||
|
||||
### libopenmpt 0.4.4 (2019-04-07)
|
||||
|
||||
* [**Bug**] Channel VU meters were swapped.
|
||||
|
||||
* Startrekker: Clamp speed to 31 ticks per row.
|
||||
* MTM: Ignore unused Exy commands on import. Command E5x (Set Finetune) is now
|
||||
applied correctly.
|
||||
* MOD: Sample swapping was always enabled since it has been separated from the
|
||||
ProTracker 1/2 compatibility flag. Now it is always enabled for Amiga-style
|
||||
modules and otherwise the old heuristic is used again.
|
||||
|
||||
* stb_vorbis: Update to v1.16 (2019-03-05).
|
||||
|
||||
### libopenmpt 0.4.3 (2019-02-11)
|
||||
|
||||
* [**Sec**] Possible crash due to null-pointer access when doing a portamento
|
||||
from an OPL instrument to an empty instrument note map slot (r11348).
|
||||
|
||||
* [**Bug**] libopenmpt did not compile on Apple platforms in C++17 mode.
|
||||
|
||||
* IT: Various fixes for note-off + instrument number in Old Effects mode.
|
||||
* MO3: Import IT row highlights as written by MO3 2.4.1.2 or newer. Required
|
||||
for modules using modern tempo mode.
|
||||
|
||||
* miniz: Update to v2.0.8 (2018-09-19).
|
||||
* stb_vorbis: Update to v1.15 (2019-02-07).
|
||||
|
||||
### libopenmpt 0.4.2 (2019-01-22)
|
||||
|
||||
* [**Sec**] DSM: Assertion failure during file parsing with debug STLs
|
||||
(r11209).
|
||||
* [**Sec**] J2B: Assertion failure during file parsing with debug STLs
|
||||
(r11216).
|
||||
|
||||
* S3M: Allow volume change of OPL instruments after Note Cut.
|
||||
|
||||
### libopenmpt 0.4.1 (2019-01-06)
|
||||
|
||||
* [**Bug**] Binaries compiled for winold (Windows XP, Vista, 7, for CPUs
|
||||
without SSE2 support) did not actually work on CPUs without SSE2 support.
|
||||
* [**Bug**] libmodplug: Public symbols of the C++ API had `visibility=hidden`
|
||||
set on non-MSVC systems, which made them not publicly accessible.
|
||||
* [**Bug**] Project files for Windows 10 desktop builds on ARM and ARM64
|
||||
(`build/vs2017win10`) were missing from Windows source package.
|
||||
* [**Bug**] MSVC project files in Windows source package lacked additional
|
||||
files required to build DLLs.
|
||||
|
||||
* MO3: Apply playback changes based on "ModPlug-made" header flag.
|
||||
|
||||
* minimp3: Update to commit e9df0760e94044caded36a55d70ab4152134adc5
|
||||
(2018-12-23).
|
||||
|
||||
### libopenmpt 0.4.0 (2018-12-23)
|
||||
|
||||
* [**New**] libopenmpt now includes emulation of the OPL chip and thus plays
|
||||
OPL instruments in S3M, C67 and MPTM files. OPL chip emulation volume can be
|
||||
changed with the new ctl `render.opl.volume_factor`.
|
||||
* [**New**] libopenmpt now supports CDFM / Composer 670 module files.
|
||||
* [**New**] Autotools `configure` and plain `Makefile` now honor the variable
|
||||
`CXXSTDLIB_PCLIBSPRIVATE` which serves the sole purpose of listing the
|
||||
standard library (or libraries) required for static linking. The contents of
|
||||
this variable will be put in `libopenmpt.pc` `Libs.private` and used for
|
||||
nothing else. See \ref libopenmpt_c_staticlinking .
|
||||
* [**New**] foo_openmpt: foo_openmpt now also works on Windows XP.
|
||||
* [**New**] libopenmpt Emscripten builds now ship with MP3 support by
|
||||
default, based on minimp3 by Lion (github.com/lieff).
|
||||
* [**New**] libopenmpt: New ctl `play.at_end` can be used to change what
|
||||
happens when the song end is reached:
|
||||
* "fadeout": Fades the module out for a short while. Subsequent reads
|
||||
after the fadeout will return 0 rendered frames. This is the default and
|
||||
identical to the behaviour in previous libopenmpt versions.
|
||||
* "continue": Returns 0 rendered frames when the song end is reached.
|
||||
Subsequent reads will continue playing from the song start or loop
|
||||
start. This can be used for custom loop logic, such as loop
|
||||
auto-detection and longer fadeouts.
|
||||
* "stop": Returns 0 rendered frames when the song end is reached.
|
||||
Subsequent reads will return 0 rendered frames.
|
||||
* [**New**] Add new metadata fields `"originaltype"` and `"originaltype_long"`
|
||||
which allow more clearly reflecting what is going on with converted formats
|
||||
like MO3 and GDM.
|
||||
* [**New**] `Makefile` `CONFIG=emscripten` now can generate WebAssembly via
|
||||
the additional option `EMSCRIPTEN_TARGET=wasm`.
|
||||
* [**New**] Compiling for DOS is now experimentally supported via DJGPP GCC
|
||||
7.2 or later.
|
||||
|
||||
* [**Change**] minimp3: Instead of the LGPL-2.1-licensed minimp3 by KeyJ,
|
||||
libopenmpt now uses the CC0-1.0-licensed minimp3 by Lion (github.com/lieff)
|
||||
as a fallback if libmpg123 is unavailable. The `USE_MINIMP3` `Makefile`
|
||||
option is gone and minimp3 will be used automatically in the `Makefile`
|
||||
build system if libmpg123 is not available.
|
||||
* [**Change**] openmpt123: openmpt123 now rejects `--output-type` in `--ui`
|
||||
and `--batch` modes and also rejects `--output` in `--render` mode. These
|
||||
combinations of options really made no sense and were rather confusing.
|
||||
* [**Change**] Android NDK build system now uses libc++ (`c++_shared`) instead
|
||||
of GNU libstdc++ (`gnustl_shared`), as recommended by Android NDK r16b.
|
||||
* [**Change**] xmp-openmpt: `openmpt-mpg123.dll` is no longer optional and
|
||||
must be placed into the same directory as `xmp-openmpt.dll`.
|
||||
* [**Change**] in_openmpt: `openmpt-mpg123.dll` is no longer optional and must
|
||||
be placed either into the directory of the player itself or into the same
|
||||
directory as `in_openmpt.dll`. This is dependent on how the player loads its
|
||||
plugins. For WinAMP 5, `openmpt-mpg123.dll` needs to be in the directory
|
||||
which contains `winamp.exe`. `in_openmpt.dll` needs to be in the `Plugins`
|
||||
directory.
|
||||
* [**Change**] foo_openmpt: foo_openmpt is now packaged as a fb2k-component
|
||||
package for easier installation.
|
||||
* [**Change**] When building libopenmpt with MinGW-w64, it is now recommended
|
||||
to use the posix thread model (as opposed to the win32 threading model),
|
||||
because the former does support std::mutex while the latter does not. When
|
||||
building with win32 threading model with the Autotools build system, it is
|
||||
recommended to provide the `mingw-std-threads` package. Building libopenmpt
|
||||
with MinGW-w64 without any `std::thread`/`std::mutex` support is deprecated
|
||||
and support for such configurations will be removed in libopenmpt 0.5.
|
||||
* [**Change**] `Makefile` `CONFIG=emscripten` now has 4 `EMSCRIPTEN_TARGET=`
|
||||
settings: `wasm` generates WebAssembly, `asmjs128m` generates asm.js with a
|
||||
fixed size 128MB heap, `asmjs` generates asm.js with a fixed default size
|
||||
heap (as of Emscripten 1.38.11, this amounts to 16MB), `js` generates
|
||||
JavaScript with dynamic heap growth and with compatibility for older VMs.
|
||||
* [**Change**] libmodplug: Update public headers to libmodplug 0.8.8.5. This
|
||||
adds support for kind-of automatic MODPLUG_EXPORT decoration on Windows.
|
||||
|
||||
* [**Regression**] Support for Clang 3.4, 3.5 has been removed.
|
||||
* [**Regression**] Building with Android NDK older than NDK r16b is not
|
||||
supported any more.
|
||||
* [**Regression**] Support for Emscripten versions older than 1.38.5 has been
|
||||
removed.
|
||||
* [**Regression**] Support for libmpg123 older than 1.14.0 has been removed.
|
||||
* [**Regression**] Using MediaFoundation to decode MP3 samples is no longer
|
||||
supported. Use libmpg123 or minimp3 instead.
|
||||
* [**Regression**] libmodplug: Support for emulating libmodplug 0.8.7 API/ABI
|
||||
has been removed.
|
||||
|
||||
* [**Bug**] xmp-openmpt: Sample rate and number of output channels were not
|
||||
applied correctly when using per-file settings.
|
||||
* [**Bug**] Internal mixer state was not initialized properly when initially
|
||||
rendering in 44100kHz stereo format.
|
||||
* [**Bug**] openmpt123: Prevent libsdl2 and libsdl from being enabled at the
|
||||
same time because they conflict with each other.
|
||||
* [**Bug**] libmodplug: Setting `SNDMIX_NORESAMPLING` in the C++ API always
|
||||
resulted in linear interpolation instead of nearest neighbour
|
||||
|
||||
* IT: In Compatible Gxx mode, allow sample changes next to a tone portamento
|
||||
effect if a previous sample has already stopped playing.
|
||||
* IT: Fix broken volume envelopes with negative values as found in breakdwn.it
|
||||
by Elysis.
|
||||
* MOD: Slides and delayed notes are executed on every repetition of a row with
|
||||
row delay (fixes "ode to protracker").
|
||||
* XM: If the sustain point of the panning envelope is reached before key-off,
|
||||
it is never released.
|
||||
* XM: Do not default recall volume / panning for delayed instrument-less notes
|
||||
* XM :E60 loop bug was not considered in song length calucation.
|
||||
* S3M: Notes without instrument number use previous note's sample offset.
|
||||
* Tighten M15 and MOD file rejection heuristics.
|
||||
* J2B: Ignore frequency limits from file header. Fixes Medivo.j2b, broken
|
||||
since libopenmpt-0.2.6401-beta17.
|
||||
* STM: More accurate tempo calculation.
|
||||
* STM: Better support for early format revisions (no such files have been
|
||||
found in the wild, though).
|
||||
* STM: Last character of sample name was missing.
|
||||
* SFX: Work around bad conversions of the "Operation Stealth" soundtrack by
|
||||
turning pattern breaks into note stops.
|
||||
* IMF: Filter cutoff was upside down and the cutoff range was too small.
|
||||
* ParamEq plugin center frequency was not limited correctly.
|
||||
* Keep track of active SFx macro during seeking.
|
||||
* The "note cut" duplicate note action did not volume-ramp the previously
|
||||
playing sample.
|
||||
* A song starting with non-existing patterns could not be played.
|
||||
* DSM: Support restart position and 16-bit samples.
|
||||
* DTM: Import global volume.
|
||||
* MOD: Support notes in octave 2, like in FastTracker 2 (fixes DOPE.MOD).
|
||||
* Do not apply Amiga playback heuristics to MOD files that have clearly been
|
||||
written with a PC tracker.
|
||||
* MPTM: More logical release node behaviour.
|
||||
* Subsong search is now less thorough. It could previously find many subsongs
|
||||
that are technically correct (unplayed rows at the beginning of patterns
|
||||
that have been jumped over due to pattern breaks), but so far no real-world
|
||||
module that would require such a thorough subsong detection was found. The
|
||||
old mechanism caused way more false positives than intended with real-world
|
||||
modules, though.
|
||||
* Restrict the unpacked size of compressed DMF, IT, MDL and MO3 samples to
|
||||
avoid huge allocations with malformed small files.
|
||||
|
||||
### libopenmpt 0.3 (2017-09-27)
|
||||
|
||||
* [**New**] New error handling functionality in the C API, which in particular
|
||||
allows distinguishing potentially transient out-of-memory errors from parse
|
||||
errors during module loading.
|
||||
* [**New**] New API `openmpt::module::get_selected_subsong()` (C++) and
|
||||
`openmpt_module_get_selected_subsong()` (C).
|
||||
* [**New**] Faster file header probing API `openmpt::probe_file_header()` and
|
||||
`openmpt::probe_file_header_get_recommended_size` (C++), and
|
||||
`openmpt_probe_file_header()`,
|
||||
`openmpt_probe_file_header_without_filesize()`,
|
||||
`openmpt_probe_file_header_from_stream()` and
|
||||
`openmpt_probe_file_header_get_recommended_size()` (C).
|
||||
* [**New**] New API `openmpt::could_open_probability()` (C++) and
|
||||
`openmpt_could_open_probability()` (C). This fixes a spelling error in the
|
||||
old 0.2 API.
|
||||
* [**New**] openmpt123: openmpt123 can now open M3U, M3U8, M3UEXT, M3U8EXT and
|
||||
PLSv2 playlists via the `--playlist` option.
|
||||
* [**New**] openmpt123: openmpt123 now supports very fast file header probing
|
||||
via the `--probe` option.
|
||||
* [**New**] Libopenmpt now supports building for Windows 10 Universal (Windows
|
||||
Store 8.2) APIs with MSVC, and also for the older Windows Runtime APIs with
|
||||
MinGW-w64.
|
||||
* [**New**] New API header `libopenmpt_ext.h` which implements the libopenmpt
|
||||
extension APIs also for the C interface.
|
||||
* [**New**] The Reverb effect (S99 in S3M/IT/MPTM, and X99 in XM) is now
|
||||
implemented in libopenmpt.
|
||||
* [**New**] For Amiga modules, a new resampler based on the Amiga's sound
|
||||
characteristics has been added. It can be activated by passing the
|
||||
`render.resampler.emulate_amiga` ctl with a value of `1`. Non-Amiga modules
|
||||
are not affected by this, and setting the ctl overrides the resampler choice
|
||||
specified by `OPENMPT_MODULE_RENDER_INTERPOLATIONFILTER_LENGTH` or
|
||||
`openmpt::module::RENDER_INTERPOLATIONFILTER_LENGTH`. Support for the MOD
|
||||
command E0x (Set LED Filter) is also available when the Amiga resampler is
|
||||
enabled.
|
||||
|
||||
* [**Change**] libopenmpt versioning changed and follows the more conventional
|
||||
major.minor.patch as well as the recommendations of the
|
||||
[SemVer](http://semver.org/) scheme now. In addition to the SemVer
|
||||
requirements, pre-1.0.0 versions will also honor API and ABI stability in
|
||||
libopenmpt (i.e. libopenmpt ignores SemVer Clause 4).
|
||||
* [**Change**] The output directories of the MSVC build system were changed to
|
||||
`bin/vs2015-shared/x86-64-win7/` (and similar) layout which allows building
|
||||
in the same tree with different compiler versions without overwriting other
|
||||
outputs.
|
||||
* [**Change**] The emscripten build now exports libopenmpt as 'libopenmpt'
|
||||
instead of the default 'Module'.
|
||||
* [**Change**] Android: The build system changed. The various Android.mk files
|
||||
have been merged into a single one which can be controlled using command
|
||||
line options.
|
||||
* [**Change**] The `Makefile` build system now passes `std=c++11` to the
|
||||
compiler by default. Older compilers may still work if you pass
|
||||
`STDCXX=c++0x` to the `make` invocation.
|
||||
* [**Change**] The `Makefile` option `ANCIENT=1` is gone.
|
||||
* [**Change**] The optional dependencies on `libltdl` or `libdl` are gone.
|
||||
They are no longer needed for any functionality.
|
||||
|
||||
* [**Regression**] Compiling client code using the C++ API now requires a
|
||||
compiler running in C++11 mode.
|
||||
* [**Regression**] Support for GCC 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7 has been
|
||||
removed.
|
||||
* [**Regression**] Support for Clang 3.0, 3.1, 3.2, 3.3 has been removed.
|
||||
* [**Regression**] Support for Emscripten versions older than 1.31.0 has been
|
||||
removed.
|
||||
* [**Regression**] Support for Android NDK versions older than 11 has been
|
||||
removed.
|
||||
* [**Regression**] Visual Studio 2008, 2010, 2012, 2013 support has been
|
||||
removed.
|
||||
* [**Regression**] Dynamic run-time loading of libmpg123 is no longer
|
||||
supported. Libmpg123 must be linked at link-time now.
|
||||
* [**Regression**] xmp-openmpt: xmp-openmpt now requires XMPlay 3.8 or later
|
||||
and compiling xmp-openmpt requires an appropriate XMPlay SDK with
|
||||
`XMPIN_FACE` >= `4`.
|
||||
* [**Regression**] Support for libmpg123 older than 1.13.0 has been removed.
|
||||
* [**Regression**] Un4seen unmo3 support has been removed.
|
||||
|
||||
* [**Bug**] C++ API: `openmpt::exception` did not define copy and move
|
||||
constructors or copy and move assignment operators in libopenmpt 0.2. The
|
||||
compiler-generated ones were not adequate though. libopenmpt 0.3 adds the
|
||||
appropriate special member functions. This adds the respective symbol names
|
||||
to the exported ABI, which, depending on the compiler, might or might not
|
||||
have been there in libopenmpt 0.2. The possibly resulting possible ODR
|
||||
violation only affects cases that did crash in the libopenmpt 0.2 API anyway
|
||||
due to memory double-free, and does not cause any further problems in
|
||||
practice for all known platforms and compilers.
|
||||
* [**Bug**] The C API could crash instead of failing gracefully in
|
||||
out-of-memory situations.
|
||||
* [**Bug**] The test suite could fail on MacOSX or FreeBSD in non-fatal ways
|
||||
when no locale was active.
|
||||
* [**Bug**] `libopenmpt_stream_callbacks_fd.h` and
|
||||
`libopenmpt_stream_callbacks_file.h` were missing in Windows development
|
||||
packages.
|
||||
* [**Bug**] libopenmpt on Windows did not properly guard against current
|
||||
working directory DLL injection attacks.
|
||||
* [**Bug**] localtime() was used to determine the version of Schism Tracker
|
||||
used to save IT and S3M files. This function is not guaranteed to be
|
||||
thread-safe by the standard and is now no longer used.
|
||||
* [**Bug**] Possible crashes with malformed IT, ITP, AMS, MDL, MED, MPTM, PSM
|
||||
and Startrekker files.
|
||||
* [**Bug**] Possible hangs with malformed DBM, MPTM and PSM files.
|
||||
* [**Bug**] Possible hangs with malformed files containing cyclic plugin
|
||||
routings.
|
||||
* [**Bug**] Excessive loading times with malformed ITP / truncated AMS files.
|
||||
* [**Bug**] Plugins did not work correctly when changing the sample rate
|
||||
between two render calls.
|
||||
* [**Bug**] Possible NULL-pointer dereference read during obscure
|
||||
out-of-memory situations while handling exceptions in the C API.
|
||||
* [**Bug**] libmodplug: `libmodplug.pc` was wrong.
|
||||
* [**Bug**] Cross-compiling libopenmpt with autotools for Windows now properly
|
||||
sets `-municode` and `-mconsole` as well as all required Windows system
|
||||
libraries.
|
||||
* [**Bug**] foo_openmpt: Interpolation filter and volume ramping settings were
|
||||
confused in previous versions. This version resets both to the defaults.
|
||||
* [**Bug**] libmodplug: The CSoundFile::Read function in the emulated
|
||||
libmodplug C++ API returned the wrong value, causing qmmp (and possibly
|
||||
other software) to crash.
|
||||
|
||||
* Support for SoundTracker Pro II (STP) and Digital Tracker (DTM) modules.
|
||||
* Increased accuracy of the sample position and sample rate to drift less when
|
||||
playing very long samples.
|
||||
* Various playback improvements for IT and XM files.
|
||||
* Channel frequency could wrap around after some excessive portamento / down
|
||||
in some formats since libopenmpt 0.2-beta17.
|
||||
* Playback improvements for S3M files made with Impulse Tracker and
|
||||
Schism Tracker.
|
||||
* ParamEq plugin emulation didn't do anything at full gain (+15dB).
|
||||
* All standard DMO effects are now also emulated on non-Windows and non-MSVC
|
||||
systems.
|
||||
* Added `libopenmpt_stream_callbacks_buffer.h` which adds
|
||||
`openmpt_stream_callbacks` support for in-memory buffers, possibly even only
|
||||
using a truncated prefix view into a bigger file which is useful for
|
||||
probing.
|
||||
* Avoid enabling some ProTracker-specific quirks for MOD files most likely
|
||||
created with ScreamTracker 3.
|
||||
* Tremolo effect only had half the intended strength in MOD files.
|
||||
* Pattern loops ending on the last row a pattern were not executed correctly
|
||||
in S3M files.
|
||||
* Work-around for reading MIDI macros and plugin settings in some malformed IT
|
||||
files written by old UNMO3 versions.
|
||||
* Improve tracker detection in IT format.
|
||||
* Playback fixes for 8-channel MED files
|
||||
* Do not set note volume to 0 on out-of-range offset in XM files.
|
||||
* Better import of some slide commands in SFX files.
|
||||
* Sample 15 in "Crew Generation" by Necros requires short loops at the
|
||||
beginning of the sample to not be ignored. Since we need to ignore them in
|
||||
some (non-ProTracker) modules, we heuristically disable the old loop
|
||||
sanitization behaviour based on the module channel count.
|
||||
* Both normal and percentage offset in PLM files were handled as percentage
|
||||
offset.
|
||||
* MT2 files with instruments that had both sample and plugin assignments were
|
||||
not read correctly.
|
||||
* Some valid FAR files were rejected erroneously.
|
||||
* Support for VBlank timing flag and comment field in PT36 files.
|
||||
* Improved accuracy of vibrato command in DIGI / DBM files.
|
||||
* STM: Add support for "WUZAMOD!" magic bytes and allow some slightly
|
||||
malformed STM files to load which were previously rejected.
|
||||
* Detect whether "hidden" patterns in the order list of SoundTracker modules
|
||||
should be taken into account or not.
|
||||
* Tighten heuristics for rejecting invalid 669, M15, MOD and ICE files and
|
||||
loosen them in other places to allow some valid MOD files to load.
|
||||
* Improvements to seeking: Channel panning was not always updated from
|
||||
instruments / samples when seeking, and out-of-range global volume was not
|
||||
applied correctly in some formats.
|
||||
* seek.sync_samples=1 did not apply PTM reverse offset effect and the volume
|
||||
slide part of combined volume slide + vibrato commands.
|
||||
* If the order list was longer than 256 items and there was a pattern break
|
||||
effect without a position jump on the last pattern of the sequence, it did
|
||||
not jump to the correct restart order.
|
||||
* `Makefile` has now explicit support for FreeBSD with no special option or
|
||||
configuration required.
|
||||
* openmpt123: Improved section layout in man page.
|
||||
* libmodplug: Added all missing C++ API symbols that are accessible via the
|
||||
public libmodplug header file.
|
||||
* Autotools build system now has options `--disable-openmpt123`,
|
||||
`--disable-tests` and `--disable-examples` which may be desireable when
|
||||
cross-compiling.
|
||||
* Windows binary packages now ship with libmpg123 included.
|
||||
|
||||
### libopenmpt 0.2-beta20 (2016-08-07)
|
||||
|
||||
* [**Bug**] PSM loader was broken on big-endian platforms since forever.
|
||||
* [**Bug**] `load.skip_samples` ctl did not work for PSM16 modules.
|
||||
|
||||
* There is a new `subsong` ctl, which can return the currently selected
|
||||
subsong.
|
||||
* More accurate ProTracker arpeggio wrap-around emulation.
|
||||
* More accurate sample tuning in PSM16 files.
|
||||
* Samples in DSM files were sometimes detuned and some pattern commands were
|
||||
not imported correctly.
|
||||
* More accurate import of MDL 7-bit panning command.
|
||||
* Only import pattern commands supported by the UltraTracker version that was
|
||||
used to save ULT files. Add support for command 5-C (end loop).
|
||||
* DMF sample loop lengths were off by one.
|
||||
* Unis 669 pan slide effect was too deep.
|
||||
* Several valid (but slightly corrupted possibly due to disk failures or data
|
||||
transfer errors) SoundTracker files were no longer loading since libopenmpt
|
||||
0.2-beta18.
|
||||
|
||||
### libopenmpt 0.2-beta19 (2016-07-23)
|
||||
|
||||
* [**Change**] libopenmpt now uses C++14 `[[deprecated]]` attribute instead
|
||||
of compiler-specific solutions when appropriate.
|
||||
* [**Change**] libopenmpt C++ header now uses C++11 `noexcept` instead of
|
||||
C++98 `throw()` exception specification when supported. `throw()` is
|
||||
deprecated since C++11. This does not change API or ABI as they are
|
||||
equivalent. Use `LIBOPENMPT_ASSUME_CPLUSPLUS_NOEXCEPT` to override the
|
||||
default.
|
||||
* [**Change**] The preprocessor macro `LIBOPENMPT_ANCIENT_COMPILER_STDINT` is
|
||||
gone. Please use `LIBOPENMPT_ASSUME_CPLUSPLUS_CSTDINT instead`.
|
||||
Additionally, the typedefs moved from illegal namespace ::std into somewhat
|
||||
less dangerous namespace ::openmpt::std. You can test
|
||||
`#ifdef LIBOPENMPT_QUIRK_NO_CSTDINT` client-side to check whether
|
||||
`libopenmpt.hpp` used the non-standard types. (Note: Of all supported
|
||||
compilers, this change only affects the 3 compilers with only limited
|
||||
support: MSVC 2008, GCC 4.1, GCC 4.2.)
|
||||
|
||||
* [**Bug**] xmp-openmpt: Crash when viewing sample texts.
|
||||
|
||||
* The public libopenmpt C++ header has auto-detection logic for the used C++
|
||||
standard now. In case your client code compiler misreports the standard
|
||||
version or you want to override it for other reasons,
|
||||
`#define LIBOPENMPT_ASSUME_CPLUSPLUS` to the value of the standard version
|
||||
you desire to be used. There is also a macro for each individual aspect,
|
||||
like `LIBOPENMPT_ASSUME_CPLUSPLUS_CSTDINT`,
|
||||
`LIBOPENMPT_ASSUME_CPLUSPLUS_DEPRECATED`,
|
||||
`LIBOPENMPT_ASSUME_CPLUSPLUS_NOEXCEPT` which take precedence over the
|
||||
general macro.
|
||||
* Portamento with sample swap behaviour was wrong for ProTracker MODs.
|
||||
* Rewritten loader and various playback fixes for MDL files.
|
||||
* libopenmpt 0.2-beta18 broke import of many pattern commands in DBM, DMF and
|
||||
ULT files.
|
||||
* ADPCM samples in MOD files were broken since libopenmpt 0.2-beta17.
|
||||
|
||||
### libopenmpt 0.2-beta18 (2016-07-11)
|
||||
|
||||
* [**Change**] openmpt123: Add PulseAudio output support. Autotools and
|
||||
`Makefile` build systems now depend on `libpulse` and `libpulse-simple` by
|
||||
default. Disable with `--without-pulseaudio` or `NO_PULSEAUDIO=1`
|
||||
respectively. When enabled, PulseAudio will be the default output driver,
|
||||
* [**Change**] xmp-openmpt: Settings are now stored in xmplay.ini like with
|
||||
every other plugin.
|
||||
|
||||
* [**Regression**] openmpt123: Support for FLAC < 1.3.0 has been removed. FLAC
|
||||
before 1.3.0 is broken beyond repair as it provides `assert.h` in the
|
||||
include path.
|
||||
|
||||
* [**Bug**] Generated pkg-config file libopenmpt.pc by both `Makefile` and
|
||||
Autotools build systems was totally broken.
|
||||
* [**Bug**] libopenmpt no longer uses the non-thread-safe global std::rand()
|
||||
function.
|
||||
* [**Bug**] Sample loops in GDM modules did not work when using Emscripten.
|
||||
* [**Bug**] XM and MO3 loaders could crash due to unaligned memory accesses.
|
||||
* [**Bug**] Fixed incorrect handling of custom MPTM tunings on big endian
|
||||
platforms.
|
||||
* [**Bug**] Fixed various problems found with clang 3.8 static analyzer,
|
||||
address sanitizer and undefined behaviour sanitizer.
|
||||
* [**Bug**] File header probing functionality was broken for most formats.
|
||||
* [**Bug**] With non-seekable streams, the entire file was almost always
|
||||
cached even if it was not of any supported module type.
|
||||
|
||||
* Seeking in allsubsongs-mode now works correctly.
|
||||
* openmpt123: Added subsong support.
|
||||
* Various playback fixes for 669, IT, MT2 and MTM files.
|
||||
* Some MOD files with more than 128 patterns (e.g. NIETNU.MOD) were not loaded
|
||||
correctly.
|
||||
* A new example `libopenmpt_example_c_probe` has been added which demonstrates
|
||||
the usage and flexibility of openmpt_could_open_propability() in the C API
|
||||
under various constraints.
|
||||
|
||||
### libopenmpt 0.2-beta17 (2016-05-21)
|
||||
|
||||
* [**Change**] The Makefile and Autotools build systems now require to
|
||||
explicitly specify `NO_LTDL=1` or `--without-ltdl` respectively if no
|
||||
support for dynamic loading of third party libraries via libtool libltdl is
|
||||
desired.
|
||||
* [**Change**] In the Makefile build system option `USE_MO3` and the Autotools
|
||||
build system option `--enable-mo3` are gone. Dynamic loading of un4seen
|
||||
unmo3 is now always enabled when dynamic loading is possible and built-in
|
||||
MO3 support is not possible because either a MP3 or a Vorbis decoder is
|
||||
missing.
|
||||
* [**Change**] The MSVC build system changed. The `libopenmptDLL` project is
|
||||
gone. Use the new `ReleaseShared` configuration of the `libopenmpt` project
|
||||
instead. libopenmpt now links against zlib by default. A separate project
|
||||
with smaller footprint linking against miniz is still available as
|
||||
`libopenmpt-small`.
|
||||
* [**Change**] The constants used to query library information from
|
||||
`openmpt_get_string()` and `openmpt::string::get()` (i.e. OPENMPT_STRING_FOO
|
||||
and openmpt::string::FOO) have been deprecated because having syntactic
|
||||
constants for theses keys makes extending the API in a backwards and
|
||||
forwards compatible way harder than it should be. Please just use the string
|
||||
literals directly.
|
||||
* [**Change**] Deprecated API identifiers will now cause deprecation warnings
|
||||
with MSVC, GCC and clang. `#define LIBOPENMPT_NO_DEPRECATE` to disable the
|
||||
warnings.
|
||||
* [**Change**] openmpt123: `--[no-]shuffle` option has been renamed to
|
||||
`--[no-]randomize`. A new `--[no-]shuffle` option has been added which
|
||||
shuffles randomly through the playlist as opposed to randomizing the
|
||||
playlist upfront.
|
||||
* [**Change**] Support for Un4seen unmo3 has generally been deprecated in
|
||||
favour of the new internal mo3 decoder. Un4seen unmo3 support will be
|
||||
removed on 2018-01-01.
|
||||
|
||||
* [**Bug**] Memory consumption during loading has been reduced by about 1/3 in
|
||||
case a seekable input stream is provided (either via C API callback open
|
||||
functions or via C++ API iostream constructors).
|
||||
* [**Bug**] Some samples in AMS modules were detuned when using Emscripten.
|
||||
* [**Bug**] Possible crash with excessive portamento down in some formats.
|
||||
* [**Bug**] Possible crashes with malformed AMF, AMS, DBM, IT, MDL, MED, MPTM,
|
||||
MT2, PSM and MMCMP-, XPK- and PP20-compressed files.
|
||||
* [**Bug**] `openmpt::module::format_pattern_row_channel` with `width == 0`
|
||||
was returning an empty string instead of an string with unconstrained
|
||||
length.
|
||||
|
||||
* Support for ProTracker 3.6 IFF-style modules and SoundFX / MultiMedia Sound
|
||||
(SFX / MMS) modules.
|
||||
* libopenmpt now has support for DMO plugins on Windows when built with MSVC.
|
||||
Additionally, the DMO Compression, Distortion, Echo, Gargle, ParamEQ and
|
||||
WavesReverb DSPs are emulated on on all other platforms.
|
||||
* libopenmpt now supports the DigiBooster Echo DSP.
|
||||
* To avoid any of the aforementioned plugins to be used, the load.skip_plugins
|
||||
ctl can be passed when loading a module.
|
||||
* libopenmpt got native MO3 support with MP3 decoding either via libmpg123 or
|
||||
MediaFoundation (on Windows 7 and up) and Vorbis decoding via libogg,
|
||||
libvorbis, libvorbisfile or stb_vorbis.
|
||||
* libopenmpt MSVC builds with Visual Studio 2010 or later on Windows 7 or
|
||||
later now use an internal MO3 decoder with libogg, libvorbis, libvorbisfile,
|
||||
and libmpg123 or minimp3 or MediaFoundation suppport by default. Visual
|
||||
Studio 2008 builds still use unmo3.dll by default but also support the
|
||||
built-in decoder in which case libmpg123 is required.
|
||||
* libopenmpt with Makefile or Autotools build system can now also use
|
||||
glibc/libdl instead of libtool/libltdl for dynamic loading of third-party
|
||||
libraries. Options `NO_DL=1` and `--without-dl` have been added
|
||||
respectively.
|
||||
* The `Makefile` build system got 4 new options NO_MPG123, NO_OGG, NO_VORBIS,
|
||||
NO_VORBISFILE. The default is to use the new dependencies automatically.
|
||||
* The `Autotools` build system got 4 new options --without-mpg123,
|
||||
--without-ogg, --without-vorbis, --without-vorbisfile. The default is to use
|
||||
the new dependencies automatically.
|
||||
* Makefile and Android builds got support for using minimp3 instead of
|
||||
libmpg123. For Android, use `Android-minimp3-stbvorbis.mk`, for Makefile use
|
||||
`USE_MINIMP3=1`. You have to download
|
||||
[minimp3](http://keyj.emphy.de/minimp3/) yourself and put its contents into
|
||||
`include/minimp3/`.
|
||||
* `"source_url"`, `"source_date"` and `"build_compiler"` keys have been added
|
||||
to `openmpt_string_get()` and `openmpt::string::get()`.
|
||||
* openmpt123: Add new `--[no-]restart]` option which restarts the playlist
|
||||
when finished.
|
||||
* Improved Ultimate SoundTracker version detection heuristics.
|
||||
* Playing a sample at a sample rate close to the mix rate could lead to small
|
||||
clicks when using vibrato.
|
||||
* More fine-grained internal legacy module compatibility settings to correctly
|
||||
play back modules made with older versions of OpenMPT and a few other
|
||||
trackers.
|
||||
* The tail of compressed MDL samples was slightly off.
|
||||
* Some probably hex-edited XM files (e.g. cybernostra weekend.xm) were not
|
||||
loaded correctly.
|
||||
* Countless other playback fixes for MOD, XM, S3M, IT and MT2 files.
|
||||
|
||||
### libopenmpt 0.2-beta16 (2015-11-22)
|
||||
|
||||
* [**Change**] The Autotools build system does strict checking of all
|
||||
dependencies now. Instead of best effort auto-magic detection of all
|
||||
potentially optional dependencies, the default set of dependencies is now
|
||||
enforced unless each individual dependency gets explicitely disabled via
|
||||
`--without-foo` or `--disable-foo` `./configure` switches. Run
|
||||
`./configure --help` for the full list of options.
|
||||
|
||||
* [**Bug**] Some MOD files were erroneously detected as 669 files.
|
||||
* [**Bug**] Some malformed AMF files could result in very long loading times.
|
||||
* [**Bug**] Fixed crashes in IMF and MT2 loaders.
|
||||
* [**Bug**] MTM files generated by UNMO3 were not loaded properly.
|
||||
|
||||
* Improved MTM playback.
|
||||
* `make CONFIG=haiku` for Haiku has been added.
|
||||
* Language bindings for FreeBASIC have been added (see
|
||||
`libopenmpt/bindings/`).
|
||||
|
||||
### libopenmpt 0.2-beta15 (2015-10-31)
|
||||
|
||||
* [**Change**] openmpt123: SDL2 is now supported and preferred to SDL1 if
|
||||
available with the `Makefile` build system.
|
||||
|
||||
* [**Bug**] Emscripten support for older emscripten versions broke in -beta14.
|
||||
These are now supported again when using `make CONFIG=emscripten-old`.
|
||||
* [**Bug**] Fixed crashes in MED loader.
|
||||
|
||||
* Playback improvements and loader fixes for MOD, MT2 and MED.
|
||||
|
||||
### libopenmpt 0.2-beta14 (2015-09-13)
|
||||
|
||||
* [**Change**] The C++ API example now uses the PortAudio C++ bindings
|
||||
instead of the C API.
|
||||
* [**Change**] Default compiler options for Emscripten have been changed to
|
||||
more closely match the Emscripten recommendations.
|
||||
|
||||
* [**Bug**] Client code compilation with C89 compilers was broken in beta13.
|
||||
* [**Bug**] Test suite failed on certain Emscripten/node.js combinations.
|
||||
* [**Bug**] Fixed various crashes or hangs in DMF, OKT, PLM, IT and MPTM
|
||||
loaders.
|
||||
|
||||
* Implemented error handling in the libopenmpt API examples.
|
||||
* Various playback improvements and fixes for OKT, IT and MOD.
|
||||
|
||||
### libopenmpt 0.2-beta13 (2015-08-16)
|
||||
|
||||
* [**Change**] The MSVC build system has been redone. Solutions are now
|
||||
located in `build/vsVERSION/`.
|
||||
|
||||
* [**Bug**] get_current_channel_vu_left and get_current_channel_vu_right only
|
||||
return the volume of the front left and right channels now.
|
||||
get_current_channel_vu_rear_left and get_current_channel_vu_rear_right
|
||||
do now actually work and return non-zero values.
|
||||
* [**Bug**] Fix crashes and hangs in MED and MDL loaders and with some
|
||||
truncated compressed IT samples.
|
||||
* [**Bug**] Fix crash when playing extremely high-pitched samples.
|
||||
|
||||
* Completed C and C++ documentation
|
||||
* Added new key for openmpt::module::get_metadata, "message_raw", which
|
||||
returns an empty string if there is no song message rather than a list of
|
||||
instrument names.
|
||||
* in_openmpt: Support for compiling with VS2008.
|
||||
* xmp-openmpt: Support for compiling with VS2008.
|
||||
* in_openmpt: Add a more readable file information window.
|
||||
|
||||
### libopenmpt 0.2-beta12 (2015-04-19)
|
||||
|
||||
* Playback fix when row delay effect is used together with offset command.
|
||||
* A couple of fixes for the seek.sync_samples=1 case.
|
||||
* IT compatibility fix for IT note delay.
|
||||
* ProTracker MOD playback compatibility improvement.
|
||||
|
||||
### libopenmpt 0.2-beta11 (2015-04-18)
|
||||
|
||||
* [**Change**] openmpt_stream_seek_func() now gets called with
|
||||
OPENMPT_STREAM_SEEK_SET, OPENMPT_STREAM_SEEK_CUR and
|
||||
OPENMPT_STREAM_SEEK_END whence parameter instead of SEEK_SET, SEEK_CUR and
|
||||
SEEK_END. These are defined to 0, 1 and 2 respectively which corresponds to
|
||||
the definition in all common C libraries. If your C library uses different
|
||||
constants, this theoretically breaks binary compatibility. The old
|
||||
libopenmpt code, however, never actually called the seek function, thus,
|
||||
there will be no problem in practice.
|
||||
* [**Change**] openmpt123: When both SDL1.2 and PortAudio are available,
|
||||
SDL is now the preferred backend because SDL is more widespread and better
|
||||
tested on all kinds of different platforms, and in general, SDL is just
|
||||
more reliable.
|
||||
|
||||
* [**Bug**] libopenmpt now also compiles with GCC 4.3.
|
||||
|
||||
* libopenmpt now supports PLM (Disorder Tracker 2) files.
|
||||
* Various playback improvements and fixes for IT, S3M, XM, MOD, PTM and 669
|
||||
files.
|
||||
|
||||
### libopenmpt 0.2-beta10 (2015-02-17)
|
||||
|
||||
* [**Change**] Makefile configuration filenames changed from
|
||||
`build/make/Makefile.config.*` to `build/make/config-*.mk`.
|
||||
* [**Change**] libopenmpt for Android now supports unmo3 from un4seen. See
|
||||
`build/android_ndk/README.AndroidNDK.txt` for details.
|
||||
|
||||
* [**Bug**] Fix out-of-bounds read in mixer code for ProTracker-compatible
|
||||
MOD files which was introduced back in r4223 / beta6.
|
||||
|
||||
* Vibrato effect was too weak in beta8 and beta9 in IT linear slide mode.
|
||||
* Very small fine portamento was wrong in beta8 and beta9 in IT linear slide
|
||||
mode.
|
||||
* Tiny IT playback compatibility improvements.
|
||||
* STM playback improvements.
|
||||
|
||||
### libopenmpt 0.2-beta9 (2014-12-21)
|
||||
|
||||
* [**Bug**] libopenmpt_ext.hpp was missing from the Windows binary zip files.
|
||||
|
||||
### libopenmpt 0.2-beta8 (2014-12-21)
|
||||
|
||||
* [**Change**] foo_openmpt: Settings are now accessible via foobar2000
|
||||
advanced settings.
|
||||
* [**Change**] Autotools based build now supports libunmo3. Specify
|
||||
--enable-unmo3.
|
||||
* [**Change**] Support for dynamic loading of libunmo3 on MacOS X.
|
||||
* [**Change**] libopenmpt now uses libltld (from libtool) for dynamic loading
|
||||
of libunmo3 on all non-Windows platforms.
|
||||
* [**Change**] Support for older compilers:
|
||||
* GCC 4.1.x to 4.3.x (use `make ANCIENT=1`)
|
||||
* Microsoft Visual Studio 2008 (with latest Service Pack)
|
||||
(see `build/vs2008`)
|
||||
* [**Change**] libopenmpt_ext.hpp is now distributed by default. The API is
|
||||
still considered experimental and not guaranteed to stay API or ABI
|
||||
compatible.
|
||||
* [**Change**] xmp-openmpt / in_openmpt: No more libopenmpt_settings.dll.
|
||||
The settings dialog now uses a statically linked copy of MFC.
|
||||
|
||||
* [**Bug**] The -autotools tarballs were not working at all.
|
||||
|
||||
* Vastly improved MT2 loader.
|
||||
* Improved S3M playback compatibility.
|
||||
* Added openmpt::ext::interactive, an extension which adds a whole bunch of
|
||||
new functionality to change playback in some way or another.
|
||||
* Added possibility to sync sample playback when using
|
||||
openmpt::module::set_position_* by setting the ctl value
|
||||
seek.sync_samples=1
|
||||
* Support for "hidden" subsongs has been added.
|
||||
They are accessible through the same interface as ordinary subsongs, i.e.
|
||||
use openmpt::module::select_subsong to switch between any kind of subsongs.
|
||||
* All subsongs can now be played consecutively by passing -1 as the subsong
|
||||
index in openmpt::module::select_subsong.
|
||||
* Added documentation for a couple of more functions.
|
||||
|
||||
### libopenmpt 0.2-beta7 (2014-09-07)
|
||||
|
||||
* [**Change**] libopenmpt now has an GNU Autotools based build system (in
|
||||
addition to all previously supported ways of building libopenmpt).
|
||||
Autotools support is packaged separately as tarballs ending in
|
||||
`-autotools.tar.gz`.
|
||||
|
||||
* [**Bug**] The distributed windows .zip file did not include pugixml.
|
||||
|
||||
* [**Regression**] openmpt123: Support for writing WavPack (.wv) files has
|
||||
been removed.
|
||||
|
||||
Reasoning:
|
||||
1. WavPack support was incomplete and did not include support for writing
|
||||
WavPack metadata at all.
|
||||
2. openmpt123 already supports libSndFile which can be used to write
|
||||
uncompressed lossless WAV files which can then be encoded to whatever
|
||||
format the user desires with other tools.
|
||||
|
||||
### libopenmpt 0.2-beta6 (2014-09-06)
|
||||
|
||||
* [**Change**] openmpt123: SDL is now also used by default if availble, in
|
||||
addition to PortAudio.
|
||||
* [**Change**] Support for emscripten is no longer experimental.
|
||||
* [**Change**] libopenmpt itself can now also be compiled with VS2008.
|
||||
|
||||
* [**Bug**] Fix all known crashes on platforms that do not support unaligned
|
||||
memory access.
|
||||
* [**Bug**] openmpt123: Effect column was always missing in pattern display.
|
||||
|
||||
### libopenmpt 0.2-beta5 (2014-06-15)
|
||||
|
||||
* [**Change**] Add unmo3 support for non-Windows builds.
|
||||
* [**Change**] Namespace all internal functions in order to allow statically
|
||||
linking against libopenmpt without risking duplicate symbols.
|
||||
* [**Change**] Iconv is now completely optional and only used on Linux
|
||||
systems by default.
|
||||
* [**Change**] Added libopenmpt_example_c_stdout.c, an example without
|
||||
requiring PortAudio.
|
||||
* [**Change**] Add experimental support for building libopenmpt with
|
||||
emscripten.
|
||||
|
||||
* [**Bug**] Fix ping-pong loop behaviour which broke in 0.2-beta3.
|
||||
* [**Bug**] Fix crashes when accessing invalid patterns through libopenmpt
|
||||
API.
|
||||
* [**Bug**] Makefile: Support building with missing optional dependencies
|
||||
without them being stated explicitely.
|
||||
* [**Bug**] openmpt123: Crash when quitting while playback is stopped.
|
||||
* [**Bug**] openmpt123: Crash when writing output to a file in interactive UI
|
||||
mode.
|
||||
* [**Bug**] openmpt123: Wrong FLAC output filename in --render mode.
|
||||
|
||||
* Various smaller playback accuracy improvements.
|
||||
|
||||
### libopenmpt 0.2-beta4 (2014-02-25)
|
||||
|
||||
* [**Bug**] Makefile: Dependency tracking for the test suite did not work.
|
||||
|
||||
### libopenmpt 0.2-beta3 (2014-02-21)
|
||||
|
||||
* [**Change**] The test suite is now built by default with Makefile based
|
||||
builds. Use `TEST=0` to skip building the tests. `make check` runs the test
|
||||
suite.
|
||||
|
||||
* [**Bug**] Crash in MOD and XM loaders on architectures not supporting
|
||||
unaligned memory access.
|
||||
* [**Bug**] MMCMP, PP20 and XPK unpackers should now work on non-x86 hardware
|
||||
and implement proper bounds checking.
|
||||
* [**Bug**] openmpt_module_get_num_samples() returned the wrong value.
|
||||
* [**Bug**] in_openmpt: DSP plugins did not work properly.
|
||||
* [**Bug**] in_openmpt/xmp-openmpt: Setting name for stereo separation was
|
||||
misspelled. This version will revert your stereo separation settings to
|
||||
default.
|
||||
* [**Bug**] Crash when loading some corrupted modules with stereo samples.
|
||||
|
||||
* Support building on Android NDK.
|
||||
* Avoid clicks in sample loops when using interpolation.
|
||||
* IT filters are now done in integer instead of floating point. This improves
|
||||
performance, especially on architectures with no or a slow FPU.
|
||||
* MOD pattern break handling fixes.
|
||||
* Various XM playback improvements.
|
||||
* Improved and switchable dithering when using 16bit integer API.
|
||||
|
||||
### libopenmpt 0.2-beta2 (2014-01-12)
|
||||
|
||||
* [**Bug**] MT2 loader crash.
|
||||
* [**Bug**] Saving settings in in_openmpt and xmp-openmpt did not work.
|
||||
* [**Bug**] Load libopenmpt_settings.dll also from below Plugins directory in
|
||||
Winamp.
|
||||
|
||||
* DBM playback improvements.
|
||||
|
||||
### libopenmpt 0.2-beta1 (2013-12-31)
|
||||
|
||||
* First release.
|
||||
|
550
libs/libopenmpt/debian/libopenmpt-0.4.0-trusty-backport.diff
Normal file
550
libs/libopenmpt/debian/libopenmpt-0.4.0-trusty-backport.diff
Normal file
|
@ -0,0 +1,550 @@
|
|||
diff -uraN ../../orig/libopenmpt-0.4.0/debian/changelog ./debian/changelog
|
||||
--- ../../orig/libopenmpt-0.4.0/debian/changelog 2018-12-24 16:43:58.000000000 -0500
|
||||
+++ ./debian/changelog 2019-01-04 17:56:35.024725537 -0500
|
||||
@@ -1,3 +1,38 @@
|
||||
+libopenmpt (0.4.0-ubuntu14.04.1~ppa14) trusty; urgency=medium
|
||||
+
|
||||
+ * Remove debian symbols files due to gcc 4.8 - 5 C++ abi incompatibility
|
||||
+
|
||||
+ -- Sonic Team Junior <stjr@srb2.org> Fri, 04 Jan 2019 17:56:01 -0500
|
||||
+
|
||||
+libopenmpt (0.4.0-ubuntu14.04.1~ppa13) trusty; urgency=medium
|
||||
+
|
||||
+ * autoreconf libtool
|
||||
+
|
||||
+ -- Sonic Team Junior <stjr@srb2.org> Fri, 04 Jan 2019 17:10:45 -0500
|
||||
+
|
||||
+libopenmpt (0.4.0-ubuntu14.04.1~ppa12) trusty; urgency=medium
|
||||
+
|
||||
+ * debian/rules autoreconf
|
||||
+
|
||||
+ -- Sonic Team Junior <stjr@srb2.org> Fri, 04 Jan 2019 17:03:19 -0500
|
||||
+
|
||||
+libopenmpt (0.4.0-ubuntu14.04.1~ppa11) trusty; urgency=medium
|
||||
+
|
||||
+ * debian/rules autoreconf
|
||||
+
|
||||
+ -- Sonic Team Junior <stjr@srb2.org> Fri, 04 Jan 2019 16:59:08 -0500
|
||||
+
|
||||
+libopenmpt (0.4.0-ubuntu14.04.1~ppa10) trusty; urgency=medium
|
||||
+
|
||||
+ * Backport to trusty
|
||||
+ * Added automake build depend
|
||||
+ * Adjusted debhelper depend to >= 9.0~
|
||||
+ * Adjusted dpkg-dev depend to >= 1.17.0
|
||||
+ * Adjusted debian/compat to 10
|
||||
+ * autoreconf --force --install
|
||||
+
|
||||
+ -- Sonic Team Junior <stjr@srb2.org> Fri, 04 Jan 2019 16:54:04 -0500
|
||||
+
|
||||
libopenmpt (0.4.0-1) unstable; urgency=medium
|
||||
|
||||
* New upstream release.
|
||||
diff -uraN ../../orig/libopenmpt-0.4.0/debian/compat ./debian/compat
|
||||
--- ../../orig/libopenmpt-0.4.0/debian/compat 2018-12-24 16:43:58.000000000 -0500
|
||||
+++ ./debian/compat 2019-01-04 16:39:17.613976357 -0500
|
||||
@@ -1 +1 @@
|
||||
-11
|
||||
+10
|
||||
diff -uraN ../../orig/libopenmpt-0.4.0/debian/control ./debian/control
|
||||
--- ../../orig/libopenmpt-0.4.0/debian/control 2018-12-24 16:43:58.000000000 -0500
|
||||
+++ ./debian/control 2019-01-04 17:10:42.008523333 -0500
|
||||
@@ -4,10 +4,12 @@
|
||||
Maintainer: Debian Multimedia Maintainers <debian-multimedia@lists.debian.org>
|
||||
Uploaders: James Cowgill <jcowgill@debian.org>
|
||||
Build-Depends:
|
||||
- debhelper (>= 11.1~),
|
||||
+ automake,
|
||||
+ libtool,
|
||||
+ debhelper (>= 9.0~),
|
||||
dh-exec,
|
||||
doxygen,
|
||||
- dpkg-dev (>= 1.18.0),
|
||||
+ dpkg-dev (>= 1.17.0),
|
||||
libflac-dev,
|
||||
libmpg123-dev,
|
||||
libogg-dev,
|
||||
diff -uraN ../../orig/libopenmpt-0.4.0/debian/files ./debian/files
|
||||
--- ../../orig/libopenmpt-0.4.0/debian/files 1969-12-31 19:00:00.000000000 -0500
|
||||
+++ ./debian/files 2019-01-04 17:56:47.813250880 -0500
|
||||
@@ -0,0 +1 @@
|
||||
+libopenmpt_0.4.0-ubuntu14.04.1~ppa14_source.buildinfo libs optional
|
||||
diff -uraN ../../orig/libopenmpt-0.4.0/debian/libopenmpt0.symbols ./debian/libopenmpt0.symbols
|
||||
--- ../../orig/libopenmpt-0.4.0/debian/libopenmpt0.symbols 2018-12-24 16:43:58.000000000 -0500
|
||||
+++ ./debian/libopenmpt0.symbols 1969-12-31 19:00:00.000000000 -0500
|
||||
@@ -1,256 +0,0 @@
|
||||
-libopenmpt.so.0 libopenmpt0 #MINVER#
|
||||
-* Build-Depends-Package: libopenmpt-dev
|
||||
-# Ignore std:: template instantiations
|
||||
- (regex|optional)"^_ZN?K?S" 0.2.7025~beta20.1
|
||||
- _ZN7openmpt10module_ext13get_interfaceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 0.2.7025~beta20.1
|
||||
- (arch-bits=32)_ZN7openmpt10module_extC1EPKcjRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
|
||||
- (arch-bits=64)_ZN7openmpt10module_extC1EPKcmRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
|
||||
- (arch-bits=32)_ZN7openmpt10module_extC1EPKvjRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
|
||||
- (arch-bits=64)_ZN7openmpt10module_extC1EPKvmRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
|
||||
- _ZN7openmpt10module_extC1ERKS0_@Base 0.2.7025~beta20.1
|
||||
- _ZN7openmpt10module_extC1ERKSt6vectorIcSaIcEERSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcES2_EESC_St4lessISC_ESaISt4pairIKSC_SC_EEE@Base 0.2.7025~beta20.1
|
||||
- _ZN7openmpt10module_extC1ERSiRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_St4lessIS9_ESaISt4pairIKS9_S9_EEE@Base 0.2.7025~beta20.1
|
||||
- (arch-bits=32)_ZN7openmpt10module_extC2EPKcjRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
|
||||
- (arch-bits=64)_ZN7openmpt10module_extC2EPKcmRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
|
||||
- (arch-bits=32)_ZN7openmpt10module_extC2EPKvjRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
|
||||
- (arch-bits=64)_ZN7openmpt10module_extC2EPKvmRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
|
||||
- _ZN7openmpt10module_extC2ERKS0_@Base 0.2.7025~beta20.1
|
||||
- _ZN7openmpt10module_extC2ERKSt6vectorIcSaIcEERSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcES2_EESC_St4lessISC_ESaISt4pairIKSC_SC_EEE@Base 0.2.7025~beta20.1
|
||||
- _ZN7openmpt10module_extC2ERSiRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_St4lessIS9_ESaISt4pairIKS9_S9_EEE@Base 0.2.7025~beta20.1
|
||||
- _ZN7openmpt10module_extD0Ev@Base 0.2.7025~beta20.1
|
||||
- _ZN7openmpt10module_extD1Ev@Base 0.2.7025~beta20.1
|
||||
- _ZN7openmpt10module_extD2Ev@Base 0.2.7025~beta20.1
|
||||
- _ZN7openmpt10module_extaSERKS0_@Base 0.2.7025~beta20.1
|
||||
- _ZN7openmpt16get_core_versionEv@Base 0.2.7025~beta20.1
|
||||
- (arch-bits=32)_ZN7openmpt17probe_file_headerEyPKhj@Base 0.3.0
|
||||
- (arch-bits=64)_ZN7openmpt17probe_file_headerEmPKhm@Base 0.3.0
|
||||
- (arch-bits=32)_ZN7openmpt17probe_file_headerEyPKhjy@Base 0.3.0
|
||||
- (arch-bits=64)_ZN7openmpt17probe_file_headerEmPKhmm@Base 0.3.0
|
||||
- (arch-bits=32)_ZN7openmpt17probe_file_headerEyRSi@Base 0.3.0
|
||||
- (arch-bits=64)_ZN7openmpt17probe_file_headerEmRSi@Base 0.3.0
|
||||
- _ZN7openmpt19get_library_versionEv@Base 0.2.7025~beta20.1
|
||||
- _ZN7openmpt22could_open_probabilityERSidRSo@Base 0.3.0
|
||||
- _ZN7openmpt22could_open_propabilityERSidRSo@Base 0.2.7025~beta20.1
|
||||
- _ZN7openmpt22is_extension_supportedERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 0.2.7025~beta20.1
|
||||
- _ZN7openmpt24get_supported_extensionsB5cxx11Ev@Base 0.2.7025~beta20.1
|
||||
- _ZN7openmpt38probe_file_header_get_recommended_sizeEv@Base 0.3.0
|
||||
- _ZN7openmpt6module14select_subsongEi@Base 0.2.7025~beta20.1
|
||||
- _ZN7openmpt6module16set_render_paramEii@Base 0.2.7025~beta20.1
|
||||
- _ZN7openmpt6module16set_repeat_countEi@Base 0.2.7025~beta20.1
|
||||
- _ZN7openmpt6module20set_position_secondsEd@Base 0.2.7025~beta20.1
|
||||
- (arch-bits=32)_ZN7openmpt6module21read_interleaved_quadEijPf@Base 0.2.7025~beta20.1
|
||||
- (arch-bits=64)_ZN7openmpt6module21read_interleaved_quadEimPf@Base 0.2.7025~beta20.1
|
||||
- (arch-bits=32)_ZN7openmpt6module21read_interleaved_quadEijPs@Base 0.2.7025~beta20.1
|
||||
- (arch-bits=64)_ZN7openmpt6module21read_interleaved_quadEimPs@Base 0.2.7025~beta20.1
|
||||
- _ZN7openmpt6module22set_position_order_rowEii@Base 0.2.7025~beta20.1
|
||||
- (arch-bits=32)_ZN7openmpt6module23read_interleaved_stereoEijPf@Base 0.2.7025~beta20.1
|
||||
- (arch-bits=64)_ZN7openmpt6module23read_interleaved_stereoEimPf@Base 0.2.7025~beta20.1
|
||||
- (arch-bits=32)_ZN7openmpt6module23read_interleaved_stereoEijPs@Base 0.2.7025~beta20.1
|
||||
- (arch-bits=64)_ZN7openmpt6module23read_interleaved_stereoEimPs@Base 0.2.7025~beta20.1
|
||||
- (arch-bits=32)_ZN7openmpt6module4readEijPf@Base 0.2.7025~beta20.1
|
||||
- (arch-bits=64)_ZN7openmpt6module4readEimPf@Base 0.2.7025~beta20.1
|
||||
- (arch-bits=32)_ZN7openmpt6module4readEijPfS1_@Base 0.2.7025~beta20.1
|
||||
- (arch-bits=64)_ZN7openmpt6module4readEimPfS1_@Base 0.2.7025~beta20.1
|
||||
- (arch-bits=32)_ZN7openmpt6module4readEijPfS1_S1_S1_@Base 0.2.7025~beta20.1
|
||||
- (arch-bits=64)_ZN7openmpt6module4readEimPfS1_S1_S1_@Base 0.2.7025~beta20.1
|
||||
- (arch-bits=32)_ZN7openmpt6module4readEijPs@Base 0.2.7025~beta20.1
|
||||
- (arch-bits=64)_ZN7openmpt6module4readEimPs@Base 0.2.7025~beta20.1
|
||||
- (arch-bits=32)_ZN7openmpt6module4readEijPsS1_@Base 0.2.7025~beta20.1
|
||||
- (arch-bits=64)_ZN7openmpt6module4readEimPsS1_@Base 0.2.7025~beta20.1
|
||||
- (arch-bits=32)_ZN7openmpt6module4readEijPsS1_S1_S1_@Base 0.2.7025~beta20.1
|
||||
- (arch-bits=64)_ZN7openmpt6module4readEimPsS1_S1_S1_@Base 0.2.7025~beta20.1
|
||||
- _ZN7openmpt6module7ctl_setERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_@Base 0.2.7025~beta20.1
|
||||
- _ZN7openmpt6module8set_implEPNS_11module_implE@Base 0.2.7025~beta20.1
|
||||
- _ZN7openmpt6moduleC1EPKcS2_RSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
|
||||
- (arch-bits=32)_ZN7openmpt6moduleC1EPKcjRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
|
||||
- (arch-bits=64)_ZN7openmpt6moduleC1EPKcmRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
|
||||
- _ZN7openmpt6moduleC1EPKhS2_RSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
|
||||
- (arch-bits=32)_ZN7openmpt6moduleC1EPKhjRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
|
||||
- (arch-bits=64)_ZN7openmpt6moduleC1EPKhmRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
|
||||
- (arch-bits=32)_ZN7openmpt6moduleC1EPKvjRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
|
||||
- (arch-bits=64)_ZN7openmpt6moduleC1EPKvmRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
|
||||
- _ZN7openmpt6moduleC1ERKS0_@Base 0.2.7025~beta20.1
|
||||
- _ZN7openmpt6moduleC1ERKSt6vectorIcSaIcEERSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcES2_EESC_St4lessISC_ESaISt4pairIKSC_SC_EEE@Base 0.2.7025~beta20.1
|
||||
- _ZN7openmpt6moduleC1ERKSt6vectorIhSaIhEERSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESD_St4lessISD_ESaISt4pairIKSD_SD_EEE@Base 0.2.7025~beta20.1
|
||||
- _ZN7openmpt6moduleC1ERSiRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_St4lessIS9_ESaISt4pairIKS9_S9_EEE@Base 0.2.7025~beta20.1
|
||||
- _ZN7openmpt6moduleC1Ev@Base 0.2.7025~beta20.1
|
||||
- _ZN7openmpt6moduleC2EPKcS2_RSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
|
||||
- (arch-bits=32)_ZN7openmpt6moduleC2EPKcjRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
|
||||
- (arch-bits=64)_ZN7openmpt6moduleC2EPKcmRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
|
||||
- _ZN7openmpt6moduleC2EPKhS2_RSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
|
||||
- (arch-bits=32)_ZN7openmpt6moduleC2EPKhjRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
|
||||
- (arch-bits=64)_ZN7openmpt6moduleC2EPKhmRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
|
||||
- (arch-bits=32)_ZN7openmpt6moduleC2EPKvjRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
|
||||
- (arch-bits=64)_ZN7openmpt6moduleC2EPKvmRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_St4lessISA_ESaISt4pairIKSA_SA_EEE@Base 0.2.7025~beta20.1
|
||||
- _ZN7openmpt6moduleC2ERKS0_@Base 0.2.7025~beta20.1
|
||||
- _ZN7openmpt6moduleC2ERKSt6vectorIcSaIcEERSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcES2_EESC_St4lessISC_ESaISt4pairIKSC_SC_EEE@Base 0.2.7025~beta20.1
|
||||
- _ZN7openmpt6moduleC2ERKSt6vectorIhSaIhEERSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESD_St4lessISD_ESaISt4pairIKSD_SD_EEE@Base 0.2.7025~beta20.1
|
||||
- _ZN7openmpt6moduleC2ERSiRSoRKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_St4lessIS9_ESaISt4pairIKS9_S9_EEE@Base 0.2.7025~beta20.1
|
||||
- _ZN7openmpt6moduleC2Ev@Base 0.2.7025~beta20.1
|
||||
- _ZN7openmpt6moduleD0Ev@Base 0.2.7025~beta20.1
|
||||
- _ZN7openmpt6moduleD1Ev@Base 0.2.7025~beta20.1
|
||||
- _ZN7openmpt6moduleD2Ev@Base 0.2.7025~beta20.1
|
||||
- _ZN7openmpt6moduleaSERKS0_@Base 0.2.7025~beta20.1
|
||||
- _ZN7openmpt6string3getERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 0.2.7025~beta20.1
|
||||
- _ZN7openmpt9exceptionC1EOS0_@Base 0.3.0
|
||||
- _ZN7openmpt9exceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 0.2.7025~beta20.1
|
||||
- _ZN7openmpt9exceptionC1ERKS0_@Base 0.3.0
|
||||
- _ZN7openmpt9exceptionC2EOS0_@Base 0.3.0
|
||||
- _ZN7openmpt9exceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 0.2.7025~beta20.1
|
||||
- _ZN7openmpt9exceptionC2ERKS0_@Base 0.3.0
|
||||
- _ZN7openmpt9exceptionD0Ev@Base 0.2.7025~beta20.1
|
||||
- _ZN7openmpt9exceptionD1Ev@Base 0.2.7025~beta20.1
|
||||
- _ZN7openmpt9exceptionD2Ev@Base 0.2.7025~beta20.1
|
||||
- _ZN7openmpt9exceptionaSEOS0_@Base 0.3.0
|
||||
- _ZN7openmpt9exceptionaSERKS0_@Base 0.3.0
|
||||
- _ZNK7openmpt6module12get_metadataERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 0.2.7025~beta20.1
|
||||
- _ZNK7openmpt6module14get_num_ordersEv@Base 0.2.7025~beta20.1
|
||||
- _ZNK7openmpt6module15get_current_rowEv@Base 0.2.7025~beta20.1
|
||||
- _ZNK7openmpt6module15get_num_samplesEv@Base 0.2.7025~beta20.1
|
||||
- _ZNK7openmpt6module15get_order_namesB5cxx11Ev@Base 0.2.7025~beta20.1
|
||||
- _ZNK7openmpt6module16get_num_channelsEv@Base 0.2.7025~beta20.1
|
||||
- _ZNK7openmpt6module16get_num_patternsEv@Base 0.2.7025~beta20.1
|
||||
- _ZNK7openmpt6module16get_num_subsongsEv@Base 0.2.7025~beta20.1
|
||||
- _ZNK7openmpt6module16get_render_paramEi@Base 0.2.7025~beta20.1
|
||||
- _ZNK7openmpt6module16get_repeat_countEv@Base 0.2.7025~beta20.1
|
||||
- _ZNK7openmpt6module16get_sample_namesB5cxx11Ev@Base 0.2.7025~beta20.1
|
||||
- _ZNK7openmpt6module17get_channel_namesB5cxx11Ev@Base 0.2.7025~beta20.1
|
||||
- _ZNK7openmpt6module17get_current_orderEv@Base 0.2.7025~beta20.1
|
||||
- _ZNK7openmpt6module17get_current_speedEv@Base 0.2.7025~beta20.1
|
||||
- _ZNK7openmpt6module17get_current_tempoEv@Base 0.2.7025~beta20.1
|
||||
- _ZNK7openmpt6module17get_metadata_keysB5cxx11Ev@Base 0.2.7025~beta20.1
|
||||
- _ZNK7openmpt6module17get_order_patternEi@Base 0.2.7025~beta20.1
|
||||
- _ZNK7openmpt6module17get_pattern_namesB5cxx11Ev@Base 0.2.7025~beta20.1
|
||||
- _ZNK7openmpt6module17get_subsong_namesB5cxx11Ev@Base 0.2.7025~beta20.1
|
||||
- _ZNK7openmpt6module19get_current_patternEv@Base 0.2.7025~beta20.1
|
||||
- _ZNK7openmpt6module19get_num_instrumentsEv@Base 0.2.7025~beta20.1
|
||||
- _ZNK7openmpt6module20get_duration_secondsEv@Base 0.2.7025~beta20.1
|
||||
- _ZNK7openmpt6module20get_instrument_namesB5cxx11Ev@Base 0.2.7025~beta20.1
|
||||
- _ZNK7openmpt6module20get_pattern_num_rowsEi@Base 0.2.7025~beta20.1
|
||||
- _ZNK7openmpt6module20get_position_secondsEv@Base 0.2.7025~beta20.1
|
||||
- _ZNK7openmpt6module20get_selected_subsongEv@Base 0.3.0
|
||||
- (arch-bits=32)_ZNK7openmpt6module26format_pattern_row_channelB5cxx11Eiiijb@Base 0.2.7025~beta20.1
|
||||
- (arch-bits=64)_ZNK7openmpt6module26format_pattern_row_channelB5cxx11Eiiimb@Base 0.2.7025~beta20.1
|
||||
- _ZNK7openmpt6module27get_current_channel_vu_leftEi@Base 0.2.7025~beta20.1
|
||||
- _ZNK7openmpt6module27get_current_channel_vu_monoEi@Base 0.2.7025~beta20.1
|
||||
- _ZNK7openmpt6module28get_current_channel_vu_rightEi@Base 0.2.7025~beta20.1
|
||||
- _ZNK7openmpt6module28get_current_playing_channelsEv@Base 0.2.7025~beta20.1
|
||||
- (arch-bits=32)_ZNK7openmpt6module29highlight_pattern_row_channelB5cxx11Eiiijb@Base 0.2.7025~beta20.1
|
||||
- (arch-bits=64)_ZNK7openmpt6module29highlight_pattern_row_channelB5cxx11Eiiimb@Base 0.2.7025~beta20.1
|
||||
- _ZNK7openmpt6module31get_pattern_row_channel_commandEiiii@Base 0.2.7025~beta20.1
|
||||
- _ZNK7openmpt6module32get_current_channel_vu_rear_leftEi@Base 0.2.7025~beta20.1
|
||||
- _ZNK7openmpt6module33get_current_channel_vu_rear_rightEi@Base 0.2.7025~beta20.1
|
||||
- _ZNK7openmpt6module34format_pattern_row_channel_commandB5cxx11Eiiii@Base 0.2.7025~beta20.1
|
||||
- _ZNK7openmpt6module37highlight_pattern_row_channel_commandB5cxx11Eiiii@Base 0.2.7025~beta20.1
|
||||
- _ZNK7openmpt6module7ctl_getERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 0.2.7025~beta20.1
|
||||
- _ZNK7openmpt6module8get_ctlsB5cxx11Ev@Base 0.2.7025~beta20.1
|
||||
- _ZNK7openmpt9exception4whatEv@Base 0.2.7025~beta20.1
|
||||
- _ZTIN7openmpt10module_extE@Base 0.2.7025~beta20.1
|
||||
- _ZTIN7openmpt6moduleE@Base 0.2.7025~beta20.1
|
||||
- _ZTIN7openmpt9exceptionE@Base 0.2.7025~beta20.1
|
||||
- (optional=weak)_ZTISt11_Mutex_baseILN9__gnu_cxx12_Lock_policyE2EE@Base 0.2.7025~beta20.1
|
||||
- (optional=weak)_ZTISt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE@Base 0.2.7025~beta20.1
|
||||
- _ZTSN7openmpt10module_extE@Base 0.2.7025~beta20.1
|
||||
- _ZTSN7openmpt6moduleE@Base 0.2.7025~beta20.1
|
||||
- _ZTSN7openmpt9exceptionE@Base 0.2.7025~beta20.1
|
||||
- (optional=weak)_ZTSSt11_Mutex_baseILN9__gnu_cxx12_Lock_policyE2EE@Base 0.2.7025~beta20.1
|
||||
- (optional=weak)_ZTSSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE@Base 0.2.7025~beta20.1
|
||||
- (optional=weak)_ZTSSt19_Sp_make_shared_tag@Base 0.2.7025~beta20.1
|
||||
- _ZTVN7openmpt10module_extE@Base 0.2.7025~beta20.1
|
||||
- _ZTVN7openmpt6moduleE@Base 0.2.7025~beta20.1
|
||||
- _ZTVN7openmpt9exceptionE@Base 0.2.7025~beta20.1
|
||||
- (optional=weak)_ZZNSt19_Sp_make_shared_tag5_S_tiEvE5__tag@Base 0.4.0
|
||||
- openmpt_could_open_probability2@Base 0.3.0
|
||||
- openmpt_could_open_probability@Base 0.3.0
|
||||
- openmpt_could_open_propability@Base 0.2.7025~beta20.1
|
||||
- openmpt_error_func_default@Base 0.3.0
|
||||
- openmpt_error_func_errno@Base 0.3.0
|
||||
- openmpt_error_func_errno_userdata@Base 0.3.0
|
||||
- openmpt_error_func_ignore@Base 0.3.0
|
||||
- openmpt_error_func_log@Base 0.3.0
|
||||
- openmpt_error_func_store@Base 0.3.0
|
||||
- openmpt_error_is_transient@Base 0.3.0
|
||||
- openmpt_error_string@Base 0.3.0
|
||||
- openmpt_free_string@Base 0.2.7025~beta20.1
|
||||
- openmpt_get_core_version@Base 0.2.7025~beta20.1
|
||||
- openmpt_get_library_version@Base 0.2.7025~beta20.1
|
||||
- openmpt_get_string@Base 0.2.7025~beta20.1
|
||||
- openmpt_get_supported_extensions@Base 0.2.7025~beta20.1
|
||||
- openmpt_is_extension_supported@Base 0.2.7025~beta20.1
|
||||
- openmpt_log_func_default@Base 0.2.7025~beta20.1
|
||||
- openmpt_log_func_silent@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_create2@Base 0.3.0
|
||||
- openmpt_module_create@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_create_from_memory2@Base 0.3.0
|
||||
- openmpt_module_create_from_memory@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_ctl_get@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_ctl_set@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_destroy@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_error_clear@Base 0.3.0
|
||||
- openmpt_module_error_get_last@Base 0.3.0
|
||||
- openmpt_module_error_get_last_message@Base 0.3.0
|
||||
- openmpt_module_error_set_last@Base 0.3.0
|
||||
- openmpt_module_ext_create@Base 0.3.0
|
||||
- openmpt_module_ext_create_from_memory@Base 0.3.0
|
||||
- openmpt_module_ext_destroy@Base 0.3.0
|
||||
- openmpt_module_ext_get_interface@Base 0.3.0
|
||||
- openmpt_module_ext_get_module@Base 0.3.0
|
||||
- openmpt_module_format_pattern_row_channel@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_format_pattern_row_channel_command@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_get_channel_name@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_get_ctls@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_get_current_channel_vu_left@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_get_current_channel_vu_mono@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_get_current_channel_vu_rear_left@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_get_current_channel_vu_rear_right@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_get_current_channel_vu_right@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_get_current_order@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_get_current_pattern@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_get_current_playing_channels@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_get_current_row@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_get_current_speed@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_get_current_tempo@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_get_duration_seconds@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_get_instrument_name@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_get_metadata@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_get_metadata_keys@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_get_num_channels@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_get_num_instruments@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_get_num_orders@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_get_num_patterns@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_get_num_samples@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_get_num_subsongs@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_get_order_name@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_get_order_pattern@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_get_pattern_name@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_get_pattern_num_rows@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_get_pattern_row_channel_command@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_get_position_seconds@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_get_render_param@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_get_repeat_count@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_get_sample_name@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_get_selected_subsong@Base 0.3.0
|
||||
- openmpt_module_get_subsong_name@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_highlight_pattern_row_channel@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_highlight_pattern_row_channel_command@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_read_float_mono@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_read_float_quad@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_read_float_stereo@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_read_interleaved_float_quad@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_read_interleaved_float_stereo@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_read_interleaved_quad@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_read_interleaved_stereo@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_read_mono@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_read_quad@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_read_stereo@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_select_subsong@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_set_error_func@Base 0.3.0
|
||||
- openmpt_module_set_log_func@Base 0.3.0
|
||||
- openmpt_module_set_position_order_row@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_set_position_seconds@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_set_render_param@Base 0.2.7025~beta20.1
|
||||
- openmpt_module_set_repeat_count@Base 0.2.7025~beta20.1
|
||||
- openmpt_probe_file_header@Base 0.3.0
|
||||
- openmpt_probe_file_header_from_stream@Base 0.3.0
|
||||
- openmpt_probe_file_header_get_recommended_size@Base 0.3.0
|
||||
- openmpt_probe_file_header_without_filesize@Base 0.3.0
|
||||
diff -uraN ../../orig/libopenmpt-0.4.0/debian/libopenmpt-modplug1.symbols ./debian/libopenmpt-modplug1.symbols
|
||||
--- ../../orig/libopenmpt-0.4.0/debian/libopenmpt-modplug1.symbols 2018-12-24 16:43:58.000000000 -0500
|
||||
+++ ./debian/libopenmpt-modplug1.symbols 1969-12-31 19:00:00.000000000 -0500
|
||||
@@ -1,200 +0,0 @@
|
||||
-libopenmpt_modplug.so.1 libopenmpt-modplug1 #MINVER#
|
||||
-* Build-Depends-Package: libopenmpt-modplug-dev
|
||||
- LIBOPENMPT_MODPLUG1@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- ModPlug_ExportIT@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- ModPlug_ExportMOD@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- ModPlug_ExportS3M@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- ModPlug_ExportXM@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- ModPlug_GetCurrentOrder@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- ModPlug_GetCurrentPattern@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- ModPlug_GetCurrentRow@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- ModPlug_GetCurrentSpeed@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- ModPlug_GetCurrentTempo@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- ModPlug_GetLength@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- ModPlug_GetMasterVolume@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- ModPlug_GetMessage@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- ModPlug_GetModuleType@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- ModPlug_GetName@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- ModPlug_GetPattern@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- ModPlug_GetPlayingChannels@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- ModPlug_GetSettings@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- ModPlug_InitMixerCallback@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- ModPlug_InstrumentName@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- ModPlug_Load@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- ModPlug_NumChannels@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- ModPlug_NumInstruments@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- ModPlug_NumPatterns@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- ModPlug_NumSamples@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- ModPlug_Read@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- ModPlug_SampleName@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- ModPlug_Seek@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- ModPlug_SeekOrder@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- ModPlug_SetMasterVolume@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- ModPlug_SetSettings@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- ModPlug_Unload@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- ModPlug_UnloadMixerCallback@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- _ZN10CSoundFile10FreeSampleEPv@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile10InitPlayerEb@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile10NoteChangeEjibb@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile10PackSampleERii@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile10ProcessAGCEi@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile10ProcessRowEv@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile10ReadSampleEP14_MODINSTRUMENTjPKcj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile10RetrigNoteEjj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile10gdwSysInfoE@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- _ZN10CSoundFile10gnCPUUsageE@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- _ZN10CSoundFile10gnChannelsE@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- _ZN10CSoundFile11DoFreqSlideEP11_MODCHANNELi@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile11FineVibratoEP11_MODCHANNELj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile11FreePatternEPv@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile11InitSysInfoEv@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile11LoopPatternEii@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile11PatternLoopEP11_MODCHANNELj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile11VolumeSlideEP11_MODCHANNELj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile12FineVolumeUpEP11_MODCHANNELj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile12ITInstrToMPTEPKvP17_INSTRUMENTHEADERj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile12IsSampleUsedEj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile12PanningSlideEP11_MODCHANNELj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile12PortamentoUpEP11_MODCHANNELj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile12ResetMidiCfgEv@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile12SetMixConfigEjj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile12gnReverbTypeE@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- _ZN10CSoundFile12gpSndMixHookE@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- _ZN10CSoundFile13CanPackSampleEPcjjPh@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile13CheckCPUUsageEj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile13DestroySampleEj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile13ResetChannelsEv@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile13SetCurrentPosEj@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- _ZN10CSoundFile13SetWaveConfigEjjjb@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- _ZN10CSoundFile13gdwMixingFreqE@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- _ZN10CSoundFile13gdwSoundSetupE@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- _ZN10CSoundFile13m_nXBassDepthE@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- _ZN10CSoundFile13m_nXBassRangeE@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- _ZN10CSoundFile14AllocateSampleEj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile14FineVolumeDownEP11_MODCHANNELj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile14GlobalFadeSongEj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile14GlobalVolSlideEj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile14LoadMixPluginsEPKvj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile14PortamentoDownEP11_MODCHANNELj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile14ProcessEffectsEv@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile14SaveMixPluginsEP8_IO_FILEb@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile14SetPatternNameEjPKc@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile14TonePortamentoEP11_MODCHANNELj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile14m_nReverbDelayE@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- _ZN10CSoundFile14m_nReverbDepthE@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- _ZN10CSoundFile15AllocatePatternEjj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile15ChannelVolSlideEP11_MODCHANNELj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile15CreateStereoMixEi@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile15GetSongCommentsEPcjj@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- _ZN10CSoundFile15SetCurrentOrderEj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile15SetMasterVolumeEjb@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile15SetWaveConfigExEbbbbbbb@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- _ZN10CSoundFile15gnBitsPerSampleE@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- _ZN10CSoundFile15m_nStreamVolumeE@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- _ZN10CSoundFile16AdjustSampleLoopEP14_MODINSTRUMENT@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile16FinePortamentoUpEP11_MODCHANNELj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile16InstrumentChangeEP11_MODCHANNELjbbb@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile16IsInstrumentUsedEj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile16ProcessMidiMacroEjPKcj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile16m_nProLogicDelayE@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- _ZN10CSoundFile16m_nProLogicDepthE@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- _ZN10CSoundFile17DestroyInstrumentEj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile17MapMidiInstrumentEjjj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile17SetResamplingModeEj@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- _ZN10CSoundFile17m_nMaxMixChannelsE@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- _ZN10CSoundFile18FinePortamentoDownEP11_MODCHANNELj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile18GetRawSongCommentsEPcjj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile18ReadSampleFromSongEjPS_j@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile18SetXBassParametersEjj@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- _ZN10CSoundFile19DetectUnusedSamplesEPb@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile19ExtendedMODCommandsEjj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile19ExtendedS3MCommandsEjj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile19SetReverbParametersEjj@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- _ZN10CSoundFile19gnVolumeRampSamplesE@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- _ZN10CSoundFile19m_nStereoSeparationE@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- _ZN10CSoundFile20FrequencyToTransposeEP14_MODINSTRUMENT@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile20FrequencyToTransposeEj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile20Normalize24BitBufferEPhjjj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile20TransposeToFrequencyEii@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile21ExtendedChannelEffectEP11_MODCHANNELj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile21ExtraFinePortamentoUpEP11_MODCHANNELj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile21RemoveSelectedSamplesEPb@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile21SetSurroundParametersEjj@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- _ZN10CSoundFile21gpMixPluginCreateProcE@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- _ZN10CSoundFile22ReadInstrumentFromSongEjPS_j@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile23ExtraFinePortamentoDownEP11_MODCHANNELj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile23RemoveInstrumentSamplesEj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile4ReadEPvj@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- _ZN10CSoundFile5gnAGCE@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- _ZN10CSoundFile6CreateEPKhj@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- _ZN10CSoundFile6KeyOffEj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile6ReadITEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile6ReadXMEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile6SetAGCEb@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile7DestroyEv@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- _ZN10CSoundFile7NoteCutEjj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile7Read669EPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile7ReadABCEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile7ReadAMFEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile7ReadAMSEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile7ReadDBMEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile7ReadDMFEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile7ReadDSMEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile7ReadFAREPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile7ReadJ2BEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile7ReadMDLEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile7ReadMIDEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile7ReadMT2EPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile7ReadMTMEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile7ReadMedEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile7ReadModEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile7ReadOKTEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile7ReadPATEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile7ReadPSMEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile7ReadPTMEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile7ReadS3MEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile7ReadSTMEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile7ReadUMXEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile7ReadUltEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile7ReadWavEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile7TestABCEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile7TestMIDEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile7TestPATEPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile7TremoloEP11_MODCHANNELj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile7VibratoEP11_MODCHANNELj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile8CheckNNAEjjib@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile8FadeSongEj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile8ReadAMS2EPKhj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile8ReadNoteEv@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile8ResetAGCEv@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile8SetSpeedEj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile8SetTempoEj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile9GetLengthEbb@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- _ZN10CSoundFile9PanbrelloEP11_MODCHANNELj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZN10CSoundFile9gnVUMeterE@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- _ZN10CSoundFileC1Ev@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- _ZN10CSoundFileC2Ev@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- _ZN10CSoundFileD1Ev@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- _ZN10CSoundFileD2Ev@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- _ZNK10CSoundFile10S3MConvertEP11_MODCOMMANDb@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZNK10CSoundFile13GetCurrentPosEv@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- _ZNK10CSoundFile13GetNNAChannelEj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZNK10CSoundFile13GetSampleNameEjPc@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZNK10CSoundFile14GetMaxPositionEv@LIBOPENMPT_MODPLUG1 0.2.7386~beta20.3
|
||||
- _ZNK10CSoundFile14GetNumChannelsEv@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZNK10CSoundFile14GetNumPatternsEv@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZNK10CSoundFile14GetPatternNameEjPcj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZNK10CSoundFile14GetSaveFormatsEv@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZNK10CSoundFile14IsSongFinishedEjj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZNK10CSoundFile14ModSaveCommandEPK11_MODCOMMANDb@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZNK10CSoundFile14S3MSaveConvertEPjS0_b@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZNK10CSoundFile17ConvertModCommandEP11_MODCOMMAND@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZNK10CSoundFile17CutOffToFrequencyEji@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZNK10CSoundFile17GetBestSaveFormatEv@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZNK10CSoundFile17GetFreqFromPeriodEjji@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZNK10CSoundFile17GetInstrumentNameEjPc@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZNK10CSoundFile17GetNoteFromPeriodEj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZNK10CSoundFile17GetNumInstrumentsEv@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZNK10CSoundFile17GetPeriodFromNoteEjij@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZNK10CSoundFile18SetupChannelFilterEP11_MODCHANNELbi@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
- _ZNK10CSoundFile19IsValidBackwardJumpEjjjj@LIBOPENMPT_MODPLUG1 0.2.7561~beta20.5
|
||||
diff -uraN ../../orig/libopenmpt-0.4.0/debian/rules ./debian/rules
|
||||
--- ../../orig/libopenmpt-0.4.0/debian/rules 2018-12-24 16:43:58.000000000 -0500
|
||||
+++ ./debian/rules 2019-01-04 17:03:16.206691071 -0500
|
||||
@@ -11,9 +11,10 @@
|
||||
dh $@
|
||||
|
||||
override_dh_autoreconf:
|
||||
- dh_autoreconf --as-needed
|
||||
+ autoreconf --force --install
|
||||
|
||||
override_dh_auto_configure:
|
||||
+ debian/rules override_dh_autoreconf
|
||||
dh_auto_configure -- --disable-static --enable-libopenmpt_modplug
|
||||
|
||||
override_dh_auto_build:
|
40
libs/libopenmpt/debian/libopenmpt-0.4.0-xenial-backport.diff
Normal file
40
libs/libopenmpt/debian/libopenmpt-0.4.0-xenial-backport.diff
Normal file
|
@ -0,0 +1,40 @@
|
|||
diff -uraN ../../orig/libopenmpt-0.4.0/debian/changelog ./debian/changelog
|
||||
--- ../../orig/libopenmpt-0.4.0/debian/changelog 2018-12-24 16:43:58.000000000 -0500
|
||||
+++ ./debian/changelog 2019-01-04 16:37:08.788775423 -0500
|
||||
@@ -1,3 +1,12 @@
|
||||
+libopenmpt (0.4.0-ubuntu16.04.1~ppa10) xenial; urgency=medium
|
||||
+
|
||||
+ * Backport to Xenial
|
||||
+ * automake build depend added
|
||||
+ * debhelper depend adjusted to >= 9.0~
|
||||
+ * deb compat level adjusted to 10
|
||||
+
|
||||
+ -- Sonic Team Junior <stjr@srb2.org> Fri, 04 Jan 2019 16:35:08 -0500
|
||||
+
|
||||
libopenmpt (0.4.0-1) unstable; urgency=medium
|
||||
|
||||
* New upstream release.
|
||||
diff -uraN ../../orig/libopenmpt-0.4.0/debian/compat ./debian/compat
|
||||
--- ../../orig/libopenmpt-0.4.0/debian/compat 2018-12-24 16:43:58.000000000 -0500
|
||||
+++ ./debian/compat 2019-01-04 16:34:31.830370437 -0500
|
||||
@@ -1 +1 @@
|
||||
-11
|
||||
+10
|
||||
diff -uraN ../../orig/libopenmpt-0.4.0/debian/control ./debian/control
|
||||
--- ../../orig/libopenmpt-0.4.0/debian/control 2018-12-24 16:43:58.000000000 -0500
|
||||
+++ ./debian/control 2019-01-04 16:34:59.339499384 -0500
|
||||
@@ -4,7 +4,8 @@
|
||||
Maintainer: Debian Multimedia Maintainers <debian-multimedia@lists.debian.org>
|
||||
Uploaders: James Cowgill <jcowgill@debian.org>
|
||||
Build-Depends:
|
||||
- debhelper (>= 11.1~),
|
||||
+ automake,
|
||||
+ debhelper (>= 9.0~),
|
||||
dh-exec,
|
||||
doxygen,
|
||||
dpkg-dev (>= 1.18.0),
|
||||
diff -uraN ../../orig/libopenmpt-0.4.0/debian/files ./debian/files
|
||||
--- ../../orig/libopenmpt-0.4.0/debian/files 1969-12-31 19:00:00.000000000 -0500
|
||||
+++ ./debian/files 2019-01-04 16:37:20.001229883 -0500
|
||||
@@ -0,0 +1 @@
|
||||
+libopenmpt_0.4.0-ubuntu16.04.1~ppa10_source.buildinfo libs optional
|
1449
libs/libopenmpt/inc/libopenmpt/libopenmpt.h
Normal file
1449
libs/libopenmpt/inc/libopenmpt/libopenmpt.h
Normal file
File diff suppressed because it is too large
Load diff
1015
libs/libopenmpt/inc/libopenmpt/libopenmpt.hpp
Normal file
1015
libs/libopenmpt/inc/libopenmpt/libopenmpt.hpp
Normal file
File diff suppressed because it is too large
Load diff
204
libs/libopenmpt/inc/libopenmpt/libopenmpt_config.h
Normal file
204
libs/libopenmpt/inc/libopenmpt/libopenmpt_config.h
Normal file
|
@ -0,0 +1,204 @@
|
|||
/*
|
||||
* libopenmpt_config.h
|
||||
* -------------------
|
||||
* Purpose: libopenmpt public interface configuration
|
||||
* Notes : (currently none)
|
||||
* Authors: OpenMPT Devs
|
||||
* The OpenMPT source code is released under the BSD license. Read LICENSE for more details.
|
||||
*/
|
||||
|
||||
#ifndef LIBOPENMPT_CONFIG_H
|
||||
#define LIBOPENMPT_CONFIG_H
|
||||
|
||||
/*! \defgroup libopenmpt libopenmpt */
|
||||
|
||||
/*! \addtogroup libopenmpt
|
||||
@{
|
||||
*/
|
||||
|
||||
/* provoke warnings if already defined */
|
||||
#define LIBOPENMPT_API
|
||||
#undef LIBOPENMPT_API
|
||||
#define LIBOPENMPT_CXX_API
|
||||
#undef LIBOPENMPT_CXX_API
|
||||
|
||||
/*! \brief Defined if libopenmpt/libopenmpt_stream_callbacks_buffer.h exists. */
|
||||
#define LIBOPENMPT_STREAM_CALLBACKS_BUFFER
|
||||
|
||||
/*! \brief Defined if libopenmpt/libopenmpt_stream_callbacks_fd.h exists.
|
||||
* \since 0.3
|
||||
* \remarks
|
||||
* Use the following to check for availability:
|
||||
* \code
|
||||
* #include <libopenmpt/libopenmpt.h>
|
||||
* #if defined(LIBOPENMPT_STREAM_CALLBACKS_FD) || ((OPENMPT_API_VERSION_MAJOR == 0) && ((OPENMPT_API_VERSION_MINOR == 2) || (OPENMPT_API_VERSION_MINOR == 1)))
|
||||
* #include <libopenmpt/libopenmpt_stream_callbacks_fd.h>
|
||||
* #endif
|
||||
* \endcode
|
||||
*/
|
||||
#define LIBOPENMPT_STREAM_CALLBACKS_FD
|
||||
|
||||
/*! \brief Defined if libopenmpt/libopenmpt_stream_callbacks_file.h exists.
|
||||
* \since 0.3
|
||||
* \remarks
|
||||
* Use the following to check for availability:
|
||||
* \code
|
||||
* #include <libopenmpt/libopenmpt.h>
|
||||
* #if defined(LIBOPENMPT_STREAM_CALLBACKS_FILE) || ((OPENMPT_API_VERSION_MAJOR == 0) && ((OPENMPT_API_VERSION_MINOR == 2) || (OPENMPT_API_VERSION_MINOR == 1)))
|
||||
* #include <libopenmpt/libopenmpt_stream_callbacks_file.h>
|
||||
* #endif
|
||||
* \endcode
|
||||
*/
|
||||
#define LIBOPENMPT_STREAM_CALLBACKS_FILE
|
||||
|
||||
#if defined(__DOXYGEN__)
|
||||
|
||||
#define LIBOPENMPT_API_HELPER_EXPORT
|
||||
#define LIBOPENMPT_API_HELPER_IMPORT
|
||||
#define LIBOPENMPT_API_HELPER_PUBLIC
|
||||
#define LIBOPENMPT_API_HELPER_LOCAL
|
||||
|
||||
#elif defined(_MSC_VER)
|
||||
|
||||
#define LIBOPENMPT_API_HELPER_EXPORT __declspec(dllexport)
|
||||
#define LIBOPENMPT_API_HELPER_IMPORT __declspec(dllimport)
|
||||
#define LIBOPENMPT_API_HELPER_PUBLIC
|
||||
#define LIBOPENMPT_API_HELPER_LOCAL
|
||||
|
||||
#elif defined(__EMSCRIPTEN__)
|
||||
|
||||
#define LIBOPENMPT_API_HELPER_EXPORT __attribute__((visibility("default"))) __attribute__((used))
|
||||
#define LIBOPENMPT_API_HELPER_IMPORT __attribute__((visibility("default"))) __attribute__((used))
|
||||
#define LIBOPENMPT_API_HELPER_PUBLIC __attribute__((visibility("default"))) __attribute__((used))
|
||||
#define LIBOPENMPT_API_HELPER_LOCAL __attribute__((visibility("hidden")))
|
||||
|
||||
#elif (defined(__GNUC__) || defined(__clang__)) && defined(_WIN32)
|
||||
|
||||
#define LIBOPENMPT_API_HELPER_EXPORT __declspec(dllexport)
|
||||
#define LIBOPENMPT_API_HELPER_IMPORT __declspec(dllimport)
|
||||
#define LIBOPENMPT_API_HELPER_PUBLIC __attribute__((visibility("default")))
|
||||
#define LIBOPENMPT_API_HELPER_LOCAL __attribute__((visibility("hidden")))
|
||||
|
||||
#elif defined(__GNUC__) || defined(__clang__)
|
||||
|
||||
#define LIBOPENMPT_API_HELPER_EXPORT __attribute__((visibility("default")))
|
||||
#define LIBOPENMPT_API_HELPER_IMPORT __attribute__((visibility("default")))
|
||||
#define LIBOPENMPT_API_HELPER_PUBLIC __attribute__((visibility("default")))
|
||||
#define LIBOPENMPT_API_HELPER_LOCAL __attribute__((visibility("hidden")))
|
||||
|
||||
#elif defined(_WIN32)
|
||||
|
||||
#define LIBOPENMPT_API_HELPER_EXPORT __declspec(dllexport)
|
||||
#define LIBOPENMPT_API_HELPER_IMPORT __declspec(dllimport)
|
||||
#define LIBOPENMPT_API_HELPER_PUBLIC
|
||||
#define LIBOPENMPT_API_HELPER_LOCAL
|
||||
|
||||
#else
|
||||
|
||||
#define LIBOPENMPT_API_HELPER_EXPORT
|
||||
#define LIBOPENMPT_API_HELPER_IMPORT
|
||||
#define LIBOPENMPT_API_HELPER_PUBLIC
|
||||
#define LIBOPENMPT_API_HELPER_LOCAL
|
||||
|
||||
#endif
|
||||
|
||||
#if defined(LIBOPENMPT_BUILD_DLL)
|
||||
#define LIBOPENMPT_API LIBOPENMPT_API_HELPER_EXPORT
|
||||
#elif defined(LIBOPENMPT_USE_DLL)
|
||||
#define LIBOPENMPT_API LIBOPENMPT_API_HELPER_IMPORT
|
||||
#else
|
||||
#define LIBOPENMPT_API LIBOPENMPT_API_HELPER_PUBLIC
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
#define LIBOPENMPT_CXX_API LIBOPENMPT_API
|
||||
|
||||
#if defined(LIBOPENMPT_USE_DLL)
|
||||
#if defined(_MSC_VER) && !defined(_DLL)
|
||||
#error "C++ interface is disabled if libopenmpt is built as a DLL and the runtime is statically linked. This is not supported by microsoft and cannot possibly work. Ever."
|
||||
#undef LIBOPENMPT_CXX_API
|
||||
#define LIBOPENMPT_CXX_API LIBOPENMPT_API_HELPER_LOCAL
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(__EMSCRIPTEN__)
|
||||
|
||||
/* Only the C API is supported for emscripten. Disable the C++ API. */
|
||||
#undef LIBOPENMPT_CXX_API
|
||||
#define LIBOPENMPT_CXX_API LIBOPENMPT_API_HELPER_LOCAL
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
/*!
|
||||
@}
|
||||
*/
|
||||
|
||||
|
||||
/* C */
|
||||
|
||||
#if !defined(LIBOPENMPT_NO_DEPRECATE)
|
||||
#if defined(__clang__)
|
||||
#define LIBOPENMPT_DEPRECATED __attribute__((deprecated))
|
||||
#elif defined(__GNUC__)
|
||||
#define LIBOPENMPT_DEPRECATED __attribute__((deprecated))
|
||||
#elif defined(_MSC_VER)
|
||||
#define LIBOPENMPT_DEPRECATED __declspec(deprecated)
|
||||
#else
|
||||
#define LIBOPENMPT_DEPRECATED
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef __cplusplus
|
||||
#if !defined(LIBOPENMPT_NO_DEPRECATE)
|
||||
LIBOPENMPT_DEPRECATED static const int LIBOPENMPT_DEPRECATED_STRING_CONSTANT = 0;
|
||||
#define LIBOPENMPT_DEPRECATED_STRING( str ) ( LIBOPENMPT_DEPRECATED_STRING_CONSTANT ? ( str ) : ( str ) )
|
||||
#else
|
||||
#define LIBOPENMPT_DEPRECATED_STRING( str ) str
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
/* C++ */
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
#ifndef LIBOPENMPT_ASSUME_CPLUSPLUS_DEPRECATED
|
||||
/* handle known broken compilers here by defining LIBOPENMPT_ASSUME_CPLUSPLUS_DEPRECATED appropriately */
|
||||
#endif
|
||||
|
||||
#if defined(LIBOPENMPT_ASSUME_CPLUSPLUS)
|
||||
#ifndef LIBOPENMPT_ASSUME_CPLUSPLUS_DEPRECATED
|
||||
#define LIBOPENMPT_ASSUME_CPLUSPLUS_DEPRECATED LIBOPENMPT_ASSUME_CPLUSPLUS
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if !defined(LIBOPENMPT_NO_DEPRECATE)
|
||||
#if defined(LIBOPENMPT_ASSUME_CPLUSPLUS_DEPRECATED)
|
||||
#if (LIBOPENMPT_ASSUME_CPLUSPLUS_DEPRECATED >= 201402L)
|
||||
#define LIBOPENMPT_ATTR_DEPRECATED [[deprecated]]
|
||||
#undef LIBOPENMPT_DEPRECATED
|
||||
#define LIBOPENMPT_DEPRECATED
|
||||
#else
|
||||
#define LIBOPENMPT_ATTR_DEPRECATED
|
||||
#endif
|
||||
#elif (__cplusplus >= 201402L)
|
||||
#define LIBOPENMPT_ATTR_DEPRECATED [[deprecated]]
|
||||
#undef LIBOPENMPT_DEPRECATED
|
||||
#define LIBOPENMPT_DEPRECATED
|
||||
#else
|
||||
#define LIBOPENMPT_ATTR_DEPRECATED
|
||||
#endif
|
||||
#else
|
||||
#undef LIBOPENMPT_DEPRECATED
|
||||
#define LIBOPENMPT_DEPRECATED
|
||||
#define LIBOPENMPT_ATTR_DEPRECATED
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#include "libopenmpt_version.h"
|
||||
|
||||
#endif /* LIBOPENMPT_CONFIG_H */
|
318
libs/libopenmpt/inc/libopenmpt/libopenmpt_ext.h
Normal file
318
libs/libopenmpt/inc/libopenmpt/libopenmpt_ext.h
Normal file
|
@ -0,0 +1,318 @@
|
|||
/*
|
||||
* libopenmpt_ext.h
|
||||
* ----------------
|
||||
* Purpose: libopenmpt public c interface for libopenmpt extensions
|
||||
* Notes :
|
||||
* Authors: OpenMPT Devs
|
||||
* The OpenMPT source code is released under the BSD license. Read LICENSE for more details.
|
||||
*/
|
||||
|
||||
#ifndef LIBOPENMPT_EXT_H
|
||||
#define LIBOPENMPT_EXT_H
|
||||
|
||||
#include "libopenmpt_config.h"
|
||||
#include "libopenmpt.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*!
|
||||
* \page libopenmpt_ext_c_overview libopenmpt_ext C API
|
||||
*
|
||||
* libopenmpt_ext is included in all builds by default.
|
||||
*
|
||||
* \section libopenmpt-ext-c-detailed Detailed documentation
|
||||
*
|
||||
* \ref libopenmpt_ext_c
|
||||
*
|
||||
*/
|
||||
|
||||
/*! \defgroup libopenmpt_ext_c libopenmpt_ext C */
|
||||
|
||||
/*! \addtogroup libopenmpt_ext_c
|
||||
* @{
|
||||
*/
|
||||
|
||||
/*! \brief Opaque type representing a libopenmpt extension module
|
||||
*/
|
||||
typedef struct openmpt_module_ext openmpt_module_ext;
|
||||
|
||||
/*! \brief Construct an openmpt_module_ext
|
||||
*
|
||||
* \param stream_callbacks Input stream callback operations.
|
||||
* \param stream Input stream to load the module from.
|
||||
* \param logfunc Logging function where warning and errors are written. The logging function may be called throughout the lifetime of openmpt_module_ext. May be NULL.
|
||||
* \param loguser User-defined data associated with this module. This value will be passed to the logging callback function (logfunc)
|
||||
* \param errfunc Error function to define error behaviour. May be NULL.
|
||||
* \param erruser Error function user context. Used to pass any user-defined data associated with this module to the logging function.
|
||||
* \param error Pointer to an integer where an error may get stored. May be NULL.
|
||||
* \param error_message Pointer to a string pointer where an error message may get stored. May be NULL.
|
||||
* \param ctls A map of initial ctl values, see openmpt_module_get_ctls.
|
||||
* \return A pointer to the constructed openmpt_module_ext, or NULL on failure.
|
||||
* \remarks The input data can be discarded after an openmpt_module_ext has been constructed successfully.
|
||||
* \sa openmpt_stream_callbacks
|
||||
* \sa \ref libopenmpt_c_fileio
|
||||
* \since 0.3.0
|
||||
*/
|
||||
LIBOPENMPT_API openmpt_module_ext * openmpt_module_ext_create( openmpt_stream_callbacks stream_callbacks, void * stream, openmpt_log_func logfunc, void * loguser, openmpt_error_func errfunc, void * erruser, int * error, const char * * error_message, const openmpt_module_initial_ctl * ctls );
|
||||
|
||||
/*! \brief Construct an openmpt_module_ext
|
||||
*
|
||||
* \param filedata Data to load the module from.
|
||||
* \param filesize Amount of data available.
|
||||
* \param logfunc Logging function where warning and errors are written. The logging function may be called throughout the lifetime of openmpt_module_ext.
|
||||
* \param loguser User-defined data associated with this module. This value will be passed to the logging callback function (logfunc)
|
||||
* \param errfunc Error function to define error behaviour. May be NULL.
|
||||
* \param erruser Error function user context. Used to pass any user-defined data associated with this module to the logging function.
|
||||
* \param error Pointer to an integer where an error may get stored. May be NULL.
|
||||
* \param error_message Pointer to a string pointer where an error message may get stored. May be NULL.
|
||||
* \param ctls A map of initial ctl values, see openmpt_module_get_ctls.
|
||||
* \return A pointer to the constructed openmpt_module_ext, or NULL on failure.
|
||||
* \remarks The input data can be discarded after an openmpt_module_ext has been constructed successfully.
|
||||
* \sa \ref libopenmpt_c_fileio
|
||||
* \since 0.3.0
|
||||
*/
|
||||
LIBOPENMPT_API openmpt_module_ext * openmpt_module_ext_create_from_memory( const void * filedata, size_t filesize, openmpt_log_func logfunc, void * loguser, openmpt_error_func errfunc, void * erruser, int * error, const char * * error_message, const openmpt_module_initial_ctl * ctls );
|
||||
|
||||
/*! \brief Unload a previously created openmpt_module_ext from memory.
|
||||
*
|
||||
* \param mod_ext The module to unload.
|
||||
*/
|
||||
LIBOPENMPT_API void openmpt_module_ext_destroy( openmpt_module_ext * mod_ext );
|
||||
|
||||
/*! \brief Retrieve the openmpt_module handle from an openmpt_module_ext handle.
|
||||
*
|
||||
* \param mod_ext The extension module handle to convert
|
||||
* \return An equivalent openmpt_module handle to pass to standard libopenmpt functions
|
||||
* \since 0.3.0
|
||||
*/
|
||||
LIBOPENMPT_API openmpt_module * openmpt_module_ext_get_module( openmpt_module_ext * mod_ext );
|
||||
|
||||
/*! Retrieve a libopenmpt extension.
|
||||
*
|
||||
* \param mod_ext The module handle to work on.
|
||||
* \param interface_id The name of the extension interface to retrieve (e.g. LIBOPENMPT_EXT_C_INTERFACE_PATTERN_VIS).
|
||||
* \param interface Appropriate structure of interface function pointers which is to be filled by this function (e.g. a pointer to a openmpt_module_ext_interface_pattern_vis structure).
|
||||
* \param interface_size Size of the interface's structure of function pointers (e.g. sizeof(openmpt_module_ext_interface_pattern_vis)).
|
||||
* \return 1 on success, 0 if the interface was not found.
|
||||
* \since 0.3.0
|
||||
*/
|
||||
LIBOPENMPT_API int openmpt_module_ext_get_interface( openmpt_module_ext * mod_ext, const char * interface_id, void * interface, size_t interface_size );
|
||||
|
||||
|
||||
|
||||
#ifndef LIBOPENMPT_EXT_C_INTERFACE_PATTERN_VIS
|
||||
#define LIBOPENMPT_EXT_C_INTERFACE_PATTERN_VIS "pattern_vis"
|
||||
#endif
|
||||
|
||||
/*! Pattern command type */
|
||||
#define OPENMPT_MODULE_EXT_INTERFACE_PATTERN_VIS_EFFECT_TYPE_UNKNOWN 0
|
||||
#define OPENMPT_MODULE_EXT_INTERFACE_PATTERN_VIS_EFFECT_TYPE_GENERAL 1
|
||||
#define OPENMPT_MODULE_EXT_INTERFACE_PATTERN_VIS_EFFECT_TYPE_GLOBAL 2
|
||||
#define OPENMPT_MODULE_EXT_INTERFACE_PATTERN_VIS_EFFECT_TYPE_VOLUME 3
|
||||
#define OPENMPT_MODULE_EXT_INTERFACE_PATTERN_VIS_EFFECT_TYPE_PANNING 4
|
||||
#define OPENMPT_MODULE_EXT_INTERFACE_PATTERN_VIS_EFFECT_TYPE_PITCH 5
|
||||
|
||||
typedef struct openmpt_module_ext_interface_pattern_vis {
|
||||
/*! Get pattern command type for pattern highlighting
|
||||
*
|
||||
* \param mod_ext The module handle to work on.
|
||||
* \param pattern The pattern whose data should be retrieved.
|
||||
* \param row The row from which the data should be retrieved.
|
||||
* \param channel The channel from which the data should be retrieved.
|
||||
* \return The command type in the effect column at the given pattern position (see OPENMPT_MODULE_EXT_INTERFACE_PATTERN_VIS_EFFECT_TYPE_*)
|
||||
* \sa openmpt_module_ext_interface_pattern_vis::get_pattern_row_channel_volume_effect_type
|
||||
*/
|
||||
int ( * get_pattern_row_channel_volume_effect_type ) ( openmpt_module_ext * mod_ext, int32_t pattern, int32_t row, int32_t channel );
|
||||
|
||||
/*! Get pattern command type for pattern highlighting
|
||||
*
|
||||
* \param mod_ext The module handle to work on.
|
||||
* \param pattern The pattern whose data should be retrieved.
|
||||
* \param row The row from which the data should be retrieved.
|
||||
* \param channel The channel from which the data should be retrieved.
|
||||
* \return The command type in the effect column at the given pattern position (see OPENMPT_MODULE_EXT_INTERFACE_PATTERN_VIS_EFFECT_TYPE_*)
|
||||
* \sa openmpt_module_ext_interface_pattern_vis::get_pattern_row_channel_volume_effect_type
|
||||
*/
|
||||
int ( * get_pattern_row_channel_effect_type ) ( openmpt_module_ext * mod_ext, int32_t pattern, int32_t row, int32_t channel );
|
||||
} openmpt_module_ext_interface_pattern_vis;
|
||||
|
||||
|
||||
|
||||
#ifndef LIBOPENMPT_EXT_C_INTERFACE_INTERACTIVE
|
||||
#define LIBOPENMPT_EXT_C_INTERFACE_INTERACTIVE "interactive"
|
||||
#endif
|
||||
|
||||
typedef struct openmpt_module_ext_interface_interactive {
|
||||
/*! Set the current ticks per row (speed)
|
||||
*
|
||||
* \param mod_ext The module handle to work on.
|
||||
* \param speed The new tick count in range [1, 65535].
|
||||
* \return 1 on success, 0 on failure.
|
||||
* \remarks The tick count may be reset by pattern commands at any time.
|
||||
* \sa openmpt_module_get_current_speed
|
||||
*/
|
||||
int ( * set_current_speed ) ( openmpt_module_ext * mod_ext, int32_t speed );
|
||||
|
||||
/*! Set the current module tempo
|
||||
*
|
||||
* \param mod_ext The module handle to work on.
|
||||
* \param tempo The new tempo in range [32, 512]. The exact meaning of the value depends on the tempo mode used by the module.
|
||||
* \return 1 on success, 0 on failure.
|
||||
* \remarks The tempo may be reset by pattern commands at any time. Use openmpt_module_ext_interface_interactive::set_tempo_factor to apply a tempo factor that is independent of pattern commands.
|
||||
* \sa openmpt_module_get_current_tempo
|
||||
*/
|
||||
int ( * set_current_tempo ) ( openmpt_module_ext * mod_ext, int32_t tempo );
|
||||
|
||||
/*! Set the current module tempo factor without affecting playback pitch
|
||||
*
|
||||
* \param mod_ext The module handle to work on.
|
||||
* \param factor The new tempo factor in range ]0.0, 4.0] - 1.0 means unmodified tempo.
|
||||
* \return 1 on success, 0 on failure.
|
||||
* \remarks Modifying the tempo without applying the same pitch factor using openmpt_module_ext_interface_interactive::set_pitch_factor may cause rhythmic samples (e.g. drum loops) to go out of sync.
|
||||
* \sa openmpt_module_ext_interface_interactive::get_tempo_factor
|
||||
*/
|
||||
int ( * set_tempo_factor ) ( openmpt_module_ext * mod_ext, double factor );
|
||||
|
||||
/*! Gets the current module tempo factor
|
||||
*
|
||||
* \param mod_ext The module handle to work on.
|
||||
* \return The current tempo factor.
|
||||
* \sa openmpt_module_ext_interface_interactive::set_tempo_factor
|
||||
*/
|
||||
double ( * get_tempo_factor ) ( openmpt_module_ext * mod_ext );
|
||||
|
||||
/*! Set the current module pitch factor without affecting playback speed
|
||||
*
|
||||
* \param mod_ext The module handle to work on.
|
||||
* \param factor The new pitch factor in range ]0.0, 4.0] - 1.0 means unmodified pitch.
|
||||
* \return 1 on success, 0 on failure.
|
||||
* \remarks Modifying the pitch without applying the the same tempo factor using openmpt_module_ext_interface_interactive::set_tempo_factor may cause rhythmic samples (e.g. drum loops) to go out of sync.
|
||||
* \remarks To shift the pich by `n` semitones, the parameter can be calculated as follows: `pow( 2.0, n / 12.0 )`
|
||||
* \sa openmpt_module_ext_interface_interactive::get_pitch_factor
|
||||
*/
|
||||
int ( * set_pitch_factor ) ( openmpt_module_ext * mod_ext, double factor );
|
||||
|
||||
/*! Gets the current module pitch factor
|
||||
*
|
||||
* \param mod_ext The module handle to work on.
|
||||
* \return The current pitch factor.
|
||||
* \sa openmpt_module_ext_interface_interactive::set_pitch_factor
|
||||
*/
|
||||
double ( * get_pitch_factor ) ( openmpt_module_ext * mod_ext );
|
||||
|
||||
/*! Set the current global volume
|
||||
*
|
||||
* \param mod_ext The module handle to work on.
|
||||
* \param volume The new global volume in range [0.0, 1.0]
|
||||
* \return 1 on success, 0 on failure.
|
||||
* \remarks The global volume may be reset by pattern commands at any time. Use openmpt_module_set_render_param to apply a global overall volume factor that is independent of pattern commands.
|
||||
* \sa openmpt_module_ext_interface_interactive::get_global_volume
|
||||
*/
|
||||
int ( * set_global_volume ) ( openmpt_module_ext * mod_ext, double volume );
|
||||
|
||||
/*! Get the current global volume
|
||||
*
|
||||
* \param mod_ext The module handle to work on.
|
||||
* \return The current global volume in range [0.0, 1.0]
|
||||
* \sa openmpt_module_ext_interface_interactive::set_global_volume
|
||||
*/
|
||||
double ( * get_global_volume ) ( openmpt_module_ext * mod_ext );
|
||||
|
||||
/*! Set the current channel volume for a channel
|
||||
*
|
||||
* \param mod_ext The module handle to work on.
|
||||
* \param channel The channel whose volume should be set, in range [0, openmpt_module_get_num_channels()[
|
||||
* \param volume The new channel volume in range [0.0, 1.0]
|
||||
* \return 1 on success, 0 on failure (channel out of range).
|
||||
* \remarks The channel volume may be reset by pattern commands at any time.
|
||||
* \sa openmpt_module_ext_interface_interactive::get_channel_volume
|
||||
*/
|
||||
int ( * set_channel_volume ) ( openmpt_module_ext * mod_ext, int32_t channel, double volume );
|
||||
|
||||
/*! Get the current channel volume for a channel
|
||||
*
|
||||
* \param mod_ext The module handle to work on.
|
||||
* \param channel The channel whose volume should be retrieved, in range [0, openmpt_module_get_num_channels()[
|
||||
* \return The current channel volume in range [0.0, 1.0]
|
||||
* \sa openmpt_module_ext_interface_interactive::set_channel_volume
|
||||
*/
|
||||
double ( * get_channel_volume ) ( openmpt_module_ext * mod_ext, int32_t channel );
|
||||
|
||||
/*! Set the current mute status for a channel
|
||||
*
|
||||
* \param mod_ext The module handle to work on.
|
||||
* \param channel The channel whose mute status should be set, in range [0, openmpt_module_get_num_channels()[
|
||||
* \param mute The new mute status. true is muted, false is unmuted.
|
||||
* \return 1 on success, 0 on failure (channel out of range).
|
||||
* \sa openmpt_module_ext_interface_interactive::get_channel_mute_status
|
||||
*/
|
||||
int ( * set_channel_mute_status ) ( openmpt_module_ext * mod_ext, int32_t channel, int mute );
|
||||
|
||||
/*! Get the current mute status for a channel
|
||||
*
|
||||
* \param mod_ext The module handle to work on.
|
||||
* \param channel The channel whose mute status should be retrieved, in range [0, openmpt_module_get_num_channels()[
|
||||
* \return The current channel mute status. 1 is muted, 0 is unmuted, -1 means the instrument was out of range
|
||||
* \sa openmpt_module_ext_interface_interactive::set_channel_mute_status
|
||||
*/
|
||||
int ( * get_channel_mute_status ) ( openmpt_module_ext * mod_ext, int32_t channel );
|
||||
|
||||
/*! Set the current mute status for an instrument
|
||||
*
|
||||
* \param mod_ext The module handle to work on.
|
||||
* \param instrument The instrument whose mute status should be set, in range [0, openmpt_module_get_num_instruments()[ if openmpt_module_get_num_instruments is not 0, otherwise in [0, openmpt_module_get_num_samples()[
|
||||
* \param mute The new mute status. true is muted, false is unmuted.
|
||||
* \return 1 on success, 0 on failure (instrument out of range).
|
||||
* \sa openmpt_module_ext_interface_interactive::get_instrument_mute_status
|
||||
*/
|
||||
int ( * set_instrument_mute_status ) ( openmpt_module_ext * mod_ext, int32_t instrument, int mute );
|
||||
|
||||
/*! Get the current mute status for an instrument
|
||||
*
|
||||
* \param mod_ext The module handle to work on.
|
||||
* \param instrument The instrument whose mute status should be retrieved, in range [0, openmpt_module_get_num_instruments()[ if openmpt_module_get_num_instruments is not 0, otherwise in [0, openmpt_module_get_num_samples()[
|
||||
* \return The current instrument mute status. 1 is muted, 0 is unmuted, -1 means the instrument was out of range
|
||||
* \sa openmpt_module_ext_interface_interactive::set_instrument_mute_status
|
||||
*/
|
||||
int ( * get_instrument_mute_status ) ( openmpt_module_ext * mod_ext, int32_t instrument );
|
||||
|
||||
/*! Play a note using the specified instrument
|
||||
*
|
||||
* \param mod_ext The module handle to work on.
|
||||
* \param instrument The instrument that should be played, in range [0, openmpt_module_get_num_instruments()[ if openmpt_module_get_num_instruments is not 0, otherwise in [0, openmpt_module_get_num_samples()[
|
||||
* \param note The note to play, in rage [0, 119]. 60 is the middle C.
|
||||
* \param volume The volume at which the note should be triggered, in range [0.0, 1.0]
|
||||
* \param panning The panning position at which the note should be triggered, in range [-1.0, 1.0], 0.0 is center.
|
||||
* \return The channel on which the note is played. This can pe be passed to openmpt_module_ext_interface_interactive::stop_note to stop the note. -1 means that no channel could be allocated and the note is not played.
|
||||
* \sa openmpt_module_ext_interface_interactive::stop_note
|
||||
*/
|
||||
int32_t ( * play_note ) ( openmpt_module_ext * mod_ext, int32_t instrument, int32_t note, double volume, double panning );
|
||||
|
||||
/*! Stop the note playing on the specified channel
|
||||
*
|
||||
* \param mod_ext The module handle to work on.
|
||||
* \param channel The channel on which the note should be stopped.
|
||||
* \return 1 on success, 0 on failure (channel out of range).
|
||||
* \sa openmpt_module_ext_interface_interactive::play_note
|
||||
*/
|
||||
int ( * stop_note ) ( openmpt_module_ext * mod_ext, int32_t channel );
|
||||
} openmpt_module_ext_interface_interactive;
|
||||
|
||||
|
||||
|
||||
/* add stuff here */
|
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
/*!
|
||||
* @}
|
||||
*/
|
||||
|
||||
#endif /* LIBOPENMPT_EXT_H */
|
||||
|
306
libs/libopenmpt/inc/libopenmpt/libopenmpt_ext.hpp
Normal file
306
libs/libopenmpt/inc/libopenmpt/libopenmpt_ext.hpp
Normal file
|
@ -0,0 +1,306 @@
|
|||
/*
|
||||
* libopenmpt_ext.hpp
|
||||
* ------------------
|
||||
* Purpose: libopenmpt public c++ interface for libopenmpt extensions
|
||||
* Notes :
|
||||
* Authors: OpenMPT Devs
|
||||
* The OpenMPT source code is released under the BSD license. Read LICENSE for more details.
|
||||
*/
|
||||
|
||||
#ifndef LIBOPENMPT_EXT_HPP
|
||||
#define LIBOPENMPT_EXT_HPP
|
||||
|
||||
#include "libopenmpt_config.h"
|
||||
#include "libopenmpt.hpp"
|
||||
|
||||
/*!
|
||||
* \page libopenmpt_ext_cpp_overview libopenmpt_ext C++ API
|
||||
*
|
||||
* libopenmpt_ext is now included in all builds by default.
|
||||
*
|
||||
* \section libopenmpt-ext-cpp-detailed Detailed documentation
|
||||
*
|
||||
* \ref libopenmpt_ext_cpp
|
||||
*
|
||||
*/
|
||||
|
||||
/*! \defgroup libopenmpt_ext_cpp libopenmpt_ext C++ */
|
||||
|
||||
/*! \addtogroup libopenmpt_ext_cpp
|
||||
@{
|
||||
*/
|
||||
|
||||
namespace openmpt {
|
||||
|
||||
class module_ext_impl;
|
||||
|
||||
class LIBOPENMPT_CXX_API module_ext : public module {
|
||||
|
||||
private:
|
||||
module_ext_impl * ext_impl;
|
||||
private:
|
||||
// non-copyable
|
||||
module_ext( const module_ext & );
|
||||
void operator = ( const module_ext & );
|
||||
public:
|
||||
module_ext( std::istream & stream, std::ostream & log = std::clog, const std::map< std::string, std::string > & ctls = detail::initial_ctls_map() );
|
||||
module_ext( const std::vector<char> & data, std::ostream & log = std::clog, const std::map< std::string, std::string > & ctls = detail::initial_ctls_map() );
|
||||
module_ext( const char * data, std::size_t size, std::ostream & log = std::clog, const std::map< std::string, std::string > & ctls = detail::initial_ctls_map() );
|
||||
module_ext( const void * data, std::size_t size, std::ostream & log = std::clog, const std::map< std::string, std::string > & ctls = detail::initial_ctls_map() );
|
||||
virtual ~module_ext();
|
||||
|
||||
public:
|
||||
|
||||
//! Retrieve a libopenmpt extension.
|
||||
/*! Example: Retrieving the interactive extension to change the tempo of a module:
|
||||
\code{.cpp}
|
||||
openmpt::module_ext *mod = new openmpt::module_ext( stream );
|
||||
#ifdef LIBOPENMPT_EXT_INTERFACE_INTERACTIVE
|
||||
openmpt::ext::interactive *interactive = static_cast<openmpt::ext::interactive *>( self->mod->get_interface( openmpt::ext::interactive_id ) );
|
||||
if ( interactive ) {
|
||||
interactive->set_tempo_factor( 2.0 ); // play module at double speed
|
||||
} else {
|
||||
// interface not available
|
||||
}
|
||||
#else
|
||||
// interfae not available
|
||||
#endif
|
||||
\endcode
|
||||
\param interface_id The name of the extension interface to retrieve.
|
||||
\return The interface object. This may be a nullptr if the extension was not found.
|
||||
*/
|
||||
void * get_interface( const std::string & interface_id );
|
||||
|
||||
}; // class module_ext
|
||||
|
||||
namespace ext {
|
||||
|
||||
#define LIBOPENMPT_DECLARE_EXT_CXX_INTERFACE(name) \
|
||||
static const char name ## _id [] = # name ; \
|
||||
class name; \
|
||||
/**/
|
||||
|
||||
#define LIBOPENMPT_EXT_CXX_INTERFACE(name) \
|
||||
protected: \
|
||||
name () {} \
|
||||
virtual ~ name () {} \
|
||||
public: \
|
||||
/**/
|
||||
|
||||
|
||||
#ifndef LIBOPENMPT_EXT_INTERFACE_PATTERN_VIS
|
||||
#define LIBOPENMPT_EXT_INTERFACE_PATTERN_VIS
|
||||
#endif
|
||||
|
||||
LIBOPENMPT_DECLARE_EXT_CXX_INTERFACE(pattern_vis)
|
||||
|
||||
class pattern_vis {
|
||||
|
||||
LIBOPENMPT_EXT_CXX_INTERFACE(pattern_vis)
|
||||
|
||||
//! Pattern command type
|
||||
enum effect_type {
|
||||
|
||||
effect_unknown = 0,
|
||||
effect_general = 1,
|
||||
effect_global = 2,
|
||||
effect_volume = 3,
|
||||
effect_panning = 4,
|
||||
effect_pitch = 5
|
||||
|
||||
}; // enum effect_type
|
||||
|
||||
//! Get pattern command type for pattern highlighting
|
||||
/*!
|
||||
\param pattern The pattern whose data should be retrieved.
|
||||
\param row The row from which the data should be retrieved.
|
||||
\param channel The channel from which the data should be retrieved.
|
||||
\return The command type in the effect column at the given pattern position (see openmpt::ext::pattern_vis::effect_type)
|
||||
\sa openmpt::ext::pattern_vis::get_pattern_row_channel_effect_type
|
||||
*/
|
||||
virtual effect_type get_pattern_row_channel_volume_effect_type( std::int32_t pattern, std::int32_t row, std::int32_t channel ) const = 0;
|
||||
|
||||
//! Get pattern command type for pattern highlighting
|
||||
/*!
|
||||
\param pattern The pattern whose data should be retrieved.
|
||||
\param row The row from which the data should be retrieved.
|
||||
\param channel The channel from which the data should be retrieved.
|
||||
\return The command type in the volume column at the given pattern position (see openmpt::ext::pattern_vis::effect_type)
|
||||
\sa openmpt::ext::pattern_vis::get_pattern_row_channel_volume_effect_type
|
||||
*/
|
||||
virtual effect_type get_pattern_row_channel_effect_type( std::int32_t pattern, std::int32_t row, std::int32_t channel ) const = 0;
|
||||
|
||||
}; // class pattern_vis
|
||||
|
||||
|
||||
#ifndef LIBOPENMPT_EXT_INTERFACE_INTERACTIVE
|
||||
#define LIBOPENMPT_EXT_INTERFACE_INTERACTIVE
|
||||
#endif
|
||||
|
||||
LIBOPENMPT_DECLARE_EXT_CXX_INTERFACE(interactive)
|
||||
|
||||
class interactive {
|
||||
|
||||
LIBOPENMPT_EXT_CXX_INTERFACE(interactive)
|
||||
|
||||
//! Set the current ticks per row (speed)
|
||||
/*!
|
||||
\param speed The new tick count in range [1, 65535].
|
||||
\throws openmpt::exception Throws an exception derived from openmpt::exception if the speed is outside the specified range.
|
||||
\remarks The tick count may be reset by pattern commands at any time.
|
||||
\sa openmpt::module::get_current_speed
|
||||
*/
|
||||
virtual void set_current_speed( std::int32_t speed ) = 0;
|
||||
|
||||
//! Set the current module tempo
|
||||
/*!
|
||||
\param tempo The new tempo in range [32, 512]. The exact meaning of the value depends on the tempo mode used by the module.
|
||||
\throws openmpt::exception Throws an exception derived from openmpt::exception if the tempo is outside the specified range.
|
||||
\remarks The tempo may be reset by pattern commands at any time. Use openmpt::ext:interactive::set_tempo_factor to apply a tempo factor that is independent of pattern commands.
|
||||
\sa openmpt::module::get_current_tempo
|
||||
*/
|
||||
virtual void set_current_tempo( std::int32_t tempo ) = 0;
|
||||
|
||||
//! Set the current module tempo factor without affecting playback pitch
|
||||
/*!
|
||||
\param factor The new tempo factor in range ]0.0, 4.0] - 1.0 means unmodified tempo.
|
||||
\throws openmpt::exception Throws an exception derived from openmpt::exception if the factor is outside the specified range.
|
||||
\remarks Modifying the tempo without applying the same pitch factor using openmpt::ext::interactive::set_pitch_factor may cause rhythmic samples (e.g. drum loops) to go out of sync.
|
||||
\sa openmpt::ext::interactive::get_tempo_factor
|
||||
*/
|
||||
virtual void set_tempo_factor( double factor ) = 0;
|
||||
|
||||
//! Gets the current module tempo factor
|
||||
/*!
|
||||
\return The current tempo factor.
|
||||
\sa openmpt::ext::interactive::set_tempo_factor
|
||||
*/
|
||||
virtual double get_tempo_factor( ) const = 0;
|
||||
|
||||
//! Set the current module pitch factor without affecting playback speed
|
||||
/*!
|
||||
\param factor The new pitch factor in range ]0.0, 4.0] - 1.0 means unmodified pitch.
|
||||
\throws openmpt::exception Throws an exception derived from openmpt::exception if the factor is outside the specified range.
|
||||
\remarks Modifying the pitch without applying the the same tempo factor using openmpt::ext::interactive::set_tempo_factor may cause rhythmic samples (e.g. drum loops) to go out of sync.
|
||||
\remarks To shift the pich by `n` semitones, the parameter can be calculated as follows: `pow( 2.0, n / 12.0 )`
|
||||
\sa openmpt::ext::interactive::get_pitch_factor
|
||||
*/
|
||||
virtual void set_pitch_factor( double factor ) = 0;
|
||||
|
||||
//! Gets the current module pitch factor
|
||||
/*!
|
||||
\return The current pitch factor.
|
||||
\sa openmpt::ext::interactive::set_pitch_factor
|
||||
*/
|
||||
virtual double get_pitch_factor( ) const = 0;
|
||||
|
||||
//! Set the current global volume
|
||||
/*!
|
||||
\param volume The new global volume in range [0.0, 1.0]
|
||||
\throws openmpt::exception Throws an exception derived from openmpt::exception if the volume is outside the specified range.
|
||||
\remarks The global volume may be reset by pattern commands at any time. Use openmpt::module::set_render_param to apply a global overall volume factor that is independent of pattern commands.
|
||||
\sa openmpt::ext::interactive::get_global_volume
|
||||
*/
|
||||
virtual void set_global_volume( double volume ) = 0;
|
||||
|
||||
//! Get the current global volume
|
||||
/*!
|
||||
\return The current global volume in range [0.0, 1.0]
|
||||
\sa openmpt::ext::interactive::set_global_volume
|
||||
*/
|
||||
virtual double get_global_volume( ) const = 0;
|
||||
|
||||
//! Set the current channel volume for a channel
|
||||
/*!
|
||||
\param channel The channel whose volume should be set, in range [0, openmpt::module::get_num_channels()[
|
||||
\param volume The new channel volume in range [0.0, 1.0]
|
||||
\throws openmpt::exception Throws an exception derived from openmpt::exception if the channel or volume is outside the specified range.
|
||||
\remarks The channel volume may be reset by pattern commands at any time.
|
||||
\sa openmpt::ext::interactive::get_channel_volume
|
||||
*/
|
||||
virtual void set_channel_volume( std::int32_t channel, double volume ) = 0;
|
||||
|
||||
//! Get the current channel volume for a channel
|
||||
/*!
|
||||
\param channel The channel whose volume should be retrieved, in range [0, openmpt::module::get_num_channels()[
|
||||
\return The current channel volume in range [0.0, 1.0]
|
||||
\throws openmpt::exception Throws an exception derived from openmpt::exception if the channel is outside the specified range.
|
||||
\sa openmpt::ext::interactive::set_channel_volume
|
||||
*/
|
||||
virtual double get_channel_volume( std::int32_t channel ) const = 0;
|
||||
|
||||
//! Set the current mute status for a channel
|
||||
/*!
|
||||
\param channel The channel whose mute status should be set, in range [0, openmpt::module::get_num_channels()[
|
||||
\param mute The new mute status. true is muted, false is unmuted.
|
||||
\throws openmpt::exception Throws an exception derived from openmpt::exception if the channel is outside the specified range.
|
||||
\sa openmpt::ext::interactive::get_channel_mute_status
|
||||
*/
|
||||
virtual void set_channel_mute_status( std::int32_t channel, bool mute ) = 0;
|
||||
|
||||
//! Get the current mute status for a channel
|
||||
/*!
|
||||
\param channel The channel whose mute status should be retrieved, in range [0, openmpt::module::get_num_channels()[
|
||||
\return The current channel mute status. true is muted, false is unmuted.
|
||||
\throws openmpt::exception Throws an exception derived from openmpt::exception if the channel is outside the specified range.
|
||||
\sa openmpt::ext::interactive::set_channel_mute_status
|
||||
*/
|
||||
virtual bool get_channel_mute_status( std::int32_t channel ) const = 0;
|
||||
|
||||
//! Set the current mute status for an instrument
|
||||
/*!
|
||||
\param instrument The instrument whose mute status should be set, in range [0, openmpt::module::get_num_instruments()[ if openmpt::module::get_num_instruments is not 0, otherwise in [0, openmpt::module::get_num_samples()[
|
||||
\param mute The new mute status. true is muted, false is unmuted.
|
||||
\throws openmpt::exception Throws an exception derived from openmpt::exception if the instrument is outside the specified range.
|
||||
\sa openmpt::ext::interactive::get_instrument_mute_status
|
||||
*/
|
||||
virtual void set_instrument_mute_status( std::int32_t instrument, bool mute ) = 0;
|
||||
|
||||
//! Get the current mute status for an instrument
|
||||
/*!
|
||||
\param instrument The instrument whose mute status should be retrieved, in range [0, openmpt::module::get_num_instruments()[ if openmpt::module::get_num_instruments is not 0, otherwise in [0, openmpt::module::get_num_samples()[
|
||||
\return The current instrument mute status. true is muted, false is unmuted.
|
||||
\throws openmpt::exception Throws an exception derived from openmpt::exception if the instrument is outside the specified range.
|
||||
\sa openmpt::ext::interactive::set_instrument_mute_status
|
||||
*/
|
||||
virtual bool get_instrument_mute_status( std::int32_t instrument ) const = 0;
|
||||
|
||||
//! Play a note using the specified instrument
|
||||
/*!
|
||||
\param instrument The instrument that should be played, in range [0, openmpt::module::get_num_instruments()[ if openmpt::module::get_num_instruments is not 0, otherwise in [0, openmpt::module::get_num_samples()[
|
||||
\param note The note to play, in rage [0, 119]. 60 is the middle C.
|
||||
\param volume The volume at which the note should be triggered, in range [0.0, 1.0]
|
||||
\param panning The panning position at which the note should be triggered, in range [-1.0, 1.0], 0.0 is center.
|
||||
\return The channel on which the note is played. This can pe be passed to openmpt::ext::interactive::stop_note to stop the note.
|
||||
\throws openmpt::exception Throws an exception derived from openmpt::exception if the instrument or note is outside the specified range.
|
||||
\sa openmpt::ext::interactive::stop_note
|
||||
*/
|
||||
virtual std::int32_t play_note( std::int32_t instrument, std::int32_t note, double volume, double panning ) = 0;
|
||||
|
||||
//! Stop the note playing on the specified channel
|
||||
/*!
|
||||
\param channel The channel on which the note should be stopped.
|
||||
\throws openmpt::exception Throws an exception derived from openmpt::exception if the channel index is invalid.
|
||||
\sa openmpt::ext::interactive::play_note
|
||||
*/
|
||||
virtual void stop_note( std::int32_t channel ) = 0;
|
||||
|
||||
}; // class interactive
|
||||
|
||||
|
||||
/* add stuff here */
|
||||
|
||||
|
||||
|
||||
#undef LIBOPENMPT_DECLARE_EXT_CXX_INTERFACE
|
||||
#undef LIBOPENMPT_EXT_CXX_INTERFACE
|
||||
|
||||
} // namespace ext
|
||||
|
||||
} // namespace openmpt
|
||||
|
||||
/*!
|
||||
@}
|
||||
*/
|
||||
|
||||
#endif // LIBOPENMPT_EXT_HPP
|
|
@ -0,0 +1,198 @@
|
|||
/*
|
||||
* libopenmpt_stream_callbacks_buffer.h
|
||||
* ------------------------------------
|
||||
* Purpose: libopenmpt public c interface
|
||||
* Notes : (currently none)
|
||||
* Authors: OpenMPT Devs
|
||||
* The OpenMPT source code is released under the BSD license. Read LICENSE for more details.
|
||||
*/
|
||||
|
||||
#ifndef LIBOPENMPT_STREAM_CALLBACKS_BUFFER_H
|
||||
#define LIBOPENMPT_STREAM_CALLBACKS_BUFFER_H
|
||||
|
||||
#include "libopenmpt.h"
|
||||
|
||||
/* The use of this header requires:
|
||||
|
||||
#include <libopenmpt/libopenmpt.h>
|
||||
#if defined( LIBOPENMPT_STREAM_CALLBACKS_BUFFER )
|
||||
#include <libopenmpt/libopenmpt_stream_callbacks_buffer.h>
|
||||
#else
|
||||
#error "libopenmpt too old."
|
||||
#endif
|
||||
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
/*! \addtogroup libopenmpt_c
|
||||
* @{
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct openmpt_stream_buffer {
|
||||
const void * file_data; /* or prefix data IFF prefix_size < file_size */
|
||||
int64_t file_size;
|
||||
int64_t file_pos;
|
||||
int64_t prefix_size;
|
||||
int overflow;
|
||||
} openmpt_stream_buffer;
|
||||
|
||||
static size_t openmpt_stream_buffer_read_func( void * stream, void * dst, size_t bytes ) {
|
||||
openmpt_stream_buffer * s = (openmpt_stream_buffer*)stream;
|
||||
int64_t offset = 0;
|
||||
int64_t begpos = 0;
|
||||
int64_t endpos = 0;
|
||||
size_t valid_bytes = 0;
|
||||
if ( !s ) {
|
||||
return 0;
|
||||
}
|
||||
offset = bytes;
|
||||
begpos = s->file_pos;
|
||||
endpos = s->file_pos;
|
||||
valid_bytes = 0;
|
||||
endpos = (uint64_t)endpos + (uint64_t)offset;
|
||||
if ( ( offset > 0 ) && !( (uint64_t)endpos > (uint64_t)begpos ) ) {
|
||||
/* integer wrapped */
|
||||
return 0;
|
||||
}
|
||||
if ( bytes == 0 ) {
|
||||
return 0;
|
||||
}
|
||||
if ( begpos >= s->file_size ) {
|
||||
return 0;
|
||||
}
|
||||
if ( endpos > s->file_size ) {
|
||||
/* clip to eof */
|
||||
bytes = bytes - (size_t)( endpos - s->file_size );
|
||||
endpos = endpos - ( endpos - s->file_size );
|
||||
}
|
||||
memset( dst, 0, bytes );
|
||||
if ( begpos >= s->prefix_size ) {
|
||||
s->overflow = 1;
|
||||
valid_bytes = 0;
|
||||
} else if ( endpos > s->prefix_size ) {
|
||||
s->overflow = 1;
|
||||
valid_bytes = bytes - (size_t)( endpos - s->prefix_size );
|
||||
} else {
|
||||
valid_bytes = bytes;
|
||||
}
|
||||
memcpy( dst, (const char*)s->file_data + s->file_pos, valid_bytes );
|
||||
s->file_pos = s->file_pos + bytes;
|
||||
return bytes;
|
||||
}
|
||||
|
||||
static int openmpt_stream_buffer_seek_func( void * stream, int64_t offset, int whence ) {
|
||||
openmpt_stream_buffer * s = (openmpt_stream_buffer*)stream;
|
||||
int result = -1;
|
||||
if ( !s ) {
|
||||
return -1;
|
||||
}
|
||||
switch ( whence ) {
|
||||
case OPENMPT_STREAM_SEEK_SET:
|
||||
if ( offset < 0 ) {
|
||||
return -1;
|
||||
}
|
||||
if ( offset > s->file_size ) {
|
||||
return -1;
|
||||
}
|
||||
s->file_pos = offset;
|
||||
result = 0;
|
||||
break;
|
||||
case OPENMPT_STREAM_SEEK_CUR:
|
||||
do {
|
||||
int64_t oldpos = s->file_pos;
|
||||
int64_t pos = s->file_pos;
|
||||
pos = (uint64_t)pos + (uint64_t)offset;
|
||||
if ( ( offset > 0 ) && !( (uint64_t)pos > (uint64_t)oldpos ) ) {
|
||||
/* integer wrapped */
|
||||
return -1;
|
||||
}
|
||||
if ( ( offset < 0 ) && !( (uint64_t)pos < (uint64_t)oldpos ) ) {
|
||||
/* integer wrapped */
|
||||
return -1;
|
||||
}
|
||||
s->file_pos = pos;
|
||||
} while(0);
|
||||
result = 0;
|
||||
break;
|
||||
case OPENMPT_STREAM_SEEK_END:
|
||||
if ( offset > 0 ) {
|
||||
return -1;
|
||||
}
|
||||
do {
|
||||
int64_t oldpos = s->file_pos;
|
||||
int64_t pos = s->file_pos;
|
||||
pos = s->file_size;
|
||||
pos = (uint64_t)pos + (uint64_t)offset;
|
||||
if ( ( offset < 0 ) && !( (uint64_t)pos < (uint64_t)oldpos ) ) {
|
||||
/* integer wrapped */
|
||||
return -1;
|
||||
}
|
||||
s->file_pos = pos;
|
||||
} while(0);
|
||||
result = 0;
|
||||
break;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
static int64_t openmpt_stream_buffer_tell_func( void * stream ) {
|
||||
openmpt_stream_buffer * s = (openmpt_stream_buffer*)stream;
|
||||
if ( !s ) {
|
||||
return -1;
|
||||
}
|
||||
return s->file_pos;
|
||||
}
|
||||
|
||||
static void openmpt_stream_buffer_init( openmpt_stream_buffer * buffer, const void * file_data, int64_t file_size ) {
|
||||
memset( buffer, 0, sizeof( openmpt_stream_buffer ) );
|
||||
buffer->file_data = file_data;
|
||||
buffer->file_size = file_size;
|
||||
buffer->file_pos = 0;
|
||||
buffer->prefix_size = file_size;
|
||||
buffer->overflow = 0;
|
||||
}
|
||||
|
||||
#define openmpt_stream_buffer_init_prefix_only( buffer_, prefix_data_, prefix_size_, file_size_ ) do { \
|
||||
openmpt_stream_buffer_init( (buffer_), (prefix_data_), (file_size_) ); \
|
||||
(buffer_)->prefix_size = (prefix_size_); \
|
||||
} while(0)
|
||||
|
||||
#define openmpt_stream_buffer_overflowed( buffer_ ) ( (buffer_)->overflow )
|
||||
|
||||
/*! \brief Provide openmpt_stream_callbacks for in-memoy buffers
|
||||
*
|
||||
* Fills openmpt_stream_callbacks suitable for passing an in-memory buffer as a stream parameter to functions doing file input/output.
|
||||
*
|
||||
* \remarks The stream argument must be passed as `(void*)(openmpt_stream_buffer*)stream_buffer`.
|
||||
* \sa \ref libopenmpt_c_fileio
|
||||
* \sa openmpt_stream_callbacks
|
||||
* \sa openmpt_could_open_probability2
|
||||
* \sa openmpt_probe_file_header_from_stream
|
||||
* \sa openmpt_module_create2
|
||||
*/
|
||||
static openmpt_stream_callbacks openmpt_stream_get_buffer_callbacks(void) {
|
||||
openmpt_stream_callbacks retval;
|
||||
memset( &retval, 0, sizeof( openmpt_stream_callbacks ) );
|
||||
retval.read = openmpt_stream_buffer_read_func;
|
||||
retval.seek = openmpt_stream_buffer_seek_func;
|
||||
retval.tell = openmpt_stream_buffer_tell_func;
|
||||
return retval;
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
/*!
|
||||
* @}
|
||||
*/
|
||||
|
||||
#endif /* LIBOPENMPT_STREAM_CALLBACKS_BUFFER_H */
|
||||
|
101
libs/libopenmpt/inc/libopenmpt/libopenmpt_stream_callbacks_fd.h
Normal file
101
libs/libopenmpt/inc/libopenmpt/libopenmpt_stream_callbacks_fd.h
Normal file
|
@ -0,0 +1,101 @@
|
|||
/*
|
||||
* libopenmpt_stream_callbacks_fd.h
|
||||
* --------------------------------
|
||||
* Purpose: libopenmpt public c interface
|
||||
* Notes : (currently none)
|
||||
* Authors: OpenMPT Devs
|
||||
* The OpenMPT source code is released under the BSD license. Read LICENSE for more details.
|
||||
*/
|
||||
|
||||
#ifndef LIBOPENMPT_STREAM_CALLBACKS_FD_H
|
||||
#define LIBOPENMPT_STREAM_CALLBACKS_FD_H
|
||||
|
||||
#include "libopenmpt.h"
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#include <io.h>
|
||||
#endif
|
||||
#include <limits.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#ifndef _MSC_VER
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
|
||||
/*! \addtogroup libopenmpt_c
|
||||
* @{
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* This stuff has to be in a header file because of possibly different MSVC CRTs which cause problems for fd crossing CRT boundaries. */
|
||||
|
||||
static size_t openmpt_stream_fd_read_func( void * stream, void * dst, size_t bytes ) {
|
||||
int fd = 0;
|
||||
#if defined(_MSC_VER)
|
||||
size_t retval = 0;
|
||||
int to_read = 0;
|
||||
int ret_read = 0;
|
||||
#else
|
||||
ssize_t retval = 0;
|
||||
#endif
|
||||
fd = (int)(uintptr_t)stream;
|
||||
if ( fd < 0 ) {
|
||||
return 0;
|
||||
}
|
||||
#if defined(_MSC_VER)
|
||||
retval = 0;
|
||||
while ( bytes > 0 ) {
|
||||
to_read = 0;
|
||||
if ( bytes < (size_t)INT_MAX ) {
|
||||
to_read = (int)bytes;
|
||||
} else {
|
||||
to_read = INT_MAX;
|
||||
}
|
||||
ret_read = _read( fd, dst, to_read );
|
||||
if ( ret_read <= 0 ) {
|
||||
return retval;
|
||||
}
|
||||
bytes -= ret_read;
|
||||
retval += ret_read;
|
||||
}
|
||||
#else
|
||||
retval = read( fd, dst, bytes );
|
||||
#endif
|
||||
if ( retval <= 0 ) {
|
||||
return 0;
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
/*! \brief Provide openmpt_stream_callbacks for standard POSIX file descriptors
|
||||
*
|
||||
* Fills openmpt_stream_callbacks suitable for passing a POSIX filer descriptor as a stream parameter to functions doing file input/output.
|
||||
*
|
||||
* \remarks The stream argument must be passed as `(void*)(uintptr_t)(int)fd`.
|
||||
* \sa \ref libopenmpt_c_fileio
|
||||
* \sa openmpt_stream_callbacks
|
||||
* \sa openmpt_could_open_probability2
|
||||
* \sa openmpt_probe_file_header_from_stream
|
||||
* \sa openmpt_module_create2
|
||||
*/
|
||||
static openmpt_stream_callbacks openmpt_stream_get_fd_callbacks(void) {
|
||||
openmpt_stream_callbacks retval;
|
||||
memset( &retval, 0, sizeof( openmpt_stream_callbacks ) );
|
||||
retval.read = openmpt_stream_fd_read_func;
|
||||
return retval;
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
/*!
|
||||
* @}
|
||||
*/
|
||||
|
||||
#endif /* LIBOPENMPT_STREAM_CALLBACKS_FD_H */
|
||||
|
|
@ -0,0 +1,132 @@
|
|||
/*
|
||||
* libopenmpt_stream_callbacks_file.h
|
||||
* ----------------------------------
|
||||
* Purpose: libopenmpt public c interface
|
||||
* Notes : (currently none)
|
||||
* Authors: OpenMPT Devs
|
||||
* The OpenMPT source code is released under the BSD license. Read LICENSE for more details.
|
||||
*/
|
||||
|
||||
#ifndef LIBOPENMPT_STREAM_CALLBACKS_FILE_H
|
||||
#define LIBOPENMPT_STREAM_CALLBACKS_FILE_H
|
||||
|
||||
#include "libopenmpt.h"
|
||||
|
||||
#include <limits.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#ifdef _MSC_VER
|
||||
#include <wchar.h> /* off_t */
|
||||
#endif
|
||||
|
||||
/*! \addtogroup libopenmpt_c
|
||||
* @{
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* This stuff has to be in a header file because of possibly different MSVC CRTs which cause problems for FILE * crossing CRT boundaries. */
|
||||
|
||||
static size_t openmpt_stream_file_read_func( void * stream, void * dst, size_t bytes ) {
|
||||
FILE * f = 0;
|
||||
size_t retval = 0;
|
||||
f = (FILE*)stream;
|
||||
if ( !f ) {
|
||||
return 0;
|
||||
}
|
||||
retval = fread( dst, 1, bytes, f );
|
||||
if ( retval <= 0 ) {
|
||||
return 0;
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
static int openmpt_stream_file_seek_func( void * stream, int64_t offset, int whence ) {
|
||||
FILE * f = 0;
|
||||
int fwhence = 0;
|
||||
f = (FILE*)stream;
|
||||
if ( !f ) {
|
||||
return -1;
|
||||
}
|
||||
switch ( whence ) {
|
||||
#if defined(SEEK_SET)
|
||||
case OPENMPT_STREAM_SEEK_SET:
|
||||
fwhence = SEEK_SET;
|
||||
break;
|
||||
#endif
|
||||
#if defined(SEEK_CUR)
|
||||
case OPENMPT_STREAM_SEEK_CUR:
|
||||
fwhence = SEEK_CUR;
|
||||
break;
|
||||
#endif
|
||||
#if defined(SEEK_END)
|
||||
case OPENMPT_STREAM_SEEK_END:
|
||||
fwhence = SEEK_END;
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
return -1;
|
||||
break;
|
||||
}
|
||||
#if defined(_MSC_VER)
|
||||
return _fseeki64( f, offset, fwhence ) ? -1 : 0;
|
||||
#elif defined(_POSIX_SOURCE) && (_POSIX_SOURCE == 1)
|
||||
return fseeko( f, offset, fwhence ) ? -1 : 0;
|
||||
#else
|
||||
return fseek( f, offset, fwhence ) ? -1 : 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int64_t openmpt_stream_file_tell_func( void * stream ) {
|
||||
FILE * f = 0;
|
||||
int64_t retval = 0;
|
||||
f = (FILE*)stream;
|
||||
if ( !f ) {
|
||||
return -1;
|
||||
}
|
||||
#if defined(_MSC_VER)
|
||||
retval = _ftelli64( f );
|
||||
#elif defined(_POSIX_SOURCE) && (_POSIX_SOURCE == 1)
|
||||
retval = ftello( f );
|
||||
#else
|
||||
retval = ftell( f );
|
||||
#endif
|
||||
if ( retval < 0 ) {
|
||||
return -1;
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
/*! \brief Provide openmpt_stream_callbacks for standard C FILE objects
|
||||
*
|
||||
* Fills openmpt_stream_callbacks suitable for passing a standard C FILE object as a stream parameter to functions doing file input/output.
|
||||
*
|
||||
* \remarks The stream argument must be passed as `(void*)(FILE*)file`.
|
||||
* \sa \ref libopenmpt_c_fileio
|
||||
* \sa openmpt_stream_callbacks
|
||||
* \sa openmpt_could_open_probability2
|
||||
* \sa openmpt_probe_file_header_from_stream
|
||||
* \sa openmpt_module_create2
|
||||
*/
|
||||
static openmpt_stream_callbacks openmpt_stream_get_file_callbacks(void) {
|
||||
openmpt_stream_callbacks retval;
|
||||
memset( &retval, 0, sizeof( openmpt_stream_callbacks ) );
|
||||
retval.read = openmpt_stream_file_read_func;
|
||||
retval.seek = openmpt_stream_file_seek_func;
|
||||
retval.tell = openmpt_stream_file_tell_func;
|
||||
return retval;
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
/*!
|
||||
* @}
|
||||
*/
|
||||
|
||||
#endif /* LIBOPENMPT_STREAM_CALLBACKS_FILE_H */
|
||||
|
75
libs/libopenmpt/inc/libopenmpt/libopenmpt_version.h
Normal file
75
libs/libopenmpt/inc/libopenmpt/libopenmpt_version.h
Normal file
|
@ -0,0 +1,75 @@
|
|||
/*
|
||||
* libopenmpt_version.h
|
||||
* --------------------
|
||||
* Purpose: libopenmpt public interface version
|
||||
* Notes : (currently none)
|
||||
* Authors: OpenMPT Devs
|
||||
* The OpenMPT source code is released under the BSD license. Read LICENSE for more details.
|
||||
*/
|
||||
|
||||
#ifndef LIBOPENMPT_VERSION_H
|
||||
#define LIBOPENMPT_VERSION_H
|
||||
|
||||
/*! \addtogroup libopenmpt
|
||||
@{
|
||||
*/
|
||||
|
||||
/*! \brief libopenmpt major version number */
|
||||
#define OPENMPT_API_VERSION_MAJOR 0
|
||||
/*! \brief libopenmpt minor version number */
|
||||
#define OPENMPT_API_VERSION_MINOR 4
|
||||
/*! \brief libopenmpt patch version number */
|
||||
#define OPENMPT_API_VERSION_PATCH 4
|
||||
/*! \brief libopenmpt pre-release tag */
|
||||
#define OPENMPT_API_VERSION_PREREL ""
|
||||
/*! \brief libopenmpt pre-release flag */
|
||||
#define OPENMPT_API_VERSION_IS_PREREL 0
|
||||
|
||||
/*! \brief libopenmpt version number as a single integer value
|
||||
* \since 0.3
|
||||
* \remarks Use the following shim if you need to support earlier libopenmpt versions:
|
||||
* \code
|
||||
* #include <libopenmpt/libopenmpt_version.h>
|
||||
* #if !defined(OPENMPT_API_VERSION_MAKE)
|
||||
* #define OPENMPT_API_VERSION_MAKE(major, minor, patch) (((major)<<24)|((minor)<<16)|((patch)<<0))
|
||||
* #endif
|
||||
* \endcode
|
||||
*/
|
||||
#define OPENMPT_API_VERSION_MAKE(major, minor, patch) (((major)<<24)|((minor)<<16)|((patch)<<0))
|
||||
|
||||
/*! \brief libopenmpt API version number */
|
||||
#define OPENMPT_API_VERSION OPENMPT_API_VERSION_MAKE(OPENMPT_API_VERSION_MAJOR, OPENMPT_API_VERSION_MINOR, OPENMPT_API_VERSION_PATCH)
|
||||
|
||||
/*! \brief Check whether the libopenmpt API is at least the provided version
|
||||
* \since 0.3
|
||||
* \remarks Use the following shim if you need to support earlier libopenmpt versions:
|
||||
* \code
|
||||
* #include <libopenmpt/libopenmpt_version.h>
|
||||
* #if !defined(OPENMPT_API_VERSION_AT_LEAST)
|
||||
* #define OPENMPT_API_VERSION_AT_LEAST(major, minor, patch) (OPENMPT_API_VERSION >= OPENMPT_API_VERSION_MAKE((major), (minor), (patch)))
|
||||
* #endif
|
||||
* \endcode
|
||||
*/
|
||||
#define OPENMPT_API_VERSION_AT_LEAST(major, minor, patch) (OPENMPT_API_VERSION >= OPENMPT_API_VERSION_MAKE((major), (minor), (patch)))
|
||||
|
||||
/*! \brief Check whether the libopenmpt API is before the provided version
|
||||
* \since 0.3
|
||||
* \remarks Use the following shim if you need to support earlier libopenmpt versions:
|
||||
* \code
|
||||
* #include <libopenmpt/libopenmpt_version.h>
|
||||
* #if !defined(OPENMPT_API_VERSION_BEFORE)
|
||||
* #define OPENMPT_API_VERSION_BEFORE(major, minor, patch) (OPENMPT_API_VERSION < OPENMPT_API_VERSION_MAKE((major), (minor), (patch)))
|
||||
* #endif
|
||||
* \endcode
|
||||
*/
|
||||
#define OPENMPT_API_VERSION_BEFORE(major, minor, patch) (OPENMPT_API_VERSION < OPENMPT_API_VERSION_MAKE((major), (minor), (patch)))
|
||||
|
||||
#define OPENMPT_API_VERSION_HELPER_STRINGIZE(x) #x
|
||||
#define OPENMPT_API_VERSION_STRINGIZE(x) OPENMPT_API_VERSION_HELPER_STRINGIZE(x)
|
||||
#define OPENMPT_API_VERSION_STRING OPENMPT_API_VERSION_STRINGIZE(OPENMPT_API_VERSION_MAJOR) "." OPENMPT_API_VERSION_STRINGIZE(OPENMPT_API_VERSION_MINOR) "." OPENMPT_API_VERSION_STRINGIZE(OPENMPT_API_VERSION_PATCH) OPENMPT_API_VERSION_PREREL
|
||||
|
||||
/*!
|
||||
@}
|
||||
*/
|
||||
|
||||
#endif /* LIBOPENMPT_VERSION_H */
|
BIN
libs/libopenmpt/lib/x86/libopenmpt.lib
Normal file
BIN
libs/libopenmpt/lib/x86/libopenmpt.lib
Normal file
Binary file not shown.
BIN
libs/libopenmpt/lib/x86/mingw/libopenmpt.dll.a
Normal file
BIN
libs/libopenmpt/lib/x86/mingw/libopenmpt.dll.a
Normal file
Binary file not shown.
BIN
libs/libopenmpt/lib/x86_64/libopenmpt.lib
Normal file
BIN
libs/libopenmpt/lib/x86_64/libopenmpt.lib
Normal file
Binary file not shown.
BIN
libs/libopenmpt/lib/x86_64/mingw/libopenmpt.dll.a
Normal file
BIN
libs/libopenmpt/lib/x86_64/mingw/libopenmpt.dll.a
Normal file
Binary file not shown.
|
@ -123,6 +123,7 @@ set(SRB2_CORE_RENDER_SOURCES
|
|||
r_sky.c
|
||||
r_splats.c
|
||||
r_things.c
|
||||
r_portal.c
|
||||
|
||||
r_bsp.h
|
||||
r_data.h
|
||||
|
@ -136,6 +137,7 @@ set(SRB2_CORE_RENDER_SOURCES
|
|||
r_splats.h
|
||||
r_state.h
|
||||
r_things.h
|
||||
r_portal.h
|
||||
)
|
||||
|
||||
set(SRB2_CORE_GAME_SOURCES
|
||||
|
@ -218,6 +220,8 @@ set(SRB2_CONFIG_HAVE_ZLIB ON CACHE BOOL
|
|||
"Enable zlib support.")
|
||||
set(SRB2_CONFIG_HAVE_GME ON CACHE BOOL
|
||||
"Enable GME support.")
|
||||
set(SRB2_CONFIG_HAVE_OPENMPT ON CACHE BOOL
|
||||
"Enable OpenMPT support.")
|
||||
set(SRB2_CONFIG_HWRENDER ON CACHE BOOL
|
||||
"Enable hardware rendering through OpenGL.")
|
||||
set(SRB2_CONFIG_USEASM OFF CACHE BOOL
|
||||
|
@ -230,7 +234,7 @@ set(SRB2_CONFIG_STATIC_OPENGL OFF CACHE BOOL
|
|||
### use internal libraries?
|
||||
if(${CMAKE_SYSTEM} MATCHES "Windows") ###set on Windows only
|
||||
set(SRB2_CONFIG_USE_INTERNAL_LIBRARIES OFF CACHE BOOL
|
||||
"Use SRB2's internal copies of required dependencies (SDL2, PNG, zlib, GME).")
|
||||
"Use SRB2's internal copies of required dependencies (SDL2, PNG, zlib, GME, OpenMPT).")
|
||||
endif()
|
||||
|
||||
if(${SRB2_CONFIG_HAVE_BLUA})
|
||||
|
@ -340,6 +344,26 @@ if(${SRB2_CONFIG_HAVE_GME})
|
|||
endif()
|
||||
endif()
|
||||
|
||||
if(${SRB2_CONFIG_HAVE_OPENMPT})
|
||||
if(${SRB2_CONFIG_USE_INTERNAL_LIBRARIES})
|
||||
set(OPENMPT_FOUND ON)
|
||||
set(OPENMPT_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/libs/libopenmpt/inc)
|
||||
if(${SRB2_SYSTEM_BITS} EQUAL 64)
|
||||
set(OPENMPT_LIBRARIES "-L${CMAKE_SOURCE_DIR}/libs/libopenmpt/lib/x86_64/mingw -lopenmpt")
|
||||
else() # 32-bit
|
||||
set(OPENMPT_LIBRARIES "-L${CMAKE_SOURCE_DIR}/libs/libopenmpt/lib/x86/mingw -lopenmpt")
|
||||
endif()
|
||||
else()
|
||||
find_package(OPENMPT)
|
||||
endif()
|
||||
if(${OPENMPT_FOUND})
|
||||
set(SRB2_HAVE_OPENMPT ON)
|
||||
add_definitions(-DHAVE_OPENMPT)
|
||||
else()
|
||||
message(WARNING "You have specified that OpenMPT is available but it was not found.")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(${SRB2_CONFIG_HAVE_ZLIB})
|
||||
if(${SRB2_CONFIG_USE_INTERNAL_LIBRARIES})
|
||||
set(ZLIB_FOUND ON)
|
||||
|
|
17
src/Makefile
17
src/Makefile
|
@ -72,6 +72,7 @@
|
|||
# Compile without BSD API, add 'NONET=1'
|
||||
# Compile without IPX/SPX, add 'NOIPX=1'
|
||||
# Compile Mingw/SDL with S_DS3S, add 'DS3D=1'
|
||||
# Compile without libopenmpt, add 'NOOPENMPT=1'
|
||||
# Compile with S_FMOD3D, add 'FMOD=1' (WIP)
|
||||
# Compile with S_OPENAL, add 'OPENAL=1' (WIP)
|
||||
# To link with the whole SDL_Image lib to load Icons, add 'SDL_IMAGE=1' but it isn't not realy needed
|
||||
|
@ -150,6 +151,10 @@ ifdef DJGPPDOS
|
|||
include djgppdos/Makefile.cfg
|
||||
endif
|
||||
|
||||
ifndef NOOPENMPT
|
||||
HAVE_OPENMPT=1
|
||||
endif
|
||||
|
||||
ifdef MINGW
|
||||
include win32/Makefile.cfg
|
||||
endif #ifdef MINGW
|
||||
|
@ -296,6 +301,17 @@ LIBS+=$(LIBGME_LDFLAGS)
|
|||
CFLAGS+=$(LIBGME_CFLAGS)
|
||||
endif
|
||||
|
||||
ifdef HAVE_OPENMPT
|
||||
OPTS+=-DHAVE_OPENMPT
|
||||
|
||||
LIBOPENMPT_PKGCONFIG?=libopenmpt
|
||||
LIBOPENMPT_CFLAGS?=$(shell $(PKG_CONFIG) $(LIBOPENMPT_PKGCONFIG) --cflags)
|
||||
LIBOPENMPT_LDFLAGS?=$(shell $(PKG_CONFIG) $(LIBOPENMPT_PKGCONFIG) --libs)
|
||||
|
||||
LIBS+=$(LIBOPENMPT_LDFLAGS)
|
||||
CFLAGS+=$(LIBOPENMPT_CFLAGS)
|
||||
endif
|
||||
|
||||
ifndef NOZLIB
|
||||
OPTS+=-DHAVE_ZLIB
|
||||
ZLIB_PKGCONFIG?=zlib
|
||||
|
@ -455,6 +471,7 @@ OBJS:=$(i_main_o) \
|
|||
$(OBJDIR)/r_sky.o \
|
||||
$(OBJDIR)/r_splats.o \
|
||||
$(OBJDIR)/r_things.o \
|
||||
$(OBJDIR)/r_portal.o \
|
||||
$(OBJDIR)/screen.o \
|
||||
$(OBJDIR)/v_video.o \
|
||||
$(OBJDIR)/s_sound.o \
|
||||
|
|
|
@ -148,6 +148,20 @@ void COM_BufInsertText(const char *ptext)
|
|||
}
|
||||
}
|
||||
|
||||
/** Progress the wait timer and flush waiting console commands when ready.
|
||||
*/
|
||||
void
|
||||
COM_BufTicker(void)
|
||||
{
|
||||
if (com_wait)
|
||||
{
|
||||
com_wait--;
|
||||
return;
|
||||
}
|
||||
|
||||
COM_BufExecute();
|
||||
}
|
||||
|
||||
/** Flushes (executes) console commands in the buffer.
|
||||
*/
|
||||
void COM_BufExecute(void)
|
||||
|
@ -157,12 +171,6 @@ void COM_BufExecute(void)
|
|||
char line[1024] = "";
|
||||
INT32 quotes;
|
||||
|
||||
if (com_wait)
|
||||
{
|
||||
com_wait--;
|
||||
return;
|
||||
}
|
||||
|
||||
while (com_text.cursize)
|
||||
{
|
||||
// find a '\n' or; line break
|
||||
|
@ -514,7 +522,6 @@ static void COM_ExecuteString(char *ptext)
|
|||
{
|
||||
if (!stricmp(com_argv[0], cmd->name)) //case insensitive now that we have lower and uppercase!
|
||||
{
|
||||
recursion = 0;
|
||||
cmd->function();
|
||||
return;
|
||||
}
|
||||
|
@ -526,19 +533,17 @@ static void COM_ExecuteString(char *ptext)
|
|||
if (!stricmp(com_argv[0], a->name))
|
||||
{
|
||||
if (recursion > MAX_ALIAS_RECURSION)
|
||||
{
|
||||
CONS_Alert(CONS_WARNING, M_GetText("Alias recursion cycle detected!\n"));
|
||||
recursion = 0;
|
||||
return;
|
||||
else
|
||||
{ // Monster Iestyn: keep track of how many levels of recursion we're in
|
||||
recursion++;
|
||||
COM_BufInsertText(a->value);
|
||||
recursion--;
|
||||
}
|
||||
recursion++;
|
||||
COM_BufInsertText(a->value);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
recursion = 0;
|
||||
|
||||
// check cvars
|
||||
// Hurdler: added at Ebola's request ;)
|
||||
// (don't flood the console in software mode with bad gr_xxx command)
|
||||
|
|
|
@ -45,6 +45,9 @@ void COM_ImmedExecute(const char *ptext);
|
|||
// Execute commands in buffer, flush them
|
||||
void COM_BufExecute(void);
|
||||
|
||||
// As above; and progress the wait timer.
|
||||
void COM_BufTicker(void);
|
||||
|
||||
// setup command buffer, at game tartup
|
||||
void COM_Init(void);
|
||||
|
||||
|
|
|
@ -127,8 +127,6 @@ static CV_PossibleValue_t backpic_cons_t[] = {{0, "translucent"}, {1, "picture"}
|
|||
// whether to use console background picture, or translucent mode
|
||||
static consvar_t cons_backpic = {"con_backpic", "translucent", CV_SAVE, backpic_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||
|
||||
// \todo SRB2-CHAT 2.1 colors -- pending translation to 2.2 palette indexes
|
||||
#if 0
|
||||
static CV_PossibleValue_t backcolor_cons_t[] = {{0, "White"}, {1, "Black"}, {2, "Sepia"},
|
||||
{3, "Brown"}, {4, "Pink"}, {5, "Raspberry"},
|
||||
{6, "Red"}, {7, "Creamsicle"}, {8, "Orange"},
|
||||
|
@ -137,13 +135,7 @@ static CV_PossibleValue_t backcolor_cons_t[] = {{0, "White"}, {1, "Black"}, {
|
|||
{15,"Periwinkle"}, {16,"Blue"}, {17,"Purple"},
|
||||
{18,"Lavender"},
|
||||
{0, NULL}};
|
||||
#else
|
||||
static CV_PossibleValue_t backcolor_cons_t[] = {{0, "White"}, {1, "Gray"}, {2, "Brown"},
|
||||
{3, "Red"}, {4, "Orange"}, {5, "Yellow"},
|
||||
{6, "Green"}, {7, "Blue"}, {8, "Purple"},
|
||||
{9, "Magenta"}, {10, "Aqua"},
|
||||
{0, NULL}};
|
||||
#endif
|
||||
|
||||
|
||||
consvar_t cons_backcolor = {"con_backcolor", "Green", CV_CALL|CV_SAVE, backcolor_cons_t, CONS_backcolor_Change, 0, NULL, NULL, 0, 0, NULL};
|
||||
|
||||
|
@ -256,50 +248,30 @@ void CON_SetupBackColormapEx(INT32 color, boolean prompt)
|
|||
|
||||
shift = 6; // 12 colors -- shift of 7 means 6 colors
|
||||
|
||||
// \todo SRB2-CHAT colors, pending translation to 2.2 palette indexes
|
||||
#if 0
|
||||
switch (color)
|
||||
{
|
||||
case 0: palindex = 15; break; // White
|
||||
case 1: palindex = 31; break; // Gray
|
||||
case 2: palindex = 47; break; // Sepia
|
||||
case 3: palindex = 63; break; // Brown
|
||||
case 4: palindex = 150; shift = 7; break; // Pink
|
||||
case 5: palindex = 127; shift = 7; break; // Raspberry
|
||||
case 6: palindex = 143; break; // Red
|
||||
case 7: palindex = 86; shift = 7; break; // Creamsicle
|
||||
case 8: palindex = 95; break; // Orange
|
||||
case 9: palindex = 119; shift = 7; break; // Gold
|
||||
case 10: palindex = 111; break; // Yellow
|
||||
case 11: palindex = 191; shift = 7; break; // Emerald
|
||||
case 12: palindex = 175; break; // Green
|
||||
case 13: palindex = 219; break; // Cyan
|
||||
case 14: palindex = 207; shift = 7; break; // Steel
|
||||
case 15: palindex = 230; shift = 7; break; // Periwinkle
|
||||
case 16: palindex = 239; break; // Blue
|
||||
case 17: palindex = 199; shift = 7; break; // Purple
|
||||
case 18: palindex = 255; shift = 7; break; // Lavender
|
||||
case 1: palindex = 31; break; // Black
|
||||
case 2: palindex = 251; break; // Sepia
|
||||
case 3: palindex = 239; break; // Brown
|
||||
case 4: palindex = 215; shift = 7; break; // Pink
|
||||
case 5: palindex = 37; shift = 7; break; // Raspberry
|
||||
case 6: palindex = 47; shift = 7; break; // Red
|
||||
case 7: palindex = 53; shift = 7; break; // Creamsicle
|
||||
case 8: palindex = 63; break; // Orange
|
||||
case 9: palindex = 56; shift = 7; break; // Gold
|
||||
case 10: palindex = 79; shift = 7; break; // Yellow
|
||||
case 11: palindex = 119; shift = 7; break; // Emerald
|
||||
case 12: palindex = 111; break; // Green
|
||||
case 13: palindex = 136; shift = 7; break; // Cyan
|
||||
case 14: palindex = 175; shift = 7; break; // Steel
|
||||
case 15: palindex = 166; shift = 7; break; // Periwinkle
|
||||
case 16: palindex = 159; break; // Blue
|
||||
case 17: palindex = 187; shift = 7; break; // Purple
|
||||
case 18: palindex = 199; shift = 7; break; // Lavender
|
||||
// Default green
|
||||
default: palindex = 175; break;
|
||||
default: palindex = 111; break;
|
||||
}
|
||||
#else
|
||||
switch (color)
|
||||
{
|
||||
case 0: palindex = 15; break; // White
|
||||
case 1: palindex = 31; break; // Gray
|
||||
case 2: palindex = 239; break; // Brown
|
||||
case 3: palindex = 47; break; // Red
|
||||
case 4: palindex = 63; break; // Orange
|
||||
case 5: palindex = 79; shift = 7; break; // Yellow
|
||||
case 6: palindex = 111; break; // Green
|
||||
case 7: palindex = 159; break; // Blue
|
||||
case 8: palindex = 199; shift = 7; break; // Purple
|
||||
case 9: palindex = 187; break; // Magenta
|
||||
case 10: palindex = 139; break; // Aqua
|
||||
// Default green
|
||||
default: palindex = 175; color = 11; break;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (prompt)
|
||||
{
|
||||
|
@ -1115,16 +1087,6 @@ boolean CON_Responder(event_t *ev)
|
|||
else if (key == KEY_KPADSLASH)
|
||||
key = '/';
|
||||
|
||||
// capslock
|
||||
if (key == KEY_CAPSLOCK) // it's a toggle.
|
||||
{
|
||||
if (capslock)
|
||||
capslock = false;
|
||||
else
|
||||
capslock = true;
|
||||
return true;
|
||||
}
|
||||
|
||||
if (key >= 'a' && key <= 'z')
|
||||
{
|
||||
if (capslock ^ shiftdown)
|
||||
|
|
|
@ -1127,7 +1127,8 @@ static inline void CL_DrawConnectionStatus(void)
|
|||
INT32 ccstime = I_GetTime();
|
||||
|
||||
// Draw background fade
|
||||
V_DrawFadeScreen(0xFF00, 16);
|
||||
if (!menuactive) // menu already draws its own fade
|
||||
V_DrawFadeScreen(0xFF00, 16); // force default
|
||||
|
||||
// Draw the bottom box.
|
||||
M_DrawTextBox(BASEVIDWIDTH/2-128-8, BASEVIDHEIGHT-24-8, 32, 1);
|
||||
|
@ -2002,6 +2003,7 @@ static boolean CL_ServerConnectionTicker(boolean viams, const char *tmpsave, tic
|
|||
#ifdef CLIENT_LOADINGSCREEN
|
||||
if (client && cl_mode != CL_CONNECTED && cl_mode != CL_ABORTED)
|
||||
{
|
||||
F_MenuPresTicker(true); // title sky
|
||||
F_TitleScreenTicker(true);
|
||||
F_TitleScreenDrawer();
|
||||
CL_DrawConnectionStatus();
|
||||
|
@ -2612,7 +2614,10 @@ static void Command_Ban(void)
|
|||
else
|
||||
{
|
||||
if (server) // only the server is allowed to do this right now
|
||||
{
|
||||
Ban_Add(COM_Argv(2));
|
||||
D_SaveBan(); // save the ban list
|
||||
}
|
||||
|
||||
if (COM_Argc() == 2)
|
||||
{
|
||||
|
@ -2643,6 +2648,42 @@ static void Command_Ban(void)
|
|||
|
||||
}
|
||||
|
||||
static void Command_BanIP(void)
|
||||
{
|
||||
if (COM_Argc() < 2)
|
||||
{
|
||||
CONS_Printf(M_GetText("banip <ip> <reason>: ban an ip address\n"));
|
||||
return;
|
||||
}
|
||||
|
||||
if (server) // Only the server can use this, otherwise does nothing.
|
||||
{
|
||||
const char *address = (COM_Argv(1));
|
||||
const char *reason;
|
||||
|
||||
if (COM_Argc() == 2)
|
||||
reason = NULL;
|
||||
else
|
||||
reason = COM_Argv(2);
|
||||
|
||||
|
||||
if (I_SetBanAddress && I_SetBanAddress(address, NULL))
|
||||
{
|
||||
if (reason)
|
||||
CONS_Printf("Banned IP address %s for: %s\n", address, reason);
|
||||
else
|
||||
CONS_Printf("Banned IP address %s\n", address);
|
||||
|
||||
Ban_Add(reason);
|
||||
D_SaveBan();
|
||||
}
|
||||
else
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void Command_Kick(void)
|
||||
{
|
||||
if (COM_Argc() < 2)
|
||||
|
@ -2922,6 +2963,7 @@ void D_ClientServerInit(void)
|
|||
COM_AddCommand("getplayernum", Command_GetPlayerNum);
|
||||
COM_AddCommand("kick", Command_Kick);
|
||||
COM_AddCommand("ban", Command_Ban);
|
||||
COM_AddCommand("banip", Command_BanIP);
|
||||
COM_AddCommand("clearbans", Command_ClearBans);
|
||||
COM_AddCommand("showbanlist", Command_ShowBan);
|
||||
COM_AddCommand("reloadbans", Command_ReloadBan);
|
||||
|
@ -4574,7 +4616,7 @@ void TryRunTics(tic_t realtics)
|
|||
|
||||
if (realtics >= 1)
|
||||
{
|
||||
COM_BufExecute();
|
||||
COM_BufTicker();
|
||||
if (mapchangepending)
|
||||
D_MapChange(-1, 0, ultimatemode, false, 2, false, fromlevelselect); // finish the map change
|
||||
}
|
||||
|
|
80
src/d_main.c
80
src/d_main.c
|
@ -157,37 +157,11 @@ void D_PostEvent_end(void) {};
|
|||
#endif
|
||||
|
||||
// modifier keys
|
||||
// Now handled in I_OsPolling
|
||||
UINT8 shiftdown = 0; // 0x1 left, 0x2 right
|
||||
UINT8 ctrldown = 0; // 0x1 left, 0x2 right
|
||||
UINT8 altdown = 0; // 0x1 left, 0x2 right
|
||||
boolean capslock = 0; // gee i wonder what this does.
|
||||
//
|
||||
// D_ModifierKeyResponder
|
||||
// Sets global shift/ctrl/alt variables, never actually eats events
|
||||
//
|
||||
static inline void D_ModifierKeyResponder(event_t *ev)
|
||||
{
|
||||
if (ev->type == ev_keydown || ev->type == ev_console) switch (ev->data1)
|
||||
{
|
||||
case KEY_LSHIFT: shiftdown |= 0x1; return;
|
||||
case KEY_RSHIFT: shiftdown |= 0x2; return;
|
||||
case KEY_LCTRL: ctrldown |= 0x1; return;
|
||||
case KEY_RCTRL: ctrldown |= 0x2; return;
|
||||
case KEY_LALT: altdown |= 0x1; return;
|
||||
case KEY_RALT: altdown |= 0x2; return;
|
||||
default: return;
|
||||
}
|
||||
else if (ev->type == ev_keyup) switch (ev->data1)
|
||||
{
|
||||
case KEY_LSHIFT: shiftdown &= ~0x1; return;
|
||||
case KEY_RSHIFT: shiftdown &= ~0x2; return;
|
||||
case KEY_LCTRL: ctrldown &= ~0x1; return;
|
||||
case KEY_RCTRL: ctrldown &= ~0x2; return;
|
||||
case KEY_LALT: altdown &= ~0x1; return;
|
||||
case KEY_RALT: altdown &= ~0x2; return;
|
||||
default: return;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// D_ProcessEvents
|
||||
|
@ -201,9 +175,6 @@ void D_ProcessEvents(void)
|
|||
{
|
||||
ev = &events[eventtail];
|
||||
|
||||
// Set global shift/ctrl/alt down variables
|
||||
D_ModifierKeyResponder(ev); // never eats events
|
||||
|
||||
// Screenshots over everything so that they can be taken anywhere.
|
||||
if (M_ScreenshotResponder(ev))
|
||||
continue; // ate the event
|
||||
|
@ -234,6 +205,9 @@ void D_ProcessEvents(void)
|
|||
// wipegamestate can be set to -1 to force a wipe on the next draw
|
||||
// added comment : there is a wipe eatch change of the gamestate
|
||||
gamestate_t wipegamestate = GS_LEVEL;
|
||||
// -1: Default; 0-n: Wipe index; INT16_MAX: do not wipe
|
||||
INT16 wipetypepre = -1;
|
||||
INT16 wipetypepost = -1;
|
||||
|
||||
static void D_Display(void)
|
||||
{
|
||||
|
@ -267,7 +241,7 @@ static void D_Display(void)
|
|||
|
||||
// save the current screen if about to wipe
|
||||
wipe = (gamestate != wipegamestate);
|
||||
if (wipe)
|
||||
if (wipe && wipetypepre != INT16_MAX)
|
||||
{
|
||||
// set for all later
|
||||
wipedefindex = gamestate; // wipe_xxx_toblack
|
||||
|
@ -279,27 +253,37 @@ static void D_Display(void)
|
|||
wipedefindex = wipe_multinter_toblack;
|
||||
}
|
||||
|
||||
if (wipetypepre < 0 || !F_WipeExists(wipetypepre))
|
||||
wipetypepre = wipedefs[wipedefindex];
|
||||
|
||||
if (rendermode != render_none)
|
||||
{
|
||||
// Fade to black first
|
||||
if ((wipegamestate != (gamestate_t)-2) // fades to black on its own timing, always
|
||||
&& wipedefs[wipedefindex] != UINT8_MAX)
|
||||
if ((wipegamestate == (gamestate_t)FORCEWIPE ||
|
||||
(wipegamestate != (gamestate_t)FORCEWIPEOFF
|
||||
&& !(gamestate == GS_LEVEL || (gamestate == GS_TITLESCREEN && titlemapinaction)))
|
||||
) // fades to black on its own timing, always
|
||||
&& wipetypepre != UINT8_MAX)
|
||||
{
|
||||
F_WipeStartScreen();
|
||||
V_DrawFill(0, 0, BASEVIDWIDTH, BASEVIDHEIGHT, 31);
|
||||
F_WipeEndScreen();
|
||||
F_RunWipe(wipedefs[wipedefindex], gamestate != GS_TIMEATTACK);
|
||||
F_RunWipe(wipetypepre, gamestate != GS_TIMEATTACK && gamestate != GS_TITLESCREEN);
|
||||
}
|
||||
|
||||
F_WipeStartScreen();
|
||||
}
|
||||
|
||||
wipetypepre = -1;
|
||||
}
|
||||
else
|
||||
wipetypepre = -1;
|
||||
|
||||
// do buffered drawing
|
||||
switch (gamestate)
|
||||
{
|
||||
case GS_TITLESCREEN:
|
||||
if (!titlemapinaction) {
|
||||
if (!titlemapinaction || !curbghide) {
|
||||
F_TitleScreenDrawer();
|
||||
break;
|
||||
}
|
||||
|
@ -361,14 +345,14 @@ static void D_Display(void)
|
|||
|
||||
// STUPID race condition...
|
||||
if (wipegamestate == GS_INTRO && gamestate == GS_TITLESCREEN)
|
||||
wipegamestate = -2;
|
||||
wipegamestate = FORCEWIPEOFF;
|
||||
else
|
||||
{
|
||||
wipegamestate = gamestate;
|
||||
|
||||
// clean up border stuff
|
||||
// see if the border needs to be initially drawn
|
||||
if (gamestate == GS_LEVEL || (gamestate == GS_TITLESCREEN && titlemapinaction))
|
||||
if (gamestate == GS_LEVEL || (gamestate == GS_TITLESCREEN && titlemapinaction && curbghide))
|
||||
{
|
||||
// draw the view directly
|
||||
|
||||
|
@ -477,18 +461,25 @@ static void D_Display(void)
|
|||
//
|
||||
// wipe update
|
||||
//
|
||||
if (wipe)
|
||||
if (wipe && wipetypepost != INT16_MAX)
|
||||
{
|
||||
// note: moved up here because NetUpdate does input changes
|
||||
// and input during wipe tends to mess things up
|
||||
wipedefindex += WIPEFINALSHIFT;
|
||||
|
||||
if (wipetypepost < 0 || !F_WipeExists(wipetypepost))
|
||||
wipetypepost = wipedefs[wipedefindex];
|
||||
|
||||
if (rendermode != render_none)
|
||||
{
|
||||
F_WipeEndScreen();
|
||||
F_RunWipe(wipedefs[wipedefindex], gamestate != GS_TIMEATTACK);
|
||||
F_RunWipe(wipetypepost, gamestate != GS_TIMEATTACK && gamestate != GS_TITLESCREEN);
|
||||
}
|
||||
|
||||
wipetypepost = -1;
|
||||
}
|
||||
else
|
||||
wipetypepost = -1;
|
||||
|
||||
NetUpdate(); // send out any new accumulation
|
||||
|
||||
|
@ -741,8 +732,11 @@ void D_StartTitle(void)
|
|||
gametype = GT_COOP;
|
||||
paused = false;
|
||||
advancedemo = false;
|
||||
F_InitMenuPresValues();
|
||||
F_StartTitleScreen();
|
||||
|
||||
currentMenu = &MainDef; // reset the current menu ID
|
||||
|
||||
// Reset the palette
|
||||
if (rendermode != render_none)
|
||||
V_SetPaletteLump("PLAYPAL");
|
||||
|
@ -1114,6 +1108,13 @@ void D_SRB2Main(void)
|
|||
// adapt tables to SRB2's needs, including extra slots for dehacked file support
|
||||
P_PatchInfoTables();
|
||||
|
||||
// initiate menu metadata before SOCcing them
|
||||
M_InitMenuPresTables();
|
||||
|
||||
// init title screen display params
|
||||
if (M_CheckParm("-connect"))
|
||||
F_InitMenuPresValues();
|
||||
|
||||
//---------------------------------------------------- READY TIME
|
||||
// we need to check for dedicated before initialization of some subsystems
|
||||
|
||||
|
@ -1400,6 +1401,7 @@ void D_SRB2Main(void)
|
|||
}
|
||||
else if (M_CheckParm("-skipintro"))
|
||||
{
|
||||
F_InitMenuPresValues();
|
||||
F_StartTitleScreen();
|
||||
}
|
||||
else
|
||||
|
|
|
@ -4100,7 +4100,7 @@ static void Command_ExitLevel_f(void)
|
|||
CONS_Printf(M_GetText("This only works in a netgame.\n"));
|
||||
else if (!(server || (IsPlayerAdmin(consoleplayer))))
|
||||
CONS_Printf(M_GetText("Only the server or a remote admin can use this.\n"));
|
||||
else if (gamestate != GS_LEVEL || demoplayback)
|
||||
else if (( gamestate != GS_LEVEL && gamestate != GS_CREDITS ) || demoplayback)
|
||||
CONS_Printf(M_GetText("You must be in a level to use this.\n"));
|
||||
else
|
||||
SendNetXCmd(XD_EXITLEVEL, NULL, 0);
|
||||
|
|
|
@ -232,7 +232,8 @@ typedef enum
|
|||
// Specific level gimmicks.
|
||||
CR_ZOOMTUBE,
|
||||
CR_ROPEHANG,
|
||||
CR_MACESPIN
|
||||
CR_MACESPIN,
|
||||
CR_MINECART
|
||||
} carrytype_t; // pw_carry
|
||||
|
||||
// Player powers. (don't edit this comment)
|
||||
|
|
646
src/dehacked.c
646
src/dehacked.c
|
@ -72,6 +72,7 @@ static sfxenum_t get_sfx(const char *word);
|
|||
static UINT16 get_mus(const char *word, UINT8 dehacked_mode);
|
||||
#endif
|
||||
static hudnum_t get_huditem(const char *word);
|
||||
static menutype_t get_menutype(const char *word);
|
||||
#ifndef HAVE_BLUA
|
||||
static powertype_t get_power(const char *word);
|
||||
#endif
|
||||
|
@ -1322,6 +1323,8 @@ static void readlevelheader(MYFILE *f, INT32 num)
|
|||
else
|
||||
mapheaderinfo[num-1]->menuflags &= ~LF2_WIDEICON;
|
||||
}
|
||||
else if (fastcmp(word, "STARTRINGS"))
|
||||
mapheaderinfo[num-1]->startrings = (UINT16)i;
|
||||
else
|
||||
deh_warning("Level header %d: unknown word '%s'", num, word);
|
||||
}
|
||||
|
@ -1789,15 +1792,23 @@ static void readtextpromptpage(MYFILE *f, INT32 num, INT32 pagenum)
|
|||
if (i == 0 || fastcmp(word2, "WHITE")) backcolor = 0;
|
||||
else if (i == 1 || fastcmp(word2, "GRAY") || fastcmp(word2, "GREY") ||
|
||||
fastcmp(word2, "BLACK")) backcolor = 1;
|
||||
else if (i == 2 || fastcmp(word2, "BROWN")) backcolor = 2;
|
||||
else if (i == 3 || fastcmp(word2, "RED")) backcolor = 3;
|
||||
else if (i == 4 || fastcmp(word2, "ORANGE")) backcolor = 4;
|
||||
else if (i == 5 || fastcmp(word2, "YELLOW")) backcolor = 5;
|
||||
else if (i == 6 || fastcmp(word2, "GREEN")) backcolor = 6;
|
||||
else if (i == 7 || fastcmp(word2, "BLUE")) backcolor = 7;
|
||||
else if (i == 8 || fastcmp(word2, "PURPLE")) backcolor = 8;
|
||||
else if (i == 9 || fastcmp(word2, "MAGENTA")) backcolor = 9;
|
||||
else if (i == 10 || fastcmp(word2, "AQUA")) backcolor = 10;
|
||||
else if (i == 2 || fastcmp(word2, "SEPIA")) backcolor = 2;
|
||||
else if (i == 3 || fastcmp(word2, "BROWN")) backcolor = 3;
|
||||
else if (i == 4 || fastcmp(word2, "PINK")) backcolor = 4;
|
||||
else if (i == 5 || fastcmp(word2, "RASPBERRY")) backcolor = 5;
|
||||
else if (i == 6 || fastcmp(word2, "RED")) backcolor = 6;
|
||||
else if (i == 7 || fastcmp(word2, "CREAMSICLE")) backcolor = 7;
|
||||
else if (i == 8 || fastcmp(word2, "ORANGE")) backcolor = 8;
|
||||
else if (i == 9 || fastcmp(word2, "GOLD")) backcolor = 9;
|
||||
else if (i == 10 || fastcmp(word2, "YELLOW")) backcolor = 10;
|
||||
else if (i == 11 || fastcmp(word2, "EMERALD")) backcolor = 11;
|
||||
else if (i == 12 || fastcmp(word2, "GREEN")) backcolor = 12;
|
||||
else if (i == 13 || fastcmp(word2, "CYAN") || fastcmp(word2, "AQUA")) backcolor = 13;
|
||||
else if (i == 14 || fastcmp(word2, "STEEL")) backcolor = 14;
|
||||
else if (i == 15 || fastcmp(word2, "PERIWINKLE")) backcolor = 15;
|
||||
else if (i == 16 || fastcmp(word2, "BLUE")) backcolor = 16;
|
||||
else if (i == 17 || fastcmp(word2, "PURPLE")) backcolor = 17;
|
||||
else if (i == 18 || fastcmp(word2, "LAVENDER")) backcolor = 18;
|
||||
else if (i < 0) backcolor = INT32_MAX; // CONS_BACKCOLOR user-configured
|
||||
else backcolor = 1; // default gray
|
||||
textprompts[num]->page[pagenum].backcolor = backcolor;
|
||||
|
@ -1931,6 +1942,161 @@ static void readtextprompt(MYFILE *f, INT32 num)
|
|||
Z_Free(s);
|
||||
}
|
||||
|
||||
static void readmenu(MYFILE *f, INT32 num)
|
||||
{
|
||||
char *s = Z_Malloc(MAXLINELEN, PU_STATIC, NULL);
|
||||
char *word = s;
|
||||
char *word2;
|
||||
char *tmp;
|
||||
INT32 value;
|
||||
|
||||
do
|
||||
{
|
||||
if (myfgets(s, MAXLINELEN, f))
|
||||
{
|
||||
if (s[0] == '\n')
|
||||
break;
|
||||
|
||||
// First remove trailing newline, if there is one
|
||||
tmp = strchr(s, '\n');
|
||||
if (tmp)
|
||||
*tmp = '\0';
|
||||
|
||||
tmp = strchr(s, '#');
|
||||
if (tmp)
|
||||
*tmp = '\0';
|
||||
if (s == tmp)
|
||||
continue; // Skip comment lines, but don't break.
|
||||
|
||||
// Get the part before the " = "
|
||||
tmp = strchr(s, '=');
|
||||
if (tmp)
|
||||
*(tmp-1) = '\0';
|
||||
else
|
||||
break;
|
||||
strupr(word);
|
||||
|
||||
// Now get the part after
|
||||
word2 = (tmp += 2);
|
||||
strupr(word2);
|
||||
|
||||
value = atoi(word2); // used for numerical settings
|
||||
|
||||
if (fastcmp(word, "BACKGROUNDNAME"))
|
||||
{
|
||||
strncpy(menupres[num].bgname, word2, 8);
|
||||
titlechanged = true;
|
||||
}
|
||||
else if (fastcmp(word, "HIDEBACKGROUND"))
|
||||
{
|
||||
menupres[num].bghide = (boolean)(value || word2[0] == 'T' || word2[0] == 'Y');
|
||||
titlechanged = true;
|
||||
}
|
||||
else if (fastcmp(word, "BACKGROUNDCOLOR"))
|
||||
{
|
||||
menupres[num].bgcolor = get_number(word2);
|
||||
titlechanged = true;
|
||||
}
|
||||
else if (fastcmp(word, "HIDETITLEPICS") || fastcmp(word, "HIDEPICS"))
|
||||
{
|
||||
// true by default, except MM_MAIN
|
||||
menupres[num].hidetitlepics = (boolean)(value || word2[0] == 'T' || word2[0] == 'Y');
|
||||
titlechanged = true;
|
||||
}
|
||||
else if (fastcmp(word, "TITLESCROLLSPEED") || fastcmp(word, "TITLESCROLLXSPEED")
|
||||
|| fastcmp(word, "SCROLLSPEED") || fastcmp(word, "SCROLLXSPEED"))
|
||||
{
|
||||
menupres[num].titlescrollxspeed = get_number(word2);
|
||||
titlechanged = true;
|
||||
}
|
||||
else if (fastcmp(word, "TITLESCROLLYSPEED") || fastcmp(word, "SCROLLYSPEED"))
|
||||
{
|
||||
menupres[num].titlescrollyspeed = get_number(word2);
|
||||
titlechanged = true;
|
||||
}
|
||||
else if (fastcmp(word, "MUSIC"))
|
||||
{
|
||||
strncpy(menupres[num].musname, word2, 7);
|
||||
menupres[num].musname[6] = 0;
|
||||
titlechanged = true;
|
||||
}
|
||||
#ifdef MUSICSLOT_COMPATIBILITY
|
||||
else if (fastcmp(word, "MUSICSLOT"))
|
||||
{
|
||||
value = get_mus(word2, true);
|
||||
if (value && value <= 1035)
|
||||
snprintf(menupres[num].musname, 7, "%sM", G_BuildMapName(value));
|
||||
else if (value && value <= 1050)
|
||||
strncpy(menupres[num].musname, compat_special_music_slots[value - 1036], 7);
|
||||
else
|
||||
menupres[num].musname[0] = 0; // becomes empty string
|
||||
menupres[num].musname[6] = 0;
|
||||
titlechanged = true;
|
||||
}
|
||||
#endif
|
||||
else if (fastcmp(word, "MUSICTRACK"))
|
||||
{
|
||||
menupres[num].mustrack = ((UINT16)value - 1);
|
||||
titlechanged = true;
|
||||
}
|
||||
else if (fastcmp(word, "MUSICLOOP"))
|
||||
{
|
||||
// true by default except MM_MAIN
|
||||
menupres[num].muslooping = (value || word2[0] == 'T' || word2[0] == 'Y');
|
||||
titlechanged = true;
|
||||
}
|
||||
else if (fastcmp(word, "NOMUSIC"))
|
||||
{
|
||||
menupres[num].musstop = (value || word2[0] == 'T' || word2[0] == 'Y');
|
||||
titlechanged = true;
|
||||
}
|
||||
else if (fastcmp(word, "IGNOREMUSIC"))
|
||||
{
|
||||
menupres[num].musignore = (value || word2[0] == 'T' || word2[0] == 'Y');
|
||||
titlechanged = true;
|
||||
}
|
||||
else if (fastcmp(word, "FADESTRENGTH"))
|
||||
{
|
||||
// one-based, <= 0 means use default value. 1-32
|
||||
menupres[num].fadestrength = get_number(word2)-1;
|
||||
titlechanged = true;
|
||||
}
|
||||
else if (fastcmp(word, "NOENTERBUBBLE"))
|
||||
{
|
||||
menupres[num].enterbubble = !(value || word2[0] == 'T' || word2[0] == 'Y');
|
||||
titlechanged = true;
|
||||
}
|
||||
else if (fastcmp(word, "NOEXITBUBBLE"))
|
||||
{
|
||||
menupres[num].exitbubble = !(value || word2[0] == 'T' || word2[0] == 'Y');
|
||||
titlechanged = true;
|
||||
}
|
||||
else if (fastcmp(word, "ENTERTAG"))
|
||||
{
|
||||
menupres[num].entertag = get_number(word2);
|
||||
titlechanged = true;
|
||||
}
|
||||
else if (fastcmp(word, "EXITTAG"))
|
||||
{
|
||||
menupres[num].exittag = get_number(word2);
|
||||
titlechanged = true;
|
||||
}
|
||||
else if (fastcmp(word, "ENTERWIPE"))
|
||||
{
|
||||
menupres[num].enterwipe = get_number(word2);
|
||||
titlechanged = true;
|
||||
}
|
||||
else if (fastcmp(word, "EXITWIPE"))
|
||||
{
|
||||
menupres[num].exitwipe = get_number(word2);
|
||||
titlechanged = true;
|
||||
}
|
||||
}
|
||||
} while (!myfeof(f)); // finish when the line is empty
|
||||
|
||||
Z_Free(s);
|
||||
}
|
||||
|
||||
static void readhuditem(MYFILE *f, INT32 num)
|
||||
{
|
||||
char *s = Z_Malloc(MAXLINELEN, PU_STATIC, NULL);
|
||||
|
@ -2109,6 +2275,9 @@ static actionpointer_t actionpointers[] =
|
|||
{{A_CrushclawLaunch}, "A_CRUSHCLAWLAUNCH"},
|
||||
{{A_VultureVtol}, "A_VULTUREVTOL"},
|
||||
{{A_VultureCheck}, "A_VULTURECHECK"},
|
||||
{{A_VultureHover}, "A_VULTUREHOVER"},
|
||||
{{A_VultureBlast}, "A_VULTUREBLAST"},
|
||||
{{A_VultureFly}, "A_VULTUREFLY"},
|
||||
{{A_SkimChase}, "A_SKIMCHASE"},
|
||||
{{A_1upThinker}, "A_1UPTHINKER"},
|
||||
{{A_SkullAttack}, "A_SKULLATTACK"},
|
||||
|
@ -2225,8 +2394,30 @@ static actionpointer_t actionpointers[] =
|
|||
{{A_ParentTriesToSleep}, "A_PARENTTRIESTOSLEEP"},
|
||||
{{A_CryingToMomma}, "A_CRYINGTOMOMMA"},
|
||||
{{A_CheckFlags2}, "A_CHECKFLAGS2"},
|
||||
|
||||
{{NULL}, "NONE"},
|
||||
{{A_Boss5FindWaypoint}, "A_BOSS5FINDWAYPOINT"},
|
||||
{{A_DoNPCSkid}, "A_DONPCSKID"},
|
||||
{{A_DoNPCPain}, "A_DONPCPAIN"},
|
||||
{{A_PrepareRepeat}, "A_PREPAREREPEAT"},
|
||||
{{A_Boss5ExtraRepeat}, "A_BOSS5EXTRAREPEAT"},
|
||||
{{A_Boss5Calm}, "A_BOSS5CALM"},
|
||||
{{A_Boss5CheckOnGround}, "A_BOSS5CHECKONGROUND"},
|
||||
{{A_Boss5CheckFalling}, "A_BOSS5CHECKFALLING"},
|
||||
{{A_Boss5PinchShot}, "A_BOSS5PINCHSHOT"},
|
||||
{{A_Boss5MakeItRain}, "A_BOSS5MAKEITRAIN"},
|
||||
{{A_LookForBetter}, "A_LOOKFORBETTER"},
|
||||
{{A_Boss5BombExplode}, "A_BOSS5BOMBEXPLODE"},
|
||||
{{A_DustDevilThink}, "A_DUSTDEVILTHINK"},
|
||||
{{A_TNTExplode}, "A_TNTEXPLODE"},
|
||||
{{A_DebrisRandom}, "A_DEBRISRANDOM"},
|
||||
{{A_TrainCameo}, "A_TRAINCAMEO"},
|
||||
{{A_TrainCameo2}, "A_TRAINCAMEO2"},
|
||||
{{A_CanarivoreGas}, "A_CANARIVOREGAS"},
|
||||
{{A_KillSegments}, "A_KILLSEGMENTS"},
|
||||
{{A_SnapperSpawn}, "A_SNAPPERSPAWN"},
|
||||
{{A_SnapperThinker}, "A_SNAPPERTHINKER"},
|
||||
{{A_SaloonDoorSpawn}, "A_SALOONDOORSPAWN"},
|
||||
{{A_MinecartSparkThink}, "A_MINECARTSPARKTHINK"},
|
||||
{{NULL}, "NONE"},
|
||||
|
||||
// This NULL entry must be the last in the list
|
||||
{{NULL}, NULL},
|
||||
|
@ -3174,9 +3365,14 @@ static void readmaincfg(MYFILE *f)
|
|||
hidetitlepics = (boolean)(value || word2[0] == 'T' || word2[0] == 'Y');
|
||||
titlechanged = true;
|
||||
}
|
||||
else if (fastcmp(word, "TITLESCROLLSPEED"))
|
||||
else if (fastcmp(word, "TITLESCROLLSPEED") || fastcmp(word, "TITLESCROLLXSPEED"))
|
||||
{
|
||||
titlescrollspeed = get_number(word2);
|
||||
titlescrollxspeed = get_number(word2);
|
||||
titlechanged = true;
|
||||
}
|
||||
else if (fastcmp(word, "TITLESCROLLYSPEED"))
|
||||
{
|
||||
titlescrollyspeed = get_number(word2);
|
||||
titlechanged = true;
|
||||
}
|
||||
else if (fastcmp(word, "CREDITSCUTSCENE"))
|
||||
|
@ -3724,6 +3920,19 @@ static void DEH_LoadDehackedFile(MYFILE *f, boolean mainfile)
|
|||
ignorelines(f);
|
||||
}
|
||||
}
|
||||
else if (fastcmp(word, "MENU"))
|
||||
{
|
||||
if (i == 0 && word2[0] != '0') // If word2 isn't a number
|
||||
i = get_menutype(word2); // find a huditem by name
|
||||
if (i >= 1 && i < NUMMENUTYPES)
|
||||
readmenu(f, i);
|
||||
else
|
||||
{
|
||||
// zero-based, but let's start at 1
|
||||
deh_warning("Menu number %d out of range (1 - %d)", i, NUMMENUTYPES-1);
|
||||
ignorelines(f);
|
||||
}
|
||||
}
|
||||
else if (fastcmp(word, "UNLOCKABLE"))
|
||||
{
|
||||
if (!mainfile && !gamedataadded)
|
||||
|
@ -4195,15 +4404,10 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
|||
|
||||
// Vulture
|
||||
"S_VULTURE_STND",
|
||||
"S_VULTURE_VTOL1",
|
||||
"S_VULTURE_VTOL2",
|
||||
"S_VULTURE_VTOL3",
|
||||
"S_VULTURE_VTOL4",
|
||||
"S_VULTURE_DRIFT",
|
||||
"S_VULTURE_ZOOM1",
|
||||
"S_VULTURE_ZOOM2",
|
||||
"S_VULTURE_ZOOM3",
|
||||
"S_VULTURE_ZOOM4",
|
||||
"S_VULTURE_ZOOM5",
|
||||
"S_VULTURE_STUNNED",
|
||||
|
||||
// Pointy
|
||||
"S_POINTY1",
|
||||
|
@ -4254,15 +4458,31 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
|||
"S_EGGSHIELDBREAK",
|
||||
|
||||
// Green Snapper
|
||||
"S_SNAPPER_SPAWN",
|
||||
"S_SNAPPER_SPAWN2",
|
||||
"S_GSNAPPER_STND",
|
||||
"S_GSNAPPER1",
|
||||
"S_GSNAPPER2",
|
||||
"S_GSNAPPER3",
|
||||
"S_GSNAPPER4",
|
||||
"S_SNAPPER_XPLD",
|
||||
"S_SNAPPER_LEG",
|
||||
"S_SNAPPER_LEGRAISE",
|
||||
"S_SNAPPER_HEAD",
|
||||
|
||||
// Minus
|
||||
"S_MINUS_INIT",
|
||||
"S_MINUS_STND",
|
||||
"S_MINUS_DIGGING",
|
||||
"S_MINUS_DIGGING1",
|
||||
"S_MINUS_DIGGING2",
|
||||
"S_MINUS_DIGGING3",
|
||||
"S_MINUS_DIGGING4",
|
||||
"S_MINUS_BURST0",
|
||||
"S_MINUS_BURST1",
|
||||
"S_MINUS_BURST2",
|
||||
"S_MINUS_BURST3",
|
||||
"S_MINUS_BURST4",
|
||||
"S_MINUS_BURST5",
|
||||
"S_MINUS_POPUP",
|
||||
"S_MINUS_UPWARD1",
|
||||
"S_MINUS_UPWARD2",
|
||||
|
@ -4281,6 +4501,15 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
|||
"S_MINUS_DOWNWARD7",
|
||||
"S_MINUS_DOWNWARD8",
|
||||
|
||||
// Minus dirt
|
||||
"S_MINUSDIRT1",
|
||||
"S_MINUSDIRT2",
|
||||
"S_MINUSDIRT3",
|
||||
"S_MINUSDIRT4",
|
||||
"S_MINUSDIRT5",
|
||||
"S_MINUSDIRT6",
|
||||
"S_MINUSDIRT7",
|
||||
|
||||
// Spring Shell
|
||||
"S_SSHELL_STND",
|
||||
"S_SSHELL_RUN1",
|
||||
|
@ -4308,6 +4537,28 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
|||
"S_UNIDUS_RUN",
|
||||
"S_UNIDUS_BALL",
|
||||
|
||||
// Canarivore
|
||||
"S_CANARIVORE_LOOK",
|
||||
"S_CANARIVORE_AWAKEN1",
|
||||
"S_CANARIVORE_AWAKEN2",
|
||||
"S_CANARIVORE_AWAKEN3",
|
||||
"S_CANARIVORE_GAS1",
|
||||
"S_CANARIVORE_GAS2",
|
||||
"S_CANARIVORE_GAS3",
|
||||
"S_CANARIVORE_GAS4",
|
||||
"S_CANARIVORE_GAS5",
|
||||
"S_CANARIVORE_GASREPEAT",
|
||||
"S_CANARIVORE_CLOSE1",
|
||||
"S_CANARIVORE_CLOSE2",
|
||||
"S_CANARIVOREGAS_1",
|
||||
"S_CANARIVOREGAS_2",
|
||||
"S_CANARIVOREGAS_3",
|
||||
"S_CANARIVOREGAS_4",
|
||||
"S_CANARIVOREGAS_5",
|
||||
"S_CANARIVOREGAS_6",
|
||||
"S_CANARIVOREGAS_7",
|
||||
"S_CANARIVOREGAS_8",
|
||||
|
||||
// Boss Explosion
|
||||
"S_BOSSEXPLODE",
|
||||
|
||||
|
@ -4530,6 +4781,96 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
|||
"S_JETFLAME1",
|
||||
"S_JETFLAME2",
|
||||
|
||||
// Boss 5
|
||||
"S_FANG_IDLE1",
|
||||
"S_FANG_IDLE2",
|
||||
"S_FANG_IDLE3",
|
||||
"S_FANG_IDLE4",
|
||||
"S_FANG_IDLE5",
|
||||
"S_FANG_IDLE6",
|
||||
"S_FANG_IDLE7",
|
||||
"S_FANG_IDLE8",
|
||||
"S_FANG_PAIN1",
|
||||
"S_FANG_PAIN2",
|
||||
"S_FANG_PATHINGSTART1",
|
||||
"S_FANG_PATHINGSTART2",
|
||||
"S_FANG_PATHING",
|
||||
"S_FANG_BOUNCE1",
|
||||
"S_FANG_BOUNCE2",
|
||||
"S_FANG_BOUNCE3",
|
||||
"S_FANG_BOUNCE4",
|
||||
"S_FANG_FALL1",
|
||||
"S_FANG_FALL2",
|
||||
"S_FANG_CHECKPATH1",
|
||||
"S_FANG_CHECKPATH2",
|
||||
"S_FANG_PATHINGCONT1",
|
||||
"S_FANG_PATHINGCONT2",
|
||||
"S_FANG_PATHINGCONT3",
|
||||
"S_FANG_SKID1",
|
||||
"S_FANG_SKID2",
|
||||
"S_FANG_SKID3",
|
||||
"S_FANG_CHOOSEATTACK",
|
||||
"S_FANG_FIRESTART1",
|
||||
"S_FANG_FIRESTART2",
|
||||
"S_FANG_FIRE1",
|
||||
"S_FANG_FIRE2",
|
||||
"S_FANG_FIRE3",
|
||||
"S_FANG_FIRE4",
|
||||
"S_FANG_FIREREPEAT",
|
||||
"S_FANG_LOBSHOT1",
|
||||
"S_FANG_LOBSHOT2",
|
||||
"S_FANG_WAIT1",
|
||||
"S_FANG_WAIT2",
|
||||
"S_FANG_WALLHIT",
|
||||
"S_FANG_PINCHPATHINGSTART1",
|
||||
"S_FANG_PINCHPATHINGSTART2",
|
||||
"S_FANG_PINCHPATHING",
|
||||
"S_FANG_PINCHBOUNCE1",
|
||||
"S_FANG_PINCHBOUNCE2",
|
||||
"S_FANG_PINCHBOUNCE3",
|
||||
"S_FANG_PINCHBOUNCE4",
|
||||
"S_FANG_PINCHFALL1",
|
||||
"S_FANG_PINCHFALL2",
|
||||
"S_FANG_PINCHSKID1",
|
||||
"S_FANG_PINCHSKID2",
|
||||
"S_FANG_PINCHLOBSHOT1",
|
||||
"S_FANG_PINCHLOBSHOT2",
|
||||
"S_FANG_PINCHLOBSHOT3",
|
||||
"S_FANG_PINCHLOBSHOT4",
|
||||
"S_FANG_DIE1",
|
||||
"S_FANG_DIE2",
|
||||
"S_FANG_DIE3",
|
||||
"S_FANG_DIE4",
|
||||
"S_FANG_DIE5",
|
||||
"S_FANG_DIE6",
|
||||
"S_FANG_DIE7",
|
||||
"S_FANG_DIE8",
|
||||
"S_FANG_FLEEPATHING1",
|
||||
"S_FANG_FLEEPATHING2",
|
||||
"S_FANG_FLEEBOUNCE1",
|
||||
"S_FANG_FLEEBOUNCE2",
|
||||
"S_FANG_KO",
|
||||
|
||||
"S_FBOMB1",
|
||||
"S_FBOMB2",
|
||||
"S_FBOMB_EXPL1",
|
||||
"S_FBOMB_EXPL2",
|
||||
"S_FBOMB_EXPL3",
|
||||
"S_FBOMB_EXPL4",
|
||||
"S_FBOMB_EXPL5",
|
||||
"S_FBOMB_EXPL6",
|
||||
"S_TNTDUST_1",
|
||||
"S_TNTDUST_2",
|
||||
"S_TNTDUST_3",
|
||||
"S_TNTDUST_4",
|
||||
"S_TNTDUST_5",
|
||||
"S_TNTDUST_6",
|
||||
"S_TNTDUST_7",
|
||||
"S_TNTDUST_8",
|
||||
"S_FSGNA",
|
||||
"S_FSGNB",
|
||||
"S_FSGNC",
|
||||
|
||||
// Black Eggman (Boss 7)
|
||||
"S_BLACKEGG_STND",
|
||||
"S_BLACKEGG_STND2",
|
||||
|
@ -5394,6 +5735,95 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
|||
"S_CACTI2",
|
||||
"S_CACTI3",
|
||||
"S_CACTI4",
|
||||
"S_CACTI5",
|
||||
"S_CACTI6",
|
||||
"S_CACTI7",
|
||||
"S_CACTI8",
|
||||
"S_CACTI9",
|
||||
|
||||
// Warning signs sprites
|
||||
"S_ARIDSIGN_CAUTION",
|
||||
"S_ARIDSIGN_CACTI",
|
||||
"S_ARIDSIGN_SHARPTURN",
|
||||
|
||||
// Oil lamp
|
||||
"S_OILLAMP",
|
||||
"S_OILLAMPFLARE",
|
||||
|
||||
// TNT barrel
|
||||
"S_TNTBARREL_STND1",
|
||||
"S_TNTBARREL_EXPL1",
|
||||
"S_TNTBARREL_EXPL2",
|
||||
"S_TNTBARREL_EXPL3",
|
||||
"S_TNTBARREL_EXPL4",
|
||||
"S_TNTBARREL_EXPL5",
|
||||
"S_TNTBARREL_EXPL6",
|
||||
"S_TNTBARREL_FLYING",
|
||||
|
||||
// TNT proximity shell
|
||||
"S_PROXIMITY_TNT",
|
||||
"S_PROXIMITY_TNT_TRIGGER1",
|
||||
"S_PROXIMITY_TNT_TRIGGER2",
|
||||
"S_PROXIMITY_TNT_TRIGGER3",
|
||||
"S_PROXIMITY_TNT_TRIGGER4",
|
||||
"S_PROXIMITY_TNT_TRIGGER5",
|
||||
"S_PROXIMITY_TNT_TRIGGER6",
|
||||
"S_PROXIMITY_TNT_TRIGGER7",
|
||||
"S_PROXIMITY_TNT_TRIGGER8",
|
||||
"S_PROXIMITY_TNT_TRIGGER9",
|
||||
"S_PROXIMITY_TNT_TRIGGER10",
|
||||
"S_PROXIMITY_TNT_TRIGGER11",
|
||||
"S_PROXIMITY_TNT_TRIGGER12",
|
||||
"S_PROXIMITY_TNT_TRIGGER13",
|
||||
"S_PROXIMITY_TNT_TRIGGER14",
|
||||
"S_PROXIMITY_TNT_TRIGGER15",
|
||||
"S_PROXIMITY_TNT_TRIGGER16",
|
||||
"S_PROXIMITY_TNT_TRIGGER17",
|
||||
"S_PROXIMITY_TNT_TRIGGER18",
|
||||
"S_PROXIMITY_TNT_TRIGGER19",
|
||||
"S_PROXIMITY_TNT_TRIGGER20",
|
||||
"S_PROXIMITY_TNT_TRIGGER21",
|
||||
"S_PROXIMITY_TNT_TRIGGER22",
|
||||
"S_PROXIMITY_TNT_TRIGGER23",
|
||||
|
||||
// Dust devil
|
||||
"S_DUSTDEVIL",
|
||||
"S_DUSTLAYER1",
|
||||
"S_DUSTLAYER2",
|
||||
"S_DUSTLAYER3",
|
||||
"S_DUSTLAYER4",
|
||||
"S_DUSTLAYER5",
|
||||
"S_ARIDDUST1",
|
||||
"S_ARIDDUST2",
|
||||
"S_ARIDDUST3",
|
||||
|
||||
// Minecart
|
||||
"S_MINECART_IDLE",
|
||||
"S_MINECART_DTH1",
|
||||
"S_MINECARTEND",
|
||||
"S_MINECARTSEG_FRONT",
|
||||
"S_MINECARTSEG_BACK",
|
||||
"S_MINECARTSEG_LEFT",
|
||||
"S_MINECARTSEG_RIGHT",
|
||||
"S_MINECARTSIDEMARK1",
|
||||
"S_MINECARTSIDEMARK2",
|
||||
"S_MINECARTSPARK",
|
||||
|
||||
// Saloon door
|
||||
"S_SALOONDOOR",
|
||||
"S_SALOONDOORTHINKER",
|
||||
|
||||
// Train cameo
|
||||
"S_TRAINCAMEOSPAWNER_1",
|
||||
"S_TRAINCAMEOSPAWNER_2",
|
||||
"S_TRAINCAMEOSPAWNER_3",
|
||||
"S_TRAINCAMEOSPAWNER_4",
|
||||
"S_TRAINCAMEOSPAWNER_5",
|
||||
"S_TRAINPUFFMAKER",
|
||||
|
||||
// Train
|
||||
"S_TRAINDUST",
|
||||
"S_TRAINSTEAM",
|
||||
|
||||
// Flame jet
|
||||
"S_FLAMEJETSTND",
|
||||
|
@ -6717,6 +7147,8 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
|||
"S_DUST3",
|
||||
"S_DUST4",
|
||||
|
||||
"S_WOODDEBRIS",
|
||||
|
||||
"S_ROCKSPAWN",
|
||||
|
||||
"S_ROCKCRUMBLEA",
|
||||
|
@ -6780,11 +7212,16 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
|
|||
"MT_EGGGUARD", // Egg Guard
|
||||
"MT_EGGSHIELD", // Egg Guard's shield
|
||||
"MT_GSNAPPER", // Green Snapper
|
||||
"MT_SNAPPER_LEG", // Green Snapper leg
|
||||
"MT_SNAPPER_HEAD", // Green Snapper head
|
||||
"MT_MINUS", // Minus
|
||||
"MT_MINUSDIRT", // Minus dirt
|
||||
"MT_SPRINGSHELL", // Spring Shell
|
||||
"MT_YELLOWSHELL", // Spring Shell (yellow)
|
||||
"MT_UNIDUS", // Unidus
|
||||
"MT_UNIBALL", // Unidus Ball
|
||||
"MT_CANARIVORE", // Canarivore
|
||||
"MT_CANARIVORE_GAS", // Canarivore gas
|
||||
|
||||
// Generic Boss Items
|
||||
"MT_BOSSEXPLODE",
|
||||
|
@ -6820,6 +7257,14 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
|
|||
"MT_EGGMOBILE4_MACE",
|
||||
"MT_JETFLAME",
|
||||
|
||||
// Boss 5
|
||||
"MT_FANG",
|
||||
"MT_FBOMB",
|
||||
"MT_TNTDUST", // also used by barrel
|
||||
"MT_FSGNA",
|
||||
"MT_FSGNB",
|
||||
"MT_FANGWAYPOINT",
|
||||
|
||||
// Black Eggman (Boss 7)
|
||||
"MT_BLACKEGGMAN",
|
||||
"MT_BLACKEGGMAN_HELPER",
|
||||
|
@ -7067,6 +7512,34 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
|
|||
"MT_CACTI2",
|
||||
"MT_CACTI3",
|
||||
"MT_CACTI4",
|
||||
"MT_CACTI5",
|
||||
"MT_CACTI6",
|
||||
"MT_CACTI7",
|
||||
"MT_CACTI8",
|
||||
"MT_CACTI9",
|
||||
"MT_ARIDSIGN_CAUTION",
|
||||
"MT_ARIDSIGN_CACTI",
|
||||
"MT_ARIDSIGN_SHARPTURN",
|
||||
"MT_OILLAMP",
|
||||
"MT_TNTBARREL",
|
||||
"MT_PROXIMITYTNT",
|
||||
"MT_DUSTDEVIL",
|
||||
"MT_DUSTLAYER",
|
||||
"MT_ARIDDUST",
|
||||
"MT_MINECART",
|
||||
"MT_MINECARTSEG",
|
||||
"MT_MINECARTSPAWNER",
|
||||
"MT_MINECARTEND",
|
||||
"MT_MINECARTENDSOLID",
|
||||
"MT_MINECARTSIDEMARK",
|
||||
"MT_MINECARTSPARK",
|
||||
"MT_SALOONDOOR",
|
||||
"MT_SALOONDOORTHINKER",
|
||||
"MT_TRAINCAMEOSPAWNER",
|
||||
"MT_TRAINSEG",
|
||||
"MT_TRAINDUSTSPAWNER",
|
||||
"MT_TRAINSTEAMSPAWNER",
|
||||
"MT_MINECARTSWITCHPOINT",
|
||||
|
||||
// Red Volcano Scenery
|
||||
"MT_FLAMEJET",
|
||||
|
@ -7389,6 +7862,7 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
|
|||
"MT_EXPLODE", // Robot Explosion
|
||||
"MT_UWEXPLODE", // Underwater Explosion
|
||||
"MT_DUST",
|
||||
"MT_WOODDEBRIS",
|
||||
"MT_ROCKSPAWNER",
|
||||
"MT_FALLINGROCK",
|
||||
"MT_ROCKCRUMBLE1",
|
||||
|
@ -7778,6 +8252,96 @@ static const char *const HUDITEMS_LIST[] = {
|
|||
"LAP"
|
||||
};
|
||||
|
||||
static const char *const MENUTYPES_LIST[] = {
|
||||
"NONE",
|
||||
|
||||
"MAIN",
|
||||
|
||||
// Single Player
|
||||
"SP_MAIN",
|
||||
|
||||
"SP_LOAD",
|
||||
"SP_PLAYER",
|
||||
|
||||
"SP_LEVELSELECT",
|
||||
"SP_LEVELSTATS",
|
||||
|
||||
"SP_TIMEATTACK",
|
||||
"SP_TIMEATTACK_LEVELSELECT",
|
||||
"SP_GUESTREPLAY",
|
||||
"SP_REPLAY",
|
||||
"SP_GHOST",
|
||||
|
||||
"SP_NIGHTSATTACK",
|
||||
"SP_NIGHTS_LEVELSELECT",
|
||||
"SP_NIGHTS_GUESTREPLAY",
|
||||
"SP_NIGHTS_REPLAY",
|
||||
"SP_NIGHTS_GHOST",
|
||||
|
||||
// Multiplayer
|
||||
"MP_MAIN",
|
||||
"MP_SPLITSCREEN", // SplitServer
|
||||
"MP_SERVER",
|
||||
"MP_CONNECT",
|
||||
"MP_ROOM",
|
||||
"MP_PLAYERSETUP", // MP_PlayerSetupDef shared with SPLITSCREEN if #defined NONET
|
||||
|
||||
// Options
|
||||
"OP_MAIN",
|
||||
|
||||
"OP_P1CONTROLS",
|
||||
"OP_CHANGECONTROLS", // OP_ChangeControlsDef shared with P2
|
||||
"OP_P1MOUSE",
|
||||
"OP_P1JOYSTICK",
|
||||
"OP_JOYSTICKSET", // OP_JoystickSetDef shared with P2
|
||||
|
||||
"OP_P2CONTROLS",
|
||||
"OP_P2MOUSE",
|
||||
"OP_P2JOYSTICK",
|
||||
|
||||
"OP_VIDEO",
|
||||
"OP_VIDEOMODE",
|
||||
"OP_COLOR",
|
||||
"OP_OPENGL",
|
||||
"OP_OPENGL_LIGHTING",
|
||||
"OP_OPENGL_FOG",
|
||||
"OP_OPENGL_COLOR",
|
||||
|
||||
"OP_SOUND",
|
||||
|
||||
"OP_SERVER",
|
||||
"OP_MONITORTOGGLE",
|
||||
|
||||
"OP_DATA",
|
||||
"OP_ADDONS",
|
||||
"OP_SCREENSHOTS",
|
||||
"OP_ERASEDATA",
|
||||
|
||||
// Secrets
|
||||
"SR_MAIN",
|
||||
"SR_PANDORA",
|
||||
"SR_LEVELSELECT",
|
||||
"SR_UNLOCKCHECKLIST",
|
||||
"SR_EMBLEMHINT",
|
||||
|
||||
// Addons (Part of MISC, but let's make it our own)
|
||||
"AD_MAIN",
|
||||
|
||||
// MISC
|
||||
// "MESSAGE",
|
||||
// "SPAUSE",
|
||||
|
||||
// "MPAUSE",
|
||||
// "SCRAMBLETEAM",
|
||||
// "CHANGETEAM",
|
||||
// "CHANGELEVEL",
|
||||
|
||||
// "MAPAUSE",
|
||||
// "HELP",
|
||||
|
||||
"SPECIAL"
|
||||
};
|
||||
|
||||
struct {
|
||||
const char *n;
|
||||
// has to be able to hold both fixed_t and angle_t, so drastic measure!!
|
||||
|
@ -7827,6 +8391,14 @@ struct {
|
|||
{"LE_BOSSDEAD",LE_BOSSDEAD}, // A boss in the map died (Chaos mode boss tally)
|
||||
{"LE_BOSS4DROP",LE_BOSS4DROP}, // CEZ boss dropped its cage
|
||||
{"LE_BRAKVILEATACK",LE_BRAKVILEATACK}, // Brak's doing his LOS attack, oh noes
|
||||
{"LE_TURRET",LE_TURRET}, // THZ turret
|
||||
{"LE_BRAKPLATFORM",LE_BRAKPLATFORM}, // v2.0 Black Eggman destroys platform
|
||||
{"LE_CAPSULE2",LE_CAPSULE2}, // Egg Capsule
|
||||
{"LE_CAPSULE1",LE_CAPSULE1}, // Egg Capsule
|
||||
{"LE_CAPSULE0",LE_CAPSULE0}, // Egg Capsule
|
||||
{"LE_KOOPA",LE_KOOPA}, // Distant cousin to Gay Bowser
|
||||
{"LE_AXE",LE_AXE}, // MKB Axe object
|
||||
{"LE_PARAMWIDTH",LE_PARAMWIDTH}, // If an object that calls LinedefExecute has a nonzero parameter value, this times the parameter will be subtracted. (Mostly for the purpose of coexisting bosses...)
|
||||
|
||||
/// \todo Get all this stuff into its own sections, maybe. Maybe.
|
||||
|
||||
|
@ -7974,6 +8546,7 @@ struct {
|
|||
{"CR_ZOOMTUBE",CR_ZOOMTUBE},
|
||||
{"CR_ROPEHANG",CR_ROPEHANG},
|
||||
{"CR_MACESPIN",CR_MACESPIN},
|
||||
{"CR_MINECART",CR_MINECART},
|
||||
|
||||
// Ring weapons (ringweapons_t)
|
||||
// Useful for A_GiveWeapon
|
||||
|
@ -8276,6 +8849,7 @@ struct {
|
|||
{"V_6WIDTHSPACE",V_6WIDTHSPACE},
|
||||
{"V_OLDSPACING",V_OLDSPACING},
|
||||
{"V_MONOSPACE",V_MONOSPACE},
|
||||
|
||||
{"V_MAGENTAMAP",V_MAGENTAMAP},
|
||||
{"V_YELLOWMAP",V_YELLOWMAP},
|
||||
{"V_GREENMAP",V_GREENMAP},
|
||||
|
@ -8291,6 +8865,7 @@ struct {
|
|||
{"V_BROWNMAP",V_BROWNMAP},
|
||||
{"V_ROSYMAP",V_ROSYMAP},
|
||||
{"V_INVERTMAP",V_INVERTMAP},
|
||||
|
||||
{"V_TRANSLUCENT",V_TRANSLUCENT},
|
||||
{"V_10TRANS",V_10TRANS},
|
||||
{"V_20TRANS",V_20TRANS},
|
||||
|
@ -8477,6 +9052,20 @@ static hudnum_t get_huditem(const char *word)
|
|||
return HUD_LIVES;
|
||||
}
|
||||
|
||||
static menutype_t get_menutype(const char *word)
|
||||
{ // Returns the value of MN_ enumerations
|
||||
menutype_t i;
|
||||
if (*word >= '0' && *word <= '9')
|
||||
return atoi(word);
|
||||
if (fastncmp("MN_",word,3))
|
||||
word += 3; // take off the MN_
|
||||
for (i = 0; i < NUMMENUTYPES; i++)
|
||||
if (fastcmp(word, MENUTYPES_LIST[i]))
|
||||
return i;
|
||||
deh_warning("Couldn't find menutype named 'MN_%s'",word);
|
||||
return MN_NONE;
|
||||
}
|
||||
|
||||
#ifndef HAVE_BLUA
|
||||
static powertype_t get_power(const char *word)
|
||||
{ // Returns the vlaue of pw_ enumerations
|
||||
|
@ -8673,6 +9262,11 @@ static fixed_t find_const(const char **rword)
|
|||
free(word);
|
||||
return r;
|
||||
}
|
||||
else if (fastncmp("MN_",word,4)) {
|
||||
r = get_menutype(word);
|
||||
free(word);
|
||||
return r;
|
||||
}
|
||||
else if (fastncmp("HUD_",word,4)) {
|
||||
r = get_huditem(word);
|
||||
free(word);
|
||||
|
@ -9141,6 +9735,16 @@ static inline int lib_getenum(lua_State *L)
|
|||
if (mathlib) return luaL_error(L, "skincolor '%s' could not be found.\n", word);
|
||||
return 0;
|
||||
}
|
||||
else if (fastncmp("MN_",word,3)) {
|
||||
p = word+3;
|
||||
for (i = 0; i < NUMMENUTYPES; i++)
|
||||
if (fastcmp(p, MENUTYPES_LIST[i])) {
|
||||
lua_pushinteger(L, i);
|
||||
return 1;
|
||||
}
|
||||
if (mathlib) return luaL_error(L, "menutype '%s' could not be found.\n", word);
|
||||
return 0;
|
||||
}
|
||||
else if (!mathlib && fastncmp("A_",word,2)) {
|
||||
char *caps;
|
||||
// Try to get a Lua action first.
|
||||
|
|
|
@ -381,11 +381,19 @@ typedef enum
|
|||
|
||||
// Special linedef executor tag numbers!
|
||||
enum {
|
||||
LE_PINCHPHASE = -2, // A boss entered pinch phase (and, in most cases, is preparing their pinch phase attack!)
|
||||
LE_ALLBOSSESDEAD = -3, // All bosses in the map are dead (Egg capsule raise)
|
||||
LE_BOSSDEAD = -4, // A boss in the map died (Chaos mode boss tally)
|
||||
LE_BOSS4DROP = -5, // CEZ boss dropped its cage
|
||||
LE_BRAKVILEATACK = -6 // Brak's doing his LOS attack, oh noes
|
||||
LE_PINCHPHASE = -2, // A boss entered pinch phase (and, in most cases, is preparing their pinch phase attack!)
|
||||
LE_ALLBOSSESDEAD = -3, // All bosses in the map are dead (Egg capsule raise)
|
||||
LE_BOSSDEAD = -4, // A boss in the map died (Chaos mode boss tally)
|
||||
LE_BOSS4DROP = -5, // CEZ boss dropped its cage
|
||||
LE_BRAKVILEATACK = -6, // Brak's doing his LOS attack, oh noes
|
||||
LE_TURRET = 32000, // THZ turret
|
||||
LE_BRAKPLATFORM = 4200, // v2.0 Black Eggman destroys platform
|
||||
LE_CAPSULE2 = 682, // Egg Capsule
|
||||
LE_CAPSULE1 = 681, // Egg Capsule
|
||||
LE_CAPSULE0 = 680, // Egg Capsule
|
||||
LE_KOOPA = 650, // Distant cousin to Gay Bowser
|
||||
LE_AXE = 649, // MKB Axe object
|
||||
LE_PARAMWIDTH = -100 // If an object that calls LinedefExecute has a nonzero parameter value, this times the parameter will be subtracted. (Mostly for the purpose of coexisting bosses...)
|
||||
};
|
||||
|
||||
// Name of local directory for config files and savegames
|
||||
|
|
|
@ -146,6 +146,7 @@ extern UINT8 skincolor_redteam, skincolor_blueteam, skincolor_redring, skincolor
|
|||
|
||||
extern tic_t countdowntimer;
|
||||
extern boolean countdowntimeup;
|
||||
extern boolean exitfadestarted;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
|
@ -313,6 +314,7 @@ typedef struct
|
|||
UINT8 menuflags; ///< LF2_flags: options that affect record attack / nights mode menus
|
||||
|
||||
char selectheading[22]; ///< Level select heading. Allows for controllable grouping.
|
||||
UINT16 startrings; ///< Number of rings players start with.
|
||||
|
||||
// Freed animals stuff.
|
||||
UINT8 numFlickies; ///< Internal. For freed flicky support.
|
||||
|
@ -555,6 +557,8 @@ extern boolean precache;
|
|||
// wipegamestate can be set to -1
|
||||
// to force a wipe on the next draw
|
||||
extern gamestate_t wipegamestate;
|
||||
extern INT16 wipetypepre;
|
||||
extern INT16 wipetypepost;
|
||||
|
||||
// debug flag to cancel adaptiveness
|
||||
extern boolean singletics;
|
||||
|
|
|
@ -25,6 +25,12 @@
|
|||
|
||||
/* 7.18.1.1 Exact-width integer types */
|
||||
#ifdef _MSC_VER
|
||||
// libopenmpt.h will include stdint.h later;
|
||||
// include it now so that INT8_MAX etc. don't get redefined
|
||||
#ifdef HAVE_OPENMPT
|
||||
#include <stdint.h>
|
||||
#endif
|
||||
|
||||
#define UINT8 unsigned __int8
|
||||
#define SINT8 signed __int8
|
||||
|
||||
|
@ -171,6 +177,7 @@ size_t strlcpy(char *dst, const char *src, size_t siz);
|
|||
#endif // __BYTEBOOL__
|
||||
|
||||
/* 7.18.2.1 Limits of exact-width integer types */
|
||||
|
||||
#ifndef INT8_MIN
|
||||
#define INT8_MIN (-128)
|
||||
#endif
|
||||
|
|
264
src/f_finale.c
264
src/f_finale.c
|
@ -44,14 +44,15 @@
|
|||
// Stage of animation:
|
||||
// 0 = text, 1 = art screen
|
||||
static INT32 finalecount;
|
||||
INT32 titlescrollspeed = 80;
|
||||
INT32 titlescrollxspeed = 80;
|
||||
INT32 titlescrollyspeed = 0;
|
||||
UINT8 titlemapinaction = TITLEMAP_OFF;
|
||||
|
||||
static INT32 timetonext; // Delay between screen changes
|
||||
static INT32 continuetime; // Short delay when continuing
|
||||
|
||||
static tic_t animtimer; // Used for some animation timings
|
||||
static INT16 skullAnimCounter; // Chevron animation
|
||||
static INT16 skullAnimCounter; // Prompts: Chevron animation
|
||||
static INT32 roidtics; // Asteroid spinning
|
||||
|
||||
static INT32 deplete;
|
||||
|
@ -60,6 +61,20 @@ static tic_t stoptimer;
|
|||
static boolean keypressed = false;
|
||||
|
||||
// (no longer) De-Demo'd Title Screen
|
||||
static tic_t xscrolltimer;
|
||||
static tic_t yscrolltimer;
|
||||
static INT32 menuanimtimer; // Title screen: background animation timing
|
||||
mobj_t *titlemapcameraref = NULL;
|
||||
|
||||
// menu presentation state
|
||||
char curbgname[8];
|
||||
SINT8 curfadevalue;
|
||||
boolean curhidepics;
|
||||
INT32 curbgcolor;
|
||||
INT32 curbgxspeed;
|
||||
INT32 curbgyspeed;
|
||||
boolean curbghide;
|
||||
|
||||
static UINT8 curDemo = 0;
|
||||
static UINT32 demoDelayLeft;
|
||||
static UINT32 demoIdleLeft;
|
||||
|
@ -80,8 +95,6 @@ static patch_t *ttspop5;
|
|||
static patch_t *ttspop6;
|
||||
static patch_t *ttspop7;
|
||||
|
||||
static void F_SkyScroll(INT32 scrollspeed);
|
||||
|
||||
//
|
||||
// PROMPT STATE
|
||||
//
|
||||
|
@ -182,101 +195,6 @@ static void F_NewCutscene(const char *basetext)
|
|||
cutscene_textcount = TICRATE/2;
|
||||
}
|
||||
|
||||
//
|
||||
// F_DrawPatchCol
|
||||
//
|
||||
static void F_DrawPatchCol(INT32 x, patch_t *patch, INT32 col)
|
||||
{
|
||||
const column_t *column;
|
||||
const UINT8 *source;
|
||||
UINT8 *desttop, *dest = NULL;
|
||||
const UINT8 *deststop, *destbottom;
|
||||
size_t count;
|
||||
|
||||
desttop = screens[0] + x*vid.dupx;
|
||||
deststop = screens[0] + vid.rowbytes * vid.height;
|
||||
destbottom = desttop + vid.height*vid.width;
|
||||
|
||||
do {
|
||||
INT32 topdelta, prevdelta = -1;
|
||||
column = (column_t *)((UINT8 *)patch + LONG(patch->columnofs[col]));
|
||||
|
||||
// step through the posts in a column
|
||||
while (column->topdelta != 0xff)
|
||||
{
|
||||
topdelta = column->topdelta;
|
||||
if (topdelta <= prevdelta)
|
||||
topdelta += prevdelta;
|
||||
prevdelta = topdelta;
|
||||
source = (const UINT8 *)column + 3;
|
||||
dest = desttop + topdelta*vid.width;
|
||||
count = column->length;
|
||||
|
||||
while (count--)
|
||||
{
|
||||
INT32 dupycount = vid.dupy;
|
||||
|
||||
while (dupycount-- && dest < destbottom)
|
||||
{
|
||||
INT32 dupxcount = vid.dupx;
|
||||
while (dupxcount-- && dest <= deststop)
|
||||
*dest++ = *source;
|
||||
|
||||
dest += (vid.width - vid.dupx);
|
||||
}
|
||||
source++;
|
||||
}
|
||||
column = (const column_t *)((const UINT8 *)column + column->length + 4);
|
||||
}
|
||||
|
||||
desttop += SHORT(patch->height)*vid.dupy*vid.width;
|
||||
} while(dest < destbottom);
|
||||
}
|
||||
|
||||
//
|
||||
// F_SkyScroll
|
||||
//
|
||||
static void F_SkyScroll(INT32 scrollspeed)
|
||||
{
|
||||
INT32 scrolled, x, mx, fakedwidth;
|
||||
patch_t *pat;
|
||||
INT16 patwidth;
|
||||
|
||||
pat = W_CachePatchName("TITLESKY", PU_CACHE);
|
||||
|
||||
patwidth = SHORT(pat->width);
|
||||
animtimer = ((finalecount*scrollspeed)/16 + patwidth) % patwidth;
|
||||
|
||||
fakedwidth = vid.width / vid.dupx;
|
||||
|
||||
if (rendermode == render_soft)
|
||||
{ // if only hardware rendering could be this elegant and complete
|
||||
scrolled = (patwidth - animtimer) - 1;
|
||||
for (x = 0, mx = scrolled; x < fakedwidth; x++, mx = (mx+1)%patwidth)
|
||||
F_DrawPatchCol(x, pat, mx);
|
||||
}
|
||||
#ifdef HWRENDER
|
||||
else if (rendermode != render_none)
|
||||
{ // if only software rendering could be this simple and retarded
|
||||
INT32 dupz = (vid.dupx < vid.dupy ? vid.dupx : vid.dupy);
|
||||
INT32 y, pw = patwidth * dupz, ph = SHORT(pat->height) * dupz;
|
||||
scrolled = animtimer * dupz;
|
||||
for (x = 0; x < vid.width; x += pw)
|
||||
{
|
||||
for (y = 0; y < vid.height; y += ph)
|
||||
{
|
||||
if (scrolled > 0)
|
||||
V_DrawScaledPatch(scrolled - pw, y, V_NOSCALESTART, pat);
|
||||
|
||||
V_DrawScaledPatch(x + scrolled, y, V_NOSCALESTART, pat);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
W_UnlockCachedPatch(pat);
|
||||
}
|
||||
|
||||
// =============
|
||||
// INTRO SCENE
|
||||
// =============
|
||||
|
@ -474,7 +392,7 @@ void F_StartIntro(void)
|
|||
F_NewCutscene(introtext[0]);
|
||||
|
||||
intro_scenenum = 0;
|
||||
finalecount = animtimer = stoptimer = 0;
|
||||
finalecount = animtimer = skullAnimCounter = stoptimer = 0;
|
||||
roidtics = BASEVIDWIDTH - 64;
|
||||
timetonext = introscenetime[intro_scenenum];
|
||||
}
|
||||
|
@ -706,7 +624,7 @@ static void F_IntroDrawScene(void)
|
|||
}
|
||||
else
|
||||
{
|
||||
F_SkyScroll(80*4);
|
||||
F_SkyScroll(80*4, 0, "TITLESKY");
|
||||
if (timetonext == 6)
|
||||
{
|
||||
stoptimer = finalecount;
|
||||
|
@ -1489,12 +1407,104 @@ void F_GameEndTicker(void)
|
|||
// ==============
|
||||
// TITLE SCREEN
|
||||
// ==============
|
||||
|
||||
void F_InitMenuPresValues(void)
|
||||
{
|
||||
menuanimtimer = 0;
|
||||
prevMenuId = 0;
|
||||
activeMenuId = MainDef.menuid;
|
||||
|
||||
// Set defaults for presentation values
|
||||
strncpy(curbgname, "TITLESKY", 8);
|
||||
curfadevalue = 16;
|
||||
curhidepics = hidetitlepics;
|
||||
curbgcolor = -1;
|
||||
curbgxspeed = titlescrollxspeed;
|
||||
curbgyspeed = titlescrollyspeed;
|
||||
curbghide = true;
|
||||
|
||||
// Find current presentation values
|
||||
M_SetMenuCurBackground((gamestate == GS_TIMEATTACK) ? "SRB2BACK" : "TITLESKY");
|
||||
M_SetMenuCurFadeValue(16);
|
||||
M_SetMenuCurHideTitlePics();
|
||||
}
|
||||
|
||||
//
|
||||
// F_SkyScroll
|
||||
//
|
||||
void F_SkyScroll(INT32 scrollxspeed, INT32 scrollyspeed, const char *patchname)
|
||||
{
|
||||
INT32 xscrolled, x, xneg = (scrollxspeed > 0) - (scrollxspeed < 0), tilex;
|
||||
INT32 yscrolled, y, yneg = (scrollyspeed > 0) - (scrollyspeed < 0), tiley;
|
||||
boolean xispos = (scrollxspeed >= 0), yispos = (scrollyspeed >= 0);
|
||||
INT32 dupz = (vid.dupx < vid.dupy ? vid.dupx : vid.dupy);
|
||||
INT16 patwidth, patheight;
|
||||
INT32 pw, ph; // scaled by dupz
|
||||
patch_t *pat;
|
||||
INT32 i, j;
|
||||
|
||||
if (rendermode == render_none)
|
||||
return;
|
||||
|
||||
if (!patchname || !patchname[0])
|
||||
{
|
||||
V_DrawFill(0, 0, vid.width, vid.height, 31);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!scrollxspeed && !scrollyspeed)
|
||||
{
|
||||
V_DrawPatchFill(W_CachePatchName(patchname, PU_CACHE));
|
||||
return;
|
||||
}
|
||||
|
||||
pat = W_CachePatchName(patchname, PU_CACHE);
|
||||
|
||||
patwidth = SHORT(pat->width);
|
||||
patheight = SHORT(pat->height);
|
||||
pw = patwidth * dupz;
|
||||
ph = patheight * dupz;
|
||||
|
||||
tilex = max(FixedCeil(FixedDiv(vid.width, pw)) >> FRACBITS, 1)+2; // one tile on both sides of center
|
||||
tiley = max(FixedCeil(FixedDiv(vid.height, ph)) >> FRACBITS, 1)+2;
|
||||
|
||||
xscrolltimer = ((menuanimtimer*scrollxspeed)/16 + patwidth*xneg) % (patwidth);
|
||||
yscrolltimer = ((menuanimtimer*scrollyspeed)/16 + patheight*yneg) % (patheight);
|
||||
|
||||
// coordinate offsets
|
||||
xscrolled = xscrolltimer * dupz;
|
||||
yscrolled = yscrolltimer * dupz;
|
||||
|
||||
for (x = (xispos) ? -pw*(tilex-1)+pw : 0, i = 0;
|
||||
i < tilex;
|
||||
x += pw, i++)
|
||||
{
|
||||
for (y = (yispos) ? -ph*(tiley-1)+ph : 0, j = 0;
|
||||
j < tiley;
|
||||
y += ph, j++)
|
||||
{
|
||||
V_DrawScaledPatch(
|
||||
(xispos) ? xscrolled - x : x + xscrolled,
|
||||
(yispos) ? yscrolled - y : y + yscrolled,
|
||||
V_NOSCALESTART, pat);
|
||||
}
|
||||
}
|
||||
|
||||
W_UnlockCachedPatch(pat);
|
||||
}
|
||||
|
||||
void F_StartTitleScreen(void)
|
||||
{
|
||||
S_ChangeMusicInternal("_title", looptitle);
|
||||
if (menupres[MN_MAIN].musname[0])
|
||||
S_ChangeMusic(menupres[MN_MAIN].musname, menupres[MN_MAIN].mustrack, menupres[MN_MAIN].muslooping);
|
||||
else
|
||||
S_ChangeMusicInternal("_title", looptitle);
|
||||
|
||||
if (gamestate != GS_TITLESCREEN && gamestate != GS_WAITINGPLAYERS)
|
||||
{
|
||||
finalecount = 0;
|
||||
wipetypepost = menupres[MN_MAIN].enterwipe;
|
||||
}
|
||||
else
|
||||
wipegamestate = GS_TITLESCREEN;
|
||||
|
||||
|
@ -1504,6 +1514,7 @@ void F_StartTitleScreen(void)
|
|||
|
||||
gamestate_t prevwipegamestate = wipegamestate;
|
||||
titlemapinaction = TITLEMAP_LOADING;
|
||||
titlemapcameraref = NULL;
|
||||
gamemap = titlemap;
|
||||
|
||||
if (!mapheaderinfo[gamemap-1])
|
||||
|
@ -1544,6 +1555,10 @@ void F_StartTitleScreen(void)
|
|||
camera.chase = true;
|
||||
camera.height = 0;
|
||||
|
||||
// Run enter linedef exec for MN_MAIN, since this is where we start
|
||||
if (menupres[MN_MAIN].entertag)
|
||||
P_LinedefExecute(menupres[MN_MAIN].entertag, players[displayplayer].mo, NULL);
|
||||
|
||||
wipegamestate = prevwipegamestate;
|
||||
}
|
||||
else
|
||||
|
@ -1557,7 +1572,7 @@ void F_StartTitleScreen(void)
|
|||
|
||||
// IWAD dependent stuff.
|
||||
|
||||
animtimer = 0;
|
||||
animtimer = skullAnimCounter = 0;
|
||||
|
||||
demoDelayLeft = demoDelayTime;
|
||||
demoIdleLeft = demoIdleTime;
|
||||
|
@ -1582,19 +1597,24 @@ void F_StartTitleScreen(void)
|
|||
// (no longer) De-Demo'd Title Screen
|
||||
void F_TitleScreenDrawer(void)
|
||||
{
|
||||
boolean hidepics;
|
||||
|
||||
if (modeattacking)
|
||||
return; // We likely came here from retrying. Don't do a damn thing.
|
||||
|
||||
// Draw that sky!
|
||||
if (!titlemapinaction)
|
||||
F_SkyScroll(titlescrollspeed);
|
||||
if (curbgcolor >= 0)
|
||||
V_DrawFill(0, 0, BASEVIDWIDTH, BASEVIDHEIGHT, curbgcolor);
|
||||
else if (!curbghide || !titlemapinaction || gamestate == GS_WAITINGPLAYERS)
|
||||
F_SkyScroll(curbgxspeed, curbgyspeed, curbgname);
|
||||
|
||||
// Don't draw outside of the title screen, or if the patch isn't there.
|
||||
if (!ttwing || (gamestate != GS_TITLESCREEN && gamestate != GS_WAITINGPLAYERS))
|
||||
return;
|
||||
|
||||
// rei|miru: use title pics?
|
||||
if (hidetitlepics)
|
||||
hidepics = curhidepics;
|
||||
if (hidepics)
|
||||
#ifdef HAVE_BLUA
|
||||
goto luahook;
|
||||
#else
|
||||
|
@ -1644,6 +1664,14 @@ luahook:
|
|||
#endif
|
||||
}
|
||||
|
||||
// separate animation timer for backgrounds, since we also count
|
||||
// during GS_TIMEATTACK
|
||||
void F_MenuPresTicker(boolean run)
|
||||
{
|
||||
if (run)
|
||||
menuanimtimer++;
|
||||
}
|
||||
|
||||
// (no longer) De-Demo'd Title Screen
|
||||
void F_TitleScreenTicker(boolean run)
|
||||
{
|
||||
|
@ -1661,19 +1689,25 @@ void F_TitleScreenTicker(boolean run)
|
|||
mobj_t *mo2;
|
||||
mobj_t *cameraref = NULL;
|
||||
|
||||
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
|
||||
// If there's a Line 422 Switch Cut-Away view, don't force us.
|
||||
if (!titlemapcameraref || titlemapcameraref->type != MT_ALTVIEWMAN)
|
||||
{
|
||||
mo2 = (mobj_t *)th;
|
||||
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
|
||||
{
|
||||
mo2 = (mobj_t *)th;
|
||||
|
||||
if (!mo2)
|
||||
continue;
|
||||
if (!mo2)
|
||||
continue;
|
||||
|
||||
if (mo2->type != MT_ALTVIEWMAN)
|
||||
continue;
|
||||
if (mo2->type != MT_ALTVIEWMAN)
|
||||
continue;
|
||||
|
||||
cameraref = mo2;
|
||||
break;
|
||||
cameraref = titlemapcameraref = mo2;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
cameraref = titlemapcameraref;
|
||||
|
||||
if (cameraref)
|
||||
{
|
||||
|
@ -1687,7 +1721,7 @@ void F_TitleScreenTicker(boolean run)
|
|||
else
|
||||
{
|
||||
// Default behavior: Do a lil' camera spin if a title map is loaded;
|
||||
camera.angle += titlescrollspeed*ANG1/64;
|
||||
camera.angle += titlescrollxspeed*ANG1/64;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -40,6 +40,7 @@ void F_TextPromptTicker(void);
|
|||
void F_GameEndDrawer(void);
|
||||
void F_IntroDrawer(void);
|
||||
void F_TitleScreenDrawer(void);
|
||||
void F_SkyScroll(INT32 scrollxspeed, INT32 scrollyspeed, const char *patchname);
|
||||
|
||||
void F_GameEvaluationDrawer(void);
|
||||
void F_StartGameEvaluation(void);
|
||||
|
@ -69,7 +70,8 @@ void F_StartContinue(void);
|
|||
void F_ContinueTicker(void);
|
||||
void F_ContinueDrawer(void);
|
||||
|
||||
extern INT32 titlescrollspeed;
|
||||
extern INT32 titlescrollxspeed;
|
||||
extern INT32 titlescrollyspeed;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
|
@ -78,17 +80,38 @@ typedef enum
|
|||
TITLEMAP_RUNNING
|
||||
} titlemap_enum;
|
||||
|
||||
// Current menu parameters
|
||||
|
||||
extern UINT8 titlemapinaction;
|
||||
extern mobj_t *titlemapcameraref;
|
||||
extern char curbgname[8];
|
||||
extern SINT8 curfadevalue;
|
||||
extern boolean curhidepics;
|
||||
extern INT32 curbgcolor;
|
||||
extern INT32 curbgxspeed;
|
||||
extern INT32 curbgyspeed;
|
||||
extern boolean curbghide;
|
||||
|
||||
#define TITLEBACKGROUNDACTIVE (curfadevalue >= 0 || curbgname[0])
|
||||
|
||||
void F_InitMenuPresValues(void);
|
||||
void F_MenuPresTicker(boolean run);
|
||||
|
||||
//
|
||||
// WIPE
|
||||
//
|
||||
// HACK for menu fading while titlemapinaction; skips the level check
|
||||
#define FORCEWIPE -3
|
||||
#define FORCEWIPEOFF -2
|
||||
|
||||
extern boolean WipeInAction;
|
||||
extern INT32 lastwipetic;
|
||||
|
||||
void F_WipeStartScreen(void);
|
||||
void F_WipeEndScreen(void);
|
||||
void F_RunWipe(UINT8 wipetype, boolean drawMenu);
|
||||
tic_t F_GetWipeLength(UINT8 wipetype);
|
||||
boolean F_WipeExists(UINT8 wipetype);
|
||||
|
||||
enum
|
||||
{
|
||||
|
|
45
src/f_wipe.c
45
src/f_wipe.c
|
@ -378,3 +378,48 @@ void F_RunWipe(UINT8 wipetype, boolean drawMenu)
|
|||
WipeInAction = false;
|
||||
#endif
|
||||
}
|
||||
|
||||
/** Returns tic length of wipe
|
||||
* One lump equals one tic
|
||||
*/
|
||||
tic_t F_GetWipeLength(UINT8 wipetype)
|
||||
{
|
||||
#ifdef NOWIPE
|
||||
return 0;
|
||||
#else
|
||||
static char lumpname[10] = "FADEmmss";
|
||||
lumpnum_t lumpnum;
|
||||
UINT8 wipeframe;
|
||||
|
||||
if (wipetype > 99)
|
||||
return 0;
|
||||
|
||||
for (wipeframe = 0; wipeframe < 100; wipeframe++)
|
||||
{
|
||||
sprintf(&lumpname[4], "%.2hu%.2hu", (UINT16)wipetype, (UINT16)wipeframe);
|
||||
|
||||
lumpnum = W_CheckNumForName(lumpname);
|
||||
if (lumpnum == LUMPERROR)
|
||||
return --wipeframe;
|
||||
}
|
||||
return --wipeframe;
|
||||
#endif
|
||||
}
|
||||
|
||||
boolean F_WipeExists(UINT8 wipetype)
|
||||
{
|
||||
#ifdef NOWIPE
|
||||
return false;
|
||||
#else
|
||||
static char lumpname[10] = "FADEmm00";
|
||||
lumpnum_t lumpnum;
|
||||
|
||||
if (wipetype > 99)
|
||||
return false;
|
||||
|
||||
sprintf(&lumpname[4], "%.2hu00", (UINT16)wipetype);
|
||||
|
||||
lumpnum = W_CheckNumForName(lumpname);
|
||||
return !(lumpnum == LUMPERROR);
|
||||
#endif
|
||||
}
|
||||
|
|
16
src/g_game.c
16
src/g_game.c
|
@ -15,6 +15,7 @@
|
|||
#include "console.h"
|
||||
#include "d_main.h"
|
||||
#include "d_player.h"
|
||||
#include "d_clisrv.h"
|
||||
#include "f_finale.h"
|
||||
#include "p_setup.h"
|
||||
#include "p_saveg.h"
|
||||
|
@ -145,6 +146,7 @@ UINT8 skincolor_bluering = SKINCOLOR_CORNFLOWER;
|
|||
|
||||
tic_t countdowntimer = 0;
|
||||
boolean countdowntimeup = false;
|
||||
boolean exitfadestarted = false;
|
||||
|
||||
cutscene_t *cutscenes[128];
|
||||
textprompt_t *textprompts[MAX_PROMPTS];
|
||||
|
@ -1847,7 +1849,9 @@ boolean G_Responder(event_t *ev)
|
|||
|
||||
if (F_CreditResponder(ev))
|
||||
{
|
||||
F_StartGameEvaluation();
|
||||
// Skip credits for everyone
|
||||
if (!netgame || server || IsPlayerAdmin(consoleplayer))
|
||||
SendNetXCmd(XD_EXITLEVEL, NULL, 0);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -2020,6 +2024,7 @@ void G_Ticker(boolean run)
|
|||
break;
|
||||
|
||||
case GS_TIMEATTACK:
|
||||
F_MenuPresTicker(run);
|
||||
break;
|
||||
|
||||
case GS_INTRO:
|
||||
|
@ -2059,6 +2064,7 @@ void G_Ticker(boolean run)
|
|||
if (titlemapinaction) P_Ticker(run); // then intentionally fall through
|
||||
/* FALLTHRU */
|
||||
case GS_WAITINGPLAYERS:
|
||||
F_MenuPresTicker(run);
|
||||
F_TitleScreenTicker(run);
|
||||
break;
|
||||
|
||||
|
@ -2392,6 +2398,8 @@ void G_SpawnPlayer(INT32 playernum, boolean starpost)
|
|||
|
||||
P_SpawnPlayer(playernum);
|
||||
|
||||
players[playernum].rings = mapheaderinfo[gamemap-1]->startrings;
|
||||
|
||||
if (starpost) //Don't even bother with looking for a place to spawn.
|
||||
{
|
||||
P_MovePlayerToStarpost(playernum);
|
||||
|
@ -2838,6 +2846,10 @@ void G_ExitLevel(void)
|
|||
// Remove CEcho text on round end.
|
||||
HU_ClearCEcho();
|
||||
}
|
||||
else if (gamestate == GS_CREDITS)
|
||||
{
|
||||
F_StartGameEvaluation();
|
||||
}
|
||||
}
|
||||
|
||||
// See also the enum GameType in doomstat.h
|
||||
|
@ -3863,7 +3875,7 @@ void G_InitNew(UINT8 pultmode, const char *mapname, boolean resetplayer, boolean
|
|||
{
|
||||
// Clear a bunch of variables
|
||||
numgameovers = tokenlist = token = sstimer = redscore = bluescore = lastmap = 0;
|
||||
countdown = countdown2 = 0;
|
||||
countdown = countdown2 = exitfadestarted = 0;
|
||||
|
||||
for (i = 0; i < MAXPLAYERS; i++)
|
||||
{
|
||||
|
|
|
@ -1266,21 +1266,24 @@ UINT8 *HWR_GetScreenshot(void)
|
|||
return buf;
|
||||
}
|
||||
|
||||
boolean HWR_Screenshot(const char *lbmname)
|
||||
boolean HWR_Screenshot(const char *pathname)
|
||||
{
|
||||
boolean ret;
|
||||
UINT8 *buf = malloc(vid.width * vid.height * 3 * sizeof (*buf));
|
||||
|
||||
if (!buf)
|
||||
{
|
||||
CONS_Debug(DBG_RENDER, "HWR_Screenshot: Failed to allocate memory\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
// returns 24bit 888 RGB
|
||||
HWD.pfnReadRect(0, 0, vid.width, vid.height, vid.width * 3, (void *)buf);
|
||||
|
||||
#ifdef USE_PNG
|
||||
ret = M_SavePNG(lbmname, buf, vid.width, vid.height, false);
|
||||
ret = M_SavePNG(pathname, buf, vid.width, vid.height, NULL);
|
||||
#else
|
||||
ret = saveTGA(lbmname, buf, vid.width, vid.height);
|
||||
ret = saveTGA(pathname, buf, vid.width, vid.height);
|
||||
#endif
|
||||
free(buf);
|
||||
return ret;
|
||||
|
|
|
@ -172,9 +172,14 @@ light_t *t_lspr[NUMSPRITES] =
|
|||
&lspr[NOLIGHT], // SPR_SPSH
|
||||
&lspr[NOLIGHT], // SPR_ESHI
|
||||
&lspr[NOLIGHT], // SPR_GSNP
|
||||
&lspr[NOLIGHT], // SPR_GSNL
|
||||
&lspr[NOLIGHT], // SPR_GSNH
|
||||
&lspr[NOLIGHT], // SPR_MNUS
|
||||
&lspr[NOLIGHT], // SPR_MNUD
|
||||
&lspr[NOLIGHT], // SPR_SSHL
|
||||
&lspr[NOLIGHT], // SPR_UNID
|
||||
&lspr[NOLIGHT], // SPR_CANA
|
||||
&lspr[NOLIGHT], // SPR_CANG
|
||||
|
||||
// Generic Boos Items
|
||||
&lspr[JETLIGHT_L], // SPR_JETF // Boss jet fumes
|
||||
|
@ -199,7 +204,11 @@ light_t *t_lspr[NUMSPRITES] =
|
|||
&lspr[REDBALL_L], // SPR_EFIR
|
||||
|
||||
// Boss 5 (Arid Canyon)
|
||||
&lspr[NOLIGHT], // SPR_EGGQ
|
||||
&lspr[NOLIGHT], //SPR_FANG // replaces EGGQ
|
||||
&lspr[NOLIGHT], //SPR_FBOM
|
||||
&lspr[NOLIGHT], //SPR_FSGN
|
||||
&lspr[REDBALL_L], //SPR_BARX // bomb explosion (also used by barrel)
|
||||
&lspr[NOLIGHT], //SPR_BARD // bomb dust (also used by barrel)
|
||||
|
||||
// Boss 6 (Red Volcano)
|
||||
&lspr[NOLIGHT], // SPR_EEGR
|
||||
|
@ -343,6 +352,22 @@ light_t *t_lspr[NUMSPRITES] =
|
|||
&lspr[NOLIGHT], // SPR_BTBL
|
||||
&lspr[NOLIGHT], // SPR_STBL
|
||||
&lspr[NOLIGHT], // SPR_CACT
|
||||
&lspr[NOLIGHT], // SPR_WWSG
|
||||
&lspr[NOLIGHT], // SPR_WWS2
|
||||
&lspr[NOLIGHT], // SPR_WWS3
|
||||
&lspr[NOLIGHT], // SPR_OILL
|
||||
&lspr[NOLIGHT], // SPR_OILF
|
||||
&lspr[NOLIGHT], // SPR_BARR
|
||||
&lspr[NOLIGHT], // SPR_REMT
|
||||
&lspr[NOLIGHT], // SPR_TAZD
|
||||
&lspr[NOLIGHT], // SPR_ADST
|
||||
&lspr[NOLIGHT], // SPR_MCRT
|
||||
&lspr[NOLIGHT], // SPR_MCSP
|
||||
&lspr[NOLIGHT], // SPR_NON2
|
||||
&lspr[NOLIGHT], // SPR_SALD
|
||||
&lspr[NOLIGHT], // SPR_TRAE
|
||||
&lspr[NOLIGHT], // SPR_TRAI
|
||||
&lspr[NOLIGHT], // SPR_STEA
|
||||
|
||||
// Red Volcano Scenery
|
||||
&lspr[REDBALL_L], // SPR_FLME
|
||||
|
@ -535,6 +560,7 @@ light_t *t_lspr[NUMSPRITES] =
|
|||
&lspr[SUPERSPARK_L], // SPR_BOM3
|
||||
&lspr[NOLIGHT], // SPR_BOM4
|
||||
&lspr[REDBALL_L], // SPR_BMNB
|
||||
&lspr[NOLIGHT], // SPR_WDDB
|
||||
|
||||
// Crumbly rocks
|
||||
&lspr[NOLIGHT], // SPR_ROIA
|
||||
|
|
|
@ -4265,10 +4265,45 @@ static void HWR_DrawSpriteShadow(gr_vissprite_t *spr, GLPatch_t *gpatch, float t
|
|||
}
|
||||
}
|
||||
|
||||
// This is expecting a pointer to an array containing 4 wallVerts for a sprite
|
||||
static void HWR_RotateSpritePolyToAim(gr_vissprite_t *spr, FOutVector *wallVerts)
|
||||
{
|
||||
if (cv_grspritebillboarding.value
|
||||
&& spr && spr->mobj && !(spr->mobj->frame & FF_PAPERSPRITE)
|
||||
&& wallVerts)
|
||||
{
|
||||
float basey = FIXED_TO_FLOAT(spr->mobj->z);
|
||||
float lowy = wallVerts[0].y;
|
||||
if (P_MobjFlip(spr->mobj) == -1)
|
||||
{
|
||||
basey = FIXED_TO_FLOAT(spr->mobj->z + spr->mobj->height);
|
||||
}
|
||||
// Rotate sprites to fully billboard with the camera
|
||||
// X, Y, AND Z need to be manipulated for the polys to rotate around the
|
||||
// origin, because of how the origin setting works I believe that should
|
||||
// be mobj->z or mobj->z + mobj->height
|
||||
wallVerts[2].y = wallVerts[3].y = (spr->ty - basey) * gr_viewludsin + basey;
|
||||
wallVerts[0].y = wallVerts[1].y = (lowy - basey) * gr_viewludsin + basey;
|
||||
// translate back to be around 0 before translating back
|
||||
wallVerts[3].x += ((spr->ty - basey) * gr_viewludcos) * gr_viewcos;
|
||||
wallVerts[2].x += ((spr->ty - basey) * gr_viewludcos) * gr_viewcos;
|
||||
|
||||
wallVerts[0].x += ((lowy - basey) * gr_viewludcos) * gr_viewcos;
|
||||
wallVerts[1].x += ((lowy - basey) * gr_viewludcos) * gr_viewcos;
|
||||
|
||||
wallVerts[3].z += ((spr->ty - basey) * gr_viewludcos) * gr_viewsin;
|
||||
wallVerts[2].z += ((spr->ty - basey) * gr_viewludcos) * gr_viewsin;
|
||||
|
||||
wallVerts[0].z += ((lowy - basey) * gr_viewludcos) * gr_viewsin;
|
||||
wallVerts[1].z += ((lowy - basey) * gr_viewludcos) * gr_viewsin;
|
||||
}
|
||||
}
|
||||
|
||||
static void HWR_SplitSprite(gr_vissprite_t *spr)
|
||||
{
|
||||
float this_scale = 1.0f;
|
||||
FOutVector wallVerts[4];
|
||||
FOutVector baseWallVerts[4]; // This is what the verts should end up as
|
||||
GLPatch_t *gpatch;
|
||||
FSurfaceInfo Surf;
|
||||
const boolean hires = (spr->mobj && spr->mobj->skin && ((skin_t *)spr->mobj->skin)->flags & SF_HIRES);
|
||||
|
@ -4281,11 +4316,13 @@ static void HWR_SplitSprite(gr_vissprite_t *spr)
|
|||
float realtop, realbot, top, bot;
|
||||
float towtop, towbot, towmult;
|
||||
float bheight;
|
||||
float realheight, heightmult;
|
||||
const sector_t *sector = spr->mobj->subsector->sector;
|
||||
const lightlist_t *list = sector->lightlist;
|
||||
#ifdef ESLOPE
|
||||
float endrealtop, endrealbot, endtop, endbot;
|
||||
float endbheight;
|
||||
float endrealheight;
|
||||
fixed_t temp;
|
||||
fixed_t v1x, v1y, v2x, v2y;
|
||||
#endif
|
||||
|
@ -4318,16 +4355,16 @@ static void HWR_SplitSprite(gr_vissprite_t *spr)
|
|||
HWR_DrawSpriteShadow(spr, gpatch, this_scale);
|
||||
}
|
||||
|
||||
wallVerts[0].x = wallVerts[3].x = spr->x1;
|
||||
wallVerts[2].x = wallVerts[1].x = spr->x2;
|
||||
wallVerts[0].z = wallVerts[3].z = spr->z1;
|
||||
wallVerts[1].z = wallVerts[2].z = spr->z2;
|
||||
baseWallVerts[0].x = baseWallVerts[3].x = spr->x1;
|
||||
baseWallVerts[2].x = baseWallVerts[1].x = spr->x2;
|
||||
baseWallVerts[0].z = baseWallVerts[3].z = spr->z1;
|
||||
baseWallVerts[1].z = baseWallVerts[2].z = spr->z2;
|
||||
|
||||
wallVerts[2].y = wallVerts[3].y = spr->ty;
|
||||
baseWallVerts[2].y = baseWallVerts[3].y = spr->ty;
|
||||
if (spr->mobj && fabsf(this_scale - 1.0f) > 1.0E-36f)
|
||||
wallVerts[0].y = wallVerts[1].y = spr->ty - gpatch->height * this_scale;
|
||||
baseWallVerts[0].y = baseWallVerts[1].y = spr->ty - gpatch->height * this_scale;
|
||||
else
|
||||
wallVerts[0].y = wallVerts[1].y = spr->ty - gpatch->height;
|
||||
baseWallVerts[0].y = baseWallVerts[1].y = spr->ty - gpatch->height;
|
||||
|
||||
v1x = FLOAT_TO_FIXED(spr->x1);
|
||||
v1y = FLOAT_TO_FIXED(spr->z1);
|
||||
|
@ -4336,44 +4373,56 @@ static void HWR_SplitSprite(gr_vissprite_t *spr)
|
|||
|
||||
if (spr->flip)
|
||||
{
|
||||
wallVerts[0].sow = wallVerts[3].sow = gpatch->max_s;
|
||||
wallVerts[2].sow = wallVerts[1].sow = 0;
|
||||
}else{
|
||||
wallVerts[0].sow = wallVerts[3].sow = 0;
|
||||
wallVerts[2].sow = wallVerts[1].sow = gpatch->max_s;
|
||||
baseWallVerts[0].sow = baseWallVerts[3].sow = gpatch->max_s;
|
||||
baseWallVerts[2].sow = baseWallVerts[1].sow = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
baseWallVerts[0].sow = baseWallVerts[3].sow = 0;
|
||||
baseWallVerts[2].sow = baseWallVerts[1].sow = gpatch->max_s;
|
||||
}
|
||||
|
||||
// flip the texture coords (look familiar?)
|
||||
if (spr->vflip)
|
||||
{
|
||||
wallVerts[3].tow = wallVerts[2].tow = gpatch->max_t;
|
||||
wallVerts[0].tow = wallVerts[1].tow = 0;
|
||||
}else{
|
||||
wallVerts[3].tow = wallVerts[2].tow = 0;
|
||||
wallVerts[0].tow = wallVerts[1].tow = gpatch->max_t;
|
||||
baseWallVerts[3].tow = baseWallVerts[2].tow = gpatch->max_t;
|
||||
baseWallVerts[0].tow = baseWallVerts[1].tow = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
baseWallVerts[3].tow = baseWallVerts[2].tow = 0;
|
||||
baseWallVerts[0].tow = baseWallVerts[1].tow = gpatch->max_t;
|
||||
}
|
||||
|
||||
// if it has a dispoffset, push it a little towards the camera
|
||||
if (spr->dispoffset) {
|
||||
float co = -gr_viewcos*(0.05f*spr->dispoffset);
|
||||
float si = -gr_viewsin*(0.05f*spr->dispoffset);
|
||||
wallVerts[0].z = wallVerts[3].z = wallVerts[0].z+si;
|
||||
wallVerts[1].z = wallVerts[2].z = wallVerts[1].z+si;
|
||||
wallVerts[0].x = wallVerts[3].x = wallVerts[0].x+co;
|
||||
wallVerts[1].x = wallVerts[2].x = wallVerts[1].x+co;
|
||||
baseWallVerts[0].z = baseWallVerts[3].z = baseWallVerts[0].z+si;
|
||||
baseWallVerts[1].z = baseWallVerts[2].z = baseWallVerts[1].z+si;
|
||||
baseWallVerts[0].x = baseWallVerts[3].x = baseWallVerts[0].x+co;
|
||||
baseWallVerts[1].x = baseWallVerts[2].x = baseWallVerts[1].x+co;
|
||||
}
|
||||
|
||||
realtop = top = wallVerts[3].y;
|
||||
realbot = bot = wallVerts[0].y;
|
||||
towtop = wallVerts[3].tow;
|
||||
towbot = wallVerts[0].tow;
|
||||
// Let dispoffset work first since this adjust each vertex
|
||||
HWR_RotateSpritePolyToAim(spr, baseWallVerts);
|
||||
|
||||
realtop = top = baseWallVerts[3].y;
|
||||
realbot = bot = baseWallVerts[0].y;
|
||||
towtop = baseWallVerts[3].tow;
|
||||
towbot = baseWallVerts[0].tow;
|
||||
towmult = (towbot - towtop) / (top - bot);
|
||||
|
||||
#ifdef ESLOPE
|
||||
endrealtop = endtop = wallVerts[2].y;
|
||||
endrealbot = endbot = wallVerts[1].y;
|
||||
endrealtop = endtop = baseWallVerts[2].y;
|
||||
endrealbot = endbot = baseWallVerts[1].y;
|
||||
#endif
|
||||
|
||||
// copy the contents of baseWallVerts into the drawn wallVerts array
|
||||
// baseWallVerts is used to know the final shape to easily get the vertex
|
||||
// co-ordinates
|
||||
memcpy(wallVerts, baseWallVerts, sizeof(baseWallVerts));
|
||||
|
||||
if (!cv_translucency.value) // translucency disabled
|
||||
{
|
||||
Surf.FlatColor.s.alpha = 0xFF;
|
||||
|
@ -4500,12 +4549,55 @@ static void HWR_SplitSprite(gr_vissprite_t *spr)
|
|||
wallVerts[2].y = endtop;
|
||||
wallVerts[0].y = bot;
|
||||
wallVerts[1].y = endbot;
|
||||
|
||||
// The x and y only need to be adjusted in the case that it's not a papersprite
|
||||
if (cv_grspritebillboarding.value
|
||||
&& spr->mobj && !(spr->mobj->frame & FF_PAPERSPRITE))
|
||||
{
|
||||
// Get the x and z of the vertices so billboarding draws correctly
|
||||
realheight = realbot - realtop;
|
||||
endrealheight = endrealbot - endrealtop;
|
||||
heightmult = (realtop - top) / realheight;
|
||||
wallVerts[3].x = baseWallVerts[3].x + (baseWallVerts[3].x - baseWallVerts[0].x) * heightmult;
|
||||
wallVerts[3].z = baseWallVerts[3].z + (baseWallVerts[3].z - baseWallVerts[0].z) * heightmult;
|
||||
|
||||
heightmult = (endrealtop - endtop) / endrealheight;
|
||||
wallVerts[2].x = baseWallVerts[2].x + (baseWallVerts[2].x - baseWallVerts[1].x) * heightmult;
|
||||
wallVerts[2].z = baseWallVerts[2].z + (baseWallVerts[2].z - baseWallVerts[1].z) * heightmult;
|
||||
|
||||
heightmult = (realtop - bot) / realheight;
|
||||
wallVerts[0].x = baseWallVerts[3].x + (baseWallVerts[3].x - baseWallVerts[0].x) * heightmult;
|
||||
wallVerts[0].z = baseWallVerts[3].z + (baseWallVerts[3].z - baseWallVerts[0].z) * heightmult;
|
||||
|
||||
heightmult = (endrealtop - endbot) / endrealheight;
|
||||
wallVerts[1].x = baseWallVerts[2].x + (baseWallVerts[2].x - baseWallVerts[1].x) * heightmult;
|
||||
wallVerts[1].z = baseWallVerts[2].z + (baseWallVerts[2].z - baseWallVerts[1].z) * heightmult;
|
||||
}
|
||||
#else
|
||||
wallVerts[3].tow = wallVerts[2].tow = towtop + ((realtop - top) * towmult);
|
||||
wallVerts[0].tow = wallVerts[1].tow = towtop + ((realtop - bot) * towmult);
|
||||
|
||||
wallVerts[2].y = wallVerts[3].y = top;
|
||||
wallVerts[0].y = wallVerts[1].y = bot;
|
||||
|
||||
// The x and y only need to be adjusted in the case that it's not a papersprite
|
||||
if (cv_grspritebillboarding.value
|
||||
&& spr->mobj && !(spr->mobj->frame & FF_PAPERSPRITE))
|
||||
{
|
||||
// Get the x and z of the vertices so billboarding draws correctly
|
||||
realheight = realbot - realtop;
|
||||
heightmult = (realtop - top) / realheight;
|
||||
wallVerts[3].x = baseWallVerts[3].x + (baseWallVerts[3].x - baseWallVerts[0].x) * heightmult;
|
||||
wallVerts[3].z = baseWallVerts[3].z + (baseWallVerts[3].z - baseWallVerts[0].z) * heightmult;
|
||||
wallVerts[2].x = baseWallVerts[2].x + (baseWallVerts[2].x - baseWallVerts[1].x) * heightmult;
|
||||
wallVerts[2].z = baseWallVerts[2].z + (baseWallVerts[2].z - baseWallVerts[1].z) * heightmult;
|
||||
|
||||
heightmult = (realtop - bot) / realheight;
|
||||
wallVerts[0].x = baseWallVerts[3].x + (baseWallVerts[3].x - baseWallVerts[0].x) * heightmult;
|
||||
wallVerts[0].z = baseWallVerts[3].z + (baseWallVerts[3].z - baseWallVerts[0].z) * heightmult;
|
||||
wallVerts[1].x = baseWallVerts[2].x + (baseWallVerts[2].x - baseWallVerts[1].x) * heightmult;
|
||||
wallVerts[1].z = baseWallVerts[2].z + (baseWallVerts[2].z - baseWallVerts[1].z) * heightmult;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (colormap)
|
||||
|
@ -4675,6 +4767,9 @@ static void HWR_DrawSprite(gr_vissprite_t *spr)
|
|||
wallVerts[1].x = wallVerts[2].x = wallVerts[1].x+co;
|
||||
}
|
||||
|
||||
// Let dispoffset work first since this adjust each vertex
|
||||
HWR_RotateSpritePolyToAim(spr, wallVerts);
|
||||
|
||||
// This needs to be AFTER the shadows so that the regular sprites aren't drawn completely black.
|
||||
// sprite lighting by modulating the RGB components
|
||||
/// \todo coloured
|
||||
|
@ -4756,6 +4851,9 @@ static inline void HWR_DrawPrecipitationSprite(gr_vissprite_t *spr)
|
|||
wallVerts[0].z = wallVerts[3].z = spr->z1;
|
||||
wallVerts[1].z = wallVerts[2].z = spr->z2;
|
||||
|
||||
// Let dispoffset work first since this adjust each vertex
|
||||
HWR_RotateSpritePolyToAim(spr, wallVerts);
|
||||
|
||||
wallVerts[0].sow = wallVerts[3].sow = 0;
|
||||
wallVerts[2].sow = wallVerts[1].sow = gpatch->max_s;
|
||||
|
||||
|
@ -5333,7 +5431,7 @@ static void HWR_AddSprites(sector_t *sec)
|
|||
}
|
||||
|
||||
#ifdef HWPRECIP
|
||||
// Someone seriously wants infinite draw distance for precipitation?
|
||||
// no, no infinite draw distance for precipitation. this option at zero is supposed to turn it off
|
||||
if ((limit_dist = (fixed_t)cv_drawdist_precip.value << FRACBITS))
|
||||
{
|
||||
for (precipthing = sec->preciplist; precipthing; precipthing = precipthing->snext)
|
||||
|
@ -5349,13 +5447,6 @@ static void HWR_AddSprites(sector_t *sec)
|
|||
HWR_ProjectPrecipitationSprite(precipthing);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Draw everything in sector, no checks
|
||||
for (precipthing = sec->preciplist; precipthing; precipthing = precipthing->snext)
|
||||
if (!(precipthing->precipflags & PCF_INVISIBLE))
|
||||
HWR_ProjectPrecipitationSprite(precipthing);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -5676,16 +5767,6 @@ static void HWR_ProjectPrecipitationSprite(precipmobj_t *thing)
|
|||
x1 = tr_x + x1 * rightcos;
|
||||
x2 = tr_x - x2 * rightcos;
|
||||
|
||||
// okay, we can't return now... this is a hack, but weather isn't networked, so it should be ok
|
||||
if (!(thing->precipflags & PCF_THUNK))
|
||||
{
|
||||
if (thing->precipflags & PCF_RAIN)
|
||||
P_RainThinker(thing);
|
||||
else
|
||||
P_SnowThinker(thing);
|
||||
thing->precipflags |= PCF_THUNK;
|
||||
}
|
||||
|
||||
//
|
||||
// store information in a vissprite
|
||||
//
|
||||
|
@ -5706,6 +5787,16 @@ static void HWR_ProjectPrecipitationSprite(precipmobj_t *thing)
|
|||
vis->ty = FIXED_TO_FLOAT(thing->z + spritecachedinfo[lumpoff].topoffset);
|
||||
|
||||
vis->precip = true;
|
||||
|
||||
// okay... this is a hack, but weather isn't networked, so it should be ok
|
||||
if (!(thing->precipflags & PCF_THUNK))
|
||||
{
|
||||
if (thing->precipflags & PCF_RAIN)
|
||||
P_RainThinker(thing);
|
||||
else
|
||||
P_SnowThinker(thing);
|
||||
thing->precipflags |= PCF_THUNK;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -6096,7 +6187,7 @@ void HWR_RenderPlayerView(INT32 viewnumber, player_t *player)
|
|||
}
|
||||
|
||||
// note: sets viewangle, viewx, viewy, viewz
|
||||
R_SetupFrame(player, false); // This can stay false because it is only used to set viewsky in r_main.c, which isn't used here
|
||||
R_SetupFrame(player);
|
||||
|
||||
// copy view cam position for local use
|
||||
dup_viewx = viewx;
|
||||
|
|
|
@ -39,8 +39,6 @@ void HWR_RenderSkyboxView(INT32 viewnumber, player_t *player);
|
|||
void HWR_RenderPlayerView(INT32 viewnumber, player_t *player);
|
||||
void HWR_DrawViewBorder(INT32 clearlines);
|
||||
void HWR_DrawFlatFill(INT32 x, INT32 y, INT32 w, INT32 h, lumpnum_t flatlumpnum);
|
||||
UINT8 *HWR_GetScreenshot(void);
|
||||
boolean HWR_Screenshot(const char *lbmname);
|
||||
void HWR_InitTextureMapping(void);
|
||||
void HWR_SetViewSize(void);
|
||||
void HWR_DrawPatch(GLPatch_t *gpatch, INT32 x, INT32 y, INT32 option);
|
||||
|
@ -54,6 +52,9 @@ void HWR_DrawFill(INT32 x, INT32 y, INT32 w, INT32 h, INT32 color);
|
|||
void HWR_DrawConsoleFill(INT32 x, INT32 y, INT32 w, INT32 h, UINT32 color, INT32 options); // Lat: separate flags from color since color needs to be an uint to work right.
|
||||
void HWR_DrawPic(INT32 x,INT32 y,lumpnum_t lumpnum);
|
||||
|
||||
UINT8 *HWR_GetScreenshot(void);
|
||||
boolean HWR_Screenshot(const char *pathname);
|
||||
|
||||
void HWR_AddCommands(void);
|
||||
void HWR_CorrectSWTricks(void);
|
||||
void transform(float *cx, float *cy, float *cz);
|
||||
|
@ -95,6 +96,7 @@ extern consvar_t cv_grcorrecttricks;
|
|||
extern consvar_t cv_voodoocompatibility;
|
||||
extern consvar_t cv_grfovchange;
|
||||
extern consvar_t cv_grsolvetjoin;
|
||||
extern consvar_t cv_grspritebillboarding;
|
||||
|
||||
extern float gr_viewwidth, gr_viewheight, gr_baseviewwindowy;
|
||||
|
||||
|
|
238
src/hu_stuff.c
238
src/hu_stuff.c
|
@ -751,40 +751,102 @@ static void Got_Saycmd(UINT8 **p, INT32 playernum)
|
|||
cstart = "\x83";
|
||||
|
||||
// Follow palette order at r_draw.c Color_Names
|
||||
if (color <= SKINCOLOR_SILVER
|
||||
|| color == SKINCOLOR_AETHER)
|
||||
cstart = "\x80"; // White
|
||||
else if (color <= SKINCOLOR_BLACK
|
||||
|| color == SKINCOLOR_SLATE)
|
||||
cstart = "\x86"; // Grey
|
||||
else if (color <= SKINCOLOR_YOGURT)
|
||||
cstart = "\x85"; // Red
|
||||
else if (color <= SKINCOLOR_BEIGE)
|
||||
cstart = "\x86"; // Grey
|
||||
else if (color <= SKINCOLOR_LAVENDER)
|
||||
cstart = "\x81"; // Purple
|
||||
else if (color <= SKINCOLOR_PEACHY)
|
||||
cstart = "\x85"; // Red
|
||||
else if (color <= SKINCOLOR_RUST)
|
||||
cstart = "\x87"; // Orange
|
||||
else if (color == SKINCOLOR_GOLD
|
||||
|| color == SKINCOLOR_YELLOW)
|
||||
cstart = "\x82"; // Yellow
|
||||
else if (color == SKINCOLOR_SANDY
|
||||
|| color == SKINCOLOR_OLIVE)
|
||||
cstart = "\x81"; // Purple
|
||||
else if (color <= SKINCOLOR_MINT)
|
||||
cstart = "\x83"; // Green
|
||||
else if (color <= SKINCOLOR_DUSK)
|
||||
cstart = "\x84"; // Blue
|
||||
else if (color == SKINCOLOR_PINK
|
||||
|| color == SKINCOLOR_PASTEL
|
||||
|| color == SKINCOLOR_BUBBLEGUM
|
||||
|| color == SKINCOLOR_MAGENTA
|
||||
|| color == SKINCOLOR_ROSY)
|
||||
cstart = "\x85"; // Red
|
||||
else if (color <= SKINCOLOR_PLUM)
|
||||
cstart = "\x81"; // Purple
|
||||
switch (color)
|
||||
{
|
||||
default:
|
||||
case SKINCOLOR_WHITE:
|
||||
case SKINCOLOR_BONE:
|
||||
case SKINCOLOR_CLOUDY:
|
||||
case SKINCOLOR_GREY:
|
||||
case SKINCOLOR_SILVER:
|
||||
case SKINCOLOR_AETHER:
|
||||
case SKINCOLOR_SLATE:
|
||||
cstart = "\x80"; // white
|
||||
break;
|
||||
case SKINCOLOR_CARBON:
|
||||
case SKINCOLOR_JET:
|
||||
case SKINCOLOR_BLACK:
|
||||
cstart = "\x86"; // V_GRAYMAP
|
||||
break;
|
||||
case SKINCOLOR_PINK:
|
||||
case SKINCOLOR_RUBY:
|
||||
case SKINCOLOR_SALMON:
|
||||
case SKINCOLOR_RED:
|
||||
case SKINCOLOR_CRIMSON:
|
||||
case SKINCOLOR_FLAME:
|
||||
cstart = "\x85"; // V_REDMAP
|
||||
break;
|
||||
case SKINCOLOR_YOGURT:
|
||||
case SKINCOLOR_BROWN:
|
||||
case SKINCOLOR_TAN:
|
||||
case SKINCOLOR_BEIGE:
|
||||
case SKINCOLOR_QUAIL:
|
||||
cstart = "\x8d"; // V_BROWNMAP
|
||||
break;
|
||||
case SKINCOLOR_MOSS:
|
||||
case SKINCOLOR_GREEN:
|
||||
case SKINCOLOR_FOREST:
|
||||
case SKINCOLOR_EMERALD:
|
||||
case SKINCOLOR_MINT:
|
||||
cstart = "\x83"; // V_GREENMAP
|
||||
break;
|
||||
case SKINCOLOR_AZURE:
|
||||
cstart = "\x8c"; // V_AZUREMAP
|
||||
break;
|
||||
case SKINCOLOR_LAVENDER:
|
||||
case SKINCOLOR_PASTEL:
|
||||
case SKINCOLOR_PURPLE:
|
||||
cstart = "\x89"; // V_PURPLEMAP
|
||||
break;
|
||||
case SKINCOLOR_PEACHY:
|
||||
case SKINCOLOR_LILAC:
|
||||
case SKINCOLOR_PLUM:
|
||||
case SKINCOLOR_ROSY:
|
||||
cstart = "\x8e"; // V_ROSYMAP
|
||||
break;
|
||||
case SKINCOLOR_SUNSET:
|
||||
case SKINCOLOR_APRICOT:
|
||||
case SKINCOLOR_ORANGE:
|
||||
case SKINCOLOR_RUST:
|
||||
cstart = "\x87"; // V_ORANGEMAP
|
||||
break;
|
||||
case SKINCOLOR_GOLD:
|
||||
case SKINCOLOR_SANDY:
|
||||
case SKINCOLOR_YELLOW:
|
||||
case SKINCOLOR_OLIVE:
|
||||
cstart = "\x82"; // V_YELLOWMAP
|
||||
break;
|
||||
case SKINCOLOR_LIME:
|
||||
case SKINCOLOR_PERIDOT:
|
||||
cstart = "\x8b"; // V_PERIDOTMAP
|
||||
break;
|
||||
case SKINCOLOR_SEAFOAM:
|
||||
case SKINCOLOR_AQUA:
|
||||
cstart = "\x8a"; // V_AQUAMAP
|
||||
break;
|
||||
case SKINCOLOR_TEAL:
|
||||
case SKINCOLOR_WAVE:
|
||||
case SKINCOLOR_CYAN:
|
||||
case SKINCOLOR_SKY:
|
||||
case SKINCOLOR_CERULEAN:
|
||||
case SKINCOLOR_ICY:
|
||||
case SKINCOLOR_SAPPHIRE:
|
||||
case SKINCOLOR_VAPOR:
|
||||
cstart = "\x88"; // V_SKYMAP
|
||||
break;
|
||||
case SKINCOLOR_CORNFLOWER:
|
||||
case SKINCOLOR_BLUE:
|
||||
case SKINCOLOR_COBALT:
|
||||
case SKINCOLOR_DUSK:
|
||||
cstart = "\x84"; // V_BLUEMAP
|
||||
break;
|
||||
case SKINCOLOR_BUBBLEGUM:
|
||||
case SKINCOLOR_MAGENTA:
|
||||
case SKINCOLOR_NEON:
|
||||
case SKINCOLOR_VIOLET:
|
||||
cstart = "\x81"; // V_MAGENTAMAP
|
||||
break;
|
||||
}
|
||||
}
|
||||
prefix = cstart;
|
||||
|
||||
|
@ -1095,7 +1157,9 @@ static INT16 typelines = 1; // number of drawfill lines we need when drawing the
|
|||
//
|
||||
boolean HU_Responder(event_t *ev)
|
||||
{
|
||||
#ifndef NONET
|
||||
INT32 c=0;
|
||||
#endif
|
||||
|
||||
if (ev->type != ev_keydown)
|
||||
return false;
|
||||
|
@ -1122,19 +1186,9 @@ boolean HU_Responder(event_t *ev)
|
|||
return false;
|
||||
}*/ //We don't actually care about that unless we get splitscreen netgames. :V
|
||||
|
||||
#ifndef NONET
|
||||
c = (INT32)ev->data1;
|
||||
|
||||
// capslock (now handled outside of chat on so that it works everytime......)
|
||||
if (c && c == KEY_CAPSLOCK) // it's a toggle.
|
||||
{
|
||||
if (capslock)
|
||||
capslock = false;
|
||||
else
|
||||
capslock = true;
|
||||
return true;
|
||||
}
|
||||
|
||||
#ifndef NONET
|
||||
if (!chat_on)
|
||||
{
|
||||
// enter chat mode
|
||||
|
@ -1335,7 +1389,7 @@ static char *CHAT_WordWrap(INT32 x, INT32 w, INT32 option, const char *string)
|
|||
|
||||
// 30/7/18: chaty is now the distance at which the lowest point of the chat will be drawn if that makes any sense.
|
||||
|
||||
INT16 chatx = 13, chaty = 169; // let's use this as our coordinates, shh
|
||||
INT16 chatx = 13, chaty = 169; // let's use this as our coordinates
|
||||
|
||||
// chat stuff by VincyTM LOL XD!
|
||||
|
||||
|
@ -1414,7 +1468,6 @@ static void HU_drawMiniChat(void)
|
|||
if (splitscreen > 1)
|
||||
y += 16;
|
||||
}*/
|
||||
y -= (G_RingSlingerGametype() ? 16 : 0);
|
||||
|
||||
dx = 0;
|
||||
dy = 0;
|
||||
|
@ -1510,11 +1563,10 @@ static void HU_drawChatLog(INT32 offset)
|
|||
if (splitscreen)
|
||||
{
|
||||
y -= BASEVIDHEIGHT/2;
|
||||
if (splitscreen > 1)
|
||||
y += 16;
|
||||
//if (splitscreen > 1)
|
||||
//y += 16;
|
||||
}
|
||||
#endif
|
||||
y -= (G_RingSlingerGametype() ? 16 : 0);
|
||||
|
||||
chat_topy = y + chat_scroll*charheight;
|
||||
chat_bottomy = chat_topy + boxh*charheight;
|
||||
|
@ -1624,7 +1676,6 @@ static void HU_DrawChat(void)
|
|||
}
|
||||
}
|
||||
#endif
|
||||
y -= (G_RingSlingerGametype() ? 16 : 0);
|
||||
|
||||
if (teamtalk)
|
||||
{
|
||||
|
@ -1717,7 +1768,6 @@ static void HU_DrawChat(void)
|
|||
p_dispy += 16;
|
||||
}
|
||||
#endif
|
||||
p_dispy -= (G_RingSlingerGametype() ? 16 : 0);
|
||||
|
||||
i = 0;
|
||||
for(i=0; (i<MAXPLAYERS); i++)
|
||||
|
@ -2237,7 +2287,7 @@ void HU_Erase(void)
|
|||
//======================================================================
|
||||
|
||||
#define supercheckdef ((players[tab[i].num].powers[pw_super] && players[tab[i].num].mo && (players[tab[i].num].mo->state < &states[S_PLAY_SUPER_TRANS1] || players[tab[i].num].mo->state >= &states[S_PLAY_SUPER_TRANS6])) || (players[tab[i].num].powers[pw_carry] == CR_NIGHTSMODE && skins[players[tab[i].num].skin].flags & SF_SUPER))
|
||||
#define greycheckdef ((players[tab[i].num].mo && ((players[tab[i].num].rings <= 0 && !(maptol & TOL_NIGHTS)) || (players[tab[i].num].spheres <= 0 && (maptol & TOL_NIGHTS)))) || players[tab[i].num].spectator)
|
||||
#define greycheckdef (players[tab[i].num].spectator || players[tab[i].num].playerstate == PST_DEAD || (G_IsSpecialStage(gamemap) && players[tab[i].num].exiting))
|
||||
|
||||
//
|
||||
// HU_drawPing
|
||||
|
@ -2245,7 +2295,7 @@ void HU_Erase(void)
|
|||
void HU_drawPing(INT32 x, INT32 y, INT32 ping, boolean notext)
|
||||
{
|
||||
UINT8 numbars = 1; // how many ping bars do we draw?
|
||||
UINT8 barcolor = 128; // color we use for the bars (green, yellow or red)
|
||||
UINT8 barcolor = 35; // color we use for the bars (green, yellow or red)
|
||||
SINT8 i = 0;
|
||||
SINT8 yoffset = 6;
|
||||
INT32 dx = x+1 - (V_SmallStringWidth(va("%dms", ping), V_ALLOWLOWERCASE)/2);
|
||||
|
@ -2253,12 +2303,12 @@ void HU_drawPing(INT32 x, INT32 y, INT32 ping, boolean notext)
|
|||
if (ping < 128)
|
||||
{
|
||||
numbars = 3;
|
||||
barcolor = 184;
|
||||
barcolor = 112;
|
||||
}
|
||||
else if (ping < 256)
|
||||
{
|
||||
numbars = 2; // Apparently ternaries w/ multiple statements don't look good in C so I decided against it.
|
||||
barcolor = 103;
|
||||
barcolor = 73;
|
||||
}
|
||||
|
||||
if (!notext || vid.width >= 640) // how sad, we're using a shit resolution.
|
||||
|
@ -2310,7 +2360,9 @@ void HU_DrawTabRankings(INT32 x, INT32 y, playersort_t *tab, INT32 scorelines, I
|
|||
| V_ALLOWLOWERCASE, tab[i].name);
|
||||
|
||||
// Draw emeralds
|
||||
if (!players[tab[i].num].powers[pw_super]
|
||||
if (players[tab[i].num].powers[pw_invulnerability] && (players[tab[i].num].powers[pw_invulnerability] == players[tab[i].num].powers[pw_sneakers]) && ((leveltime/7) & 1))
|
||||
HU_DrawEmeralds(x-12,y+2,255);
|
||||
else if (!players[tab[i].num].powers[pw_super]
|
||||
|| ((leveltime/7) & 1))
|
||||
{
|
||||
HU_DrawEmeralds(x-12,y+2,tab[i].emeralds);
|
||||
|
@ -2420,6 +2472,7 @@ static void HU_Draw32TeamTabRankings(playersort_t *tab, INT32 whiteplayer)
|
|||
INT32 redplayers = 0, blueplayers = 0;
|
||||
const UINT8 *colormap;
|
||||
char name[MAXPLAYERNAME+1];
|
||||
boolean greycheck, supercheck;
|
||||
|
||||
V_DrawFill(160, 26, 1, 154, 0); //Draw a vertical line to separate the two teams.
|
||||
V_DrawFill(1, 26, 318, 1, 0); //And a horizontal line to make a T.
|
||||
|
@ -2430,6 +2483,9 @@ static void HU_Draw32TeamTabRankings(playersort_t *tab, INT32 whiteplayer)
|
|||
if (players[tab[i].num].spectator)
|
||||
continue; //ignore them.
|
||||
|
||||
greycheck = greycheckdef;
|
||||
supercheck = supercheckdef;
|
||||
|
||||
if (tab[i].color == skincolor_redteam) //red
|
||||
{
|
||||
redplayers++;
|
||||
|
@ -2445,10 +2501,13 @@ static void HU_Draw32TeamTabRankings(playersort_t *tab, INT32 whiteplayer)
|
|||
else //er? not on red or blue, so ignore them
|
||||
continue;
|
||||
|
||||
greycheck = greycheckdef;
|
||||
supercheck = supercheckdef;
|
||||
|
||||
strlcpy(name, tab[i].name, 8);
|
||||
V_DrawString(x + 10, y,
|
||||
((tab[i].num == whiteplayer) ? V_YELLOWMAP : 0)
|
||||
| (((players[tab[i].num].rings > 0 && !(maptol & TOL_NIGHTS)) || (players[tab[i].num].spheres > 0 && (maptol & TOL_NIGHTS))) ? 0 : V_TRANSLUCENT)
|
||||
| (greycheck ? 0 : V_TRANSLUCENT)
|
||||
| V_ALLOWLOWERCASE, name);
|
||||
|
||||
if (gametype == GT_CTF)
|
||||
|
@ -2460,13 +2519,19 @@ static void HU_Draw32TeamTabRankings(playersort_t *tab, INT32 whiteplayer)
|
|||
}
|
||||
|
||||
// Draw emeralds
|
||||
if (!players[tab[i].num].powers[pw_super]
|
||||
if (players[tab[i].num].powers[pw_invulnerability] && (players[tab[i].num].powers[pw_invulnerability] == players[tab[i].num].powers[pw_sneakers]) && ((leveltime/7) & 1))
|
||||
{
|
||||
HU_Draw32Emeralds(x+60, y+2, 255);
|
||||
//HU_DrawEmeralds(x-12,y+2,255);
|
||||
}
|
||||
else if (!players[tab[i].num].powers[pw_super]
|
||||
|| ((leveltime/7) & 1))
|
||||
{
|
||||
HU_Draw32Emeralds(x+60, y+2, tab[i].emeralds);
|
||||
//HU_DrawEmeralds(x-12,y+2,tab[i].emeralds);
|
||||
}
|
||||
|
||||
if (players[tab[i].num].powers[pw_super])
|
||||
if (supercheck)
|
||||
{
|
||||
colormap = R_GetTranslationColormap(players[tab[i].num].skin, players[tab[i].num].mo ? players[tab[i].num].mo->color : tab[i].color, GTC_CACHE);
|
||||
V_DrawFixedPatch(x*FRACUNIT, y*FRACUNIT, FRACUNIT/4, 0, superprefix[players[tab[i].num].skin], colormap);
|
||||
|
@ -2474,12 +2539,12 @@ static void HU_Draw32TeamTabRankings(playersort_t *tab, INT32 whiteplayer)
|
|||
else
|
||||
{
|
||||
colormap = R_GetTranslationColormap(players[tab[i].num].skin, players[tab[i].num].mo ? players[tab[i].num].mo->color : tab[i].color, GTC_CACHE);
|
||||
if ((players[tab[i].num].rings <= 0 && !(maptol & TOL_NIGHTS)) || (players[tab[i].num].spheres <= 0 && (maptol & TOL_NIGHTS)))
|
||||
if (players[tab[i].num].spectator || players[tab[i].num].playerstate == PST_DEAD)
|
||||
V_DrawFixedPatch(x*FRACUNIT, y*FRACUNIT, FRACUNIT/4, V_HUDTRANSHALF, faceprefix[players[tab[i].num].skin], colormap);
|
||||
else
|
||||
V_DrawFixedPatch(x*FRACUNIT, y*FRACUNIT, FRACUNIT/4, 0, faceprefix[players[tab[i].num].skin], colormap);
|
||||
}
|
||||
V_DrawRightAlignedThinString(x+128, y, (((players[tab[i].num].rings > 0 && !(maptol & TOL_NIGHTS)) || (players[tab[i].num].spheres > 0 && (maptol & TOL_NIGHTS))) ? 0 : V_TRANSLUCENT), va("%u", tab[i].count));
|
||||
V_DrawRightAlignedThinString(x+128, y, ((players[tab[i].num].spectator || players[tab[i].num].playerstate == PST_DEAD) ? 0 : V_TRANSLUCENT), va("%u", tab[i].count));
|
||||
if (!splitscreen)
|
||||
{
|
||||
if (!(tab[i].num == serverplayer))
|
||||
|
@ -2582,7 +2647,9 @@ void HU_DrawTeamTabRankings(playersort_t *tab, INT32 whiteplayer)
|
|||
}
|
||||
|
||||
// Draw emeralds
|
||||
if (!players[tab[i].num].powers[pw_super]
|
||||
if (players[tab[i].num].powers[pw_invulnerability] && (players[tab[i].num].powers[pw_invulnerability] == players[tab[i].num].powers[pw_sneakers]) && ((leveltime/7) & 1))
|
||||
HU_DrawEmeralds(x-12,y+2,255);
|
||||
else if (!players[tab[i].num].powers[pw_super]
|
||||
|| ((leveltime/7) & 1))
|
||||
{
|
||||
HU_DrawEmeralds(x-12,y+2,tab[i].emeralds);
|
||||
|
@ -2654,7 +2721,9 @@ void HU_DrawDualTabRankings(INT32 x, INT32 y, playersort_t *tab, INT32 scoreline
|
|||
V_DrawSmallScaledPatch(x - SHORT(exiticon->width)/2 - 1, y-3, 0, exiticon);
|
||||
|
||||
// Draw emeralds
|
||||
if (!players[tab[i].num].powers[pw_super]
|
||||
if (players[tab[i].num].powers[pw_invulnerability] && (players[tab[i].num].powers[pw_invulnerability] == players[tab[i].num].powers[pw_sneakers]) && ((leveltime/7) & 1))
|
||||
HU_DrawEmeralds(x-12,y+2,255);
|
||||
else if (!players[tab[i].num].powers[pw_super]
|
||||
|| ((leveltime/7) & 1))
|
||||
{
|
||||
HU_DrawEmeralds(x-12,y+2,tab[i].emeralds);
|
||||
|
@ -2724,6 +2793,7 @@ static void HU_Draw32TabRankings(INT32 x, INT32 y, playersort_t *tab, INT32 scor
|
|||
INT32 i;
|
||||
const UINT8 *colormap;
|
||||
char name[MAXPLAYERNAME+1];
|
||||
boolean greycheck, supercheck;
|
||||
|
||||
V_DrawFill(160, 26, 1, 154, 0); //Draw a vertical line to separate the two sides.
|
||||
V_DrawFill(1, 26, 318, 1, 0); //And a horizontal line to make a T.
|
||||
|
@ -2731,9 +2801,12 @@ static void HU_Draw32TabRankings(INT32 x, INT32 y, playersort_t *tab, INT32 scor
|
|||
|
||||
for (i = 0; i < scorelines; i++)
|
||||
{
|
||||
if (players[tab[i].num].spectator)
|
||||
if (players[tab[i].num].spectator && gametype != GT_COOP)
|
||||
continue; //ignore them.
|
||||
|
||||
greycheck = greycheckdef;
|
||||
supercheck = supercheckdef;
|
||||
|
||||
strlcpy(name, tab[i].name, 7);
|
||||
if (!splitscreen) // don't draw it on splitscreen,
|
||||
{
|
||||
|
@ -2745,7 +2818,7 @@ static void HU_Draw32TabRankings(INT32 x, INT32 y, playersort_t *tab, INT32 scor
|
|||
|
||||
V_DrawString(x + 10, y,
|
||||
((tab[i].num == whiteplayer) ? V_YELLOWMAP : 0)
|
||||
| (((players[tab[i].num].rings > 0 && !(maptol & TOL_NIGHTS)) || (players[tab[i].num].spheres > 0 && (maptol & TOL_NIGHTS))) ? 0 : V_TRANSLUCENT)
|
||||
| (greycheck ? 0 : V_TRANSLUCENT)
|
||||
| V_ALLOWLOWERCASE, name);
|
||||
|
||||
if (G_GametypeUsesLives()) //show lives
|
||||
|
@ -2754,7 +2827,12 @@ static void HU_Draw32TabRankings(INT32 x, INT32 y, playersort_t *tab, INT32 scor
|
|||
V_DrawFixedPatch((x-10)*FRACUNIT, (y)*FRACUNIT, FRACUNIT/4, 0, tagico, 0);
|
||||
|
||||
// Draw emeralds
|
||||
if (!players[tab[i].num].powers[pw_super]
|
||||
if (players[tab[i].num].powers[pw_invulnerability] && (players[tab[i].num].powers[pw_invulnerability] == players[tab[i].num].powers[pw_sneakers]) && ((leveltime/7) & 1))
|
||||
{
|
||||
HU_Draw32Emeralds(x+60, y+2, 255);
|
||||
//HU_DrawEmeralds(x-12,y+2,255);
|
||||
}
|
||||
else if (!players[tab[i].num].powers[pw_super]
|
||||
|| ((leveltime/7) & 1))
|
||||
{
|
||||
HU_Draw32Emeralds(x+60, y+2, tab[i].emeralds);
|
||||
|
@ -2769,7 +2847,7 @@ static void HU_Draw32TabRankings(INT32 x, INT32 y, playersort_t *tab, INT32 scor
|
|||
V_DrawFixedPatch(x*FRACUNIT, y*FRACUNIT, FRACUNIT/4, 0, superprefix[players[tab[i].num].skin], 0);
|
||||
else
|
||||
{
|
||||
if ((players[tab[i].num].rings <= 0 && !(maptol & TOL_NIGHTS)) || (players[tab[i].num].spheres <= 0 && (maptol & TOL_NIGHTS)))
|
||||
if (greycheck)
|
||||
V_DrawFixedPatch(x*FRACUNIT, (y)*FRACUNIT, FRACUNIT/4, V_HUDTRANSHALF, faceprefix[players[tab[i].num].skin], 0);
|
||||
else
|
||||
V_DrawFixedPatch(x*FRACUNIT, (y)*FRACUNIT, FRACUNIT/4, 0, faceprefix[players[tab[i].num].skin], 0);
|
||||
|
@ -2777,7 +2855,7 @@ static void HU_Draw32TabRankings(INT32 x, INT32 y, playersort_t *tab, INT32 scor
|
|||
}
|
||||
else
|
||||
{
|
||||
if (players[tab[i].num].powers[pw_super])
|
||||
if (supercheck)
|
||||
{
|
||||
colormap = R_GetTranslationColormap(players[tab[i].num].skin, players[tab[i].num].mo ? players[tab[i].num].mo->color : tab[i].color, GTC_CACHE);
|
||||
V_DrawFixedPatch(x*FRACUNIT, y*FRACUNIT, FRACUNIT/4, 0, superprefix[players[tab[i].num].skin], colormap);
|
||||
|
@ -2785,7 +2863,7 @@ static void HU_Draw32TabRankings(INT32 x, INT32 y, playersort_t *tab, INT32 scor
|
|||
else
|
||||
{
|
||||
colormap = R_GetTranslationColormap(players[tab[i].num].skin, players[tab[i].num].mo ? players[tab[i].num].mo->color : tab[i].color, GTC_CACHE);
|
||||
if ((players[tab[i].num].rings <= 0 && !(maptol & TOL_NIGHTS)) || (players[tab[i].num].spheres <= 0 && (maptol & TOL_NIGHTS)))
|
||||
if (greycheck)
|
||||
V_DrawFixedPatch(x*FRACUNIT, (y)*FRACUNIT, FRACUNIT/4, V_HUDTRANSHALF, faceprefix[players[tab[i].num].skin], colormap);
|
||||
else
|
||||
V_DrawFixedPatch(x*FRACUNIT, (y)*FRACUNIT, FRACUNIT/4, 0, faceprefix[players[tab[i].num].skin], colormap);
|
||||
|
@ -2800,13 +2878,13 @@ static void HU_Draw32TabRankings(INT32 x, INT32 y, playersort_t *tab, INT32 scor
|
|||
if (players[tab[i].num].exiting)
|
||||
V_DrawRightAlignedThinString(x+128, y, 0, va("%i:%02i.%02i", G_TicsToMinutes(players[tab[i].num].realtime,true), G_TicsToSeconds(players[tab[i].num].realtime), G_TicsToCentiseconds(players[tab[i].num].realtime)));
|
||||
else
|
||||
V_DrawRightAlignedThinString(x+128, y, (((players[tab[i].num].rings > 0 && !(maptol & TOL_NIGHTS)) || (players[tab[i].num].spheres > 0 && (maptol & TOL_NIGHTS))) ? 0 : V_TRANSLUCENT), va("%u", tab[i].count));
|
||||
V_DrawRightAlignedThinString(x+128, y, (greycheck ? 0 : V_TRANSLUCENT), va("%u", tab[i].count));
|
||||
}
|
||||
else
|
||||
V_DrawRightAlignedThinString(x+128, y, (((players[tab[i].num].rings > 0 && !(maptol & TOL_NIGHTS)) || (players[tab[i].num].spheres > 0 && (maptol & TOL_NIGHTS))) ? 0 : V_TRANSLUCENT), va("%i:%02i.%02i", G_TicsToMinutes(tab[i].count,true), G_TicsToSeconds(tab[i].count), G_TicsToCentiseconds(tab[i].count)));
|
||||
V_DrawRightAlignedThinString(x+128, y, (greycheck ? 0 : V_TRANSLUCENT), va("%i:%02i.%02i", G_TicsToMinutes(tab[i].count,true), G_TicsToSeconds(tab[i].count), G_TicsToCentiseconds(tab[i].count)));
|
||||
}
|
||||
else
|
||||
V_DrawRightAlignedThinString(x+128, y, (((players[tab[i].num].rings > 0 && !(maptol & TOL_NIGHTS)) || (players[tab[i].num].spheres > 0 && (maptol & TOL_NIGHTS))) ? 0 : V_TRANSLUCENT), va("%u", tab[i].count));
|
||||
V_DrawRightAlignedThinString(x+128, y, (greycheck ? 0 : V_TRANSLUCENT), va("%u", tab[i].count));
|
||||
|
||||
y += 9;
|
||||
if (i == 16)
|
||||
|
@ -3042,7 +3120,7 @@ static void HU_DrawRankings(void)
|
|||
// shush, we'll do it anyway.
|
||||
|
||||
if (G_GametypeHasTeams())
|
||||
HU_DrawTeamTabRankings(tab, whiteplayer); //separate function for Spazzo's silly request
|
||||
HU_DrawTeamTabRankings(tab, whiteplayer);
|
||||
else if (scorelines <= 9 && !cv_compactscoreboard.value)
|
||||
HU_DrawTabRankings(40, 32, tab, scorelines, whiteplayer);
|
||||
else if (scorelines <= 20 && !cv_compactscoreboard.value)
|
||||
|
@ -3101,6 +3179,16 @@ static void HU_DrawNetplayCoopOverlay(void)
|
|||
{
|
||||
int i;
|
||||
|
||||
if (token
|
||||
#ifdef HAVE_BLUA
|
||||
&& LUA_HudEnabled(hud_tokens)
|
||||
#endif
|
||||
)
|
||||
{
|
||||
V_DrawString(168, 10, 0, va("- %d", token));
|
||||
V_DrawSmallScaledPatch(148, 6, 0, tokenicon);
|
||||
}
|
||||
|
||||
#ifdef HAVE_BLUA
|
||||
if (!LUA_HudEnabled(hud_coopemeralds))
|
||||
return;
|
||||
|
@ -3109,7 +3197,7 @@ static void HU_DrawNetplayCoopOverlay(void)
|
|||
for (i = 0; i < 7; ++i)
|
||||
{
|
||||
if (emeralds & (1 << i))
|
||||
V_DrawScaledPatch(20 + (i * 20), 6, 0, emeraldpics[0][i]);
|
||||
V_DrawScaledPatch(20 + (i * 10), 9, 0, emeraldpics[1][i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -30,7 +30,8 @@ typedef enum {
|
|||
MU_MP3_MAD_UNUSED, // use MU_MP3 instead
|
||||
MU_FLAC,
|
||||
MU_MODPLUG_UNUSED, // use MU_MOD instead
|
||||
MU_GME
|
||||
MU_GME,
|
||||
MU_MOD_EX // libopenmpt
|
||||
} musictype_t;
|
||||
|
||||
/** \brief Sound subsystem runing and waiting
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue