annotate src/xs_sidplay2.cc @ 776:bb7b3ded919a

Indeed, libsidplay-fp's audio renderer expects buffer of 16-bit shorts and number of samples as input, AND returns number of samples. Thus, we need to divide and multiply the values accordingly. However, it also seems that some internal buffers in resid-fp are hardcoded to certain size, and using too big audio buffers cause overflows .. trying to compensate for that by limiting the amount of audio rendered. Unfortunately there are still memory corruptions.
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 06 Nov 2012 11:59:24 +0200
parents 0e9f2894b0a9
children 8fb51f9ef44e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
73
2bc607888f53 Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1 /*
2bc607888f53 Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2 XMMS-SID - SIDPlay input plugin for X MultiMedia System (XMMS)
2bc607888f53 Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3
744
c7fa50576c70 Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents: 723
diff changeset
4 libSIDPlay v2 and libSIDPlay v2-FP support
73
2bc607888f53 Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
5
324
dd201740a720 Changed copyright text.
Matti Hamalainen <ccr@tnsp.org>
parents: 321
diff changeset
6 Programmed and designed by Matti 'ccr' Hamalainen <ccr@tnsp.org>
744
c7fa50576c70 Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents: 723
diff changeset
7 (C) Copyright 1999-2012 Tecnic Software productions (TNSP)
73
2bc607888f53 Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
8
2bc607888f53 Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
9 This program is free software; you can redistribute it and/or modify
2bc607888f53 Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
10 it under the terms of the GNU General Public License as published by
2bc607888f53 Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
11 the Free Software Foundation; either version 2 of the License, or
2bc607888f53 Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
12 (at your option) any later version.
2bc607888f53 Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
13
2bc607888f53 Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
14 This program is distributed in the hope that it will be useful,
2bc607888f53 Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
2bc607888f53 Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2bc607888f53 Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
17 GNU General Public License for more details.
2bc607888f53 Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
18
412
7f694e5a1493 Updated GNU GPL (new FSF address) and some cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 402
diff changeset
19 You should have received a copy of the GNU General Public License along
7f694e5a1493 Updated GNU GPL (new FSF address) and some cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 402
diff changeset
20 with this program; if not, write to the Free Software Foundation, Inc.,
7f694e5a1493 Updated GNU GPL (new FSF address) and some cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 402
diff changeset
21 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
73
2bc607888f53 Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
22 */
2bc607888f53 Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
23 #include "xmms-sid.h"
2bc607888f53 Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
24
2bc607888f53 Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
25 #ifdef HAVE_SIDPLAY2
2bc607888f53 Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
26
460
9e683fb666ba Updates
Matti Hamalainen <ccr@tnsp.org>
parents: 445
diff changeset
27 #include <stdio.h>
73
2bc607888f53 Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
28 #include "xs_sidplay2.h"
2bc607888f53 Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
29 #include "xs_config.h"
402
f997b79a7251 More work on merging of improved STIL/SLDB handling code with completely
Matti Hamalainen <ccr@tnsp.org>
parents: 396
diff changeset
30
73
2bc607888f53 Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
31
744
c7fa50576c70 Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents: 723
diff changeset
32 #ifdef HAVE_SIDPLAY2_FP
c7fa50576c70 Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents: 723
diff changeset
33 # include <sidplayfp/sidplay2.h>
766
19e2745f75d8 Cosmetics and leftover cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 765
diff changeset
34 # include <sidplayfp/SidTuneMod.h>
19e2745f75d8 Cosmetics and leftover cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 765
diff changeset
35 # include <sidplayfp/event.h>
744
c7fa50576c70 Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents: 723
diff changeset
36 #else
c7fa50576c70 Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents: 723
diff changeset
37 # include <sidplay/sidplay2.h>
692
0126579b6652 Actually compiles now with libsidplay2 COM API, but does not work yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 660
diff changeset
38 # include <sidplay/sidlazyiptr.h>
757
9c135d421676 Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 756
diff changeset
39 # if G_BYTE_ORDER == G_BIG_ENDIAN
9c135d421676 Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 756
diff changeset
40 # define SID2_NATIVE_UNSIGNED SID2_BIG_UNSIGNED
9c135d421676 Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 756
diff changeset
41 # define SID2_NATIVE_SIGNED SID2_BIG_SIGNED
9c135d421676 Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 756
diff changeset
42 # elif G_BYTE_ORDER == G_LITTLE_ENDIAN
9c135d421676 Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 756
diff changeset
43 # define SID2_NATIVE_UNSIGNED SID2_LITTLE_UNSIGNED
9c135d421676 Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 756
diff changeset
44 # define SID2_NATIVE_SIGNED SID2_LITTLE_SIGNED
9c135d421676 Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 756
diff changeset
45 # else
9c135d421676 Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 756
diff changeset
46 # error Unsupported endianess!
9c135d421676 Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 756
diff changeset
47 # endif
692
0126579b6652 Actually compiles now with libsidplay2 COM API, but does not work yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 660
diff changeset
48 #endif
694
fd81a16434ed Move builder header inclusions.
Matti Hamalainen <ccr@tnsp.org>
parents: 693
diff changeset
49
757
9c135d421676 Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 756
diff changeset
50
756
8299288df6d2 Rename internal structures.
Matti Hamalainen <ccr@tnsp.org>
parents: 754
diff changeset
51 class XSSIDPlay2 {
695
ca594ca1056f COM API support works now.
Matti Hamalainen <ccr@tnsp.org>
parents: 694
diff changeset
52 public:
744
c7fa50576c70 Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents: 723
diff changeset
53 #ifdef HAVE_SIDPLAY2_FP
770
72e58ecb1a2c Still not working. Urgh.
Matti Hamalainen <ccr@tnsp.org>
parents: 769
diff changeset
54 sidplay2 emu;
744
c7fa50576c70 Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents: 723
diff changeset
55 #else
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
56 SidIPtr<ISidplay2> emu;
692
0126579b6652 Actually compiles now with libsidplay2 COM API, but does not work yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 660
diff changeset
57 #endif
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
58 sid2_config_t config;
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
59 SidTune *tune;
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
60
756
8299288df6d2 Rename internal structures.
Matti Hamalainen <ccr@tnsp.org>
parents: 754
diff changeset
61 XSSIDPlay2(void);
8299288df6d2 Rename internal structures.
Matti Hamalainen <ccr@tnsp.org>
parents: 754
diff changeset
62 virtual ~XSSIDPlay2(void) { ; }
695
ca594ca1056f COM API support works now.
Matti Hamalainen <ccr@tnsp.org>
parents: 694
diff changeset
63 };
73
2bc607888f53 Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
64
2bc607888f53 Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
65
694
fd81a16434ed Move builder header inclusions.
Matti Hamalainen <ccr@tnsp.org>
parents: 693
diff changeset
66 #ifdef HAVE_RESID_BUILDER
744
c7fa50576c70 Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents: 723
diff changeset
67 # ifdef HAVE_SIDPLAY2_FP
766
19e2745f75d8 Cosmetics and leftover cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 765
diff changeset
68 # include <sidplayfp/builders/residfp.h>
773
45108b3d88db Add resid-fp and resid backend to sidplay2fp support.
Matti Hamalainen <ccr@tnsp.org>
parents: 770
diff changeset
69 # include <sidplayfp/builders/resid.h>
744
c7fa50576c70 Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents: 723
diff changeset
70 # else
c7fa50576c70 Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents: 723
diff changeset
71 # include <sidplay/builders/resid.h>
c7fa50576c70 Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents: 723
diff changeset
72 # endif
694
fd81a16434ed Move builder header inclusions.
Matti Hamalainen <ccr@tnsp.org>
parents: 693
diff changeset
73 #endif
744
c7fa50576c70 Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents: 723
diff changeset
74
694
fd81a16434ed Move builder header inclusions.
Matti Hamalainen <ccr@tnsp.org>
parents: 693
diff changeset
75 #ifdef HAVE_HARDSID_BUILDER
744
c7fa50576c70 Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents: 723
diff changeset
76 # ifdef HAVE_SIDPLAY2_FP
c7fa50576c70 Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents: 723
diff changeset
77 # include <sidplayfp/builders/hardsid.h>
c7fa50576c70 Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents: 723
diff changeset
78 # else
c7fa50576c70 Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents: 723
diff changeset
79 # include <sidplay/builders/hardsid.h>
c7fa50576c70 Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents: 723
diff changeset
80 # endif
694
fd81a16434ed Move builder header inclusions.
Matti Hamalainen <ccr@tnsp.org>
parents: 693
diff changeset
81 #endif
fd81a16434ed Move builder header inclusions.
Matti Hamalainen <ccr@tnsp.org>
parents: 693
diff changeset
82
fd81a16434ed Move builder header inclusions.
Matti Hamalainen <ccr@tnsp.org>
parents: 693
diff changeset
83
756
8299288df6d2 Rename internal structures.
Matti Hamalainen <ccr@tnsp.org>
parents: 754
diff changeset
84 XSSIDPlay2::XSSIDPlay2(void)
695
ca594ca1056f COM API support works now.
Matti Hamalainen <ccr@tnsp.org>
parents: 694
diff changeset
85 {
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
86 tune = NULL;
695
ca594ca1056f COM API support works now.
Matti Hamalainen <ccr@tnsp.org>
parents: 694
diff changeset
87 }
ca594ca1056f COM API support works now.
Matti Hamalainen <ccr@tnsp.org>
parents: 694
diff changeset
88
ca594ca1056f COM API support works now.
Matti Hamalainen <ccr@tnsp.org>
parents: 694
diff changeset
89
270
583f5651abff Cleanups, moved engine configuration to initialization function.
Matti Hamalainen <ccr@tnsp.org>
parents: 232
diff changeset
90 /* We need to 'export' all this pseudo-C++ crap */
396
0a60ef2b5ab0 Cleanups
Matti Hamalainen <ccr@tnsp.org>
parents: 394
diff changeset
91 extern "C" {
73
2bc607888f53 Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
92
75
653c9b0d1320 SIDPlay2 support "works" now. Borked problems with threads.
Matti Hamalainen <ccr@tnsp.org>
parents: 74
diff changeset
93
467
9dafc55c4270 Beginnings of vfs portability.
Matti Hamalainen <ccr@tnsp.org>
parents: 460
diff changeset
94 /* Return song information
9dafc55c4270 Beginnings of vfs portability.
Matti Hamalainen <ccr@tnsp.org>
parents: 460
diff changeset
95 */
692
0126579b6652 Actually compiles now with libsidplay2 COM API, but does not work yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 660
diff changeset
96 #define TFUNCTION xs_sidplay2_getinfo
0126579b6652 Actually compiles now with libsidplay2 COM API, but does not work yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 660
diff changeset
97 #define TFUNCTION2 xs_sidplay2_updateinfo
0126579b6652 Actually compiles now with libsidplay2 COM API, but does not work yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 660
diff changeset
98 #define TTUNEINFO SidTuneInfo
0126579b6652 Actually compiles now with libsidplay2 COM API, but does not work yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 660
diff changeset
99 #define TTUNE SidTune
756
8299288df6d2 Rename internal structures.
Matti Hamalainen <ccr@tnsp.org>
parents: 754
diff changeset
100 #define TENGINE XSSIDPlay2
467
9dafc55c4270 Beginnings of vfs portability.
Matti Hamalainen <ccr@tnsp.org>
parents: 460
diff changeset
101 #include "xs_sidplay.h"
9dafc55c4270 Beginnings of vfs portability.
Matti Hamalainen <ccr@tnsp.org>
parents: 460
diff changeset
102
9dafc55c4270 Beginnings of vfs portability.
Matti Hamalainen <ccr@tnsp.org>
parents: 460
diff changeset
103
270
583f5651abff Cleanups, moved engine configuration to initialization function.
Matti Hamalainen <ccr@tnsp.org>
parents: 232
diff changeset
104 /* Check if we can play the given file
75
653c9b0d1320 SIDPlay2 support "works" now. Borked problems with threads.
Matti Hamalainen <ccr@tnsp.org>
parents: 74
diff changeset
105 */
751
55eea3fa8868 Rename some structures.
Matti Hamalainen <ccr@tnsp.org>
parents: 748
diff changeset
106 gboolean xs_sidplay2_probe(XSFile *f)
364
421e4fc13bce More and more of indentation fixes.
Matti Hamalainen <ccr@tnsp.org>
parents: 359
diff changeset
107 {
702
b5b6b13a6d85 Renamed some types.
Matti Hamalainen <ccr@tnsp.org>
parents: 700
diff changeset
108 gchar tmpBuf[5];
660
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
109
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
110 if (!f) return FALSE;
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
111
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
112 if (xs_fread(tmpBuf, sizeof(gchar), 4, f) != 4)
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
113 return FALSE;
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
114
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
115 if (!strncmp(tmpBuf, "PSID", 4) || !strncmp(tmpBuf, "RSID", 4))
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
116 return TRUE;
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
117 else
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
118 return FALSE;
364
421e4fc13bce More and more of indentation fixes.
Matti Hamalainen <ccr@tnsp.org>
parents: 359
diff changeset
119 }
73
2bc607888f53 Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
120
2bc607888f53 Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
121
270
583f5651abff Cleanups, moved engine configuration to initialization function.
Matti Hamalainen <ccr@tnsp.org>
parents: 232
diff changeset
122 /* Initialize SIDPlay2
75
653c9b0d1320 SIDPlay2 support "works" now. Borked problems with threads.
Matti Hamalainen <ccr@tnsp.org>
parents: 74
diff changeset
123 */
754
5557837fe5b6 Rename some more variables.
Matti Hamalainen <ccr@tnsp.org>
parents: 753
diff changeset
124 gboolean xs_sidplay2_init(XSEngineState * state)
364
421e4fc13bce More and more of indentation fixes.
Matti Hamalainen <ccr@tnsp.org>
parents: 359
diff changeset
125 {
756
8299288df6d2 Rename internal structures.
Matti Hamalainen <ccr@tnsp.org>
parents: 754
diff changeset
126 XSSIDPlay2 *engine;
766
19e2745f75d8 Cosmetics and leftover cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 765
diff changeset
127 #ifndef HAVE_SIDPLAY2_FP
660
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
128 sid_filter_t tmpFilter;
722
5923dfff1fac Unify xs_sid*_filter_t into one.
Matti Hamalainen <ccr@tnsp.org>
parents: 710
diff changeset
129 xs_sid_filter_t *f;
766
19e2745f75d8 Cosmetics and leftover cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 765
diff changeset
130 gint i;
19e2745f75d8 Cosmetics and leftover cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 765
diff changeset
131 #endif
754
5557837fe5b6 Rename some more variables.
Matti Hamalainen <ccr@tnsp.org>
parents: 753
diff changeset
132 assert(state);
73
2bc607888f53 Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
133
660
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
134 /* Allocate internal structures */
756
8299288df6d2 Rename internal structures.
Matti Hamalainen <ccr@tnsp.org>
parents: 754
diff changeset
135 engine = new XSSIDPlay2();
754
5557837fe5b6 Rename some more variables.
Matti Hamalainen <ccr@tnsp.org>
parents: 753
diff changeset
136 state->internal = engine;
770
72e58ecb1a2c Still not working. Urgh.
Matti Hamalainen <ccr@tnsp.org>
parents: 769
diff changeset
137 if (!engine)
660
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
138 return FALSE;
75
653c9b0d1320 SIDPlay2 support "works" now. Borked problems with threads.
Matti Hamalainen <ccr@tnsp.org>
parents: 74
diff changeset
139
660
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
140 /* Get current configuration */
770
72e58ecb1a2c Still not working. Urgh.
Matti Hamalainen <ccr@tnsp.org>
parents: 769
diff changeset
141 engine->config = engine->emu.config();
73
2bc607888f53 Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
142
660
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
143 /* Configure channels and stuff */
766
19e2745f75d8 Cosmetics and leftover cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 765
diff changeset
144 switch (state->audioChannels)
19e2745f75d8 Cosmetics and leftover cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 765
diff changeset
145 {
744
c7fa50576c70 Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents: 723
diff changeset
146 case XS_CHN_AUTOPAN:
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
147 engine->config.playback = sid2_stereo;
744
c7fa50576c70 Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents: 723
diff changeset
148 break;
73
2bc607888f53 Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
149
744
c7fa50576c70 Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents: 723
diff changeset
150 case XS_CHN_STEREO:
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
151 engine->config.playback = sid2_stereo;
744
c7fa50576c70 Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents: 723
diff changeset
152 break;
73
2bc607888f53 Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
153
744
c7fa50576c70 Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents: 723
diff changeset
154 case XS_CHN_MONO:
c7fa50576c70 Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents: 723
diff changeset
155 default:
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
156 engine->config.playback = sid2_mono;
754
5557837fe5b6 Rename some more variables.
Matti Hamalainen <ccr@tnsp.org>
parents: 753
diff changeset
157 state->audioChannels = XS_CHN_MONO;
744
c7fa50576c70 Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents: 723
diff changeset
158 break;
660
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
159 }
73
2bc607888f53 Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
160
2bc607888f53 Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
161
660
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
162 /* Memory mode settings */
766
19e2745f75d8 Cosmetics and leftover cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 765
diff changeset
163 switch (xs_cfg.memoryMode)
19e2745f75d8 Cosmetics and leftover cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 765
diff changeset
164 {
744
c7fa50576c70 Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents: 723
diff changeset
165 case XS_MPU_BANK_SWITCHING:
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
166 engine->config.environment = sid2_envBS;
744
c7fa50576c70 Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents: 723
diff changeset
167 break;
73
2bc607888f53 Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
168
744
c7fa50576c70 Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents: 723
diff changeset
169 case XS_MPU_TRANSPARENT_ROM:
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
170 engine->config.environment = sid2_envTP;
744
c7fa50576c70 Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents: 723
diff changeset
171 break;
73
2bc607888f53 Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
172
744
c7fa50576c70 Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents: 723
diff changeset
173 case XS_MPU_PLAYSID_ENVIRONMENT:
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
174 engine->config.environment = sid2_envPS;
744
c7fa50576c70 Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents: 723
diff changeset
175 break;
73
2bc607888f53 Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
176
744
c7fa50576c70 Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents: 723
diff changeset
177 case XS_MPU_REAL:
c7fa50576c70 Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents: 723
diff changeset
178 default:
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
179 engine->config.environment = sid2_envR;
744
c7fa50576c70 Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents: 723
diff changeset
180 xs_cfg.memoryMode = XS_MPU_REAL;
c7fa50576c70 Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents: 723
diff changeset
181 break;
660
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
182 }
73
2bc607888f53 Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
183
2bc607888f53 Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
184
660
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
185 /* Audio parameters sanity checking and setup */
758
6c8c968595d9 Sanitize some #ifdefs.
Matti Hamalainen <ccr@tnsp.org>
parents: 757
diff changeset
186 #ifdef HAVE_SIDPLAY2_FP
754
5557837fe5b6 Rename some more variables.
Matti Hamalainen <ccr@tnsp.org>
parents: 753
diff changeset
187 state->audioBitsPerSample = XS_RES_16BIT;
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
188 engine->config.samplingMethod = SID2_RESAMPLE_INTERPOLATE;
758
6c8c968595d9 Sanitize some #ifdefs.
Matti Hamalainen <ccr@tnsp.org>
parents: 757
diff changeset
189 #else
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
190 engine->config.precision = state->audioBitsPerSample;
744
c7fa50576c70 Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents: 723
diff changeset
191 #endif
c7fa50576c70 Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents: 723
diff changeset
192
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
193 engine->config.frequency = state->audioFrequency;
748
d9d769b5dbe2 Remove oversampling support.
Matti Hamalainen <ccr@tnsp.org>
parents: 744
diff changeset
194
74
8cb66a3f75f7 Testing
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
195
766
19e2745f75d8 Cosmetics and leftover cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 765
diff changeset
196 switch (state->audioBitsPerSample)
19e2745f75d8 Cosmetics and leftover cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 765
diff changeset
197 {
758
6c8c968595d9 Sanitize some #ifdefs.
Matti Hamalainen <ccr@tnsp.org>
parents: 757
diff changeset
198 #ifndef HAVE_SIDPLAY2_FP
757
9c135d421676 Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 756
diff changeset
199 case XS_RES_8BIT:
9c135d421676 Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 756
diff changeset
200 state->audioFormat = FMT_U8;
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
201 engine->config.sampleFormat = SID2_LITTLE_UNSIGNED;
758
6c8c968595d9 Sanitize some #ifdefs.
Matti Hamalainen <ccr@tnsp.org>
parents: 757
diff changeset
202 break;
74
8cb66a3f75f7 Testing
Matti Hamalainen <ccr@tnsp.org>
parents: 73
diff changeset
203 #endif
359
b1a858b8cb1a Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents: 352
diff changeset
204
757
9c135d421676 Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 756
diff changeset
205 case XS_RES_16BIT:
660
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
206 default:
757
9c135d421676 Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 756
diff changeset
207 state->audioFormat = FMT_S16_NE;
9c135d421676 Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 756
diff changeset
208 #ifndef HAVE_SIDPLAY2_FP
766
19e2745f75d8 Cosmetics and leftover cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 765
diff changeset
209 switch (state->audioFormat)
19e2745f75d8 Cosmetics and leftover cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 765
diff changeset
210 {
757
9c135d421676 Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 756
diff changeset
211 case FMT_U16_LE:
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
212 engine->config.sampleFormat = SID2_LITTLE_UNSIGNED;
757
9c135d421676 Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 756
diff changeset
213 break;
9c135d421676 Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 756
diff changeset
214
9c135d421676 Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 756
diff changeset
215 case FMT_U16_BE:
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
216 engine->config.sampleFormat = SID2_BIG_UNSIGNED;
757
9c135d421676 Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 756
diff changeset
217 break;
127
ddb513bd2610 Improved audio format support, now supported formats are "queried" from
Matti Hamalainen <ccr@tnsp.org>
parents: 103
diff changeset
218
757
9c135d421676 Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 756
diff changeset
219 case FMT_U16_NE:
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
220 engine->config.sampleFormat = SID2_NATIVE_UNSIGNED;
757
9c135d421676 Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 756
diff changeset
221 break;
9c135d421676 Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 756
diff changeset
222
9c135d421676 Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 756
diff changeset
223 case FMT_S16_LE:
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
224 engine->config.sampleFormat = SID2_LITTLE_SIGNED;
757
9c135d421676 Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 756
diff changeset
225 break;
9c135d421676 Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 756
diff changeset
226
9c135d421676 Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 756
diff changeset
227 case FMT_S16_BE:
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
228 engine->config.sampleFormat = SID2_BIG_SIGNED;
757
9c135d421676 Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 756
diff changeset
229 break;
9c135d421676 Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 756
diff changeset
230
9c135d421676 Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 756
diff changeset
231 default:
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
232 engine->config.sampleFormat = SID2_NATIVE_SIGNED;
757
9c135d421676 Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 756
diff changeset
233 break;
766
19e2745f75d8 Cosmetics and leftover cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 765
diff changeset
234 }
744
c7fa50576c70 Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents: 723
diff changeset
235 #endif
766
19e2745f75d8 Cosmetics and leftover cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 765
diff changeset
236 break;
660
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
237 }
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
238
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
239 #if !defined(HAVE_SIDPLAY2_FP)
660
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
240 /* Convert filter */
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
241 f = &(xs_cfg.sid2Filter);
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
242 XSDEBUG("using filter '%s', %d points\n", f->name, f->npoints);
766
19e2745f75d8 Cosmetics and leftover cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 765
diff changeset
243 if (f->npoints > XS_SIDPLAY2_NFPOINTS)
19e2745f75d8 Cosmetics and leftover cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 765
diff changeset
244 {
660
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
245 xs_error("[SIDPlay2] Invalid number of filter curve points (%d > %d)\n",
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
246 f->npoints, XS_SIDPLAY2_NFPOINTS);
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
247 f->npoints = XS_SIDPLAY2_NFPOINTS;
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
248 }
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
249
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
250 tmpFilter.points = f->npoints;
766
19e2745f75d8 Cosmetics and leftover cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 765
diff changeset
251 for (i = 0; i < f->npoints; i++)
19e2745f75d8 Cosmetics and leftover cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 765
diff changeset
252 {
660
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
253 tmpFilter.cutoff[i][0] = f->points[i].x;
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
254 tmpFilter.cutoff[i][1] = f->points[i].y;
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
255 }
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
256 #endif
352
2b4ca75b999f Cleanups
Matti Hamalainen <ccr@tnsp.org>
parents: 324
diff changeset
257
660
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
258 /* Initialize builder object */
770
72e58ecb1a2c Still not working. Urgh.
Matti Hamalainen <ccr@tnsp.org>
parents: 769
diff changeset
259 XSDEBUG("init builder #%i, maxsids=%i\n", xs_cfg.sid2Builder, (engine->emu.info()).maxsids);
761
641b7693fecc Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 758
diff changeset
260
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
261 switch (xs_cfg.sid2Builder)
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
262 {
364
421e4fc13bce More and more of indentation fixes.
Matti Hamalainen <ccr@tnsp.org>
parents: 359
diff changeset
263 #ifdef HAVE_RESID_BUILDER
773
45108b3d88db Add resid-fp and resid backend to sidplay2fp support.
Matti Hamalainen <ccr@tnsp.org>
parents: 770
diff changeset
264 #ifdef HAVE_SIDPLAY2_FP
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
265 case XS_BLD_RESID:
773
45108b3d88db Add resid-fp and resid backend to sidplay2fp support.
Matti Hamalainen <ccr@tnsp.org>
parents: 770
diff changeset
266 {
45108b3d88db Add resid-fp and resid backend to sidplay2fp support.
Matti Hamalainen <ccr@tnsp.org>
parents: 770
diff changeset
267 ReSIDBuilder *rs = new ReSIDBuilder("ReSID builder");
45108b3d88db Add resid-fp and resid backend to sidplay2fp support.
Matti Hamalainen <ccr@tnsp.org>
parents: 770
diff changeset
268 if (rs)
45108b3d88db Add resid-fp and resid backend to sidplay2fp support.
Matti Hamalainen <ccr@tnsp.org>
parents: 770
diff changeset
269 {
45108b3d88db Add resid-fp and resid backend to sidplay2fp support.
Matti Hamalainen <ccr@tnsp.org>
parents: 770
diff changeset
270 engine->config.sidEmulation = rs;
45108b3d88db Add resid-fp and resid backend to sidplay2fp support.
Matti Hamalainen <ccr@tnsp.org>
parents: 770
diff changeset
271 if (!*rs) return FALSE;
45108b3d88db Add resid-fp and resid backend to sidplay2fp support.
Matti Hamalainen <ccr@tnsp.org>
parents: 770
diff changeset
272 rs->create((engine->emu.info()).maxsids);
45108b3d88db Add resid-fp and resid backend to sidplay2fp support.
Matti Hamalainen <ccr@tnsp.org>
parents: 770
diff changeset
273 if (!*rs) return FALSE;
45108b3d88db Add resid-fp and resid backend to sidplay2fp support.
Matti Hamalainen <ccr@tnsp.org>
parents: 770
diff changeset
274 rs->bias(0.0f);
45108b3d88db Add resid-fp and resid backend to sidplay2fp support.
Matti Hamalainen <ccr@tnsp.org>
parents: 770
diff changeset
275 }
45108b3d88db Add resid-fp and resid backend to sidplay2fp support.
Matti Hamalainen <ccr@tnsp.org>
parents: 770
diff changeset
276 }
45108b3d88db Add resid-fp and resid backend to sidplay2fp support.
Matti Hamalainen <ccr@tnsp.org>
parents: 770
diff changeset
277 break;
45108b3d88db Add resid-fp and resid backend to sidplay2fp support.
Matti Hamalainen <ccr@tnsp.org>
parents: 770
diff changeset
278
45108b3d88db Add resid-fp and resid backend to sidplay2fp support.
Matti Hamalainen <ccr@tnsp.org>
parents: 770
diff changeset
279 case XS_BLD_RESID_FP:
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
280 {
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
281 ReSIDfpBuilder *rs = new ReSIDfpBuilder("ReSID builder FP!");
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
282 if (rs)
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
283 {
770
72e58ecb1a2c Still not working. Urgh.
Matti Hamalainen <ccr@tnsp.org>
parents: 769
diff changeset
284 engine->config.sidEmulation = rs;
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
285 if (!*rs) return FALSE;
770
72e58ecb1a2c Still not working. Urgh.
Matti Hamalainen <ccr@tnsp.org>
parents: 769
diff changeset
286 rs->create((engine->emu.info()).maxsids);
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
287 if (!*rs) return FALSE;
359
b1a858b8cb1a Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents: 352
diff changeset
288
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
289 /*
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
290 if (m_filter.filterCurve6581)
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
291 rs->filter6581Curve(m_filter.filterCurve6581);
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
292 if (m_filter.filterCurve8580)
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
293 rs->filter8580Curve((double)m_filter.filterCurve8580);
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
294 */
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
295 }
773
45108b3d88db Add resid-fp and resid backend to sidplay2fp support.
Matti Hamalainen <ccr@tnsp.org>
parents: 770
diff changeset
296 }
45108b3d88db Add resid-fp and resid backend to sidplay2fp support.
Matti Hamalainen <ccr@tnsp.org>
parents: 770
diff changeset
297 break;
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
298 #else
773
45108b3d88db Add resid-fp and resid backend to sidplay2fp support.
Matti Hamalainen <ccr@tnsp.org>
parents: 770
diff changeset
299 case XS_BLD_RESID:
45108b3d88db Add resid-fp and resid backend to sidplay2fp support.
Matti Hamalainen <ccr@tnsp.org>
parents: 770
diff changeset
300 {
770
72e58ecb1a2c Still not working. Urgh.
Matti Hamalainen <ccr@tnsp.org>
parents: 769
diff changeset
301 engine->config.sidEmulation = ReSIDBuilderCreate("ReSID builder");
72e58ecb1a2c Still not working. Urgh.
Matti Hamalainen <ccr@tnsp.org>
parents: 769
diff changeset
302 SidLazyIPtr<IReSIDBuilder> rs(engine->config.sidEmulation);
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
303 if (rs)
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
304 {
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
305 engine->config.sidEmulation = rs->iaggregate();
770
72e58ecb1a2c Still not working. Urgh.
Matti Hamalainen <ccr@tnsp.org>
parents: 769
diff changeset
306 rs->create((engine->emu.info()).maxsids);
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
307 if (!*rs) return FALSE;
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
308 }
660
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
309 }
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
310 break;
321
45ad9f7c1628 Improved compatibility, some fixes in reSID emulation initialization.
Matti Hamalainen <ccr@tnsp.org>
parents: 270
diff changeset
311 #endif
773
45108b3d88db Add resid-fp and resid backend to sidplay2fp support.
Matti Hamalainen <ccr@tnsp.org>
parents: 770
diff changeset
312 #endif
744
c7fa50576c70 Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents: 723
diff changeset
313
321
45ad9f7c1628 Improved compatibility, some fixes in reSID emulation initialization.
Matti Hamalainen <ccr@tnsp.org>
parents: 270
diff changeset
314 #ifdef HAVE_HARDSID_BUILDER
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
315 case XS_BLD_HARDSID:
744
c7fa50576c70 Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents: 723
diff changeset
316 #ifdef HAVE_SIDPLAY2_FP
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
317 {
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
318 HardSIDBuilder *hs = new HardSIDBuilder("HardSID builder (FP)");
770
72e58ecb1a2c Still not working. Urgh.
Matti Hamalainen <ccr@tnsp.org>
parents: 769
diff changeset
319 engine->config.sidEmulation = (sidbuilder *) hs;
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
320 if (hs)
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
321 {
744
c7fa50576c70 Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents: 723
diff changeset
322 #else
770
72e58ecb1a2c Still not working. Urgh.
Matti Hamalainen <ccr@tnsp.org>
parents: 769
diff changeset
323 engine->config.sidEmulation = HardSIDBuilderCreate("HardSID builder");
72e58ecb1a2c Still not working. Urgh.
Matti Hamalainen <ccr@tnsp.org>
parents: 769
diff changeset
324 SidLazyIPtr<IHardSIDBuilder> hs(engine->config.sidEmulation);
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
325 if (hs)
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
326 {
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
327 engine->config.sidEmulation = hs->iaggregate();
692
0126579b6652 Actually compiles now with libsidplay2 COM API, but does not work yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 660
diff changeset
328 #endif
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
329 /* Builder object created, initialize it */
770
72e58ecb1a2c Still not working. Urgh.
Matti Hamalainen <ccr@tnsp.org>
parents: 769
diff changeset
330 hs->create((engine->emu.info()).maxsids);
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
331 if (!*hs)
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
332 {
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
333 xs_error("hardSID->create() failed.\n");
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
334 return FALSE;
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
335 }
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
336 }
660
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
337 }
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
338 break;
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
339 #endif
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
340
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
341 default:
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
342 xs_error("[SIDPlay2] Invalid or unsupported builder selected.\n");
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
343 break;
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
344 }
359
b1a858b8cb1a Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents: 352
diff changeset
345
770
72e58ecb1a2c Still not working. Urgh.
Matti Hamalainen <ccr@tnsp.org>
parents: 769
diff changeset
346 if (!engine->config.sidEmulation)
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
347 {
660
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
348 xs_error("[SIDPlay2] Could not initialize SIDBuilder object.\n");
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
349 return FALSE;
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
350 }
321
45ad9f7c1628 Improved compatibility, some fixes in reSID emulation initialization.
Matti Hamalainen <ccr@tnsp.org>
parents: 270
diff changeset
351
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
352 // Setup filter
770
72e58ecb1a2c Still not working. Urgh.
Matti Hamalainen <ccr@tnsp.org>
parents: 769
diff changeset
353 engine->config.sidEmulation->filter(xs_cfg.emulateFilters);
72e58ecb1a2c Still not working. Urgh.
Matti Hamalainen <ccr@tnsp.org>
parents: 769
diff changeset
354 if (!*(engine->config.sidEmulation))
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
355 {
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
356 xs_error("builder->filter(%d) failed.\n", xs_cfg.emulateFilters);
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
357 return FALSE;
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
358 }
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
359
744
c7fa50576c70 Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents: 723
diff changeset
360 #ifdef HAVE_SIDPLAY2_FP
770
72e58ecb1a2c Still not working. Urgh.
Matti Hamalainen <ccr@tnsp.org>
parents: 769
diff changeset
361 engine->config.sidEmulation = engine->config.sidEmulation;
72e58ecb1a2c Still not working. Urgh.
Matti Hamalainen <ccr@tnsp.org>
parents: 769
diff changeset
362 XSDEBUG("%s\n", engine->config.sidEmulation->credits());
692
0126579b6652 Actually compiles now with libsidplay2 COM API, but does not work yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 660
diff changeset
363 #endif
321
45ad9f7c1628 Improved compatibility, some fixes in reSID emulation initialization.
Matti Hamalainen <ccr@tnsp.org>
parents: 270
diff changeset
364
660
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
365 /* Clockspeed settings */
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
366 switch (xs_cfg.clockSpeed)
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
367 {
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
368 case XS_CLOCK_NTSC:
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
369 engine->config.clockDefault = SID2_CLOCK_NTSC;
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
370 break;
366
29c4484f1de2 Fixes in emulator engine configuration, make 'forceModel' option work.
Matti Hamalainen <ccr@tnsp.org>
parents: 364
diff changeset
371
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
372 default:
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
373 case XS_CLOCK_PAL:
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
374 engine->config.clockDefault = SID2_CLOCK_PAL;
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
375 xs_cfg.clockSpeed = XS_CLOCK_PAL;
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
376 break;
660
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
377 }
366
29c4484f1de2 Fixes in emulator engine configuration, make 'forceModel' option work.
Matti Hamalainen <ccr@tnsp.org>
parents: 364
diff changeset
378
29c4484f1de2 Fixes in emulator engine configuration, make 'forceModel' option work.
Matti Hamalainen <ccr@tnsp.org>
parents: 364
diff changeset
379
660
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
380 /* Configure rest of the emulation */
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
381 if (xs_cfg.forceSpeed)
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
382 {
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
383 engine->config.clockForced = true;
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
384 engine->config.clockSpeed = engine->config.clockDefault;
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
385 }
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
386 else
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
387 {
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
388 engine->config.clockForced = false;
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
389 engine->config.clockSpeed = SID2_CLOCK_CORRECT;
660
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
390 }
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
391
710
a6283cf95c99 Updated to work with latest distortion patched libSIDPlay2+reSID from Antti
Matti Hamalainen <ccr@tnsp.org>
parents: 702
diff changeset
392
761
641b7693fecc Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 758
diff changeset
393 #ifndef HAVE_SIDPLAY2_FP
641b7693fecc Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 758
diff changeset
394 if (xs_cfg.sid2OptLevel < 0 || xs_cfg.sid2OptLevel > SID2_MAX_OPTIMISATION)
641b7693fecc Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 758
diff changeset
395 {
660
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
396 xs_error("Invalid sid2OptLevel=%d, falling back to %d.\n",
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
397 xs_cfg.sid2OptLevel, SID2_DEFAULT_OPTIMISATION);
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
398
761
641b7693fecc Cosmetic cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 758
diff changeset
399 xs_cfg.sid2OptLevel = SID2_DEFAULT_OPTIMISATION;
660
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
400 }
766
19e2745f75d8 Cosmetics and leftover cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 765
diff changeset
401 engine->config.optimisation = xs_cfg.sid2OptLevel;
710
a6283cf95c99 Updated to work with latest distortion patched libSIDPlay2+reSID from Antti
Matti Hamalainen <ccr@tnsp.org>
parents: 702
diff changeset
402 #endif
366
29c4484f1de2 Fixes in emulator engine configuration, make 'forceModel' option work.
Matti Hamalainen <ccr@tnsp.org>
parents: 364
diff changeset
403
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
404 engine->config.sidDefault = xs_cfg.mos8580 ? SID2_MOS8580 : SID2_MOS6581;
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
405 engine->config.sidModel = xs_cfg.forceModel ? engine->config.sidDefault : SID2_MODEL_CORRECT;
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
406 engine->config.sidSamples = TRUE;
321
45ad9f7c1628 Improved compatibility, some fixes in reSID emulation initialization.
Matti Hamalainen <ccr@tnsp.org>
parents: 270
diff changeset
407
660
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
408 /* Now set the emulator configuration */
770
72e58ecb1a2c Still not working. Urgh.
Matti Hamalainen <ccr@tnsp.org>
parents: 769
diff changeset
409 if (engine->emu.config(engine->config) < 0)
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
410 {
660
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
411 xs_error("[SIDPlay2] Emulator engine configuration failed!\n");
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
412 return FALSE;
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
413 }
73
2bc607888f53 Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
414
660
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
415 return TRUE;
364
421e4fc13bce More and more of indentation fixes.
Matti Hamalainen <ccr@tnsp.org>
parents: 359
diff changeset
416 }
73
2bc607888f53 Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
417
2bc607888f53 Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
418
270
583f5651abff Cleanups, moved engine configuration to initialization function.
Matti Hamalainen <ccr@tnsp.org>
parents: 232
diff changeset
419 /* Close SIDPlay2 engine
583f5651abff Cleanups, moved engine configuration to initialization function.
Matti Hamalainen <ccr@tnsp.org>
parents: 232
diff changeset
420 */
754
5557837fe5b6 Rename some more variables.
Matti Hamalainen <ccr@tnsp.org>
parents: 753
diff changeset
421 void xs_sidplay2_close(XSEngineState * state)
364
421e4fc13bce More and more of indentation fixes.
Matti Hamalainen <ccr@tnsp.org>
parents: 359
diff changeset
422 {
769
120d6f247f1b Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 768
diff changeset
423 XSSIDPlay2 *engine = (XSSIDPlay2 *) state->internal;
359
b1a858b8cb1a Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents: 352
diff changeset
424
775
0e9f2894b0a9 Proper order of freeing/deletion.
Matti Hamalainen <ccr@tnsp.org>
parents: 774
diff changeset
425 xs_sidplay2_delete(state);
0e9f2894b0a9 Proper order of freeing/deletion.
Matti Hamalainen <ccr@tnsp.org>
parents: 774
diff changeset
426
770
72e58ecb1a2c Still not working. Urgh.
Matti Hamalainen <ccr@tnsp.org>
parents: 769
diff changeset
427 if (engine)
72e58ecb1a2c Still not working. Urgh.
Matti Hamalainen <ccr@tnsp.org>
parents: 769
diff changeset
428 {
744
c7fa50576c70 Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents: 723
diff changeset
429 #ifdef HAVE_SIDPLAY2_FP
770
72e58ecb1a2c Still not working. Urgh.
Matti Hamalainen <ccr@tnsp.org>
parents: 769
diff changeset
430 if (engine->config.sidEmulation)
72e58ecb1a2c Still not working. Urgh.
Matti Hamalainen <ccr@tnsp.org>
parents: 769
diff changeset
431 {
72e58ecb1a2c Still not working. Urgh.
Matti Hamalainen <ccr@tnsp.org>
parents: 769
diff changeset
432 sidbuilder *builder = engine->config.sidEmulation;
72e58ecb1a2c Still not working. Urgh.
Matti Hamalainen <ccr@tnsp.org>
parents: 769
diff changeset
433 engine->config.sidEmulation = NULL;
72e58ecb1a2c Still not working. Urgh.
Matti Hamalainen <ccr@tnsp.org>
parents: 769
diff changeset
434 engine->emu.config(engine->config);
72e58ecb1a2c Still not working. Urgh.
Matti Hamalainen <ccr@tnsp.org>
parents: 769
diff changeset
435 delete builder;
72e58ecb1a2c Still not working. Urgh.
Matti Hamalainen <ccr@tnsp.org>
parents: 769
diff changeset
436 }
692
0126579b6652 Actually compiles now with libsidplay2 COM API, but does not work yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 660
diff changeset
437 #endif
770
72e58ecb1a2c Still not working. Urgh.
Matti Hamalainen <ccr@tnsp.org>
parents: 769
diff changeset
438
72e58ecb1a2c Still not working. Urgh.
Matti Hamalainen <ccr@tnsp.org>
parents: 769
diff changeset
439 delete engine;
775
0e9f2894b0a9 Proper order of freeing/deletion.
Matti Hamalainen <ccr@tnsp.org>
parents: 774
diff changeset
440 engine = NULL;
660
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
441 }
270
583f5651abff Cleanups, moved engine configuration to initialization function.
Matti Hamalainen <ccr@tnsp.org>
parents: 232
diff changeset
442
754
5557837fe5b6 Rename some more variables.
Matti Hamalainen <ccr@tnsp.org>
parents: 753
diff changeset
443 state->internal = NULL;
364
421e4fc13bce More and more of indentation fixes.
Matti Hamalainen <ccr@tnsp.org>
parents: 359
diff changeset
444 }
270
583f5651abff Cleanups, moved engine configuration to initialization function.
Matti Hamalainen <ccr@tnsp.org>
parents: 232
diff changeset
445
583f5651abff Cleanups, moved engine configuration to initialization function.
Matti Hamalainen <ccr@tnsp.org>
parents: 232
diff changeset
446
583f5651abff Cleanups, moved engine configuration to initialization function.
Matti Hamalainen <ccr@tnsp.org>
parents: 232
diff changeset
447 /* Initialize current song and sub-tune
583f5651abff Cleanups, moved engine configuration to initialization function.
Matti Hamalainen <ccr@tnsp.org>
parents: 232
diff changeset
448 */
754
5557837fe5b6 Rename some more variables.
Matti Hamalainen <ccr@tnsp.org>
parents: 753
diff changeset
449 gboolean xs_sidplay2_initsong(XSEngineState * state)
364
421e4fc13bce More and more of indentation fixes.
Matti Hamalainen <ccr@tnsp.org>
parents: 359
diff changeset
450 {
768
f145ba458acd Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 766
diff changeset
451 XSSIDPlay2 *engine = (XSSIDPlay2 *) state->internal;
359
b1a858b8cb1a Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents: 352
diff changeset
452
768
f145ba458acd Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 766
diff changeset
453 if (!engine)
f145ba458acd Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 766
diff changeset
454 return FALSE;
270
583f5651abff Cleanups, moved engine configuration to initialization function.
Matti Hamalainen <ccr@tnsp.org>
parents: 232
diff changeset
455
769
120d6f247f1b Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 768
diff changeset
456 if (!engine->tune->selectSong(state->currSong))
120d6f247f1b Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 768
diff changeset
457 {
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
458 xs_error("[SIDPlay2] tune->selectSong() failed\n");
660
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
459 return FALSE;
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
460 }
359
b1a858b8cb1a Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents: 352
diff changeset
461
770
72e58ecb1a2c Still not working. Urgh.
Matti Hamalainen <ccr@tnsp.org>
parents: 769
diff changeset
462 if (engine->emu.load(engine->tune) < 0)
72e58ecb1a2c Still not working. Urgh.
Matti Hamalainen <ccr@tnsp.org>
parents: 769
diff changeset
463 {
72e58ecb1a2c Still not working. Urgh.
Matti Hamalainen <ccr@tnsp.org>
parents: 769
diff changeset
464 xs_error("[SIDPlay2] emu.load() failed\n");
660
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
465 return FALSE;
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
466 }
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
467
754
5557837fe5b6 Rename some more variables.
Matti Hamalainen <ccr@tnsp.org>
parents: 753
diff changeset
468 state->isInitialized = TRUE;
359
b1a858b8cb1a Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents: 352
diff changeset
469
660
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
470 return TRUE;
364
421e4fc13bce More and more of indentation fixes.
Matti Hamalainen <ccr@tnsp.org>
parents: 359
diff changeset
471 }
270
583f5651abff Cleanups, moved engine configuration to initialization function.
Matti Hamalainen <ccr@tnsp.org>
parents: 232
diff changeset
472
583f5651abff Cleanups, moved engine configuration to initialization function.
Matti Hamalainen <ccr@tnsp.org>
parents: 232
diff changeset
473
583f5651abff Cleanups, moved engine configuration to initialization function.
Matti Hamalainen <ccr@tnsp.org>
parents: 232
diff changeset
474 /* Emulate and render audio data to given buffer
583f5651abff Cleanups, moved engine configuration to initialization function.
Matti Hamalainen <ccr@tnsp.org>
parents: 232
diff changeset
475 */
754
5557837fe5b6 Rename some more variables.
Matti Hamalainen <ccr@tnsp.org>
parents: 753
diff changeset
476 guint xs_sidplay2_fillbuffer(XSEngineState * state, gchar * audioBuffer, guint audioBufSize)
364
421e4fc13bce More and more of indentation fixes.
Matti Hamalainen <ccr@tnsp.org>
parents: 359
diff changeset
477 {
768
f145ba458acd Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 766
diff changeset
478 XSSIDPlay2 *engine = (XSSIDPlay2 *) state->internal;
270
583f5651abff Cleanups, moved engine configuration to initialization function.
Matti Hamalainen <ccr@tnsp.org>
parents: 232
diff changeset
479
768
f145ba458acd Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 766
diff changeset
480 if (!engine)
f145ba458acd Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 766
diff changeset
481 return 0;
270
583f5651abff Cleanups, moved engine configuration to initialization function.
Matti Hamalainen <ccr@tnsp.org>
parents: 232
diff changeset
482
776
bb7b3ded919a Indeed, libsidplay-fp's audio renderer expects buffer of 16-bit shorts and
Matti Hamalainen <ccr@tnsp.org>
parents: 775
diff changeset
483 int len = audioBufSize / sizeof(short);
bb7b3ded919a Indeed, libsidplay-fp's audio renderer expects buffer of 16-bit shorts and
Matti Hamalainen <ccr@tnsp.org>
parents: 775
diff changeset
484 if (len > 512) len = 512;
bb7b3ded919a Indeed, libsidplay-fp's audio renderer expects buffer of 16-bit shorts and
Matti Hamalainen <ccr@tnsp.org>
parents: 775
diff changeset
485 return engine->emu.play((short *) audioBuffer, len) * sizeof(short);
364
421e4fc13bce More and more of indentation fixes.
Matti Hamalainen <ccr@tnsp.org>
parents: 359
diff changeset
486 }
270
583f5651abff Cleanups, moved engine configuration to initialization function.
Matti Hamalainen <ccr@tnsp.org>
parents: 232
diff changeset
487
583f5651abff Cleanups, moved engine configuration to initialization function.
Matti Hamalainen <ccr@tnsp.org>
parents: 232
diff changeset
488
583f5651abff Cleanups, moved engine configuration to initialization function.
Matti Hamalainen <ccr@tnsp.org>
parents: 232
diff changeset
489 /* Load a given SID-tune file
583f5651abff Cleanups, moved engine configuration to initialization function.
Matti Hamalainen <ccr@tnsp.org>
parents: 232
diff changeset
490 */
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
491 gboolean xs_sidplay2_load(XSEngineState * state, gchar * filename)
364
421e4fc13bce More and more of indentation fixes.
Matti Hamalainen <ccr@tnsp.org>
parents: 359
diff changeset
492 {
768
f145ba458acd Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 766
diff changeset
493 XSSIDPlay2 *engine = (XSSIDPlay2 *) state->internal;
f145ba458acd Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 766
diff changeset
494
754
5557837fe5b6 Rename some more variables.
Matti Hamalainen <ccr@tnsp.org>
parents: 753
diff changeset
495 state->isInitialized = FALSE;
270
583f5651abff Cleanups, moved engine configuration to initialization function.
Matti Hamalainen <ccr@tnsp.org>
parents: 232
diff changeset
496
768
f145ba458acd Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 766
diff changeset
497 if (!engine)
f145ba458acd Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 766
diff changeset
498 return FALSE;
270
583f5651abff Cleanups, moved engine configuration to initialization function.
Matti Hamalainen <ccr@tnsp.org>
parents: 232
diff changeset
499
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
500 if (!(engine->tune = new SidTune(filename)))
660
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
501 return FALSE;
270
583f5651abff Cleanups, moved engine configuration to initialization function.
Matti Hamalainen <ccr@tnsp.org>
parents: 232
diff changeset
502
660
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
503 return TRUE;
364
421e4fc13bce More and more of indentation fixes.
Matti Hamalainen <ccr@tnsp.org>
parents: 359
diff changeset
504 }
270
583f5651abff Cleanups, moved engine configuration to initialization function.
Matti Hamalainen <ccr@tnsp.org>
parents: 232
diff changeset
505
583f5651abff Cleanups, moved engine configuration to initialization function.
Matti Hamalainen <ccr@tnsp.org>
parents: 232
diff changeset
506
583f5651abff Cleanups, moved engine configuration to initialization function.
Matti Hamalainen <ccr@tnsp.org>
parents: 232
diff changeset
507 /* Delete INTERNAL information
73
2bc607888f53 Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
508 */
754
5557837fe5b6 Rename some more variables.
Matti Hamalainen <ccr@tnsp.org>
parents: 753
diff changeset
509 void xs_sidplay2_delete(XSEngineState * state)
364
421e4fc13bce More and more of indentation fixes.
Matti Hamalainen <ccr@tnsp.org>
parents: 359
diff changeset
510 {
768
f145ba458acd Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 766
diff changeset
511 XSSIDPlay2 *engine = (XSSIDPlay2 *) state->internal;
73
2bc607888f53 Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
512
768
f145ba458acd Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 766
diff changeset
513 if (engine)
f145ba458acd Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 766
diff changeset
514 {
f145ba458acd Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 766
diff changeset
515 if (engine->tune)
f145ba458acd Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 766
diff changeset
516 {
f145ba458acd Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 766
diff changeset
517 delete engine->tune;
f145ba458acd Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 766
diff changeset
518 engine->tune = NULL;
f145ba458acd Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 766
diff changeset
519 }
765
1294df516d2e Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 761
diff changeset
520 }
526
fa95d942f226 Header cleanup; Moved some types from xmms-sid.h to xs_player.h; Renamed few functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 474
diff changeset
521 }
fa95d942f226 Header cleanup; Moved some types from xmms-sid.h to xs_player.h; Renamed few functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 474
diff changeset
522
fa95d942f226 Header cleanup; Moved some types from xmms-sid.h to xs_player.h; Renamed few functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 474
diff changeset
523
fa95d942f226 Header cleanup; Moved some types from xmms-sid.h to xs_player.h; Renamed few functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 474
diff changeset
524 /* Hardware backend flushing
fa95d942f226 Header cleanup; Moved some types from xmms-sid.h to xs_player.h; Renamed few functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 474
diff changeset
525 */
754
5557837fe5b6 Rename some more variables.
Matti Hamalainen <ccr@tnsp.org>
parents: 753
diff changeset
526 void xs_sidplay2_flush(XSEngineState * state)
526
fa95d942f226 Header cleanup; Moved some types from xmms-sid.h to xs_player.h; Renamed few functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 474
diff changeset
527 {
768
f145ba458acd Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 766
diff changeset
528 (void) state;
526
fa95d942f226 Header cleanup; Moved some types from xmms-sid.h to xs_player.h; Renamed few functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 474
diff changeset
529
fa95d942f226 Header cleanup; Moved some types from xmms-sid.h to xs_player.h; Renamed few functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 474
diff changeset
530 #ifdef HAVE_HARDSID_BUILDER
768
f145ba458acd Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 766
diff changeset
531 if (xs_cfg.sid2Builder == XS_BLD_HARDSID)
f145ba458acd Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 766
diff changeset
532 {
526
fa95d942f226 Header cleanup; Moved some types from xmms-sid.h to xs_player.h; Renamed few functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 474
diff changeset
533 #ifdef HSID_SID2_COM
768
f145ba458acd Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 766
diff changeset
534 IfPtr<HardSIDBuilder> hs(state->config.sidEmulation);
f145ba458acd Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 766
diff changeset
535 if (hs)
f145ba458acd Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 766
diff changeset
536 hs->flush();
526
fa95d942f226 Header cleanup; Moved some types from xmms-sid.h to xs_player.h; Renamed few functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 474
diff changeset
537 #else
768
f145ba458acd Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 766
diff changeset
538 ((HardSIDBuilder *) state->config.sidEmulation)->flush();
526
fa95d942f226 Header cleanup; Moved some types from xmms-sid.h to xs_player.h; Renamed few functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 474
diff changeset
539 #endif
768
f145ba458acd Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 766
diff changeset
540 }
526
fa95d942f226 Header cleanup; Moved some types from xmms-sid.h to xs_player.h; Renamed few functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 474
diff changeset
541 #endif
364
421e4fc13bce More and more of indentation fixes.
Matti Hamalainen <ccr@tnsp.org>
parents: 359
diff changeset
542 }
73
2bc607888f53 Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
543
2bc607888f53 Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
544
660
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
545 } /* extern "C" */
b0743dc9165d Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 657
diff changeset
546 #endif /* HAVE_SIDPLAY2 */