libsidplayfp 1.8.8
SidTuneInfoImpl.h
1/*
2 * This file is part of libsidplayfp, a SID player engine.
3 *
4 * Copyright 2011-2015 Leandro Nini
5 * Copyright 2007-2010 Antti Lankila
6 * Copyright 2000 Simon White
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 */
22
23#ifndef SIDTUNEINFOIMPL_H
24#define SIDTUNEINFOIMPL_H
25
26#include <stdint.h>
27#include <vector>
28#include <string>
29
30#include "sidplayfp/SidTuneInfo.h"
31
36{
37public:
38 const char* m_formatString;
39
40 unsigned int m_songs;
41 unsigned int m_startSong;
42 unsigned int m_currentSong;
43
44 int m_songSpeed;
45
46 clock_t m_clockSpeed;
47
48 compatibility_t m_compatibility;
49
50 uint_least32_t m_dataFileLen;
51
52 uint_least32_t m_c64dataLen;
53
54 uint_least16_t m_loadAddr;
55 uint_least16_t m_initAddr;
56 uint_least16_t m_playAddr;
57
58 uint_least8_t m_relocStartPage;
59
60 uint_least8_t m_relocPages;
61
62 std::string m_path;
63
64 std::string m_dataFileName;
65
66 std::string m_infoFileName;
67
68 std::vector<model_t> m_sidModels;
69
70 std::vector<uint_least16_t> m_sidChipAddresses;
71
72 std::vector<std::string> m_infoString;
73
74 std::vector<std::string> m_commentString;
75
76 bool m_fixLoad;
77
78private: // prevent copying
81
82public:
84 m_formatString("N/A"),
85 m_songs(0),
86 m_startSong(0),
87 m_currentSong(0),
88 m_songSpeed(SPEED_VBI),
89 m_clockSpeed(CLOCK_UNKNOWN),
90 m_compatibility(COMPATIBILITY_C64),
91 m_dataFileLen(0),
92 m_c64dataLen(0),
93 m_loadAddr(0),
94 m_initAddr(0),
95 m_playAddr(0),
96 m_relocStartPage(0),
97 m_relocPages(0),
98 m_fixLoad(false)
99 {
100 m_sidModels.push_back(SIDMODEL_UNKNOWN);
101 m_sidChipAddresses.push_back(0xd400);
102
103 }
104
105 uint_least16_t loadAddr() const { return m_loadAddr; }
106
107 uint_least16_t initAddr() const { return m_initAddr; }
108
109 uint_least16_t playAddr() const { return m_playAddr; }
110
111 unsigned int songs() const { return m_songs; }
112
113 unsigned int startSong() const { return m_startSong; }
114
115 unsigned int currentSong() const { return m_currentSong; }
116
117 uint_least16_t sidChipBase1() const { return m_sidChipAddresses[0]; }
118 uint_least16_t sidChipBase2() const { return m_sidChipAddresses.size() > 1 ? m_sidChipAddresses[1] : SIDMODEL_UNKNOWN; }
119
120 uint_least16_t sidChipBase(unsigned int i) const
121 {
122 return i < m_sidChipAddresses.size() ? m_sidChipAddresses[i] : 0;
123 }
124
125 bool isStereo() const { return m_sidChipAddresses.size() > 1; }
126
127 int sidChips() const { return m_sidChipAddresses.size(); }
128
129 int songSpeed() const { return m_songSpeed; }
130
131 uint_least8_t relocStartPage() const { return m_relocStartPage; }
132
133 uint_least8_t relocPages() const { return m_relocPages; }
134
135 model_t sidModel1() const { return m_sidModels[0]; }
136 model_t sidModel2() const { return m_sidModels.size() > 1 ? m_sidModels[1] : SIDMODEL_UNKNOWN; }
137
138 model_t sidModel(unsigned int i) const
139 {
140 return i < m_sidModels.size() ? m_sidModels[i] : SIDMODEL_UNKNOWN;
141 }
142
143 compatibility_t compatibility() const { return m_compatibility; }
144
145 unsigned int numberOfInfoStrings() const { return m_infoString.size(); }
146 const char* infoString(unsigned int i) const { return i<numberOfInfoStrings()?m_infoString[i].c_str():""; }
147
148 unsigned int numberOfCommentStrings() const { return m_commentString.size(); }
149 const char* commentString(unsigned int i) const { return i<numberOfCommentStrings()?m_commentString[i].c_str():""; }
150
151 uint_least32_t dataFileLen() const { return m_dataFileLen; }
152
153 uint_least32_t c64dataLen() const { return m_c64dataLen; }
154
155 clock_t clockSpeed() const { return m_clockSpeed; }
156
157 const char* formatString() const { return m_formatString; }
158
159 bool fixLoad() const { return m_fixLoad; }
160
161 const char* path() const { return m_path.c_str(); }
162
163 const char* dataFileName() const { return m_dataFileName.c_str(); }
164
165 const char* infoFileName() const { return !m_infoFileName.empty()?m_infoFileName.c_str():0; }
166};
167
168#endif /* SIDTUNEINFOIMPL_H */
Definition: SidTuneInfoImpl.h:36
uint_least16_t sidChipBase(unsigned int i) const
Definition: SidTuneInfoImpl.h:120
uint_least16_t sidChipBase2() const
0xD??0 (2nd SID) or 0 (no 2nd SID)
Definition: SidTuneInfoImpl.h:118
int sidChips() const
Definition: SidTuneInfoImpl.h:127
compatibility_t compatibility() const
Definition: SidTuneInfoImpl.h:143
const char * commentString(unsigned int i) const
Used to stash the MUS comment somewhere.
Definition: SidTuneInfoImpl.h:149
uint_least8_t relocPages() const
Definition: SidTuneInfoImpl.h:133
clock_t clockSpeed() const
Definition: SidTuneInfoImpl.h:155
unsigned int currentSong() const
Definition: SidTuneInfoImpl.h:115
uint_least16_t loadAddr() const
Definition: SidTuneInfoImpl.h:105
unsigned int numberOfCommentStrings() const
Number of comments.
Definition: SidTuneInfoImpl.h:148
uint_least16_t initAddr() const
Definition: SidTuneInfoImpl.h:107
model_t sidModel2() const
second SID
Definition: SidTuneInfoImpl.h:136
const char * infoFileName() const
Definition: SidTuneInfoImpl.h:165
uint_least8_t relocStartPage() const
Definition: SidTuneInfoImpl.h:131
unsigned int numberOfInfoStrings() const
the number of available text info lines
Definition: SidTuneInfoImpl.h:145
const char * path() const
Definition: SidTuneInfoImpl.h:161
const char * dataFileName() const
Definition: SidTuneInfoImpl.h:163
uint_least16_t playAddr() const
Definition: SidTuneInfoImpl.h:109
unsigned int songs() const
Definition: SidTuneInfoImpl.h:111
unsigned int startSong() const
Definition: SidTuneInfoImpl.h:113
uint_least32_t c64dataLen() const
Definition: SidTuneInfoImpl.h:153
bool isStereo() const
Definition: SidTuneInfoImpl.h:125
int songSpeed() const
Definition: SidTuneInfoImpl.h:129
bool fixLoad() const
Definition: SidTuneInfoImpl.h:159
uint_least32_t dataFileLen() const
Definition: SidTuneInfoImpl.h:151
model_t sidModel1() const
first SID
Definition: SidTuneInfoImpl.h:135
const char * infoString(unsigned int i) const
text info from the format headers etc.
Definition: SidTuneInfoImpl.h:146
model_t sidModel(unsigned int i) const
Definition: SidTuneInfoImpl.h:138
uint_least16_t sidChipBase1() const
0xD400 (normal, 1st SID)
Definition: SidTuneInfoImpl.h:117
const char * formatString() const
Definition: SidTuneInfoImpl.h:157
Definition: SidTuneInfo.h:39
compatibility_t
Definition: SidTuneInfo.h:55
@ COMPATIBILITY_C64
File is C64 compatible.
Definition: SidTuneInfo.h:56
static const int SPEED_VBI
Vertical-Blanking-Interrupt.
Definition: SidTuneInfo.h:64