cog/Frameworks/libsidplay/sidplay-residfp-code/.svn/pristine/ff/ffc6d6686bf5526cc2cf4b0ba30...

176 lines
3.6 KiB
Plaintext

/*
* This file is part of libsidplayfp, a SID player engine.
*
* Copyright 2011-2016 Leandro Nini <drfiemost@users.sourceforge.net>
* Copyright 2007-2010 Antti Lankila
* Copyright 2000-2001 Simon White
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifndef SIDCONFIG_H
#define SIDCONFIG_H
#include <stdint.h>
#include "sidplayfp/siddefs.h"
class sidbuilder;
/**
* SidConfig
*
* An instance of this class is used to transport emulator settings
* to and from the interface class.
*/
class SID_EXTERN SidConfig
{
public:
/// Playback mode
typedef enum
{
MONO = 1,
STEREO
} playback_t;
/// SID chip model
typedef enum
{
MOS6581,
MOS8580
} sid_model_t;
/// C64 model
typedef enum
{
PAL,
NTSC,
OLD_NTSC,
DREAN
} c64_model_t;
/// Sampling method
typedef enum
{
INTERPOLATE,
RESAMPLE_INTERPOLATE
} sampling_method_t;
public:
/**
* Maximum power on delay.
* - Delays <= MAX produce constant results
* - Delays > MAX produce random results
*/
SID_DEPRECATED static const uint_least16_t MAX_POWER_ON_DELAY = 0x1FFF;
SID_DEPRECATED static const uint_least16_t DEFAULT_POWER_ON_DELAY = MAX_POWER_ON_DELAY + 1;
static const uint_least32_t DEFAULT_SAMPLING_FREQ = 44100;
public:
/**
* Intended c64 model when unknown or forced.
* - PAL
* - NTSC
* - OLD_NTSC
* - DREAN
*/
c64_model_t defaultC64Model;
/**
* Force the model to #defaultC64Model ignoring tune's clock setting.
*/
bool forceC64Model;
/**
* Intended sid model when unknown or forced.
* - MOS6581
* - MOS8580
*/
sid_model_t defaultSidModel;
/**
* Force the sid model to #defaultSidModel.
*/
bool forceSidModel;
/**
* Playbak mode.
* - MONO
* - STEREO
*/
playback_t playback;
/**
* Sampling frequency.
*/
uint_least32_t frequency;
/**
* Extra SID chips addresses.
*/
//@{
uint_least16_t secondSidAddress;
uint_least16_t thirdSidAddress;
//@}
/**
* Pointer to selected emulation,
* reSIDfp, reSID or hardSID.
*/
sidbuilder *sidEmulation;
/**
* Left channel volume.
*/
uint_least32_t leftVolume;
/**
* Right channel volume.
*/
uint_least32_t rightVolume;
/**
* Power on delay cycles.
*/
SID_DEPRECATED uint_least16_t powerOnDelay;
/**
* Sampling method.
* - INTERPOLATE
* - RESAMPLE_INTERPOLATE
*/
sampling_method_t samplingMethod;
/**
* Faster low-quality emulation,
* available only for reSID.
*/
bool fastSampling;
/**
* Compare two config objects.
*
* @return true if different
*/
bool compare(const SidConfig &config);
public:
SidConfig();
};
#endif // SIDCONFIG_H