summaryrefslogtreecommitdiff
path: root/libsidplay2/sidplay-libs-2.1.0/builders/resid-builder/src/resid.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libsidplay2/sidplay-libs-2.1.0/builders/resid-builder/src/resid.cpp')
-rw-r--r--libsidplay2/sidplay-libs-2.1.0/builders/resid-builder/src/resid.cpp200
1 files changed, 0 insertions, 200 deletions
diff --git a/libsidplay2/sidplay-libs-2.1.0/builders/resid-builder/src/resid.cpp b/libsidplay2/sidplay-libs-2.1.0/builders/resid-builder/src/resid.cpp
deleted file mode 100644
index 41cbdc39..00000000
--- a/libsidplay2/sidplay-libs-2.1.0/builders/resid-builder/src/resid.cpp
+++ /dev/null
@@ -1,200 +0,0 @@
-/***************************************************************************
- c64sid.h - ReSid Wrapper for redefining the
- filter
- -------------------
- begin : Fri Apr 4 2001
- copyright : (C) 2001 by Simon White
- email : s_a_white@email.com
- ***************************************************************************/
-
-/***************************************************************************
- * *
- * 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. *
- * *
- ***************************************************************************/
-
-#include "config.h"
-
-#ifdef HAVE_EXCEPTIONS
-# include <new>
-#endif
-
-#include "resid.h"
-#include "resid-emu.h"
-#include <string.h>
-
-char ReSID::m_credit[];
-
-ReSID::ReSID (sidbuilder *builder)
-:sidemu(builder),
- m_context(NULL),
-#ifdef HAVE_EXCEPTIONS
- m_sid(*(new(std::nothrow) RESID::SID)),
-#else
- m_sid(*(new RESID::SID)),
-#endif
- m_gain(100),
- m_status(true),
- m_locked(false)
-{
- char *p = m_credit;
- m_error = "N/A";
-
- // Setup credits
- sprintf (p, "ReSID V%s Engine:", VERSION);
- p += strlen (p) + 1;
- strcpy (p, "\t(C) 1999-2002 Simon White <sidplay2@yahoo.com>");
- p += strlen (p) + 1;
- sprintf (p, "MOS6581 (SID) Emulation (ReSID V%s):", RESID::resid_version_string);
- p += strlen (p) + 1;
- sprintf (p, "\t(C) 1999-2002 Dag Lem <resid@nimrod.no>");
- p += strlen (p) + 1;
- *p = '\0';
-
- if (!&m_sid)
- {
- m_error = "RESID ERROR: Unable to create sid object";
- m_status = false;
- return;
- }
- reset (0);
-}
-
-bool ReSID::filter (const sid_filter_t *filter)
-{
- RESID::fc_point fc[0x802];
- const RESID::fc_point *f0 = fc;
- int points = 0;
-
- if (filter == NULL)
- { // Select default filter
- m_sid.fc_default (f0, points);
- }
- else
- { // Make sure there are enough filter points and they are legal
- points = filter->points;
- if ((points < 2) || (points > 0x800))
- return false;
-
- {
- const sid_fc_t fstart = {-1, 0};
- const sid_fc_t *fprev = &fstart, *fin = filter->cutoff;
- RESID::fc_point *fout = fc;
- // Last check, make sure they are list in numerical order
- // for both axis
- while (points-- > 0)
- {
- if ((*fprev)[0] >= (*fin)[0])
- return false;
- fout++;
- (*fout)[0] = (RESID::sound_sample) (*fin)[0];
- (*fout)[1] = (RESID::sound_sample) (*fin)[1];
- fprev = fin++;
- }
- // Updated ReSID interpolate requires we
- // repeat the end points
- (*(fout+1))[0] = (*fout)[0];
- (*(fout+1))[1] = (*fout)[1];
- fc[0][0] = fc[1][0];
- fc[0][1] = fc[1][1];
- points = filter->points + 2;
- }
- }
-
- // function from reSID
- points--;
- RESID::interpolate (f0, f0 + points, m_sid.fc_plotter (), 1.0);
- return true;
-}
-
-// Standard component options
-void ReSID::reset (uint8_t volume)
-{
- m_accessClk = 0;
- m_sid.reset ();
- m_sid.write (0x18, volume);
-}
-
-uint8_t ReSID::read (uint_least8_t addr)
-{
- event_clock_t cycles = m_context->getTime (m_accessClk);
- m_accessClk += cycles;
- if (cycles)
- m_sid.clock (cycles);
- return m_sid.read (addr);
-}
-
-void ReSID::write (uint_least8_t addr, uint8_t data)
-{
- event_clock_t cycles = m_context->getTime (m_accessClk);
- m_accessClk += cycles;
- if (cycles)
- m_sid.clock (cycles);
- m_sid.write (addr, data);
-}
-
-int_least32_t ReSID::output (uint_least8_t bits)
-{
- event_clock_t cycles = m_context->getTime (m_accessClk);
- m_accessClk += cycles;
- if (cycles)
- m_sid.clock (cycles);
- return m_sid.output (bits) * m_gain / 100;
-}
-
-void ReSID::filter (bool enable)
-{
- m_sid.enable_filter (enable);
-}
-
-void ReSID::voice (uint_least8_t num, uint_least8_t volume,
- bool mute)
-{ // At this time only mute is supported
- m_sid.mute (num, mute);
-}
-
-void ReSID::gain (int_least8_t percent)
-{
- // 0 to 99 is loss, 101 - 200 is gain
- m_gain = percent;
- m_gain += 100;
- if (m_gain > 200)
- m_gain = 200;
-}
-
-void ReSID::sampling (uint_least32_t freq)
-{
- m_sid.set_sampling_parameters (1000000, RESID::SAMPLE_FAST, freq);
-}
-
-// Set execution environment and lock sid to it
-bool ReSID::lock (c64env *env)
-{
- if (env == NULL)
- {
- if (!m_locked)
- return false;
- m_locked = false;
- m_context = NULL;
- }
- else
- {
- if (m_locked)
- return false;
- m_locked = true;
- m_context = &env->context ();
- }
- return true;
-}
-
-// Set the emulated SID model
-void ReSID::model (sid2_model_t model)
-{
- if (model == SID2_MOS8580)
- m_sid.set_chip_model (RESID::MOS8580);
- else
- m_sid.set_chip_model (RESID::MOS6581);
-}