libsidplayfp 1.8.8
WaveformCalculator.h
1/*
2 * This file is part of libsidplayfp, a SID player engine.
3 *
4 * Copyright 2011-2016 Leandro Nini <drfiemost@users.sourceforge.net>
5 * Copyright 2007-2010 Antti Lankila
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20 */
21
22#ifndef WAVEFORMCALCULATOR_h
23#define WAVEFORMCALCULATOR_h
24
25#include <map>
26
27#include "siddefs-fp.h"
28#include "array.h"
29
30
31namespace reSIDfp
32{
33
37typedef struct
38{
39 float bias;
40 float pulsestrength;
41 float topbit;
42 float distance1;
43 float distance2;
44 float stmix;
46
93{
94private:
95 typedef std::map<const CombinedWaveformConfig*, matrix_t> cw_cache_t;
96
97private:
98 cw_cache_t CACHE;
99
100 static const CombinedWaveformConfig config[2][4];
101
102private:
110 short calculateCombinedWaveform(CombinedWaveformConfig config, int waveform, int accumulator) const;
111
113
114public:
119
126 matrix_t* buildTable(ChipModel model);
127};
128
129} // namespace reSIDfp
130
131#endif
Definition: array.h:42
Definition: WaveformCalculator.h:93
matrix_t * buildTable(ChipModel model)
Definition: WaveformCalculator.cpp:71
static WaveformCalculator * getInstance()
Definition: WaveformCalculator.cpp:29
Definition: WaveformCalculator.h:38