mirror of
				https://github.com/KartKrewDev/RingRacers.git
				synced 2025-10-30 08:01:28 +00:00 
			
		
		
		
	Merge remote-tracking branch 'remotes/upstream/master' into HEAD
This commit is contained in:
		
						commit
						e316963e1a
					
				
					 48 changed files with 395 additions and 490 deletions
				
			
		| 
						 | 
				
			
			@ -36,12 +36,15 @@ jobs:
 | 
			
		|||
            - v1-SRB2-APT
 | 
			
		||||
      - run:
 | 
			
		||||
          name: Install SDK
 | 
			
		||||
          command: apt-get -qq -y install git build-essential nasm libpng12-dev:i386 libsdl2-mixer-dev:i386 libgme-dev:i386 gettext ccache wget gcc-multilib upx
 | 
			
		||||
          command: apt-get -qq -y --no-install-recommends install git build-essential nasm libpng12-dev:i386 libsdl2-mixer-dev:i386 libgme-dev:i386 gettext ccache wget gcc-multilib upx openssh-client
 | 
			
		||||
      - save_cache:
 | 
			
		||||
          key: v1-SRB2-APT
 | 
			
		||||
          paths:
 | 
			
		||||
            - /var/cache/apt/archives
 | 
			
		||||
      - checkout
 | 
			
		||||
      - run:
 | 
			
		||||
          name: Compile without network support
 | 
			
		||||
          command: make -C src LINUX=1 ERRORMODE=1 -k NONET=1
 | 
			
		||||
      - run:
 | 
			
		||||
          name: Clean build
 | 
			
		||||
          command: make -C src LINUX=1 clean
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -26,6 +26,7 @@ matrix:
 | 
			
		|||
              - p7zip-full
 | 
			
		||||
              - gcc-4.4
 | 
			
		||||
          compiler: gcc-4.4
 | 
			
		||||
          env: GCC44=1
 | 
			
		||||
          if: env(DPL_ENABLED) != "1" OR env(DPL_TERMINATE_TESTS) != "1" OR NOT branch =~ /^.*deployer.*$/
 | 
			
		||||
          #gcc-4.4 (Ubuntu/Linaro 4.4.7-8ubuntu1) 4.4.7
 | 
			
		||||
        - os: linux
 | 
			
		||||
| 
						 | 
				
			
			@ -39,6 +40,7 @@ matrix:
 | 
			
		|||
              - p7zip-full
 | 
			
		||||
              - gcc-4.6
 | 
			
		||||
          compiler: gcc-4.6
 | 
			
		||||
          env: GCC46=1
 | 
			
		||||
          if: env(DPL_ENABLED) != "1" OR env(DPL_TERMINATE_TESTS) != "1" OR NOT branch =~ /^.*deployer.*$/
 | 
			
		||||
          #gcc-4.6 (Ubuntu/Linaro 4.6.4-6ubuntu2) 4.6.4
 | 
			
		||||
        - os: linux
 | 
			
		||||
| 
						 | 
				
			
			@ -52,10 +54,12 @@ matrix:
 | 
			
		|||
              - p7zip-full
 | 
			
		||||
              - gcc-4.7
 | 
			
		||||
          compiler: gcc-4.7
 | 
			
		||||
          env: GCC47=1
 | 
			
		||||
          if: env(DPL_ENABLED) != "1" OR env(DPL_TERMINATE_TESTS) != "1" OR NOT branch =~ /^.*deployer.*$/
 | 
			
		||||
          #gcc-4.7
 | 
			
		||||
        - os: linux
 | 
			
		||||
          compiler: gcc
 | 
			
		||||
          env: GCC48=1
 | 
			
		||||
          if: env(DPL_ENABLED) != "1" OR env(DPL_TERMINATE_TESTS) != "1" OR NOT branch =~ /^.*deployer.*$/
 | 
			
		||||
          #gcc (Ubuntu 4.8.4-2ubuntu1~14.04) 4.8.4
 | 
			
		||||
        - os: linux
 | 
			
		||||
| 
						 | 
				
			
			@ -71,6 +75,7 @@ matrix:
 | 
			
		|||
              - p7zip-full
 | 
			
		||||
              - gcc-4.8
 | 
			
		||||
          compiler: gcc-4.8
 | 
			
		||||
          env: GCC48=1
 | 
			
		||||
          if: env(DPL_ENABLED) != "1" OR env(DPL_TERMINATE_TESTS) != "1" OR NOT branch =~ /^.*deployer.*$/
 | 
			
		||||
          #gcc-4.8 (Ubuntu 4.8.5-2ubuntu1~14.04.1) 4.8.5
 | 
			
		||||
        - os: linux
 | 
			
		||||
| 
						 | 
				
			
			@ -86,7 +91,7 @@ matrix:
 | 
			
		|||
              - p7zip-full
 | 
			
		||||
              - gcc-7
 | 
			
		||||
          compiler: gcc-7
 | 
			
		||||
          env: WFLAGS="-Wno-tautological-compare -Wno-error=implicit-fallthrough -Wno-implicit-fallthrough"
 | 
			
		||||
          env: WFLAGS="-Wno-tautological-compare -Wno-error=implicit-fallthrough -Wno-implicit-fallthrough" GCC72=1
 | 
			
		||||
          if: env(DPL_ENABLED) != "1" OR env(DPL_TERMINATE_TESTS) != "1" OR NOT branch =~ /^.*deployer.*$/
 | 
			
		||||
          #gcc-7 (Ubuntu 7.2.0-1ubuntu1~14.04) 7.2.0 20170802
 | 
			
		||||
        - os: linux
 | 
			
		||||
| 
						 | 
				
			
			@ -102,7 +107,7 @@ matrix:
 | 
			
		|||
              - p7zip-full
 | 
			
		||||
              - gcc-8
 | 
			
		||||
          compiler: gcc-8
 | 
			
		||||
          env: WFLAGS="-Wno-tautological-compare -Wno-error=implicit-fallthrough -Wno-implicit-fallthrough -Wno-error=format-overflow"
 | 
			
		||||
          env: WFLAGS="-Wno-tautological-compare -Wno-error=implicit-fallthrough -Wno-implicit-fallthrough -Wno-error=format-overflow" GCC81=1
 | 
			
		||||
          if: env(DPL_ENABLED) != "1" OR env(DPL_TERMINATE_TESTS) != "1" OR NOT branch =~ /^.*deployer.*$/
 | 
			
		||||
          #gcc-8 (Ubuntu 7.2.0-1ubuntu1~14.04) 8.1.0
 | 
			
		||||
        - os: linux
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							| 
						 | 
				
			
			@ -4,7 +4,7 @@ project(libgme)
 | 
			
		|||
include (CheckCXXCompilerFlag)
 | 
			
		||||
 | 
			
		||||
# When version is changed, also change the one in gme/gme.h to match
 | 
			
		||||
set(GME_VERSION 0.6.0 CACHE INTERNAL "libgme Version")
 | 
			
		||||
set(GME_VERSION 0.6.2 CACHE INTERNAL "libgme Version")
 | 
			
		||||
 | 
			
		||||
# 2.6+ always assumes FATAL_ERROR, but 2.4 and below don't.
 | 
			
		||||
# Of course, 2.4 might work, in which case you're welcome to drop
 | 
			
		||||
| 
						 | 
				
			
			@ -57,6 +57,8 @@ if (USE_GME_NSFE AND NOT USE_GME_NSF)
 | 
			
		|||
    SET(USE_GME_NSF 1 CACHE BOOL "Enable NES NSF music emulation" FORCE)
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
option(BUILD_SHARED_LIBS "Build shared library (set to OFF for static library)" ON)
 | 
			
		||||
 | 
			
		||||
# Check for GCC "visibility" support.
 | 
			
		||||
if (CMAKE_COMPILER_IS_GNUCXX)
 | 
			
		||||
   check_cxx_compiler_flag (-fvisibility=hidden __LIBGME_TEST_VISIBILITY)
 | 
			
		||||
| 
						 | 
				
			
			@ -79,10 +81,10 @@ if (CMAKE_COMPILER_IS_GNUCXX)
 | 
			
		|||
         endif()
 | 
			
		||||
      endif()
 | 
			
		||||
   endif() # test visibility
 | 
			
		||||
endif (CMAKE_COMPILER_IS_GNUCXX)
 | 
			
		||||
 | 
			
		||||
# Cache this result
 | 
			
		||||
set( LIBGME_HAVE_GCC_VISIBILITY ${ENABLE_VISIBILITY} CACHE BOOL "GCC support for hidden visibility")
 | 
			
		||||
    # Cache this result
 | 
			
		||||
    set( LIBGME_HAVE_GCC_VISIBILITY ${ENABLE_VISIBILITY} CACHE BOOL "GCC support for hidden visibility")
 | 
			
		||||
endif (CMAKE_COMPILER_IS_GNUCXX)
 | 
			
		||||
 | 
			
		||||
# Shared library defined here
 | 
			
		||||
add_subdirectory(gme)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,262 +1,5 @@
 | 
			
		|||
Game_Music_Emu Change Log
 | 
			
		||||
-------------------------
 | 
			
		||||
 | 
			
		||||
Game_Music_Emu 0.6.0
 | 
			
		||||
--------------------
 | 
			
		||||
 | 
			
		||||
- Note: A 0.5.6 release was referenced but never tagged or packaged.
 | 
			
		||||
 | 
			
		||||
- SPC improvements:
 | 
			
		||||
    - Switched to newer snes_spc 0.9.0 for SPC emulation. Uses fast DSP.
 | 
			
		||||
    - Fixed Spc_Emu::gain().
 | 
			
		||||
    - Fixed support for files <0x10200 bytes.
 | 
			
		||||
 | 
			
		||||
- Other bugfixes:
 | 
			
		||||
    - Fixed a couple of GBS bugs, one involving access of memory after
 | 
			
		||||
      realloc.
 | 
			
		||||
    - Blip_Buffer works on systems where 'double' is a single-precision
 | 
			
		||||
      floating-point type.
 | 
			
		||||
    - Fix uninitialized buffer size in dual_resampler.
 | 
			
		||||
    - Compilation warnings squashed out as of clang 3.3-pre and gcc 4.7.2.
 | 
			
		||||
 | 
			
		||||
- API changes/additions:
 | 
			
		||||
    - Removed documentation of C++ interface, as the C interface in gme.h is
 | 
			
		||||
      the only supported one.
 | 
			
		||||
    - Added gme_enable_accuracy() for enabling more accurate sound emulation
 | 
			
		||||
      options (currently affects SPC only).
 | 
			
		||||
 | 
			
		||||
