/// <summary>
        /// Cast the configuration to string format
        /// </summary>
        /// <returns>String DosBox configuration format</returns>
        public override string ToString()
        {
            StringBuilder sb = new StringBuilder();

            sb.AppendLine(SDL?.ToString());
            sb.AppendLine(DosBox?.ToString());
            sb.AppendLine(Render?.ToString());
            sb.AppendLine(CPU?.ToString());
            sb.AppendLine(Mixer?.ToString());
            sb.AppendLine(Midi?.ToString());
            sb.AppendLine(SoundBlaster?.ToString());
            sb.AppendLine(GUS?.ToString());
            sb.AppendLine(Speaker?.ToString());
            sb.AppendLine(Joystick?.ToString());
            sb.AppendLine(Serial?.ToString());
            sb.AppendLine(DOS?.ToString());
            sb.AppendLine(IPX?.ToString());
            sb.Append(Autoexec?.ToString());

            return(sb.ToString());
        }
Beispiel #2
0
 public Mixer(SoundBlaster blaster) => this.blaster = blaster;
        /// <summary>
        /// Load configuration from dictionary
        /// </summary>
        /// <param name="dictionary">Dictionary with dosbox configuration data.</param>
        /// <returns>DosBoxConfiguration data</returns>
        public DosBoxConfiguration LoadDictionary(IDictionary <string, object> dictionary)
        {
            foreach (var keyValue in dictionary)
            {
                switch (keyValue.Key)
                {
                case "sdl":
                    if (keyValue.Value is IDictionary <string, object> )
                    {
                        SDL.LoadDictionary(keyValue.Value as IDictionary <string, object>);
                    }
                    break;

                case "dosbox":
                    if (keyValue.Value is IDictionary <string, object> )
                    {
                        DosBox.LoadDictionary(keyValue.Value as IDictionary <string, object>);
                    }
                    break;

                case "render":
                    if (keyValue.Value is IDictionary <string, object> )
                    {
                        Render.LoadDictionary(keyValue.Value as IDictionary <string, object>);
                    }
                    break;

                case "cpu":
                    if (keyValue.Value is IDictionary <string, object> )
                    {
                        CPU.LoadDictionary(keyValue.Value as IDictionary <string, object>);
                    }
                    break;

                case "mixer":
                    if (keyValue.Value is IDictionary <string, object> )
                    {
                        Mixer.LoadDictionary(keyValue.Value as IDictionary <string, object>);
                    }
                    break;

                case "midi":
                    if (keyValue.Value is IDictionary <string, object> )
                    {
                        Midi.LoadDictionary(keyValue.Value as IDictionary <string, object>);
                    }
                    break;

                case "sblaster":
                    if (keyValue.Value is IDictionary <string, object> )
                    {
                        SoundBlaster.LoadDictionary(keyValue.Value as IDictionary <string, object>);
                    }
                    break;

                case "gus":
                    if (keyValue.Value is IDictionary <string, object> )
                    {
                        GUS.LoadDictionary(keyValue.Value as IDictionary <string, object>);
                    }
                    break;

                case "speaker":
                    if (keyValue.Value is IDictionary <string, object> )
                    {
                        Speaker.LoadDictionary(keyValue.Value as IDictionary <string, object>);
                    }
                    break;

                case "joystick":
                    if (keyValue.Value is IDictionary <string, object> )
                    {
                        Joystick.LoadDictionary(keyValue.Value as IDictionary <string, object>);
                    }
                    break;

                case "serial":
                    if (keyValue.Value is IDictionary <string, object> )
                    {
                        Serial.LoadDictionary(keyValue.Value as IDictionary <string, object>);
                    }
                    break;

                case "dos":
                    if (keyValue.Value is IDictionary <string, object> )
                    {
                        DOS.LoadDictionary(keyValue.Value as IDictionary <string, object>);
                    }
                    break;

                case "ipx":
                    if (keyValue.Value is IDictionary <string, object> )
                    {
                        IPX.LoadDictionary(keyValue.Value as IDictionary <string, object>);
                    }
                    break;

                case "autoexec":
                    if (keyValue.Value is IDictionary <string, object> )
                    {
                        Autoexec.LoadDictionary(keyValue.Value as IDictionary <string, object>);
                    }
                    break;

                default:
                    break;
                }
            }

            return(this);
        }
        /// <summary>
        /// Load the default DosBox configuration
        /// </summary>
        /// <returns>DosBoxConfiguration data</returns>
        public DosBoxConfiguration LoadDeafult()
        {
            SDL.AddAutoLock()
            .AddFullDouble()
            .AddFullResolution(Resolution.Original)
            .AddFullScreen()
            .AddOutput(VideoOutput.Surface)
            .AddPriorityFocused()
            .AddPriorityMinimized()
            .AddSensitivity()
            .AddUseScanCodes()
            .AddWaitOnError()
            .AddWindowResolution(Resolution.Original);

            DosBox.AddCaptures()
            .AddMachine()
            .AddMemSize();

            Render.AddAspect()
            .AddFrameskip()
            .AddScaler(ScalerType.Normal2x);

            CPU.AddCore()
            .AddCPUType()
            .AddCycles(new CPUCycles("auto"))
            .AddCycleUp()
            .AddCycleDown();

            Mixer.AddNoSound()
            .AddRate()
            .AddBlockSize()
            .AddPreBuffer();

            Midi.AddMPU401()
            .AddMidiDevice();

            SoundBlaster.AddSBType()
            .AddSBBase()
            .AddIRQ()
            .AddDMA()
            .AddHDMA()
            .AddSoundMixer()
            .AddOplMode()
            .AddOplEmu()
            .AddOplRate();

            GUS.AddGUS()
            .AddGusRate()
            .AddGusBase()
            .AddGusIRQ()
            .AddGusDMA()
            .AddUltraDir();

            Speaker.AddPCSpeaker()
            .AddPCRate()
            .AddTandy()
            .AddTandyRate()
            .AddDisney();

            Joystick.AddJoystickType()
            .AddTimed()
            .AddAutoFire()
            .AddSwap34()
            .AddButtonWrap();

            Serial.AddSerial1(Options.Serial.CreateDummy())
            .AddSerial2(Options.Serial.CreateDummy())
            .AddSerial3(Options.Serial.CreateDisabled())
            .AddSerial4(Options.Serial.CreateDisabled());

            DOS.AddXMS()
            .AddEMS()
            .AddUMB()
            .AddKeyboardLayout(KeyboardLayout.Auto);

            IPX.AddIPX();

            return(this);
        }