mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2024-11-15 17:22:12 +00:00
Merge branch 'master' of https://git.magicalgirl.moe/STJr/SRB2Internal.git into toast_cleanup
# Conflicts: # src/p_mobj.c
This commit is contained in:
commit
d5988c4f8c
76 changed files with 10106 additions and 228 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:
|
||||
|
|
33
.travis.yml
33
.travis.yml
|
@ -18,11 +18,14 @@ matrix:
|
|||
- 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
|
||||
|
@ -32,11 +35,14 @@ matrix:
|
|||
- 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
|
||||
|
@ -46,11 +52,14 @@ matrix:
|
|||
- 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
|
||||
|
@ -67,11 +76,13 @@ matrix:
|
|||
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
|
||||
|
@ -83,11 +94,13 @@ matrix:
|
|||
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
|
||||
|
@ -99,11 +112,13 @@ matrix:
|
|||
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
|
||||
|
@ -119,11 +134,13 @@ matrix:
|
|||
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
|
||||
|
@ -135,11 +152,13 @@ matrix:
|
|||
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
|
||||
|
@ -151,11 +170,13 @@ matrix:
|
|||
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
|
||||
|
@ -167,11 +188,13 @@ matrix:
|
|||
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
|
||||
|
@ -183,11 +206,13 @@ matrix:
|
|||
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
|
||||
|
@ -199,11 +224,13 @@ matrix:
|
|||
# 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
|
||||
|
@ -215,11 +242,13 @@ matrix:
|
|||
# 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
|
||||
|
@ -561,12 +590,15 @@ 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:
|
||||
|
@ -575,6 +607,7 @@ addons:
|
|||
- sdl2_mixer
|
||||
- game-music-emu
|
||||
- p7zip
|
||||
- libopenmpt
|
||||
- cmake
|
||||
update: true
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
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)
|
|
@ -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/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.
|
@ -220,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
|
||||
|
@ -232,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})
|
||||
|
@ -342,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)
|
||||
|
|
16
src/Makefile
16
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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -233,7 +233,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)
|
||||
|
|
183
src/dehacked.c
183
src/dehacked.c
|
@ -1324,6 +1324,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);
|
||||
}
|
||||
|
@ -2266,6 +2268,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"},
|
||||
|
@ -2394,7 +2399,17 @@ static actionpointer_t actionpointers[] =
|
|||
{{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
|
||||
|
@ -4382,15 +4397,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",
|
||||
|
@ -4441,15 +4451,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",
|
||||
|
@ -4468,6 +4494,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",
|
||||
|
@ -4495,6 +4530,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",
|
||||
|
||||
|
@ -5682,6 +5739,85 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
|||
"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",
|
||||
"S_FLAMEJETSTART",
|
||||
|
@ -7011,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",
|
||||
|
@ -7074,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",
|
||||
|
@ -7377,6 +7520,26 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
|
|||
"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",
|
||||
|
@ -7700,6 +7863,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",
|
||||
|
@ -8384,6 +8548,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
|
||||
|
|
|
@ -313,6 +313,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.
|
||||
|
|
|
@ -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
|
||||
|
|
11
src/g_game.c
11
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"
|
||||
|
@ -1847,7 +1848,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;
|
||||
}
|
||||
}
|
||||
|
@ -2394,6 +2397,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);
|
||||
|
@ -2843,6 +2848,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
|
||||
|
|
|
@ -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
|
||||
|
@ -350,6 +355,19 @@ light_t *t_lspr[NUMSPRITES] =
|
|||
&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
|
||||
|
@ -543,6 +561,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
|
||||
|
|
|
@ -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
|
||||
|
|
961
src/info.c
961
src/info.c
File diff suppressed because it is too large
Load diff
198
src/info.h
198
src/info.h
|
@ -115,6 +115,9 @@ void A_CrushclawAim();
|
|||
void A_CrushclawLaunch();
|
||||
void A_VultureVtol();
|
||||
void A_VultureCheck();
|
||||
void A_VultureHover();
|
||||
void A_VultureBlast();
|
||||
void A_VultureFly();
|
||||
void A_SkimChase();
|
||||
void A_SkullAttack();
|
||||
void A_LobShot();
|
||||
|
@ -251,6 +254,17 @@ void A_Boss5PinchShot();
|
|||
void A_Boss5MakeItRain();
|
||||
void A_LookForBetter();
|
||||
void A_Boss5BombExplode();
|
||||
void A_DustDevilThink();
|
||||
void A_TNTExplode();
|
||||
void A_DebrisRandom();
|
||||
void A_TrainCameo();
|
||||
void A_TrainCameo2();
|
||||
void A_CanarivoreGas();
|
||||
void A_KillSegments();
|
||||
void A_SnapperSpawn();
|
||||
void A_SnapperThinker();
|
||||
void A_SaloonDoorSpawn();
|
||||
void A_MinecartSparkThink();
|
||||
|
||||
// ratio of states to sprites to mobj types is roughly 6 : 1 : 1
|
||||
#define NUMMOBJFREESLOTS 512
|
||||
|
@ -291,9 +305,14 @@ typedef enum sprite
|
|||
SPR_SPSH, // Egg Guard
|
||||
SPR_ESHI, // Egg Guard's shield
|
||||
SPR_GSNP, // Green Snapper
|
||||
SPR_GSNL, // Green Snapper leg
|
||||
SPR_GSNH, // Green Snapper head
|
||||
SPR_MNUS, // Minus
|
||||
SPR_MNUD, // Minus dirt
|
||||
SPR_SSHL, // Spring Shell
|
||||
SPR_UNID, // Unidus
|
||||
SPR_CANA, // Canarivore
|
||||
SPR_CANG, // Canarivore gas
|
||||
|
||||
// Generic Boss Items
|
||||
SPR_JETF, // Boss jet fumes
|
||||
|
@ -476,6 +495,19 @@ typedef enum sprite
|
|||
SPR_WWSG, // Caution Sign
|
||||
SPR_WWS2, // Cacti Sign
|
||||
SPR_WWS3, // Sharp Turn Sign
|
||||
SPR_OILL, // Oil lamp
|
||||
SPR_OILF, // Oil lamp flare
|
||||
SPR_BARR, // TNT barrel
|
||||
SPR_REMT, // TNT proximity shell
|
||||
SPR_TAZD, // Dust devil
|
||||
SPR_ADST, // Arid dust
|
||||
SPR_MCRT, // Minecart
|
||||
SPR_MCSP, // Minecart spark
|
||||
SPR_NON2, // Saloon door thinker
|
||||
SPR_SALD, // Saloon door
|
||||
SPR_TRAE, // Train cameo locomotive
|
||||
SPR_TRAI, // Train cameo wagon
|
||||
SPR_STEA, // Train steam
|
||||
|
||||
// Red Volcano Scenery
|
||||
SPR_FLME, // Flame jet
|
||||
|
@ -669,6 +701,7 @@ typedef enum sprite
|
|||
SPR_BOM3, // Boss Explosion 2
|
||||
SPR_BOM4, // Underwater Explosion
|
||||
SPR_BMNB, // Mine Explosion
|
||||
SPR_WDDB, // Wood Debris
|
||||
|
||||
// Crumbly rocks
|
||||
SPR_ROIA,
|
||||
|
@ -1127,15 +1160,10 @@ typedef enum state
|
|||
|
||||
// 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,
|
||||
|
@ -1186,15 +1214,31 @@ typedef enum state
|
|||
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,
|
||||
|
@ -1213,6 +1257,15 @@ typedef enum state
|
|||
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,
|
||||
|
@ -1240,6 +1293,28 @@ typedef enum state
|
|||
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,
|
||||
|
||||
|
@ -2427,6 +2502,85 @@ typedef enum state
|
|||
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,
|
||||
S_FLAMEJETSTART,
|
||||
|
@ -3756,6 +3910,8 @@ typedef enum state
|
|||
S_DUST3,
|
||||
S_DUST4,
|
||||
|
||||
S_WOODDEBRIS,
|
||||
|
||||
S_ROCKSPAWN,
|
||||
|
||||
S_ROCKCRUMBLEA,
|
||||
|
@ -3839,11 +3995,16 @@ typedef enum mobj_type
|
|||
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,
|
||||
|
@ -4142,6 +4303,26 @@ typedef enum mobj_type
|
|||
MT_ARIDSIGN_CAUTION, // Caution Sign
|
||||
MT_ARIDSIGN_CACTI, // Cacti Sign
|
||||
MT_ARIDSIGN_SHARPTURN, // Sharp Turn Sign
|
||||
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,
|
||||
|
@ -4465,6 +4646,7 @@ typedef enum mobj_type
|
|||
MT_EXPLODE, // Robot Explosion
|
||||
MT_UWEXPLODE, // Underwater Explosion
|
||||
MT_DUST,
|
||||
MT_WOODDEBRIS,
|
||||
MT_ROCKSPAWNER,
|
||||
MT_FALLINGROCK,
|
||||
MT_ROCKCRUMBLE1,
|
||||
|
|
|
@ -2080,6 +2080,8 @@ static int mapheaderinfo_get(lua_State *L)
|
|||
lua_pushinteger(L, header->levelflags);
|
||||
else if (fastcmp(field,"menuflags"))
|
||||
lua_pushinteger(L, header->menuflags);
|
||||
else if (fastcmp(field,"startrings"))
|
||||
lua_pushinteger(L, header->startrings);
|
||||
// TODO add support for reading numGradedMares and grades
|
||||
else {
|
||||
// Read custom vars now
|
||||
|
|
|
@ -1304,6 +1304,11 @@ static menuitem_t OP_SoundOptionsMenu[] =
|
|||
|
||||
{IT_HEADER, NULL, "Advanced", NULL, 103}, // 50
|
||||
{IT_STRING | IT_CVAR, NULL, "Closed Captioning", &cv_closedcaptioning, 115}, // 56
|
||||
|
||||
#ifdef HAVE_OPENMPT
|
||||
{IT_HEADER, NULL, "OpenMPT Settings", NULL, 133},
|
||||
{IT_STRING | IT_CVAR, NULL, "Instrument Filter", &cv_modfilter, 145}
|
||||
#endif
|
||||
};
|
||||
|
||||
static menuitem_t OP_DataOptionsMenu[] =
|
||||
|
@ -4478,7 +4483,7 @@ static boolean M_CanShowLevelOnPlatter(INT32 mapnum, INT32 gt)
|
|||
return false;
|
||||
|
||||
case LLM_LEVELSELECT:
|
||||
if (mapheaderinfo[mapnum]->levelselect != maplistoption)
|
||||
if (!(mapheaderinfo[mapnum]->levelselect & maplistoption))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
|
@ -6753,7 +6758,7 @@ static void M_LoadGameLevelSelect(INT32 choice)
|
|||
|
||||
SP_LevelSelectDef.prevMenu = currentMenu;
|
||||
levellistmode = LLM_LEVELSELECT;
|
||||
maplistoption = 1;
|
||||
maplistoption = 1+2;
|
||||
|
||||
if (!M_PrepareLevelPlatter(-1, true))
|
||||
{
|
||||
|
|
11
src/m_misc.c
11
src/m_misc.c
|
@ -1057,7 +1057,7 @@ static boolean M_SetupaPNG(png_const_charp filename, png_bytep pal)
|
|||
static inline moviemode_t M_StartMovieAPNG(const char *pathname)
|
||||
{
|
||||
#ifdef USE_APNG
|
||||
UINT8 *palette;
|
||||
UINT8 *palette = NULL;
|
||||
const char *freename = NULL;
|
||||
boolean ret = false;
|
||||
|
||||
|
@ -1073,8 +1073,13 @@ static inline moviemode_t M_StartMovieAPNG(const char *pathname)
|
|||
return MM_OFF;
|
||||
}
|
||||
|
||||
if (rendermode == render_soft) M_CreateScreenShotPalette();
|
||||
ret = M_SetupaPNG(va(pandf,pathname,freename), (palette = screenshot_palette));
|
||||
if (rendermode == render_soft)
|
||||
{
|
||||
M_CreateScreenShotPalette();
|
||||
palette = screenshot_palette;
|
||||
}
|
||||
|
||||
ret = M_SetupaPNG(va(pandf,pathname,freename), palette);
|
||||
|
||||
if (!ret)
|
||||
{
|
||||
|
|
1130
src/p_enemy.c
1130
src/p_enemy.c
File diff suppressed because it is too large
Load diff
|
@ -1694,6 +1694,73 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
|
|||
}
|
||||
return;
|
||||
|
||||
case MT_CANARIVORE_GAS:
|
||||
// if player and gas touch, attach gas to player (overriding any gas that already attached) and apply slowdown effect
|
||||
P_UnsetThingPosition(special);
|
||||
special->x = toucher->x - toucher->momx/2;
|
||||
special->y = toucher->y - toucher->momy/2;
|
||||
special->z = toucher->z - toucher->momz/2;
|
||||
P_SetThingPosition(special);
|
||||
toucher->momx = FixedMul(toucher->momx, 50*FRACUNIT/51);
|
||||
toucher->momy = FixedMul(toucher->momy, 50*FRACUNIT/51);
|
||||
special->momx = toucher->momx;
|
||||
special->momy = toucher->momy;
|
||||
special->momz = toucher->momz;
|
||||
return;
|
||||
|
||||
case MT_MINECARTSPAWNER:
|
||||
if (!special->fuse || player->powers[pw_carry] != CR_MINECART)
|
||||
{
|
||||
mobj_t *mcart = P_SpawnMobj(special->x, special->y, special->z, MT_MINECART);
|
||||
P_SetTarget(&mcart->target, toucher);
|
||||
mcart->angle = toucher->angle = player->drawangle = special->angle;
|
||||
mcart->friction = FRACUNIT;
|
||||
|
||||
P_ResetPlayer(player);
|
||||
player->pflags |= PF_JUMPDOWN;
|
||||
player->powers[pw_carry] = CR_MINECART;
|
||||
toucher->player->pflags &= ~PF_APPLYAUTOBRAKE;
|
||||
P_SetTarget(&toucher->tracer, mcart);
|
||||
toucher->momx = toucher->momy = toucher->momz = 0;
|
||||
|
||||
special->fuse = 3*TICRATE;
|
||||
special->flags2 |= MF2_DONTDRAW;
|
||||
}
|
||||
return;
|
||||
|
||||
case MT_MINECARTEND:
|
||||
if (player->powers[pw_carry] == CR_MINECART && toucher->tracer && !P_MobjWasRemoved(toucher->tracer) && toucher->tracer->health)
|
||||
{
|
||||
fixed_t maxz = max(toucher->z, special->z + 35*special->scale);
|
||||
|
||||
toucher->momx = toucher->tracer->momx/2;
|
||||
toucher->momy = toucher->tracer->momy/2;
|
||||
toucher->momz = toucher->tracer->momz + P_AproxDistance(toucher->tracer->momx, toucher->tracer->momy)/2;
|
||||
P_ResetPlayer(player);
|
||||
player->pflags &= ~PF_APPLYAUTOBRAKE;
|
||||
P_SetPlayerMobjState(toucher, S_PLAY_FALL);
|
||||
P_SetTarget(&toucher->tracer->target, NULL);
|
||||
P_KillMobj(toucher->tracer, toucher, special, 0);
|
||||
P_SetTarget(&toucher->tracer, NULL);
|
||||
player->powers[pw_carry] = CR_NONE;
|
||||
P_UnsetThingPosition(toucher);
|
||||
toucher->x = special->x;
|
||||
toucher->y = special->y;
|
||||
toucher->z = maxz;
|
||||
P_SetThingPosition(toucher);
|
||||
}
|
||||
return;
|
||||
|
||||
case MT_MINECARTSWITCHPOINT:
|
||||
if (player->powers[pw_carry] == CR_MINECART && toucher->tracer && !P_MobjWasRemoved(toucher->tracer) && toucher->tracer->health)
|
||||
{
|
||||
mobjflag2_t destambush = special->flags2 & MF2_AMBUSH;
|
||||
angle_t angdiff = toucher->tracer->angle - special->angle;
|
||||
if (angdiff > ANGLE_90 && angdiff < ANGLE_270)
|
||||
destambush ^= MF2_AMBUSH;
|
||||
toucher->tracer->flags2 = (toucher->tracer->flags2 & ~MF2_AMBUSH) | destambush;
|
||||
}
|
||||
return;
|
||||
default: // SOC or script pickup
|
||||
if (player->bot)
|
||||
return;
|
||||
|
@ -2541,6 +2608,13 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget
|
|||
target->fuse = TICRATE*2;
|
||||
break;
|
||||
|
||||
case MT_MINECART:
|
||||
A_Scream(target);
|
||||
target->momx = target->momy = target->momz = 0;
|
||||
if (target->target && target->target->health)
|
||||
P_KillMobj(target->target, target, source, 0);
|
||||
break;
|
||||
|
||||
case MT_PLAYER:
|
||||
{
|
||||
target->fuse = TICRATE*3; // timer before mobj disappears from view (even if not an actual player)
|
||||
|
@ -2997,6 +3071,9 @@ static void P_KillPlayer(player_t *player, mobj_t *source, INT32 damage)
|
|||
|
||||
P_ResetPlayer(player);
|
||||
|
||||
if (!player->spectator)
|
||||
player->mo->flags2 &= ~MF2_DONTDRAW;
|
||||
|
||||
P_SetPlayerMobjState(player->mo, player->mo->info->deathstate);
|
||||
if (gametype == GT_CTF && (player->gotflag & (GF_REDFLAG|GF_BLUEFLAG)))
|
||||
{
|
||||
|
@ -3624,9 +3701,6 @@ void P_PlayerRingBurst(player_t *player, INT32 num_rings)
|
|||
}
|
||||
if (player->mo->eflags & MFE_VERTICALFLIP)
|
||||
mo->momz *= -1;
|
||||
|
||||
if (P_IsObjectOnGround(player->mo))
|
||||
player->powers[pw_carry] = CR_NONE;
|
||||
}
|
||||
|
||||
player->losstime += 10*TICRATE;
|
||||
|
|
|
@ -230,6 +230,7 @@ boolean P_SetPlayerMobjState(mobj_t *mobj, statenum_t state);
|
|||
boolean P_SetMobjState(mobj_t *mobj, statenum_t state);
|
||||
void P_RunShields(void);
|
||||
void P_RunOverlays(void);
|
||||
void P_HandleMinecartSegments(mobj_t *mobj);
|
||||
void P_MobjThinker(mobj_t *mobj);
|
||||
boolean P_RailThinker(mobj_t *mobj);
|
||||
void P_PushableThinker(mobj_t *mobj);
|
||||
|
|
87
src/p_map.c
87
src/p_map.c
|
@ -818,6 +818,83 @@ static boolean PIT_CheckThing(mobj_t *thing)
|
|||
}
|
||||
#endif
|
||||
|
||||
if (tmthing->type == MT_MINECART)
|
||||
{
|
||||
//height check
|
||||
if (tmthing->z > thing->z + thing->height || thing->z > tmthing->z + tmthing->height || !(thing->health))
|
||||
return true;
|
||||
|
||||
if (thing->type == MT_TNTBARREL)
|
||||
P_KillMobj(thing, tmthing, tmthing->target, 0);
|
||||
else if ((thing->flags & MF_MONITOR) || (thing->flags & MF_ENEMY))
|
||||
{
|
||||
P_KillMobj(thing, tmthing, tmthing->target, 0);
|
||||
if (tmthing->momz*P_MobjFlip(tmthing) < 0)
|
||||
tmthing->momz = abs(tmthing->momz)*P_MobjFlip(tmthing);
|
||||
}
|
||||
}
|
||||
|
||||
if (thing->type == MT_SALOONDOOR && tmthing->player)
|
||||
{
|
||||
if (tmthing->player->powers[pw_carry] == CR_MINECART && tmthing->tracer && !P_MobjWasRemoved(tmthing->tracer) && tmthing->tracer->health)
|
||||
{
|
||||
fixed_t dx = tmthing->tracer->momx;
|
||||
fixed_t dy = tmthing->tracer->momy;
|
||||
fixed_t dm = min(FixedHypot(dx, dy), 16*FRACUNIT);
|
||||
angle_t ang = R_PointToAngle2(0, 0, dx, dy) - thing->angle;
|
||||
fixed_t s = FINESINE((ang >> ANGLETOFINESHIFT) & FINEMASK);
|
||||
S_StartSound(tmthing, thing->info->activesound);
|
||||
thing->extravalue2 += 2*FixedMul(s, dm)/3;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if (thing->type == MT_TNTBARREL && tmthing->player)
|
||||
{
|
||||
if (tmthing->momz < 0)
|
||||
{
|
||||
if (tmthing->z + tmthing->momz > thing->z + thing->height)
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (tmthing->z > thing->z + thing->height)
|
||||
return true;
|
||||
}
|
||||
|
||||
if (tmthing->momz > 0)
|
||||
{
|
||||
if (tmthing->z + tmthing->height + tmthing->momz < thing->z)
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (tmthing->z + tmthing->height < thing->z)
|
||||
return true;
|
||||
}
|
||||
|
||||
if ((tmthing->player->pflags & (PF_SPINNING | PF_GLIDING))
|
||||
|| ((tmthing->player->pflags & PF_JUMPED)
|
||||
&& (!(tmthing->player->pflags & PF_NOJUMPDAMAGE)
|
||||
|| (tmthing->player->charability == CA_TWINSPIN && tmthing->player->panim == PA_ABILITY)))
|
||||
|| (tmthing->player->charability2 == CA2_MELEE && tmthing->player->panim == PA_ABILITY2)
|
||||
|| ((tmthing->player->charflags & SF_STOMPDAMAGE || tmthing->player->pflags & PF_BOUNCING)
|
||||
&& (P_MobjFlip(tmthing)*(tmthing->z - (thing->z + thing->height / 2)) > 0) && (P_MobjFlip(tmthing)*tmthing->momz < 0))
|
||||
|| (((tmthing->player->powers[pw_shield] & SH_NOSTACK) == SH_ELEMENTAL || (tmthing->player->powers[pw_shield] & SH_NOSTACK) == SH_BUBBLEWRAP) && (tmthing->player->pflags & PF_SHIELDABILITY)))
|
||||
P_DamageMobj(thing, tmthing, tmthing, 1, 0);
|
||||
}
|
||||
|
||||
if (thing->type == MT_VULTURE && tmthing->type == MT_VULTURE)
|
||||
{
|
||||
fixed_t dx = thing->x - tmthing->x;
|
||||
fixed_t dy = thing->y - tmthing->y;
|
||||
fixed_t dz = thing->z - tmthing->z;
|
||||
fixed_t dm = FixedHypot(dz, FixedHypot(dx, dy));
|
||||
thing->momx += FixedDiv(dx, dm);
|
||||
thing->momy += FixedDiv(dy, dm);
|
||||
thing->momz += FixedDiv(dz, dm);
|
||||
}
|
||||
|
||||
if (tmthing->type == MT_FANG && thing->type == MT_FSGNB)
|
||||
{
|
||||
if (thing->z > tmthing->z + tmthing->height)
|
||||
|
@ -1395,7 +1472,7 @@ static boolean PIT_CheckThing(mobj_t *thing)
|
|||
|
||||
if (thing->type == MT_FAN || thing->type == MT_STEAM)
|
||||
P_DoFanAndGasJet(thing, tmthing);
|
||||
else if (thing->flags & MF_SPRING)
|
||||
else if (thing->flags & MF_SPRING && tmthing->player->powers[pw_carry] != CR_MINECART)
|
||||
{
|
||||
if ( thing->z <= tmthing->z + tmthing->height
|
||||
&& tmthing->z <= thing->z + thing->height)
|
||||
|
@ -3849,6 +3926,8 @@ static boolean nofit;
|
|||
static boolean PIT_ChangeSector(mobj_t *thing, boolean realcrush)
|
||||
{
|
||||
mobj_t *killer = NULL;
|
||||
//If a thing is both pushable and vulnerable, it doesn't block the crusher because it gets killed.
|
||||
boolean immunepushable = ((thing->flags & (MF_PUSHABLE | MF_SHOOTABLE)) == MF_PUSHABLE);
|
||||
|
||||
if (P_ThingHeightClip(thing))
|
||||
{
|
||||
|
@ -3867,7 +3946,7 @@ static boolean PIT_ChangeSector(mobj_t *thing, boolean realcrush)
|
|||
// just be blocked by another object - check if it's really a ceiling!
|
||||
if (thing->z + thing->height > thing->ceilingz && thing->z <= thing->ceilingz)
|
||||
{
|
||||
if (thing->flags & MF_PUSHABLE && thing->z + thing->height > thing->subsector->sector->ceilingheight)
|
||||
if (immunepushable && thing->z + thing->height > thing->subsector->sector->ceilingheight)
|
||||
{
|
||||
//Thing is a pushable and blocks the moving ceiling
|
||||
nofit = true;
|
||||
|
@ -3875,7 +3954,7 @@ static boolean PIT_ChangeSector(mobj_t *thing, boolean realcrush)
|
|||
}
|
||||
|
||||
//Check FOFs in the sector
|
||||
if (thing->subsector->sector->ffloors && (realcrush || thing->flags & MF_PUSHABLE))
|
||||
if (thing->subsector->sector->ffloors && (realcrush || immunepushable))
|
||||
{
|
||||
ffloor_t *rover;
|
||||
fixed_t topheight, bottomheight;
|
||||
|
@ -3902,7 +3981,7 @@ static boolean PIT_ChangeSector(mobj_t *thing, boolean realcrush)
|
|||
delta2 = thingtop - (bottomheight + topheight)/2;
|
||||
if (bottomheight <= thing->ceilingz && abs(delta1) >= abs(delta2))
|
||||
{
|
||||
if (thing->flags & MF_PUSHABLE)
|
||||
if (immunepushable)
|
||||
{
|
||||
//FOF is blocked by pushable
|
||||
nofit = true;
|
||||
|
|
216
src/p_mobj.c
216
src/p_mobj.c
|
@ -2580,9 +2580,9 @@ static boolean P_ZMovement(mobj_t *mo)
|
|||
|
||||
if (!mo->player && P_CheckDeathPitCollide(mo))
|
||||
{
|
||||
if (mo->flags & MF_ENEMY || mo->flags & MF_BOSS)
|
||||
if (mo->flags & MF_ENEMY || mo->flags & MF_BOSS || mo->type == MT_MINECART)
|
||||
{
|
||||
// Kill enemies and bosses that fall into death pits.
|
||||
// Kill enemies, bosses and minecarts that fall into death pits.
|
||||
if (mo->health)
|
||||
{
|
||||
P_KillMobj(mo, NULL, NULL, 0);
|
||||
|
@ -6725,6 +6725,67 @@ static void P_KoopaThinker(mobj_t *koopa)
|
|||
}
|
||||
}
|
||||
|
||||
// Spawns and chains the minecart sides.
|
||||
static void P_SpawnMinecartSegments(mobj_t *mobj, boolean mode)
|
||||
{
|
||||
fixed_t x = mobj->x;
|
||||
fixed_t y = mobj->y;
|
||||
fixed_t z = mobj->z;
|
||||
mobj_t *prevseg = mobj;
|
||||
mobj_t *seg;
|
||||
UINT8 i;
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
seg = P_SpawnMobj(x, y, z, MT_MINECARTSEG);
|
||||
P_SetMobjState(seg, (statenum_t)(S_MINECARTSEG_FRONT + i));
|
||||
if (i >= 2)
|
||||
seg->extravalue1 = (i == 2) ? -18 : 18;
|
||||
else
|
||||
{
|
||||
seg->extravalue2 = (i == 0) ? 24 : -24;
|
||||
seg->cusval = -90;
|
||||
}
|
||||
if (!mode)
|
||||
seg->frame &= ~FF_ANIMATE;
|
||||
P_SetTarget(&prevseg->tracer, seg);
|
||||
prevseg = seg;
|
||||
}
|
||||
}
|
||||
|
||||
// Updates the chained segments.
|
||||
static void P_UpdateMinecartSegments(mobj_t *mobj)
|
||||
{
|
||||
mobj_t *seg = mobj->tracer;
|
||||
fixed_t x = mobj->x;
|
||||
fixed_t y = mobj->y;
|
||||
fixed_t z = mobj->z;
|
||||
angle_t ang = mobj->angle;
|
||||
angle_t fa = (ang >> ANGLETOFINESHIFT) & FINEMASK;
|
||||
fixed_t c = FINECOSINE(fa);
|
||||
fixed_t s = FINESINE(fa);
|
||||
INT32 dx, dy;
|
||||
INT32 sang;
|
||||
|
||||
while (seg)
|
||||
{
|
||||
dx = seg->extravalue1;
|
||||
dy = seg->extravalue2;
|
||||
sang = seg->cusval;
|
||||
P_TeleportMove(seg, x + s*dx + c*dy, y - c*dx + s*dy, z);
|
||||
seg->angle = ang + FixedAngle(FRACUNIT*sang);
|
||||
seg->flags2 = (seg->flags2 & ~MF2_DONTDRAW) | (mobj->flags2 & MF2_DONTDRAW);
|
||||
seg = seg->tracer;
|
||||
}
|
||||
}
|
||||
|
||||
void P_HandleMinecartSegments(mobj_t *mobj)
|
||||
{
|
||||
if (!mobj->tracer)
|
||||
P_SpawnMinecartSegments(mobj, (mobj->type == MT_MINECART));
|
||||
P_UpdateMinecartSegments(mobj);
|
||||
}
|
||||
|
||||
//
|
||||
// P_MobjThinker
|
||||
//
|
||||
|
@ -7502,8 +7563,6 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
break;
|
||||
case MT_PLAYER:
|
||||
/// \todo Have the player's dead body completely finish its animation even if they've already respawned.
|
||||
if (!(mobj->flags2 & MF2_DONTDRAW))
|
||||
{
|
||||
if (!mobj->fuse)
|
||||
{ // Go away.
|
||||
/// \todo Actually go ahead and remove mobj completely, and fix any bugs and crashes doing this creates. Chasecam should stop moving, and F12 should never return to it.
|
||||
|
@ -7520,19 +7579,18 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
{
|
||||
if (mobj->player && !(mobj->fuse % 8) && (mobj->player->charflags & SF_MACHINE))
|
||||
{
|
||||
fixed_t r = mobj->radius>>FRACBITS;
|
||||
fixed_t r = mobj->radius >> FRACBITS;
|
||||
mobj_t *explosion = P_SpawnMobj(
|
||||
mobj->x + (P_RandomRange(r, -r)<<FRACBITS),
|
||||
mobj->y + (P_RandomRange(r, -r)<<FRACBITS),
|
||||
mobj->z + (P_RandomKey(mobj->height>>FRACBITS)<<FRACBITS),
|
||||
mobj->x + (P_RandomRange(r, -r) << FRACBITS),
|
||||
mobj->y + (P_RandomRange(r, -r) << FRACBITS),
|
||||
mobj->z + (P_RandomKey(mobj->height >> FRACBITS) << FRACBITS),
|
||||
MT_BOSSEXPLODE);
|
||||
S_StartSound(explosion, sfx_cybdth);
|
||||
}
|
||||
if (mobj->movedir == DMG_DROWNED)
|
||||
P_SetObjectMomZ(mobj, -FRACUNIT/2, true); // slower fall from drowning
|
||||
P_SetObjectMomZ(mobj, -FRACUNIT / 2, true); // slower fall from drowning
|
||||
else
|
||||
P_SetObjectMomZ(mobj, -2*FRACUNIT/3, true);
|
||||
}
|
||||
P_SetObjectMomZ(mobj, -2 * FRACUNIT / 3, true);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
@ -8416,6 +8474,114 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
mobj->flags2 |= MF2_DONTDRAW;
|
||||
}
|
||||
break;
|
||||
case MT_TRAINDUSTSPAWNER:
|
||||
if (leveltime % 5 == 0) {
|
||||
mobj_t *traindust = P_SpawnMobj(mobj->x, mobj->y, mobj->z, MT_PARTICLE);
|
||||
traindust->flags = MF_SCENERY;
|
||||
P_SetMobjState(traindust, S_TRAINDUST);
|
||||
traindust->frame = P_RandomRange(0, 8) | FF_TRANS90;
|
||||
traindust->angle = mobj->angle;
|
||||
traindust->tics = TICRATE * 4;
|
||||
traindust->destscale = FRACUNIT * 64;
|
||||
traindust->scalespeed = FRACUNIT / 24;
|
||||
P_SetScale(traindust, FRACUNIT * 6);
|
||||
}
|
||||
break;
|
||||
case MT_TRAINSTEAMSPAWNER:
|
||||
if (leveltime % 5 == 0) {
|
||||
mobj_t *steam = P_SpawnMobj(mobj->x + FRACUNIT*P_SignedRandom() / 2, mobj->y + FRACUNIT*P_SignedRandom() / 2, mobj->z, MT_PARTICLE);
|
||||
P_SetMobjState(steam, S_TRAINSTEAM);
|
||||
steam->frame = P_RandomRange(0, 1) | FF_TRANS90;
|
||||
steam->tics = TICRATE * 8;
|
||||
steam->destscale = FRACUNIT * 64;
|
||||
steam->scalespeed = FRACUNIT / 8;
|
||||
P_SetScale(steam, FRACUNIT * 16);
|
||||
steam->momx = P_SignedRandom() * 32;
|
||||
steam->momy = -64 * FRACUNIT;
|
||||
steam->momz = 2 * FRACUNIT;
|
||||
}
|
||||
break;
|
||||
case MT_CANARIVORE_GAS:
|
||||
{
|
||||
fixed_t momz;
|
||||
|
||||
if (mobj->flags2 & MF2_AMBUSH)
|
||||
{
|
||||
mobj->momx = FixedMul(mobj->momx, 50 * FRACUNIT / 51);
|
||||
mobj->momy = FixedMul(mobj->momy, 50 * FRACUNIT / 51);
|
||||
break;
|
||||
}
|
||||
|
||||
if (mobj->eflags & MFE_VERTICALFLIP)
|
||||
{
|
||||
if ((mobj->z + mobj->height + mobj->momz) <= mobj->ceilingz)
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((mobj->z + mobj->momz) >= mobj->floorz)
|
||||
break;
|
||||
}
|
||||
|
||||
momz = abs(mobj->momz);
|
||||
if (R_PointToDist2(0, 0, mobj->momx, mobj->momy) < momz)
|
||||
P_InstaThrust(mobj, R_PointToAngle2(0, 0, mobj->momx, mobj->momy), momz);
|
||||
mobj->flags |= MF_NOGRAVITY|MF_NOCLIPHEIGHT;
|
||||
mobj->flags2 |= MF2_AMBUSH;
|
||||
break;
|
||||
}
|
||||
case MT_SALOONDOOR:
|
||||
{
|
||||
fixed_t x = mobj->tracer->x;
|
||||
fixed_t y = mobj->tracer->y;
|
||||
fixed_t z = mobj->tracer->z;
|
||||
angle_t oang = FixedAngle(mobj->extravalue1);
|
||||
angle_t fa = (oang >> ANGLETOFINESHIFT) & FINEMASK;
|
||||
fixed_t c0 = -96*FINECOSINE(fa);
|
||||
fixed_t s0 = -96*FINESINE(fa);
|
||||
angle_t fma;
|
||||
fixed_t c, s;
|
||||
angle_t angdiff;
|
||||
|
||||
// Adjust angular speed
|
||||
fixed_t da = AngleFixed(mobj->angle - oang);
|
||||
if (da > 180*FRACUNIT)
|
||||
da -= 360*FRACUNIT;
|
||||
mobj->extravalue2 = 8*(mobj->extravalue2 - da/32)/9;
|
||||
|
||||
// Update angle
|
||||
mobj->angle += FixedAngle(mobj->extravalue2);
|
||||
|
||||
angdiff = mobj->angle - FixedAngle(mobj->extravalue1);
|
||||
if (angdiff > (ANGLE_90 - ANG2) && angdiff < ANGLE_180)
|
||||
{
|
||||
mobj->angle = FixedAngle(mobj->extravalue1) + (ANGLE_90 - ANG2);
|
||||
mobj->extravalue2 /= 2;
|
||||
}
|
||||
else if (angdiff < (ANGLE_270 + ANG2) && angdiff >= ANGLE_180)
|
||||
{
|
||||
mobj->angle = FixedAngle(mobj->extravalue1) + (ANGLE_270 + ANG2);
|
||||
mobj->extravalue2 /= 2;
|
||||
}
|
||||
|
||||
// Update position
|
||||
fma = (mobj->angle >> ANGLETOFINESHIFT) & FINEMASK;
|
||||
c = 48*FINECOSINE(fma);
|
||||
s = 48*FINESINE(fma);
|
||||
P_TeleportMove(mobj, x + c0 + c, y + s0 + s, z);
|
||||
break;
|
||||
}
|
||||
case MT_MINECARTSPAWNER:
|
||||
P_HandleMinecartSegments(mobj);
|
||||
if (!mobj->fuse || mobj->fuse > TICRATE)
|
||||
break;
|
||||
if (mobj->fuse == 2)
|
||||
{
|
||||
mobj->fuse = 0;
|
||||
break;
|
||||
}
|
||||
mobj->flags2 ^= MF2_DONTDRAW;
|
||||
break;
|
||||
case MT_SPINFIRE:
|
||||
if (mobj->flags & MF_NOGRAVITY)
|
||||
{
|
||||
|
@ -8492,6 +8658,10 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
// Check fuse
|
||||
if (mobj->fuse)
|
||||
{
|
||||
|
||||
if (mobj->type == MT_SNAPPER_HEAD || mobj->type == MT_SNAPPER_LEG || mobj->type == MT_MINECARTSEG)
|
||||
mobj->flags2 ^= MF2_DONTDRAW;
|
||||
|
||||
mobj->fuse--;
|
||||
if (!mobj->fuse)
|
||||
{
|
||||
|
@ -8796,6 +8966,16 @@ void P_PushableThinker(mobj_t *mobj)
|
|||
if (mobj->flags & MF_PUSHABLE && !(mobj->momx || mobj->momy))
|
||||
P_TryMove(mobj, mobj->x, mobj->y, true);
|
||||
|
||||
if (mobj->type == MT_MINECART && mobj->health)
|
||||
{
|
||||
// If player is ded, remove this minecart
|
||||
if (!mobj->target || P_MobjWasRemoved(mobj->target) || !mobj->target->health || !mobj->target->player || mobj->target->player->powers[pw_carry] != CR_MINECART)
|
||||
{
|
||||
P_KillMobj(mobj, NULL, NULL, 0);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (mobj->fuse == 1) // it would explode in the MobjThinker code
|
||||
{
|
||||
mobj_t *spawnmo;
|
||||
|
@ -9170,6 +9350,20 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type)
|
|||
case MT_FBOMB:
|
||||
mobj->flags2 |= MF2_EXPLOSION;
|
||||
break;
|
||||
case MT_OILLAMP:
|
||||
{
|
||||
mobj_t* overlay = P_SpawnMobj(mobj->x, mobj->y, mobj->z, MT_OVERLAY);
|
||||
P_SetTarget(&overlay->target, mobj);
|
||||
P_SetMobjState(overlay, S_OILLAMPFLARE);
|
||||
break;
|
||||
}
|
||||
case MT_TNTBARREL:
|
||||
mobj->momx = 1; //stack hack
|
||||
break;
|
||||
case MT_MINECARTEND:
|
||||
mobj->tracer = P_SpawnMobjFromMobj(mobj, 0, 0, 0, MT_MINECARTENDSOLID);
|
||||
mobj->tracer->angle = mobj->angle + ANGLE_90;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -209,6 +209,7 @@ static void P_ClearSingleMapHeaderInfo(INT16 i)
|
|||
mapheaderinfo[num]->actnum = 0;
|
||||
mapheaderinfo[num]->typeoflevel = 0;
|
||||
mapheaderinfo[num]->nextlevel = (INT16)(i + 1);
|
||||
mapheaderinfo[num]->startrings = 0;
|
||||
snprintf(mapheaderinfo[num]->musname, 7, "%sM", G_BuildMapName(i));
|
||||
mapheaderinfo[num]->musname[6] = 0;
|
||||
mapheaderinfo[num]->mustrack = 0;
|
||||
|
@ -2175,7 +2176,7 @@ static void P_LevelInitStuff(void)
|
|||
tokenbits = 0;
|
||||
runemeraldmanager = false;
|
||||
emeraldspawndelay = 60*TICRATE;
|
||||
nummaprings = 0;
|
||||
nummaprings = mapheaderinfo[gamemap-1]->startrings;
|
||||
|
||||
// emerald hunt
|
||||
hunt1 = hunt2 = hunt3 = NULL;
|
||||
|
|
|
@ -588,18 +588,23 @@ void P_CopySectorSlope(line_t *line)
|
|||
int i, special = line->special;
|
||||
|
||||
// Check for copy linedefs
|
||||
for(i = -1; (i = P_FindSectorFromLineTag(line, i)) >= 0;)
|
||||
for (i = -1; (i = P_FindSectorFromLineTag(line, i)) >= 0;)
|
||||
{
|
||||
sector_t *srcsec = sectors + i;
|
||||
|
||||
if((special - 719) & 1 && !fsec->f_slope && srcsec->f_slope)
|
||||
if ((special - 719) & 1 && !fsec->f_slope && srcsec->f_slope)
|
||||
fsec->f_slope = srcsec->f_slope; //P_CopySlope(srcsec->f_slope);
|
||||
if((special - 719) & 2 && !fsec->c_slope && srcsec->c_slope)
|
||||
if ((special - 719) & 2 && !fsec->c_slope && srcsec->c_slope)
|
||||
fsec->c_slope = srcsec->c_slope; //P_CopySlope(srcsec->c_slope);
|
||||
}
|
||||
|
||||
fsec->hasslope = true;
|
||||
|
||||
// if this is an FOF control sector, make sure any target sectors also are marked as having slopes
|
||||
if (fsec->numattached)
|
||||
for (i = 0; i < (int)fsec->numattached; i++)
|
||||
sectors[fsec->attached[i]].hasslope = true;
|
||||
|
||||
line->special = 0; // Linedef was use to set slopes, it finished its job, so now make it a normal linedef
|
||||
}
|
||||
|
||||
|
|
|
@ -5745,6 +5745,10 @@ static ffloor_t *P_AddFakeFloor(sector_t *sec, sector_t *sec2, line_t *master, f
|
|||
// Add slopes
|
||||
ffloor->t_slope = &sec2->c_slope;
|
||||
ffloor->b_slope = &sec2->f_slope;
|
||||
// mark the target sector as having slopes, if the FOF has any of its own
|
||||
// (this fixes FOF slopes glitching initially at level load in software mode)
|
||||
if (sec2->hasslope)
|
||||
sec->hasslope = true;
|
||||
#endif
|
||||
|
||||
if ((flags & FF_SOLID) && (master->flags & ML_EFFECT1)) // Block player only
|
||||
|
|
434
src/p_user.c
434
src/p_user.c
|
@ -963,7 +963,7 @@ void P_ResetPlayer(player_t *player)
|
|||
{
|
||||
player->pflags &= ~(PF_SPINNING|PF_STARTDASH|PF_STARTJUMP|PF_JUMPED|PF_NOJUMPDAMAGE|PF_GLIDING|PF_THOKKED|PF_CANCARRY|PF_SHIELDABILITY|PF_BOUNCING);
|
||||
|
||||
if (!(player->powers[pw_carry] == CR_NIGHTSMODE || player->powers[pw_carry] == CR_NIGHTSFALL || player->powers[pw_carry] == CR_BRAKGOOP))
|
||||
if (!(player->powers[pw_carry] == CR_NIGHTSMODE || player->powers[pw_carry] == CR_NIGHTSFALL || player->powers[pw_carry] == CR_BRAKGOOP || player->powers[pw_carry] == CR_MINECART))
|
||||
player->powers[pw_carry] = CR_NONE;
|
||||
|
||||
player->secondjump = 0;
|
||||
|
@ -9860,6 +9860,417 @@ void P_DoPityCheck(player_t *player)
|
|||
}
|
||||
}
|
||||
|
||||
static sector_t *P_GetMinecartSector(fixed_t x, fixed_t y, fixed_t z, fixed_t *nz)
|
||||
{
|
||||
sector_t *sec = R_PointInSubsector(x, y)->sector;
|
||||
|
||||
if ((sec->ceilingheight - sec->floorheight) < 64*FRACUNIT)
|
||||
return NULL;
|
||||
|
||||
if (sec->ffloors)
|
||||
{
|
||||
ffloor_t *rover;
|
||||
for (rover = sec->ffloors; rover; rover = rover->next)
|
||||
{
|
||||
if (!(rover->flags & FF_EXISTS))
|
||||
continue;
|
||||
|
||||
*nz = *rover->t_slope ? P_GetZAt(*rover->t_slope, x, y) : *rover->topheight;
|
||||
if (abs(z - *nz) <= 56*FRACUNIT)
|
||||
{
|
||||
sec = §ors[rover->secnum];
|
||||
return sec;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
*nz = sec->f_slope ? P_GetZAt(sec->f_slope, x, y) : sec->floorheight;
|
||||
if (abs(z - *nz) > 56*FRACUNIT)
|
||||
return NULL;
|
||||
|
||||
return sec;
|
||||
}
|
||||
|
||||
static INT32 P_GetMinecartSpecialLine(sector_t *sec)
|
||||
{
|
||||
INT32 line = -1;
|
||||
|
||||
if (!sec)
|
||||
return line;
|
||||
|
||||
if (sec->tag != 0)
|
||||
line = P_FindSpecialLineFromTag(16, sec->tag, -1);
|
||||
|
||||
// Also try for lines facing the sector itself, with tag 0.
|
||||
{
|
||||
UINT32 i;
|
||||
for (i = 0; i < sec->linecount; i++)
|
||||
{
|
||||
line_t *li = sec->lines[i];
|
||||
if (li->tag == 0 && li->special == 16 && li->frontsector == sec)
|
||||
line = li - lines;
|
||||
}
|
||||
}
|
||||
|
||||
return line;
|
||||
}
|
||||
|
||||
// Get an axis of a certain ID number
|
||||
static mobj_t *P_GetAxis(INT32 num)
|
||||
{
|
||||
thinker_t *th;
|
||||
mobj_t *mobj;
|
||||
|
||||
for (th = thinkercap.next; th != &thinkercap; th = th->next)
|
||||
{
|
||||
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
|
||||
continue;
|
||||
|
||||
mobj = (mobj_t *)th;
|
||||
|
||||
// NiGHTS axes spawn before anything else. If this mobj doesn't have MF2_AXIS, it means we reached the axes' end.
|
||||
if (!(mobj->flags2 & MF2_AXIS))
|
||||
break;
|
||||
|
||||
// Skip if this axis isn't the one we want.
|
||||
if (mobj->health != num)
|
||||
continue;
|
||||
|
||||
return mobj;
|
||||
}
|
||||
CONS_Alert(CONS_WARNING, "P_GetAxis: Track segment %d is missing!\n", num);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// Auxiliary function. For a given position and axis, it calculates the nearest "valid" snap-on position.
|
||||
static void P_GetAxisPosition(fixed_t x, fixed_t y, mobj_t *amo, fixed_t *newx, fixed_t *newy, angle_t *targetangle, angle_t *grind)
|
||||
{
|
||||
fixed_t ax = amo->x;
|
||||
fixed_t ay = amo->y;
|
||||
angle_t ang;
|
||||
angle_t gr = 0;
|
||||
|
||||
if (amo->type == MT_AXISTRANSFERLINE)
|
||||
{
|
||||
ang = amo->angle;
|
||||
// Extra security for cardinal directions.
|
||||
if (ang == ANGLE_90 || ang == ANGLE_270) // Vertical lines
|
||||
x = ax;
|
||||
else if (ang == 0 || ang == ANGLE_180) // Horizontal lines
|
||||
y = ay;
|
||||
else // Diagonal lines
|
||||
{
|
||||
fixed_t distance = R_PointToDist2(ax, ay, x, y);
|
||||
angle_t fad = ((R_PointToAngle2(ax, ay, x, y) - ang) >> ANGLETOFINESHIFT) & FINEMASK;
|
||||
fixed_t cosine = FINECOSINE(fad);
|
||||
angle_t fa = (ang >> ANGLETOFINESHIFT) & FINEMASK;
|
||||
distance = FixedMul(distance, cosine);
|
||||
x = ax + FixedMul(distance, FINECOSINE(fa));
|
||||
y = ay + FixedMul(distance, FINESINE(fa));
|
||||
}
|
||||
}
|
||||
else // Keep minecart to circle
|
||||
{
|
||||
fixed_t rad = amo->radius;
|
||||
fixed_t distfactor = FixedDiv(rad, R_PointToDist2(ax, ay, x, y));
|
||||
|
||||
gr = R_PointToAngle2(ax, ay, x, y);
|
||||
ang = gr + ANGLE_90;
|
||||
x = ax + FixedMul(x - ax, distfactor);
|
||||
y = ay + FixedMul(y - ay, distfactor);
|
||||
}
|
||||
|
||||
*newx = x;
|
||||
*newy = y;
|
||||
*targetangle = ang;
|
||||
*grind = gr;
|
||||
}
|
||||
|
||||
static void P_SpawnSparks(mobj_t *mo, angle_t maindir)
|
||||
{
|
||||
angle_t fa = (mo->angle >> ANGLETOFINESHIFT) & FINEMASK;
|
||||
fixed_t c = FixedMul(FINECOSINE(fa), mo->radius);
|
||||
fixed_t s = FixedMul(FINESINE(fa), mo->radius);
|
||||
mobj_t *spark;
|
||||
SINT8 b1 = (leveltime & 1) ? 1 : -1;
|
||||
SINT8 b2 = (leveltime & 2) ? 1 : -1;
|
||||
fixed_t r1 = FRACUNIT*P_RandomRange(-1, 1);
|
||||
fixed_t r2 = FRACUNIT*P_RandomRange(-1, 1);
|
||||
fixed_t r3 = FRACUNIT*P_RandomRange(-1, 1);
|
||||
fixed_t fm = (maindir >> ANGLETOFINESHIFT) & FINEMASK;
|
||||
|
||||
spark = P_SpawnMobj(mo->x - b2*s + b1*c, mo->y + b2*c + b1*s, mo->z, MT_MINECARTSPARK);
|
||||
spark->momx = mo->momx + r1 + 8*FINECOSINE(fm);
|
||||
spark->momy = mo->momy + r2 + 8*FINESINE(fm);
|
||||
spark->momz = mo->momz + r3;
|
||||
|
||||
P_Thrust(spark, R_PointToAngle2(mo->x, mo->y, spark->x, spark->y), 8*FRACUNIT);
|
||||
P_SetScale(spark, FRACUNIT/4);
|
||||
spark->destscale = spark->scale;
|
||||
spark->fuse = TICRATE/3;
|
||||
}
|
||||
|
||||
// Performs a proximity check on a given direction looking for rails.
|
||||
static mobj_t *P_LookForRails(mobj_t* mobj, fixed_t c, fixed_t s, angle_t targetangle, fixed_t xcom, fixed_t ycom)
|
||||
{
|
||||
INT16 interval = 16;
|
||||
INT16 fwooffset = FixedHypot(mobj->momx, mobj->momy) >> FRACBITS;
|
||||
fixed_t x = mobj->x;
|
||||
fixed_t y = mobj->y;
|
||||
fixed_t z = mobj->z;
|
||||
UINT8 i;
|
||||
|
||||
for (i = 4; i <= 10; i++)
|
||||
{
|
||||
fixed_t nz;
|
||||
INT32 lline;
|
||||
|
||||
x += interval*xcom*i + fwooffset*c*i;
|
||||
y += interval*ycom*i + fwooffset*s*i;
|
||||
|
||||
lline = P_GetMinecartSpecialLine(P_GetMinecartSector(x, y, z, &nz));
|
||||
if (lline != -1)
|
||||
{
|
||||
fixed_t nx, ny;
|
||||
angle_t nang, dummy, angdiff;
|
||||
mobj_t *mark;
|
||||
mobj_t *snax = P_GetAxis(sides[lines[lline].sidenum[0]].textureoffset >> FRACBITS);
|
||||
if (!snax)
|
||||
return NULL;
|
||||
P_GetAxisPosition(x, y, snax, &nx, &ny, &nang, &dummy);
|
||||
angdiff = ((nang - targetangle) + ANG10/2) & ~ANGLE_180;
|
||||
//Axes must be directly parallel or antiparallel, give or take 5 degrees.
|
||||
if (angdiff < ANG10)
|
||||
{
|
||||
mark = P_SpawnMobj(nx, ny, nz, mobj->info->raisestate);
|
||||
return mark;
|
||||
}
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void P_ParabolicMove(mobj_t *mo, fixed_t x, fixed_t y, fixed_t z, fixed_t g, fixed_t speed)
|
||||
{
|
||||
fixed_t dx = x - mo->x;
|
||||
fixed_t dy = y - mo->y;
|
||||
fixed_t dz = z - mo->z;
|
||||
fixed_t dh = P_AproxDistance(dx, dy);
|
||||
fixed_t c = FixedDiv(dx, dh);
|
||||
fixed_t s = FixedDiv(dy, dh);
|
||||
fixed_t fixConst = FixedDiv(speed, g);
|
||||
|
||||
mo->momx = FixedMul(c, speed);
|
||||
mo->momy = FixedMul(s, speed);
|
||||
mo->momz = FixedDiv(dh, 2*fixConst) + FixedDiv(dz, FixedDiv(dh, fixConst/2));
|
||||
}
|
||||
|
||||
static void P_MinecartThink(player_t *player)
|
||||
{
|
||||
mobj_t *minecart = player->mo->tracer;
|
||||
angle_t fa;
|
||||
|
||||
if (!minecart || P_MobjWasRemoved(minecart) || !minecart->health)
|
||||
{
|
||||
// Minecart died on you, so kill yourself.
|
||||
P_KillMobj(player->mo, NULL, NULL, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
//Limit player's angle to a cone.
|
||||
#define MINECARTCONEMAX FixedAngle(20*FRACUNIT)
|
||||
{
|
||||
angle_t angdiff = player->mo->angle - minecart->angle;
|
||||
if (angdiff < ANGLE_180 && angdiff > MINECARTCONEMAX)
|
||||
player->mo->angle = minecart->angle + MINECARTCONEMAX;
|
||||
else if (angdiff > ANGLE_180 && angdiff < InvAngle(MINECARTCONEMAX))
|
||||
player->mo->angle = minecart->angle - MINECARTCONEMAX;
|
||||
|
||||
if (angdiff + minecart->angle != player->mo->angle && (!demoplayback || P_AnalogMove(player)))
|
||||
{
|
||||
if (player == &players[consoleplayer])
|
||||
localangle = player->mo->angle;
|
||||
else if (player == &players[secondarydisplayplayer])
|
||||
localangle2 = player->mo->angle;
|
||||
}
|
||||
}
|
||||
|
||||
// Player holding jump?
|
||||
if (!(player->cmd.buttons & BT_JUMP))
|
||||
player->pflags &= ~PF_JUMPDOWN;
|
||||
|
||||
// Handle segments.
|
||||
P_HandleMinecartSegments(minecart);
|
||||
|
||||
// Force 0 friction.
|
||||
minecart->friction = FRACUNIT;
|
||||
|
||||
fa = (minecart->angle >> ANGLETOFINESHIFT) & FINEMASK;
|
||||
if (!P_TryMove(minecart, minecart->x + FINECOSINE(fa), minecart->y + FINESINE(fa), true))
|
||||
{
|
||||
P_KillMobj(minecart, NULL, NULL, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
if (P_IsObjectOnGround(minecart))
|
||||
{
|
||||
sector_t *sec;
|
||||
INT32 lnum;
|
||||
fixed_t dummy;
|
||||
|
||||
// Just hit floor.
|
||||
if (minecart->eflags & MFE_JUSTHITFLOOR)
|
||||
{
|
||||
S_StopSound(minecart);
|
||||
S_StartSound(minecart, sfx_s3k96);
|
||||
}
|
||||
|
||||
sec = P_GetMinecartSector(minecart->x, minecart->y, minecart->z, &dummy);
|
||||
|
||||
if (sec)
|
||||
lnum = P_GetMinecartSpecialLine(sec);
|
||||
|
||||
// Update axis if the cart is standing on a rail.
|
||||
if (sec && lnum != -1)
|
||||
{
|
||||
mobj_t *axis = P_GetAxis(sides[lines[lnum].sidenum[0]].textureoffset >> FRACBITS);
|
||||
fixed_t newx, newy;
|
||||
angle_t targetangle, grind;
|
||||
angle_t prevangle, angdiff;
|
||||
mobj_t *detleft = NULL;
|
||||
mobj_t *detright = NULL;
|
||||
mobj_t *sidelock = NULL;
|
||||
boolean jumped = false;
|
||||
fixed_t currentSpeed;
|
||||
|
||||
if (!axis)
|
||||
{
|
||||
P_KillMobj(minecart, NULL, NULL, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
minecart->movefactor = 0;
|
||||
P_ResetScore(player);
|
||||
// Handle angle and position
|
||||
P_GetAxisPosition(minecart->x, minecart->y, axis, &newx, &newy, &targetangle, &grind);
|
||||
if (axis->type != MT_AXISTRANSFERLINE)
|
||||
P_SpawnSparks(minecart, grind);
|
||||
P_TryMove(minecart, newx, newy, true);
|
||||
|
||||
// Set angle based on target
|
||||
prevangle = minecart->angle;
|
||||
angdiff = targetangle - minecart->angle;
|
||||
if (angdiff < ANGLE_90 + ANG2 || angdiff > ANGLE_270 - ANG2)
|
||||
minecart->angle = targetangle;
|
||||
else
|
||||
minecart->angle = targetangle + ANGLE_180;
|
||||
angdiff = (minecart->angle - prevangle);
|
||||
if (angdiff && (!demoplayback || P_AnalogMove(player))) // maintain relative angle on turns
|
||||
{
|
||||
player->mo->angle += angdiff;
|
||||
if (player == &players[consoleplayer])
|
||||
localangle += angdiff;
|
||||
else if (player == &players[secondarydisplayplayer])
|
||||
localangle2 += angdiff;
|
||||
}
|
||||
|
||||
// Sideways detection
|
||||
if (minecart->flags2 & MF2_AMBUSH)
|
||||
{
|
||||
angle_t fa2 = (minecart->angle >> ANGLETOFINESHIFT) & FINEMASK;
|
||||
fixed_t c = FINECOSINE(fa2);
|
||||
fixed_t s = FINESINE(fa2);
|
||||
|
||||
detleft = P_LookForRails(minecart, c, s, targetangle, -s, c);
|
||||
detright = P_LookForRails(minecart, c, s, targetangle, s, -c);
|
||||
}
|
||||
|
||||
// How fast are we going?
|
||||
currentSpeed = FixedHypot(minecart->momx, minecart->momy);
|
||||
angdiff = R_PointToAngle2(0, 0, minecart->momx, minecart->momy) - minecart->angle;
|
||||
if (angdiff > ANGLE_90 && angdiff < ANGLE_270)
|
||||
currentSpeed *= -1;
|
||||
|
||||
// Player-specific behavior.
|
||||
if (detleft && player->cmd.sidemove < 0)
|
||||
sidelock = detleft;
|
||||
else if (detright && player->cmd.sidemove > 0)
|
||||
sidelock = detright;
|
||||
|
||||
//if (player->cmd.buttons & BT_USE && currentSpeed > 4*FRACUNIT)
|
||||
// currentSpeed -= FRACUNIT/8;
|
||||
|
||||
// Jumping
|
||||
if (sidelock || ((player->cmd.buttons & BT_JUMP) && !(player->pflags & PF_JUMPDOWN)))
|
||||
{
|
||||
player->pflags |= PF_JUMPDOWN;
|
||||
|
||||
if (minecart->eflags & MFE_ONGROUND)
|
||||
minecart->eflags &= ~MFE_ONGROUND;
|
||||
minecart->z += P_MobjFlip(minecart);
|
||||
if (sidelock)
|
||||
P_ParabolicMove(minecart, sidelock->x, sidelock->y, sidelock->z, gravity, max(currentSpeed, 10 * FRACUNIT));
|
||||
else
|
||||
minecart->momz = 10 * FRACUNIT;
|
||||
|
||||
S_StartSound(minecart, sfx_s3k51);
|
||||
jumped = true;
|
||||
}
|
||||
|
||||
if (!jumped)
|
||||
{
|
||||
// Natural acceleration and boosters
|
||||
if (currentSpeed < minecart->info->speed)
|
||||
currentSpeed += FRACUNIT/4;
|
||||
|
||||
if (minecart->standingslope)
|
||||
{
|
||||
fixed_t fa2 = (minecart->angle >> ANGLETOFINESHIFT) & FINEMASK;
|
||||
fixed_t front = P_GetZAt(minecart->standingslope, minecart->x, minecart->y);
|
||||
fixed_t back = P_GetZAt(minecart->standingslope, minecart->x - FINECOSINE(fa2), minecart->y - FINESINE(fa2));
|
||||
|
||||
if (abs(front - back) < 3*FRACUNIT)
|
||||
currentSpeed += (back - front)/3;
|
||||
}
|
||||
|
||||
// Go forward at our current speed
|
||||
P_InstaThrust(minecart, minecart->angle, currentSpeed);
|
||||
|
||||
// On-track ka-klong sound FX.
|
||||
minecart->movecount += abs(currentSpeed);
|
||||
if (minecart->movecount > 128*FRACUNIT)
|
||||
{
|
||||
minecart->movecount %= 128*FRACUNIT;
|
||||
S_StartSound(minecart, minecart->info->activesound);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
minecart->movefactor++;
|
||||
if ((P_IsObjectOnGround(minecart) && minecart->movefactor >= 5) // off rail
|
||||
|| (abs(minecart->momx) < minecart->scale/2 && abs(minecart->momy) < minecart->scale/2)) // hit a wall
|
||||
{
|
||||
P_KillMobj(minecart, NULL, NULL, 0);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_STND);
|
||||
|
||||
// Move player to minecart.
|
||||
P_TeleportMove(player->mo, minecart->x - minecart->momx, minecart->y - minecart->momy, minecart->z + max(minecart->momz, 0) + 8*FRACUNIT);
|
||||
if (player->powers[pw_carry] != CR_MINECART)
|
||||
return;
|
||||
player->mo->momx = player->mo->momy = player->mo->momz = 0;
|
||||
P_TryMove(player->mo, player->mo->x + minecart->momx, player->mo->y + minecart->momy, true);
|
||||
|
||||
if (player->powers[pw_flashing] == flashingtics)
|
||||
player->powers[pw_flashing]--;
|
||||
}
|
||||
|
||||
//
|
||||
// P_PlayerThink
|
||||
//
|
||||
|
@ -10159,6 +10570,17 @@ void P_PlayerThink(player_t *player)
|
|||
// for a bit after a teleport.
|
||||
if (player->mo->reactiontime)
|
||||
player->mo->reactiontime--;
|
||||
else if (player->powers[pw_carry] == CR_MINECART)
|
||||
{
|
||||
if (!P_AnalogMove(player))
|
||||
player->mo->angle = (cmd->angleturn << 16 /* not FRACBITS */);
|
||||
|
||||
ticruned++;
|
||||
if ((cmd->angleturn & TICCMD_RECEIVED) == 0)
|
||||
ticmiss++;
|
||||
|
||||
P_MinecartThink(player);
|
||||
}
|
||||
else if (player->mo->tracer && player->mo->tracer->type == MT_TUBEWAYPOINT && (player->powers[pw_carry] == CR_ROPEHANG || player->powers[pw_carry] == CR_ZOOMTUBE))
|
||||
{
|
||||
if (player->powers[pw_carry] == CR_ROPEHANG)
|
||||
|
@ -10220,7 +10642,15 @@ void P_PlayerThink(player_t *player)
|
|||
switch (player->powers[pw_carry])
|
||||
{
|
||||
case CR_PLAYER:
|
||||
player->drawangle = (player->mo->tracer->player ? player->mo->tracer->player->drawangle : player->mo->tracer->angle);
|
||||
if (player->mo->tracer->player)
|
||||
{
|
||||
player->drawangle = player->mo->tracer->player->drawangle;
|
||||
break;
|
||||
}
|
||||
/* FALLTHRU */
|
||||
case CR_MINECART:
|
||||
case CR_GENERIC:
|
||||
player->drawangle = player->mo->tracer->angle;
|
||||
break;
|
||||
/* -- in case we wanted to have the camera freely movable during zoom tubes
|
||||
case CR_ZOOMTUBE:*/
|
||||
|
|
|
@ -60,6 +60,8 @@ static void GameMIDIMusic_OnChange(void);
|
|||
static void GameSounds_OnChange(void);
|
||||
static void GameDigiMusic_OnChange(void);
|
||||
|
||||
static void ModFilter_OnChange(void);
|
||||
|
||||
// commands for music and sound servers
|
||||
#ifdef MUSSERV
|
||||
consvar_t musserver_cmd = {"musserver_cmd", "musserver", CV_SAVE, NULL, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||
|
@ -111,6 +113,11 @@ consvar_t cv_gamedigimusic = {"digimusic", "On", CV_SAVE|CV_CALL|CV_NOINIT, CV_O
|
|||
consvar_t cv_gamemidimusic = {"midimusic", "On", CV_SAVE|CV_CALL|CV_NOINIT, CV_OnOff, GameMIDIMusic_OnChange, 0, NULL, NULL, 0, 0, NULL};
|
||||
consvar_t cv_gamesounds = {"sounds", "On", CV_SAVE|CV_CALL|CV_NOINIT, CV_OnOff, GameSounds_OnChange, 0, NULL, NULL, 0, 0, NULL};
|
||||
|
||||
#ifdef HAVE_OPENMPT
|
||||
static CV_PossibleValue_t interpolationfilter_cons_t[] = {{0, "Default"}, {1, "None"}, {2, "Linear"}, {4, "Cubic"}, {8, "Windowed sinc"}, {0, NULL}};
|
||||
consvar_t cv_modfilter = {"modfilter", "0", CV_SAVE|CV_CALL, interpolationfilter_cons_t, ModFilter_OnChange, 0, NULL, NULL, 0, 0, NULL};
|
||||
#endif
|
||||
|
||||
#define S_MAX_VOLUME 127
|
||||
|
||||
// when to clip out sounds
|
||||
|
@ -269,11 +276,13 @@ void S_RegisterSoundStuff(void)
|
|||
CV_RegisterVar(&cv_gamesounds);
|
||||
CV_RegisterVar(&cv_gamedigimusic);
|
||||
CV_RegisterVar(&cv_gamemidimusic);
|
||||
#ifdef HAVE_OPENMPT
|
||||
CV_RegisterVar(&cv_modfilter);
|
||||
#endif
|
||||
|
||||
COM_AddCommand("tunes", Command_Tunes_f);
|
||||
COM_AddCommand("restartaudio", Command_RestartAudio_f);
|
||||
|
||||
|
||||
#if defined (macintosh) && !defined (HAVE_SDL) // mp3 playlist stuff
|
||||
{
|
||||
INT32 i;
|
||||
|
@ -1978,3 +1987,9 @@ void GameMIDIMusic_OnChange(void)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ModFilter_OnChange(void)
|
||||
{
|
||||
if (openmpt_mhandle)
|
||||
openmpt_module_set_render_param(openmpt_mhandle, OPENMPT_MODULE_RENDER_INTERPOLATIONFILTER_LENGTH, cv_modfilter.value);
|
||||
}
|
|
@ -20,6 +20,11 @@
|
|||
#include "command.h"
|
||||
#include "tables.h" // angle_t
|
||||
|
||||
#ifdef HAVE_OPENMPT
|
||||
#include "libopenmpt/libopenmpt.h"
|
||||
openmpt_module *openmpt_mhandle;
|
||||
#endif
|
||||
|
||||
// mask used to indicate sound origin is player item pickup
|
||||
#define PICKUP_SOUND 0x8000
|
||||
|
||||
|
@ -31,6 +36,10 @@ extern consvar_t cv_gamedigimusic;
|
|||
extern consvar_t cv_gamemidimusic;
|
||||
extern consvar_t cv_gamesounds;
|
||||
|
||||
#ifdef HAVE_OPENMPT
|
||||
extern consvar_t cv_modfilter;
|
||||
#endif
|
||||
|
||||
#ifdef SNDSERV
|
||||
extern consvar_t sndserver_cmd, sndserver_arg;
|
||||
#endif
|
||||
|
|
|
@ -149,6 +149,7 @@ if(${SDL2_FOUND})
|
|||
SDL2
|
||||
SDL2_mixer
|
||||
${GME_LIBRARIES}
|
||||
${OPENMPT_LIBRARIES}
|
||||
${PNG_LIBRARIES}
|
||||
${ZLIB_LIBRARIES}
|
||||
${OPENGL_LIBRARIES}
|
||||
|
@ -159,6 +160,7 @@ if(${SDL2_FOUND})
|
|||
${SDL2_LIBRARIES}
|
||||
${SDL2_MIXER_LIBRARIES}
|
||||
${GME_LIBRARIES}
|
||||
${OPENMPT_LIBRARIES}
|
||||
${PNG_LIBRARIES}
|
||||
${ZLIB_LIBRARIES}
|
||||
${OPENGL_LIBRARIES}
|
||||
|
@ -238,6 +240,7 @@ if(${SDL2_FOUND})
|
|||
${SDL2_INCLUDE_DIRS}
|
||||
${SDL2_MIXER_INCLUDE_DIRS}
|
||||
${GME_INCLUDE_DIRS}
|
||||
${OPENMPT_INCLUDE_DIRS}
|
||||
${PNG_INCLUDE_DIRS}
|
||||
${ZLIB_INCLUDE_DIRS}
|
||||
${OPENGL_INCLUDE_DIRS}
|
||||
|
@ -284,12 +287,14 @@ if(${SDL2_FOUND})
|
|||
HINTS ${CMAKE_SOURCE_DIR}/libs/dll-binaries/x86_64
|
||||
HINTS ${CMAKE_SOURCE_DIR}/libs/SDL2/x86_64-w64-mingw32/bin
|
||||
HINTS ${CMAKE_SOURCE_DIR}/libs/SDL2_mixer/x86_64-w64-mingw32/bin
|
||||
HINTS ${CMAKE_SOURCE_DIR}/libs/libopenmpt/bin/x86_64/mingw
|
||||
)
|
||||
else()
|
||||
find_library(SRB2_SDL2_DLL_${dllname} "${defaultname}"
|
||||
HINTS ${CMAKE_SOURCE_DIR}/libs/dll-binaries/i686
|
||||
HINTS ${CMAKE_SOURCE_DIR}/libs/SDL2/i686-w64-mingw32/bin
|
||||
HINTS ${CMAKE_SOURCE_DIR}/libs/SDL2_mixer/i686-w64-mingw32/bin
|
||||
HINTS ${CMAKE_SOURCE_DIR}/libs/libopenmpt/bin/x86/mingw
|
||||
)
|
||||
endif()
|
||||
else()
|
||||
|
@ -298,12 +303,14 @@ if(${SDL2_FOUND})
|
|||
HINTS ${CMAKE_SOURCE_DIR}/libs/dll-binaries/x86_64
|
||||
HINTS ${CMAKE_SOURCE_DIR}/libs/SDL2/lib/x64
|
||||
HINTS ${CMAKE_SOURCE_DIR}/libs/SDL2_mixer/lib/x64
|
||||
HINTS ${CMAKE_SOURCE_DIR}/libs/libopenmpt/bin/x86_64/mingw
|
||||
)
|
||||
else()
|
||||
find_library(SRB2_SDL2_DLL_${dllname} "${defaultname}"
|
||||
HINTS ${CMAKE_SOURCE_DIR}/libs/dll-binaries/i686
|
||||
HINTS ${CMAKE_SOURCE_DIR}/libs/SDL2/lib/x86
|
||||
HINTS ${CMAKE_SOURCE_DIR}/libs/SDL2_mixer/lib/x86
|
||||
HINTS ${CMAKE_SOURCE_DIR}/libs/libopenmpt/bin/x86/mingw
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
@ -324,6 +331,9 @@ if(${SDL2_FOUND})
|
|||
if(${SRB2_CONFIG_HAVE_GME})
|
||||
getwinlib(libgme "libgme.dll")
|
||||
endif()
|
||||
if(${SRB2_CONFIG_HAVE_OPENMPT})
|
||||
getwinlib(libopenmpt "libopenmpt.dll")
|
||||
endif()
|
||||
|
||||
install(PROGRAMS
|
||||
${win_extra_dll_list}
|
||||
|
|
|
@ -94,6 +94,7 @@
|
|||
<Import Project="..\..\libs\SDL2.props" />
|
||||
<Import Project="..\..\libs\SDL_mixer.props" />
|
||||
<Import Project="..\..\libs\libgme.props" />
|
||||
<Import Project="..\..\libs\libopenmpt.props" />
|
||||
<Import Project="Srb2SDL.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
<ItemDefinitionGroup>
|
||||
<ClCompile>
|
||||
<!-- x86/x64 defines: has specific libraries that ARM does not -->
|
||||
<PreprocessorDefinitions Condition="'$(Platform)' == 'Win32' OR '$(Platform)' == 'x64'">HAVE_ZLIB;HAVE_LIBGME;USE_WGL_SWAP;DIRECTFULLSCREEN;HAVE_SDL;HWRENDER;HW3SOUND;HAVE_FILTER;HAVE_MIXER;SDLMAIN;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions Condition="'$(Platform)' == 'Win32' OR '$(Platform)' == 'x64'">HAVE_ZLIB;HAVE_LIBGME;USE_WGL_SWAP;DIRECTFULLSCREEN;HAVE_SDL;HWRENDER;HW3SOUND;HAVE_FILTER;HAVE_MIXER;HAVE_OPENMPT;SDLMAIN;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<!-- ARM defines -->
|
||||
<PreprocessorDefinitions Condition="'$(Platform)' != 'Win32' AND '$(Platform)' != 'x64'">USE_WGL_SWAP;DIRECTFULLSCREEN;HAVE_SDL;HWRENDER;HW3SOUND;HAVE_FILTER;HAVE_MIXER;SDLMAIN;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
|
|
|
@ -72,6 +72,17 @@
|
|||
#endif // HAVE_ZLIB
|
||||
#endif // HAVE_LIBGME
|
||||
|
||||
static UINT16 BUFFERSIZE = 2048;
|
||||
static UINT16 SAMPLERATE = 44100;
|
||||
|
||||
#ifdef HAVE_OPENMPT
|
||||
#include "libopenmpt/libopenmpt.h"
|
||||
#endif
|
||||
|
||||
/// ------------------------
|
||||
/// Audio Declarations
|
||||
/// ------------------------
|
||||
|
||||
UINT8 sound_started = false;
|
||||
|
||||
static Mix_Music *music;
|
||||
|
@ -93,12 +104,18 @@ static void (*fading_callback)(void);
|
|||
|
||||
#ifdef HAVE_LIBGME
|
||||
static Music_Emu *gme;
|
||||
static INT32 current_track;
|
||||
static UINT16 current_track;
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_OPENMPT
|
||||
int mod_err = OPENMPT_ERROR_OK;
|
||||
static const char *mod_err_str;
|
||||
static UINT16 current_subsong;
|
||||
#endif
|
||||
|
||||
static void var_cleanup(void)
|
||||
{
|
||||
loop_point = song_length =\
|
||||
loop_point = song_length = 0.0f;
|
||||
music_bytes = fading_source = fading_target =\
|
||||
fading_timer = fading_duration = 0;
|
||||
|
||||
|
@ -143,16 +160,21 @@ void I_StartupSound(void)
|
|||
music_volume = sfx_volume = 0;
|
||||
|
||||
#if SDL_MIXER_VERSION_ATLEAST(1,2,11)
|
||||
Mix_Init(MIX_INIT_FLAC|MIX_INIT_MOD|MIX_INIT_MP3|MIX_INIT_OGG);
|
||||
Mix_Init(MIX_INIT_FLAC|MIX_INIT_MP3|MIX_INIT_OGG|MIX_INIT_MOD);
|
||||
#endif
|
||||
|
||||
if (Mix_OpenAudio(44100, AUDIO_S16SYS, 2, 2048) < 0)
|
||||
if (Mix_OpenAudio(SAMPLERATE, AUDIO_S16SYS, 2, BUFFERSIZE) < 0)
|
||||
{
|
||||
CONS_Alert(CONS_ERROR, "Error starting SDL_Mixer: %s\n", Mix_GetError());
|
||||
// call to start audio failed -- we do not have it
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef HAVE_OPENMPT
|
||||
CONS_Printf("libopenmpt version: %s\n", openmpt_get_string("library_version"));
|
||||
CONS_Printf("libopenmpt build date: %s\n", openmpt_get_string("build"));
|
||||
#endif
|
||||
|
||||
sound_started = true;
|
||||
songpaused = false;
|
||||
Mix_AllocateChannels(256);
|
||||
|
@ -175,6 +197,10 @@ void I_ShutdownSound(void)
|
|||
if (gme)
|
||||
gme_delete(gme);
|
||||
#endif
|
||||
#ifdef HAVE_OPENMPT
|
||||
if (openmpt_mhandle)
|
||||
openmpt_module_destroy(openmpt_mhandle);
|
||||
#endif
|
||||
}
|
||||
|
||||
void I_UpdateSound(void)
|
||||
|
@ -569,7 +595,7 @@ static void music_loop(void)
|
|||
{
|
||||
Mix_PlayMusic(music, 0);
|
||||
Mix_SetMusicPosition(loop_point);
|
||||
music_bytes = loop_point*44100.0L*4; //assume 44.1khz, 4-byte length (see I_GetSongPosition)
|
||||
music_bytes = (UINT32)(loop_point*44100.0L*4); //assume 44.1khz, 4-byte length (see I_GetSongPosition)
|
||||
}
|
||||
else
|
||||
I_StopSong();
|
||||
|
@ -625,12 +651,39 @@ static void mix_gme(void *udata, Uint8 *stream, int len)
|
|||
// play gme into stream
|
||||
gme_play(gme, len/2, (short *)stream);
|
||||
|
||||
// Limiter to prevent music from being disorted with some formats
|
||||
if (music_volume >= 18)
|
||||
music_volume = 18;
|
||||
|
||||
// apply volume to stream
|
||||
for (i = 0, p = (short *)stream; i < len/2; i++, p++)
|
||||
*p = ((INT32)*p) * (music_volume*internal_volume/100)*2 / 42;
|
||||
*p = ((INT32)*p) * (music_volume*internal_volume/100)*2 / 40;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_OPENMPT
|
||||
static void mix_openmpt(void *udata, Uint8 *stream, int len)
|
||||
{
|
||||
int i;
|
||||
short *p;
|
||||
|
||||
(void)udata;
|
||||
|
||||
if (!openmpt_mhandle || songpaused)
|
||||
return;
|
||||
|
||||
// Play module into stream
|
||||
openmpt_module_read_interleaved_stereo(openmpt_mhandle, SAMPLERATE, BUFFERSIZE, (short *)stream);
|
||||
|
||||
// Limiter to prevent music from being disorted with some formats
|
||||
if (music_volume >= 18)
|
||||
music_volume = 18;
|
||||
|
||||
// apply volume to stream
|
||||
for (i = 0, p = (short *)stream; i < len/2; i++, p++)
|
||||
*p = ((INT32)*p) * (music_volume*internal_volume/100)*2 / 40;
|
||||
}
|
||||
#endif
|
||||
|
||||
/// ------------------------
|
||||
/// Music System
|
||||
|
@ -655,6 +708,10 @@ musictype_t I_SongType(void)
|
|||
if (gme)
|
||||
return MU_GME;
|
||||
else
|
||||
#endif
|
||||
#ifdef HAVE_OPENMPT
|
||||
if (openmpt_mhandle)
|
||||
return MU_MOD_EX;
|
||||
#endif
|
||||
if (!music)
|
||||
return MU_NONE;
|
||||
|
@ -673,6 +730,9 @@ boolean I_SongPlaying(void)
|
|||
return (
|
||||
#ifdef HAVE_LIBGME
|
||||
(I_SongType() == MU_GME && gme) ||
|
||||
#endif
|
||||
#ifdef HAVE_OPENMPT
|
||||
(I_SongType() == MU_MOD_EX && openmpt_mhandle) ||
|
||||
#endif
|
||||
music != NULL
|
||||
);
|
||||
|
@ -699,8 +759,19 @@ boolean I_SetSongSpeed(float speed)
|
|||
SDL_UnlockAudio();
|
||||
return true;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#ifdef HAVE_OPENMPT
|
||||
if (openmpt_mhandle)
|
||||
{
|
||||
char modspd[16];
|
||||
sprintf(modspd, "%g", speed);
|
||||
openmpt_module_ctl_set(openmpt_mhandle, "play.tempo_factor", modspd);
|
||||
return true;
|
||||
}
|
||||
#else
|
||||
(void)speed;
|
||||
return false;
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
|
@ -741,6 +812,11 @@ UINT32 I_GetSongLength(void)
|
|||
return max(length, 0);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#ifdef HAVE_OPENMPT
|
||||
if (openmpt_mhandle)
|
||||
return (UINT32)(openmpt_module_get_duration_seconds(openmpt_mhandle) * 1000.);
|
||||
else
|
||||
#endif
|
||||
if (!music || I_SongType() == MU_MOD || I_SongType() == MU_MID)
|
||||
return 0;
|
||||
|
@ -826,6 +902,16 @@ boolean I_SetSongPosition(UINT32 position)
|
|||
// return true;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#ifdef HAVE_OPENMPT
|
||||
if (openmpt_mhandle)
|
||||
{
|
||||
// This isn't 100% correct because we don't account for loop points because we can't get them.
|
||||
// But if you seek past end of song, OpenMPT seeks to 0. So adjust the position anyway.
|
||||
openmpt_module_set_position_seconds(openmpt_mhandle, (double)(get_adjusted_position(position)/1000.0L)); // returns new position
|
||||
return true;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
if (!music || I_SongType() == MU_MID)
|
||||
return false;
|
||||
|
@ -843,7 +929,7 @@ boolean I_SetSongPosition(UINT32 position)
|
|||
|
||||
Mix_RewindMusic(); // needed for mp3
|
||||
if(Mix_SetMusicPosition((float)(position/1000.0L)) == 0)
|
||||
music_bytes = position/1000.0L*44100.0L*4; //assume 44.1khz, 4-byte length (see I_GetSongPosition)
|
||||
music_bytes = (UINT32)(position/1000.0L*44100.0L*4); //assume 44.1khz, 4-byte length (see I_GetSongPosition)
|
||||
else
|
||||
// NOTE: This block fires on incorrect song format,
|
||||
// NOT if position input is greater than song length.
|
||||
|
@ -883,11 +969,19 @@ UINT32 I_GetSongPosition(void)
|
|||
return max(position, 0);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#ifdef HAVE_OPENMPT
|
||||
if (openmpt_mhandle)
|
||||
// This will be incorrect if we adjust for length because we can't get loop points.
|
||||
// So return unadjusted. See note in SetMusicPosition: we adjust for that.
|
||||
return (UINT32)(openmpt_module_get_position_seconds(openmpt_mhandle)*1000.);
|
||||
//return get_adjusted_position((UINT32)(openmpt_module_get_position_seconds(openmpt_mhandle)*1000.));
|
||||
else
|
||||
#endif
|
||||
if (!music || I_SongType() == MU_MID)
|
||||
return 0;
|
||||
else
|
||||
return music_bytes/44100.0L*1000.0L/4; //assume 44.1khz
|
||||
return (UINT32)(music_bytes/44100.0L*1000.0L/4); //assume 44.1khz
|
||||
// 4 = byte length for 16-bit samples (AUDIO_S16SYS), stereo (2-channel)
|
||||
// This is hardcoded in I_StartupSound. Other formats for factor:
|
||||
// 8M: 1 | 8S: 2 | 16M: 2 | 16S: 4
|
||||
|
@ -912,6 +1006,9 @@ boolean I_LoadSong(char *data, size_t len)
|
|||
if (music
|
||||
#ifdef HAVE_LIBGME
|
||||
|| gme
|
||||
#endif
|
||||
#ifdef HAVE_OPENMPT
|
||||
|| openmpt_mhandle
|
||||
#endif
|
||||
)
|
||||
I_UnloadSong();
|
||||
|
@ -1026,6 +1123,40 @@ boolean I_LoadSong(char *data, size_t len)
|
|||
return false;
|
||||
}
|
||||
|
||||
#ifdef HAVE_OPENMPT
|
||||
switch(Mix_GetMusicType(music))
|
||||
{
|
||||
case MUS_MODPLUG:
|
||||
case MUS_MOD:
|
||||
openmpt_mhandle = openmpt_module_create_from_memory2(data, len, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
||||
if (!openmpt_mhandle)
|
||||
{
|
||||
mod_err = openmpt_module_error_get_last(openmpt_mhandle);
|
||||
mod_err_str = openmpt_error_string(mod_err);
|
||||
CONS_Alert(CONS_ERROR, "openmpt_module_create_from_memory2: %s\n", mod_err_str);
|
||||
Mix_FreeMusic(music);
|
||||
music = NULL;
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
Mix_FreeMusic(music);
|
||||
music = NULL;
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case MUS_WAV:
|
||||
case MUS_MID:
|
||||
case MUS_OGG:
|
||||
case MUS_MP3:
|
||||
case MUS_FLAC:
|
||||
Mix_HookMusic(NULL, NULL);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
|
||||
// Find the OGG loop point.
|
||||
loop_point = 0.0f;
|
||||
song_length = 0.0f;
|
||||
|
@ -1070,6 +1201,13 @@ void I_UnloadSong(void)
|
|||
gme_delete(gme);
|
||||
gme = NULL;
|
||||
}
|
||||
#endif
|
||||
#ifdef HAVE_OPENMPT
|
||||
if (openmpt_mhandle)
|
||||
{
|
||||
openmpt_module_destroy(openmpt_mhandle);
|
||||
openmpt_mhandle = NULL;
|
||||
}
|
||||
#endif
|
||||
if (music)
|
||||
{
|
||||
|
@ -1089,6 +1227,19 @@ boolean I_PlaySong(boolean looping)
|
|||
return true;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#ifdef HAVE_OPENMPT
|
||||
if (openmpt_mhandle)
|
||||
{
|
||||
openmpt_module_select_subsong(openmpt_mhandle, 0);
|
||||
openmpt_module_set_render_param(openmpt_mhandle, OPENMPT_MODULE_RENDER_INTERPOLATIONFILTER_LENGTH, cv_modfilter.value);
|
||||
if (looping)
|
||||
openmpt_module_set_repeat_count(openmpt_mhandle, -1); // Always repeat
|
||||
current_subsong = 0;
|
||||
Mix_HookMusic(mix_openmpt, openmpt_mhandle);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
if (!music)
|
||||
return false;
|
||||
|
@ -1130,6 +1281,13 @@ void I_StopSong(void)
|
|||
Mix_HookMusic(NULL, NULL);
|
||||
current_track = -1;
|
||||
}
|
||||
#endif
|
||||
#ifdef HAVE_OPENMPT
|
||||
if (openmpt_mhandle)
|
||||
{
|
||||
Mix_HookMusic(NULL, NULL);
|
||||
current_subsong = -1;
|
||||
}
|
||||
#endif
|
||||
if (music)
|
||||
{
|
||||
|
@ -1191,15 +1349,13 @@ void I_SetMusicVolume(UINT8 volume)
|
|||
boolean I_SetSongTrack(int track)
|
||||
{
|
||||
#ifdef HAVE_LIBGME
|
||||
if (current_track == track)
|
||||
return false;
|
||||
|
||||
// If the specified track is within the number of tracks playing, then change it
|
||||
if (gme)
|
||||
{
|
||||
if (current_track == track)
|
||||
return false;
|
||||
SDL_LockAudio();
|
||||
if (track >= 0
|
||||
&& track < gme_track_count(gme))
|
||||
if (track >= 0 && track < gme_track_count(gme)-1)
|
||||
{
|
||||
gme_err_t gme_e = gme_start_track(gme, track);
|
||||
if (gme_e != NULL)
|
||||
|
@ -1216,8 +1372,24 @@ boolean I_SetSongTrack(int track)
|
|||
}
|
||||
else
|
||||
#endif
|
||||
if (I_SongType() == MU_MOD)
|
||||
return !Mix_SetMusicPosition(track);
|
||||
#ifdef HAVE_OPENMPT
|
||||
if (openmpt_mhandle)
|
||||
{
|
||||
if (current_subsong == track)
|
||||
return false;
|
||||
SDL_LockAudio();
|
||||
if (track >= 0 && track < openmpt_module_get_num_subsongs(openmpt_mhandle))
|
||||
{
|
||||
openmpt_module_select_subsong(openmpt_mhandle, track);
|
||||
current_subsong = track;
|
||||
SDL_UnlockAudio();
|
||||
return true;
|
||||
}
|
||||
SDL_UnlockAudio();
|
||||
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
(void)track;
|
||||
return false;
|
||||
}
|
||||
|
|
22
src/sounds.c
22
src/sounds.c
|
@ -195,6 +195,8 @@ sfxinfo_t S_sfx[NUMSFX] =
|
|||
{"boingf", false, 60, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Bouncing"},
|
||||
{"corkp", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Cork fired"},
|
||||
{"corkh", false, 32, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Cork hit"},
|
||||
{"bowl", false, 32, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Bowling"},
|
||||
{"chuchu", false, 32, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Train horn"},
|
||||
|
||||
// Menu, interface
|
||||
{"chchng", false, 120, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Score"},
|
||||
|
@ -311,13 +313,13 @@ sfxinfo_t S_sfx[NUMSFX] =
|
|||
{"s3k48", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Pulse"},
|
||||
{"s3k49", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Impact"},
|
||||
{"s3k4a", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Grab"},
|
||||
{"s3k4b", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Water splash"},
|
||||
{"s3k4b", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Splash"},
|
||||
{"s3k4c", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Heavy hit"},
|
||||
{"s3k4d", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Firing bullet"},
|
||||
{"s3k4e", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Big explosion"},
|
||||
{"s3k4f", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Flamethrower"},
|
||||
{"s3k50", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Siren"},
|
||||
{"s3k51", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Falling hazard"},
|
||||
{"s3k51", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Falling"},
|
||||
{"s3k52", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Spike"},
|
||||
{"s3k53", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Powering up"},
|
||||
{"s3k54", false, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR, "Firing"}, // MetalSonic shot fire
|
||||
|
@ -362,7 +364,7 @@ sfxinfo_t S_sfx[NUMSFX] =
|
|||
{"s3k7b", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Soft bounce"},
|
||||
{"s3k7c", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Magnet"},
|
||||
{"s3k7d", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
|
||||
{"s3k7e", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Eating dirt"},
|
||||
{"s3k7e", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Dust"},
|
||||
{"s3k7f", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Freeze"},
|
||||
{"s3k80", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Ice spike burst"},
|
||||
{"s3k81", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Burst"},
|
||||
|
@ -373,7 +375,7 @@ sfxinfo_t S_sfx[NUMSFX] =
|
|||
{"s3k86", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Alarm"},
|
||||
{"s3k87", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Bounce"},
|
||||
{"s3k88", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Metallic squeak"},
|
||||
{"s3k89", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Advanced technology"},
|
||||
{"s3k89", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Advanced tech"},
|
||||
{"s3k8a", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Boing"},
|
||||
{"s3k8b", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Powerful hit"},
|
||||
{"s3k8c", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Humming power"},
|
||||
|
@ -383,10 +385,10 @@ sfxinfo_t S_sfx[NUMSFX] =
|
|||
{"s3k90", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Impact"},
|
||||
{"s3k91", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Closed"},
|
||||
{"s3k92", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Ghost"},
|
||||
{"s3k93", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Rebuilding"},
|
||||
{"s3k93", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Gas release"},
|
||||
{"s3k94", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Spike"},
|
||||
{"s3k95", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Lava burst"},
|
||||
{"s3k96", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Falling object"},
|
||||
{"s3k96", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Landing"},
|
||||
{"s3k97", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Wind"},
|
||||
{"s3k98", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Falling spike"},
|
||||
{"s3k99", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Bounce"},
|
||||
|
@ -454,13 +456,13 @@ sfxinfo_t S_sfx[NUMSFX] =
|
|||
{"s3kcas", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Energy"},
|
||||
{"s3kcal", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Energy"}, // ditto
|
||||
{"s3kcbs", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Ominous rumbling"},
|
||||
{"s3kcbl", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Ominuous rumbling"}, // ditto
|
||||
{"s3kcbl", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Ominous rumbling"}, // ditto
|
||||
{"s3kccs", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Collapsing"},
|
||||
{"s3kccl", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Collapsing"}, // ditto
|
||||
{"s3kcds", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Ominous rumbling"},
|
||||
{"s3kcdl", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Ominous rumbling"}, // ditto
|
||||
{"s3kces", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Wind tunnel"},
|
||||
{"s3kcel", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Wind tunnel"}, // ditto
|
||||
{"s3kcel", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Dust devil"}, // ditto
|
||||
{"s3kcfs", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
|
||||
{"s3kcfl", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""}, // ditto
|
||||
{"s3kd0s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Rising"},
|
||||
|
@ -469,8 +471,8 @@ sfxinfo_t S_sfx[NUMSFX] =
|
|||
{"s3kd1l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""}, // ditto
|
||||
{"s3kd2s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Turning"},
|
||||
{"s3kd2l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Moving chain"}, // ditto
|
||||
{"s3kd3s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
|
||||
{"s3kd3l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""}, // ditto
|
||||
{"s3kd3s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Digging"},
|
||||
{"s3kd3l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Digging"}, // ditto
|
||||
{"s3kd4s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Engine"},
|
||||
{"s3kd4l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Engine"}, // ditto
|
||||
{"s3kd5s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Falling lava"},
|
||||
|
|
|
@ -261,6 +261,8 @@ typedef enum
|
|||
sfx_boingf,
|
||||
sfx_corkp,
|
||||
sfx_corkh,
|
||||
sfx_bowl,
|
||||
sfx_chuchu,
|
||||
|
||||
// Menu, interface
|
||||
sfx_chchng,
|
||||
|
|
12
src/w_wad.c
12
src/w_wad.c
|
@ -347,7 +347,6 @@ static restype_t ResourceFileDetect (const char* filename)
|
|||
static lumpinfo_t* ResGetLumpsStandalone (FILE* handle, UINT16* numlumps, const char* lumpname)
|
||||
{
|
||||
lumpinfo_t* lumpinfo = Z_Calloc(sizeof (*lumpinfo), PU_STATIC, NULL);
|
||||
lumpinfo = Z_Calloc(sizeof (*lumpinfo), PU_STATIC, NULL);
|
||||
lumpinfo->position = 0;
|
||||
fseek(handle, 0, SEEK_END);
|
||||
lumpinfo->size = ftell(handle);
|
||||
|
@ -579,14 +578,14 @@ static lumpinfo_t* ResGetLumpsZip (FILE* handle, UINT16* nlmp)
|
|||
{
|
||||
CONS_Alert(CONS_ERROR, "Failed to read central directory (%s)\n", strerror(ferror(handle)));
|
||||
Z_Free(lumpinfo);
|
||||
free(zentry);
|
||||
free(zentries);
|
||||
return NULL;
|
||||
}
|
||||
if (memcmp(zentry->signature, pat_central, 4))
|
||||
{
|
||||
CONS_Alert(CONS_ERROR, "Central directory is corrupt\n");
|
||||
Z_Free(lumpinfo);
|
||||
free(zentry);
|
||||
free(zentries);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -599,7 +598,7 @@ static lumpinfo_t* ResGetLumpsZip (FILE* handle, UINT16* nlmp)
|
|||
{
|
||||
CONS_Alert(CONS_ERROR, "Unable to read lumpname (%s)\n", strerror(ferror(handle)));
|
||||
Z_Free(lumpinfo);
|
||||
free(zentry);
|
||||
free(zentries);
|
||||
free(fullname);
|
||||
return NULL;
|
||||
}
|
||||
|
@ -641,6 +640,8 @@ static lumpinfo_t* ResGetLumpsZip (FILE* handle, UINT16* nlmp)
|
|||
}
|
||||
}
|
||||
|
||||
free(zentries);
|
||||
|
||||
*nlmp = numlumps;
|
||||
return lumpinfo;
|
||||
}
|
||||
|
@ -1307,8 +1308,9 @@ size_t W_ReadLumpHeaderPwad(UINT16 wad, UINT16 lump, void *dest, size_t size, si
|
|||
{
|
||||
size = 0;
|
||||
zerr(zErr);
|
||||
(void)inflateEnd(&strm);
|
||||
}
|
||||
|
||||
(void)inflateEnd(&strm);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -10,12 +10,24 @@ ifdef MINGW64
|
|||
HAVE_LIBGME=1
|
||||
LIBGME_CFLAGS=-I../libs/gme/include
|
||||
LIBGME_LDFLAGS=-L../libs/gme/win64 -lgme
|
||||
|
||||
ifdef HAVE_OPENMPT
|
||||
LIBOPENMPT_CFLAGS?=-I../libs/libopenmpt/inc
|
||||
LIBOPENMPT_LDFLAGS?=-L../libs/libopenmpt/lib/x86_64/mingw -lopenmpt
|
||||
endif
|
||||
|
||||
SDL_CFLAGS?=-I../libs/SDL2/x86_64-w64-mingw32/include/SDL2 -I../libs/SDL2_mixer/x86_64-w64-mingw32/include/SDL2 -Dmain=SDL_main
|
||||
SDL_LDFLAGS?=-L../libs/SDL2/x86_64-w64-mingw32/lib -L../libs/SDL2_mixer/x86_64-w64-mingw32/lib -lmingw32 -lSDL2main -lSDL2 -mwindows
|
||||
else
|
||||
HAVE_LIBGME=1
|
||||
LIBGME_CFLAGS=-I../libs/gme/include
|
||||
LIBGME_LDFLAGS=-L../libs/gme/win32 -lgme
|
||||
|
||||
ifdef HAVE_OPENMPT
|
||||
LIBOPENMPT_CFLAGS?=-I../libs/libopenmpt/inc
|
||||
LIBOPENMPT_LDFLAGS?=-L../libs/libopenmpt/lib/x86/mingw -lopenmpt
|
||||
endif
|
||||
|
||||
SDL_CFLAGS?=-I../libs/SDL2/i686-w64-mingw32/include/SDL2 -I../libs/SDL2_mixer/i686-w64-mingw32/include/SDL2 -Dmain=SDL_main
|
||||
SDL_LDFLAGS?=-L../libs/SDL2/i686-w64-mingw32/lib -L../libs/SDL2_mixer/i686-w64-mingw32/lib -lmingw32 -lSDL2main -lSDL2 -mwindows
|
||||
endif
|
||||
|
|
Loading…
Reference in a new issue