示例#1
0
        public ScummEngine7(GameSettings game, IGraphicsManager graphicsManager, IInputManager inputManager, IMixer mixer)
            : base(game, graphicsManager, inputManager, mixer)
        {
            if (Game.GameId == GameId.Dig && (Game.Features.HasFlag(GameFeatures.Demo)))
            {
                _smushFrameRate = 15;
            }
            else
            {
                _smushFrameRate = (Game.GameId == GameId.FullThrottle) ? 10 : 12;
            }

            for (int i = 0; i < _subtitleQueue.Length; i++)
            {
                _subtitleQueue[i] = new SubtitleText();
            }

            int dimuseTempo = 10;

            MusicEngine = IMuseDigital = new IMuseDigital(this, mixer, dimuseTempo);
            IMuseDigital.SetAudioNames(ResourceManager.AudioNames);

            // Create FT INSANE object
            if (Game.GameId == GameId.FullThrottle)
            {
                Insane = new Insane.Insane(this);
            }

            SmushMixer  = new SmushMixer(Mixer);
            SmushPlayer = new SmushPlayer(this);
        }
示例#2
0
 void Codec1(byte[] dst, int dstPos, byte[] src, int srcfOffset, int width, int height, int pitch)
 {
     SmushPlayer.SmushDecodeCodec1(dst, dstPos, src, srcfOffset, 0, 0, width, height, pitch);
     for (var i = 0; i < width * height; i++)
     {
         _paletteMap[dst[dstPos + i]] = 1;
     }
 }
示例#3
0
        protected override void KernelSetFunctions()
        {
            var args = GetStackList(30);

            switch (args[0])
            {
            case 4:
                GrabCursor(args[1], args[2], args[3], args[4]);
                break;

            case 6:
            {
                // SMUSH movie playback
                if (args[1] == 0 && !_skipVideo)
                {
                    var videoname = GetStringAddressVar(VariableVideoName).GetText();
                    // TODO: vs
                    // Correct incorrect smush filename in Macintosh FT demo
//                            if ((_game.id == GID_FT) && (_game.features & GF_DEMO) && (_game.platform == Common::kPlatformMacintosh) &&
//                                (!strcmp(videoname, "jumpgorge.san")))
//                                _splayer.play("jumpgorg.san", _smushFrameRate);
                    // WORKAROUND: A faster frame rate is required, to keep audio/video in sync in this video
//                            else
                    if (Game.GameId == GameId.Dig && videoname == "sq3.san")
                    {
                        SmushPlayer.Play(videoname, 14);
                    }
                    else
                    {
                        SmushPlayer.Play(videoname, _smushFrameRate);
                    }

                    if (Game.GameId == GameId.Dig)
                    {
                        _disableFadeInEffect = true;
                    }
                }
                else if (Game.GameId == GameId.FullThrottle && !_skipVideo)
                {
                    var insaneVarNum = (Game.Features.HasFlag(GameFeatures.Demo) /* && (Game.Platform == Common::kPlatformDOS)*/)
                                ? (uint)232 : 233;

                    Insane.SetSmushParams(_smushFrameRate);
                    Insane.RunScene(insaneVarNum);
                }
            }
            break;

            case 12:
                SetCursorFromImg(args[1], -1, args[2]);
                break;

            case 13:
                Actors[args[1]].RemapActorPalette(args[2], args[3], args[4], -1);
                break;

            case 14:
                Actors[args[1]].RemapActorPalette(args[2], args[3], args[4], args[5]);
                break;

            case 15:
                _smushFrameRate = args[1];
                break;

            case 16:
            case 17:
                EnqueueText(GetStringAddressVar(VariableString2Draw), args[3], args[4], (byte)args[2], (byte)args[1], (args[0] == 16));
                break;

            case 20:
                IMuseDigital.RadioChatterSFX = args[1] != 0;
                break;

            case 107:
                Actors[args[1]].SetScale(args[2], -1);
                break;

            case 108:
                SetShadowPalette(args[1], args[2], args[3], args[4], args[5], args[6]);
                break;

            case 109:
                SetShadowPalette(0, args[1], args[2], args[3], args[4], args[5]);
                break;

            case 117:
                FreezeScripts(2);
                break;

            case 118:
                EnqueueObject(args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8], 3);
                break;

            case 119:
                EnqueueObject(args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8], 0);
                break;

            case 124:
                _saveSound = args[1] != 0;
                break;

            default:
//                    Console.Error.WriteLine("KernelSetFunctions: default case {0} (param count {1})", args[0], args.Length);
                break;
            }
        }