Mercurial > hg > xmms-sid
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 |
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 | 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 | 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 | 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 | 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 | 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 | 58 sid2_config_t config; |
59 SidTune *tune; | |
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 | 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 | 85 { |
765 | 86 tune = NULL; |
695 | 87 } |
88 | |
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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 188 engine->config.samplingMethod = SID2_RESAMPLE_INTERPOLATE; |
758 | 189 #else |
765 | 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 | 193 engine->config.frequency = state->audioFrequency; |
748
d9d769b5dbe2
Remove oversampling support.
Matti Hamalainen <ccr@tnsp.org>
parents:
744
diff
changeset
|
194 |
74 | 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 | 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 | 201 engine->config.sampleFormat = SID2_LITTLE_UNSIGNED; |
758 | 202 break; |
74 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 256 #endif |
352 | 257 |
660
b0743dc9165d
Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents:
657
diff
changeset
|
258 /* Initialize builder object */ |
770 | 259 XSDEBUG("init builder #%i, maxsids=%i\n", xs_cfg.sid2Builder, (engine->emu.info()).maxsids); |
761 | 260 |
765 | 261 switch (xs_cfg.sid2Builder) |
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 | 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 | 280 { |
281 ReSIDfpBuilder *rs = new ReSIDfpBuilder("ReSID builder FP!"); | |
282 if (rs) | |
283 { | |
770 | 284 engine->config.sidEmulation = rs; |
765 | 285 if (!*rs) return FALSE; |
770 | 286 rs->create((engine->emu.info()).maxsids); |
765 | 287 if (!*rs) return FALSE; |
359
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
352
diff
changeset
|
288 |
765 | 289 /* |
290 if (m_filter.filterCurve6581) | |
291 rs->filter6581Curve(m_filter.filterCurve6581); | |
292 if (m_filter.filterCurve8580) | |
293 rs->filter8580Curve((double)m_filter.filterCurve8580); | |
294 */ | |
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 | 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 | 301 engine->config.sidEmulation = ReSIDBuilderCreate("ReSID builder"); |
302 SidLazyIPtr<IReSIDBuilder> rs(engine->config.sidEmulation); | |
765 | 303 if (rs) |
304 { | |
305 engine->config.sidEmulation = rs->iaggregate(); | |
770 | 306 rs->create((engine->emu.info()).maxsids); |
765 | 307 if (!*rs) return FALSE; |
308 } | |
660
b0743dc9165d
Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents:
657
diff
changeset
|
309 } |
765 | 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 | 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 | 317 { |
318 HardSIDBuilder *hs = new HardSIDBuilder("HardSID builder (FP)"); | |
770 | 319 engine->config.sidEmulation = (sidbuilder *) hs; |
765 | 320 if (hs) |
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 | 323 engine->config.sidEmulation = HardSIDBuilderCreate("HardSID builder"); |
324 SidLazyIPtr<IHardSIDBuilder> hs(engine->config.sidEmulation); | |
765 | 325 if (hs) |
326 { | |
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 | 329 /* Builder object created, initialize it */ |
770 | 330 hs->create((engine->emu.info()).maxsids); |
765 | 331 if (!*hs) |
332 { | |
333 xs_error("hardSID->create() failed.\n"); | |
334 return FALSE; | |
335 } | |
336 } | |
660
b0743dc9165d
Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents:
657
diff
changeset
|
337 } |
765 | 338 break; |
339 #endif | |
340 | |
341 default: | |
342 xs_error("[SIDPlay2] Invalid or unsupported builder selected.\n"); | |
343 break; | |
344 } | |
359
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
352
diff
changeset
|
345 |
770 | 346 if (!engine->config.sidEmulation) |
765 | 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 | 352 // Setup filter |
770 | 353 engine->config.sidEmulation->filter(xs_cfg.emulateFilters); |
354 if (!*(engine->config.sidEmulation)) | |
765 | 355 { |
356 xs_error("builder->filter(%d) failed.\n", xs_cfg.emulateFilters); | |
357 return FALSE; | |
358 } | |
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 | 361 engine->config.sidEmulation = engine->config.sidEmulation; |
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 | 366 switch (xs_cfg.clockSpeed) |
367 { | |
368 case XS_CLOCK_NTSC: | |
369 engine->config.clockDefault = SID2_CLOCK_NTSC; | |
370 break; | |
366
29c4484f1de2
Fixes in emulator engine configuration, make 'forceModel' option work.
Matti Hamalainen <ccr@tnsp.org>
parents:
364
diff
changeset
|
371 |
765 | 372 default: |
373 case XS_CLOCK_PAL: | |
374 engine->config.clockDefault = SID2_CLOCK_PAL; | |
375 xs_cfg.clockSpeed = XS_CLOCK_PAL; | |
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 | 381 if (xs_cfg.forceSpeed) |
382 { | |
383 engine->config.clockForced = true; | |
384 engine->config.clockSpeed = engine->config.clockDefault; | |
385 } | |
386 else | |
387 { | |
388 engine->config.clockForced = false; | |
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 | 393 #ifndef HAVE_SIDPLAY2_FP |
394 if (xs_cfg.sid2OptLevel < 0 || xs_cfg.sid2OptLevel > SID2_MAX_OPTIMISATION) | |
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 | 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 | 404 engine->config.sidDefault = xs_cfg.mos8580 ? SID2_MOS8580 : SID2_MOS6581; |
405 engine->config.sidModel = xs_cfg.forceModel ? engine->config.sidDefault : SID2_MODEL_CORRECT; | |
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 | 409 if (engine->emu.config(engine->config) < 0) |
765 | 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 | 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 | 427 if (engine) |
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 | 430 if (engine->config.sidEmulation) |
431 { | |
432 sidbuilder *builder = engine->config.sidEmulation; | |
433 engine->config.sidEmulation = NULL; | |
434 engine->emu.config(engine->config); | |
435 delete builder; | |
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 | 438 |
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 | 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 | 453 if (!engine) |
454 return FALSE; | |
270
583f5651abff
Cleanups, moved engine configuration to initialization function.
Matti Hamalainen <ccr@tnsp.org>
parents:
232
diff
changeset
|
455 |
769 | 456 if (!engine->tune->selectSong(state->currSong)) |
457 { | |
765 | 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 | 462 if (engine->emu.load(engine->tune) < 0) |
463 { | |
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 | 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 | 480 if (!engine) |
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 | 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 | 493 XSSIDPlay2 *engine = (XSSIDPlay2 *) state->internal; |
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 | 497 if (!engine) |
498 return FALSE; | |
270
583f5651abff
Cleanups, moved engine configuration to initialization function.
Matti Hamalainen <ccr@tnsp.org>
parents:
232
diff
changeset
|
499 |
765 | 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 | 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 | 513 if (engine) |
514 { | |
515 if (engine->tune) | |
516 { | |
517 delete engine->tune; | |
518 engine->tune = NULL; | |
519 } | |
765 | 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 | 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 | 531 if (xs_cfg.sid2Builder == XS_BLD_HARDSID) |
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 | 534 IfPtr<HardSIDBuilder> hs(state->config.sidEmulation); |
535 if (hs) | |
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 | 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 | 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 */ |