Merge branch 'next' into minor-item-tweaks

This commit is contained in:
Sally Cochenour 2019-03-05 17:18:27 -05:00
commit ea40a1b153
40 changed files with 611 additions and 603 deletions

View file

@ -36,12 +36,15 @@ jobs:
- v1-SRB2-APT - v1-SRB2-APT
- run: - run:
name: Install SDK 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: - save_cache:
key: v1-SRB2-APT key: v1-SRB2-APT
paths: paths:
- /var/cache/apt/archives - /var/cache/apt/archives
- checkout - checkout
- run:
name: Compile without network support
command: make -C src LINUX=1 ERRORMODE=1 -k NONET=1
- run: - run:
name: Clean build name: Clean build
command: make -C src LINUX=1 clean command: make -C src LINUX=1 clean

Binary file not shown.

Binary file not shown.

View file

@ -4,7 +4,7 @@ project(libgme)
include (CheckCXXCompilerFlag) include (CheckCXXCompilerFlag)
# When version is changed, also change the one in gme/gme.h to match # 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. # 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 # 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) SET(USE_GME_NSF 1 CACHE BOOL "Enable NES NSF music emulation" FORCE)
endif() endif()
option(BUILD_SHARED_LIBS "Build shared library (set to OFF for static library)" ON)
# Check for GCC "visibility" support. # Check for GCC "visibility" support.
if (CMAKE_COMPILER_IS_GNUCXX) if (CMAKE_COMPILER_IS_GNUCXX)
check_cxx_compiler_flag (-fvisibility=hidden __LIBGME_TEST_VISIBILITY) check_cxx_compiler_flag (-fvisibility=hidden __LIBGME_TEST_VISIBILITY)
@ -79,10 +81,10 @@ if (CMAKE_COMPILER_IS_GNUCXX)
endif() endif()
endif() endif()
endif() # test visibility endif() # test visibility
endif (CMAKE_COMPILER_IS_GNUCXX)
# Cache this result # Cache this result
set( LIBGME_HAVE_GCC_VISIBILITY ${ENABLE_VISIBILITY} CACHE BOOL "GCC support for hidden visibility") set( LIBGME_HAVE_GCC_VISIBILITY ${ENABLE_VISIBILITY} CACHE BOOL "GCC support for hidden visibility")
endif (CMAKE_COMPILER_IS_GNUCXX)
# Shared library defined here # Shared library defined here
add_subdirectory(gme) add_subdirectory(gme)

View file

@ -1,262 +1,5 @@
Game_Music_Emu Change Log Game_Music_Emu Change Log
------------------------- -------------------------
Game_Music_Emu 0.6.0 Please see the git version history (e.g. git shortlog tags/0.6.0..tags/0.6.1)
-------------------- for the accurate change log.
- 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

View file

@ -1,7 +1,5 @@
/* C example that opens a game music file and records 10 seconds to "out.wav" */ /* 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 "gme/gme.h"
#include "Wave_Writer.h" /* wave_ functions for writing sound file */ #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 ); 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 */ 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 */ /* Open music file in new emulator */
Music_Emu* emu; Music_Emu* emu;

View file

@ -1,7 +1,5 @@
// C++ example that opens a game music file and records 10 seconds to "out.wav" // 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 "gme/Music_Emu.h"
#include "Wave_Writer.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 ); 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 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 // Determine file type
gme_type_t file_type; gme_type_t file_type;

View file

@ -1,10 +1,10 @@
Game_Music_Emu 0.6.0 Game_Music_Emu 0.6.2
-------------------- --------------------
Author : Shay Green <gblargg@gmail.com> Author : Shay Green <gblargg@gmail.com>
Website: http://www.slack.net/~ant/libs/ Maintainer : Michael Pyne <mpyne@purinchu.net>
Forum : http://groups.google.com/group/blargg-sound-libs Website : https://bitbucket.org/mpyne/game-music-emu/
Source : https://code.google.com/p/game-music-emu/ Source : https://bitbucket.org/mpyne/game-music-emu/
License: GNU Lesser General Public License (LGPL) License : GNU Lesser General Public License (LGPL), see LICENSE.txt
Contents Contents
-------- --------

View file

@ -143,7 +143,7 @@ add_definitions(-DBLARGG_BUILD_DLL)
include_directories(${CMAKE_CURRENT_BINARY_DIR}) include_directories(${CMAKE_CURRENT_BINARY_DIR})
# Add library to be compiled. # 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 # 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 # 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 ARCHIVE DESTINATION lib) # DLL platforms
install(FILES ${EXPORTED_HEADERS} DESTINATION include/gme) 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)

View file

@ -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"; 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 ) blargg_err_t Data_Reader::read( void* p, long s )
{ {
RETURN_VALIDITY_CHECK( s > 0 );
long result = read_avail( p, s ); long result = read_avail( p, s );
if ( result != 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 ) blargg_err_t Data_Reader::skip( long count )
{ {
RETURN_VALIDITY_CHECK( count >= 0 );
char buf [512]; char buf [512];
while ( count ) while ( count )
{ {
@ -54,7 +61,8 @@ long File_Reader::remain() const { return size() - tell(); }
blargg_err_t File_Reader::skip( long n ) blargg_err_t File_Reader::skip( long n )
{ {
assert( n >= 0 ); RETURN_VALIDITY_CHECK( n >= 0 );
if ( !n ) if ( !n )
return 0; return 0;
return seek( tell() + n ); return seek( tell() + n );
@ -67,13 +75,14 @@ Subset_Reader::Subset_Reader( Data_Reader* dr, long size )
in = dr; in = dr;
remain_ = dr->remain(); remain_ = dr->remain();
if ( remain_ > size ) if ( remain_ > size )
remain_ = size; remain_ = max( 0l, size );
} }
long Subset_Reader::remain() const { return remain_; } long Subset_Reader::remain() const { return remain_; }
long Subset_Reader::read_avail( void* p, long s ) long Subset_Reader::read_avail( void* p, long s )
{ {
s = max( 0l, s );
if ( s > remain_ ) if ( s > remain_ )
s = remain_; s = remain_;
remain_ -= s; 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 ) Remaining_Reader::Remaining_Reader( void const* h, long size, Data_Reader* r )
{ {
header = (char const*) h; header = (char const*) h;
header_end = header + size; header_end = header + max( 0l, size );
in = r; 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 ) long Remaining_Reader::read_first( void* out, long count )
{ {
count = max( 0l, count );
long first = header_end - header; long first = header_end - header;
if ( first ) if ( first )
{ {
@ -107,8 +117,9 @@ long Remaining_Reader::read_first( void* out, long count )
long Remaining_Reader::read_avail( void* out, long count ) long Remaining_Reader::read_avail( void* out, long count )
{ {
count = max( 0l, count );
long first = read_first( out, count ); long first = read_first( out, count );
long second = count - first; long second = max( 0l, count - first );
if ( second ) if ( second )
{ {
second = in->read_avail( (char*) out + first, 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 ) blargg_err_t Remaining_Reader::read( void* out, long count )
{ {
count = max( 0l, count );
long first = read_first( out, count ); long first = read_first( out, count );
long second = count - first; long second = max( 0l, count - first );
if ( !second ) if ( !second )
return 0; return 0;
return in->read( (char*) out + first, second ); 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 ) : Mem_File_Reader::Mem_File_Reader( const void* p, long s ) :
begin( (const char*) p ), begin( (const char*) p ),
size_( s ) size_( max( 0l, s ) )
{ {
pos = 0; 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 Mem_File_Reader::read_avail( void* p, long s )
{ {
long r = remain(); long r = remain();
s = max( 0l, s );
if ( s > r ) if ( s > r )
s = r; s = r;
memcpy( p, begin + pos, s ); 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 ) blargg_err_t Mem_File_Reader::seek( long n )
{ {
RETURN_VALIDITY_CHECK( n >= 0 );
if ( n > size_ ) if ( n > size_ )
return eof_error; return eof_error;
pos = n; pos = n;
@ -164,7 +178,7 @@ Callback_Reader::Callback_Reader( callback_t c, long size, void* d ) :
callback( c ), callback( c ),
data( d ) data( d )
{ {
remain_ = size; remain_ = max( 0l, size );
} }
long Callback_Reader::remain() const { return remain_; } long Callback_Reader::remain() const { return remain_; }
@ -173,13 +187,14 @@ long Callback_Reader::read_avail( void* out, long count )
{ {
if ( count > remain_ ) if ( count > remain_ )
count = remain_; count = remain_;
if ( Callback_Reader::read( out, count ) ) if ( count < 0 || Callback_Reader::read( out, count ) )
count = -1; count = -1;
return count; return count;
} }
blargg_err_t Callback_Reader::read( void* out, long count ) blargg_err_t Callback_Reader::read( void* out, long count )
{ {
RETURN_VALIDITY_CHECK( count >= 0 );
if ( count > remain_ ) if ( count > remain_ )
return eof_error; return eof_error;
return callback( data, out, count ); 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 ) 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 ) 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_ ) ) if ( s == (long) fread( p, 1, s, (FILE*) file_ ) )
return 0; return 0;
if ( feof( (FILE*) file_ ) ) if ( feof( (FILE*) file_ ) )

View file

@ -129,6 +129,8 @@ private:
}; };
#ifdef HAVE_ZLIB_H #ifdef HAVE_ZLIB_H
#include <zlib.h>
// Gzip compressed file reader // Gzip compressed file reader
class Gzip_File_Reader : public File_Reader { class Gzip_File_Reader : public File_Reader {
public: public:
@ -143,7 +145,7 @@ public:
long tell() const; long tell() const;
blargg_err_t seek( long ); blargg_err_t seek( long );
private: private:
void* file_; gzFile file_;
long size_; long size_;
}; };
#endif #endif

View file

@ -178,6 +178,11 @@ blargg_long Music_Emu::msec_to_samples( blargg_long msec ) const
return (sec * sample_rate() + msec * sample_rate() / 1000) * stereo; return (sec * sample_rate() + msec * sample_rate() / 1000) * stereo;
} }
long Music_Emu::tell_samples() const
{
return out_time;
}
long Music_Emu::tell() const long Music_Emu::tell() const
{ {
blargg_long rate = sample_rate() * stereo; blargg_long rate = sample_rate() * stereo;
@ -185,14 +190,18 @@ long Music_Emu::tell() const
return sec * 1000 + (out_time - sec * rate) * 1000 / rate; 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 ) if ( time < out_time )
RETURN_ERR( start_track( current_track_ ) ); RETURN_ERR( start_track( current_track_ ) );
return skip( time - out_time ); 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 ) blargg_err_t Music_Emu::skip( long count )
{ {
require( current_track() >= 0 ); // start_track() must have been called already require( current_track() >= 0 ); // start_track() must have been called already

View file

@ -41,9 +41,15 @@ public:
// Number of milliseconds (1000 msec = 1 second) played since beginning of track // Number of milliseconds (1000 msec = 1 second) played since beginning of track
long tell() const; 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. // Seek to new time in track. Seeking backwards or far forward can take a while.
blargg_err_t seek( long msec ); blargg_err_t seek( long msec );
// Equivalent to restarting track then skipping n samples
blargg_err_t seek_samples( long n );
// Skip n samples // Skip n samples
blargg_err_t skip( long n ); blargg_err_t skip( long n );

View file

@ -135,6 +135,9 @@ blargg_err_t Nsfe_Info::load( Data_Reader& in, Nsf_Emu* nsf_emu )
blargg_long size = get_le32( block_header [0] ); blargg_long size = get_le32( block_header [0] );
blargg_long tag = get_le32( block_header [1] ); 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) ); //debug_printf( "tag: %c%c%c%c\n", char(tag), char(tag>>8), char(tag>>16), char(tag>>24) );
switch ( tag ) switch ( tag )

View file

@ -433,9 +433,7 @@ void Snes_Spc::cpu_write( int data, int addr, rel_time_t time )
#endif #endif
// Registers other than $F2 and $F4-$F7 // Registers other than $F2 and $F4-$F7
//if ( reg != 2 && reg != 4 && reg != 5 && reg != 6 && reg != 7 ) if ( reg != 2 && (reg < 4 || reg > 7) ) // 36%
// TODO: this is a bit on the fragile side
if ( ((~0x2F00 << (bits_in_int - 16)) << reg) < 0 ) // 36%
cpu_write_smp_reg( data, time, reg ); cpu_write_smp_reg( data, time, reg );
} }
// High mem/address wrap-around // High mem/address wrap-around

View file

@ -76,8 +76,8 @@ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */
// TODO: remove non-wrapping versions? // TODO: remove non-wrapping versions?
#define SPC_NO_SP_WRAPAROUND 0 #define SPC_NO_SP_WRAPAROUND 0
#define SET_SP( v ) (sp = ram + 0x101 + (v)) #define SET_SP( v ) (sp = ram + 0x101 + ((uint8_t) v))
#define GET_SP() (sp - 0x101 - ram) #define GET_SP() (uint8_t (sp - 0x101 - ram))
#if SPC_NO_SP_WRAPAROUND #if SPC_NO_SP_WRAPAROUND
#define PUSH16( v ) (sp -= 2, SET_LE16( sp, v )) #define PUSH16( v ) (sp -= 2, SET_LE16( sp, v ))
@ -485,7 +485,7 @@ loop:
case 0xAF: // MOV (X)+,A case 0xAF: // MOV (X)+,A
WRITE_DP( 0, x, a + no_read_before_write ); WRITE_DP( 0, x, a + no_read_before_write );
x++; x = (uint8_t) (x + 1);
goto loop; goto loop;
// 5. 8-BIT LOGIC OPERATION COMMANDS // 5. 8-BIT LOGIC OPERATION COMMANDS
@ -808,7 +808,7 @@ loop:
unsigned temp = y * a; unsigned temp = y * a;
a = (uint8_t) temp; a = (uint8_t) temp;
nz = ((temp >> 1) | temp) & 0x7F; nz = ((temp >> 1) | temp) & 0x7F;
y = temp >> 8; y = (uint8_t) (temp >> 8);
nz |= y; nz |= y;
goto loop; goto loop;
} }
@ -838,6 +838,7 @@ loop:
nz = (uint8_t) a; nz = (uint8_t) a;
a = (uint8_t) a; a = (uint8_t) a;
y = (uint8_t) y;
goto loop; goto loop;
} }
@ -1004,7 +1005,7 @@ loop:
case 0x7F: // RET1 case 0x7F: // RET1
temp = *sp; temp = *sp;
SET_PC( GET_LE16( sp + 1 ) ); SET_PC( GET_LE16( sp + 1 ) );
sp += 3; SET_SP( GET_SP() + 3 );
goto set_psw; goto set_psw;
case 0x8E: // POP PSW case 0x8E: // POP PSW
POP( temp ); POP( temp );

View file

@ -18,6 +18,19 @@ all other #include lines. */
#undef require #undef require
#define require( expr ) assert( expr ) #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 // Like printf() except output goes to debug log file. Might be defined to do
// nothing (not even evaluate its arguments). // nothing (not even evaluate its arguments).
// void debug_printf( const char* format, ... ); // void debug_printf( const char* format, ... );

View file

@ -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 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_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 ( 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 ( 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 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_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 ); } BLARGG_EXPORT void gme_set_tempo ( Music_Emu* me, double t ) { me->set_tempo( t ); }

View file

@ -1,6 +1,6 @@
/* Game music emulator library C interface (also usable from C++) */ /* 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 #ifndef GME_H
#define GME_H #define GME_H
@ -8,7 +8,7 @@
extern "C" { extern "C" {
#endif #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) */ /* Error string returned by library functions, or NULL if no error (success) */
typedef const char* gme_err_t; 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 */ /* Number of milliseconds (1000 = one second) played since beginning of track */
int gme_tell( Music_Emu const* ); 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. */ /* Seek to new time in track. Seeking backwards or far forward can take a while. */
gme_err_t gme_seek( Music_Emu*, int msec ); 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 ********/ /******** Informational ********/

View file

@ -3,7 +3,7 @@
# later are used by pkg-config. # later are used by pkg-config.
prefix=@CMAKE_INSTALL_PREFIX@ prefix=@CMAKE_INSTALL_PREFIX@
exec_prefix=${prefix} exec_prefix=${prefix}
lib_suffix= lib_suffix=@LIB_SUFFIX@
libdir=${exec_prefix}/lib${lib_suffix} libdir=${exec_prefix}/lib${lib_suffix}
includedir=${prefix}/include includedir=${prefix}/include
@ -13,3 +13,4 @@ URL: http://code.google.com/p/game-music-emu/
Version: @GME_VERSION@ Version: @GME_VERSION@
Cflags: -I${includedir} Cflags: -I${includedir}
Libs: -L${libdir} -lgme Libs: -L${libdir} -lgme
Libs.private: -lstdc++

View file

@ -1,6 +1,6 @@
/* Game music emulator library C interface (also usable from C++) */ /* 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 #ifndef GME_H
#define GME_H #define GME_H
@ -8,7 +8,7 @@
extern "C" { extern "C" {
#endif #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) */ /* Error string returned by library functions, or NULL if no error (success) */
typedef const char* gme_err_t; 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 */ /* Number of milliseconds (1000 = one second) played since beginning of track */
int gme_tell( Music_Emu const* ); 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. */ /* Seek to new time in track. Seeking backwards or far forward can take a while. */
gme_err_t gme_seek( Music_Emu*, int msec ); 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 ********/ /******** Informational ********/

View file

@ -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 Game_Music_Emu is a collection of video game music file emulators that
support the following formats and systems: support the following formats and systems:
@ -34,30 +34,45 @@ several architectures, Mac OS, MorphOS, Xbox, PlayStation Portable,
GP2X, and Nintendo DS. GP2X, and Nintendo DS.
Author : Shay Green <gblargg@gmail.com> Author : Shay Green <gblargg@gmail.com>
Website: http://www.slack.net/~ant/ Website: https://bitbucket.org/mpyne/game-music-emu/wiki/Home
Forum : http://groups.google.com/group/blargg-sound-libs
License: GNU Lesser General Public License (LGPL) License: GNU Lesser General Public License (LGPL)
Current Maintainer: Michael Pyne <mpyne@purinchu.net>
Getting Started Getting Started
--------------- ---------------
Build a program consisting of demo/basics.c, demo/Wave_Writer.cpp, and 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 Or, if you have CMake 2.6 or later, execute at a command prompt (from the
cd demo extracted source directory):
run make
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". 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/ A slightly more extensive demo application is available in the player/
directory. It requires SDL to build. directory. It requires SDL to build.
Read gme.txt for more information. Post to the discussion forum for Read gme.txt for more information. Post to the discussion forum for
assistance. assistance.
Files Files
----- -----
gme.txt General notes about the library gme.txt General notes about the library

Binary file not shown.

Binary file not shown.

View file

@ -116,6 +116,7 @@ WFLAGS+=-Wfloat-equal
#WFLAGS+=-Wtraditional #WFLAGS+=-Wtraditional
ifdef VCHELP ifdef VCHELP
WFLAGS+=-Wdeclaration-after-statement WFLAGS+=-Wdeclaration-after-statement
WFLAGS+=-Wno-error=declaration-after-statement
endif endif
WFLAGS+=-Wundef WFLAGS+=-Wundef
ifndef GCC295 ifndef GCC295
@ -189,12 +190,6 @@ ifdef GCC46
WFLAGS+=-Wno-suggest-attribute=noreturn WFLAGS+=-Wno-suggest-attribute=noreturn
endif endif
ifndef MINGW
ifdef GCC45
WFLAGS+=-Wunsuffixed-float-constants
endif
endif
ifdef NOLDWARNING ifdef NOLDWARNING
LDFLAGS+=-Wl,--as-needed LDFLAGS+=-Wl,--as-needed
endif endif
@ -208,6 +203,9 @@ WFLAGS+=$(OLDWFLAGS)
ifdef GCC43 ifdef GCC43
#WFLAGS+=-Wno-error=clobbered #WFLAGS+=-Wno-error=clobbered
endif endif
ifdef GCC44
WFLAGS+=-Wno-error=array-bounds
endif
ifdef GCC46 ifdef GCC46
WFLAGS+=-Wno-error=suggest-attribute=noreturn WFLAGS+=-Wno-error=suggest-attribute=noreturn
endif endif

View file

@ -2547,6 +2547,8 @@ static void CL_RemovePlayer(INT32 playernum, INT32 reason)
#ifdef HAVE_BLUA #ifdef HAVE_BLUA
LUAh_PlayerQuit(&players[playernum], reason); // Lua hook for player quitting LUAh_PlayerQuit(&players[playernum], reason); // Lua hook for player quitting
#else
(void)reason;
#endif #endif
// Reset player data // Reset player data

View file

@ -19,7 +19,7 @@
#define __D_NET__ #define __D_NET__
// Max computers in a game // Max computers in a game
#define MAXNETNODES 16 #define MAXNETNODES (MAXPLAYERS+4)
#define BROADCASTADDR MAXNETNODES #define BROADCASTADDR MAXNETNODES
#define MAXSPLITSCREENPLAYERS 4 // Max number of players on a single computer #define MAXSPLITSCREENPLAYERS 4 // Max number of players on a single computer
#define NETSPLITSCREEN // Kart's splitscreen netgame feature #define NETSPLITSCREEN // Kart's splitscreen netgame feature

View file

@ -378,6 +378,7 @@ consvar_t cv_kartdebughuddrop = {"kartdebughuddrop", "Off", CV_NETVAR|CV_CHEAT|C
consvar_t cv_kartdebugcheckpoint = {"kartdebugcheckpoint", "Off", CV_NOSHOWHELP, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_kartdebugcheckpoint = {"kartdebugcheckpoint", "Off", CV_NOSHOWHELP, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_kartdebugnodes = {"kartdebugnodes", "Off", CV_NOSHOWHELP, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_kartdebugnodes = {"kartdebugnodes", "Off", CV_NOSHOWHELP, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_kartdebugcolorize = {"kartdebugcolorize", "Off", CV_NOSHOWHELP, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
static CV_PossibleValue_t votetime_cons_t[] = {{10, "MIN"}, {3600, "MAX"}, {0, NULL}}; static CV_PossibleValue_t votetime_cons_t[] = {{10, "MIN"}, {3600, "MAX"}, {0, NULL}};
consvar_t cv_votetime = {"votetime", "20", CV_NETVAR, votetime_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_votetime = {"votetime", "20", CV_NETVAR, votetime_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};

View file

@ -126,7 +126,7 @@ extern consvar_t cv_karteliminatelast;
extern consvar_t cv_votetime; extern consvar_t cv_votetime;
extern consvar_t cv_kartdebugitem, cv_kartdebugamount, cv_kartdebugshrink, cv_kartdebugdistribution, cv_kartdebughuddrop; extern consvar_t cv_kartdebugitem, cv_kartdebugamount, cv_kartdebugshrink, cv_kartdebugdistribution, cv_kartdebughuddrop;
extern consvar_t cv_kartdebugcheckpoint, cv_kartdebugnodes; extern consvar_t cv_kartdebugcheckpoint, cv_kartdebugnodes, cv_kartdebugcolorize;
extern consvar_t cv_itemfinder; extern consvar_t cv_itemfinder;

View file

@ -8134,89 +8134,136 @@ static const char *const ML_LIST[16] = {
// This DOES differ from r_draw's Color_Names, unfortunately. // This DOES differ from r_draw's Color_Names, unfortunately.
// Also includes Super colors // Also includes Super colors
static const char *COLOR_ENUMS[] = { // Rejigged for Kart. static const char *COLOR_ENUMS[] = { // Rejigged for Kart.
"NONE", // 00 // SKINCOLOR_NONE "NONE", // SKINCOLOR_NONE
"WHITE", // 01 // SKINCOLOR_WHITE "WHITE", // SKINCOLOR_WHITE
"SILVER", // 02 // SKINCOLOR_SILVER "SILVER", // SKINCOLOR_SILVER
"GREY", // 03 // SKINCOLOR_GREY "GREY", // SKINCOLOR_GREY
"NICKEL", // 04 // SKINCOLOR_NICKEL "NICKEL", // SKINCOLOR_NICKEL
"BLACK", // 05 // SKINCOLOR_BLACK "BLACK", // SKINCOLOR_BLACK
"SEPIA", // 06 // SKINCOLOR_SEPIA "SEPIA", // SKINCOLOR_SEPIA
"BEIGE", // 07 // SKINCOLOR_BEIGE "BEIGE", // SKINCOLOR_BEIGE
"BROWN", // 08 // SKINCOLOR_BROWN "BROWN", // SKINCOLOR_BROWN
"LEATHER", // 09 // SKINCOLOR_LEATHER "LEATHER", // SKINCOLOR_LEATHER
"SALMON", // 10 // SKINCOLOR_SALMON "SALMON", // SKINCOLOR_SALMON
"PINK", // 11 // SKINCOLOR_PINK "PINK", // SKINCOLOR_PINK
"ROSE", // 12 // SKINCOLOR_ROSE "ROSE", // SKINCOLOR_ROSE
"RUBY", // 13 // SKINCOLOR_RUBY "RUBY", // SKINCOLOR_RUBY
"RASPBERRY", // 14 // SKINCOLOR_RASPBERRY "RASPBERRY", // SKINCOLOR_RASPBERRY
"RED", // 15 // SKINCOLOR_RED "CHERRY", // SKINCOLOR_CHERRY
"CRIMSON", // 16 // SKINCOLOR_CRIMSON "RED", // SKINCOLOR_RED
"KETCHUP", // 17 // SKINCOLOR_KETCHUP "SCARLET", // SKINCOLOR_SCARLET
"DAWN", // 18 // SKINCOLOR_DAWN "CRIMSON", // SKINCOLOR_CRIMSON
"CREAMSICLE", // 19 // SKINCOLOR_CREAMSICLE "NOVA", // SKINCOLOR_NOVA
"ORANGE", // 20 // SKINCOLOR_ORANGE "KETCHUP", // SKINCOLOR_KETCHUP
"PUMPKIN", // 21 // SKINCOLOR_PUMPKIN "DAWN", // SKINCOLOR_DAWN
"ROSEWOOD", // 22 // SKINCOLOR_ROSEWOOD "CREAMSICLE", // SKINCOLOR_CREAMSICLE
"BURGUNDY", // 23 // SKINCOLOR_BURGUNDY "ORANGE", // SKINCOLOR_ORANGE
"TANGERINE", // 24 // SKINCOLOR_TANGERINE "PUMPKIN", // SKINCOLOR_PUMPKIN
"PEACH", // 25 // SKINCOLOR_PEACH "ROSEWOOD", // SKINCOLOR_ROSEWOOD
"CARAMEL", // 26 // SKINCOLOR_CARAMEL "BURGUNDY", // SKINCOLOR_BURGUNDY
"GOLD", // 27 // SKINCOLOR_GOLD "TANGERINE", // SKINCOLOR_TANGERINE
"BRONZE", // 28 // SKINCOLOR_BRONZE "PEACH", // SKINCOLOR_PEACH
"YELLOW", // 29 // SKINCOLOR_YELLOW "CARAMEL", // SKINCOLOR_CARAMEL
"MUSTARD", // 30 // SKINCOLOR_MUSTARD "CREAM", // SKINCOLOR_CREAM
"OLIVE", // 31 // SKINCOLOR_OLIVE "GOLD", // SKINCOLOR_GOLD
"VOMIT", // 32 // SKINCOLOR_VOMIT "BRONZE", // SKINCOLOR_BRONZE
"GARDEN", // 33 // SKINCOLOR_GARDEN "COPPER", // SKINCOLOR_COPPER
"LIME", // 34 // SKINCOLOR_LIME "YELLOW", // SKINCOLOR_YELLOW
"TEA", // 35 // SKINCOLOR_TEA "MUSTARD", // SKINCOLOR_MUSTARD
"PISTACHIO", // 36 // SKINCOLOR_PISTACHIO "OLIVE", // SKINCOLOR_OLIVE
"ROBOHOOD", // 37 // SKINCOLOR_ROBOHOOD "VOMIT", // SKINCOLOR_VOMIT
"MOSS", // 38 // SKINCOLOR_MOSS "GARDEN", // SKINCOLOR_GARDEN
"MINT", // 39 // SKINCOLOR_MINT "LIME", // SKINCOLOR_LIME
"GREEN", // 40 // SKINCOLOR_GREEN "HANDHELD", // SKINCOLOR_HANDHELD
"PINETREE", // 41 // SKINCOLOR_PINETREE "TEA", // SKINCOLOR_TEA
"EMERALD", // 42 // SKINCOLOR_EMERALD "PISTACHIO", // SKINCOLOR_PISTACHIO
"SWAMP", // 43 // SKINCOLOR_SWAMP "ROBOHOOD", // SKINCOLOR_ROBOHOOD
"DREAM", // 44 // SKINCOLOR_DREAM "MOSS", // SKINCOLOR_MOSS
"AQUA", // 45 // SKINCOLOR_AQUA "MINT", // SKINCOLOR_MINT
"TEAL", // 46 // SKINCOLOR_TEAL "GREEN", // SKINCOLOR_GREEN
"CYAN", // 47 // SKINCOLOR_CYAN "PINETREE", // SKINCOLOR_PINETREE
"JAWZ", // 48 // SKINCOLOR_JAWZ "EMERALD", // SKINCOLOR_EMERALD
"CERULEAN", // 49 // SKINCOLOR_CERULEAN "SWAMP", // SKINCOLOR_SWAMP
"NAVY", // 50 // SKINCOLOR_NAVY "DREAM", // SKINCOLOR_DREAM
"SLATE", // 51 // SKINCOLOR_SLATE "ALGAE", // SKINCOLOR_ALGAE
"STEEL", // 52 // SKINCOLOR_STEEL "AQUA", // SKINCOLOR_AQUA
"JET", // 53 // SKINCOLOR_JET "TEAL", // SKINCOLOR_TEAL
"SAPPHIRE", // 54 // SKINCOLOR_SAPPHIRE "CYAN", // SKINCOLOR_CYAN
"PERIWINKLE", // 55 // SKINCOLOR_PERIWINKLE "JAWZ", // SKINCOLOR_JAWZ
"BLUE", // 56 // SKINCOLOR_BLUE "CERULEAN", // SKINCOLOR_CERULEAN
"BLUEBERRY", // 57 // SKINCOLOR_BLUEBERRY "NAVY", // SKINCOLOR_NAVY
"DUSK", // 58 // SKINCOLOR_DUSK "SLATE", // SKINCOLOR_SLATE
"PURPLE", // 59 // SKINCOLOR_PURPLE "STEEL", // SKINCOLOR_STEEL
"LAVENDER", // 60 // SKINCOLOR_LAVENDER "JET", // SKINCOLOR_JET
"BYZANTIUM", // 61 // SKINCOLOR_BYZANTIUM "SAPPHIRE", // SKINCOLOR_SAPPHIRE
"POMEGRANATE", // 62 // SKINCOLOR_POMEGRANATE "PERIWINKLE", // SKINCOLOR_PERIWINKLE
"LILAC", // 63 // SKINCOLOR_LILAC "BLUE", // SKINCOLOR_BLUE
"BLUEBERRY", // SKINCOLOR_BLUEBERRY
"PASTEL", // SKINCOLOR_PASTEL
"DUSK", // SKINCOLOR_DUSK
"PURPLE", // SKINCOLOR_PURPLE
"FUCHSIA", // SKINCOLOR_FUCHSIA
"TOXIC", // SKINCOLOR_TOXIC
"LAVENDER", // SKINCOLOR_LAVENDER
"BYZANTIUM", // SKINCOLOR_BYZANTIUM
"POMEGRANATE", // SKINCOLOR_POMEGRANATE
"LILAC", // SKINCOLOR_LILAC
// Super special awesome Super flashing colors! // Special super colors
"SUPER1", // SKINCOLOR_SUPER1 // Super Sonic Yellow
"SUPER2", // SKINCOLOR_SUPER2, "SUPER1", // SKINCOLOR_SUPER1
"SUPER3", // SKINCOLOR_SUPER3, "SUPER2", // SKINCOLOR_SUPER2,
"SUPER4", // SKINCOLOR_SUPER4, "SUPER3", // SKINCOLOR_SUPER3,
"SUPER5", // SKINCOLOR_SUPER5, "SUPER4", // SKINCOLOR_SUPER4,
// Super Tails "SUPER5", // SKINCOLOR_SUPER5,
"TSUPER1", // SKINCOLOR_TSUPER1, // Super Tails Orange
"TSUPER2", // SKINCOLOR_TSUPER2, "TSUPER1", // SKINCOLOR_TSUPER1,
"TSUPER3", // SKINCOLOR_TSUPER3, "TSUPER2", // SKINCOLOR_TSUPER2,
"TSUPER4", // SKINCOLOR_TSUPER4, "TSUPER3", // SKINCOLOR_TSUPER3,
"TSUPER5", // SKINCOLOR_TSUPER5, "TSUPER4", // SKINCOLOR_TSUPER4,
// Super Knuckles "TSUPER5", // SKINCOLOR_TSUPER5,
"KSUPER1", // SKINCOLOR_KSUPER1, // Super Knuckles Red
"KSUPER2", // SKINCOLOR_KSUPER2, "KSUPER1", // SKINCOLOR_KSUPER1,
"KSUPER3", // SKINCOLOR_KSUPER3, "KSUPER2", // SKINCOLOR_KSUPER2,
"KSUPER4", // SKINCOLOR_KSUPER4, "KSUPER3", // SKINCOLOR_KSUPER3,
"KSUPER5" // SKINCOLOR_KSUPER5, "KSUPER4", // SKINCOLOR_KSUPER4,
"KSUPER5", // SKINCOLOR_KSUPER5,
// Hyper Sonic Pink
"PSUPER1", // SKINCOLOR_PSUPER1,
"PSUPER2", // SKINCOLOR_PSUPER2,
"PSUPER3", // SKINCOLOR_PSUPER3,
"PSUPER4", // SKINCOLOR_PSUPER4,
"PSUPER5", // SKINCOLOR_PSUPER5,
// Hyper Sonic Blue
"BSUPER1", // SKINCOLOR_BSUPER1,
"BSUPER2", // SKINCOLOR_BSUPER2,
"BSUPER3", // SKINCOLOR_BSUPER3,
"BSUPER4", // SKINCOLOR_BSUPER4,
"BSUPER5" // SKINCOLOR_BSUPER5,
// Hyper Sonic Green
"GSUPER1", // SKINCOLOR_GSUPER1,
"GSUPER2", // SKINCOLOR_GSUPER2,
"GSUPER3", // SKINCOLOR_GSUPER3,
"GSUPER4", // SKINCOLOR_GSUPER4,
"GSUPER5", // SKINCOLOR_GSUPER5,
// Hyper Sonic White
"WSUPER1", // SKINCOLOR_WSUPER1,
"WSUPER2", // SKINCOLOR_WSUPER2,
"WSUPER3", // SKINCOLOR_WSUPER3,
"WSUPER4", // SKINCOLOR_WSUPER4,
"WSUPER5", // SKINCOLOR_WSUPER5,
// Creamy Super (Shadow?)
"CSUPER1", // SKINCOLOR_CSUPER1,
"CSUPER2", // SKINCOLOR_CSUPER2,
"CSUPER3", // SKINCOLOR_CSUPER3,
"CSUPER4", // SKINCOLOR_CSUPER4,
"CSUPER5", // SKINCOLOR_CSUPER5,
// Aqua Super
"ASUPER1", // SKINCOLOR_ASUPER1,
"ASUPER2", // SKINCOLOR_ASUPER2,
"ASUPER3", // SKINCOLOR_ASUPER3,
"ASUPER4", // SKINCOLOR_ASUPER4,
"ASUPER5" // SKINCOLOR_ASUPER5,
}; };
static const char *const POWERS_LIST[] = { static const char *const POWERS_LIST[] = {
@ -8254,6 +8301,7 @@ static const char *const POWERS_LIST[] = {
"INGOOP" // In goop "INGOOP" // In goop
}; };
#ifdef HAVE_BLUA
static const char *const KARTSTUFF_LIST[] = { static const char *const KARTSTUFF_LIST[] = {
"POSITION", "POSITION",
"OLDPOSITION", "OLDPOSITION",
@ -8338,6 +8386,7 @@ static const char *const KARTSTUFF_LIST[] = {
"SPECTATEWAIT", "SPECTATEWAIT",
"GROWCANCEL" "GROWCANCEL"
}; };
#endif
static const char *const HUDITEMS_LIST[] = { static const char *const HUDITEMS_LIST[] = {
"LIVESNAME", "LIVESNAME",
@ -9043,20 +9092,6 @@ static powertype_t get_power(const char *word)
return pw_invulnerability; 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. /// \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_mul(fixed_t a, fixed_t b) { return a*b; }
static fixed_t op_div(fixed_t a, fixed_t b) { return a/b; } static fixed_t op_div(fixed_t a, fixed_t b) { return a/b; }

View file

@ -265,8 +265,11 @@ typedef enum
SKINCOLOR_ROSE, SKINCOLOR_ROSE,
SKINCOLOR_RUBY, SKINCOLOR_RUBY,
SKINCOLOR_RASPBERRY, SKINCOLOR_RASPBERRY,
SKINCOLOR_CHERRY,
SKINCOLOR_RED, SKINCOLOR_RED,
SKINCOLOR_SCARLET,
SKINCOLOR_CRIMSON, SKINCOLOR_CRIMSON,
SKINCOLOR_NOVA,
SKINCOLOR_KETCHUP, SKINCOLOR_KETCHUP,
SKINCOLOR_DAWN, SKINCOLOR_DAWN,
SKINCOLOR_CREAMSICLE, SKINCOLOR_CREAMSICLE,
@ -277,14 +280,17 @@ typedef enum
SKINCOLOR_TANGERINE, SKINCOLOR_TANGERINE,
SKINCOLOR_PEACH, SKINCOLOR_PEACH,
SKINCOLOR_CARAMEL, SKINCOLOR_CARAMEL,
SKINCOLOR_CREAM,
SKINCOLOR_GOLD, SKINCOLOR_GOLD,
SKINCOLOR_BRONZE, SKINCOLOR_BRONZE,
SKINCOLOR_COPPER,
SKINCOLOR_YELLOW, SKINCOLOR_YELLOW,
SKINCOLOR_MUSTARD, SKINCOLOR_MUSTARD,
SKINCOLOR_OLIVE, SKINCOLOR_OLIVE,
SKINCOLOR_VOMIT, SKINCOLOR_VOMIT,
SKINCOLOR_GARDEN, SKINCOLOR_GARDEN,
SKINCOLOR_LIME, SKINCOLOR_LIME,
SKINCOLOR_HANDHELD,
SKINCOLOR_TEA, SKINCOLOR_TEA,
SKINCOLOR_PISTACHIO, SKINCOLOR_PISTACHIO,
SKINCOLOR_ROBOHOOD, SKINCOLOR_ROBOHOOD,
@ -295,6 +301,7 @@ typedef enum
SKINCOLOR_EMERALD, SKINCOLOR_EMERALD,
SKINCOLOR_SWAMP, SKINCOLOR_SWAMP,
SKINCOLOR_DREAM, SKINCOLOR_DREAM,
SKINCOLOR_ALGAE,
SKINCOLOR_AQUA, SKINCOLOR_AQUA,
SKINCOLOR_TEAL, SKINCOLOR_TEAL,
SKINCOLOR_CYAN, SKINCOLOR_CYAN,
@ -308,8 +315,11 @@ typedef enum
SKINCOLOR_PERIWINKLE, SKINCOLOR_PERIWINKLE,
SKINCOLOR_BLUE, SKINCOLOR_BLUE,
SKINCOLOR_BLUEBERRY, SKINCOLOR_BLUEBERRY,
SKINCOLOR_PASTEL,
SKINCOLOR_DUSK, SKINCOLOR_DUSK,
SKINCOLOR_PURPLE, SKINCOLOR_PURPLE,
SKINCOLOR_FUCHSIA,
SKINCOLOR_TOXIC,
SKINCOLOR_LAVENDER, SKINCOLOR_LAVENDER,
SKINCOLOR_BYZANTIUM, SKINCOLOR_BYZANTIUM,
SKINCOLOR_POMEGRANATE, SKINCOLOR_POMEGRANATE,
@ -319,26 +329,69 @@ typedef enum
MAXSKINCOLORS, MAXSKINCOLORS,
// Super special awesome Super flashing colors! // Super special awesome Super flashing colors!
// Super Sonic Yellow
SKINCOLOR_SUPER1 = MAXSKINCOLORS, SKINCOLOR_SUPER1 = MAXSKINCOLORS,
SKINCOLOR_SUPER2, SKINCOLOR_SUPER2,
SKINCOLOR_SUPER3, SKINCOLOR_SUPER3,
SKINCOLOR_SUPER4, SKINCOLOR_SUPER4,
SKINCOLOR_SUPER5, SKINCOLOR_SUPER5,
// Super Tails // Super Tails Orange
SKINCOLOR_TSUPER1, SKINCOLOR_TSUPER1,
SKINCOLOR_TSUPER2, SKINCOLOR_TSUPER2,
SKINCOLOR_TSUPER3, SKINCOLOR_TSUPER3,
SKINCOLOR_TSUPER4, SKINCOLOR_TSUPER4,
SKINCOLOR_TSUPER5, SKINCOLOR_TSUPER5,
// Super Knuckles // Super Knuckles Red
SKINCOLOR_KSUPER1, SKINCOLOR_KSUPER1,
SKINCOLOR_KSUPER2, SKINCOLOR_KSUPER2,
SKINCOLOR_KSUPER3, SKINCOLOR_KSUPER3,
SKINCOLOR_KSUPER4, SKINCOLOR_KSUPER4,
SKINCOLOR_KSUPER5, SKINCOLOR_KSUPER5,
// Hyper Sonic Pink
SKINCOLOR_PSUPER1,
SKINCOLOR_PSUPER2,
SKINCOLOR_PSUPER3,
SKINCOLOR_PSUPER4,
SKINCOLOR_PSUPER5,
// Hyper Sonic Blue
SKINCOLOR_BSUPER1,
SKINCOLOR_BSUPER2,
SKINCOLOR_BSUPER3,
SKINCOLOR_BSUPER4,
SKINCOLOR_BSUPER5,
// Hyper Sonic Green
SKINCOLOR_GSUPER1,
SKINCOLOR_GSUPER2,
SKINCOLOR_GSUPER3,
SKINCOLOR_GSUPER4,
SKINCOLOR_GSUPER5,
// Hyper Sonic White
SKINCOLOR_WSUPER1,
SKINCOLOR_WSUPER2,
SKINCOLOR_WSUPER3,
SKINCOLOR_WSUPER4,
SKINCOLOR_WSUPER5,
// Creamy Super (Shadow?)
SKINCOLOR_CSUPER1,
SKINCOLOR_CSUPER2,
SKINCOLOR_CSUPER3,
SKINCOLOR_CSUPER4,
SKINCOLOR_CSUPER5,
// Aqua Super
SKINCOLOR_ASUPER1,
SKINCOLOR_ASUPER2,
SKINCOLOR_ASUPER3,
SKINCOLOR_ASUPER4,
SKINCOLOR_ASUPER5,
MAXTRANSLATIONS MAXTRANSLATIONS
} skincolors_t; } skincolors_t;

View file

@ -2056,7 +2056,7 @@ EXPORT void HWRAPI(DrawMD2) (INT32 *gl_cmd_buffer, md2_frame_t *frame, FTransfor
EXPORT void HWRAPI(SetTransform) (FTransform *stransform) EXPORT void HWRAPI(SetTransform) (FTransform *stransform)
{ {
static boolean special_splitscreen; static boolean special_splitscreen;
float used_fov; double used_fov;
pglLoadIdentity(); pglLoadIdentity();
if (stransform) if (stransform)
{ {
@ -2088,7 +2088,7 @@ EXPORT void HWRAPI(SetTransform) (FTransform *stransform)
pglLoadIdentity(); pglLoadIdentity();
if (special_splitscreen) if (special_splitscreen)
{ {
used_fov = atan(tan(used_fov*M_PI/360)*0.8)*360/M_PI; used_fov = atan(tan(used_fov*M_PIl/360)*0.8)*360/M_PIl;
GLPerspective(used_fov, 2*ASPECT_RATIO); GLPerspective(used_fov, 2*ASPECT_RATIO);
} }
else else

View file

@ -795,15 +795,15 @@ static void Got_Saycmd(UINT8 **p, INT32 playernum)
cstart = "\x85"; // V_REDMAP cstart = "\x85"; // V_REDMAP
else if (color <= SKINCOLOR_TANGERINE) else if (color <= SKINCOLOR_TANGERINE)
cstart = "\x87"; // V_ORANGEMAP cstart = "\x87"; // V_ORANGEMAP
else if (color <= SKINCOLOR_CARAMEL) else if (color <= SKINCOLOR_CREAM)
cstart = "\x8f"; // V_PEACHMAP cstart = "\x8f"; // V_PEACHMAP
else if (color <= SKINCOLOR_BRONZE) else if (color <= SKINCOLOR_COPPER)
cstart = "\x8A"; // V_GOLDMAP cstart = "\x8A"; // V_GOLDMAP
else if (color <= SKINCOLOR_OLIVE) else if (color <= SKINCOLOR_OLIVE)
cstart = "\x82"; // V_YELLOWMAP cstart = "\x82"; // V_YELLOWMAP
else if (color <= SKINCOLOR_PISTACHIO) else if (color <= SKINCOLOR_PISTACHIO)
cstart = "\x8b"; // V_TEAMAP cstart = "\x8b"; // V_TEAMAP
else if (color <= SKINCOLOR_DREAM || color == SKINCOLOR_LIME) else if (color <= SKINCOLOR_ALGAE || color == SKINCOLOR_LIME || color == SKINCOLOR_HANDHELD)
cstart = "\x83"; // V_GREENMAP cstart = "\x83"; // V_GREENMAP
else if (color <= SKINCOLOR_NAVY || color == SKINCOLOR_SAPPHIRE) else if (color <= SKINCOLOR_NAVY || color == SKINCOLOR_SAPPHIRE)
cstart = "\x88"; // V_SKYMAP cstart = "\x88"; // V_SKYMAP

View file

@ -43,187 +43,214 @@
// These should be within 14 characters to fit on the character select screen // These should be within 14 characters to fit on the character select screen
const char *KartColor_Names[MAXSKINCOLORS] = const char *KartColor_Names[MAXSKINCOLORS] =
{ {
"None", // 00 // SKINCOLOR_NONE "None", // SKINCOLOR_NONE
"White", // 01 // SKINCOLOR_WHITE "White", // SKINCOLOR_WHITE
"Silver", // 02 // SKINCOLOR_SILVER "Silver", // SKINCOLOR_SILVER
"Grey", // 03 // SKINCOLOR_GREY "Grey", // SKINCOLOR_GREY
"Nickel", // 04 // SKINCOLOR_NICKEL "Nickel", // SKINCOLOR_NICKEL
"Black", // 05 // SKINCOLOR_BLACK "Black", // SKINCOLOR_BLACK
"Sepia", // 06 // SKINCOLOR_SEPIA "Sepia", // SKINCOLOR_SEPIA
"Beige", // 07 // SKINCOLOR_BEIGE "Beige", // SKINCOLOR_BEIGE
"Brown", // 08 // SKINCOLOR_BROWN "Brown", // SKINCOLOR_BROWN
"Leather", // 09 // SKINCOLOR_LEATHER "Leather", // SKINCOLOR_LEATHER
"Salmon", // 10 // SKINCOLOR_SALMON "Salmon", // SKINCOLOR_SALMON
"Pink", // 11 // SKINCOLOR_PINK "Pink", // SKINCOLOR_PINK
"Rose", // 12 // SKINCOLOR_ROSE "Rose", // SKINCOLOR_ROSE
"Ruby", // 13 // SKINCOLOR_RUBY "Ruby", // SKINCOLOR_RUBY
"Raspberry", // 14 // SKINCOLOR_RASPBERRY "Raspberry", // SKINCOLOR_RASPBERRY
"Red", // 15 // SKINCOLOR_RED "Cherry", // SKINCOLOR_CHERRY
"Crimson", // 16 // SKINCOLOR_CRIMSON "Red", // SKINCOLOR_RED
"Ketchup", // 17 // SKINCOLOR_KETCHUP "Scarlet", // SKINCOLOR_SCARLET
"Dawn", // 18 // SKINCOLOR_DAWN "Crimson", // SKINCOLOR_CRIMSON
"Creamsicle", // 19 // SKINCOLOR_CREAMSICLE "Nova", // SKINCOLOR_NOVA
"Orange", // 20 // SKINCOLOR_ORANGE "Ketchup", // SKINCOLOR_KETCHUP
"Pumpkin", // 21 // SKINCOLOR_PUMPKIN "Dawn", // SKINCOLOR_DAWN
"Rosewood", // 22 // SKINCOLOR_ROSEWOOD "Creamsicle", // SKINCOLOR_CREAMSICLE
"Burgundy", // 23 // SKINCOLOR_BURGUNDY "Orange", // SKINCOLOR_ORANGE
"Tangerine", // 24 // SKINCOLOR_TANGERINE "Pumpkin", // SKINCOLOR_PUMPKIN
"Peach", // 25 // SKINCOLOR_PEACH "Rosewood", // SKINCOLOR_ROSEWOOD
"Caramel", // 26 // SKINCOLOR_CARAMEL "Burgundy", // SKINCOLOR_BURGUNDY
"Gold", // 27 // SKINCOLOR_GOLD "Tangerine", // SKINCOLOR_TANGERINE
"Bronze", // 28 // SKINCOLOR_BRONZE "Peach", // SKINCOLOR_PEACH
"Yellow", // 29 // SKINCOLOR_YELLOW "Caramel", // SKINCOLOR_CARAMEL
"Mustard", // 30 // SKINCOLOR_MUSTARD "Cream", // SKINCOLOR_CREAM
"Olive", // 31 // SKINCOLOR_OLIVE "Gold", // SKINCOLOR_GOLD
"Vomit", // 32 // SKINCOLOR_VOMIT "Bronze", // SKINCOLOR_BRONZE
"Garden", // 33 // SKINCOLOR_GARDEN "Copper", // SKINCOLOR_COPPER
"Lime", // 34 // SKINCOLOR_LIME "Yellow", // SKINCOLOR_YELLOW
"Tea", // 35 // SKINCOLOR_TEA "Mustard", // SKINCOLOR_MUSTARD
"Pistachio", // 36 // SKINCOLOR_PISTACHIO "Olive", // SKINCOLOR_OLIVE
"Robo-Hood", // 37 // SKINCOLOR_ROBOHOOD "Vomit", // SKINCOLOR_VOMIT
"Moss", // 38 // SKINCOLOR_MOSS "Garden", // SKINCOLOR_GARDEN
"Mint", // 39 // SKINCOLOR_MINT "Lime", // SKINCOLOR_LIME
"Green", // 40 // SKINCOLOR_GREEN "Handheld", // SKINCOLOR_HANDHELD
"Pinetree", // 41 // SKINCOLOR_PINETREE "Tea", // SKINCOLOR_TEA
"Emerald", // 42 // SKINCOLOR_EMERALD "Pistachio", // SKINCOLOR_PISTACHIO
"Swamp", // 43 // SKINCOLOR_SWAMP "Robo-Hood", // SKINCOLOR_ROBOHOOD
"Dream", // 44 // SKINCOLOR_DREAM "Moss", // SKINCOLOR_MOSS
"Aqua", // 45 // SKINCOLOR_AQUA "Mint", // SKINCOLOR_MINT
"Teal", // 46 // SKINCOLOR_TEAL "Green", // SKINCOLOR_GREEN
"Cyan", // 47 // SKINCOLOR_CYAN "Pinetree", // SKINCOLOR_PINETREE
"Jawz", // 48 // SKINCOLOR_JAWZ "Emerald", // SKINCOLOR_EMERALD
"Cerulean", // 49 // SKINCOLOR_CERULEAN "Swamp", // SKINCOLOR_SWAMP
"Navy", // 50 // SKINCOLOR_NAVY "Dream", // SKINCOLOR_DREAM
"Slate", // 51 // SKINCOLOR_SLATE "Algae", // SKINCOLOR_ALGAE
"Steel", // 52 // SKINCOLOR_STEEL "Aqua", // SKINCOLOR_AQUA
"Jet", // 53 // SKINCOLOR_JET "Teal", // SKINCOLOR_TEAL
"Sapphire", // 54 // SKINCOLOR_SAPPHIRE "Cyan", // SKINCOLOR_CYAN
"Periwinkle", // 55 // SKINCOLOR_PERIWINKLE "Jawz", // SKINCOLOR_JAWZ
"Blue", // 56 // SKINCOLOR_BLUE "Cerulean", // SKINCOLOR_CERULEAN
"Blueberry", // 57 // SKINCOLOR_BLUEBERRY "Navy", // SKINCOLOR_NAVY
"Dusk", // 58 // SKINCOLOR_DUSK "Slate", // SKINCOLOR_SLATE
"Purple", // 59 // SKINCOLOR_PURPLE "Steel", // SKINCOLOR_STEEL
"Lavender", // 60 // SKINCOLOR_LAVENDER "Jet", // SKINCOLOR_JET
"Byzantium", // 61 // SKINCOLOR_BYZANTIUM "Sapphire", // SKINCOLOR_SAPPHIRE
"Pomegranate", // 62 // SKINCOLOR_POMEGRANATE "Periwinkle", // SKINCOLOR_PERIWINKLE
"Lilac" // 63 // SKINCOLOR_LILAC "Blue", // SKINCOLOR_BLUE
"Blueberry", // SKINCOLOR_BLUEBERRY
"Pastel", // SKINCOLOR_PASTEL
"Dusk", // SKINCOLOR_DUSK
"Purple", // SKINCOLOR_PURPLE
"Fuchsia", // SKINCOLOR_FUCHSIA
"Toxic", // SKINCOLOR_TOXIC
"Lavender", // SKINCOLOR_LAVENDER
"Byzantium", // SKINCOLOR_BYZANTIUM
"Pomegranate", // SKINCOLOR_POMEGRANATE
"Lilac" // SKINCOLOR_LILAC
}; };
// Color_Opposite replacement; frame setting has not been changed from 8 for most, should be done later // Color_Opposite replacement; frame setting has not been changed from 8 for most, should be done later
const UINT8 KartColor_Opposite[MAXSKINCOLORS*2] = const UINT8 KartColor_Opposite[MAXSKINCOLORS*2] =
{ {
SKINCOLOR_NONE,8, // 00 // SKINCOLOR_NONE SKINCOLOR_NONE,8, // SKINCOLOR_NONE
SKINCOLOR_BLACK,8, // 01 // SKINCOLOR_WHITE SKINCOLOR_BLACK,8, // SKINCOLOR_WHITE
SKINCOLOR_NICKEL,8, // 02 // SKINCOLOR_SILVER SKINCOLOR_NICKEL,8, // SKINCOLOR_SILVER
SKINCOLOR_GREY,8, // 03 // SKINCOLOR_GREY SKINCOLOR_GREY,8, // SKINCOLOR_GREY
SKINCOLOR_SILVER,8, // 04 // SKINCOLOR_NICKEL SKINCOLOR_SILVER,8, // SKINCOLOR_NICKEL
SKINCOLOR_WHITE,8, // 05 // SKINCOLOR_BLACK SKINCOLOR_WHITE,8, // SKINCOLOR_BLACK
SKINCOLOR_LEATHER,6, // 06 // SKINCOLOR_SEPIA SKINCOLOR_LEATHER,6, // SKINCOLOR_SEPIA
SKINCOLOR_BROWN,2, // 07 // SKINCOLOR_BEIGE SKINCOLOR_BROWN,2, // SKINCOLOR_BEIGE
SKINCOLOR_BEIGE,8, // 08 // SKINCOLOR_BROWN SKINCOLOR_BEIGE,8, // SKINCOLOR_BROWN
SKINCOLOR_SEPIA,8, // 09 // SKINCOLOR_LEATHER SKINCOLOR_SEPIA,8, // SKINCOLOR_LEATHER
SKINCOLOR_TEA,8, // 10 // SKINCOLOR_SALMON SKINCOLOR_TEA,8, // SKINCOLOR_SALMON
SKINCOLOR_PISTACHIO,8, // 11 // SKINCOLOR_PINK SKINCOLOR_PISTACHIO,8, // SKINCOLOR_PINK
SKINCOLOR_MOSS,8, // 12 // SKINCOLOR_ROSE SKINCOLOR_MOSS,8, // SKINCOLOR_ROSE
SKINCOLOR_SAPPHIRE,8, // 13 // SKINCOLOR_RUBY SKINCOLOR_SAPPHIRE,8, // SKINCOLOR_RUBY
SKINCOLOR_MINT,8, // 14 // SKINCOLOR_RASPBERRY SKINCOLOR_MINT,8, // SKINCOLOR_RASPBERRY
SKINCOLOR_GREEN,6, // 15 // SKINCOLOR_RED SKINCOLOR_HANDHELD,10, // SKINCOLOR_CHERRY
SKINCOLOR_PINETREE,6, // 16 // SKINCOLOR_CRIMSON SKINCOLOR_GREEN,6, // SKINCOLOR_RED
SKINCOLOR_MUSTARD,10, // 17 // SKINCOLOR_KETCHUP SKINCOLOR_PINETREE,6, // SKINCOLOR_SCARLET
SKINCOLOR_DUSK,8, // 18 // SKINCOLOR_DAWN SKINCOLOR_TOXIC,8, // SKINCOLOR_CRIMSON
SKINCOLOR_PERIWINKLE,8, // 19 // SKINCOLOR_CREAMSICLE SKINCOLOR_ALGAE,10, // SKINCOLOR_NOVA
SKINCOLOR_BLUE,8, // 20 // SKINCOLOR_ORANGE SKINCOLOR_MUSTARD,10, // SKINCOLOR_KETCHUP
SKINCOLOR_BLUEBERRY,8, // 21 // SKINCOLOR_PUMPKIN SKINCOLOR_DUSK,8, // SKINCOLOR_DAWN
SKINCOLOR_NAVY,6, // 22 // SKINCOLOR_ROSEWOOD SKINCOLOR_PERIWINKLE,8, // SKINCOLOR_CREAMSICLE
SKINCOLOR_JET,8, // 23 // SKINCOLOR_BURGUNDY SKINCOLOR_BLUE,8, // SKINCOLOR_ORANGE
SKINCOLOR_LIME,8, // 24 // SKINCOLOR_TANGERINE SKINCOLOR_BLUEBERRY,8, // SKINCOLOR_PUMPKIN
SKINCOLOR_CYAN,8, // 25 // SKINCOLOR_PEACH SKINCOLOR_NAVY,6, // SKINCOLOR_ROSEWOOD
SKINCOLOR_CERULEAN,8, // 26 // SKINCOLOR_CARAMEL SKINCOLOR_JET,8, // SKINCOLOR_BURGUNDY
SKINCOLOR_SLATE,8, // 27 // SKINCOLOR_GOLD SKINCOLOR_LIME,8, // SKINCOLOR_TANGERINE
SKINCOLOR_STEEL,8, // 28 // SKINCOLOR_BRONZE SKINCOLOR_CYAN,8, // SKINCOLOR_PEACH
SKINCOLOR_AQUA,8, // 29 // SKINCOLOR_YELLOW SKINCOLOR_CERULEAN,8, // SKINCOLOR_CARAMEL
SKINCOLOR_KETCHUP,8, // 30 // SKINCOLOR_MUSTARD SKINCOLOR_COPPER,10, // SKINCOLOR_CREAM
SKINCOLOR_TEAL,8, // 31 // SKINCOLOR_OLIVE SKINCOLOR_SLATE,8, // SKINCOLOR_GOLD
SKINCOLOR_ROBOHOOD,8, // 32 // SKINCOLOR_VOMIT SKINCOLOR_STEEL,8, // SKINCOLOR_BRONZE
SKINCOLOR_LAVENDER,6, // 33 // SKINCOLOR_GARDEN SKINCOLOR_CREAM,6, // SKINCOLOR_COPPER
SKINCOLOR_TANGERINE,8, // 34 // SKINCOLOR_LIME SKINCOLOR_AQUA,8, // SKINCOLOR_YELLOW
SKINCOLOR_SALMON,8, // 35 // SKINCOLOR_TEA SKINCOLOR_KETCHUP,8, // SKINCOLOR_MUSTARD
SKINCOLOR_PINK,6, // 36 // SKINCOLOR_PISTACHIO SKINCOLOR_TEAL,8, // SKINCOLOR_OLIVE
SKINCOLOR_VOMIT,8, // 37 // SKINCOLOR_ROBOHOOD SKINCOLOR_ROBOHOOD,8, // SKINCOLOR_VOMIT
SKINCOLOR_ROSE,8, // 38 // SKINCOLOR_MOSS SKINCOLOR_LAVENDER,6, // SKINCOLOR_GARDEN
SKINCOLOR_RASPBERRY,8, // 39 // SKINCOLOR_MINT SKINCOLOR_TANGERINE,8, // SKINCOLOR_LIME
SKINCOLOR_RED,8, // 40 // SKINCOLOR_GREEN SKINCOLOR_CHERRY,8, // SKINCOLOR_HANDHELD
SKINCOLOR_CRIMSON,8, // 41 // SKINCOLOR_PINETREE SKINCOLOR_SALMON,8, // SKINCOLOR_TEA
SKINCOLOR_PURPLE,8, // 42 // SKINCOLOR_EMERALD SKINCOLOR_PINK,6, // SKINCOLOR_PISTACHIO
SKINCOLOR_BYZANTIUM,8, // 43 // SKINCOLOR_SWAMP SKINCOLOR_VOMIT,8, // SKINCOLOR_ROBOHOOD
SKINCOLOR_POMEGRANATE,8, // 44 // SKINCOLOR_DREAM SKINCOLOR_ROSE,8, // SKINCOLOR_MOSS
SKINCOLOR_YELLOW,8, // 45 // SKINCOLOR_AQUA SKINCOLOR_RASPBERRY,8, // SKINCOLOR_MINT
SKINCOLOR_OLIVE,8, // 46 // SKINCOLOR_TEAL SKINCOLOR_RED,8, // SKINCOLOR_GREEN
SKINCOLOR_PEACH,8, // 47 // SKINCOLOR_CYAN SKINCOLOR_SCARLET,8, // SKINCOLOR_PINETREE
SKINCOLOR_LILAC,10, // 48 // SKINCOLOR_JAWZ SKINCOLOR_PURPLE,8, // SKINCOLOR_EMERALD
SKINCOLOR_CARAMEL,8, // 49 // SKINCOLOR_CERULEAN SKINCOLOR_BYZANTIUM,8, // SKINCOLOR_SWAMP
SKINCOLOR_ROSEWOOD,8, // 50 // SKINCOLOR_NAVY SKINCOLOR_POMEGRANATE,8, // SKINCOLOR_DREAM
SKINCOLOR_GOLD,10, // 51 // SKINCOLOR_SLATE SKINCOLOR_NOVA,10, // SKINCOLOR_ALGAE
SKINCOLOR_BRONZE,10, // 52 // SKINCOLOR_STEEL SKINCOLOR_YELLOW,8, // SKINCOLOR_AQUA
SKINCOLOR_BURGUNDY,8, // 53 // SKINCOLOR_JET SKINCOLOR_OLIVE,8, // SKINCOLOR_TEAL
SKINCOLOR_RUBY,6, // 54 // SKINCOLOR_SAPPHIRE SKINCOLOR_PEACH,8, // SKINCOLOR_CYAN
SKINCOLOR_CREAMSICLE,8, // 55 // SKINCOLOR_PERIWINKLE SKINCOLOR_LILAC,10, // SKINCOLOR_JAWZ
SKINCOLOR_ORANGE,8, // 56 // SKINCOLOR_BLUE SKINCOLOR_CARAMEL,8, // SKINCOLOR_CERULEAN
SKINCOLOR_PUMPKIN,8, // 57 // SKINCOLOR_BLUEBERRY SKINCOLOR_ROSEWOOD,8, // SKINCOLOR_NAVY
SKINCOLOR_DAWN,6, // 58 // SKINCOLOR_DUSK SKINCOLOR_GOLD,10, // SKINCOLOR_SLATE
SKINCOLOR_EMERALD,8, // 59 // SKINCOLOR_PURPLE SKINCOLOR_BRONZE,10, // SKINCOLOR_STEEL
SKINCOLOR_GARDEN,6, // 60 // SKINCOLOR_LAVENDER SKINCOLOR_BURGUNDY,8, // SKINCOLOR_JET
SKINCOLOR_SWAMP,8, // 61 // SKINCOLOR_BYZANTIUM SKINCOLOR_RUBY,6, // SKINCOLOR_SAPPHIRE
SKINCOLOR_DREAM,8, // 62 // SKINCOLOR_POMEGRANATE SKINCOLOR_CREAMSICLE,8, // SKINCOLOR_PERIWINKLE
SKINCOLOR_JAWZ,6 // 63 // SKINCOLOR_LILAC SKINCOLOR_ORANGE,8, // SKINCOLOR_BLUE
SKINCOLOR_PUMPKIN,8, // SKINCOLOR_BLUEBERRY
SKINCOLOR_FUCHSIA,11, // SKINCOLOR_PASTEL
SKINCOLOR_DAWN,6, // SKINCOLOR_DUSK
SKINCOLOR_EMERALD,8, // SKINCOLOR_PURPLE
SKINCOLOR_PASTEL,11, // SKINCOLOR_FUCHSIA
SKINCOLOR_CRIMSON,8, // SKINCOLOR_TOXIC
SKINCOLOR_GARDEN,6, // SKINCOLOR_LAVENDER
SKINCOLOR_SWAMP,8, // SKINCOLOR_BYZANTIUM
SKINCOLOR_DREAM,8, // SKINCOLOR_POMEGRANATE
SKINCOLOR_JAWZ,6 // SKINCOLOR_LILAC
}; };
UINT8 colortranslations[MAXSKINCOLORS][16] = { UINT8 colortranslations[MAXTRANSLATIONS][16] = {
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // SKINCOLOR_NONE { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // SKINCOLOR_NONE
{120, 120, 120, 120, 0, 1, 3, 4, 6, 7, 10, 14, 18, 22, 25, 28}, // SKINCOLOR_WHITE {120, 120, 120, 120, 0, 2, 5, 8, 9, 11, 14, 17, 20, 22, 25, 28}, // SKINCOLOR_WHITE
{ 0, 1, 2, 4, 5, 7, 8, 10, 13, 15, 18, 20, 23, 25, 28, 30}, // SKINCOLOR_SILVER { 0, 1, 2, 3, 5, 7, 9, 12, 13, 15, 18, 20, 23, 25, 27, 30}, // SKINCOLOR_SILVER
{ 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31}, // SKINCOLOR_GREY { 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31}, // SKINCOLOR_GREY
{ 12, 14, 16, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}, // SKINCOLOR_NICKEL { 3, 5, 8, 11, 15, 17, 19, 21, 23, 24, 25, 26, 27, 29, 30, 31}, // SKINCOLOR_NICKEL
{ 16, 17, 19, 21, 22, 24, 26, 27, 27, 28, 28, 29, 29, 30, 30, 31}, // SKINCOLOR_BLACK { 4, 7, 11, 15, 20, 22, 24, 27, 28, 28, 28, 29, 29, 30, 30, 31}, // SKINCOLOR_BLACK
{ 0, 1, 3, 5, 7, 9, 34, 36, 38, 40, 42, 44, 60, 61, 62, 63}, // SKINCOLOR_SEPIA { 0, 1, 3, 5, 7, 9, 34, 36, 38, 40, 42, 44, 60, 61, 62, 63}, // SKINCOLOR_SEPIA
{ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47}, // SKINCOLOR_BEIGE {120, 65, 67, 69, 32, 34, 36, 38, 40, 42, 44, 45, 46, 47, 62, 63}, // SKINCOLOR_BEIGE
{ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63}, // SKINCOLOR_BROWN { 67, 70, 73, 76, 48, 49, 51, 53, 54, 56, 58, 59, 61, 63, 29, 30}, // SKINCOLOR_BROWN
{ 51, 52, 53, 55, 56, 57, 58, 60, 61, 63, 28, 28, 29, 29, 30, 31}, // SKINCOLOR_LEATHER { 72, 76, 48, 51, 53, 55, 57, 59, 61, 63, 28, 28, 29, 29, 30, 31}, // SKINCOLOR_LEATHER
{120, 120, 120, 121, 121, 122, 122, 123, 124, 125, 126, 128, 129, 131, 133, 135}, // SKINCOLOR_SALMON {120, 120, 120, 121, 121, 122, 123, 124, 126, 127, 129, 131, 133, 135, 137, 139}, // SKINCOLOR_SALMON
{120, 121, 121, 122, 144, 145, 146, 147, 148, 149, 150, 151, 134, 136, 138, 140}, // SKINCOLOR_PINK {120, 121, 121, 122, 144, 145, 146, 147, 148, 149, 150, 151, 134, 136, 138, 140}, // SKINCOLOR_PINK
{144, 145, 146, 147, 148, 149, 150, 151, 134, 135, 136, 137, 138, 139, 140, 141}, // SKINCOLOR_ROSE {144, 145, 146, 147, 148, 149, 150, 151, 134, 135, 136, 137, 138, 139, 140, 141}, // SKINCOLOR_ROSE
{121, 122, 145, 146, 147, 149, 131, 132, 133, 134, 135, 197, 197, 198, 199, 255}, // SKINCOLOR_RUBY {120, 121, 144, 145, 147, 149, 132, 133, 134, 136, 198, 198, 199, 255, 30, 31}, // SKINCOLOR_RUBY
{120, 121, 122, 123, 124, 125, 126, 127, 128, 130, 131, 133, 134, 136, 137, 139}, // SKINCOLOR_RASPBERRY {120, 121, 122, 123, 124, 125, 126, 127, 128, 130, 131, 134, 136, 137, 139, 140}, // SKINCOLOR_RASPBERRY
{125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140}, // SKINCOLOR_RED {120, 65, 67, 69, 71, 124, 125, 127, 132, 133, 135, 136, 138, 139, 140, 141}, // SKINCOLOR_CHERRY
{130, 131, 132, 133, 134, 136, 137, 138, 139, 139, 140, 140, 141, 141, 142, 143}, // SKINCOLOR_CRIMSON {122, 123, 124, 126, 129, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142}, // SKINCOLOR_RED
{123, 125, 128, 131, 133, 135, 136, 138, 140, 140, 141, 141, 142, 142, 143, 31}, // SKINCOLOR_SCARLET
{123, 124, 126, 128, 132, 135, 137, 63, 28, 28, 28, 29, 29, 30, 30, 31}, // SKINCOLOR_CRIMSON
{ 99, 113, 113, 84, 85, 87, 126, 128, 130, 196, 197, 198, 199, 240, 243, 246}, // SKINCOLOR_NOVA
{104, 113, 113, 85, 86, 88, 128, 129, 131, 133, 134, 136, 138, 139, 141, 143}, // SKINCOLOR_KETCHUP {104, 113, 113, 85, 86, 88, 128, 129, 131, 133, 134, 136, 138, 139, 141, 143}, // SKINCOLOR_KETCHUP
{120, 121, 122, 123, 124, 147, 147, 148, 90, 91, 92, 93, 94, 95, 152, 154}, // SKINCOLOR_DAWN {120, 121, 122, 123, 124, 147, 147, 148, 90, 91, 92, 93, 94, 95, 152, 154}, // SKINCOLOR_DAWN
{120, 120, 80, 80, 81, 82, 83, 83, 84, 85, 86, 88, 89, 91, 93, 95}, // SKINCOLOR_CREAMSICLE {120, 120, 80, 80, 81, 82, 83, 83, 84, 85, 86, 88, 89, 91, 93, 95}, // SKINCOLOR_CREAMSICLE
{ 80, 81, 82, 83, 84, 85, 86, 88, 89, 91, 94, 95, 154, 156, 158, 159}, // SKINCOLOR_ORANGE { 80, 81, 82, 83, 84, 85, 86, 88, 89, 91, 94, 95, 154, 156, 158, 159}, // SKINCOLOR_ORANGE
{ 84, 85, 86, 87, 88, 90, 92, 93, 94, 95, 152, 153, 154, 156, 157, 159}, // SKINCOLOR_PUMPKIN { 82, 83, 84, 85, 87, 89, 90, 92, 94, 152, 153, 155, 157, 159, 141, 142}, // SKINCOLOR_PUMPKIN
{ 90, 91, 92, 93, 94, 152, 153, 154, 155, 156, 157, 158, 159, 139, 141, 143}, // SKINCOLOR_ROSEWOOD { 83, 85, 88, 90, 92, 94, 152, 153, 154, 156, 157, 159, 140, 141, 142, 143}, // SKINCOLOR_ROSEWOOD
{ 94, 95, 152, 153, 154, 156, 157, 159, 141, 141, 141, 142, 142, 143, 143, 31}, // SKINCOLOR_BURGUNDY { 84, 86, 89, 91, 152, 154, 155, 157, 158, 159, 140, 141, 142, 143, 31, 31}, // SKINCOLOR_BURGUNDY
{ 98, 98, 112, 112, 113, 113, 84, 85, 87, 89, 91, 93, 95, 153, 156, 159}, // SKINCOLOR_TANGERINE { 98, 98, 112, 112, 113, 113, 84, 85, 87, 89, 91, 93, 95, 153, 156, 159}, // SKINCOLOR_TANGERINE
{ 64, 65, 67, 68, 70, 71, 73, 74, 76, 77, 79, 48, 50, 53, 56, 59}, // SKINCOLOR_PEACH {120, 80, 66, 70, 72, 76, 148, 149, 150, 151, 153, 154, 156, 61, 62, 63}, // SKINCOLOR_PEACH
{ 64, 66, 68, 70, 72, 74, 76, 78, 48, 50, 52, 54, 56, 58, 60, 62}, // SKINCOLOR_CARAMEL { 64, 66, 68, 70, 72, 74, 76, 78, 48, 50, 52, 54, 56, 58, 60, 62}, // SKINCOLOR_CARAMEL
{120, 120, 96, 96, 97, 82, 84, 77, 50, 54, 57, 59, 61, 63, 29, 31}, // SKINCOLOR_CREAM
{112, 112, 112, 113, 113, 114, 114, 115, 115, 116, 116, 117, 117, 118, 118, 119}, // SKINCOLOR_GOLD {112, 112, 112, 113, 113, 114, 114, 115, 115, 116, 116, 117, 117, 118, 118, 119}, // SKINCOLOR_GOLD
{112, 113, 114, 115, 116, 117, 118, 119, 156, 157, 158, 159, 141, 141, 142, 143}, // SKINCOLOR_BRONZE {112, 113, 114, 115, 116, 117, 118, 119, 156, 157, 158, 159, 141, 141, 142, 143}, // SKINCOLOR_BRONZE
{120, 99, 113, 114, 116, 117, 119, 61, 63, 28, 28, 29, 29, 30, 30, 31}, // SKINCOLOR_COPPER
{ 96, 97, 98, 100, 101, 102, 104, 113, 114, 115, 116, 117, 118, 119, 156, 159}, // SKINCOLOR_YELLOW { 96, 97, 98, 100, 101, 102, 104, 113, 114, 115, 116, 117, 118, 119, 156, 159}, // SKINCOLOR_YELLOW
{ 96, 98, 99, 112, 113, 114, 114, 106, 106, 107, 107, 108, 108, 109, 110, 111}, // SKINCOLOR_MUSTARD { 96, 98, 99, 112, 113, 114, 114, 106, 106, 107, 107, 108, 108, 109, 110, 111}, // SKINCOLOR_MUSTARD
{105, 105, 105, 106, 106, 107, 107, 108, 108, 109, 109, 110, 110, 111, 111, 31}, // SKINCOLOR_OLIVE {105, 105, 105, 106, 106, 107, 107, 108, 108, 109, 109, 110, 110, 111, 111, 31}, // SKINCOLOR_OLIVE
{121, 144, 145, 72, 73, 84, 114, 115, 107, 108, 109, 183, 223, 207, 30, 246}, // SKINCOLOR_VOMIT {121, 144, 145, 72, 73, 84, 114, 115, 107, 108, 109, 183, 223, 207, 30, 246}, // SKINCOLOR_VOMIT
{ 98, 99, 112, 101, 113, 114, 106, 179, 180, 180, 181, 182, 183, 173, 174, 175}, // SKINCOLOR_GARDEN { 98, 99, 112, 101, 113, 114, 106, 179, 180, 180, 181, 182, 183, 173, 174, 175}, // SKINCOLOR_GARDEN
{ 96, 97, 99, 100, 102, 104, 160, 162, 164, 166, 168, 171, 223, 223, 207, 31}, // SKINCOLOR_LIME { 96, 97, 99, 100, 102, 104, 160, 162, 164, 166, 168, 171, 223, 223, 207, 31}, // SKINCOLOR_LIME
{ 98, 104, 105, 105, 106, 167, 168, 169, 170, 171, 172, 173, 174, 175, 30, 31}, // SKINCOLOR_HANDHELD
{120, 120, 176, 176, 176, 177, 177, 178, 178, 179, 179, 180, 180, 181, 182, 183}, // SKINCOLOR_TEA {120, 120, 176, 176, 176, 177, 177, 178, 178, 179, 179, 180, 180, 181, 182, 183}, // SKINCOLOR_TEA
{120, 120, 176, 176, 177, 177, 178, 179, 165, 166, 167, 168, 169, 170, 171, 172}, // SKINCOLOR_PISTACHIO {120, 120, 176, 176, 177, 177, 178, 179, 165, 166, 167, 168, 169, 170, 171, 172}, // SKINCOLOR_PISTACHIO
{176, 176, 177, 178, 165, 166, 167, 167, 168, 169, 182, 182, 182, 183, 183, 183}, // SKINCOLOR_ROBOHOOD {120, 176, 178, 165, 167, 168, 169, 182, 182, 171, 171, 172, 173, 174, 175, 30}, // SKINCOLOR_ROBOHOOD
{178, 178, 178, 179, 179, 180, 181, 182, 183, 172, 172, 173, 173, 174, 174, 175}, // SKINCOLOR_MOSS {178, 178, 178, 179, 179, 180, 181, 182, 183, 172, 172, 173, 173, 174, 174, 175}, // SKINCOLOR_MOSS
{120, 176, 176, 176, 177, 163, 164, 165, 167, 221, 221, 222, 223, 207, 207, 31}, // SKINCOLOR_MINT {120, 176, 176, 176, 177, 163, 164, 165, 167, 221, 221, 222, 223, 207, 207, 31}, // SKINCOLOR_MINT
{160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175}, // SKINCOLOR_GREEN {160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175}, // SKINCOLOR_GREEN
{160, 161, 162, 164, 165, 167, 169, 170, 171, 171, 172, 173, 174, 175, 30, 31}, // SKINCOLOR_PINETREE {161, 163, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 30, 30, 31}, // SKINCOLOR_PINETREE
{160, 184, 184, 185, 185, 186, 186, 187, 187, 188, 188, 189, 189, 190, 191, 175}, // SKINCOLOR_EMERALD {160, 184, 184, 185, 185, 186, 186, 187, 187, 188, 188, 189, 189, 190, 191, 175}, // SKINCOLOR_EMERALD
{186, 187, 188, 188, 188, 189, 189, 190, 190, 191, 175, 175, 30, 30, 31, 31}, // SKINCOLOR_SWAMP {160, 184, 185, 186, 187, 188, 189, 190, 191, 191, 29, 29, 30, 30, 31, 31}, // SKINCOLOR_SWAMP
{120, 120, 80, 80, 81, 177, 162, 164, 228, 228, 204, 204, 205, 205, 206, 207}, // SKINCOLOR_DREAM {120, 120, 80, 80, 81, 177, 162, 164, 228, 228, 204, 204, 205, 205, 206, 207}, // SKINCOLOR_DREAM
{208, 209, 210, 211, 213, 220, 216, 167, 168, 188, 188, 189, 190, 191, 30, 31}, // SKINCOLOR_ALGAE
{120, 208, 208, 210, 212, 214, 220, 220, 220, 221, 221, 222, 222, 223, 223, 191}, // SKINCOLOR_AQUA {120, 208, 208, 210, 212, 214, 220, 220, 220, 221, 221, 222, 222, 223, 223, 191}, // SKINCOLOR_AQUA
{210, 213, 220, 220, 220, 216, 216, 221, 221, 221, 222, 222, 223, 223, 191, 31}, // SKINCOLOR_TEAL {210, 213, 220, 220, 220, 216, 216, 221, 221, 221, 222, 222, 223, 223, 191, 31}, // SKINCOLOR_TEAL
{120, 120, 208, 208, 209, 210, 211, 212, 213, 215, 216, 217, 218, 219, 222, 223}, // SKINCOLOR_CYAN {120, 120, 208, 208, 209, 210, 211, 212, 213, 215, 216, 217, 218, 219, 222, 223}, // SKINCOLOR_CYAN
@ -234,27 +261,65 @@ UINT8 colortranslations[MAXSKINCOLORS][16] = {
{120, 200, 200, 201, 201, 202, 202, 203, 203, 204, 204, 205, 205, 206, 207, 31}, // SKINCOLOR_STEEL {120, 200, 200, 201, 201, 202, 202, 203, 203, 204, 204, 205, 205, 206, 207, 31}, // SKINCOLOR_STEEL
{225, 226, 227, 228, 229, 205, 205, 206, 207, 207, 28, 28, 29, 29, 30, 31}, // SKINCOLOR_JET {225, 226, 227, 228, 229, 205, 205, 206, 207, 207, 28, 28, 29, 29, 30, 31}, // SKINCOLOR_JET
{208, 209, 211, 213, 215, 217, 229, 230, 232, 234, 236, 238, 240, 242, 244, 246}, // SKINCOLOR_SAPPHIRE {208, 209, 211, 213, 215, 217, 229, 230, 232, 234, 236, 238, 240, 242, 244, 246}, // SKINCOLOR_SAPPHIRE
{120, 224, 225, 226, 226, 227, 228, 228, 229, 230, 231, 234, 235, 237, 239, 241}, // SKINCOLOR_PERIWINKLE {120, 120, 224, 225, 226, 202, 227, 228, 229, 230, 231, 233, 235, 237, 239, 241}, // SKINCOLOR_PERIWINKLE
{224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239}, // SKINCOLOR_BLUE {224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 235, 236, 238, 242, 244, 246}, // SKINCOLOR_BLUE
{228, 229, 230, 231, 232, 233, 234, 235, 237, 238, 239, 240, 242, 243, 244, 245}, // SKINCOLOR_BLUEBERRY {226, 228, 229, 230, 232, 233, 235, 237, 239, 240, 242, 244, 246, 31, 31, 31}, // SKINCOLOR_BLUEBERRY
{192, 192, 248, 249, 250, 251, 204, 204, 205, 205, 206, 206, 207, 29, 30, 31}, // SKINCOLOR_DUSK {120, 208, 209, 210, 211, 226, 202, 249, 194, 195, 196, 197, 198, 199, 255, 30}, // SKINCOLOR_PASTEL
{192, 192, 192, 193, 193, 194, 194, 195, 195, 196, 196, 197, 197, 198, 198, 199}, // SKINCOLOR_PURPLE {121, 145, 192, 249, 250, 251, 204, 204, 205, 205, 206, 206, 207, 29, 30, 31}, // SKINCOLOR_DUSK
{248, 248, 248, 249, 249, 250, 250, 251, 251, 252, 252, 253, 253, 254, 254, 255}, // SKINCOLOR_LAVENDER {121, 145, 192, 192, 193, 194, 195, 196, 196, 197, 197, 198, 198, 199, 30, 31}, // SKINCOLOR_PURPLE
{192, 248, 249, 250, 251, 252, 253, 254, 255, 255, 29, 29, 30, 30, 31, 31}, // SKINCOLOR_BYZANTIUM {120, 122, 124, 125, 126, 150, 196, 197, 198, 198, 199, 199, 240, 242, 244, 246}, // SKINCOLOR_FUCHSIA
{120, 120, 176, 176, 177, 6, 8, 10, 249, 250, 196, 197, 198, 199, 143, 31}, // SKINCOLOR_TOXIC
{121, 145, 192, 248, 249, 250, 251, 252, 252, 253, 253, 254, 254, 255, 30, 31}, // SKINCOLOR_LAVENDER
{144, 248, 249, 250, 251, 252, 253, 254, 255, 255, 29, 29, 30, 30, 31, 31}, // SKINCOLOR_BYZANTIUM
{144, 145, 146, 147, 148, 149, 150, 251, 251, 252, 252, 253, 254, 255, 29, 30}, // SKINCOLOR_POMEGRANATE {144, 145, 146, 147, 148, 149, 150, 251, 251, 252, 252, 253, 254, 255, 29, 30}, // SKINCOLOR_POMEGRANATE
{120, 120, 120, 121, 121, 122, 122, 123, 192, 248, 249, 250, 251, 252, 253, 254}, // SKINCOLOR_LILAC {120, 120, 120, 121, 121, 122, 122, 123, 192, 248, 249, 250, 251, 252, 253, 254}, // SKINCOLOR_LILAC
/* Removed Colours // MAXSKINCOLORS
{120, 121, 123, 124, 126, 127, 129, 130, 132, 133, 135, 136, 138, 139, 141, 143}, // old SKINCOLOR_RUBY, removed for other colors {120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 96, 100, 104, 113, 116, 119}, // SKINCOLOR_SUPER1
{224, 225, 226, 228, 229, 231, 232, 234, 235, 237, 238, 240, 241, 243, 244, 246}, // old SKINCOLOR_SAPPHIRE, removed for other colors {120, 120, 120, 120, 120, 120, 120, 120, 96, 98, 101, 104, 113, 115, 117, 119}, // SKINCOLOR_SUPER2
{ 72, 73, 74, 75, 76, 77, 78, 79, 48, 49, 50, 51, 52, 53, 54, 55}, // old SKINCOLOR_CARAMEL, new Caramel was previously Shiny Caramel {120, 120, 120, 120, 120, 120, 96, 98, 100, 102, 104, 113, 114, 116, 117, 119}, // SKINCOLOR_SUPER3
{215, 216, 217, 218, 204, 205, 206, 237, 238, 239, 240, 241, 242, 243, 244, 245}, // old SKINCOLOR_NAVY, too similar to Jet {120, 120, 120, 120, 96, 97, 99, 100, 102, 104, 113, 114, 115, 116, 117, 119}, // SKINCOLOR_SUPER4
{ 80, 81, 83, 85, 86, 88, 90, 91, 93, 95, 152, 153, 154, 156, 157, 159}, // SKINCOLOR_AMBER, removed for other colors {120, 120, 96, 120, 120, 120, 120, 120, 104, 113, 114, 115, 116, 117, 118, 119}, // SKINCOLOR_SUPER5
{160, 160, 160, 184, 184, 184, 185, 185, 185, 186, 187, 187, 188, 188, 189, 190}, // SKINCOLOR_JADE, removed for other colors {120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 80, 82, 85, 115, 117, 119}, // SKINCOLOR_TSUPER1
{224, 225, 226, 212, 213, 213, 214, 215, 220, 221, 172, 222, 173, 223, 174, 175}, // SKINCOLOR_FROST, merged into Aqua {120, 120, 120, 120, 120, 120, 120, 120, 80, 81, 83, 85, 115, 116, 117, 119}, // SKINCOLOR_TSUPER2
{ 96, 97, 99, 100, 102, 104, 105, 105, 106, 107, 107, 108, 109, 109, 110, 111}, // SKINCOLOR_CANARY, replaced with Mustard {120, 120, 120, 120, 120, 120, 80, 81, 82, 83, 85, 115, 116, 117, 118, 119}, // SKINCOLOR_TSUPER3
{192, 193, 194, 195, 196, 197, 198, 199, 255, 255, 29, 29, 30, 30, 31, 31}, // SKINCOLOR_INDIGO, too similar to Byzantium {120, 120, 120, 120, 80, 81, 82, 83, 84, 85, 115, 115, 116, 117, 118, 119}, // SKINCOLOR_TSUPER4
{ 1, 145, 125, 73, 83, 114, 106, 180, 187, 168, 219, 205, 236, 206, 199, 255}, // SKINCOLOR_RAINBOW, is Vomit 2.0 {120, 120, 80, 80, 81, 82, 83, 84, 85, 115, 115, 116, 117, 117, 118, 119}, // SKINCOLOR_TSUPER5
*/ {120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 121, 123, 125, 127, 129, 132}, // SKINCOLOR_KSUPER1
{120, 120, 120, 120, 120, 120, 120, 120, 121, 122, 124, 125, 127, 128, 130, 132}, // SKINCOLOR_KSUPER2
{120, 120, 120, 120, 120, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 132}, // SKINCOLOR_KSUPER3
{120, 120, 120, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132}, // SKINCOLOR_KSUPER4
{120, 120, 121, 121, 122, 123, 124, 125, 126, 126, 127, 128, 129, 130, 131, 132}, // SKINCOLOR_KSUPER5
{120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 0, 122, 124, 248, 251, 255}, // SKINCOLOR_PSUPER1
{120, 120, 120, 120, 120, 120, 120, 120, 0, 121, 122, 124, 248, 250, 252, 255}, // SKINCOLOR_PSUPER2
{120, 120, 120, 120, 120, 120, 0, 121, 122, 123, 124, 248, 249, 251, 253, 255}, // SKINCOLOR_PSUPER3
{120, 120, 120, 120, 0, 121, 122, 123, 124, 248, 249, 250, 251, 252, 253, 255}, // SKINCOLOR_PSUPER4
{120, 120, 0, 121, 122, 123, 124, 248, 248, 249, 250, 251, 252, 253, 254, 255}, // SKINCOLOR_PSUPER5
{120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 224, 225, 227, 228, 230, 232}, // SKINCOLOR_BSUPER1
{120, 120, 120, 120, 120, 120, 120, 120, 224, 225, 226, 227, 228, 229, 230, 232}, // SKINCOLOR_BSUPER2
{120, 120, 120, 120, 120, 120, 224, 224, 225, 226, 227, 228, 229, 230, 231, 232}, // SKINCOLOR_BSUPER3
{120, 120, 120, 120, 224, 224, 225, 226, 226, 227, 228, 229, 229, 230, 231, 232}, // SKINCOLOR_BSUPER4
{120, 120, 224, 224, 225, 225, 226, 227, 227, 228, 228, 229, 230, 230, 231, 232}, // SKINCOLOR_BSUPER5
{120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 176, 160, 163, 167, 171, 175}, // SKINCOLOR_GSUPER1
{120, 120, 120, 120, 120, 120, 120, 120, 176, 176, 160, 163, 166, 169, 172, 175}, // SKINCOLOR_GSUPER2
{120, 120, 120, 120, 120, 120, 176, 176, 160, 162, 164, 166, 168, 170, 172, 175}, // SKINCOLOR_GSUPER3
{120, 120, 120, 120, 176, 176, 176, 160, 161, 163, 165, 167, 169, 171, 173, 175}, // SKINCOLOR_GSUPER4
{120, 120, 176, 176, 176, 160, 161, 163, 164, 166, 167, 169, 170, 172, 173, 175}, // SKINCOLOR_GSUPER5
{120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120}, // SKINCOLOR_WSUPER1
{120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 0, 4, 9}, // SKINCOLOR_WSUPER2
{120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 0, 2, 4, 6, 8, 11}, // SKINCOLOR_WSUPER3
{120, 120, 120, 120, 120, 120, 120, 0, 1, 3, 4, 6, 8, 9, 11, 13}, // SKINCOLOR_WSUPER4
{120, 120, 120, 120, 0, 1, 2, 4, 5, 6, 8, 9, 10, 12, 13, 15}, // SKINCOLOR_WSUPER5
{120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 96, 98, 99, 81, 73, 79}, // SKINCOLOR_CSUPER1
{120, 120, 120, 120, 120, 120, 120, 120, 96, 97, 98, 81, 81, 71, 75, 79}, // SKINCOLOR_CSUPER2
{120, 120, 120, 120, 120, 120, 96, 97, 98, 99, 81, 81, 70, 73, 76, 79}, // SKINCOLOR_CSUPER3
{120, 120, 120, 120, 96, 96, 97, 98, 99, 81, 81, 70, 72, 74, 76, 79}, // SKINCOLOR_CSUPER4
{120, 120, 96, 96, 97, 98, 98, 99, 81, 81, 69, 71, 73, 75, 77, 79}, // SKINCOLOR_CSUPER5
{120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 208, 210, 212, 215, 220, 222}, // SKINCOLOR_ASUPER1
{120, 120, 120, 120, 120, 120, 120, 120, 208, 209, 211, 213, 215, 220, 221, 223}, // SKINCOLOR_ASUPER2
{120, 120, 120, 120, 120, 120, 208, 209, 210, 211, 212, 213, 215, 220, 221, 223}, // SKINCOLOR_ASUPER3
{120, 120, 120, 120, 208, 209, 210, 211, 212, 213, 214, 215, 220, 221, 222, 223}, // SKINCOLOR_ASUPER4
{120, 120, 208, 208, 209, 210, 211, 211, 212, 213, 214, 215, 220, 221, 222, 223}, // SKINCOLOR_ASUPER5
// MAXTRANSLATIONS
}; };
// Define for getting accurate color brightness readings according to how the human eye sees them. // Define for getting accurate color brightness readings according to how the human eye sees them.
@ -443,6 +508,7 @@ void K_RegisterKartStuff(void)
CV_RegisterVar(&cv_kartdebugcheckpoint); CV_RegisterVar(&cv_kartdebugcheckpoint);
CV_RegisterVar(&cv_kartdebugnodes); CV_RegisterVar(&cv_kartdebugnodes);
CV_RegisterVar(&cv_kartdebugcolorize);
} }
//} //}
@ -1138,10 +1204,11 @@ void K_KartBouncing(mobj_t *mobj1, mobj_t *mobj2, boolean bounce, boolean solid)
return; return;
{ // Normalize distance to the sum of the two objects' radii, since in a perfect world that would be the distance at the point of collision... { // Normalize distance to the sum of the two objects' radii, since in a perfect world that would be the distance at the point of collision...
fixed_t dist = P_AproxDistance(distx, disty) ?: 1; fixed_t dist = P_AproxDistance(distx, disty);
fixed_t nx = FixedDiv(distx, dist); fixed_t nx = FixedDiv(distx, dist);
fixed_t ny = FixedDiv(disty, dist); fixed_t ny = FixedDiv(disty, dist);
dist = dist ? dist : 1;
distx = FixedMul(mobj1->radius+mobj2->radius, nx); distx = FixedMul(mobj1->radius+mobj2->radius, nx);
disty = FixedMul(mobj1->radius+mobj2->radius, ny); disty = FixedMul(mobj1->radius+mobj2->radius, ny);
@ -4324,7 +4391,7 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
else else
{ {
player->mo->colorized = true; player->mo->colorized = true;
player->mo->color = SKINCOLOR_CRIMSON; player->mo->color = SKINCOLOR_SCARLET;
} }
} }
else if (player->kartstuff[k_invincibilitytimer]) // setting players to use the star colormap and spawning afterimages else if (player->kartstuff[k_invincibilitytimer]) // setting players to use the star colormap and spawning afterimages
@ -8719,6 +8786,25 @@ void K_drawKartHUD(void)
for (p = 0; p < MAXPLAYERS; p++) for (p = 0; p < MAXPLAYERS; p++)
V_DrawString(8, 64+(8*p), V_YELLOWMAP, va("%d - %d (%dl)", p, playernode[p], players[p].cmd.latency)); V_DrawString(8, 64+(8*p), V_YELLOWMAP, va("%d - %d (%dl)", p, playernode[p], players[p].cmd.latency));
} }
if (cv_kartdebugcolorize.value && stplyr->mo && stplyr->mo->skin)
{
INT32 x = 0, y = 0;
UINT8 c;
for (c = 1; c < MAXSKINCOLORS; c++)
{
UINT8 *cm = R_GetTranslationColormap(TC_RAINBOW, c, 0);
V_DrawFixedPatch(x<<FRACBITS, y<<FRACBITS, FRACUNIT, 0, facewantprefix[stplyr->skin], cm);
x += 30;
if (x > BASEVIDWIDTH-30)
{
x = 0;
y += 30;
}
}
}
} }
//} //}

View file

@ -11,7 +11,7 @@
#define KART_FULLTURN 800 #define KART_FULLTURN 800
UINT8 colortranslations[MAXSKINCOLORS][16]; UINT8 colortranslations[MAXTRANSLATIONS][16];
extern const char *KartColor_Names[MAXSKINCOLORS]; extern const char *KartColor_Names[MAXSKINCOLORS];
extern const UINT8 KartColor_Opposite[MAXSKINCOLORS*2]; extern const UINT8 KartColor_Opposite[MAXSKINCOLORS*2];
void K_RainbowColormap(UINT8 *dest_colormap, UINT8 skincolor); void K_RainbowColormap(UINT8 *dest_colormap, UINT8 skincolor);

View file

@ -6662,7 +6662,7 @@ static void P_MovePlayer(player_t *player)
//CONS_Printf("leftover turn (%s): %5d or %4d%%\n", //CONS_Printf("leftover turn (%s): %5d or %4d%%\n",
// player_names[player-players], // player_names[player-players],
// (INT16) (cmd->angleturn - (player->mo->angle>>16)), // (INT16) (cmd->angleturn - (player->mo->angle>>16)),
// (INT16) (cmd->angleturn - (player->mo->angle>>16)) * 100 / (angle_diff ?: 1)); // (INT16) (cmd->angleturn - (player->mo->angle>>16)) * 100 / (angle_diff ? angle_diff : 1));
} }
} }

View file

@ -1314,7 +1314,8 @@ static void R_ProjectSprite(mobj_t *thing)
if (max(tz, tz2) < FixedMul(MINZ, this_scale)) // non-papersprite clipping is handled earlier if (max(tz, tz2) < FixedMul(MINZ, this_scale)) // non-papersprite clipping is handled earlier
return; return;
scalestep = (yscale2 - yscale)/(x2 - x1) ?: 1; scalestep = (yscale2 - yscale)/(x2 - x1);
scalestep = scalestep ? scalestep : 1;
// The following two are alternate sorting methods which might be more applicable in some circumstances. TODO - maybe enable via MF2? // The following two are alternate sorting methods which might be more applicable in some circumstances. TODO - maybe enable via MF2?
// sortscale = max(yscale, yscale2); // sortscale = max(yscale, yscale2);

View file

@ -2974,8 +2974,8 @@ static void I_ShutdownTimer(void)
// //
tic_t I_GetTime (void) tic_t I_GetTime (void)
{ {
static Uint32 basetime = 0; static Uint64 basetime = 0;
Uint32 ticks = SDL_GetTicks(); Uint64 ticks = SDL_GetTicks();
if (!basetime) if (!basetime)
basetime = ticks; basetime = ticks;

BIN
src/sdl/srb2icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3 KiB

View file

@ -186,16 +186,16 @@ FILE *W_OpenWadFile(const char **filename, boolean useerrors)
static inline void W_LoadDehackedLumpsPK3(UINT16 wadnum) static inline void W_LoadDehackedLumpsPK3(UINT16 wadnum)
{ {
UINT16 posStart, posEnd; UINT16 posStart, posEnd;
#ifdef HAVE_BLUA
posStart = W_CheckNumForFolderStartPK3("Lua/", wadnum, 0); posStart = W_CheckNumForFolderStartPK3("Lua/", wadnum, 0);
if (posStart != INT16_MAX) if (posStart != INT16_MAX)
{ {
posEnd = W_CheckNumForFolderEndPK3("Lua/", wadnum, posStart); posEnd = W_CheckNumForFolderEndPK3("Lua/", wadnum, posStart);
posStart++; posStart++;
#ifdef HAVE_BLUA
for (; posStart < posEnd; posStart++) for (; posStart < posEnd; posStart++)
LUA_LoadLump(wadnum, posStart); LUA_LoadLump(wadnum, posStart);
#endif
} }
#endif
posStart = W_CheckNumForFolderStartPK3("SOC/", wadnum, 0); posStart = W_CheckNumForFolderStartPK3("SOC/", wadnum, 0);
if (posStart != INT16_MAX) 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); CONS_Printf(M_GetText("Loading SOC from %s\n"), wadfile->filename);
DEH_LoadDehackedLumpPwad(numwadfiles - 1, 0); DEH_LoadDehackedLumpPwad(numwadfiles - 1, 0);
break; break;
case RET_LUA:
#ifdef HAVE_BLUA #ifdef HAVE_BLUA
case RET_LUA:
LUA_LoadLump(numwadfiles - 1, 0); LUA_LoadLump(numwadfiles - 1, 0);
#endif
break; break;
#endif
default: default:
break; break;
} }