diff --git a/src/events.cpp b/src/events.cpp index 7ef72b0db..17fc30bea 100755 --- a/src/events.cpp +++ b/src/events.cpp @@ -174,8 +174,9 @@ bool E_CheckHandler(DStaticEventHandler* handler) bool E_IsStaticType(PClass* type) { - return (type->IsDescendantOf(RUNTIME_CLASS(DStaticEventHandler)) && // make sure it's from our hierarchy at all. - !type->IsDescendantOf(RUNTIME_CLASS(DEventHandler))); + assert(type != nullptr); + assert(type->IsDescendantOf(RUNTIME_CLASS(DStaticEventHandler))); + return !type->IsDescendantOf(RUNTIME_CLASS(DEventHandler)); } void E_SerializeEvents(FSerializer& arc) @@ -230,27 +231,24 @@ void E_SerializeEvents(FSerializer& arc) } } -static void E_InitStaticHandler(PClass* type, FString typestring, bool map) +static PClass* E_GetHandlerClass(const FString& typeName) { + PClass* type = PClass::FindClass(typeName); + if (type == nullptr) { - I_Error("Fatal: unknown event handler class %s in MAPINFO!\n", typestring.GetChars()); - return; - + I_Error("Fatal: unknown event handler class %s", typeName.GetChars()); + } + else if (!type->IsDescendantOf(RUNTIME_CLASS(DStaticEventHandler))) + { + I_Error("Fatal: event handler class %s is not derived from StaticEventHandler", typeName.GetChars()); } - if (E_IsStaticType(type) && map) - { - I_Error("Fatal: invalid event handler class %s in MAPINFO!\nMap-specific event handlers cannot be static.\n", typestring.GetChars()); - return; - } - /* - if (!E_IsStaticType(type) && !map) - { - Printf("%cGWarning: invalid event handler class %s in MAPINFO!\nMAPINFO event handlers should inherit Static* directly!\n", TEXTCOLOR_ESCAPE, typestring.GetChars()); - return; - }*/ + return type; +} +static void E_InitHandler(PClass* type) +{ // check if type already exists, don't add twice. bool typeExists = false; for (DStaticEventHandler* handler = E_FirstEventHandler; handler; handler = handler->next) @@ -269,41 +267,34 @@ static void E_InitStaticHandler(PClass* type, FString typestring, bool map) void E_InitStaticHandlers(bool map) { + // don't initialize map handlers if restoring from savegame. if (savegamerestore) return; // just make sure E_Shutdown(map); - if (map) // don't initialize map handlers if restoring from savegame. + // initialize event handlers from gameinfo + for (const FString& typeName : gameinfo.EventHandlers) { - // load non-static handlers from gameinfo - for (unsigned int i = 0; i < gameinfo.EventHandlers.Size(); i++) - { - FString typestring = gameinfo.EventHandlers[i]; - PClass* type = PClass::FindClass(typestring); - if (!type || E_IsStaticType(type)) // don't init the really global stuff here. - continue; - E_InitStaticHandler(type, typestring, false); - } - - for (unsigned int i = 0; i < level.info->EventHandlers.Size(); i++) - { - FString typestring = level.info->EventHandlers[i]; - PClass* type = PClass::FindClass(typestring); - E_InitStaticHandler(type, typestring, true); - } + PClass* type = E_GetHandlerClass(typeName); + // don't init the really global stuff here on startup initialization. + // don't init map-local global stuff here on level setup. + if (map == E_IsStaticType(type)) + continue; + E_InitHandler(type); } - else + + if (!map) + return; + + // initialize event handlers from mapinfo + for (const FString& typeName : level.info->EventHandlers) { - for (unsigned int i = 0; i < gameinfo.EventHandlers.Size(); i++) - { - FString typestring = gameinfo.EventHandlers[i]; - PClass* type = PClass::FindClass(typestring); - if (!type || !E_IsStaticType(type)) // don't init map-local global stuff here. - continue; - E_InitStaticHandler(type, typestring, false); - } + PClass* type = E_GetHandlerClass(typeName); + if (E_IsStaticType(type)) + I_Error("Fatal: invalid event handler class %s in MAPINFO!\nMap-specific event handlers cannot be static.\n", typeName.GetChars()); + E_InitHandler(type); } } diff --git a/src/menu/menudef.cpp b/src/menu/menudef.cpp index 67d9d0a9f..840c0fce2 100644 --- a/src/menu/menudef.cpp +++ b/src/menu/menudef.cpp @@ -1429,11 +1429,11 @@ static void InitMusicMenus() if (menu != nullptr) { - if (soundfonts.Size() > 0) + int adl_banks_count = adl_getBanksCount(); + if (adl_banks_count > 0) { - int adl_banks_count = adl_getBanksCount(); const char *const *adl_bank_names = adl_getBankNames(); - for(int i=0; i < adl_banks_count; i++) + for (int i=0; i < adl_banks_count; i++) { auto it = CreateOptionMenuItemCommand(adl_bank_names[i], FStringf("adl_bank %d", i), true); static_cast(*menu)->mItems.Push(it); diff --git a/src/p_map.cpp b/src/p_map.cpp index 50397d852..e9ba84132 100644 --- a/src/p_map.cpp +++ b/src/p_map.cpp @@ -4888,8 +4888,8 @@ bool P_LineTrace(AActor *t1, DAngle angle, double distance, ActorFlags aflags = (flags & TRF_ALLACTORS) ? ActorFlags::FromInt(0xFFFFFFFF) : MF_SHOOTABLE; int lflags = 0; - if ( !(lflags & TRF_THRUBLOCK) ) lflags |= ML_BLOCKEVERYTHING; - if ( !(lflags & TRF_THRUHITSCAN) ) lflags |= ML_BLOCKHITSCAN; + if ( !(flags & TRF_THRUBLOCK) ) lflags |= ML_BLOCKEVERYTHING; + if ( !(flags & TRF_THRUHITSCAN) ) lflags |= ML_BLOCKHITSCAN; int tflags = TRACE_ReportPortals; if ( flags & TRF_NOSKY ) tflags |= TRACE_NoSky; diff --git a/src/p_pspr.cpp b/src/p_pspr.cpp index 45e92a8d0..c419f2228 100644 --- a/src/p_pspr.cpp +++ b/src/p_pspr.cpp @@ -153,10 +153,13 @@ DPSprite::DPSprite(player_t *owner, AActor *caller, int id) : x(.0), y(.0), oldx(.0), oldy(.0), firstTic(true), + Tics(0), Flags(0), Caller(caller), Owner(owner), + State(nullptr), Sprite(0), + Frame(0), ID(id), processPending(true) { diff --git a/src/polyrenderer/scene/poly_playersprite.cpp b/src/polyrenderer/scene/poly_playersprite.cpp index 747f17e9a..6bf47f6cb 100644 --- a/src/polyrenderer/scene/poly_playersprite.cpp +++ b/src/polyrenderer/scene/poly_playersprite.cpp @@ -356,7 +356,8 @@ void RenderPolyPlayerSprites::RenderSprite(PolyRenderThread *thread, DPSprite *p invertcolormap = !invertcolormap; } - bool fullbright = !foggy && pspr->GetState()->GetFullbright(); + const FState* const psprState = pspr->GetState(); + bool fullbright = !foggy && (psprState == nullptr ? false : psprState->GetFullbright()); bool fadeToBlack = (vis.RenderStyle.Flags & STYLEF_FadeToBlack) != 0; vis.Light.SetColormap(0, spriteshade, basecolormap, fullbright, invertcolormap, fadeToBlack); diff --git a/src/posix/cocoa/i_video.mm b/src/posix/cocoa/i_video.mm index b14461434..e4bd70566 100644 --- a/src/posix/cocoa/i_video.mm +++ b/src/posix/cocoa/i_video.mm @@ -55,6 +55,7 @@ #include "v_text.h" #include "v_video.h" #include "version.h" +#include "videomodes.h" #include "gl/system/gl_system.h" #include "gl/data/gl_vertexbuffer.h" @@ -346,80 +347,6 @@ extern id appCtrl; namespace { -const struct -{ - uint16_t width; - uint16_t height; -} -VideoModes[] = -{ - { 320, 200 }, - { 320, 240 }, - { 400, 225 }, // 16:9 - { 400, 300 }, - { 480, 270 }, // 16:9 - { 480, 360 }, - { 512, 288 }, // 16:9 - { 512, 384 }, - { 640, 360 }, // 16:9 - { 640, 400 }, - { 640, 480 }, - { 720, 480 }, // 16:10 - { 720, 540 }, - { 800, 450 }, // 16:9 - { 800, 480 }, - { 800, 500 }, // 16:10 - { 800, 600 }, - { 848, 480 }, // 16:9 - { 960, 600 }, // 16:10 - { 960, 720 }, - { 1024, 576 }, // 16:9 - { 1024, 600 }, // 17:10 - { 1024, 640 }, // 16:10 - { 1024, 768 }, - { 1088, 612 }, // 16:9 - { 1152, 648 }, // 16:9 - { 1152, 720 }, // 16:10 - { 1152, 864 }, - { 1280, 540 }, // 21:9 - { 1280, 720 }, // 16:9 - { 1280, 854 }, - { 1280, 800 }, // 16:10 - { 1280, 960 }, - { 1280, 1024 }, // 5:4 - { 1360, 768 }, // 16:9 - { 1366, 768 }, - { 1400, 787 }, // 16:9 - { 1400, 875 }, // 16:10 - { 1400, 1050 }, - { 1440, 900 }, - { 1440, 960 }, - { 1440, 1080 }, - { 1600, 900 }, // 16:9 - { 1600, 1000 }, // 16:10 - { 1600, 1200 }, - { 1680, 1050 }, // 16:10 - { 1920, 1080 }, - { 1920, 1200 }, - { 2048, 1152 }, // 16:9, iMac Retina 4K 21.5", HiDPI off - { 2048, 1536 }, - { 2304, 1440 }, // 16:10, MacBook Retina 12" - { 2560, 1080 }, // 21:9 - { 2560, 1440 }, - { 2560, 1600 }, - { 2560, 2048 }, - { 2880, 1800 }, // 16:10, MacBook Pro Retina 15" - { 3200, 1800 }, - { 3440, 1440 }, // 21:9 - { 3840, 2160 }, - { 3840, 2400 }, - { 4096, 2160 }, - { 4096, 2304 }, // 16:9, iMac Retina 4K 21.5" - { 5120, 2160 }, // 21:9 - { 5120, 2880 } // 16:9, iMac Retina 5K 27" -}; - - extern cycle_t BlitCycles; cycle_t FlipCycles; @@ -601,7 +528,7 @@ DFrameBuffer* CocoaVideo::CreateFrameBuffer(const int width, const int height, c else { fb = CreateGLSWFrameBuffer(width, height, bgra, fullscreen); - } + } fb->SetFlash(flashColor, flashAmount); diff --git a/src/posix/sdl/sdlglvideo.cpp b/src/posix/sdl/sdlglvideo.cpp index 2df9d88e9..462598500 100644 --- a/src/posix/sdl/sdlglvideo.cpp +++ b/src/posix/sdl/sdlglvideo.cpp @@ -45,6 +45,7 @@ #include "version.h" #include "c_console.h" +#include "videomodes.h" #include "sdlglvideo.h" #include "gl/system/gl_system.h" #include "r_defs.h" @@ -62,11 +63,6 @@ // TYPES ------------------------------------------------------------------- -struct MiniModeInfo -{ - uint16_t Width, Height; -}; - // PUBLIC FUNCTION PROTOTYPES ---------------------------------------------- // PRIVATE FUNCTION PROTOTYPES --------------------------------------------- @@ -105,67 +101,6 @@ CUSTOM_CVAR(Bool, gl_es, false, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOINITCA // PRIVATE DATA DEFINITIONS ------------------------------------------------ -// Dummy screen sizes to pass when windowed -static MiniModeInfo WinModes[] = -{ - { 320, 200 }, - { 320, 240 }, - { 400, 225 }, // 16:9 - { 400, 300 }, - { 480, 270 }, // 16:9 - { 480, 360 }, - { 512, 288 }, // 16:9 - { 512, 384 }, - { 640, 360 }, // 16:9 - { 640, 400 }, - { 640, 480 }, - { 720, 480 }, // 16:10 - { 720, 540 }, - { 800, 450 }, // 16:9 - { 800, 480 }, - { 800, 500 }, // 16:10 - { 800, 600 }, - { 848, 480 }, // 16:9 - { 960, 600 }, // 16:10 - { 960, 720 }, - { 1024, 576 }, // 16:9 - { 1024, 600 }, // 17:10 - { 1024, 640 }, // 16:10 - { 1024, 768 }, - { 1088, 612 }, // 16:9 - { 1152, 648 }, // 16:9 - { 1152, 720 }, // 16:10 - { 1152, 864 }, - { 1280, 720 }, // 16:9 - { 1280, 854 }, - { 1280, 800 }, // 16:10 - { 1280, 960 }, - { 1280, 1024 }, // 5:4 - { 1360, 768 }, // 16:9 - { 1366, 768 }, - { 1400, 787 }, // 16:9 - { 1400, 875 }, // 16:10 - { 1400, 1050 }, - { 1440, 900 }, - { 1440, 960 }, - { 1440, 1080 }, - { 1600, 900 }, // 16:9 - { 1600, 1000 }, // 16:10 - { 1600, 1200 }, - { 1920, 1080 }, - { 1920, 1200 }, - { 2048, 1536 }, - { 2560, 1440 }, - { 2560, 1600 }, - { 2560, 2048 }, - { 2880, 1800 }, - { 3200, 1800 }, - { 3840, 2160 }, - { 3840, 2400 }, - { 4096, 2160 }, - { 5120, 2880 } -}; - // CODE -------------------------------------------------------------------- SDLGLVideo::SDLGLVideo (int parm) @@ -193,10 +128,10 @@ bool SDLGLVideo::NextMode (int *width, int *height, bool *letterbox) if (IteratorBits != 8) return false; - if ((unsigned)IteratorMode < sizeof(WinModes)/sizeof(WinModes[0])) + if ((unsigned)IteratorMode < sizeof(VideoModes)/sizeof(VideoModes[0])) { - *width = WinModes[IteratorMode].Width; - *height = WinModes[IteratorMode].Height; + *width = VideoModes[IteratorMode].width; + *height = VideoModes[IteratorMode].height; ++IteratorMode; return true; } diff --git a/src/posix/videomodes.h b/src/posix/videomodes.h new file mode 100644 index 000000000..b9df20801 --- /dev/null +++ b/src/posix/videomodes.h @@ -0,0 +1,105 @@ +/* + ** videomodes.h + ** + **--------------------------------------------------------------------------- + ** Copyright 2018 Alexey Lysiuk + ** All rights reserved. + ** + ** Redistribution and use in source and binary forms, with or without + ** modification, are permitted provided that the following conditions + ** are met: + ** + ** 1. Redistributions of source code must retain the above copyright + ** notice, this list of conditions and the following disclaimer. + ** 2. Redistributions in binary form must reproduce the above copyright + ** notice, this list of conditions and the following disclaimer in the + ** documentation and/or other materials provided with the distribution. + ** 3. The name of the author may not be used to endorse or promote products + ** derived from this software without specific prior written permission. + ** + ** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + ** IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + ** OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + ** IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + ** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + ** NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + ** THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + **--------------------------------------------------------------------------- + ** + */ + +static const struct +{ + uint16_t width; + uint16_t height; +} +VideoModes[] = +{ + { 320, 200 }, + { 320, 240 }, + { 400, 225 }, // 16:9 + { 400, 300 }, + { 480, 270 }, // 16:9 + { 480, 360 }, + { 512, 288 }, // 16:9 + { 512, 384 }, + { 640, 360 }, // 16:9 + { 640, 400 }, + { 640, 480 }, + { 720, 480 }, // 16:10 + { 720, 540 }, + { 800, 450 }, // 16:9 + { 800, 480 }, + { 800, 500 }, // 16:10 + { 800, 600 }, + { 848, 480 }, // 16:9 + { 960, 600 }, // 16:10 + { 960, 720 }, + { 1024, 576 }, // 16:9 + { 1024, 600 }, // 17:10 + { 1024, 640 }, // 16:10 + { 1024, 768 }, + { 1088, 612 }, // 16:9 + { 1152, 648 }, // 16:9 + { 1152, 720 }, // 16:10 + { 1152, 864 }, + { 1280, 540 }, // 21:9 + { 1280, 720 }, // 16:9 + { 1280, 854 }, + { 1280, 800 }, // 16:10 + { 1280, 960 }, + { 1280, 1024 }, // 5:4 + { 1360, 768 }, // 16:9 + { 1366, 768 }, + { 1400, 787 }, // 16:9 + { 1400, 875 }, // 16:10 + { 1400, 1050 }, + { 1440, 900 }, + { 1440, 960 }, + { 1440, 1080 }, + { 1600, 900 }, // 16:9 + { 1600, 1000 }, // 16:10 + { 1600, 1200 }, + { 1680, 1050 }, // 16:10 + { 1920, 1080 }, + { 1920, 1200 }, + { 2048, 1152 }, // 16:9, iMac Retina 4K 21.5", HiDPI off + { 2048, 1536 }, + { 2304, 1440 }, // 16:10, MacBook Retina 12" + { 2560, 1080 }, // 21:9 + { 2560, 1440 }, + { 2560, 1600 }, + { 2560, 2048 }, + { 2880, 1800 }, // 16:10, MacBook Pro Retina 15" + { 3200, 1800 }, + { 3440, 1440 }, // 21:9 + { 3840, 2160 }, + { 3840, 2400 }, + { 4096, 2160 }, + { 4096, 2304 }, // 16:9, iMac Retina 4K 21.5" + { 5120, 2160 }, // 21:9 + { 5120, 2880 } // 16:9, iMac Retina 5K 27" +}; diff --git a/src/s_sound.cpp b/src/s_sound.cpp index 74be46c20..a41663c3a 100644 --- a/src/s_sound.cpp +++ b/src/s_sound.cpp @@ -817,14 +817,17 @@ static void CalcPosVel(int type, const AActor *actor, const sector_t *sector, // //========================================================================== -inline bool Validate(const float value) +inline bool Validate(const float value, const float limit) { - return value >= -32768.f && value <= 32768.f; + return value >= -limit && value <= limit; } -static bool Validate(const FVector3 &value, const char *const name, const AActor *const actor) +static bool Validate(const FVector3 &value, const float limit, const char *const name, const AActor *const actor) { - const bool valid = Validate(value.X) && Validate(value.Y) && Validate(value.Z); + const bool valid = + Validate(value.X, limit) + && Validate(value.Y, limit) + && Validate(value.Z, limit); if (!valid) { @@ -845,8 +848,13 @@ static bool Validate(const FVector3 &value, const char *const name, const AActor static bool ValidatePosVel(const AActor *actor, const FVector3 &pos, const FVector3 &vel) { - const bool valid = Validate(pos, "position", actor); - return Validate(vel, "velocity", actor) && valid; + // The actual limit for map coordinates + static const float POSITION_LIMIT = 32768.f; + const bool valid = Validate(pos, POSITION_LIMIT, "position", actor); + + // The maximum velocity is enough to travel through entire map in one tic + static const float VELOCITY_LIMIT = 2 * POSITION_LIMIT * TICRATE; + return Validate(vel, VELOCITY_LIMIT, "velocity", actor) && valid; } static bool ValidatePosVel(const FSoundChan *const chan, const FVector3 &pos, const FVector3 &vel) diff --git a/src/sound/adlmidi/adldata.cpp b/src/sound/adlmidi/adldata.cpp index f17d0c839..1556f4d9c 100644 --- a/src/sound/adlmidi/adldata.cpp +++ b/src/sound/adlmidi/adldata.cpp @@ -4,7 +4,7 @@ * FROM A NUMBER OF SOURCES, MOSTLY PC GAMES. * PREPROCESSED, CONVERTED, AND POSTPROCESSED OFF-SCREEN. */ -const adldata adl[4425] = +const adldata adl[4423] = { // ,---------+-------- Wave select settings // | ,-------ч-+------ Sustain/release rates // | | ,-----ч-ч-+---- Attack/decay rates @@ -4116,7 +4116,7 @@ const adldata adl[4425] = { 0x332F985,0x0A5D684, 0x05,0x40, 0xE, +0 }, { 0x0FFF00B,0x2FF220C, 0x00,0x00, 0xE, +0 }, { 0x223A133,0x4F4F131, 0xD6,0x09, 0x6, +0 }, - { 0x223B132,0x0F4F131, 0xD3,0x0A, 0x6, +0 }, + { 0x023B131,0x0F4F131, 0xD3,0x0A, 0x6, +0 }, { 0x433F133,0x0F4F131, 0xD6,0x09, 0x8, +0 }, { 0x2F3F132,0x4F6F131, 0xD3,0x0A, 0x6, +0 }, { 0x2A4A112,0x4B5F211, 0xD2,0x05, 0x4, +0 }, @@ -4135,10 +4135,10 @@ const adldata adl[4425] = { 0x587F617,0x0E4F231, 0x54,0x08, 0x9, +0 }, { 0x0A5F33F,0x0F2C312, 0xA1,0x06, 0xC, -12 }, { 0x0A5F43F,0x0F2F392, 0xD5,0x07, 0x0, -12 }, - { 0x461A417,0x0017C11, 0xAA,0x08, 0x7, +0 }, - { 0x061A416,0x0018911, 0xA7,0x07, 0x7, +0 }, - { 0x0F6F2B2,0x0F6F281, 0xE5,0x00, 0xF, +0 }, - { 0x0F6F2A4,0x007F08F, 0x40,0x00, 0x1, +0 }, + { 0x462A417,0x0027A11, 0x9C,0x08, 0x9, +0 }, + { 0x062A416,0x0028811, 0x99,0x07, 0x9, +0 }, + { 0x0F6F2B2,0x0F6F281, 0xE8,0x05, 0xF, +0 }, + { 0x0F6F2A4,0x007F08F, 0x45,0x05, 0x1, +0 }, { 0x0F6F618,0x0F7E500, 0x63,0x80, 0x6, +12 }, { 0x5A6F40E,0x007D804, 0x5B,0x80, 0x0, +0 }, { 0x2F6F71A,0x0F5F413, 0x1F,0x03, 0x4, -19 }, @@ -4162,8 +4162,8 @@ const adldata adl[4425] = { 0x105FF2C,0x01A6222, 0x9D,0x12, 0x8, +0 }, { 0x107F021,0x2055232, 0x92,0x07, 0x8, +0 }, { 0x107F021,0x2055232, 0x92,0x07, 0x0, +0 }, - { 0x274A613,0x4B8F401, 0xDD,0x05, 0x6, +0 }, - { 0x2249134,0x2B8D301, 0x5E,0x05, 0xA, -12 }, + { 0x574A613,0x4B8F401, 0x9D,0x0D, 0x6, +0 }, + { 0x2249134,0x2B8D301, 0x61,0x05, 0xA, -12 }, { 0x5E5F133,0x1E4F211, 0x99,0x07, 0x6, +0 }, { 0x1E5F133,0x5E4F211, 0x9E,0x0B, 0x0, +0 }, { 0x21FF021,0x088F211, 0xA5,0x80, 0xA, +12 }, @@ -4178,8 +4178,8 @@ const adldata adl[4425] = { 0x0F78140,0x3F7F040, 0x40,0x05, 0xC, +14 }, { 0x6F78AE8,0x649B1F4, 0x03,0x0A, 0xA, +0 }, { 0x6F78AE8,0x649B1F4, 0x43,0x4B, 0xA, +0 }, - { 0x0209221,0x0E6C131, 0x97,0x05, 0x0, +0 }, - { 0x0608521,0x0E6A131, 0xD4,0x05, 0x4, +0 }, + { 0x0609533,0x4E5C131, 0x63,0x05, 0x0, +0 }, + { 0x0608521,0x0E4A131, 0xD4,0x05, 0x4, +0 }, { 0x0F9F030,0x0F8F131, 0x9D,0x05, 0xA, +12 }, { 0x7F0F017,0x7F9B700, 0x00,0x0F, 0xA, +12 }, { 0x026AA21,0x0D7F132, 0xCF,0x84, 0xA, +0 }, @@ -4191,7 +4191,8 @@ const adldata adl[4425] = { 0x2E69515,0x1B6B211, 0x17,0x08, 0x0, +0 }, { 0x077FA21,0x06AC332, 0x07,0x0D, 0x0, +0 }, { 0x0F5F430,0x0F6F330, 0x0E,0x00, 0xA, +12 }, - { 0x1468331,0x017D232, 0x15,0x00, 0xA, +0 }, + { 0x139A331,0x0F8F133, 0x93,0x08, 0xC, +0 }, + { 0x139A331,0x0F8F133, 0x93,0x08, 0xA, +0 }, { 0x2257020,0x4266161, 0x95,0x05, 0xA, +0 }, { 0x1257021,0x0266141, 0x99,0x07, 0x8, +0 }, { 0x2426070,0x2154130, 0x4F,0x00, 0xA, +0 }, @@ -4200,12 +4201,12 @@ const adldata adl[4425] = { 0x521F571,0x4166022, 0x90,0x09, 0x6, +0 }, { 0x52151F0,0x4156021, 0x97,0x0D, 0x4, +12 }, { 0x223F8F2,0x4055421, 0x99,0x8A, 0xC, +0 }, - { 0x0A05211,0x0E4C411, 0x9F,0x03, 0xA, +0 }, - { 0x1C79612,0x0E45411, 0xD9,0x03, 0x4, +0 }, + { 0x4A35211,0x0E4C411, 0x9C,0x08, 0x6, +0 }, + { 0x2C79613,0x4E45411, 0xD7,0x08, 0xA, +0 }, { 0x023E133,0x0F2F131, 0xA2,0x09, 0xE, +0 }, { 0x023F132,0x0F2F131, 0x24,0x0A, 0xE, +0 }, - { 0x4C3C413,0x0B4D214, 0x9B,0x48, 0xA, -24 }, - { 0x5BAF900,0x0B4F211, 0x87,0x48, 0x6, +0 }, + { 0x5C3C404,0x1B4B519, 0xA1,0x00, 0xC, -31 }, + { 0x17A9913,0x0B4F213, 0x0F,0x00, 0x8, -19 }, { 0x223F832,0x4055421, 0x99,0x8A, 0xC, +0 }, { 0x433CB32,0x5057561, 0x9B,0x8A, 0xA, +0 }, { 0x1029033,0x4044561, 0x5B,0x85, 0x4, +0 }, @@ -4225,7 +4226,7 @@ const adldata adl[4425] = { 0x0235271,0x0198161, 0x1E,0x08, 0xE, +0 }, { 0x0235361,0x0196161, 0x1D,0x03, 0xE, +0 }, { 0x0155331,0x0378261, 0x94,0x00, 0xA, +0 }, - { 0x118537A,0x5177432, 0x21,0x00, 0x4, -12 }, + { 0x118543A,0x5177472, 0x1E,0x00, 0x4, -12 }, { 0x0364121,0x02B7221, 0x21,0x08, 0xC, +0 }, { 0x026F021,0x0056121, 0x26,0x03, 0xC, +0 }, { 0x0578321,0x117C021, 0x19,0x03, 0xC, +0 }, @@ -4233,21 +4234,22 @@ const adldata adl[4425] = { 0x036F121,0x337F121, 0x92,0x08, 0xE, +0 }, { 0x0368121,0x037F121, 0x92,0x08, 0xE, +0 }, { 0x0A66121,0x0976121, 0x9B,0x08, 0xE, +0 }, - { 0x0F37011,0x1F65052, 0x51,0x04, 0xA, +0 }, - { 0x1067021,0x1165231, 0x8A,0x00, 0x6, +0 }, + { 0x5237731,0x1F65012, 0x4B,0x00, 0xA, +0 }, + { 0x0137732,0x0F65011, 0xC7,0x0A, 0xA, +0 }, + { 0x1067021,0x1165231, 0x46,0x00, 0x6, +0 }, { 0x00B9820,0x10B5330, 0x8E,0x00, 0xA, +12 }, { 0x10B8020,0x11B6330, 0x87,0x00, 0x8, +12 }, - { 0x0235031,0x0076C64, 0x58,0x08, 0xA, +0 }, - { 0x055D531,0x0076C72, 0x17,0x0D, 0x6, +0 }, - { 0x2077830,0x2076331, 0x94,0x00, 0xA, +0 }, + { 0x1235031,0x0077C24, 0xC0,0x08, 0x2, +0 }, + { 0x045D933,0x4076C35, 0xD0,0x26, 0x4, +0 }, + { 0x2077830,0x2076331, 0x9F,0x00, 0xA, +0 }, { 0x0199031,0x01B6134, 0x95,0x80, 0xA, +0 }, { 0x0177532,0x0174531, 0x93,0x03, 0xC, +0 }, { 0x0277530,0x0174536, 0x14,0x9C, 0xE, +12 }, { 0x08D6EF1,0x02A3571, 0xC0,0x00, 0xE, +0 }, { 0x08860A1,0x01A6561, 0x5C,0x00, 0x8, +0 }, { 0x2176522,0x0277421, 0x5A,0x00, 0x6, +0 }, - { 0x1274472,0x01745B1, 0x8D,0x05, 0x4, +0 }, - { 0x2F0F051,0x09A7801, 0x03,0x12, 0xA, +0 }, + { 0x1267532,0x0166531, 0x8D,0x05, 0x4, +0 }, + { 0x2F0F011,0x0987801, 0x03,0x17, 0xA, +0 }, { 0x00457F2,0x0375761, 0xA8,0x00, 0xE, +0 }, { 0x2545C73,0x0776821, 0x00,0x0D, 0xE, +0 }, { 0x5543737,0x25D67A1, 0x28,0x00, 0x8, +0 }, @@ -4260,23 +4262,23 @@ const adldata adl[4425] = { 0x3AB8120,0x308F130, 0x9E,0x06, 0x0, +0 }, { 0x13357F1,0x00767E1, 0x21,0x00, 0xA, +0 }, { 0x43357F2,0x00767E1, 0x28,0x00, 0x0, +0 }, - { 0x2444830,0x43D67A1, 0x22,0x00, 0x8, +0 }, - { 0x534B821,0x13D87A1, 0x1F,0x00, 0xA, +0 }, + { 0x2444830,0x21D67A1, 0x22,0x00, 0x8, +0 }, + { 0x534B821,0x02D87A1, 0x1F,0x00, 0xA, +0 }, { 0x32B7420,0x12BF134, 0x46,0x00, 0x8, +0 }, { 0x5029072,0x0069061, 0x96,0x0C, 0x8, +0 }, { 0x1019031,0x0069061, 0x1A,0x0C, 0x6, +0 }, - { 0x245C224,0x2550133, 0x83,0x80, 0x9, -36 }, - { 0x2459224,0x2556133, 0x83,0x80, 0x9, -36 }, - { 0x132ED10,0x3E7D010, 0x87,0x08, 0x6, +12 }, - { 0x132ED30,0x3E7D010, 0x87,0x0D, 0x6, +12 }, - { 0x2946374,0x005A0A1, 0xA5,0x05, 0x2, +0 }, - { 0x2055F02,0x004FFE1, 0xA8,0x05, 0x0, +0 }, - { 0x0031131,0x0054361, 0xD4,0x00, 0x4, +0 }, - { 0x20311B0,0x00543E1, 0xD9,0x00, 0x4, +0 }, + { 0x245C224,0x2550133, 0x81,0x80, 0xB, -36 }, + { 0x2459224,0x2556133, 0x81,0x80, 0xB, -36 }, + { 0x132ED10,0x3E7D010, 0x87,0x0D, 0x6, +12 }, + { 0x132ED30,0x3E7D010, 0x87,0x12, 0x6, +12 }, + { 0x033513A,0x013C121, 0xA4,0x06, 0x2, +0 }, + { 0x273F325,0x0228231, 0x20,0x06, 0x4, +0 }, + { 0x0031131,0x0054361, 0xD4,0x08, 0x4, +0 }, + { 0x20311B0,0x00543E1, 0xD9,0x08, 0x4, +0 }, { 0x245A121,0x126A121, 0x98,0x05, 0xC, +0 }, { 0x255A421,0x126A121, 0x98,0x05, 0xC, +0 }, - { 0x20470E0,0x1148161, 0x59,0x03, 0x2, +0 }, - { 0x10460E1,0x2148161, 0x5F,0x83, 0x6, +0 }, + { 0x50470E1,0x1148161, 0x59,0x03, 0x2, +0 }, + { 0x10460E2,0x4148161, 0x5F,0x83, 0x6, +0 }, { 0x0336186,0x05452E1, 0xA7,0x00, 0x6, +0 }, { 0x13351A6,0x05452E1, 0xA7,0x00, 0x0, +0 }, { 0x2529084,0x1534341, 0x9D,0x80, 0xC, +0 }, @@ -4290,8 +4292,8 @@ const adldata adl[4425] = { 0x2322122,0x0133221, 0x8C,0x92, 0x6, +0 }, { 0x4033121,0x0132122, 0x93,0x48, 0x4, +7 }, { 0x074F624,0x0249303, 0xC0,0x0D, 0x0, +0 }, - { 0x3D2C092,0x1D2D131, 0x8E,0x03, 0x0, +0 }, - { 0x0D2D091,0x1D23132, 0x8E,0x03, 0x0, +0 }, + { 0x3D2C092,0x1D2D131, 0x8E,0x09, 0x0, +0 }, + { 0x0D2D091,0x1D23132, 0x8E,0x09, 0x0, +0 }, { 0x5F29054,0x0F2C241, 0x99,0x06, 0xE, +0 }, { 0x1F19011,0x0F2C241, 0x1A,0x06, 0x6, +0 }, { 0x05233E1,0x0131371, 0x1A,0x88, 0x7, +0 }, @@ -4306,7 +4308,7 @@ const adldata adl[4425] = { 0x3F0F014,0x6F7F611, 0x40,0x43, 0xA, +0 }, { 0x033F201,0x373F402, 0xD1,0x8A, 0x0, +0 }, { 0x6A7F907,0x229A904, 0x1A,0x00, 0xA, -12 }, - { 0x332F320,0x6E49423, 0x0E,0x08, 0x8, +0 }, + { 0x5E2F321,0x6E4F523, 0x1B,0x08, 0x8, +0 }, { 0x455F71C,0x0D68501, 0xA3,0x08, 0x6, +0 }, { 0x055F718,0x0D6E501, 0x23,0x08, 0x0, +0 }, { 0x1397931,0x2099B22, 0x80,0x00, 0x6, +0 }, @@ -4326,7 +4328,7 @@ const adldata adl[4425] = { 0x250F610,0x0E7F510, 0x00,0xC8, 0x6, +0 }, { 0x2114109,0x51D2101, 0x05,0x80, 0xA, +0 }, { 0x2114108,0x31D2101, 0x05,0x80, 0xA, +12 }, - { 0x4543311,0x357451A, 0x19,0x03, 0xE, -14 }, + { 0x0534313,0x7574A1F, 0x20,0x03, 0xE, -14 }, { 0x00437D2,0x0343471, 0xA1,0x07, 0xC, +0 }, { 0x0F0F00C,0x0F66700, 0x00,0xCD, 0xE, +0 }, { 0x200C327,0x6021300, 0x80,0x12, 0xE, -23 }, @@ -4355,29 +4357,22 @@ const adldata adl[4425] = { 0x2F7F602,0x0F8F802, 0x00,0x88, 0xE, +12 }, { 0x05476C1,0x30892C5, 0x80,0x08, 0x0, +0 }, { 0x05477C1,0x30892C5, 0x00,0x08, 0xA, -2 }, - { 0x007C604,0x007C604, 0x08,0x08, 0x1, +0 }, - { 0x201F302,0x057AB09, 0x03,0x07, 0xC, +12 }, + { 0x005C604,0x005C604, 0x08,0x00, 0x1, +0 }, + { 0x509F902,0x057AB07, 0x03,0x07, 0xC, +12 }, { 0x254F307,0x307F905, 0x04,0x08, 0x6, -5 }, { 0x254F307,0x207F905, 0x04,0x08, 0x8, +0 }, - { 0x006C604,0x007C604, 0x08,0x08, 0x1, +0 }, - { 0x201F312,0x057AB09, 0x03,0x07, 0xC, +12 }, + { 0x509F912,0x057AB07, 0x03,0x07, 0xC, +12 }, { 0x254D307,0x3288905, 0x04,0x03, 0xA, -5 }, - { 0x0015500,0x007C716, 0x0C,0x00, 0x0, +0 }, - { 0x201F312,0x057AB09, 0x00,0x07, 0xC, +12 }, - { 0x0015500,0x007C719, 0x0C,0x00, 0x0, +0 }, - { 0x001F312,0x047BB05, 0x03,0x07, 0xC, +12 }, - { 0x0015500,0x007C71B, 0x0C,0x00, 0x0, +0 }, - { 0x201F312,0x047BB09, 0x03,0x07, 0xC, +12 }, - { 0x0015500,0x007C71F, 0x0C,0x00, 0x0, +0 }, - { 0x210F509,0x305FE03, 0x8A,0x85, 0xE, +12 }, - { 0x200F508,0x305FE03, 0xC7,0x85, 0xC, +12 }, - { 0x2E1F119,0x3F3F11B, 0x04,0x0D, 0x8, +0 }, + { 0x509F902,0x057AB07, 0x03,0x07, 0x0, +12 }, + { 0x210F509,0x605FE05, 0x8A,0x8A, 0xE, +12 }, + { 0x400F509,0x605FE05, 0x07,0x8A, 0xA, +12 }, + { 0x2E1F11E,0x3F3F318, 0x04,0x00, 0x8, +0 }, { 0x2777603,0x3679601, 0x87,0x08, 0x6, +12 }, { 0x277C643,0x3679601, 0x87,0x08, 0xE, +12 }, { 0x366F905,0x099F701, 0x00,0x00, 0xC, +12 }, { 0x431A000,0x085B41A, 0x81,0x05, 0xA, +12 }, { 0x459F640,0x185B418, 0x00,0x20, 0xB, +12 }, - { 0x212FD04,0x305FD03, 0x01,0x00, 0x8, +12 }, + { 0x212FD08,0x305FD03, 0x01,0x03, 0x8, +12 }, { 0x2A8F9E3,0x0779643, 0x1E,0x08, 0x2, +6 }, { 0x0A5F7E8,0x0D89949, 0xDE,0x00, 0x0, +0 }, { 0x2A8F9E3,0x0779643, 0x1E,0x00, 0xE, +12 }, @@ -4394,8 +4389,11 @@ const adldata adl[4425] = { 0x367FE05,0x678F701, 0x09,0x08, 0x8, +12 }, { 0x367FD10,0x078F901, 0x00,0x0D, 0x8, +11 }, { 0x098600F,0x3FC8590, 0x08,0xC0, 0xE, +12 }, - { 0x009F020,0x37DA588, 0x07,0x00, 0xA, +12 }, - { 0x00FC020,0x32DA5A8, 0x07,0x00, 0xA, +12 }, + { 0x009F020,0x27DA788, 0x25,0x00, 0x0, +12 }, + { 0x00FC020,0x22DA388, 0x25,0x00, 0xA, +12 }, + { 0x0F00000,0x0F00000, 0x3F,0x3F, 0xC, +0 }, + { 0x000F020,0x40A8A00, 0x0A,0x00, 0xE, +0 }, + { 0x70F5F20,0x70F4F00, 0x00,0x00, 0x2, -12 }, { 0x0D1F815,0x078F512, 0x44,0x00, 0x8, +12 }, { 0x2D1F213,0x098F614, 0x9D,0x00, 0x0, +0 }, { 0x2D1F213,0x098F614, 0x9D,0x21, 0x0, -2 }, @@ -4442,7 +4440,7 @@ const adldata adl[4425] = { 0x04CA700,0x04FC600, 0x00,0x2B, 0x0, -12 }, { 0x0B5F704,0x002010C, 0x00,0x00, 0x8, +21 }, }; -const struct adlinsdata adlins[4547] = +const struct adlinsdata adlins[4549] = { { 0, 0, 0, 0, 1660, 1660,0.000000 }, { 1, 1, 0, 0, 1746, 1746,0.000000 }, @@ -8783,7 +8781,7 @@ const struct adlinsdata adlins[4547] = {3547,3547,109, 0, 1780, 1780,0.000000 }, {4097,4097, 79, 0, 126, 126,0.000000 }, {4098,4098, 0, 0, 3413, 3413,0.000000 }, - {4099,4100, 0, 1, 2040, 2040,0.031250 }, + {4099,4100, 0, 1, 1613, 1613,0.031250 }, {4101,4102, 0, 1, 2146, 2146,0.031250 }, {4103,4104, 0, 1, 1646, 1646,0.046875 }, {4105,4106, 0, 1, 1900, 1900,0.156250 }, @@ -8793,7 +8791,7 @@ const struct adlinsdata adlins[4547] = {4113,4114, 0, 1, 1740, 1740,0.000000 }, {4115,4116, 0, 1, 993, 993,0.000025 }, {4117,4118, 0, 1, 886, 886,0.000000 }, - {4119,4120, 0, 1, 1900, 1900,0.046875 }, + {4119,4120, 0, 1, 1153, 1153,0.046875 }, {4121,4122, 0, 1, 1420, 1420,0.000000 }, {4123,4124, 0, 1, 193, 193,0.000000 }, {4125,4126, 0, 1, 406, 406,0.000000 }, @@ -8807,7 +8805,7 @@ const struct adlinsdata adlins[4547] = {4140,4141, 0, 1, 40000, 46,0.140625 }, {4142,4143, 0, 1, 40000, 6,0.000000 }, {4144,4145, 0, 1, 40000, 153,0.109375 }, - {4146,4147, 0, 1, 600, 600,0.000000 }, + {4146,4147, 0, 1, 920, 920,0.000000 }, {4148,4149, 0, 1, 653, 653,0.000025 }, {4150,4151, 0, 1, 633, 633,0.000000 }, {4152,4153, 0, 1, 893, 893,0.046875 }, @@ -8815,182 +8813,184 @@ const struct adlinsdata adlins[4547] = {4156,4157, 0, 1, 40000, 60,-1.906250 }, {4158,4159, 0, 1, 40000, 60,-1.906250 }, {4160,4161, 0, 1, 2033, 2033,0.234375 }, - {4162,4163, 0, 1, 1600, 1600,0.031250 }, + {4162,4163, 0, 1, 1900, 1900,0.031250 }, {4164,4165, 0, 1, 1453, 1453,0.000000 }, {4166,4167, 0, 1, 2186, 2186,0.000000 }, {4168,4169, 0, 1, 1933, 1933,0.046875 }, {4170,4171, 0, 1, 633, 633,0.000000 }, {4172,4173, 0, 1, 486, 486,0.000000 }, {4174,4174, 0, 0, 313, 313,0.000000 }, - {4175,4175, 0, 1, 40000, 33,0.156250 }, - {4176,4177, 0, 1, 2040, 13,0.000000 }, - {4178,4178, 0, 0, 40000, 66,0.000000 }, - {4179,4180, 0, 1, 40000, 60,0.000025 }, - {4181,4181, 0, 0, 40000, 133,0.000000 }, - {4182,4183, 0, 1, 40000, 173,0.078125 }, - {4184,4185, 0, 1, 320, 320,0.156250 }, - {4186,4187, 0, 1, 1813, 1813,0.031250 }, - {4188,4189, 0, 1, 1740, 1740,0.031250 }, - {4190,4191, 0, 1, 40000, 213,0.062500 }, - {4192,4193, 0, 1, 40000, 500,-0.062500 }, - {4194,4194, 0, 1, 40000, 326,0.109375 }, - {4195,4195, 0, 1, 40000, 406,0.109375 }, - {4196,4197, 0, 1, 40000, 280,0.140625 }, - {4198,4199, 0, 1, 40000, 53,0.140625 }, - {4200,4201, 0, 1, 40000, 286,0.156250 }, - {4202,4203, 0, 1, 206, 206,0.125000 }, - {4204,4205, 0, 1, 40000, 26,0.000000 }, - {4206,4207, 0, 1, 40000, 20,0.031250 }, - {4208,4208, 0, 0, 40000, 6,0.000000 }, - {4209,4209, 0, 0, 40000, 20,0.000000 }, - {4210,4211, 0, 1, 40000, 160,0.031250 }, - {4212,4213, 0, 1, 40000, 73,0.062500 }, - {4214,4215, 0, 1, 2526, 2526,0.093750 }, - {4216,4216, 0, 1, 5153, 5153,0.125000 }, - {4217,4217, 0, 0, 40000, 66,0.000000 }, - {4218,4218, 0, 0, 40000, 40,0.000000 }, - {4219,4219, 0, 0, 40000, 0,0.000000 }, - {4220,4220, 0, 0, 40000, 0,0.000000 }, - {4221,4222, 0, 1, 40000, 60,0.000000 }, - {4223,4223, 0, 0, 40000, 33,0.000000 }, - {4224,4224, 0, 0, 40000, 6,0.000000 }, - {4225,4226, 0, 1, 40000, 40,0.000000 }, - {4227,4227, 0, 0, 40000, 0,0.000000 }, - {4228,4228, 0, 0, 40000, 6,0.000000 }, - {4229,4229, 0, 0, 40000, 33,0.000000 }, - {4230,4231, 0, 1, 40000, 33,0.031250 }, - {4232,4233, 0, 1, 40000, 20,0.046875 }, - {4234,4235, 0, 1, 420, 420,0.031250 }, - {4236,4236, 0, 0, 40000, 106,0.000000 }, - {4237,4237, 0, 0, 40000, 6,0.000000 }, - {4238,4239, 0, 1, 40000, 6,0.125000 }, - {4240,4241, 0, 1, 40000, 13,0.109375 }, - {4242,4243, 0, 1, 40000, 53,0.109375 }, - {4244,4245, 0, 1, 120, 0,-0.031250 }, - {4246,4246, 0, 0, 40000, 6,0.000000 }, - {4247,4248, 0, 1, 40000, 133,0.156250 }, - {4249,4250, 0, 1, 3886, 3886,0.125000 }, - {4251,4252, 0, 1, 40000, 26,0.031250 }, - {4253,4254, 0, 1, 40000, 320,0.078125 }, - {4255,4256, 0, 1, 846, 66,0.109375 }, - {4257,4258, 0, 1, 1293, 80,0.078125 }, - {4259,4260, 0, 1, 40000, 193,0.156250 }, - {4261,4262, 0, 1, 2040, 2040,0.109375 }, - {4263,4264, 0, 1, 1360, 1360,0.062500 }, - {4265,4266, 0, 1, 40000, 433,0.093750 }, - {4267,4268, 0, 1, 40000, 533,0.109375 }, - {4269,4270, 0, 1, 826, 826,0.093750 }, - {4271,4272, 0, 1, 40000, 926,0.125000 }, - {4273,4273, 0, 1, 886, 886,0.109375 }, - {4274,4275, 0, 1, 2186, 2186,-0.046875 }, - {4276,4277, 0, 1, 1486, 1486,0.125000 }, - {4278,4279, 0, 1, 40000, 393,-0.078125 }, - {4280,4281, 0, 1, 40000, 1166,0.140625 }, - {4282,4283, 0, 1, 360, 360,0.078125 }, - {4284,4285, 0, 1, 1693, 1693,0.031250 }, - {4286,4287, 0, 1, 760, 760,0.000000 }, - {4288,4289, 0, 1, 126, 126,0.031250 }, - {4290,4290, 0, 0, 633, 633,0.000000 }, - {4291,4292, 0, 1, 280, 280,0.000000 }, - {4293,4294, 0, 1, 40000, 26,0.062500 }, - {4295,4295, 0, 0, 40000, 66,0.000000 }, - {4296,4296, 0, 0, 40000, 53,0.000000 }, - {4297,4297, 0, 0, 1940, 1940,0.000000 }, - {4298,4298, 0, 0, 86, 86,0.000000 }, - {4299,4300, 0, 1, 280, 280,0.031250 }, - {4301,4301, 0, 0, 40, 40,0.000000 }, - {4302,4303, 0, 1, 53, 53,0.000000 }, - {4304,4305, 0, 1, 140, 140,0.000000 }, - {4306,4307, 0, 1, 26, 26,0.000000 }, - {4308,4309, 0, 1, 2153, 2153,0.109375 }, - {4310,4310, 0, 0, 600, 600,0.000000 }, - {4311,4312, 0, 1, 993, 26,0.000000 }, - {4313,4314, 0, 1, 5613, 5613,0.000000 }, - {4315,4315, 0, 0, 220, 220,0.000000 }, - {4316,4317, 0, 1, 10306, 526,0.000000 }, - {4318,4319, 0, 1, 1486, 13,0.000000 }, - {4320,4321, 0, 1, 40000, 660,0.000000 }, - {4322,4322, 0, 0, 120, 120,0.000000 }, - {4323,4323, 34, 0, 40, 40,0.000000 }, - {4324,4324, 28, 0, 73, 73,0.000000 }, - {4325,4326, 39, 1, 233, 233,0.000000 }, - {4325,4326, 33, 1, 193, 193,0.000000 }, - {4327,4328, 63, 1, 33, 33,0.000000 }, - {4329,4329, 15, 0, 13, 13,0.000000 }, - {4330,4330, 36, 0, 13, 13,0.000000 }, - {4330,4331, 36, 1, 133, 133,0.406250 }, - {4332,4333, 25, 1, 13, 13,0.000000 }, - {4334,4333, 25, 1, 33, 33,0.000000 }, - {4335,4336, 61, 1, 40, 40,0.000000 }, - {4337,4338, 37, 1, 53, 53,0.000000 }, - {4339,4340, 15, 1, 80, 80,0.000000 }, - {4341,4342, 48, 1, 73, 73,-1.906250 }, - {4343,4344, 19, 1, 120, 120,0.000000 }, - {4345,4345, 48, 0, 53, 53,0.000000 }, - {4346,4347, 15, 1, 33, 33,0.000000 }, - {4348,4349, 12, 1, 33, 33,0.000000 }, - {4350,4351, 12, 1, 33, 33,0.000000 }, - {4352,4351, 10, 1, 40, 40,0.000000 }, - {4353,4354, 60, 1, 286, 286,0.062500 }, - {4355,4355, 62, 0, 1726, 1726,0.000000 }, - {4356,4357, 80, 1, 106, 106,0.125000 }, - {4358,4358, 58, 0, 73, 73,0.000000 }, - {4359,4360, 31, 1, 313, 313,0.000000 }, - {4361,4361, 61, 0, 206, 206,0.000000 }, - {4362,4363, 41, 1, 100, 100,0.000000 }, - {4364,4365, 35, 1, 160, 160,0.000000 }, - {4366,4367, 29, 1, 40, 40,0.000000 }, - {4368,4369, 41, 1, 166, 166,0.000000 }, - {4368,4369, 37, 1, 160, 160,0.000000 }, - {4370,4371, 54, 1, 80, 80,0.000000 }, - {4370,4372, 48, 1, 80, 80,0.000000 }, - {4373,4374, 77, 1, 53, 53,0.000000 }, - {4375,4376, 72, 1, 46, 46,0.000000 }, - {4377,4377, 40, 0, 140, 140,0.000000 }, - {4378,4378, 45, 0, 313, 313,0.000000 }, - {4379,4379, 42, 0, 40000, 0,0.000000 }, - {4380,4380, 73, 0, 60, 60,0.000000 }, - {4381,4382, 68, 1, 40, 40,0.000000 }, - {4383,4384, 18, 1, 60, 60,0.000000 }, - {4385,4386, 18, 1, 106, 106,0.000000 }, - {4387,4387, 90, 0, 80, 80,0.000000 }, - {4388,4388, 90, 0, 306, 306,0.000000 }, - {4389,4390, 64, 1, 233, 233,0.031250 }, - {4391,4392, 80, 1, 140, 140,0.031250 }, - {4393,4394, 64, 1, 606, 606,0.000000 }, - {4395,4395, 67, 0, 20, 20,0.000000 }, - {4396,4397, 50, 1, 53, 53,0.000000 }, - {4398,4398, 36, 0, 66, 66,0.000000 }, - {4399,4399, 0, 0, 40000, 20,0.000000 }, - {4400,4400, 0, 0, 40000, 0,0.000000 }, - {4401,4401, 0, 0, 360, 360,0.000000 }, - {4402,4402, 0, 0, 586, 586,0.000000 }, + {4175,4176, 0, 1, 2533, 2533,0.078125 }, + {4177,4178, 0, 1, 2040, 13,0.000000 }, + {4179,4179, 0, 0, 40000, 66,0.000000 }, + {4180,4181, 0, 1, 40000, 60,0.000025 }, + {4182,4182, 0, 0, 40000, 133,0.000000 }, + {4183,4184, 0, 1, 40000, 173,0.078125 }, + {4185,4186, 0, 1, 333, 333,0.109375 }, + {4187,4188, 0, 1, 1813, 1813,0.031250 }, + {4189,4190, 0, 1, 1473, 1473,0.031250 }, + {4191,4192, 0, 1, 40000, 213,0.062500 }, + {4193,4194, 0, 1, 40000, 500,-0.062500 }, + {4195,4195, 0, 1, 40000, 326,0.109375 }, + {4196,4196, 0, 1, 40000, 406,0.109375 }, + {4197,4198, 0, 1, 40000, 280,0.140625 }, + {4199,4200, 0, 1, 40000, 53,0.140625 }, + {4201,4202, 0, 1, 40000, 286,0.156250 }, + {4203,4204, 0, 1, 206, 206,0.125000 }, + {4205,4206, 0, 1, 40000, 26,0.000000 }, + {4207,4208, 0, 1, 40000, 20,0.031250 }, + {4209,4209, 0, 0, 40000, 6,0.000000 }, + {4210,4210, 0, 0, 40000, 20,0.000000 }, + {4211,4212, 0, 1, 40000, 160,0.031250 }, + {4213,4214, 0, 1, 40000, 73,0.062500 }, + {4215,4216, 0, 1, 2526, 2526,0.093750 }, + {4217,4217, 0, 1, 5153, 5153,0.125000 }, + {4218,4219, 0, 1, 40000, 73,0.000000 }, + {4220,4220, 0, 0, 40000, 60,0.000000 }, + {4221,4221, 0, 0, 40000, 0,0.000000 }, + {4222,4222, 0, 0, 40000, 0,0.000000 }, + {4223,4224, 0, 1, 40000, 73,0.000000 }, + {4225,4225, 0, 0, 40000, 33,0.000000 }, + {4226,4226, 0, 0, 40000, 6,0.000000 }, + {4227,4228, 0, 1, 40000, 40,0.000000 }, + {4229,4229, 0, 0, 40000, 0,0.000000 }, + {4230,4230, 0, 0, 40000, 6,0.000000 }, + {4231,4231, 0, 0, 40000, 33,0.000000 }, + {4232,4233, 0, 1, 40000, 53,0.031250 }, + {4234,4235, 0, 1, 40000, 20,0.046875 }, + {4236,4237, 0, 1, 420, 420,0.031250 }, + {4238,4238, 0, 0, 40000, 106,0.000000 }, + {4239,4239, 0, 0, 40000, 6,0.000000 }, + {4240,4241, 0, 1, 40000, 6,0.125000 }, + {4242,4243, 0, 1, 40000, 13,0.109375 }, + {4244,4245, 0, 1, 40000, 53,0.109375 }, + {4246,4247, 0, 1, 226, 6,-0.031250 }, + {4248,4248, 0, 0, 40000, 6,0.000000 }, + {4249,4250, 0, 1, 40000, 133,0.156250 }, + {4251,4252, 0, 1, 4186, 13,0.125000 }, + {4253,4254, 0, 1, 40000, 26,0.031250 }, + {4255,4256, 0, 1, 40000, 660,0.078125 }, + {4257,4258, 0, 1, 846, 66,0.109375 }, + {4259,4260, 0, 1, 1293, 80,0.078125 }, + {4261,4262, 0, 1, 40000, 300,0.140625 }, + {4263,4264, 0, 1, 2040, 2040,0.109375 }, + {4265,4266, 0, 1, 1360, 1360,0.062500 }, + {4267,4268, 0, 1, 40000, 433,0.093750 }, + {4269,4270, 0, 1, 40000, 533,0.109375 }, + {4271,4272, 0, 1, 826, 826,0.093750 }, + {4273,4274, 0, 1, 40000, 926,0.125000 }, + {4275,4275, 0, 1, 886, 886,0.109375 }, + {4276,4277, 0, 1, 2186, 2186,-0.046875 }, + {4278,4279, 0, 1, 1486, 1486,0.125000 }, + {4280,4281, 0, 1, 40000, 393,-0.078125 }, + {4282,4283, 0, 1, 40000, 1166,0.140625 }, + {4284,4285, 0, 1, 360, 360,0.078125 }, + {4286,4287, 0, 1, 1693, 1693,0.031250 }, + {4288,4289, 0, 1, 760, 760,0.000000 }, + {4290,4291, 0, 1, 126, 126,0.031250 }, + {4292,4292, 0, 0, 300, 300,0.000000 }, + {4293,4294, 0, 1, 280, 280,0.000000 }, + {4295,4296, 0, 1, 40000, 26,0.062500 }, + {4297,4297, 0, 0, 40000, 66,0.000000 }, + {4298,4298, 0, 0, 40000, 53,0.000000 }, + {4299,4299, 0, 0, 1940, 1940,0.000000 }, + {4300,4300, 0, 0, 86, 86,0.000000 }, + {4301,4302, 0, 1, 280, 280,0.031250 }, + {4303,4303, 0, 0, 40, 40,0.000000 }, + {4304,4305, 0, 1, 53, 53,0.000000 }, + {4306,4307, 0, 1, 140, 140,0.000000 }, + {4308,4309, 0, 1, 26, 26,0.000000 }, + {4310,4311, 0, 1, 2153, 2153,0.109375 }, + {4312,4312, 0, 0, 293, 293,0.000000 }, + {4313,4314, 0, 1, 993, 26,0.000000 }, + {4315,4316, 0, 1, 5613, 5613,0.000000 }, + {4317,4317, 0, 0, 220, 220,0.000000 }, + {4318,4319, 0, 1, 10306, 526,0.000000 }, + {4320,4321, 0, 1, 1486, 13,0.000000 }, + {4322,4323, 0, 1, 40000, 660,0.000000 }, + {4324,4324, 0, 0, 120, 120,0.000000 }, + {4325,4325, 34, 0, 40, 40,0.000000 }, + {4326,4326, 28, 0, 73, 73,0.000000 }, + {4327,4328, 39, 1, 233, 233,0.000000 }, + {4327,4328, 33, 1, 193, 193,0.000000 }, + {4329,4330, 63, 1, 33, 33,0.000000 }, + {4331,4331, 15, 0, 13, 13,0.000000 }, + {4332,4332, 36, 0, 13, 13,0.000000 }, + {4332,4333, 36, 1, 133, 133,0.406250 }, + {4334,4335, 25, 1, 13, 13,0.000000 }, + {4336,4335, 25, 1, 33, 33,0.000000 }, + {4337,4338, 61, 1, 40, 40,0.000000 }, + {4339,4340, 37, 1, 53, 53,0.000000 }, + {4341,4342, 15, 1, 320, 320,0.000000 }, + {4343,4344, 48, 1, 73, 73,-1.906250 }, + {4341,4345, 19, 1, 320, 320,0.000000 }, + {4346,4346, 48, 0, 53, 53,0.000000 }, + {4341,4342, 22, 1, 353, 353,0.000000 }, + {4341,4342, 24, 1, 360, 360,0.000000 }, + {4341,4347, 27, 1, 393, 393,0.000000 }, + {4341,4342, 31, 1, 380, 380,0.000000 }, + {4348,4349, 60, 1, 246, 246,0.031250 }, + {4350,4350, 70, 0, 340, 340,0.000000 }, + {4351,4352, 80, 1, 106, 106,0.125000 }, + {4353,4353, 58, 0, 73, 73,0.000000 }, + {4354,4355, 31, 1, 313, 313,0.000000 }, + {4356,4356, 61, 0, 253, 253,0.000000 }, + {4357,4358, 41, 1, 100, 100,0.000000 }, + {4359,4360, 35, 1, 160, 160,0.000000 }, + {4361,4362, 29, 1, 40, 40,0.000000 }, + {4363,4364, 41, 1, 166, 166,0.000000 }, + {4363,4364, 37, 1, 160, 160,0.000000 }, + {4365,4366, 54, 1, 80, 80,0.000000 }, + {4365,4367, 48, 1, 80, 80,0.000000 }, + {4368,4369, 77, 1, 53, 53,0.000000 }, + {4370,4371, 72, 1, 46, 46,0.000000 }, + {4372,4372, 40, 0, 140, 140,0.000000 }, + {4373,4373, 38, 0, 73, 73,0.000000 }, + {4374,4374, 36, 0, 533, 533,0.000000 }, + {4375,4376, 60, 1, 26, 26,0.000000 }, + {4376,4377, 60, 1, 26, 26,0.000000 }, + {4378,4378, 73, 0, 60, 60,0.000000 }, + {4379,4380, 68, 1, 40, 40,0.000000 }, + {4381,4382, 18, 1, 60, 60,0.000000 }, + {4383,4384, 18, 1, 106, 106,0.000000 }, + {4385,4385, 90, 0, 80, 80,0.000000 }, + {4386,4386, 90, 0, 306, 306,0.000000 }, + {4387,4388, 64, 1, 233, 233,0.031250 }, + {4389,4390, 80, 1, 140, 140,0.031250 }, + {4391,4392, 64, 1, 606, 606,0.000000 }, + {4393,4393, 67, 0, 20, 20,0.000000 }, + {4394,4395, 50, 1, 53, 53,0.000000 }, + {4396,4396, 36, 0, 66, 66,0.000000 }, + {4397,4397, 0, 0, 40000, 20,0.000000 }, + {4398,4398, 0, 0, 40000, 0,0.000000 }, + {4399,4399, 0, 0, 360, 360,0.000000 }, + {4400,4400, 0, 0, 586, 586,0.000000 }, + {4401,4401, 0, 0, 40000, 0,0.000000 }, + {4402,4402, 0, 0, 40000, 0,0.000000 }, {4403,4403, 0, 0, 40000, 0,0.000000 }, - {4404,4404, 0, 0, 40000, 0,0.000000 }, + {4404,4404, 0, 0, 40000, 6,0.000000 }, {4405,4405, 0, 0, 40000, 0,0.000000 }, - {4406,4406, 0, 0, 40000, 6,0.000000 }, - {4407,4407, 0, 0, 40000, 0,0.000000 }, - {4408,4408, 0, 0, 146, 146,0.000000 }, - {4408,4408, 73, 0, 886, 886,0.000000 }, - {4409,4409, 0, 0, 40, 0,0.000000 }, - {4410,4410, 0, 0, 486, 0,0.000000 }, - {4411,4411, 0, 0, 1226, 1226,0.000000 }, - {4412,4412, 0, 0, 1480, 1480,0.000000 }, - {4413,4413, 0, 0, 46, 46,0.000000 }, - {4414,4414, 0, 0, 126, 126,0.000000 }, - {4414,4414, 12, 0, 106, 106,0.000000 }, - {4415,4415, 0, 0, 160, 160,0.000000 }, - {4415,4415, 1, 0, 153, 153,0.000000 }, - {4416,4416, 0, 0, 20, 20,0.000000 }, - {4416,4416, 23, 0, 26, 26,0.000000 }, - {4417,4417, 0, 0, 140, 140,0.000000 }, - {4418,4418, 0, 0, 486, 486,0.000000 }, - {4419,4419, 0, 0, 40000, 13,0.000000 }, - {4420,4420, 0, 0, 40000, 0,0.000000 }, - {4421,4421, 0, 0, 1226, 1226,0.000000 }, - {4422,4422, 0, 0, 766, 766,0.000000 }, - {4423,4423, 0, 0, 93, 93,0.000000 }, - {4424,4424, 0, 2, 40000, 0,0.000000 }, + {4406,4406, 0, 0, 146, 146,0.000000 }, + {4406,4406, 73, 0, 886, 886,0.000000 }, + {4407,4407, 0, 0, 40, 0,0.000000 }, + {4408,4408, 0, 0, 486, 0,0.000000 }, + {4409,4409, 0, 0, 1226, 1226,0.000000 }, + {4410,4410, 0, 0, 1480, 1480,0.000000 }, + {4411,4411, 0, 0, 46, 46,0.000000 }, + {4412,4412, 0, 0, 126, 126,0.000000 }, + {4412,4412, 12, 0, 106, 106,0.000000 }, + {4413,4413, 0, 0, 160, 160,0.000000 }, + {4413,4413, 1, 0, 153, 153,0.000000 }, + {4414,4414, 0, 0, 20, 20,0.000000 }, + {4414,4414, 23, 0, 26, 26,0.000000 }, + {4415,4415, 0, 0, 140, 140,0.000000 }, + {4416,4416, 0, 0, 486, 486,0.000000 }, + {4417,4417, 0, 0, 40000, 13,0.000000 }, + {4418,4418, 0, 0, 40000, 0,0.000000 }, + {4419,4419, 0, 0, 1226, 1226,0.000000 }, + {4420,4420, 0, 0, 766, 766,0.000000 }, + {4421,4421, 0, 0, 93, 93,0.000000 }, + {4422,4422, 0, 2, 40000, 0,0.000000 }, }; @@ -9002,7 +9002,7 @@ int maxAdlBanks() const char* const banknames[74] = { - "AIL (Star Control 3, Albion, Empire 2, many others)", + "AIL (Star Control 3, Albion, Empire 2, etc.)", "Bisqwit (selection of 4op and 2op)", "HMI (Descent, Asterix)", "HMI (Descent:: Int)", @@ -9016,47 +9016,47 @@ const char* const banknames[74] = "HMI (Aces of the Deep)", "HMI (Earthsiege)", "HMI (Anvil of Dawn)", - "DMX (Doom)", + "DMX (Doom 2)", "DMX (Hexen, Heretic)", - "DMX (MUS Play)", - "AIL (Discworld, Grandest Fleet)", + "DMX (DOOM, MUS Play)", + "AIL (Discworld, Grandest Fleet, etc.)", "AIL (Warcraft 2)", "AIL (Syndicate)", - "AIL (Guilty, Orion Conspiracy)", + "AIL (Guilty, Orion Conspiracy, TNSFC ::4op)", "AIL (Magic Carpet 2)", "AIL (Nemesis)", "AIL (Jagged Alliance)", - "AIL (When Two Worlds War)", - "AIL (Bards Tale Construction)", + "AIL (When Two Worlds War :MISS-INS:)", + "AIL (Bards Tale Construction :MISS-INS:)", "AIL (Return to Zork)", "AIL (Theme Hospital)", "AIL (National Hockey League PA)", "AIL (Inherit The Earth)", "AIL (Inherit The Earth, file two)", - "AIL (Little Big Adventure)", + "AIL (Little Big Adventure :: 4op)", "AIL (Wreckin Crew)", "AIL (Death Gate)", "AIL (FIFA International Soccer)", "AIL (Starship Invasion)", - "AIL (Super Street Fighter 2)", - "AIL (Lords of the Realm)", - "AIL (SimFarm, SimHealth)", + "AIL (Super Street Fighter 2 :4op:)", + "AIL (Lords of the Realm :MISS-INS:)", + "AIL (SimFarm, SimHealth :: 4op)", "AIL (SimFarm, Settlers, Serf City)", - "AIL (Caesar 2, MISSING INSTRUMENTS)", + "AIL (Caesar 2, :p4op::MISS-INS:)", "AIL (Syndicate Wars)", "AIL (Bubble Bobble Feat. Rainbow Islands, Z)", "AIL (Warcraft)", - "AIL (Terra Nova Strike Force Centuri)", - "AIL (System Shock)", + "AIL (Terra Nova Strike Force Centuri :p4op:)", + "AIL (System Shock :p4op:)", "AIL (Advanced Civilization)", - "AIL (Battle Chess 4000, melodic only)", - "AIL (Ultimate Soccer Manager)", - "AIL (Air Bucks, Blue And The Gray)", + "AIL (Battle Chess 4000 :p4op:)", + "AIL (Ultimate Soccer Manager :p4op:)", + "AIL (Air Bucks, Blue And The Gray, etc)", "AIL (Ultima Underworld 2)", "AIL (Kasparov's Gambit)", - "AIL (High Seas Trader)", - "AIL (Master of Magic, std percussion)", - "AIL (Master of Magic, orchestral percussion)", + "AIL (High Seas Trader :MISS-INS:)", + "AIL (Master of Magic, :4op: std percussion)", + "AIL (Master of Magic, :4op: orchestral percussion)", "SB (Action Soccer)", "SB (3d Cyberpuck :: melodic only)", "SB (Simon the Sorcerer :: melodic only)", @@ -10388,14 +10388,14 @@ const unsigned short banks[74][256] = 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806,4467,4468,4469,4470,4471, 4472,4473,4474,4475,4476,4477,4217,4478,4218,4479,4480,4481,4482,4483,4221,4484, 4485,4222,4486,4487,4224,4488,4489,4226,4490,4227,4491,4492,4493,4494,4495,4496, -4497,4498,4499,4500,4501, 320,4502,4503,4504,4231,4232,4505,4506,1374,4507,4508, -4509,4510,4511,4512,4513,4514,4515,4516, 806, 806, 806, 806, 806, 806, 806, 806, +4497,4498,4499,4500,4501, 320,4502,4503,4504,4505,4506,4507,4508,1374,4509,4510, +4511,4512,4513,4514,4515,4516,4517,4518, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, 806, }, { -4517,4518,4519,4520,4518,4521,4522,4523,4524,4525,4526,4528,4529,4530,4531,4532, -4533,4535,4537,4530,4539,4540,4541,4542,4543,4544,4545, 295, 28, 29, 30, 31, +4519,4520,4521,4522,4520,4523,4524,4525,4526,4527,4528,4530,4531,4532,4533,4534, +4535,4537,4539,4532,4541,4542,4543,4544,4545,4546,4547, 295, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 33, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, @@ -10404,8 +10404,8 @@ const unsigned short banks[74][256] = 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 127,4534, 128,4536, 130, 131, 132,4538, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144,4527, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 295, 295, 295, 127,4536, 128,4538, 130, 131, 132,4540, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144,4529, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, @@ -10415,7 +10415,7 @@ const unsigned short banks[74][256] = const AdlBankSetup adlbanksetup[74] = { - {0, 1, 1, 0, 0}, //Bank 0, AIL (Star Control 3, Albion, Empire 2, Sensible Soccer, Settlers 2, many others) + {0, 1, 1, 0, 0}, //Bank 0, AIL (Star Control 3, Albion, Empire 2, etc.) {0, 1, 1, 0, 0}, //Bank 1, Bisqwit (selection of 4op and 2op) {0, 0, 0, 0, 0}, //Bank 2, HMI (Descent, Asterix) {0, 0, 0, 0, 0}, //Bank 3, HMI (Descent:: Int) @@ -10429,18 +10429,18 @@ const AdlBankSetup adlbanksetup[74] = {0, 0, 0, 0, 0}, //Bank 11, HMI (Aces of the Deep) {0, 0, 0, 0, 0}, //Bank 12, HMI (Earthsiege) {0, 0, 0, 0, 0}, //Bank 13, HMI (Anvil of Dawn) - {2, 0, 0, 0, 0}, //Bank 14, DMX (Doom :: partially pseudo 4op) - {2, 0, 0, 0, 0}, //Bank 15, DMX (Hexen, Heretic :: partially pseudo 4op) - {2, 0, 0, 0, 0}, //Bank 16, DMX (MUS Play :: partially pseudo 4op) - {0, 1, 1, 0, 0}, //Bank 17, AIL (Discworld, Grandest Fleet, Pocahontas, Slob Zone 3d, Ultima 4, Zorro) + {2, 0, 0, 0, 0}, //Bank 14, DMX (Doom 2) + {2, 0, 0, 0, 0}, //Bank 15, DMX (Hexen, Heretic) + {2, 0, 0, 0, 0}, //Bank 16, DMX (DOOM, MUS Play) + {0, 1, 1, 0, 0}, //Bank 17, AIL (Discworld, Grandest Fleet, etc.) {0, 1, 1, 0, 0}, //Bank 18, AIL (Warcraft 2) {0, 1, 1, 0, 0}, //Bank 19, AIL (Syndicate) - {0, 1, 1, 0, 0}, //Bank 20, AIL (Guilty, Orion Conspiracy, Terra Nova Strike Force Centauri :: 4op) + {0, 1, 1, 0, 0}, //Bank 20, AIL (Guilty, Orion Conspiracy, TNSFC ::4op) {0, 1, 1, 0, 0}, //Bank 21, AIL (Magic Carpet 2) {0, 1, 1, 0, 0}, //Bank 22, AIL (Nemesis) {0, 1, 1, 0, 0}, //Bank 23, AIL (Jagged Alliance) - {0, 1, 1, 0, 0}, //Bank 24, AIL (When Two Worlds War :: 4op, MISSING INSTRUMENTS) - {0, 1, 1, 0, 0}, //Bank 25, AIL (Bards Tale Construction :: MISSING INSTRUMENTS) + {0, 1, 1, 0, 0}, //Bank 24, AIL (When Two Worlds War :MISS-INS:) + {0, 1, 1, 0, 0}, //Bank 25, AIL (Bards Tale Construction :MISS-INS:) {0, 1, 1, 0, 0}, //Bank 26, AIL (Return to Zork) {0, 1, 1, 0, 0}, //Bank 27, AIL (Theme Hospital) {0, 1, 1, 0, 0}, //Bank 28, AIL (National Hockey League PA) @@ -10451,25 +10451,25 @@ const AdlBankSetup adlbanksetup[74] = {0, 1, 1, 0, 0}, //Bank 33, AIL (Death Gate) {0, 1, 1, 0, 0}, //Bank 34, AIL (FIFA International Soccer) {0, 1, 1, 0, 0}, //Bank 35, AIL (Starship Invasion) - {0, 1, 1, 0, 0}, //Bank 36, AIL (Super Street Fighter 2 :: 4op) - {0, 1, 1, 0, 0}, //Bank 37, AIL (Lords of the Realm :: MISSING INSTRUMENTS) + {0, 1, 1, 0, 0}, //Bank 36, AIL (Super Street Fighter 2 :4op:) + {0, 1, 1, 0, 0}, //Bank 37, AIL (Lords of the Realm :MISS-INS:) {0, 1, 1, 0, 0}, //Bank 38, AIL (SimFarm, SimHealth :: 4op) {0, 1, 1, 0, 0}, //Bank 39, AIL (SimFarm, Settlers, Serf City) - {0, 1, 1, 0, 0}, //Bank 40, AIL (Caesar 2 :: partially 4op, MISSING INSTRUMENTS) + {0, 1, 1, 0, 0}, //Bank 40, AIL (Caesar 2, :p4op::MISS-INS:) {0, 1, 1, 0, 0}, //Bank 41, AIL (Syndicate Wars) {0, 1, 1, 0, 0}, //Bank 42, AIL (Bubble Bobble Feat. Rainbow Islands, Z) {0, 1, 1, 0, 0}, //Bank 43, AIL (Warcraft) - {0, 1, 1, 0, 0}, //Bank 44, AIL (Terra Nova Strike Force Centuri :: partially 4op) - {0, 1, 1, 0, 0}, //Bank 45, AIL (System Shock :: partially 4op) + {0, 1, 1, 0, 0}, //Bank 44, AIL (Terra Nova Strike Force Centuri :p4op:) + {0, 1, 1, 0, 0}, //Bank 45, AIL (System Shock :p4op:) {0, 1, 1, 0, 0}, //Bank 46, AIL (Advanced Civilization) - {0, 1, 1, 0, 0}, //Bank 47, AIL (Battle Chess 4000 :: partially 4op, melodic only) - {0, 1, 1, 0, 0}, //Bank 48, AIL (Ultimate Soccer Manager :: partially 4op) - {0, 1, 1, 0, 0}, //Bank 49, AIL (Air Bucks, Blue And The Gray, America Invades, Terminator 2029) + {0, 1, 1, 0, 0}, //Bank 47, AIL (Battle Chess 4000 :p4op:) + {0, 1, 1, 0, 0}, //Bank 48, AIL (Ultimate Soccer Manager :p4op:) + {0, 1, 1, 0, 0}, //Bank 49, AIL (Air Bucks, Blue And The Gray, etc) {0, 1, 1, 0, 0}, //Bank 50, AIL (Ultima Underworld 2) {0, 1, 1, 0, 0}, //Bank 51, AIL (Kasparov's Gambit) - {0, 1, 1, 0, 0}, //Bank 52, AIL (High Seas Trader :: MISSING INSTRUMENTS) - {0, 0, 0, 0, 0}, //Bank 53, AIL (Master of Magic, Master of Orion 2 :: 4op, std percussion) - {0, 0, 0, 0, 0}, //Bank 54, AIL (Master of Magic, Master of Orion 2 :: 4op, orchestral percussion) + {0, 1, 1, 0, 0}, //Bank 52, AIL (High Seas Trader :MISS-INS:) + {0, 0, 0, 0, 0}, //Bank 53, AIL (Master of Magic, :4op: std percussion) + {0, 0, 0, 0, 0}, //Bank 54, AIL (Master of Magic, :4op: orchestral percussion) {0, 0, 0, 0, 0}, //Bank 55, SB (Action Soccer) {0, 0, 0, 0, 0}, //Bank 56, SB (3d Cyberpuck :: melodic only) {0, 0, 0, 0, 0}, //Bank 57, SB (Simon the Sorcerer :: melodic only) diff --git a/src/sound/adlmidi/adlmidi.cpp b/src/sound/adlmidi/adlmidi.cpp index 586cb901e..db97447a2 100644 --- a/src/sound/adlmidi/adlmidi.cpp +++ b/src/sound/adlmidi/adlmidi.cpp @@ -108,7 +108,7 @@ ADLMIDI_EXPORT int adl_setBank(ADL_MIDIPlayer *device, int bank) if(static_cast(bankno) >= NumBanks) { char errBuf[150]; - std::snprintf(errBuf, 150, "Embedded bank number may only be 0..%u!\n", (NumBanks - 1)); + snprintf(errBuf, 150, "Embedded bank number may only be 0..%u!\n", (NumBanks - 1)); play->setErrorString(errBuf); return -1; } @@ -139,7 +139,7 @@ ADLMIDI_EXPORT int adl_setNumFourOpsChn(ADL_MIDIPlayer *device, int ops4) if((unsigned int)ops4 > 6 * play->m_setup.NumCards) { char errBuff[250]; - std::snprintf(errBuff, 250, "number of four-op channels may only be 0..%u when %u OPL3 cards are used.\n", (6 * (play->m_setup.NumCards)), play->m_setup.NumCards); + snprintf(errBuff, 250, "number of four-op channels may only be 0..%u when %u OPL3 cards are used.\n", (6 * (play->m_setup.NumCards)), play->m_setup.NumCards); play->setErrorString(errBuff); return -1; } diff --git a/src/sound/adlmidi/adlmidi_load.cpp b/src/sound/adlmidi/adlmidi_load.cpp index 03206bcd6..00a4ce3de 100644 --- a/src/sound/adlmidi/adlmidi_load.cpp +++ b/src/sound/adlmidi/adlmidi_load.cpp @@ -103,7 +103,8 @@ enum WOPL_InstrumentFlags { WOPL_Flags_NONE = 0, WOPL_Flag_Enable4OP = 0x01, - WOPL_Flag_Pseudo4OP = 0x02 + WOPL_Flag_Pseudo4OP = 0x02, + WOPL_Flag_NoSound = 0x04, }; struct WOPL_Inst @@ -151,6 +152,7 @@ static bool readInstrument(MIDIplay::fileReader &file, WOPL_Inst &ins, uint16_t uint8_t flags = idata[39]; ins.adlins.flags = (flags & WOPL_Flag_Enable4OP) && (flags & WOPL_Flag_Pseudo4OP) ? adlinsdata::Flag_Pseudo4op : 0; + ins.adlins.flags|= (flags & WOPL_Flag_NoSound) ? adlinsdata::Flag_NoSound : 0; ins.fourOps = (flags & WOPL_Flag_Enable4OP) || (flags & WOPL_Flag_Pseudo4OP); ins.op[0].feedconn = (idata[40]); diff --git a/src/sound/adlmidi/adlmidi_midiplay.cpp b/src/sound/adlmidi/adlmidi_midiplay.cpp index 65e7af5ef..13e1008c0 100644 --- a/src/sound/adlmidi/adlmidi_midiplay.cpp +++ b/src/sound/adlmidi/adlmidi_midiplay.cpp @@ -319,7 +319,7 @@ bool MIDIplay::buildTrackData() evtPos.delay = ReadVarLenEx(&trackPtr, end, ok); if(!ok) { - int len = std::sprintf(error, "buildTrackData: Can't read variable-length value at begin of track %d.\n", (int)tk); + int len = snprintf(error, 150, "buildTrackData: Can't read variable-length value at begin of track %d.\n", (int)tk); if((len > 0) && (len < 150)) errorString += std::string(error, (size_t)len); return false; @@ -347,7 +347,7 @@ bool MIDIplay::buildTrackData() event = parseEvent(&trackPtr, end, status); if(!event.isValid) { - int len = std::sprintf(error, "buildTrackData: Fail to parse event in the track %d.\n", (int)tk); + int len = snprintf(error, 150, "buildTrackData: Fail to parse event in the track %d.\n", (int)tk); if((len > 0) && (len < 150)) errorString += std::string(error, (size_t)len); return false; @@ -1031,7 +1031,7 @@ bool MIDIplay::realTime_NoteOn(uint8_t channel, uint8_t note, uint8_t velocity) { if(!caugh_missing_banks_melodic.count(bank)) { - hooks.onDebugMessage(hooks.onDebugMessage_userData, "[%i] Playing missing percussion bank %i (patch %i)", channel, bank, midiins); + hooks.onDebugMessage(hooks.onDebugMessage_userData, "[%i] Playing missing percussion MIDI bank %i (patch %i)", channel, bank, midiins); caugh_missing_banks_melodic.insert(bank); } } @@ -1046,7 +1046,7 @@ bool MIDIplay::realTime_NoteOn(uint8_t channel, uint8_t note, uint8_t velocity) { if(!caugh_missing_banks_percussion.count(bank)) { - hooks.onDebugMessage(hooks.onDebugMessage_userData, "[%i] Playing missing melodic bank %i (patch %i)", channel, bank, midiins); + hooks.onDebugMessage(hooks.onDebugMessage_userData, "[%i] Playing missing melodic MIDI bank %i (patch %i)", channel, bank, midiins); caugh_missing_banks_percussion.insert(bank); } } @@ -1060,29 +1060,48 @@ bool MIDIplay::realTime_NoteOn(uint8_t channel, uint8_t note, uint8_t velocity) if(midiins == 48 || midiins == 50) vol /= 4; // HACK */ //if(midiins == 56) vol = vol*6/10; // HACK - //int meta = banks[opl.AdlBank][midiins]; - const size_t meta = opl.GetAdlMetaNumber(midiins); - const adlinsdata &ains = opl.GetAdlMetaIns(meta); + + size_t meta = opl.GetAdlMetaNumber(midiins); + const adlinsdata *ains = &opl.GetAdlMetaIns(meta); int16_t tone = note; - if(ains.tone) + if(!isPercussion && !isXgPercussion && (bank > 0)) // For non-zero banks + { + if(ains->flags & adlinsdata::Flag_NoSound) + { + if(hooks.onDebugMessage) + { + if(!caugh_missing_instruments.count(static_cast(midiins))) + { + hooks.onDebugMessage(hooks.onDebugMessage_userData, "[%i] Caugh a blank instrument %i (offset %i) in the MIDI bank %u", channel, Ch[channel].patch, midiins, bank); + caugh_missing_instruments.insert(static_cast(midiins)); + } + } + bank = 0; + midiins = Ch[channel].patch; + meta = opl.GetAdlMetaNumber(midiins); + ains = &opl.GetAdlMetaIns(meta); + } + } + + if(ains->tone) { /*if(ains.tone < 20) tone += ains.tone; else*/ - if(ains.tone < 128) - tone = ains.tone; + if(ains->tone < 128) + tone = ains->tone; else - tone -= ains.tone - 128; + tone -= ains->tone - 128; } //uint16_t i[2] = { ains.adlno1, ains.adlno2 }; - bool pseudo_4op = ains.flags & adlinsdata::Flag_Pseudo4op; + bool pseudo_4op = ains->flags & adlinsdata::Flag_Pseudo4op; MIDIchannel::NoteInfo::Phys voices[2] = { - {ains.adlno1, false}, - {ains.adlno2, pseudo_4op} + {ains->adlno1, false}, + {ains->adlno2, pseudo_4op} }; if((opl.AdlPercussionMode == 1) && PercussionMap[midiins & 0xFF]) @@ -1090,7 +1109,7 @@ bool MIDIplay::realTime_NoteOn(uint8_t channel, uint8_t note, uint8_t velocity) if(hooks.onDebugMessage) { - if(!caugh_missing_instruments.count(static_cast(midiins)) && (ains.flags & adlinsdata::Flag_NoSound)) + if(!caugh_missing_instruments.count(static_cast(midiins)) && (ains->flags & adlinsdata::Flag_NoSound)) { hooks.onDebugMessage(hooks.onDebugMessage_userData, "[%i] Playing missing instrument %i", channel, midiins); caugh_missing_instruments.insert(static_cast(midiins)); @@ -2624,12 +2643,12 @@ ADLMIDI_EXPORT void AdlInstrumentTester::NextAdl(int offset) if(ains.tone) { /*if(ains.tone < 20) - std::sprintf(ToneIndication, "+%-2d", ains.tone); + snprintf(ToneIndication, 8, "+%-2d", ains.tone); else*/ if(ains.tone < 128) - std::sprintf(ToneIndication, "=%-2d", ains.tone); + snprintf(ToneIndication, 8, "=%-2d", ains.tone); else - std::sprintf(ToneIndication, "-%-2d", ains.tone - 128); + snprintf(ToneIndication, 8, "-%-2d", ains.tone - 128); } std::printf("%s%s%s%u\t", ToneIndication, diff --git a/src/sound/opnmidi/opnmidi_load.cpp b/src/sound/opnmidi/opnmidi_load.cpp index 8e87cabc8..15d0a5d35 100644 --- a/src/sound/opnmidi/opnmidi_load.cpp +++ b/src/sound/opnmidi/opnmidi_load.cpp @@ -280,10 +280,14 @@ bool OPNMIDIplay::LoadBank(OPNMIDIplay::fileReader &fr) size_t off = 37 + op * 7; std::memcpy(data.OPS[op].data, idata + off, 7); } + + meta.flags = 0; if(version >= 2) { meta.ms_sound_kon = toUint16BE(idata + 65); meta.ms_sound_koff = toUint16BE(idata + 67); + if((meta.ms_sound_kon == 0) && (meta.ms_sound_koff == 0)) + meta.flags |= opnInstMeta::Flag_NoSound; } else { @@ -295,7 +299,6 @@ bool OPNMIDIplay::LoadBank(OPNMIDIplay::fileReader &fr) meta.opnno2 = uint16_t(opn.dynamic_instruments.size()); /* Junk, delete later */ - meta.flags = 0; meta.fine_tune = 0.0; /* Junk, delete later */ diff --git a/src/sound/opnmidi/opnmidi_midiplay.cpp b/src/sound/opnmidi/opnmidi_midiplay.cpp index 630df1c77..cd77429d8 100644 --- a/src/sound/opnmidi/opnmidi_midiplay.cpp +++ b/src/sound/opnmidi/opnmidi_midiplay.cpp @@ -280,7 +280,7 @@ bool OPNMIDIplay::buildTrackData() evtPos.delay = ReadVarLenEx(&trackPtr, end, ok); if(!ok) { - int len = std::sprintf(error, "buildTrackData: Can't read variable-length value at begin of track %d.\n", (int)tk); + int len = snprintf(error, 150, "buildTrackData: Can't read variable-length value at begin of track %d.\n", (int)tk); if((len > 0) && (len < 150)) errorString += std::string(error, (size_t)len); return false; @@ -308,7 +308,7 @@ bool OPNMIDIplay::buildTrackData() event = parseEvent(&trackPtr, end, status); if(!event.isValid) { - int len = std::sprintf(error, "buildTrackData: Fail to parse event in the track %d.\n", (int)tk); + int len = snprintf(error, 150, "buildTrackData: Fail to parse event in the track %d.\n", (int)tk); if((len > 0) && (len < 150)) errorString += std::string(error, (size_t)len); return false; @@ -981,7 +981,7 @@ bool OPNMIDIplay::realTime_NoteOn(uint8_t channel, uint8_t note, uint8_t velocit { if(!caugh_missing_banks_melodic.count(bank)) { - hooks.onDebugMessage(hooks.onDebugMessage_userData, "[%i] Playing missing percussion bank %i (patch %i)", channel, bank, midiins); + hooks.onDebugMessage(hooks.onDebugMessage_userData, "[%i] Playing missing percussion MIDI bank %i (patch %i)", channel, bank, midiins); caugh_missing_banks_melodic.insert(bank); } } @@ -996,7 +996,7 @@ bool OPNMIDIplay::realTime_NoteOn(uint8_t channel, uint8_t note, uint8_t velocit { if(!caugh_missing_banks_melodic.count(bank)) { - hooks.onDebugMessage(hooks.onDebugMessage_userData, "[%i] Playing missing melodic bank %i (patch %i)", channel, bank, midiins); + hooks.onDebugMessage(hooks.onDebugMessage_userData, "[%i] Playing missing melodic MIDI bank %i (patch %i)", channel, bank, midiins); caugh_missing_banks_melodic.insert(bank); } } @@ -1011,28 +1011,47 @@ bool OPNMIDIplay::realTime_NoteOn(uint8_t channel, uint8_t note, uint8_t velocit */ //if(midiins == 56) vol = vol*6/10; // HACK - const size_t meta = opn.GetAdlMetaNumber(midiins); - const opnInstMeta &ains = opn.GetAdlMetaIns(meta); + size_t meta = opn.GetAdlMetaNumber(midiins); + const opnInstMeta *ains = &opn.GetAdlMetaIns(meta); int16_t tone = note; - if(ains.tone) + if(!isPercussion && !isXgPercussion && (bank > 0)) // For non-zero banks + { + if(ains->flags & opnInstMeta::Flag_NoSound) + { + if(hooks.onDebugMessage) + { + if(!caugh_missing_instruments.count(static_cast(midiins))) + { + hooks.onDebugMessage(hooks.onDebugMessage_userData, "[%i] Caugh a blank instrument %i (offset %i) in the MIDI bank %u", channel, Ch[channel].patch, midiins, bank); + caugh_missing_instruments.insert(static_cast(midiins)); + } + } + bank = 0; + midiins = Ch[channel].patch; + meta = opn.GetAdlMetaNumber(midiins); + ains = &opn.GetAdlMetaIns(meta); + } + } + + if(ains->tone) { /*if(ains.tone < 20) tone += ains.tone; else*/ - if(ains.tone < 128) - tone = ains.tone; + if(ains->tone < 128) + tone = ains->tone; else - tone -= ains.tone - 128; + tone -= ains->tone - 128; } - uint16_t i[2] = { ains.opnno1, ains.opnno2 }; + uint16_t i[2] = { ains->opnno1, ains->opnno2 }; //bool pseudo_4op = ains.flags & opnInstMeta::Flag_Pseudo8op; //if((opn.AdlPercussionMode == 1) && PercussionMap[midiins & 0xFF]) i[1] = i[0]; if(hooks.onDebugMessage) { - if(!caugh_missing_instruments.count(static_cast(midiins)) && (ains.flags & opnInstMeta::Flag_NoSound)) + if(!caugh_missing_instruments.count(static_cast(midiins)) && (ains->flags & opnInstMeta::Flag_NoSound)) { hooks.onDebugMessage(hooks.onDebugMessage_userData, "[%i] Playing missing instrument %i", channel, midiins); caugh_missing_instruments.insert(static_cast(midiins)); @@ -2548,12 +2567,12 @@ retry_arpeggio: // if(ains.tone) // { // /*if(ains.tone < 20) -// std::sprintf(ToneIndication, "+%-2d", ains.tone); +// snprintf(ToneIndication, 8, "+%-2d", ains.tone); // else*/ // if(ains.tone < 128) -// std::sprintf(ToneIndication, "=%-2d", ains.tone); +// snprintf(ToneIndication, 8, "=%-2d", ains.tone); // else -// std::sprintf(ToneIndication, "-%-2d", ains.tone - 128); +// snprintf(ToneIndication, 8, "-%-2d", ains.tone - 128); // } // std::printf("%s%s%s%u\t", // ToneIndication, diff --git a/src/swrenderer/things/r_playersprite.cpp b/src/swrenderer/things/r_playersprite.cpp index 3fa68374d..7be96ab94 100644 --- a/src/swrenderer/things/r_playersprite.cpp +++ b/src/swrenderer/things/r_playersprite.cpp @@ -357,7 +357,8 @@ namespace swrenderer invertcolormap = !invertcolormap; } - bool fullbright = !foggy && pspr->GetState()->GetFullbright(); + const FState* const psprState = pspr->GetState(); + bool fullbright = !foggy && (psprState == nullptr ? false : psprState->GetFullbright()); bool fadeToBlack = (vis.RenderStyle.Flags & STYLEF_FadeToBlack) != 0; vis.Light.SetColormap(0, spriteshade, basecolormap, fullbright, invertcolormap, fadeToBlack); diff --git a/wadsrc/static/zscript/shared/fastprojectile.txt b/wadsrc/static/zscript/shared/fastprojectile.txt index c861a3f8f..4ba05a7bf 100644 --- a/wadsrc/static/zscript/shared/fastprojectile.txt +++ b/wadsrc/static/zscript/shared/fastprojectile.txt @@ -66,13 +66,21 @@ class FastProjectile : Actor int count = 8; if (radius > 0) { - while ( abs(Vel.X) >= radius * count || abs(Vel.Y) >= radius * count || abs(Vel.Z) >= height * count) + while (abs(Vel.X) >= radius * count || abs(Vel.Y) >= radius * count) { // we need to take smaller steps. count += count; } } + if (height > 0) + { + while (abs(Vel.Z) >= height * count) + { + count += count; + } + } + // Handle movement if (Vel != (0, 0, 0) || (pos.Z != floorz)) { diff --git a/wadsrc/static/zscript/shared/randomspawner.txt b/wadsrc/static/zscript/shared/randomspawner.txt index 9914670b4..24892aeec 100644 --- a/wadsrc/static/zscript/shared/randomspawner.txt +++ b/wadsrc/static/zscript/shared/randomspawner.txt @@ -44,16 +44,16 @@ class RandomSpawner : Actor { while (di != null) { - if (di.Name != 'None') + bool shouldSkip = (di.Name == 'None') || (nomonsters && IsMonster(di)); + + if (!shouldSkip) { - if (!nomonsters || !IsMonster(di)) - { - int amt = di.Amount; - if (amt < 0) amt = 1; // default value is -1, we need a positive value. - n += amt; // this is how we can weight the list. - } - di = di.Next; + int amt = di.Amount; + if (amt < 0) amt = 1; // default value is -1, we need a positive value. + n += amt; // this is how we can weight the list. } + + di = di.Next; } if (n == 0) { // Nothing left to spawn. They must have all been monsters, and monsters are disabled.