Mercurial > hg > xmms-sid
annotate src/xs_sidplay2.cpp @ 1011:d8f1ff7fa6ca
Update libSIDPlayFP version compatibility note.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Tue, 06 May 2014 12:31:26 +0300 |
parents | ede5374e9294 |
children |
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 |
838
ae1f6418d093
libSIDPlay2-FP backend interface is now in a separate module. Configuration
Matti Hamalainen <ccr@tnsp.org>
parents:
834
diff
changeset
|
4 libSIDPlay2 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 |
2bc607888f53
Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
27 #include "xs_sidplay2.h" |
832 | 28 #include "xs_slsup.h" |
73
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 |
833
c0e892fa914a
Begin moving libSIDPlay2-FP stuff to a separete module by removing the
Matti Hamalainen <ccr@tnsp.org>
parents:
832
diff
changeset
|
31 #include <sidplay/sidplay2.h> |
c0e892fa914a
Begin moving libSIDPlay2-FP stuff to a separete module by removing the
Matti Hamalainen <ccr@tnsp.org>
parents:
832
diff
changeset
|
32 #if G_BYTE_ORDER == G_BIG_ENDIAN |
c0e892fa914a
Begin moving libSIDPlay2-FP stuff to a separete module by removing the
Matti Hamalainen <ccr@tnsp.org>
parents:
832
diff
changeset
|
33 # define SID2_NATIVE_UNSIGNED SID2_BIG_UNSIGNED |
c0e892fa914a
Begin moving libSIDPlay2-FP stuff to a separete module by removing the
Matti Hamalainen <ccr@tnsp.org>
parents:
832
diff
changeset
|
34 # define SID2_NATIVE_SIGNED SID2_BIG_SIGNED |
c0e892fa914a
Begin moving libSIDPlay2-FP stuff to a separete module by removing the
Matti Hamalainen <ccr@tnsp.org>
parents:
832
diff
changeset
|
35 #elif G_BYTE_ORDER == G_LITTLE_ENDIAN |
c0e892fa914a
Begin moving libSIDPlay2-FP stuff to a separete module by removing the
Matti Hamalainen <ccr@tnsp.org>
parents:
832
diff
changeset
|
36 # define SID2_NATIVE_UNSIGNED SID2_LITTLE_UNSIGNED |
c0e892fa914a
Begin moving libSIDPlay2-FP stuff to a separete module by removing the
Matti Hamalainen <ccr@tnsp.org>
parents:
832
diff
changeset
|
37 # define SID2_NATIVE_SIGNED SID2_LITTLE_SIGNED |
744
c7fa50576c70
Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents:
723
diff
changeset
|
38 #else |
833
c0e892fa914a
Begin moving libSIDPlay2-FP stuff to a separete module by removing the
Matti Hamalainen <ccr@tnsp.org>
parents:
832
diff
changeset
|
39 # error Unsupported endianess! |
692
0126579b6652
Actually compiles now with libsidplay2 COM API, but does not work yet.
Matti Hamalainen <ccr@tnsp.org>
parents:
660
diff
changeset
|
40 #endif |
694
fd81a16434ed
Move builder header inclusions.
Matti Hamalainen <ccr@tnsp.org>
parents:
693
diff
changeset
|
41 |
757
9c135d421676
Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
756
diff
changeset
|
42 |
756
8299288df6d2
Rename internal structures.
Matti Hamalainen <ccr@tnsp.org>
parents:
754
diff
changeset
|
43 class XSSIDPlay2 { |
695 | 44 public: |
770 | 45 sidplay2 emu; |
765 | 46 sid2_config_t config; |
820 | 47 SidTune tune; |
765 | 48 |
756
8299288df6d2
Rename internal structures.
Matti Hamalainen <ccr@tnsp.org>
parents:
754
diff
changeset
|
49 XSSIDPlay2(void); |
795
3e305ce076e8
Make old libSIDPlay2 support work again, the one available in most distros, such as Debian.
Matti Hamalainen <ccr@tnsp.org>
parents:
791
diff
changeset
|
50 virtual ~XSSIDPlay2(void); |
695 | 51 }; |
73
2bc607888f53
Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
52 |
2bc607888f53
Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
53 |
694
fd81a16434ed
Move builder header inclusions.
Matti Hamalainen <ccr@tnsp.org>
parents:
693
diff
changeset
|
54 #ifdef HAVE_RESID_BUILDER |
833
c0e892fa914a
Begin moving libSIDPlay2-FP stuff to a separete module by removing the
Matti Hamalainen <ccr@tnsp.org>
parents:
832
diff
changeset
|
55 # include <sidplay/builders/resid.h> |
694
fd81a16434ed
Move builder header inclusions.
Matti Hamalainen <ccr@tnsp.org>
parents:
693
diff
changeset
|
56 #endif |
744
c7fa50576c70
Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents:
723
diff
changeset
|
57 |
694
fd81a16434ed
Move builder header inclusions.
Matti Hamalainen <ccr@tnsp.org>
parents:
693
diff
changeset
|
58 #ifdef HAVE_HARDSID_BUILDER |
833
c0e892fa914a
Begin moving libSIDPlay2-FP stuff to a separete module by removing the
Matti Hamalainen <ccr@tnsp.org>
parents:
832
diff
changeset
|
59 # include <sidplay/builders/hardsid.h> |
694
fd81a16434ed
Move builder header inclusions.
Matti Hamalainen <ccr@tnsp.org>
parents:
693
diff
changeset
|
60 #endif |
fd81a16434ed
Move builder header inclusions.
Matti Hamalainen <ccr@tnsp.org>
parents:
693
diff
changeset
|
61 |
fd81a16434ed
Move builder header inclusions.
Matti Hamalainen <ccr@tnsp.org>
parents:
693
diff
changeset
|
62 |
820 | 63 XSSIDPlay2::XSSIDPlay2(void) : tune(0) |
695 | 64 { |
65 } | |
66 | |
67 | |
795
3e305ce076e8
Make old libSIDPlay2 support work again, the one available in most distros, such as Debian.
Matti Hamalainen <ccr@tnsp.org>
parents:
791
diff
changeset
|
68 XSSIDPlay2::~XSSIDPlay2(void) |
3e305ce076e8
Make old libSIDPlay2 support work again, the one available in most distros, such as Debian.
Matti Hamalainen <ccr@tnsp.org>
parents:
791
diff
changeset
|
69 { |
820 | 70 emu.load(NULL); |
795
3e305ce076e8
Make old libSIDPlay2 support work again, the one available in most distros, such as Debian.
Matti Hamalainen <ccr@tnsp.org>
parents:
791
diff
changeset
|
71 } |
3e305ce076e8
Make old libSIDPlay2 support work again, the one available in most distros, such as Debian.
Matti Hamalainen <ccr@tnsp.org>
parents:
791
diff
changeset
|
72 |
3e305ce076e8
Make old libSIDPlay2 support work again, the one available in most distros, such as Debian.
Matti Hamalainen <ccr@tnsp.org>
parents:
791
diff
changeset
|
73 |
270
583f5651abff
Cleanups, moved engine configuration to initialization function.
Matti Hamalainen <ccr@tnsp.org>
parents:
232
diff
changeset
|
74 /* We need to 'export' all this pseudo-C++ crap */ |
396 | 75 extern "C" { |
73
2bc607888f53
Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
76 |
75
653c9b0d1320
SIDPlay2 support "works" now. Borked problems with threads.
Matti Hamalainen <ccr@tnsp.org>
parents:
74
diff
changeset
|
77 |
270
583f5651abff
Cleanups, moved engine configuration to initialization function.
Matti Hamalainen <ccr@tnsp.org>
parents:
232
diff
changeset
|
78 /* 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
|
79 */ |
751 | 80 gboolean xs_sidplay2_probe(XSFile *f) |
364
421e4fc13bce
More and more of indentation fixes.
Matti Hamalainen <ccr@tnsp.org>
parents:
359
diff
changeset
|
81 { |
954
a5b118c853f5
Use xs_fread_str() and improve the probing of each backend to be more
Matti Hamalainen <ccr@tnsp.org>
parents:
869
diff
changeset
|
82 gchar probe[16]; |
a5b118c853f5
Use xs_fread_str() and improve the probing of each backend to be more
Matti Hamalainen <ccr@tnsp.org>
parents:
869
diff
changeset
|
83 |
a5b118c853f5
Use xs_fread_str() and improve the probing of each backend to be more
Matti Hamalainen <ccr@tnsp.org>
parents:
869
diff
changeset
|
84 if (f == NULL || !xs_fread_str(f, (guint8 *) probe, sizeof(probe))) |
660
b0743dc9165d
Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents:
657
diff
changeset
|
85 return FALSE; |
954
a5b118c853f5
Use xs_fread_str() and improve the probing of each backend to be more
Matti Hamalainen <ccr@tnsp.org>
parents:
869
diff
changeset
|
86 |
a5b118c853f5
Use xs_fread_str() and improve the probing of each backend to be more
Matti Hamalainen <ccr@tnsp.org>
parents:
869
diff
changeset
|
87 // Old libSIDPlay2 does not support PSIDv3, afaik |
a5b118c853f5
Use xs_fread_str() and improve the probing of each backend to be more
Matti Hamalainen <ccr@tnsp.org>
parents:
869
diff
changeset
|
88 if (!strncmp(probe, "PSID", 4) && probe[4] == 0 && |
a5b118c853f5
Use xs_fread_str() and improve the probing of each backend to be more
Matti Hamalainen <ccr@tnsp.org>
parents:
869
diff
changeset
|
89 probe[5] >= 1 && probe[5] <= 2) |
a5b118c853f5
Use xs_fread_str() and improve the probing of each backend to be more
Matti Hamalainen <ccr@tnsp.org>
parents:
869
diff
changeset
|
90 return TRUE; |
a5b118c853f5
Use xs_fread_str() and improve the probing of each backend to be more
Matti Hamalainen <ccr@tnsp.org>
parents:
869
diff
changeset
|
91 else |
a5b118c853f5
Use xs_fread_str() and improve the probing of each backend to be more
Matti Hamalainen <ccr@tnsp.org>
parents:
869
diff
changeset
|
92 if (!strncmp(probe, "RSID", 4) && |
a5b118c853f5
Use xs_fread_str() and improve the probing of each backend to be more
Matti Hamalainen <ccr@tnsp.org>
parents:
869
diff
changeset
|
93 probe[4] == 0 && probe[5] == 2) |
660
b0743dc9165d
Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents:
657
diff
changeset
|
94 return TRUE; |
b0743dc9165d
Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents:
657
diff
changeset
|
95 else |
b0743dc9165d
Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents:
657
diff
changeset
|
96 return FALSE; |
364
421e4fc13bce
More and more of indentation fixes.
Matti Hamalainen <ccr@tnsp.org>
parents:
359
diff
changeset
|
97 } |
73
2bc607888f53
Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
98 |
2bc607888f53
Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
99 |
270
583f5651abff
Cleanups, moved engine configuration to initialization function.
Matti Hamalainen <ccr@tnsp.org>
parents:
232
diff
changeset
|
100 /* Initialize SIDPlay2 |
75
653c9b0d1320
SIDPlay2 support "works" now. Borked problems with threads.
Matti Hamalainen <ccr@tnsp.org>
parents:
74
diff
changeset
|
101 */ |
754
5557837fe5b6
Rename some more variables.
Matti Hamalainen <ccr@tnsp.org>
parents:
753
diff
changeset
|
102 gboolean xs_sidplay2_init(XSEngineState * state) |
364
421e4fc13bce
More and more of indentation fixes.
Matti Hamalainen <ccr@tnsp.org>
parents:
359
diff
changeset
|
103 { |
958
828dce1195e6
Oops, fix issues caused by previous changesets.
Matti Hamalainen <ccr@tnsp.org>
parents:
957
diff
changeset
|
104 (void) state; |
957
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
105 return TRUE; |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
106 } |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
107 |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
108 |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
109 /* Close SIDPlay2 engine |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
110 */ |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
111 void xs_sidplay2_close(XSEngineState * state) |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
112 { |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
113 XSDEBUG("SIDPlay2 backend shutdown.\n"); |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
114 |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
115 xs_sidplay2_delete(state); |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
116 } |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
117 |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
118 |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
119 /* Initialize current song and sub-tune |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
120 */ |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
121 gboolean xs_sidplay2_initsong(XSEngineState * state) |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
122 { |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
123 XSSIDPlay2 *engine = (XSSIDPlay2 *) state->internal; |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
124 |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
125 if (!engine) |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
126 return FALSE; |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
127 |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
128 if (!engine->tune.selectSong(state->currSong)) |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
129 { |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
130 xs_error("[SIDPlay2] tune.selectSong() failed\n"); |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
131 return FALSE; |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
132 } |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
133 |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
134 if (engine->emu.load(&(engine->tune)) < 0) |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
135 { |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
136 xs_error("[SIDPlay2] emu.load() failed\n"); |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
137 return FALSE; |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
138 } |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
139 |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
140 if (engine->emu.config(engine->config) < 0) |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
141 { |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
142 xs_error("[SIDPlay2] Emulator engine configuration failed!\n"); |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
143 return FALSE; |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
144 } |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
145 |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
146 return TRUE; |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
147 } |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
148 |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
149 |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
150 /* Emulate and render audio data to given buffer |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
151 */ |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
152 guint xs_sidplay2_fillbuffer(XSEngineState * state, gchar * audioBuffer, guint audioBufSize) |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
153 { |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
154 XSSIDPlay2 *engine = (XSSIDPlay2 *) state->internal; |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
155 |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
156 if (!engine) |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
157 return 0; |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
158 |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
159 return engine->emu.play(audioBuffer, audioBufSize); |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
160 } |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
161 |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
162 |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
163 /* Load a given SID-tune file |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
164 */ |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
165 gboolean xs_sidplay2_load(XSEngineState * state, gchar * filename) |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
166 { |
756
8299288df6d2
Rename internal structures.
Matti Hamalainen <ccr@tnsp.org>
parents:
754
diff
changeset
|
167 XSSIDPlay2 *engine; |
957
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
168 guint8 *buf = NULL; |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
169 size_t bufSize; |
73
2bc607888f53
Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
170 |
847
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
171 XSDEBUG("SIDPlay2 backend initializing.\n"); |
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
172 |
660
b0743dc9165d
Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents:
657
diff
changeset
|
173 /* Allocate internal structures */ |
756
8299288df6d2
Rename internal structures.
Matti Hamalainen <ccr@tnsp.org>
parents:
754
diff
changeset
|
174 engine = new XSSIDPlay2(); |
754
5557837fe5b6
Rename some more variables.
Matti Hamalainen <ccr@tnsp.org>
parents:
753
diff
changeset
|
175 state->internal = engine; |
770 | 176 if (!engine) |
957
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
177 { |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
178 xs_error("Allocating XSSIDPlay2 compound backend object failed.\n"); |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
179 goto error; |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
180 } |
75
653c9b0d1320
SIDPlay2 support "works" now. Borked problems with threads.
Matti Hamalainen <ccr@tnsp.org>
parents:
74
diff
changeset
|
181 |
660
b0743dc9165d
Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents:
657
diff
changeset
|
182 /* Get current configuration */ |
847
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
183 XSDEBUG("SIDPlay2 emulation configuration\n"); |
770 | 184 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
|
185 |
660
b0743dc9165d
Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents:
657
diff
changeset
|
186 /* Configure channels and stuff */ |
766
19e2745f75d8
Cosmetics and leftover cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents:
765
diff
changeset
|
187 switch (state->audioChannels) |
19e2745f75d8
Cosmetics and leftover cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents:
765
diff
changeset
|
188 { |
744
c7fa50576c70
Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents:
723
diff
changeset
|
189 case XS_CHN_AUTOPAN: |
765 | 190 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
|
191 break; |
73
2bc607888f53
Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
192 |
744
c7fa50576c70
Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents:
723
diff
changeset
|
193 case XS_CHN_STEREO: |
765 | 194 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
|
195 break; |
73
2bc607888f53
Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
196 |
744
c7fa50576c70
Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents:
723
diff
changeset
|
197 case XS_CHN_MONO: |
c7fa50576c70
Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents:
723
diff
changeset
|
198 default: |
765 | 199 engine->config.playback = sid2_mono; |
754
5557837fe5b6
Rename some more variables.
Matti Hamalainen <ccr@tnsp.org>
parents:
753
diff
changeset
|
200 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
|
201 break; |
660
b0743dc9165d
Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents:
657
diff
changeset
|
202 } |
73
2bc607888f53
Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
203 |
2bc607888f53
Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
204 |
660
b0743dc9165d
Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents:
657
diff
changeset
|
205 /* Memory mode settings */ |
766
19e2745f75d8
Cosmetics and leftover cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents:
765
diff
changeset
|
206 switch (xs_cfg.memoryMode) |
19e2745f75d8
Cosmetics and leftover cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents:
765
diff
changeset
|
207 { |
744
c7fa50576c70
Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents:
723
diff
changeset
|
208 case XS_MPU_BANK_SWITCHING: |
765 | 209 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
|
210 break; |
73
2bc607888f53
Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
211 |
744
c7fa50576c70
Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents:
723
diff
changeset
|
212 case XS_MPU_TRANSPARENT_ROM: |
765 | 213 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
|
214 break; |
73
2bc607888f53
Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
215 |
744
c7fa50576c70
Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents:
723
diff
changeset
|
216 case XS_MPU_PLAYSID_ENVIRONMENT: |
765 | 217 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
|
218 break; |
73
2bc607888f53
Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
219 |
744
c7fa50576c70
Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents:
723
diff
changeset
|
220 case XS_MPU_REAL: |
c7fa50576c70
Initial implementation for supporting libSIDPlay2-FP (or libSIDPlay-FP, as
Matti Hamalainen <ccr@tnsp.org>
parents:
723
diff
changeset
|
221 default: |
765 | 222 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
|
223 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
|
224 break; |
660
b0743dc9165d
Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents:
657
diff
changeset
|
225 } |
73
2bc607888f53
Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
226 |
2bc607888f53
Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
227 |
660
b0743dc9165d
Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents:
657
diff
changeset
|
228 /* Audio parameters sanity checking and setup */ |
765 | 229 engine->config.precision = state->audioBitsPerSample; |
230 engine->config.frequency = state->audioFrequency; | |
748
d9d769b5dbe2
Remove oversampling support.
Matti Hamalainen <ccr@tnsp.org>
parents:
744
diff
changeset
|
231 |
74 | 232 |
766
19e2745f75d8
Cosmetics and leftover cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents:
765
diff
changeset
|
233 switch (state->audioBitsPerSample) |
19e2745f75d8
Cosmetics and leftover cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents:
765
diff
changeset
|
234 { |
757
9c135d421676
Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
756
diff
changeset
|
235 case XS_RES_8BIT: |
9c135d421676
Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
756
diff
changeset
|
236 state->audioFormat = FMT_U8; |
765 | 237 engine->config.sampleFormat = SID2_LITTLE_UNSIGNED; |
758 | 238 break; |
359
b1a858b8cb1a
Re-indentation all (non-generated) code.
Matti Hamalainen <ccr@tnsp.org>
parents:
352
diff
changeset
|
239 |
757
9c135d421676
Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
756
diff
changeset
|
240 case XS_RES_16BIT: |
660
b0743dc9165d
Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents:
657
diff
changeset
|
241 default: |
766
19e2745f75d8
Cosmetics and leftover cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents:
765
diff
changeset
|
242 switch (state->audioFormat) |
19e2745f75d8
Cosmetics and leftover cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents:
765
diff
changeset
|
243 { |
757
9c135d421676
Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
756
diff
changeset
|
244 case FMT_U16_LE: |
765 | 245 engine->config.sampleFormat = SID2_LITTLE_UNSIGNED; |
757
9c135d421676
Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
756
diff
changeset
|
246 break; |
9c135d421676
Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
756
diff
changeset
|
247 |
9c135d421676
Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
756
diff
changeset
|
248 case FMT_U16_BE: |
765 | 249 engine->config.sampleFormat = SID2_BIG_UNSIGNED; |
757
9c135d421676
Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
756
diff
changeset
|
250 break; |
127
ddb513bd2610
Improved audio format support, now supported formats are "queried" from
Matti Hamalainen <ccr@tnsp.org>
parents:
103
diff
changeset
|
251 |
757
9c135d421676
Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
756
diff
changeset
|
252 case FMT_U16_NE: |
765 | 253 engine->config.sampleFormat = SID2_NATIVE_UNSIGNED; |
757
9c135d421676
Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
756
diff
changeset
|
254 break; |
9c135d421676
Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
756
diff
changeset
|
255 |
9c135d421676
Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
756
diff
changeset
|
256 case FMT_S16_LE: |
765 | 257 engine->config.sampleFormat = SID2_LITTLE_SIGNED; |
757
9c135d421676
Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
756
diff
changeset
|
258 break; |
9c135d421676
Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
756
diff
changeset
|
259 |
9c135d421676
Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
756
diff
changeset
|
260 case FMT_S16_BE: |
765 | 261 engine->config.sampleFormat = SID2_BIG_SIGNED; |
757
9c135d421676
Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
756
diff
changeset
|
262 break; |
9c135d421676
Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
756
diff
changeset
|
263 |
9c135d421676
Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
756
diff
changeset
|
264 default: |
821
dea579b6c3b3
Oops, need to set FMT_S16_NE audio format for XMMS output backend as well
Matti Hamalainen <ccr@tnsp.org>
parents:
820
diff
changeset
|
265 state->audioFormat = FMT_S16_NE; |
765 | 266 engine->config.sampleFormat = SID2_NATIVE_SIGNED; |
757
9c135d421676
Clean up endianess handling a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
756
diff
changeset
|
267 break; |
766
19e2745f75d8
Cosmetics and leftover cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents:
765
diff
changeset
|
268 } |
19e2745f75d8
Cosmetics and leftover cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents:
765
diff
changeset
|
269 break; |
660
b0743dc9165d
Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents:
657
diff
changeset
|
270 } |
b0743dc9165d
Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents:
657
diff
changeset
|
271 |
b0743dc9165d
Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents:
657
diff
changeset
|
272 /* Clockspeed settings */ |
765 | 273 switch (xs_cfg.clockSpeed) |
274 { | |
275 case XS_CLOCK_NTSC: | |
276 engine->config.clockDefault = SID2_CLOCK_NTSC; | |
277 break; | |
366
29c4484f1de2
Fixes in emulator engine configuration, make 'forceModel' option work.
Matti Hamalainen <ccr@tnsp.org>
parents:
364
diff
changeset
|
278 |
765 | 279 default: |
280 case XS_CLOCK_PAL: | |
281 engine->config.clockDefault = SID2_CLOCK_PAL; | |
282 xs_cfg.clockSpeed = XS_CLOCK_PAL; | |
283 break; | |
660
b0743dc9165d
Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents:
657
diff
changeset
|
284 } |
366
29c4484f1de2
Fixes in emulator engine configuration, make 'forceModel' option work.
Matti Hamalainen <ccr@tnsp.org>
parents:
364
diff
changeset
|
285 |
29c4484f1de2
Fixes in emulator engine configuration, make 'forceModel' option work.
Matti Hamalainen <ccr@tnsp.org>
parents:
364
diff
changeset
|
286 |
660
b0743dc9165d
Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents:
657
diff
changeset
|
287 /* Configure rest of the emulation */ |
765 | 288 if (xs_cfg.forceSpeed) |
289 { | |
290 engine->config.clockForced = true; | |
291 engine->config.clockSpeed = engine->config.clockDefault; | |
292 } | |
293 else | |
294 { | |
295 engine->config.clockForced = false; | |
296 engine->config.clockSpeed = SID2_CLOCK_CORRECT; | |
660
b0743dc9165d
Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents:
657
diff
changeset
|
297 } |
b0743dc9165d
Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents:
657
diff
changeset
|
298 |
710
a6283cf95c99
Updated to work with latest distortion patched libSIDPlay2+reSID from Antti
Matti Hamalainen <ccr@tnsp.org>
parents:
702
diff
changeset
|
299 |
761 | 300 if (xs_cfg.sid2OptLevel < 0 || xs_cfg.sid2OptLevel > SID2_MAX_OPTIMISATION) |
301 { | |
660
b0743dc9165d
Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents:
657
diff
changeset
|
302 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
|
303 xs_cfg.sid2OptLevel, SID2_DEFAULT_OPTIMISATION); |
b0743dc9165d
Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents:
657
diff
changeset
|
304 |
761 | 305 xs_cfg.sid2OptLevel = SID2_DEFAULT_OPTIMISATION; |
660
b0743dc9165d
Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents:
657
diff
changeset
|
306 } |
766
19e2745f75d8
Cosmetics and leftover cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents:
765
diff
changeset
|
307 engine->config.optimisation = xs_cfg.sid2OptLevel; |
366
29c4484f1de2
Fixes in emulator engine configuration, make 'forceModel' option work.
Matti Hamalainen <ccr@tnsp.org>
parents:
364
diff
changeset
|
308 |
765 | 309 engine->config.sidDefault = xs_cfg.mos8580 ? SID2_MOS8580 : SID2_MOS6581; |
310 engine->config.sidModel = xs_cfg.forceModel ? engine->config.sidDefault : SID2_MODEL_CORRECT; | |
311 engine->config.sidSamples = TRUE; | |
321
45ad9f7c1628
Improved compatibility, some fixes in reSID emulation initialization.
Matti Hamalainen <ccr@tnsp.org>
parents:
270
diff
changeset
|
312 |
847
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
313 |
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
314 /* Initialize builder object */ |
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
315 XSDEBUG("init builder #%i, maxsids=%i\n", xs_cfg.sid2Builder, (engine->emu.info()).maxsids); |
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
316 |
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
317 switch (xs_cfg.sid2Builder) |
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
318 { |
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
319 #ifdef HAVE_RESID_BUILDER |
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
320 case XS_BLD_RESID: |
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
321 { |
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
322 ReSIDBuilder *rs = new ReSIDBuilder("ReSID builder"); |
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
323 if (rs) |
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
324 { |
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
325 engine->config.sidEmulation = rs; |
958
828dce1195e6
Oops, fix issues caused by previous changesets.
Matti Hamalainen <ccr@tnsp.org>
parents:
957
diff
changeset
|
326 if (!*rs) goto error; |
847
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
327 rs->create((engine->emu.info()).maxsids); |
958
828dce1195e6
Oops, fix issues caused by previous changesets.
Matti Hamalainen <ccr@tnsp.org>
parents:
957
diff
changeset
|
328 if (!*rs) goto error; |
847
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
329 } |
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
330 } |
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
331 break; |
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
332 #endif |
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
333 |
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
334 #ifdef HAVE_HARDSID_BUILDER |
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
335 case XS_BLD_HARDSID: |
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
336 { |
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
337 HardSIDBuilder *hs = new HardSIDBuilder("HardSID builder (FP)"); |
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
338 engine->config.sidEmulation = (sidbuilder *) hs; |
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
339 if (hs) |
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
340 { |
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
341 hs->create((engine->emu.info()).maxsids); |
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
342 if (!*hs) |
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
343 { |
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
344 xs_error("hardSID->create() failed.\n"); |
958
828dce1195e6
Oops, fix issues caused by previous changesets.
Matti Hamalainen <ccr@tnsp.org>
parents:
957
diff
changeset
|
345 goto error; |
847
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
346 } |
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
347 } |
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
348 } |
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
349 break; |
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
350 #endif |
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
351 |
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
352 default: |
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
353 xs_error("[SIDPlay2] Invalid or unsupported builder selected.\n"); |
958
828dce1195e6
Oops, fix issues caused by previous changesets.
Matti Hamalainen <ccr@tnsp.org>
parents:
957
diff
changeset
|
354 goto error; |
847
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
355 } |
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
356 |
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
357 if (!engine->config.sidEmulation) |
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
358 { |
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
359 xs_error("[SIDPlay2] Could not initialize SIDBuilder object.\n"); |
958
828dce1195e6
Oops, fix issues caused by previous changesets.
Matti Hamalainen <ccr@tnsp.org>
parents:
957
diff
changeset
|
360 goto error; |
847
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
361 } |
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
362 |
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
363 XSDEBUG("%s\n", engine->config.sidEmulation->credits()); |
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
364 |
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
365 |
869
3a9bf45178ff
Use xs_fload_buffer() again, to support potential VFS backends.
Matti Hamalainen <ccr@tnsp.org>
parents:
862
diff
changeset
|
366 if (!xs_fload_buffer(filename, &buf, &bufSize, XS_SIDBUF_SIZE, TRUE)) |
3a9bf45178ff
Use xs_fload_buffer() again, to support potential VFS backends.
Matti Hamalainen <ccr@tnsp.org>
parents:
862
diff
changeset
|
367 goto error; |
3a9bf45178ff
Use xs_fload_buffer() again, to support potential VFS backends.
Matti Hamalainen <ccr@tnsp.org>
parents:
862
diff
changeset
|
368 |
3a9bf45178ff
Use xs_fload_buffer() again, to support potential VFS backends.
Matti Hamalainen <ccr@tnsp.org>
parents:
862
diff
changeset
|
369 engine->tune.read(buf, bufSize); |
820 | 370 if (!engine->tune) |
371 { | |
372 xs_error("Could not load file '%s': %s\n", | |
373 filename, (engine->tune.getInfo()).statusString); | |
869
3a9bf45178ff
Use xs_fload_buffer() again, to support potential VFS backends.
Matti Hamalainen <ccr@tnsp.org>
parents:
862
diff
changeset
|
374 goto error; |
820 | 375 } |
869
3a9bf45178ff
Use xs_fload_buffer() again, to support potential VFS backends.
Matti Hamalainen <ccr@tnsp.org>
parents:
862
diff
changeset
|
376 |
958
828dce1195e6
Oops, fix issues caused by previous changesets.
Matti Hamalainen <ccr@tnsp.org>
parents:
957
diff
changeset
|
377 g_free(buf); |
828dce1195e6
Oops, fix issues caused by previous changesets.
Matti Hamalainen <ccr@tnsp.org>
parents:
957
diff
changeset
|
378 return TRUE; |
869
3a9bf45178ff
Use xs_fload_buffer() again, to support potential VFS backends.
Matti Hamalainen <ccr@tnsp.org>
parents:
862
diff
changeset
|
379 |
3a9bf45178ff
Use xs_fload_buffer() again, to support potential VFS backends.
Matti Hamalainen <ccr@tnsp.org>
parents:
862
diff
changeset
|
380 error: |
958
828dce1195e6
Oops, fix issues caused by previous changesets.
Matti Hamalainen <ccr@tnsp.org>
parents:
957
diff
changeset
|
381 if (engine) |
828dce1195e6
Oops, fix issues caused by previous changesets.
Matti Hamalainen <ccr@tnsp.org>
parents:
957
diff
changeset
|
382 delete engine; |
828dce1195e6
Oops, fix issues caused by previous changesets.
Matti Hamalainen <ccr@tnsp.org>
parents:
957
diff
changeset
|
383 state->internal = NULL; |
869
3a9bf45178ff
Use xs_fload_buffer() again, to support potential VFS backends.
Matti Hamalainen <ccr@tnsp.org>
parents:
862
diff
changeset
|
384 g_free(buf); |
958
828dce1195e6
Oops, fix issues caused by previous changesets.
Matti Hamalainen <ccr@tnsp.org>
parents:
957
diff
changeset
|
385 return FALSE; |
364
421e4fc13bce
More and more of indentation fixes.
Matti Hamalainen <ccr@tnsp.org>
parents:
359
diff
changeset
|
386 } |
270
583f5651abff
Cleanups, moved engine configuration to initialization function.
Matti Hamalainen <ccr@tnsp.org>
parents:
232
diff
changeset
|
387 |
583f5651abff
Cleanups, moved engine configuration to initialization function.
Matti Hamalainen <ccr@tnsp.org>
parents:
232
diff
changeset
|
388 |
583f5651abff
Cleanups, moved engine configuration to initialization function.
Matti Hamalainen <ccr@tnsp.org>
parents:
232
diff
changeset
|
389 /* Delete INTERNAL information |
73
2bc607888f53
Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
390 */ |
754
5557837fe5b6
Rename some more variables.
Matti Hamalainen <ccr@tnsp.org>
parents:
753
diff
changeset
|
391 void xs_sidplay2_delete(XSEngineState * state) |
364
421e4fc13bce
More and more of indentation fixes.
Matti Hamalainen <ccr@tnsp.org>
parents:
359
diff
changeset
|
392 { |
957
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
393 XSSIDPlay2 *engine = (XSSIDPlay2 *) state->internal; |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
394 |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
395 if (engine) |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
396 delete engine; |
0e60e5d56fdd
Change how the backend emulator library is initialized for libSIDPlay2 and
Matti Hamalainen <ccr@tnsp.org>
parents:
954
diff
changeset
|
397 state->internal = NULL; |
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
|
398 } |
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
|
399 |
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
|
400 |
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
|
401 /* 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
|
402 */ |
754
5557837fe5b6
Rename some more variables.
Matti Hamalainen <ccr@tnsp.org>
parents:
753
diff
changeset
|
403 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
|
404 { |
779
8fb51f9ef44e
Fix some HardSID builder related things.
Matti Hamalainen <ccr@tnsp.org>
parents:
776
diff
changeset
|
405 XSSIDPlay2 *engine = (XSSIDPlay2 *) state->internal; |
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
|
406 |
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
|
407 #ifdef HAVE_HARDSID_BUILDER |
768 | 408 if (xs_cfg.sid2Builder == XS_BLD_HARDSID) |
409 { | |
779
8fb51f9ef44e
Fix some HardSID builder related things.
Matti Hamalainen <ccr@tnsp.org>
parents:
776
diff
changeset
|
410 ((HardSIDBuilder *) engine->config.sidEmulation)->flush(); |
768 | 411 } |
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
|
412 #endif |
364
421e4fc13bce
More and more of indentation fixes.
Matti Hamalainen <ccr@tnsp.org>
parents:
359
diff
changeset
|
413 } |
73
2bc607888f53
Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
414 |
2bc607888f53
Added libsidplay2 module, lots of reworking of internals, sidplay1 support
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
415 |
862
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
416 /* This function gets most of the information, though we do miss some |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
417 * (those variables that are only set by libSIDPlay when tune is initialized). |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
418 * Rest of the information is acquired in xs_sidplay2_updateinfo() |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
419 */ |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
420 XSTuneInfo *xs_sidplay2_getinfo(const gchar *filename) |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
421 { |
869
3a9bf45178ff
Use xs_fload_buffer() again, to support potential VFS backends.
Matti Hamalainen <ccr@tnsp.org>
parents:
862
diff
changeset
|
422 XSTuneInfo *res = NULL; |
3a9bf45178ff
Use xs_fload_buffer() again, to support potential VFS backends.
Matti Hamalainen <ccr@tnsp.org>
parents:
862
diff
changeset
|
423 SidTune *tune = NULL; |
862
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
424 SidTuneInfo info; |
869
3a9bf45178ff
Use xs_fload_buffer() again, to support potential VFS backends.
Matti Hamalainen <ccr@tnsp.org>
parents:
862
diff
changeset
|
425 guint8 *buf = NULL; |
3a9bf45178ff
Use xs_fload_buffer() again, to support potential VFS backends.
Matti Hamalainen <ccr@tnsp.org>
parents:
862
diff
changeset
|
426 size_t bufSize; |
862
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
427 |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
428 /* Check if the tune exists and is readable */ |
869
3a9bf45178ff
Use xs_fload_buffer() again, to support potential VFS backends.
Matti Hamalainen <ccr@tnsp.org>
parents:
862
diff
changeset
|
429 if (!xs_fload_buffer(filename, &buf, &bufSize, XS_SIDBUF_SIZE, TRUE)) |
3a9bf45178ff
Use xs_fload_buffer() again, to support potential VFS backends.
Matti Hamalainen <ccr@tnsp.org>
parents:
862
diff
changeset
|
430 { |
3a9bf45178ff
Use xs_fload_buffer() again, to support potential VFS backends.
Matti Hamalainen <ccr@tnsp.org>
parents:
862
diff
changeset
|
431 XSDEBUG("could not load file '%s'.\n", filename); |
3a9bf45178ff
Use xs_fload_buffer() again, to support potential VFS backends.
Matti Hamalainen <ccr@tnsp.org>
parents:
862
diff
changeset
|
432 goto error; |
3a9bf45178ff
Use xs_fload_buffer() again, to support potential VFS backends.
Matti Hamalainen <ccr@tnsp.org>
parents:
862
diff
changeset
|
433 } |
3a9bf45178ff
Use xs_fload_buffer() again, to support potential VFS backends.
Matti Hamalainen <ccr@tnsp.org>
parents:
862
diff
changeset
|
434 |
3a9bf45178ff
Use xs_fload_buffer() again, to support potential VFS backends.
Matti Hamalainen <ccr@tnsp.org>
parents:
862
diff
changeset
|
435 if ((tune = new SidTune(buf, bufSize)) == NULL) |
862
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
436 { |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
437 XSDEBUG("could not initialize tune from '%s'.\n", filename); |
869
3a9bf45178ff
Use xs_fload_buffer() again, to support potential VFS backends.
Matti Hamalainen <ccr@tnsp.org>
parents:
862
diff
changeset
|
438 goto error; |
862
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
439 } |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
440 |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
441 if (!tune->getStatus()) |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
442 { |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
443 XSDEBUG("tune->getStatus() returned false for '%s'.\n", filename); |
869
3a9bf45178ff
Use xs_fload_buffer() again, to support potential VFS backends.
Matti Hamalainen <ccr@tnsp.org>
parents:
862
diff
changeset
|
444 goto error; |
862
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
445 } |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
446 |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
447 /* Get general tune information */ |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
448 tune->getInfo(info); |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
449 |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
450 /* Allocate tuneinfo structure and set information */ |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
451 res = xs_tuneinfo_new(filename, |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
452 info.songs, info.startSong, |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
453 info.infoString[0], info.infoString[1], info.infoString[2], |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
454 info.loadAddr, info.initAddr, info.playAddr, |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
455 info.dataFileLen, info.formatString, |
961
be2a8436461a
Add display of second SID chip to titles, and also new custom format tokens
Matti Hamalainen <ccr@tnsp.org>
parents:
958
diff
changeset
|
456 info.sidModel, XS_SIDMODEL_UNKNOWN |
862
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
457 ); |
869
3a9bf45178ff
Use xs_fload_buffer() again, to support potential VFS backends.
Matti Hamalainen <ccr@tnsp.org>
parents:
862
diff
changeset
|
458 |
3a9bf45178ff
Use xs_fload_buffer() again, to support potential VFS backends.
Matti Hamalainen <ccr@tnsp.org>
parents:
862
diff
changeset
|
459 error: |
3a9bf45178ff
Use xs_fload_buffer() again, to support potential VFS backends.
Matti Hamalainen <ccr@tnsp.org>
parents:
862
diff
changeset
|
460 if (tune) |
3a9bf45178ff
Use xs_fload_buffer() again, to support potential VFS backends.
Matti Hamalainen <ccr@tnsp.org>
parents:
862
diff
changeset
|
461 delete tune; |
3a9bf45178ff
Use xs_fload_buffer() again, to support potential VFS backends.
Matti Hamalainen <ccr@tnsp.org>
parents:
862
diff
changeset
|
462 |
3a9bf45178ff
Use xs_fload_buffer() again, to support potential VFS backends.
Matti Hamalainen <ccr@tnsp.org>
parents:
862
diff
changeset
|
463 g_free(buf); |
862
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
464 return res; |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
465 } |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
466 |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
467 |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
468 /* Updates the information of currently playing tune |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
469 */ |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
470 gboolean xs_sidplay2_updateinfo(XSEngineState *state) |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
471 { |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
472 XSSIDPlay2 *engine; |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
473 SidTuneInfo info; |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
474 |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
475 /* Check if we have required structures initialized */ |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
476 if (!state || !state->tuneInfo || !state->internal) |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
477 return FALSE; |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
478 |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
479 engine = (XSSIDPlay2 *) state->internal; |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
480 if (!(engine->tune)) |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
481 return FALSE; |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
482 |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
483 /* Get general tune information */ |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
484 engine->tune.getInfo(info); |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
485 |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
486 /* NOTICE! Here we assume that libSIDPlay[12] headers define |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
487 * SIDTUNE_SIDMODEL_* similarly to our enums in xs_config.h ... |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
488 */ |
961
be2a8436461a
Add display of second SID chip to titles, and also new custom format tokens
Matti Hamalainen <ccr@tnsp.org>
parents:
958
diff
changeset
|
489 state->tuneInfo->sidModel1 = info.sidModel; |
be2a8436461a
Add display of second SID chip to titles, and also new custom format tokens
Matti Hamalainen <ccr@tnsp.org>
parents:
958
diff
changeset
|
490 state->tuneInfo->sidModel2 = XS_SIDMODEL_UNKNOWN; |
862
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
491 |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
492 if (state->currSong > 0 && state->currSong <= state->tuneInfo->nsubTunes) |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
493 { |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
494 gint tmpSpeed = info.clockSpeed; |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
495 switch (info.clockSpeed) |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
496 { |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
497 case SIDTUNE_CLOCK_PAL: tmpSpeed = XS_CLOCK_PAL; break; |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
498 case SIDTUNE_CLOCK_NTSC: tmpSpeed = XS_CLOCK_NTSC; break; |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
499 case SIDTUNE_CLOCK_ANY: tmpSpeed = XS_CLOCK_ANY; break; |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
500 case SIDTUNE_CLOCK_UNKNOWN: |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
501 switch (info.songSpeed) |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
502 { |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
503 case SIDTUNE_SPEED_VBI: tmpSpeed = XS_CLOCK_VBI; break; |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
504 case SIDTUNE_SPEED_CIA_1A: tmpSpeed = XS_CLOCK_CIA; break; |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
505 default: tmpSpeed = info.songSpeed; break; |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
506 } |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
507 break; |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
508 } |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
509 state->tuneInfo->subTunes[state->currSong - 1].tuneSpeed = tmpSpeed; |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
510 } |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
511 |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
512 return TRUE; |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
513 } |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
514 |
011ba70e271e
Major cleanups, make SIDPlayFP backend compile with libSIDPlayFP v1.0.0
Matti Hamalainen <ccr@tnsp.org>
parents:
849
diff
changeset
|
515 |
660
b0743dc9165d
Change tabs to 4 spaces, everywhere.
Matti Hamalainen <ccr@tnsp.org>
parents:
657
diff
changeset
|
516 } /* extern "C" */ |
847
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
517 #endif /* HAVE_SIDPLAY2 |
5b93bd8c7814
Cleanups, adjust backend configuration sequences, more error checking,
Matti Hamalainen <ccr@tnsp.org>
parents:
838
diff
changeset
|
518 */ |