- Build system improvements:
 | 
			
		||||
    - Add pkg_config support.
 | 
			
		||||
    - Fix build on case-insensitive systems.
 | 
			
		||||
    - Allow for install on Cygwin.
 | 
			
		||||
    - Fix install on multilib systems, such as many 64-bit distros (CMake must
 | 
			
		||||
      be able to figure out your system's libsuffix, if any).
 | 
			
		||||
    - C++ implementation symbols are not leaked into the resultant library
 | 
			
		||||
      file (requires symbol visibility support).
 | 
			
		||||
 | 
			
		||||
- Sample player improvements:
 | 
			
		||||
    - Can toggle fast/accurate emulation (with the 'A' key).
 | 
			
		||||
 | 
			
		||||
Game_Music_Emu 0.5.5
 | 
			
		||||
--------------------
 | 
			
		||||
- CMake build support has been added.  You can build Game_Music_Emu as
 | 
			
		||||
a shared library and install it so that you do not have to include your
 | 
			
		||||
own copy if you know libgme will be present on your target system.
 | 
			
		||||
Requires CMake 2.6 or higher.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Game_Music_Emu 0.5.2
 | 
			
		||||
--------------------
 | 
			
		||||
- *TONS* of changes and improvements. You should re-read the new header
 | 
			
		||||
files and documentation as the changes will allow you to simplify your
 | 
			
		||||
code a lot (it might even be simpler to just rewrite it). Existing code
 | 
			
		||||
should continue to work without changes in most cases (see Deprecated
 | 
			
		||||
features in gme.txt).
 | 
			
		||||
 | 
			
		||||
- New file formats: AY, HES, KSS, SAP, NSFE
 | 
			
		||||
 | 
			
		||||
- All-new comprehensive C interface (also usable from C++). Simplifies
 | 
			
		||||
many things, especially file loading, and brings everything together in
 | 
			
		||||
one header file (gme.h).
 | 
			
		||||
 | 
			
		||||
- Information tags and track names and times can be accessed for all
 | 
			
		||||
game music formats
 | 
			
		||||
 | 
			
		||||
- New features supported by all emulators: end of track fading,
 | 
			
		||||
automatic silence detection, adjustable song tempo, seek to new time in
 | 
			
		||||
track
 | 
			
		||||
 | 
			
		||||
- Updated mini player example to support track names and times, echo,
 | 
			
		||||
tempo, and channel muting, and added visual waveform display
 | 
			
		||||
 | 
			
		||||
- Improved configuration to use blargg_config.h, which you can modify
 | 
			
		||||
and keep when you update to a newer libary version. Includes flag for
 | 
			
		||||
library to automatically handle gzipped files using zlib (so you don't
 | 
			
		||||
need to use Gzip_File_Reader anymore).
 | 
			
		||||
 | 
			
		||||
- GBS: Fixed wave channel to not reset waveform when APU is powered off
 | 
			
		||||
(affected Garfield). Also improved invalid bank selection (affected Game
 | 
			
		||||
& Watch and others).
 | 
			
		||||
 | 
			
		||||
- VGM: Added support for alternate noise shifter register
 | 
			
		||||
configurations, used by other systems like the BBC Micro.
 | 
			
		||||
 | 
			
		||||
- SPC: Removed IPL ROM dump from emulator, as none of the SPC files I
 | 
			
		||||
scanned needed it, and an SPC file can include a copy if necessary. Also
 | 
			
		||||
re-enabled supposed clamping in gaussian interpolation between the third
 | 
			
		||||
and fourth lookups, though I don't know whether it matters
 | 
			
		||||
 | 
			
		||||
- Added Music_Emu::load_mem() to use music data already in memory
 | 
			
		||||
(without copying it)
 | 
			
		||||
 | 
			
		||||
- Added Music_Emu::warning(), which reports minor problems when loading
 | 
			
		||||
and playing a music file
 | 
			
		||||
 | 
			
		||||
- Added Music_Emu::set_gain() for uniform adjustment of gain. Can only
 | 
			
		||||
be set during initialization, so not useful as a general volume control.
 | 
			
		||||
 | 
			
		||||
- Added custom operator new to ensure that no exceptions are thrown in
 | 
			
		||||
the library (I'd use std::nothrow if it were part of pre-ISO (ARM) C++)
 | 
			
		||||
 | 
			
		||||
- Added BLIP_BUFFER_FAST flag to blargg_config.h to use a lower quality
 | 
			
		||||
bandlimited synthesis in "classic" emulators, which might help
 | 
			
		||||
performance on ancient processors (measure first!). Don't use this
 | 
			
		||||
unless absolutely necessary, as quality suffers.
 | 
			
		||||
 | 
			
		||||
- Improved performance a bit for x86 platforms
 | 
			
		||||
 | 
			
		||||
- Text files now in DOS newline format so they will open in Notepad
 | 
			
		||||
properly
 | 
			
		||||
 | 
			
		||||
- Removed requirement that file header structures not have any padding
 | 
			
		||||
added to the end
 | 
			
		||||
 | 
			
		||||
- Fixed common bug in all CPU emulators where negative program counter
 | 
			
		||||
could crash emulator (occurred during a negative branch from the
 | 
			
		||||
beginning of memory). Also fixed related bug in Z80 emulator for
 | 
			
		||||
IX/IY+displacement mode.
 | 
			
		||||
 | 
			
		||||
- Eliminated all warnings when compiling on gcc 4.0. The following
 | 
			
		||||
generates no diagnostics:
 | 
			
		||||
 | 
			
		||||
	gcc -S gme/*.cpp -o /dev/null -ansi -fno-gnu-keywords
 | 
			
		||||
	-fno-nonansi-builtins -pedantic -W -Wabi -Wall -Wcast-align
 | 
			
		||||
	-Wcast-qual -Wchar-subscripts -Wdisabled-optimization -Werror
 | 
			
		||||
	-Winline -Wlong-long -Wmultichar -Winvalid-offsetof
 | 
			
		||||
	-Wnon-virtual-dtor -Woverloaded-virtual -Wparentheses
 | 
			
		||||
	-Wpointer-arith -Wredundant-decls -Wreorder -Wsign-compare
 | 
			
		||||
	-Wsign-promo -Wunknown-pragmas -Wwrite-strings
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Game_Music_Emu 0.3.0
 | 
			
		||||
--------------------
 | 
			
		||||
- Added more demos, including music player using the SDL multimedia
 | 
			
		||||
library for sound, and improved documentation
 | 
			
		||||
 | 
			
		||||
- All: Improved interface to emulators to allow simpler setup and
 | 
			
		||||
loading. Instead of various init() functions, all now support
 | 
			
		||||
set_sample_rate( long rate ) and load( const char* file_path ).
 | 
			
		||||
 | 
			
		||||
- All: Removed error return from start_track() and play(), and added
 | 
			
		||||
error_count() to get the total number of emulation errors since the
 | 
			
		||||
track was last started. See demos for examples of new usage.
 | 
			
		||||
 | 
			
		||||
- All: Fixed mute_voices() muting to be preserved after loading files
 | 
			
		||||
and starting tracks, instead of being cleared as it was whenever a track
 | 
			
		||||
was started
 | 
			
		||||
 | 
			
		||||
- VGM: Rewrote Vgm_Emu to support Sega Genesis/Mega Drive FM sound at
 | 
			
		||||
any sample rate with optional FM oversampling, support for alternate
 | 
			
		||||
YM2612 sound cores, and support for optional YM2413
 | 
			
		||||
 | 
			
		||||
- VGM: Added tempo control, useful for slowing 60Hz NTSC Sega Genesis
 | 
			
		||||
music to 50Hz PAL
 | 
			
		||||
 | 
			
		||||
- VGM: Removed Vgm_Emu::track_data(), since I realized that this
 | 
			
		||||
information is already present in the VGM header (oops!)
 | 
			
		||||
 | 
			
		||||
- GYM: Changed Gym_Emu::track_length() operation (see Gym_Emu.h)
 | 
			
		||||
 | 
			
		||||
- NSF: Added support for Sunsoft FME-7 sound chip used by Gimmick
 | 
			
		||||
soundtrack
 | 
			
		||||
 | 
			
		||||
- NSF: Fixed Namco 106 problems with Final Lap and others
 | 
			
		||||
 | 
			
		||||
- Moved library sources to gme/ directory to reduce clutter, and merged
 | 
			
		||||
boost/ functionality into blargg_common.h
 | 
			
		||||
 | 
			
		||||
- Added Gzip_File_Reader for transparently using gzipped files
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Game_Music_Emu 0.2.4
 | 
			
		||||
--------------------
 | 
			
		||||
- Created a discussion forum for problems and feedback:
 | 
			
		||||
http://groups-beta.google.com/group/blargg-sound-libs
 | 
			
		||||
 | 
			
		||||
- Changed error return value of Blip_Buffer::sample_rate() (also for
 | 
			
		||||
Stereo_Buffer, Effects_Buffer, etc.) to blargg_err_t (defined in
 | 
			
		||||
blargg_common.h), to make error reporting consistent with other
 | 
			
		||||
functions. This means the "no error" return value is the opposite of
 | 
			
		||||
what it was before, which will break current code which checks the error
 | 
			
		||||
return value:
 | 
			
		||||
 | 
			
		||||
	// current code (broken)
 | 
			
		||||
	if ( !buf.sample_rate( samples_per_sec ) )
 | 
			
		||||
		out_of_memory();
 | 
			
		||||
	
 | 
			
		||||
	// quick-and-dirty fix (just remove the ! operation)
 | 
			
		||||
	if ( buf.sample_rate( samples_per_sec ) )
 | 
			
		||||
		out_of_memory();
 | 
			
		||||
	
 | 
			
		||||
	// proper fix
 | 
			
		||||
	blargg_err_t error = buf.sample_rate( samples_per_sec );
 | 
			
		||||
	if ( error )
 | 
			
		||||
		report_error( error );
 | 
			
		||||
 | 
			
		||||
- Implemented workaround for MSVC++ 6 compiler limitations, allowing it
 | 
			
		||||
to work on that compiler again
 | 
			
		||||
 | 
			
		||||
- Added sample clamping to avoid wrap-around at high volumes, allowing
 | 
			
		||||
higher volume with little distortion
 | 
			
		||||
 | 
			
		||||
- Added to-do list and design notes
 | 
			
		||||
 | 
			
		||||
- Added Music_Emu::skip( long sample_count ) to skip ahead in current
 | 
			
		||||
track
 | 
			
		||||
 | 
			
		||||
- Added Gym_Emu::track_length() and Vgm_Emu::track_length() for
 | 
			
		||||
determining the length of non-looped GYM and VGM files
 | 
			
		||||
 | 
			
		||||
- Partially implemented DMC non-linearity when its value is directly set
 | 
			
		||||
using $4011, which reduces previously over-emphasized "popping" of
 | 
			
		||||
percussion on some games (TMNT II in particular)
 | 
			
		||||
 | 
			
		||||
- Fixed Fir_Resampler, used for SPC and GYM playback (was incorrectly
 | 
			
		||||
using abs() instead of fabs()...argh)
 | 
			
		||||
 | 
			
		||||
- Fixed SPC emulation bugs: eliminated clicks in Plok! soundtrack and
 | 
			
		||||
now stops sample slightly earlier than the end, as the SNES does. Fixed
 | 
			
		||||
a totally broken CPU addressing mode.
 | 
			
		||||
 | 
			
		||||
- Fixed Konami VRC6 saw wave (was very broken before). Now VRC6 music
 | 
			
		||||
sounds decent
 | 
			
		||||
 | 
			
		||||
- Fixed a minor GBS emulation bug
 | 
			
		||||
 | 
			
		||||
- Fixed GYM loop point bug when track was restarted before loop point
 | 
			
		||||
had been reached
 | 
			
		||||
 | 
			
		||||
- Made default GBS frequency equalization less muffled
 | 
			
		||||
 | 
			
		||||
- Added pseudo-surround effect removal for SPC files
 | 
			
		||||
 | 
			
		||||
- Added Music_Emu::voice_names() which returns names for each voice.
 | 
			
		||||
 | 
			
		||||
- Added BLARGG_SOURCE_BEGIN which allows custom compiler options to be
 | 
			
		||||
easily set for library sources
 | 
			
		||||
 | 
			
		||||
- Changed assignment of expansion sound chips in Nsf_Emu to be spread
 | 
			
		||||
more evenly when using Effects_Buffer
 | 
			
		||||
 | 
			
		||||
- Changed 'size_t' values in Blip_Buffer interface to 'long'
 | 
			
		||||
 | 
			
		||||
- Changed demo to generate a WAVE sound file rather than an AIFF file
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Game_Music_Emu 0.2.0
 | 
			
		||||
--------------------
 | 
			
		||||
- Redid framework and rewrote/cleaned up emulators
 | 
			
		||||
 | 
			
		||||
- Changed licensing to GNU Lesser General Public License (LGPL)
 | 
			
		||||
 | 
			
		||||
- Added Sega Genesis GYM and Super Nintendo SPC emulators
 | 
			
		||||
 | 
			
		||||
- Added Namco-106 and Konami VRC6 sound chip support to NSF emulator
 | 
			
		||||
 | 
			
		||||
- Eliminated use of static mutable data in emulators, allowing
 | 
			
		||||
multi-instance safety
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Game_Music_Emu 0.1.0
 | 
			
		||||
--------------------
 | 
			
		||||
- First release
 | 
			
		||||
Please see the git version history (e.g. git shortlog tags/0.6.0..tags/0.6.1)
 | 
			
		||||
for the accurate change log.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,7 +1,5 @@
 | 
			
		|||
/* C example that opens a game music file and records 10 seconds to "out.wav" */
 | 
			
		||||
 | 
			
		||||
static char filename [] = "test.nsf"; /* opens this file (can be any music type) */
 | 
			
		||||
 | 
			
		||||
#include "gme/gme.h"
 | 
			
		||||
 | 
			
		||||
#include "Wave_Writer.h" /* wave_ functions for writing sound file */
 | 
			
		||||
| 
						 | 
				
			
			@ -10,10 +8,15 @@ static char filename [] = "test.nsf"; /* opens this file (can be any music type)
 | 
			
		|||
 | 
			
		||||
void handle_error( const char* str );
 | 
			
		||||
 | 
			
		||||
int main()
 | 
			
		||||
int main(int argc, char *argv[])
 | 
			
		||||
{
 | 
			
		||||
	const char *filename = "test.nsf"; /* Default file to open */
 | 
			
		||||
	if ( argc >= 2 )
 | 
			
		||||
		filename = argv[1];
 | 
			
		||||
 | 
			
		||||
	long sample_rate = 44100; /* number of samples per second */
 | 
			
		||||
	int track = 0; /* index of track to play (0 = first) */
 | 
			
		||||
	/* index of track to play (0 = first) */
 | 
			
		||||
	int track = argc >= 3 ? atoi(argv[2]) : 0;
 | 
			
		||||
	
 | 
			
		||||
	/* Open music file in new emulator */
 | 
			
		||||
	Music_Emu* emu;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,7 +1,5 @@
 | 
			
		|||
// C++ example that opens a game music file and records 10 seconds to "out.wav"
 | 
			
		||||
 | 
			
		||||
static char filename [] = "test.nsf"; /* opens this file (can be any music type) */
 | 
			
		||||
 | 
			
		||||
#include "gme/Music_Emu.h"
 | 
			
		||||
 | 
			
		||||
#include "Wave_Writer.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -10,10 +8,15 @@ static char filename [] = "test.nsf"; /* opens this file (can be any music type)
 | 
			
		|||
 | 
			
		||||
void handle_error( const char* str );
 | 
			
		||||
 | 
			
		||||
int main()
 | 
			
		||||
int main(int argc, char *argv[])
 | 
			
		||||
{
 | 
			
		||||
	const char *filename = "test.nsf"; /* Default file to open */
 | 
			
		||||
	if ( argc >= 2 )
 | 
			
		||||
		filename = argv[1];
 | 
			
		||||
 | 
			
		||||
	long sample_rate = 44100; // number of samples per second
 | 
			
		||||
	int track = 0; // index of track to play (0 = first)
 | 
			
		||||
	// index of track to play (0 = first)
 | 
			
		||||
	int track = argc >= 3 ? atoi(argv[2]) : 0;
 | 
			
		||||
	
 | 
			
		||||
	// Determine file type
 | 
			
		||||
	gme_type_t file_type;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,10 +1,10 @@
 | 
			
		|||
Game_Music_Emu 0.6.0
 | 
			
		||||
Game_Music_Emu 0.6.2
 | 
			
		||||
--------------------
 | 
			
		||||
Author : Shay Green <gblargg@gmail.com>
 | 
			
		||||
Website: http://www.slack.net/~ant/libs/
 | 
			
		||||
Forum  : http://groups.google.com/group/blargg-sound-libs
 | 
			
		||||
Source : https://code.google.com/p/game-music-emu/
 | 
			
		||||
License: GNU Lesser General Public License (LGPL)
 | 
			
		||||
Author     : Shay Green <gblargg@gmail.com>
 | 
			
		||||
Maintainer : Michael Pyne <mpyne@purinchu.net>
 | 
			
		||||
Website    : https://bitbucket.org/mpyne/game-music-emu/
 | 
			
		||||
Source     : https://bitbucket.org/mpyne/game-music-emu/
 | 
			
		||||
License    : GNU Lesser General Public License (LGPL), see LICENSE.txt
 | 
			
		||||
 | 
			
		||||
Contents
 | 
			
		||||
--------
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -143,7 +143,7 @@ add_definitions(-DBLARGG_BUILD_DLL)
 | 
			
		|||
include_directories(${CMAKE_CURRENT_BINARY_DIR})
 | 
			
		||||
 | 
			
		||||
# Add library to be compiled.
 | 
			
		||||
add_library(gme SHARED ${libgme_SRCS})
 | 
			
		||||
add_library(gme ${libgme_SRCS})
 | 
			
		||||
 | 
			
		||||
# The version is the release.  The "soversion" is the API version.  As long
 | 
			
		||||
# as only build fixes are performed (i.e. no backwards-incompatible changes
 | 
			
		||||
| 
						 | 
				
			
			@ -159,4 +159,4 @@ install(TARGETS gme LIBRARY DESTINATION lib${LIB_SUFFIX}
 | 
			
		|||
                    ARCHIVE DESTINATION lib) # DLL platforms
 | 
			
		||||
 | 
			
		||||
install(FILES ${EXPORTED_HEADERS} DESTINATION include/gme)
 | 
			
		||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libgme.pc DESTINATION lib/pkgconfig)
 | 
			
		||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libgme.pc DESTINATION lib${LIB_SUFFIX}/pkgconfig)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,8 +22,13 @@ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */
 | 
			
		|||
 | 
			
		||||
const char Data_Reader::eof_error [] = "Unexpected end of file";
 | 
			
		||||
 | 
			
		||||
#define RETURN_VALIDITY_CHECK( cond ) \
 | 
			
		||||
	do { if ( unlikely( !(cond) ) ) return "Corrupt file"; } while(0)
 | 
			
		||||
 | 
			
		||||
blargg_err_t Data_Reader::read( void* p, long s )
 | 
			
		||||
{
 | 
			
		||||
	RETURN_VALIDITY_CHECK( s > 0 );
 | 
			
		||||
 | 
			
		||||
	long result = read_avail( p, s );
 | 
			
		||||
	if ( result != s )
 | 
			
		||||
	{
 | 
			
		||||
| 
						 | 
				
			
			@ -38,6 +43,8 @@ blargg_err_t Data_Reader::read( void* p, long s )
 | 
			
		|||
 | 
			
		||||
blargg_err_t Data_Reader::skip( long count )
 | 
			
		||||
{
 | 
			
		||||
	RETURN_VALIDITY_CHECK( count >= 0 );
 | 
			
		||||
 | 
			
		||||
	char buf [512];
 | 
			
		||||
	while ( count )
 | 
			
		||||
	{
 | 
			
		||||
| 
						 | 
				
			
			@ -54,7 +61,8 @@ long File_Reader::remain() const { return size() - tell(); }
 | 
			
		|||
 | 
			
		||||
blargg_err_t File_Reader::skip( long n )
 | 
			
		||||
{
 | 
			
		||||
	assert( n >= 0 );
 | 
			
		||||
	RETURN_VALIDITY_CHECK( n >= 0 );
 | 
			
		||||
 | 
			
		||||
	if ( !n )
 | 
			
		||||
		return 0;
 | 
			
		||||
	return seek( tell() + n );
 | 
			
		||||
| 
						 | 
				
			
			@ -67,13 +75,14 @@ Subset_Reader::Subset_Reader( Data_Reader* dr, long size )
 | 
			
		|||
	in = dr;
 | 
			
		||||
	remain_ = dr->remain();
 | 
			
		||||
	if ( remain_ > size )
 | 
			
		||||
		remain_ = size;
 | 
			
		||||
		remain_ = max( 0l, size );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
long Subset_Reader::remain() const { return remain_; }
 | 
			
		||||
 | 
			
		||||
long Subset_Reader::read_avail( void* p, long s )
 | 
			
		||||
{
 | 
			
		||||
	s = max( 0l, s );
 | 
			
		||||
	if ( s > remain_ )
 | 
			
		||||
		s = remain_;
 | 
			
		||||
	remain_ -= s;
 | 
			
		||||
| 
						 | 
				
			
			@ -85,7 +94,7 @@ long Subset_Reader::read_avail( void* p, long s )
 | 
			
		|||
Remaining_Reader::Remaining_Reader( void const* h, long size, Data_Reader* r )
 | 
			
		||||
{
 | 
			
		||||
	header = (char const*) h;
 | 
			
		||||
	header_end = header + size;
 | 
			
		||||
	header_end = header + max( 0l, size );
 | 
			
		||||
	in = r;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -93,6 +102,7 @@ long Remaining_Reader::remain() const { return header_end - header + in->remain(
 | 
			
		|||
 | 
			
		||||
long Remaining_Reader::read_first( void* out, long count )
 | 
			
		||||
{
 | 
			
		||||
	count = max( 0l, count );
 | 
			
		||||
	long first = header_end - header;
 | 
			
		||||
	if ( first )
 | 
			
		||||
	{
 | 
			
		||||
| 
						 | 
				
			
			@ -107,8 +117,9 @@ long Remaining_Reader::read_first( void* out, long count )
 | 
			
		|||
 | 
			
		||||
long Remaining_Reader::read_avail( void* out, long count )
 | 
			
		||||
{
 | 
			
		||||
	count = max( 0l, count );
 | 
			
		||||
	long first = read_first( out, count );
 | 
			
		||||
	long second = count - first;
 | 
			
		||||
	long second = max( 0l, count - first );
 | 
			
		||||
	if ( second )
 | 
			
		||||
	{
 | 
			
		||||
		second = in->read_avail( (char*) out + first, second );
 | 
			
		||||
| 
						 | 
				
			
			@ -120,8 +131,9 @@ long Remaining_Reader::read_avail( void* out, long count )
 | 
			
		|||
 | 
			
		||||
blargg_err_t Remaining_Reader::read( void* out, long count )
 | 
			
		||||
{
 | 
			
		||||
	count = max( 0l, count );
 | 
			
		||||
	long first = read_first( out, count );
 | 
			
		||||
	long second = count - first;
 | 
			
		||||
	long second = max( 0l, count - first );
 | 
			
		||||
	if ( !second )
 | 
			
		||||
		return 0;
 | 
			
		||||
	return in->read( (char*) out + first, second );
 | 
			
		||||
| 
						 | 
				
			
			@ -131,7 +143,7 @@ blargg_err_t Remaining_Reader::read( void* out, long count )
 | 
			
		|||
 | 
			
		||||
Mem_File_Reader::Mem_File_Reader( const void* p, long s ) :
 | 
			
		||||
	begin( (const char*) p ),
 | 
			
		||||
	size_( s )
 | 
			
		||||
	size_( max( 0l, s ) )
 | 
			
		||||
{
 | 
			
		||||
	pos = 0;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -141,6 +153,7 @@ long Mem_File_Reader::size() const { return size_; }
 | 
			
		|||
long Mem_File_Reader::read_avail( void* p, long s )
 | 
			
		||||
{
 | 
			
		||||
	long r = remain();
 | 
			
		||||
	s = max( 0l, s );
 | 
			
		||||
	if ( s > r )
 | 
			
		||||
		s = r;
 | 
			
		||||
	memcpy( p, begin + pos, s );
 | 
			
		||||
| 
						 | 
				
			
			@ -152,6 +165,7 @@ long Mem_File_Reader::tell() const { return pos; }
 | 
			
		|||
 | 
			
		||||
blargg_err_t Mem_File_Reader::seek( long n )
 | 
			
		||||
{
 | 
			
		||||
	RETURN_VALIDITY_CHECK( n >= 0 );
 | 
			
		||||
	if ( n > size_ )
 | 
			
		||||
		return eof_error;
 | 
			
		||||
	pos = n;
 | 
			
		||||
| 
						 | 
				
			
			@ -164,7 +178,7 @@ Callback_Reader::Callback_Reader( callback_t c, long size, void* d ) :
 | 
			
		|||
	callback( c ),
 | 
			
		||||
	data( d )
 | 
			
		||||
{
 | 
			
		||||
	remain_ = size;
 | 
			
		||||
	remain_ = max( 0l, size );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
long Callback_Reader::remain() const { return remain_; }
 | 
			
		||||
| 
						 | 
				
			
			@ -173,13 +187,14 @@ long Callback_Reader::read_avail( void* out, long count )
 | 
			
		|||
{
 | 
			
		||||
	if ( count > remain_ )
 | 
			
		||||
		count = remain_;
 | 
			
		||||
	if ( Callback_Reader::read( out, count ) )
 | 
			
		||||
	if ( count < 0 || Callback_Reader::read( out, count ) )
 | 
			
		||||
		count = -1;
 | 
			
		||||
	return count;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
blargg_err_t Callback_Reader::read( void* out, long count )
 | 
			
		||||
{
 | 
			
		||||
	RETURN_VALIDITY_CHECK( count >= 0 );
 | 
			
		||||
	if ( count > remain_ )
 | 
			
		||||
		return eof_error;
 | 
			
		||||
	return callback( data, out, count );
 | 
			
		||||
| 
						 | 
				
			
			@ -210,11 +225,12 @@ long Std_File_Reader::size() const
 | 
			
		|||
 | 
			
		||||
long Std_File_Reader::read_avail( void* p, long s )
 | 
			
		||||
{
 | 
			
		||||
	return fread( p, 1, s, (FILE*) file_ );
 | 
			
		||||
	return fread( p, 1, max( 0l, s ), (FILE*) file_ );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
blargg_err_t Std_File_Reader::read( void* p, long s )
 | 
			
		||||
{
 | 
			
		||||
	RETURN_VALIDITY_CHECK( s > 0 );
 | 
			
		||||
	if ( s == (long) fread( p, 1, s, (FILE*) file_ ) )
 | 
			
		||||
		return 0;
 | 
			
		||||
	if ( feof( (FILE*) file_ ) )
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -129,6 +129,8 @@ private:
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_ZLIB_H
 | 
			
		||||
#include <zlib.h>
 | 
			
		||||
 | 
			
		||||
// Gzip compressed file reader
 | 
			
		||||
class Gzip_File_Reader : public File_Reader {
 | 
			
		||||
public:
 | 
			
		||||
| 
						 | 
				
			
			@ -143,7 +145,7 @@ public:
 | 
			
		|||
	long tell() const;
 | 
			
		||||
	blargg_err_t seek( long );
 | 
			
		||||
private:
 | 
			
		||||
	void* file_;
 | 
			
		||||
	gzFile file_;
 | 
			
		||||
	long size_;
 | 
			
		||||
};
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -178,6 +178,11 @@ blargg_long Music_Emu::msec_to_samples( blargg_long msec ) const
 | 
			
		|||
	return (sec * sample_rate() + msec * sample_rate() / 1000) * stereo;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
long Music_Emu::tell_samples() const
 | 
			
		||||
{
 | 
			
		||||
	return out_time;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
long Music_Emu::tell() const
 | 
			
		||||
{
 | 
			
		||||
	blargg_long rate = sample_rate() * stereo;
 | 
			
		||||
| 
						 | 
				
			
			@ -185,14 +190,18 @@ long Music_Emu::tell() const
 | 
			
		|||
	return sec * 1000 + (out_time - sec * rate) * 1000 / rate;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
blargg_err_t Music_Emu::seek( long msec )
 | 
			
		||||
blargg_err_t Music_Emu::seek_samples( long time )
 | 
			
		||||
{
 | 
			
		||||
	blargg_long time = msec_to_samples( msec );
 | 
			
		||||
	if ( time < out_time )
 | 
			
		||||
		RETURN_ERR( start_track( current_track_ ) );
 | 
			
		||||
	return skip( time - out_time );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
blargg_err_t Music_Emu::seek( long msec )
 | 
			
		||||
{
 | 
			
		||||
	return seek_samples( msec_to_samples( msec ) );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
blargg_err_t Music_Emu::skip( long count )
 | 
			
		||||
{
 | 
			
		||||
	require( current_track() >= 0 ); // start_track() must have been called already
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -41,9 +41,15 @@ public:
 | 
			
		|||
	// Number of milliseconds (1000 msec = 1 second) played since beginning of track
 | 
			
		||||
	long tell() const;
 | 
			
		||||
	
 | 
			
		||||
	// Number of samples generated since beginning of track
 | 
			
		||||
	long tell_samples() const;
 | 
			
		||||
 | 
			
		||||
	// Seek to new time in track. Seeking backwards or far forward can take a while.
 | 
			
		||||
	blargg_err_t seek( long msec );
 | 
			
		||||
	
 | 
			
		||||
	// Equivalent to restarting track then skipping n samples
 | 
			
		||||
	blargg_err_t seek_samples( long n );
 | 
			
		||||
	
 | 
			
		||||
	// Skip n samples
 | 
			
		||||
	blargg_err_t skip( long n );
 | 
			
		||||
	
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -134,6 +134,9 @@ blargg_err_t Nsfe_Info::load( Data_Reader& in, Nsf_Emu* nsf_emu )
 | 
			
		|||
		RETURN_ERR( in.read( block_header, sizeof block_header ) );
 | 
			
		||||
		blargg_long size = get_le32( block_header [0] );
 | 
			
		||||
		blargg_long tag  = get_le32( block_header [1] );
 | 
			
		||||
 | 
			
		||||
		if ( size <= 0 )
 | 
			
		||||
			return "Corrupt file";
 | 
			
		||||
		
 | 
			
		||||
		//debug_printf( "tag: %c%c%c%c\n", char(tag), char(tag>>8), char(tag>>16), char(tag>>24) );
 | 
			
		||||
		
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -433,9 +433,7 @@ void Snes_Spc::cpu_write( int data, int addr, rel_time_t time )
 | 
			
		|||
			#endif
 | 
			
		||||
			
 | 
			
		||||
			// Registers other than $F2 and $F4-$F7
 | 
			
		||||
			//if ( reg != 2 && reg != 4 && reg != 5 && reg != 6 && reg != 7 )
 | 
			
		||||
			// TODO: this is a bit on the fragile side
 | 
			
		||||
			if ( ((~0x2F00 << (bits_in_int - 16)) << reg) < 0 ) // 36%
 | 
			
		||||
			if ( reg != 2 && (reg < 4 || reg > 7) ) // 36%
 | 
			
		||||
				cpu_write_smp_reg( data, time, reg );
 | 
			
		||||
		}
 | 
			
		||||
		// High mem/address wrap-around
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -76,8 +76,8 @@ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */
 | 
			
		|||
// TODO: remove non-wrapping versions?
 | 
			
		||||
#define SPC_NO_SP_WRAPAROUND 0
 | 
			
		||||
 | 
			
		||||
#define SET_SP( v )     (sp = ram + 0x101 + (v))
 | 
			
		||||
#define GET_SP()        (sp - 0x101 - ram)
 | 
			
		||||
#define SET_SP( v )     (sp = ram + 0x101 + ((uint8_t) v))
 | 
			
		||||
#define GET_SP()        (uint8_t (sp - 0x101 - ram))
 | 
			
		||||
 | 
			
		||||
#if SPC_NO_SP_WRAPAROUND
 | 
			
		||||
#define PUSH16( v )     (sp -= 2, SET_LE16( sp, v ))
 | 
			
		||||
| 
						 | 
				
			
			@ -485,7 +485,7 @@ loop:
 | 
			
		|||
	
 | 
			
		||||
	case 0xAF: // MOV (X)+,A
 | 
			
		||||
		WRITE_DP( 0, x, a + no_read_before_write  );
 | 
			
		||||
		x++;
 | 
			
		||||
		x = (uint8_t) (x + 1);
 | 
			
		||||
		goto loop;
 | 
			
		||||
	
 | 
			
		||||
// 5. 8-BIT LOGIC OPERATION COMMANDS
 | 
			
		||||
| 
						 | 
				
			
			@ -808,7 +808,7 @@ loop:
 | 
			
		|||
		unsigned temp = y * a;
 | 
			
		||||
		a = (uint8_t) temp;
 | 
			
		||||
		nz = ((temp >> 1) | temp) & 0x7F;
 | 
			
		||||
		y = temp >> 8;
 | 
			
		||||
		y = (uint8_t) (temp >> 8);
 | 
			
		||||
		nz |= y;
 | 
			
		||||
		goto loop;
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -838,6 +838,7 @@ loop:
 | 
			
		|||
		
 | 
			
		||||
		nz = (uint8_t) a;
 | 
			
		||||
		a = (uint8_t) a;
 | 
			
		||||
		y = (uint8_t) y;
 | 
			
		||||
		
 | 
			
		||||
		goto loop;
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -1004,7 +1005,7 @@ loop:
 | 
			
		|||
	case 0x7F: // RET1
 | 
			
		||||
		temp = *sp;
 | 
			
		||||
		SET_PC( GET_LE16( sp + 1 ) );
 | 
			
		||||
		sp += 3;
 | 
			
		||||
		SET_SP( GET_SP() + 3 );
 | 
			
		||||
		goto set_psw;
 | 
			
		||||
	case 0x8E: // POP PSW
 | 
			
		||||
		POP( temp );
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,6 +18,19 @@ all other #include lines. */
 | 
			
		|||
#undef require
 | 
			
		||||
#define require( expr ) assert( expr )
 | 
			
		||||
 | 
			
		||||
// Use to provide hints to compiler for optimized code layout in situations where we
 | 
			
		||||
// can almost always expect a conditional to go one way or the other.  Should only be
 | 
			
		||||
// used in situations where an unexpected branch is truly exceptional though!
 | 
			
		||||
#undef likely
 | 
			
		||||
#undef unlikely
 | 
			
		||||
#ifdef __GNUC__
 | 
			
		||||
    #define likely( x ) __builtin_expect(x, 1)
 | 
			
		||||
    #define unlikely( x ) __builtin_expect(x, 0)
 | 
			
		||||
#else
 | 
			
		||||
    #define likely( x ) (x)
 | 
			
		||||
    #define unlikely( x ) (x)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// Like printf() except output goes to debug log file. Might be defined to do
 | 
			
		||||
// nothing (not even evaluate its arguments).
 | 
			
		||||
// void debug_printf( const char* format, ... );
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -337,7 +337,9 @@ BLARGG_EXPORT gme_err_t gme_play           ( Music_Emu* me, int n, short* p )
 | 
			
		|||
BLARGG_EXPORT void      gme_set_fade       ( Music_Emu* me, int start_msec )      { me->set_fade( start_msec ); }
 | 
			
		||||
BLARGG_EXPORT int       gme_track_ended    ( Music_Emu const* me )                { return me->track_ended(); }
 | 
			
		||||
BLARGG_EXPORT int       gme_tell           ( Music_Emu const* me )                { return me->tell(); }
 | 
			
		||||
BLARGG_EXPORT int       gme_tell_samples   ( Music_Emu const* me )                { return me->tell_samples(); }
 | 
			
		||||
BLARGG_EXPORT gme_err_t gme_seek           ( Music_Emu* me, int msec )            { return me->seek( msec ); }
 | 
			
		||||
BLARGG_EXPORT gme_err_t gme_seek_samples   ( Music_Emu* me, int n )               { return me->seek_samples( n ); }
 | 
			
		||||
BLARGG_EXPORT int       gme_voice_count    ( Music_Emu const* me )                { return me->voice_count(); }
 | 
			
		||||
BLARGG_EXPORT void      gme_ignore_silence ( Music_Emu* me, int disable )         { me->ignore_silence( disable != 0 ); }
 | 
			
		||||
BLARGG_EXPORT void      gme_set_tempo      ( Music_Emu* me, double t )            { me->set_tempo( t ); }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,6 @@
 | 
			
		|||
/* Game music emulator library C interface (also usable from C++) */
 | 
			
		||||
 | 
			
		||||
/* Game_Music_Emu 0.6.0 */
 | 
			
		||||
/* Game_Music_Emu 0.6.1 */
 | 
			
		||||
#ifndef GME_H
 | 
			
		||||
#define GME_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -8,7 +8,7 @@
 | 
			
		|||
	extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define GME_VERSION 0x000600 /* 1 byte major, 1 byte minor, 1 byte patch-level */
 | 
			
		||||
#define GME_VERSION 0x000601 /* 1 byte major, 1 byte minor, 1 byte patch-level */
 | 
			
		||||
 | 
			
		||||
/* Error string returned by library functions, or NULL if no error (success) */
 | 
			
		||||
typedef const char* gme_err_t;
 | 
			
		||||
| 
						 | 
				
			
			@ -47,9 +47,15 @@ int gme_track_ended( Music_Emu const* );
 | 
			
		|||
/* Number of milliseconds (1000 = one second) played since beginning of track */
 | 
			
		||||
int gme_tell( Music_Emu const* );
 | 
			
		||||
 | 
			
		||||
/* Number of samples generated since beginning of track */
 | 
			
		||||
int gme_tell_samples( Music_Emu const* );
 | 
			
		||||
 | 
			
		||||
/* Seek to new time in track. Seeking backwards or far forward can take a while. */
 | 
			
		||||
gme_err_t gme_seek( Music_Emu*, int msec );
 | 
			
		||||
 | 
			
		||||
/* Equivalent to restarting track then skipping n samples */
 | 
			
		||||
gme_err_t gme_seek_samples( Music_Emu*, int n );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/******** Informational ********/
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,7 +3,7 @@
 | 
			
		|||
# later are used by pkg-config.
 | 
			
		||||
prefix=@CMAKE_INSTALL_PREFIX@
 | 
			
		||||
exec_prefix=${prefix}
 | 
			
		||||
lib_suffix=
 | 
			
		||||
lib_suffix=@LIB_SUFFIX@
 | 
			
		||||
libdir=${exec_prefix}/lib${lib_suffix}
 | 
			
		||||
includedir=${prefix}/include
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -13,3 +13,4 @@ URL: http://code.google.com/p/game-music-emu/
 | 
			
		|||
Version: @GME_VERSION@
 | 
			
		||||
Cflags: -I${includedir}
 | 
			
		||||
Libs: -L${libdir} -lgme
 | 
			
		||||
Libs.private: -lstdc++
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,6 @@
 | 
			
		|||
/* Game music emulator library C interface (also usable from C++) */
 | 
			
		||||
 | 
			
		||||
/* Game_Music_Emu 0.6.0 */
 | 
			
		||||
/* Game_Music_Emu 0.6.1 */
 | 
			
		||||
#ifndef GME_H
 | 
			
		||||
#define GME_H
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -8,7 +8,7 @@
 | 
			
		|||
	extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define GME_VERSION 0x000600 /* 1 byte major, 1 byte minor, 1 byte patch-level */
 | 
			
		||||
#define GME_VERSION 0x000601 /* 1 byte major, 1 byte minor, 1 byte patch-level */
 | 
			
		||||
 | 
			
		||||
/* Error string returned by library functions, or NULL if no error (success) */
 | 
			
		||||
typedef const char* gme_err_t;
 | 
			
		||||
| 
						 | 
				
			
			@ -47,9 +47,15 @@ int gme_track_ended( Music_Emu const* );
 | 
			
		|||
/* Number of milliseconds (1000 = one second) played since beginning of track */
 | 
			
		||||
int gme_tell( Music_Emu const* );
 | 
			
		||||
 | 
			
		||||
/* Number of samples generated since beginning of track */
 | 
			
		||||
int gme_tell_samples( Music_Emu const* );
 | 
			
		||||
 | 
			
		||||
/* Seek to new time in track. Seeking backwards or far forward can take a while. */
 | 
			
		||||
gme_err_t gme_seek( Music_Emu*, int msec );
 | 
			
		||||
 | 
			
		||||
/* Equivalent to restarting track then skipping n samples */
 | 
			
		||||
gme_err_t gme_seek_samples( Music_Emu*, int n );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/******** Informational ********/
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,4 @@
 | 
			
		|||
Game_Music_Emu 0.6.0: Game Music Emulators
 | 
			
		||||
Game_Music_Emu 0.6.2: Game Music Emulators
 | 
			
		||||
------------------------------------------
 | 
			
		||||
Game_Music_Emu is a collection of video game music file emulators that
 | 
			
		||||
support the following formats and systems:
 | 
			
		||||
| 
						 | 
				
			
			@ -34,30 +34,45 @@ several architectures, Mac OS, MorphOS, Xbox, PlayStation Portable,
 | 
			
		|||
GP2X, and Nintendo DS.
 | 
			
		||||
 | 
			
		||||
Author : Shay Green <gblargg@gmail.com>
 | 
			
		||||
Website: http://www.slack.net/~ant/
 | 
			
		||||
Forum  : http://groups.google.com/group/blargg-sound-libs
 | 
			
		||||
Website: https://bitbucket.org/mpyne/game-music-emu/wiki/Home
 | 
			
		||||
License: GNU Lesser General Public License (LGPL)
 | 
			
		||||
 | 
			
		||||
Current Maintainer: Michael Pyne <mpyne@purinchu.net>
 | 
			
		||||
 | 
			
		||||
Getting Started
 | 
			
		||||
---------------
 | 
			
		||||
Build a program consisting of demo/basics.c, demo/Wave_Writer.cpp, and
 | 
			
		||||
all source files in gme/. If you have CMake 2.6 or later, execute
 | 
			
		||||
all source files in gme/.
 | 
			
		||||
 | 
			
		||||
	run cmake
 | 
			
		||||
	cd demo
 | 
			
		||||
	run make
 | 
			
		||||
Or, if you have CMake 2.6 or later, execute at a command prompt (from the
 | 
			
		||||
extracted source directory):
 | 
			
		||||
 | 
			
		||||
Be sure "test.nsf" is in the same directory as the program. Running it
 | 
			
		||||
    mkdir build
 | 
			
		||||
    cd build
 | 
			
		||||
    cmake ../         # <-- Pass any needed CMake flags here
 | 
			
		||||
    make              # To build the library
 | 
			
		||||
    cd demo
 | 
			
		||||
    make              # To build the demo itself
 | 
			
		||||
 | 
			
		||||
Be sure "test.nsf" is in the same directory as the demo program. Running it
 | 
			
		||||
should generate the recording "out.wav".
 | 
			
		||||
 | 
			
		||||
You can use "make install" to install the library. To choose where to install
 | 
			
		||||
the library to, use the CMake argument "-DCMAKE_INSTALL_PREFIX=/usr/local"
 | 
			
		||||
(and replace /usr/local with the base path you wish to use). Alternately, you
 | 
			
		||||
can specify the base path to install to when you run "make install" by passing
 | 
			
		||||
'DESTDIR=/usr/local' on the make install command line (again, replace
 | 
			
		||||
/usr/local as appropriate).
 | 
			
		||||
 | 
			
		||||
To build a static library instead of shared (the default), pass
 | 
			
		||||
-DBUILD_SHARED_LIBS=OFF to the cmake command when running cmake.
 | 
			
		||||
 | 
			
		||||
A slightly more extensive demo application is available in the player/
 | 
			
		||||
directory.  It requires SDL to build.
 | 
			
		||||
 | 
			
		||||
Read gme.txt for more information. Post to the discussion forum for
 | 
			
		||||
assistance.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Files
 | 
			
		||||
-----
 | 
			
		||||
gme.txt               General notes about the library
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							| 
						 | 
				
			
			@ -7,6 +7,10 @@
 | 
			
		|||
# and other things
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
ifdef GCC81
 | 
			
		||||
GCC80=1
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
ifdef GCC80
 | 
			
		||||
GCC72=1
 | 
			
		||||
endif
 | 
			
		||||
| 
						 | 
				
			
			@ -116,6 +120,7 @@ WFLAGS+=-Wfloat-equal
 | 
			
		|||
#WFLAGS+=-Wtraditional
 | 
			
		||||
ifdef VCHELP
 | 
			
		||||
 WFLAGS+=-Wdeclaration-after-statement
 | 
			
		||||
 WFLAGS+=-Wno-error=declaration-after-statement
 | 
			
		||||
endif
 | 
			
		||||
 WFLAGS+=-Wundef
 | 
			
		||||
ifndef GCC295
 | 
			
		||||
| 
						 | 
				
			
			@ -189,12 +194,6 @@ ifdef GCC46
 | 
			
		|||
WFLAGS+=-Wno-suggest-attribute=noreturn
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
ifndef MINGW
 | 
			
		||||
ifdef GCC45
 | 
			
		||||
WFLAGS+=-Wunsuffixed-float-constants
 | 
			
		||||
endif
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
ifdef NOLDWARNING
 | 
			
		||||
LDFLAGS+=-Wl,--as-needed
 | 
			
		||||
endif
 | 
			
		||||
| 
						 | 
				
			
			@ -208,6 +207,9 @@ WFLAGS+=$(OLDWFLAGS)
 | 
			
		|||
ifdef GCC43
 | 
			
		||||
 #WFLAGS+=-Wno-error=clobbered
 | 
			
		||||
endif
 | 
			
		||||
ifdef GCC44
 | 
			
		||||
 WFLAGS+=-Wno-error=array-bounds
 | 
			
		||||
endif
 | 
			
		||||
ifdef GCC46
 | 
			
		||||
 WFLAGS+=-Wno-error=suggest-attribute=noreturn
 | 
			
		||||
endif
 | 
			
		||||
| 
						 | 
				
			
			@ -228,6 +230,7 @@ ifdef GCC80
 | 
			
		|||
 WFLAGS+=-Wno-format-overflow
 | 
			
		||||
 WFLAGS+=-Wno-stringop-truncation
 | 
			
		||||
 WFLAGS+=-Wno-stringop-overflow
 | 
			
		||||
 WFLAGS+=-Wno-error=multistatement-macros
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2542,6 +2542,8 @@ static void CL_RemovePlayer(INT32 playernum, INT32 reason)
 | 
			
		|||
 | 
			
		||||
#ifdef HAVE_BLUA
 | 
			
		||||
	LUAh_PlayerQuit(&players[playernum], reason); // Lua hook for player quitting
 | 
			
		||||
#else
 | 
			
		||||
	(void)reason;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	// Reset player data
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -807,6 +807,8 @@ void D_RegisterClientCommands(void)
 | 
			
		|||
	//CV_RegisterVar(&cv_alwaysfreelook2);
 | 
			
		||||
	//CV_RegisterVar(&cv_chasefreelook);
 | 
			
		||||
	//CV_RegisterVar(&cv_chasefreelook2);
 | 
			
		||||
	CV_RegisterVar(&cv_showfocuslost);
 | 
			
		||||
	CV_RegisterVar(&cv_pauseifunfocused);
 | 
			
		||||
 | 
			
		||||
	// g_input.c
 | 
			
		||||
	CV_RegisterVar(&cv_turnaxis);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8254,6 +8254,7 @@ static const char *const POWERS_LIST[] = {
 | 
			
		|||
	"INGOOP" // In goop
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_BLUA
 | 
			
		||||
static const char *const KARTSTUFF_LIST[] = {
 | 
			
		||||
	"POSITION",
 | 
			
		||||
	"OLDPOSITION",
 | 
			
		||||
| 
						 | 
				
			
			@ -8337,6 +8338,7 @@ static const char *const KARTSTUFF_LIST[] = {
 | 
			
		|||
	"JAWZTARGETDELAY",
 | 
			
		||||
	"SPECTATEWAIT"
 | 
			
		||||
};
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
static const char *const HUDITEMS_LIST[] = {
 | 
			
		||||
	"LIVESNAME",
 | 
			
		||||
| 
						 | 
				
			
			@ -9042,20 +9044,6 @@ static powertype_t get_power(const char *word)
 | 
			
		|||
	return pw_invulnerability;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static kartstufftype_t get_kartstuff(const char *word)
 | 
			
		||||
{ // Returns the vlaue of k_ enumerations
 | 
			
		||||
	kartstufftype_t i;
 | 
			
		||||
	if (*word >= '0' && *word <= '9')
 | 
			
		||||
		return atoi(word);
 | 
			
		||||
	if (fastncmp("K_",word,2))
 | 
			
		||||
		word += 2; // take off the k_
 | 
			
		||||
	for (i = 0; i < NUMKARTSTUFF; i++)
 | 
			
		||||
		if (fastcmp(word, KARTSTUFF_LIST[i]))
 | 
			
		||||
			return i;
 | 
			
		||||
	deh_warning("Couldn't find power named 'k_%s'",word);
 | 
			
		||||
	return k_position;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/// \todo Make ANY of this completely over-the-top math craziness obey the order of operations.
 | 
			
		||||
static fixed_t op_mul(fixed_t a, fixed_t b) { return a*b; }
 | 
			
		||||
static fixed_t op_div(fixed_t a, fixed_t b) { return a/b; }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -437,6 +437,9 @@ consvar_t cv_chatbacktint = {"chatbacktint", "On", CV_SAVE, CV_OnOff, NULL, 0, N
 | 
			
		|||
static CV_PossibleValue_t consolechat_cons_t[] = {{0, "Window"}, {1, "Console"}, {2, "Window (Hidden)"}, {0, NULL}};
 | 
			
		||||
consvar_t cv_consolechat = {"chatmode", "Window", CV_SAVE, consolechat_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
 | 
			
		||||
 | 
			
		||||
// Pause game upon window losing focus
 | 
			
		||||
consvar_t cv_pauseifunfocused = {"pauseifunfocused", "Yes", CV_SAVE, CV_YesNo, NULL, 0, NULL, NULL, 0, 0, NULL};
 | 
			
		||||
 | 
			
		||||
// Display song credits
 | 
			
		||||
consvar_t cv_songcredits = {"songcredits", "On", CV_SAVE, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -56,6 +56,7 @@ extern INT16 rw_maximums[NUM_WEAPONS];
 | 
			
		|||
// used in game menu
 | 
			
		||||
extern consvar_t cv_chatwidth, cv_chatnotifications, cv_chatheight, cv_chattime, cv_consolechat, cv_chatbacktint, cv_chatspamprotection/*, cv_compactscoreboard*/;
 | 
			
		||||
extern consvar_t cv_songcredits;
 | 
			
		||||
extern consvar_t cv_pauseifunfocused;
 | 
			
		||||
//extern consvar_t cv_crosshair, cv_crosshair2, cv_crosshair3, cv_crosshair4;
 | 
			
		||||
extern consvar_t cv_invertmouse/*, cv_alwaysfreelook, cv_chasefreelook, cv_mousemove*/;
 | 
			
		||||
extern consvar_t cv_invertmouse2/*, cv_alwaysfreelook2, cv_chasefreelook2, cv_mousemove2*/;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -72,6 +72,7 @@
 | 
			
		|||
#include "../v_video.h"
 | 
			
		||||
#include "hw_clip.h"
 | 
			
		||||
#include "hw_glob.h"
 | 
			
		||||
#include "../r_main.h"
 | 
			
		||||
#include "../r_state.h"
 | 
			
		||||
#include "../tables.h"
 | 
			
		||||
#include "r_opengl/r_opengl.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -328,7 +329,7 @@ angle_t gld_FrustumAngle(void)
 | 
			
		|||
 | 
			
		||||
	// NEWCLIP TODO: SRB2CBTODO: make a global render_fov for this function
 | 
			
		||||
 | 
			
		||||
	float render_fov = FIXED_TO_FLOAT(cv_grfov.value);
 | 
			
		||||
	float render_fov = FIXED_TO_FLOAT(cv_fov.value);
 | 
			
		||||
	float render_fovratio = (float)BASEVIDWIDTH / (float)BASEVIDHEIGHT; // SRB2CBTODO: NEWCLIPTODO: Is this right?
 | 
			
		||||
	float render_multiplier = 64.0f / render_fovratio / RMUL;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -86,12 +86,10 @@ static UINT32 atohex(const char *s);
 | 
			
		|||
static void CV_filtermode_ONChange(void);
 | 
			
		||||
static void CV_anisotropic_ONChange(void);
 | 
			
		||||
static void CV_FogDensity_ONChange(void);
 | 
			
		||||
static void CV_grFov_OnChange(void);
 | 
			
		||||
// ==========================================================================
 | 
			
		||||
//                                          3D ENGINE COMMANDS & CONSOLE VARS
 | 
			
		||||
// ==========================================================================
 | 
			
		||||
 | 
			
		||||
static CV_PossibleValue_t grfov_cons_t[] = {{0, "MIN"}, {179*FRACUNIT, "MAX"}, {0, NULL}};
 | 
			
		||||
static CV_PossibleValue_t grfiltermode_cons_t[]= {{HWD_SET_TEXTUREFILTER_POINTSAMPLED, "Nearest"},
 | 
			
		||||
	{HWD_SET_TEXTUREFILTER_BILINEAR, "Bilinear"}, {HWD_SET_TEXTUREFILTER_TRILINEAR, "Trilinear"},
 | 
			
		||||
	{HWD_SET_TEXTUREFILTER_MIXED1, "Linear_Nearest"},
 | 
			
		||||
| 
						 | 
				
			
			@ -112,7 +110,6 @@ static consvar_t cv_grbeta = {"gr_beta", "0", 0, CV_Unsigned, NULL, 0, NULL, NUL
 | 
			
		|||
 | 
			
		||||
static float HWRWipeCounter = 1.0f;
 | 
			
		||||
consvar_t cv_grrounddown = {"gr_rounddown", "Off", 0, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
 | 
			
		||||
consvar_t cv_grfov = {"gr_fov", "90", CV_FLOAT|CV_CALL, grfov_cons_t, CV_grFov_OnChange, 0, NULL, NULL, 0, 0, NULL};
 | 
			
		||||
consvar_t cv_grfogdensity = {"gr_fogdensity", "150", CV_CALL|CV_NOINIT, CV_Unsigned,
 | 
			
		||||
                             CV_FogDensity_ONChange, 0, NULL, NULL, 0, 0, NULL};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -5907,7 +5904,7 @@ void HWR_SetViewSize(void)
 | 
			
		|||
// ==========================================================================
 | 
			
		||||
void HWR_RenderSkyboxView(INT32 viewnumber, player_t *player)
 | 
			
		||||
{
 | 
			
		||||
	const float fpov = FIXED_TO_FLOAT(cv_grfov.value+player->fovadd);
 | 
			
		||||
	const float fpov = FIXED_TO_FLOAT(cv_fov.value+player->fovadd);
 | 
			
		||||
	postimg_t *type;
 | 
			
		||||
	UINT8 ssplayer = 0;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -6073,7 +6070,7 @@ if (0)
 | 
			
		|||
		viewangle = localaiming4;
 | 
			
		||||
 | 
			
		||||
	// Handle stuff when you are looking farther up or down.
 | 
			
		||||
	if ((aimingangle || cv_grfov.value+player->fovadd > 90*FRACUNIT))
 | 
			
		||||
	if ((aimingangle || cv_fov.value+player->fovadd > 90*FRACUNIT))
 | 
			
		||||
	{
 | 
			
		||||
		dup_viewangle += ANGLE_90;
 | 
			
		||||
		HWR_ClearClipSegs();
 | 
			
		||||
| 
						 | 
				
			
			@ -6151,7 +6148,7 @@ if (0)
 | 
			
		|||
// ==========================================================================
 | 
			
		||||
void HWR_RenderPlayerView(INT32 viewnumber, player_t *player)
 | 
			
		||||
{
 | 
			
		||||
	const float fpov = FIXED_TO_FLOAT(cv_grfov.value+player->fovadd);
 | 
			
		||||
	const float fpov = FIXED_TO_FLOAT(cv_fov.value+player->fovadd);
 | 
			
		||||
	postimg_t *type;
 | 
			
		||||
	UINT8 ssplayer = 0;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -6332,7 +6329,7 @@ if (0)
 | 
			
		|||
		viewangle = localaiming4;
 | 
			
		||||
 | 
			
		||||
	// Handle stuff when you are looking farther up or down.
 | 
			
		||||
	if ((aimingangle || cv_grfov.value+player->fovadd > 90*FRACUNIT))
 | 
			
		||||
	if ((aimingangle || cv_fov.value+player->fovadd > 90*FRACUNIT))
 | 
			
		||||
	{
 | 
			
		||||
		dup_viewangle += ANGLE_90;
 | 
			
		||||
		HWR_ClearClipSegs();
 | 
			
		||||
| 
						 | 
				
			
			@ -6455,11 +6452,6 @@ static void HWR_FoggingOn(void)
 | 
			
		|||
// ==========================================================================
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static void CV_grFov_OnChange(void)
 | 
			
		||||
{
 | 
			
		||||
	if ((netgame || multiplayer) && !cv_debug && cv_grfov.value != 90*FRACUNIT)
 | 
			
		||||
		CV_Set(&cv_grfov, cv_grfov.defaultvalue);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void Command_GrStats_f(void)
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -6482,7 +6474,6 @@ static void Command_GrStats_f(void)
 | 
			
		|||
void HWR_AddCommands(void)
 | 
			
		||||
{
 | 
			
		||||
	CV_RegisterVar(&cv_grrounddown);
 | 
			
		||||
	CV_RegisterVar(&cv_grfov);
 | 
			
		||||
	CV_RegisterVar(&cv_grfogdensity);
 | 
			
		||||
	CV_RegisterVar(&cv_grfiltermode);
 | 
			
		||||
	CV_RegisterVar(&cv_granisotropicmode);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -80,7 +80,6 @@ extern consvar_t cv_grstaticlighting;
 | 
			
		|||
extern consvar_t cv_grcoronas;
 | 
			
		||||
extern consvar_t cv_grcoronasize;
 | 
			
		||||
#endif
 | 
			
		||||
extern consvar_t cv_grfov;
 | 
			
		||||
extern consvar_t cv_grmd2;
 | 
			
		||||
extern consvar_t cv_grfog;
 | 
			
		||||
extern consvar_t cv_grfogcolor;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2056,10 +2056,11 @@ EXPORT void HWRAPI(DrawMD2) (INT32 *gl_cmd_buffer, md2_frame_t *frame, FTransfor
 | 
			
		|||
EXPORT void HWRAPI(SetTransform) (FTransform *stransform)
 | 
			
		||||
{
 | 
			
		||||
	static boolean special_splitscreen;
 | 
			
		||||
	GLdouble used_fov;
 | 
			
		||||
	pglLoadIdentity();
 | 
			
		||||
	if (stransform)
 | 
			
		||||
	{
 | 
			
		||||
		boolean fovx90;
 | 
			
		||||
		used_fov = stransform->fovxangle;
 | 
			
		||||
		// keep a trace of the transformation for md2
 | 
			
		||||
		memcpy(&md2_transform, stransform, sizeof (md2_transform));
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -2074,36 +2075,29 @@ EXPORT void HWRAPI(SetTransform) (FTransform *stransform)
 | 
			
		|||
		pglRotatef(stransform->angley+270.0f, 0.0f, 1.0f, 0.0f);
 | 
			
		||||
		pglTranslatef(-stransform->x, -stransform->z, -stransform->y);
 | 
			
		||||
 | 
			
		||||
		pglMatrixMode(GL_PROJECTION);
 | 
			
		||||
		pglLoadIdentity();
 | 
			
		||||
		fovx90 = stransform->fovxangle > 0.0f && fabsf(stransform->fovxangle - 90.0f) < 0.5f;
 | 
			
		||||
		special_splitscreen = (stransform->splitscreen == 1 && fovx90);
 | 
			
		||||
		if (special_splitscreen)
 | 
			
		||||
			GLPerspective(53.13l, 2*ASPECT_RATIO);  // 53.13 = 2*atan(0.5)
 | 
			
		||||
		else
 | 
			
		||||
			GLPerspective(stransform->fovxangle, ASPECT_RATIO);
 | 
			
		||||
#ifndef MINI_GL_COMPATIBILITY
 | 
			
		||||
		pglGetDoublev(GL_PROJECTION_MATRIX, projMatrix); // added for new coronas' code (without depth buffer)
 | 
			
		||||
#endif
 | 
			
		||||
		pglMatrixMode(GL_MODELVIEW);
 | 
			
		||||
		special_splitscreen = (stransform->splitscreen == 1);
 | 
			
		||||
	}
 | 
			
		||||
	else
 | 
			
		||||
	{
 | 
			
		||||
		//Hurdler: is "fov" correct?
 | 
			
		||||
		used_fov = fov;
 | 
			
		||||
		pglScalef(1.0f, 1.0f, -1.0f);
 | 
			
		||||
 | 
			
		||||
		pglMatrixMode(GL_PROJECTION);
 | 
			
		||||
		pglLoadIdentity();
 | 
			
		||||
		if (special_splitscreen)
 | 
			
		||||
			GLPerspective(53.13l, 2*ASPECT_RATIO);  // 53.13 = 2*atan(0.5)
 | 
			
		||||
		else
 | 
			
		||||
			//Hurdler: is "fov" correct?
 | 
			
		||||
			GLPerspective(fov, ASPECT_RATIO);
 | 
			
		||||
#ifndef MINI_GL_COMPATIBILITY
 | 
			
		||||
		pglGetDoublev(GL_PROJECTION_MATRIX, projMatrix); // added for new coronas' code (without depth buffer)
 | 
			
		||||
#endif
 | 
			
		||||
		pglMatrixMode(GL_MODELVIEW);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	pglMatrixMode(GL_PROJECTION);
 | 
			
		||||
	pglLoadIdentity();
 | 
			
		||||
	if (special_splitscreen)
 | 
			
		||||
	{
 | 
			
		||||
		used_fov = atan(tan(used_fov*M_PIl/360)*0.8)*360/M_PIl;
 | 
			
		||||
		GLPerspective(used_fov, 2*ASPECT_RATIO);
 | 
			
		||||
	}
 | 
			
		||||
	else
 | 
			
		||||
		GLPerspective(used_fov, ASPECT_RATIO);
 | 
			
		||||
#ifndef MINI_GL_COMPATIBILITY
 | 
			
		||||
	pglGetDoublev(GL_PROJECTION_MATRIX, projMatrix); // added for new coronas' code (without depth buffer)
 | 
			
		||||
#endif
 | 
			
		||||
	pglMatrixMode(GL_MODELVIEW);
 | 
			
		||||
 | 
			
		||||
#ifndef MINI_GL_COMPATIBILITY
 | 
			
		||||
	pglGetDoublev(GL_MODELVIEW_MATRIX, modelMatrix); // added for new coronas' code (without depth buffer)
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										11
									
								
								src/m_menu.c
									
										
									
									
									
								
							
							
						
						
									
										11
									
								
								src/m_menu.c
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -399,6 +399,8 @@ static void Dummystaff_OnChange(void);
 | 
			
		|||
// CONSOLE VARIABLES AND THEIR POSSIBLE VALUES GO HERE.
 | 
			
		||||
// ==========================================================================
 | 
			
		||||
 | 
			
		||||
consvar_t cv_showfocuslost = {"showfocuslost", "Yes", CV_SAVE, CV_YesNo, NULL, 0, NULL, NULL, 0, 0, NULL };
 | 
			
		||||
 | 
			
		||||
static CV_PossibleValue_t map_cons_t[] = {
 | 
			
		||||
	{0,"MIN"},
 | 
			
		||||
	{NUMMAPS, "MAX"},
 | 
			
		||||
| 
						 | 
				
			
			@ -1249,7 +1251,7 @@ static menuitem_t OP_OpenGLOptionsMenu[] =
 | 
			
		|||
	{IT_SUBMENU|IT_STRING,      NULL, "Fog...",          &OP_OpenGLFogDef,      10},
 | 
			
		||||
	{IT_SUBMENU|IT_STRING,      NULL, "Gamma...",        &OP_OpenGLColorDef,    20},
 | 
			
		||||
 | 
			
		||||
	{IT_STRING|IT_CVAR,         NULL, "Field of View",   &cv_grfov,             35},
 | 
			
		||||
	{IT_STRING|IT_CVAR,         NULL, "Field of View",   &cv_fov,               35},
 | 
			
		||||
	{IT_STRING|IT_CVAR,         NULL, "Quality",         &cv_scr_depth,         45},
 | 
			
		||||
	{IT_STRING|IT_CVAR,         NULL, "Texture Filter",  &cv_grfiltermode,      55},
 | 
			
		||||
	{IT_STRING|IT_CVAR,         NULL, "Anisotropic",     &cv_granisotropicmode, 65},
 | 
			
		||||
| 
						 | 
				
			
			@ -1316,6 +1318,9 @@ static menuitem_t OP_SoundOptionsMenu[] =
 | 
			
		|||
	{IT_STRING|IT_CVAR,			NULL, "Powerup Warning",		&cv_kartinvinsfx,		 95},
 | 
			
		||||
 | 
			
		||||
	{IT_KEYHANDLER|IT_STRING,	NULL, "Sound Test",				M_HandleSoundTest,		110},
 | 
			
		||||
 | 
			
		||||
	{IT_STRING|IT_CVAR,        NULL, "Play Music While Unfocused", &cv_playmusicifunfocused, 125},
 | 
			
		||||
	{IT_STRING|IT_CVAR,        NULL, "Play SFX While Unfocused", &cv_playsoundifunfocused, 135},
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/*static menuitem_t OP_DataOptionsMenu[] =
 | 
			
		||||
| 
						 | 
				
			
			@ -1402,6 +1407,8 @@ static menuitem_t OP_HUDOptionsMenu[] =
 | 
			
		|||
	// highlight info - (GOOD HIGHLIGHT, WARNING HIGHLIGHT) - 105 (see M_DrawHUDOptions)
 | 
			
		||||
 | 
			
		||||
	{IT_STRING | IT_CVAR, NULL,	"Console Text Size",		&cv_constextsize,		120},
 | 
			
		||||
 | 
			
		||||
	{IT_STRING | IT_CVAR, NULL,   "Show \"FOCUS LOST\"",  &cv_showfocuslost,   135},
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static menuitem_t OP_ChatOptionsMenu[] =
 | 
			
		||||
| 
						 | 
				
			
			@ -2880,7 +2887,7 @@ void M_Drawer(void)
 | 
			
		|||
	}
 | 
			
		||||
 | 
			
		||||
	// focus lost notification goes on top of everything, even the former everything
 | 
			
		||||
	if (window_notinfocus)
 | 
			
		||||
	if (window_notinfocus && cv_showfocuslost.value)
 | 
			
		||||
	{
 | 
			
		||||
		M_DrawTextBox((BASEVIDWIDTH/2) - (60), (BASEVIDHEIGHT/2) - (16), 13, 2);
 | 
			
		||||
		if (gamestate == GS_LEVEL && (P_AutoPause() || paused))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -211,6 +211,7 @@ typedef struct
 | 
			
		|||
 | 
			
		||||
extern description_t description[32];
 | 
			
		||||
 | 
			
		||||
extern consvar_t cv_showfocuslost;
 | 
			
		||||
extern consvar_t cv_newgametype, cv_nextmap, cv_chooseskin, cv_serversort;
 | 
			
		||||
extern CV_PossibleValue_t gametype_cons_t[];
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										149
									
								
								src/p_saveg.c
									
										
									
									
									
								
							
							
						
						
									
										149
									
								
								src/p_saveg.c
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -677,84 +677,87 @@ static void P_NetArchiveWorld(void)
 | 
			
		|||
 | 
			
		||||
	mld = W_CacheLumpNum(lastloadedmaplumpnum+ML_LINEDEFS, PU_CACHE);
 | 
			
		||||
	msd = W_CacheLumpNum(lastloadedmaplumpnum+ML_SIDEDEFS, PU_CACHE);
 | 
			
		||||
	// do lines
 | 
			
		||||
	for (i = 0; i < numlines; i++, mld++, li++)
 | 
			
		||||
	if (mld && msd)
 | 
			
		||||
	{
 | 
			
		||||
		diff = diff2 = 0;
 | 
			
		||||
 | 
			
		||||
		if (li->special != SHORT(mld->special))
 | 
			
		||||
			diff |= LD_SPECIAL;
 | 
			
		||||
 | 
			
		||||
		if (SHORT(mld->special) == 321 || SHORT(mld->special) == 322) // only reason li->callcount would be non-zero is if either of these are involved
 | 
			
		||||
			diff |= LD_CLLCOUNT;
 | 
			
		||||
 | 
			
		||||
		if (li->sidenum[0] != 0xffff)
 | 
			
		||||
		// do lines
 | 
			
		||||
		for (i = 0; i < numlines; i++, mld++, li++)
 | 
			
		||||
		{
 | 
			
		||||
			si = &sides[li->sidenum[0]];
 | 
			
		||||
			if (si->textureoffset != SHORT(msd[li->sidenum[0]].textureoffset)<<FRACBITS)
 | 
			
		||||
				diff |= LD_S1TEXOFF;
 | 
			
		||||
			//SoM: 4/1/2000: Some textures are colormaps. Don't worry about invalid textures.
 | 
			
		||||
			if (R_CheckTextureNumForName(msd[li->sidenum[0]].toptexture) != -1
 | 
			
		||||
				&& si->toptexture != R_TextureNumForName(msd[li->sidenum[0]].toptexture))
 | 
			
		||||
				diff |= LD_S1TOPTEX;
 | 
			
		||||
			if (R_CheckTextureNumForName(msd[li->sidenum[0]].bottomtexture) != -1
 | 
			
		||||
				&& si->bottomtexture != R_TextureNumForName(msd[li->sidenum[0]].bottomtexture))
 | 
			
		||||
				diff |= LD_S1BOTTEX;
 | 
			
		||||
			if (R_CheckTextureNumForName(msd[li->sidenum[0]].midtexture) != -1
 | 
			
		||||
				&& si->midtexture != R_TextureNumForName(msd[li->sidenum[0]].midtexture))
 | 
			
		||||
				diff |= LD_S1MIDTEX;
 | 
			
		||||
		}
 | 
			
		||||
		if (li->sidenum[1] != 0xffff)
 | 
			
		||||
		{
 | 
			
		||||
			si = &sides[li->sidenum[1]];
 | 
			
		||||
			if (si->textureoffset != SHORT(msd[li->sidenum[1]].textureoffset)<<FRACBITS)
 | 
			
		||||
				diff2 |= LD_S2TEXOFF;
 | 
			
		||||
			if (R_CheckTextureNumForName(msd[li->sidenum[1]].toptexture) != -1
 | 
			
		||||
				&& si->toptexture != R_TextureNumForName(msd[li->sidenum[1]].toptexture))
 | 
			
		||||
				diff2 |= LD_S2TOPTEX;
 | 
			
		||||
			if (R_CheckTextureNumForName(msd[li->sidenum[1]].bottomtexture) != -1
 | 
			
		||||
				&& si->bottomtexture != R_TextureNumForName(msd[li->sidenum[1]].bottomtexture))
 | 
			
		||||
				diff2 |= LD_S2BOTTEX;
 | 
			
		||||
			if (R_CheckTextureNumForName(msd[li->sidenum[1]].midtexture) != -1
 | 
			
		||||
				&& si->midtexture != R_TextureNumForName(msd[li->sidenum[1]].midtexture))
 | 
			
		||||
				diff2 |= LD_S2MIDTEX;
 | 
			
		||||
			if (diff2)
 | 
			
		||||
				diff |= LD_DIFF2;
 | 
			
		||||
		}
 | 
			
		||||
			diff = diff2 = 0;
 | 
			
		||||
 | 
			
		||||
		if (diff)
 | 
			
		||||
		{
 | 
			
		||||
			statline++;
 | 
			
		||||
			WRITEINT16(put, i);
 | 
			
		||||
			WRITEUINT8(put, diff);
 | 
			
		||||
			if (diff & LD_DIFF2)
 | 
			
		||||
				WRITEUINT8(put, diff2);
 | 
			
		||||
			if (diff & LD_FLAG)
 | 
			
		||||
				WRITEINT16(put, li->flags);
 | 
			
		||||
			if (diff & LD_SPECIAL)
 | 
			
		||||
				WRITEINT16(put, li->special);
 | 
			
		||||
			if (diff & LD_CLLCOUNT)
 | 
			
		||||
				WRITEINT16(put, li->callcount);
 | 
			
		||||
			if (li->special != SHORT(mld->special))
 | 
			
		||||
				diff |= LD_SPECIAL;
 | 
			
		||||
 | 
			
		||||
			si = &sides[li->sidenum[0]];
 | 
			
		||||
			if (diff & LD_S1TEXOFF)
 | 
			
		||||
				WRITEFIXED(put, si->textureoffset);
 | 
			
		||||
			if (diff & LD_S1TOPTEX)
 | 
			
		||||
				WRITEINT32(put, si->toptexture);
 | 
			
		||||
			if (diff & LD_S1BOTTEX)
 | 
			
		||||
				WRITEINT32(put, si->bottomtexture);
 | 
			
		||||
			if (diff & LD_S1MIDTEX)
 | 
			
		||||
				WRITEINT32(put, si->midtexture);
 | 
			
		||||
			if (SHORT(mld->special) == 321 || SHORT(mld->special) == 322) // only reason li->callcount would be non-zero is if either of these are involved
 | 
			
		||||
				diff |= LD_CLLCOUNT;
 | 
			
		||||
 | 
			
		||||
			si = &sides[li->sidenum[1]];
 | 
			
		||||
			if (diff2 & LD_S2TEXOFF)
 | 
			
		||||
				WRITEFIXED(put, si->textureoffset);
 | 
			
		||||
			if (diff2 & LD_S2TOPTEX)
 | 
			
		||||
				WRITEINT32(put, si->toptexture);
 | 
			
		||||
			if (diff2 & LD_S2BOTTEX)
 | 
			
		||||
				WRITEINT32(put, si->bottomtexture);
 | 
			
		||||
			if (diff2 & LD_S2MIDTEX)
 | 
			
		||||
				WRITEINT32(put, si->midtexture);
 | 
			
		||||
			if (li->sidenum[0] != 0xffff)
 | 
			
		||||
			{
 | 
			
		||||
				si = &sides[li->sidenum[0]];
 | 
			
		||||
				if (si->textureoffset != SHORT(msd[li->sidenum[0]].textureoffset)<<FRACBITS)
 | 
			
		||||
					diff |= LD_S1TEXOFF;
 | 
			
		||||
				//SoM: 4/1/2000: Some textures are colormaps. Don't worry about invalid textures.
 | 
			
		||||
				if (R_CheckTextureNumForName(msd[li->sidenum[0]].toptexture) != -1
 | 
			
		||||
						&& si->toptexture != R_TextureNumForName(msd[li->sidenum[0]].toptexture))
 | 
			
		||||
					diff |= LD_S1TOPTEX;
 | 
			
		||||
				if (R_CheckTextureNumForName(msd[li->sidenum[0]].bottomtexture) != -1
 | 
			
		||||
						&& si->bottomtexture != R_TextureNumForName(msd[li->sidenum[0]].bottomtexture))
 | 
			
		||||
					diff |= LD_S1BOTTEX;
 | 
			
		||||
				if (R_CheckTextureNumForName(msd[li->sidenum[0]].midtexture) != -1
 | 
			
		||||
						&& si->midtexture != R_TextureNumForName(msd[li->sidenum[0]].midtexture))
 | 
			
		||||
					diff |= LD_S1MIDTEX;
 | 
			
		||||
			}
 | 
			
		||||
			if (li->sidenum[1] != 0xffff)
 | 
			
		||||
			{
 | 
			
		||||
				si = &sides[li->sidenum[1]];
 | 
			
		||||
				if (si->textureoffset != SHORT(msd[li->sidenum[1]].textureoffset)<<FRACBITS)
 | 
			
		||||
					diff2 |= LD_S2TEXOFF;
 | 
			
		||||
				if (R_CheckTextureNumForName(msd[li->sidenum[1]].toptexture) != -1
 | 
			
		||||
						&& si->toptexture != R_TextureNumForName(msd[li->sidenum[1]].toptexture))
 | 
			
		||||
					diff2 |= LD_S2TOPTEX;
 | 
			
		||||
				if (R_CheckTextureNumForName(msd[li->sidenum[1]].bottomtexture) != -1
 | 
			
		||||
						&& si->bottomtexture != R_TextureNumForName(msd[li->sidenum[1]].bottomtexture))
 | 
			
		||||
					diff2 |= LD_S2BOTTEX;
 | 
			
		||||
				if (R_CheckTextureNumForName(msd[li->sidenum[1]].midtexture) != -1
 | 
			
		||||
						&& si->midtexture != R_TextureNumForName(msd[li->sidenum[1]].midtexture))
 | 
			
		||||
					diff2 |= LD_S2MIDTEX;
 | 
			
		||||
				if (diff2)
 | 
			
		||||
					diff |= LD_DIFF2;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			if (diff)
 | 
			
		||||
			{
 | 
			
		||||
				statline++;
 | 
			
		||||
				WRITEINT16(put, i);
 | 
			
		||||
				WRITEUINT8(put, diff);
 | 
			
		||||
				if (diff & LD_DIFF2)
 | 
			
		||||
					WRITEUINT8(put, diff2);
 | 
			
		||||
				if (diff & LD_FLAG)
 | 
			
		||||
					WRITEINT16(put, li->flags);
 | 
			
		||||
				if (diff & LD_SPECIAL)
 | 
			
		||||
					WRITEINT16(put, li->special);
 | 
			
		||||
				if (diff & LD_CLLCOUNT)
 | 
			
		||||
					WRITEINT16(put, li->callcount);
 | 
			
		||||
 | 
			
		||||
				si = &sides[li->sidenum[0]];
 | 
			
		||||
				if (diff & LD_S1TEXOFF)
 | 
			
		||||
					WRITEFIXED(put, si->textureoffset);
 | 
			
		||||
				if (diff & LD_S1TOPTEX)
 | 
			
		||||
					WRITEINT32(put, si->toptexture);
 | 
			
		||||
				if (diff & LD_S1BOTTEX)
 | 
			
		||||
					WRITEINT32(put, si->bottomtexture);
 | 
			
		||||
				if (diff & LD_S1MIDTEX)
 | 
			
		||||
					WRITEINT32(put, si->midtexture);
 | 
			
		||||
 | 
			
		||||
				si = &sides[li->sidenum[1]];
 | 
			
		||||
				if (diff2 & LD_S2TEXOFF)
 | 
			
		||||
					WRITEFIXED(put, si->textureoffset);
 | 
			
		||||
				if (diff2 & LD_S2TOPTEX)
 | 
			
		||||
					WRITEINT32(put, si->toptexture);
 | 
			
		||||
				if (diff2 & LD_S2BOTTEX)
 | 
			
		||||
					WRITEINT32(put, si->bottomtexture);
 | 
			
		||||
				if (diff2 & LD_S2MIDTEX)
 | 
			
		||||
					WRITEINT32(put, si->midtexture);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	WRITEUINT16(put, 0xffff);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3214,10 +3214,9 @@ boolean P_SetupLevel(boolean skipprecip)
 | 
			
		|||
		if (!cv_analog4.changed)
 | 
			
		||||
			CV_SetValue(&cv_analog4, 0);*/
 | 
			
		||||
 | 
			
		||||
#ifdef HWRENDER
 | 
			
		||||
		if (rendermode != render_soft && rendermode != render_none)
 | 
			
		||||
			CV_Set(&cv_grfov, cv_grfov.defaultvalue);
 | 
			
		||||
#endif
 | 
			
		||||
		// Shouldn't be necessary with render parity?
 | 
			
		||||
		/*if (rendermode != render_none)
 | 
			
		||||
			CV_Set(&cv_fov, cv_fov.defaultvalue);*/
 | 
			
		||||
 | 
			
		||||
		displayplayer = consoleplayer; // Start with your OWN view, please!
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										17
									
								
								src/p_user.c
									
										
									
									
									
								
							
							
						
						
									
										17
									
								
								src/p_user.c
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -172,7 +172,7 @@ boolean P_AutoPause(void)
 | 
			
		|||
	if (netgame || modeattacking)
 | 
			
		||||
		return false;
 | 
			
		||||
 | 
			
		||||
	return (menuactive || window_notinfocus);
 | 
			
		||||
	return (menuactive || ( window_notinfocus && cv_pauseifunfocused.value ));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
| 
						 | 
				
			
			@ -8295,9 +8295,6 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall
 | 
			
		|||
	if (mo->eflags & MFE_VERTICALFLIP)
 | 
			
		||||
		camheight += thiscam->height;
 | 
			
		||||
 | 
			
		||||
	if (splitscreen == 1)
 | 
			
		||||
		camspeed = (3*camspeed)/4;
 | 
			
		||||
 | 
			
		||||
	if (camspeed > FRACUNIT)
 | 
			
		||||
		camspeed = FRACUNIT;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -8351,13 +8348,6 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall
 | 
			
		|||
		height -= FixedMul(height, player->kartstuff[k_boostcam]);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// in splitscreen modes, mess with the camera distances to make it feel proportional to how it feels normally
 | 
			
		||||
	if (splitscreen == 1) // widescreen splits should get x1.5 distance
 | 
			
		||||
	{
 | 
			
		||||
		dist = FixedMul(dist, 3*FRACUNIT/2);
 | 
			
		||||
		height = FixedMul(height, 3*FRACUNIT/2);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	x = mo->x - FixedMul(FINECOSINE((angle>>ANGLETOFINESHIFT) & FINEMASK), dist);
 | 
			
		||||
	y = mo->y - FixedMul(FINESINE((angle>>ANGLETOFINESHIFT) & FINEMASK), dist);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -8623,10 +8613,7 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall
 | 
			
		|||
	{
 | 
			
		||||
		thiscam->momx = x - thiscam->x;
 | 
			
		||||
		thiscam->momy = y - thiscam->y;
 | 
			
		||||
		if (splitscreen == 1) // Wide-screen needs to follow faster, due to a smaller vertical:horizontal ratio of screen space
 | 
			
		||||
			thiscam->momz = FixedMul(z - thiscam->z, (3*camspeed)/4);
 | 
			
		||||
		else
 | 
			
		||||
			thiscam->momz = FixedMul(z - thiscam->z, camspeed/2);
 | 
			
		||||
		thiscam->momz = FixedMul(z - thiscam->z, camspeed/2);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	thiscam->pan = pan;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										30
									
								
								src/r_main.c
									
										
									
									
									
								
							
							
						
						
									
										30
									
								
								src/r_main.c
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -56,6 +56,7 @@ INT32 centerx, centery;
 | 
			
		|||
fixed_t centerxfrac, centeryfrac;
 | 
			
		||||
fixed_t projection;
 | 
			
		||||
fixed_t projectiony; // aspect ratio
 | 
			
		||||
fixed_t fovtan; // field of view
 | 
			
		||||
 | 
			
		||||
// just for profiling purposes
 | 
			
		||||
size_t framecount;
 | 
			
		||||
| 
						 | 
				
			
			@ -134,11 +135,14 @@ static CV_PossibleValue_t drawdist_precip_cons_t[] = {
 | 
			
		|||
	{1024, "1024"},	{1536, "1536"},	{2048, "2048"},
 | 
			
		||||
	{0, "None"},	{0, NULL}};
 | 
			
		||||
 | 
			
		||||
static CV_PossibleValue_t fov_cons_t[] = {{0, "MIN"}, {179*FRACUNIT, "MAX"}, {0, NULL}};
 | 
			
		||||
 | 
			
		||||
//static CV_PossibleValue_t precipdensity_cons_t[] = {{0, "None"}, {1, "Light"}, {2, "Moderate"}, {4, "Heavy"}, {6, "Thick"}, {8, "V.Thick"}, {0, NULL}};
 | 
			
		||||
static CV_PossibleValue_t translucenthud_cons_t[] = {{0, "MIN"}, {10, "MAX"}, {0, NULL}};
 | 
			
		||||
static CV_PossibleValue_t maxportals_cons_t[] = {{0, "MIN"}, {12, "MAX"}, {0, NULL}}; // lmao rendering 32 portals, you're a card
 | 
			
		||||
static CV_PossibleValue_t homremoval_cons_t[] = {{0, "No"}, {1, "Yes"}, {2, "Flash"}, {0, NULL}};
 | 
			
		||||
 | 
			
		||||
static void Fov_OnChange(void);
 | 
			
		||||
static void ChaseCam_OnChange(void);
 | 
			
		||||
static void ChaseCam2_OnChange(void);
 | 
			
		||||
static void ChaseCam3_OnChange(void);
 | 
			
		||||
| 
						 | 
				
			
			@ -175,6 +179,7 @@ consvar_t cv_drawdist = {"drawdist", "Infinite", CV_SAVE, drawdist_cons_t, NULL,
 | 
			
		|||
//consvar_t cv_drawdist_nights = {"drawdist_nights", "2048", CV_SAVE, drawdist_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
 | 
			
		||||
consvar_t cv_drawdist_precip = {"drawdist_precip", "1024", CV_SAVE, drawdist_precip_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
 | 
			
		||||
//consvar_t cv_precipdensity = {"precipdensity", "Moderate", CV_SAVE, precipdensity_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
 | 
			
		||||
consvar_t cv_fov = {"fov", "90", CV_FLOAT|CV_CALL, fov_cons_t, Fov_OnChange, 0, NULL, NULL, 0, 0, NULL};
 | 
			
		||||
 | 
			
		||||
// Okay, whoever said homremoval causes a performance hit should be shot.
 | 
			
		||||
consvar_t cv_homremoval = {"homremoval", "Yes", CV_SAVE, homremoval_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
 | 
			
		||||
| 
						 | 
				
			
			@ -227,6 +232,14 @@ void SplitScreen_OnChange(void)
 | 
			
		|||
			}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
static void Fov_OnChange(void)
 | 
			
		||||
{
 | 
			
		||||
	// Shouldn't be needed with render parity?
 | 
			
		||||
	//if ((netgame || multiplayer) && !cv_debug && cv_fov.value != 90*FRACUNIT)
 | 
			
		||||
	//	CV_Set(&cv_fov, cv_fov.defaultvalue);
 | 
			
		||||
 | 
			
		||||
	R_SetViewSize();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void ChaseCam_OnChange(void)
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -517,7 +530,7 @@ static void R_InitTextureMapping(void)
 | 
			
		|||
	//
 | 
			
		||||
	// Calc focallength
 | 
			
		||||
	//  so FIELDOFVIEW angles covers SCREENWIDTH.
 | 
			
		||||
	focallength = FixedDiv(centerxfrac,
 | 
			
		||||
	focallength = FixedDiv(projection,
 | 
			
		||||
		FINETANGENT(FINEANGLES/4+/*cv_fov.value*/ FIELDOFVIEW/2));
 | 
			
		||||
 | 
			
		||||
#ifdef ESLOPE
 | 
			
		||||
| 
						 | 
				
			
			@ -632,6 +645,7 @@ void R_ExecuteSetViewSize(void)
 | 
			
		|||
	INT32 j;
 | 
			
		||||
	INT32 level;
 | 
			
		||||
	INT32 startmapl;
 | 
			
		||||
	angle_t fov;
 | 
			
		||||
 | 
			
		||||
	setsizeneeded = false;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -660,9 +674,12 @@ void R_ExecuteSetViewSize(void)
 | 
			
		|||
	centerxfrac = centerx<<FRACBITS;
 | 
			
		||||
	centeryfrac = centery<<FRACBITS;
 | 
			
		||||
 | 
			
		||||
	projection = centerxfrac;
 | 
			
		||||
	//projectiony = (((vid.height*centerx*BASEVIDWIDTH)/BASEVIDHEIGHT)/vid.width)<<FRACBITS;
 | 
			
		||||
	projectiony = centerxfrac;
 | 
			
		||||
	fov = FixedAngle(cv_fov.value/2) + ANGLE_90;
 | 
			
		||||
	fovtan = FINETANGENT(fov >> ANGLETOFINESHIFT);
 | 
			
		||||
	if (splitscreen == 1) // Splitscreen FOV should be adjusted to maintain expected vertical view
 | 
			
		||||
		fovtan = 17*fovtan/10;
 | 
			
		||||
 | 
			
		||||
	projection = projectiony = FixedDiv(centerxfrac, fovtan);
 | 
			
		||||
 | 
			
		||||
	R_InitViewBuffer(scaledviewwidth, viewheight);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -688,7 +705,7 @@ void R_ExecuteSetViewSize(void)
 | 
			
		|||
		for (i = 0; i < j; i++)
 | 
			
		||||
		{
 | 
			
		||||
			dy = ((i - viewheight*8)<<FRACBITS) + FRACUNIT/2;
 | 
			
		||||
			dy = abs(dy);
 | 
			
		||||
			dy = FixedMul(abs(dy), fovtan);
 | 
			
		||||
			yslopetab[i] = FixedDiv(centerx*FRACUNIT, dy);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -803,7 +820,7 @@ subsector_t *R_IsPointInSubsector(fixed_t x, fixed_t y)
 | 
			
		|||
static mobj_t *viewmobj;
 | 
			
		||||
 | 
			
		||||
// WARNING: a should be unsigned but to add with 2048, it isn't!
 | 
			
		||||
#define AIMINGTODY(a) ((FINETANGENT((2048+(((INT32)a)>>ANGLETOFINESHIFT)) & FINEMASK)*160)>>FRACBITS)
 | 
			
		||||
#define AIMINGTODY(a) FixedDiv((FINETANGENT((2048+(((INT32)a)>>ANGLETOFINESHIFT)) & FINEMASK)*160)>>FRACBITS, fovtan)
 | 
			
		||||
 | 
			
		||||
// recalc necessary stuff for mouseaiming
 | 
			
		||||
// slopes are already calculated for the full possible view (which is 4*viewheight).
 | 
			
		||||
| 
						 | 
				
			
			@ -1490,6 +1507,7 @@ void R_RegisterEngineStuff(void)
 | 
			
		|||
	CV_RegisterVar(&cv_drawdist);
 | 
			
		||||
	//CV_RegisterVar(&cv_drawdist_nights);
 | 
			
		||||
	CV_RegisterVar(&cv_drawdist_precip);
 | 
			
		||||
	CV_RegisterVar(&cv_fov);
 | 
			
		||||
 | 
			
		||||
	CV_RegisterVar(&cv_chasecam);
 | 
			
		||||
	CV_RegisterVar(&cv_chasecam2);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -79,6 +79,7 @@ extern consvar_t cv_flipcam, cv_flipcam2, cv_flipcam3, cv_flipcam4;
 | 
			
		|||
extern consvar_t cv_shadow, cv_shadowoffs;
 | 
			
		||||
extern consvar_t cv_translucency;
 | 
			
		||||
extern consvar_t /*cv_precipdensity,*/ cv_drawdist, /*cv_drawdist_nights,*/ cv_drawdist_precip;
 | 
			
		||||
extern consvar_t cv_fov;
 | 
			
		||||
extern consvar_t cv_skybox;
 | 
			
		||||
extern consvar_t cv_tailspickup;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -57,6 +57,9 @@ static void GameMIDIMusic_OnChange(void);
 | 
			
		|||
static void GameSounds_OnChange(void);
 | 
			
		||||
static void GameDigiMusic_OnChange(void);
 | 
			
		||||
 | 
			
		||||
static void PlayMusicIfUnfocused_OnChange(void);
 | 
			
		||||
static void PlaySoundIfUnfocused_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};
 | 
			
		||||
| 
						 | 
				
			
			@ -110,6 +113,9 @@ consvar_t cv_gamemidimusic = {"midimusic", "On", CV_SAVE|CV_CALL|CV_NOINIT, CV_O
 | 
			
		|||
#endif
 | 
			
		||||
consvar_t cv_gamesounds = {"sounds", "On", CV_SAVE|CV_CALL|CV_NOINIT, CV_OnOff, GameSounds_OnChange, 0, NULL, NULL, 0, 0, NULL};
 | 
			
		||||
 | 
			
		||||
consvar_t cv_playmusicifunfocused = {"playmusicifunfocused",  "No", CV_SAVE|CV_CALL|CV_NOINIT, CV_YesNo, PlayMusicIfUnfocused_OnChange, 0, NULL, NULL, 0, 0, NULL};
 | 
			
		||||
consvar_t cv_playsoundifunfocused = {"playsoundsifunfocused", "No", CV_SAVE|CV_CALL|CV_NOINIT, CV_YesNo, PlaySoundIfUnfocused_OnChange, 0, NULL, NULL, 0, 0, NULL};
 | 
			
		||||
 | 
			
		||||
#define S_MAX_VOLUME 127
 | 
			
		||||
 | 
			
		||||
// when to clip out sounds
 | 
			
		||||
| 
						 | 
				
			
			@ -270,6 +276,9 @@ void S_RegisterSoundStuff(void)
 | 
			
		|||
	CV_RegisterVar(&cv_gamemidimusic);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	CV_RegisterVar(&cv_playmusicifunfocused);
 | 
			
		||||
	CV_RegisterVar(&cv_playsoundifunfocused);
 | 
			
		||||
 | 
			
		||||
	COM_AddCommand("tunes", Command_Tunes_f);
 | 
			
		||||
	COM_AddCommand("restartaudio", Command_RestartAudio_f);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1897,6 +1906,10 @@ static boolean S_PlayMusic(boolean looping)
 | 
			
		|||
	}
 | 
			
		||||
 | 
			
		||||
	S_InitMusicVolume(); // switch between digi and sequence volume
 | 
			
		||||
 | 
			
		||||
	if (window_notinfocus && !cv_playmusicifunfocused.value)
 | 
			
		||||
		I_PauseSong();
 | 
			
		||||
 | 
			
		||||
	return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1978,6 +1991,24 @@ void S_ResumeAudio(void)
 | 
			
		|||
	I_ResumeCD();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void S_DisableSound(void)
 | 
			
		||||
{
 | 
			
		||||
	if (sound_started && !sound_disabled)
 | 
			
		||||
	{
 | 
			
		||||
		sound_disabled = true;
 | 
			
		||||
		S_StopSounds();
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void S_EnableSound(void)
 | 
			
		||||
{
 | 
			
		||||
	if (sound_started && sound_disabled)
 | 
			
		||||
	{
 | 
			
		||||
		sound_disabled = false;
 | 
			
		||||
		S_InitSfxChannels(cv_soundvolume.value);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void S_SetMusicVolume(INT32 digvolume, INT32 seqvolume)
 | 
			
		||||
{
 | 
			
		||||
	if (digvolume < 0)
 | 
			
		||||
| 
						 | 
				
			
			@ -2156,15 +2187,11 @@ void GameSounds_OnChange(void)
 | 
			
		|||
 | 
			
		||||
	if (sound_disabled)
 | 
			
		||||
	{
 | 
			
		||||
		sound_disabled = false;
 | 
			
		||||
		S_InitSfxChannels(cv_soundvolume.value);
 | 
			
		||||
		S_StartSound(NULL, sfx_strpst);
 | 
			
		||||
		if (!( cv_playsoundifunfocused.value && window_notinfocus ))
 | 
			
		||||
			S_EnableSound();
 | 
			
		||||
	}
 | 
			
		||||
	else
 | 
			
		||||
	{
 | 
			
		||||
		sound_disabled = true;
 | 
			
		||||
		S_StopSounds();
 | 
			
		||||
	}
 | 
			
		||||
		S_DisableSound();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void GameDigiMusic_OnChange(void)
 | 
			
		||||
| 
						 | 
				
			
			@ -2251,3 +2278,28 @@ void GameMIDIMusic_OnChange(void)
 | 
			
		|||
	}
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
static void PlayMusicIfUnfocused_OnChange(void)
 | 
			
		||||
{
 | 
			
		||||
	if (window_notinfocus)
 | 
			
		||||
	{
 | 
			
		||||
		if (cv_playmusicifunfocused.value)
 | 
			
		||||
			I_PauseSong();
 | 
			
		||||
		else
 | 
			
		||||
			I_ResumeSong();
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void PlaySoundIfUnfocused_OnChange(void)
 | 
			
		||||
{
 | 
			
		||||
	if (!cv_gamesounds.value)
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	if (window_notinfocus)
 | 
			
		||||
	{
 | 
			
		||||
		if (cv_playsoundifunfocused.value)
 | 
			
		||||
			S_DisableSound();
 | 
			
		||||
		else
 | 
			
		||||
			S_EnableSound();
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -33,6 +33,8 @@ extern consvar_t cv_gamedigimusic;
 | 
			
		|||
extern consvar_t cv_gamemidimusic;
 | 
			
		||||
#endif
 | 
			
		||||
extern consvar_t cv_gamesounds;
 | 
			
		||||
extern consvar_t cv_playmusicifunfocused;
 | 
			
		||||
extern consvar_t cv_playsoundifunfocused;
 | 
			
		||||
 | 
			
		||||
#ifdef SNDSERV
 | 
			
		||||
extern consvar_t sndserver_cmd, sndserver_arg;
 | 
			
		||||
| 
						 | 
				
			
			@ -169,6 +171,10 @@ void S_StopMusic(void);
 | 
			
		|||
void S_PauseAudio(void);
 | 
			
		||||
void S_ResumeAudio(void);
 | 
			
		||||
 | 
			
		||||
// Enable and disable sound effects
 | 
			
		||||
void S_EnableSound(void);
 | 
			
		||||
void S_DisableSound(void);
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Updates music & sounds
 | 
			
		||||
//
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2974,8 +2974,8 @@ static void I_ShutdownTimer(void)
 | 
			
		|||
//
 | 
			
		||||
tic_t I_GetTime (void)
 | 
			
		||||
{
 | 
			
		||||
	static Uint32 basetime = 0;
 | 
			
		||||
		   Uint32 ticks = SDL_GetTicks();
 | 
			
		||||
	static Uint64 basetime = 0;
 | 
			
		||||
		   Uint64 ticks = SDL_GetTicks();
 | 
			
		||||
 | 
			
		||||
	if (!basetime)
 | 
			
		||||
		basetime = ticks;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -616,7 +616,11 @@ static void Impl_HandleWindowEvent(SDL_WindowEvent evt)
 | 
			
		|||
		// Tell game we got focus back, resume music if necessary
 | 
			
		||||
		window_notinfocus = false;
 | 
			
		||||
		if (!paused)
 | 
			
		||||
		{
 | 
			
		||||
			I_ResumeSong(); //resume it
 | 
			
		||||
			if (cv_gamesounds.value)
 | 
			
		||||
				S_EnableSound();
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (!firsttimeonmouse)
 | 
			
		||||
		{
 | 
			
		||||
| 
						 | 
				
			
			@ -630,7 +634,10 @@ static void Impl_HandleWindowEvent(SDL_WindowEvent evt)
 | 
			
		|||
	{
 | 
			
		||||
		// Tell game we lost focus, pause music
 | 
			
		||||
		window_notinfocus = true;
 | 
			
		||||
		I_PauseSong();
 | 
			
		||||
		if (!cv_playmusicifunfocused.value)
 | 
			
		||||
			I_PauseSong();
 | 
			
		||||
		if (!cv_playsoundifunfocused.value)
 | 
			
		||||
			S_DisableSound();
 | 
			
		||||
 | 
			
		||||
		if (!disable_mouse)
 | 
			
		||||
		{
 | 
			
		||||
| 
						 | 
				
			
			@ -1327,6 +1334,7 @@ void I_UpdateNoBlit(void)
 | 
			
		|||
// from PrBoom's src/SDL/i_video.c
 | 
			
		||||
static inline boolean I_SkipFrame(void)
 | 
			
		||||
{
 | 
			
		||||
#if 0
 | 
			
		||||
	static boolean skip = false;
 | 
			
		||||
 | 
			
		||||
	if (rendermode != render_soft)
 | 
			
		||||
| 
						 | 
				
			
			@ -1345,6 +1353,8 @@ static inline boolean I_SkipFrame(void)
 | 
			
		|||
		default:
 | 
			
		||||
			return false;
 | 
			
		||||
	}
 | 
			
		||||
#endif
 | 
			
		||||
	return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										
											BIN
										
									
								
								src/sdl/srb2icon.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/sdl/srb2icon.png
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 3 KiB  | 
| 
						 | 
				
			
			@ -186,16 +186,16 @@ FILE *W_OpenWadFile(const char **filename, boolean useerrors)
 | 
			
		|||
static inline void W_LoadDehackedLumpsPK3(UINT16 wadnum)
 | 
			
		||||
{
 | 
			
		||||
	UINT16 posStart, posEnd;
 | 
			
		||||
#ifdef HAVE_BLUA
 | 
			
		||||
	posStart = W_CheckNumForFolderStartPK3("Lua/", wadnum, 0);
 | 
			
		||||
	if (posStart != INT16_MAX)
 | 
			
		||||
	{
 | 
			
		||||
		posEnd = W_CheckNumForFolderEndPK3("Lua/", wadnum, posStart);
 | 
			
		||||
		posStart++;
 | 
			
		||||
#ifdef HAVE_BLUA
 | 
			
		||||
		for (; posStart < posEnd; posStart++)
 | 
			
		||||
			LUA_LoadLump(wadnum, posStart);
 | 
			
		||||
#endif
 | 
			
		||||
	}
 | 
			
		||||
#endif
 | 
			
		||||
	posStart = W_CheckNumForFolderStartPK3("SOC/", wadnum, 0);
 | 
			
		||||
	if (posStart != INT16_MAX)
 | 
			
		||||
	{
 | 
			
		||||
| 
						 | 
				
			
			@ -795,11 +795,11 @@ UINT16 W_InitFile(const char *filename)
 | 
			
		|||
		CONS_Printf(M_GetText("Loading SOC from %s\n"), wadfile->filename);
 | 
			
		||||
		DEH_LoadDehackedLumpPwad(numwadfiles - 1, 0);
 | 
			
		||||
		break;
 | 
			
		||||
	case RET_LUA:
 | 
			
		||||
#ifdef HAVE_BLUA
 | 
			
		||||
	case RET_LUA:
 | 
			
		||||
		LUA_LoadLump(numwadfiles - 1, 0);
 | 
			
		||||
#endif
 | 
			
		||||
		break;
 | 
			
		||||
#endif
 | 
			
		||||
	default:
 | 
			
		||||
		break;
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue