31 #include "sidplayfp/SidTuneInfo.h"
32 #include "sidplayfp/siddefs.h"
35 #include "SidTuneInfoImpl.h"
39 namespace libsidplayfp
43 template <
class T>
class SmartPtr_sidtt;
53 loadError(
const char* msg) : m_msg(msg) {}
54 const char* message()
const {
return m_msg; }
63 using buffer_t = std::vector<uint8_t>;
70 static const char ERR_TRUNCATED[];
71 static const char ERR_INVALID[];
76 using LoaderFunc = void (*)(
const char* fileName, buffer_t& bufferRef);
94 static SidTuneBase*
load(
const char* fileName,
const char **fileNameExt,
bool separatorIsSlash)
96 return load(
nullptr, fileName, fileNameExt, separatorIsSlash);
113 static SidTuneBase*
load(LoaderFunc loader,
const char* fileName,
const char **fileNameExt,
bool separatorIsSlash);
126 return getFromBuffer(sourceBuffer, bufferLen);
136 unsigned int selectSong(
unsigned int songNum);
169 virtual const char *
createMD5(
char *) {
return nullptr; }
187 std::unique_ptr<SidTuneInfoImpl> info;
190 SidTuneInfo::clock_t clockSpeed[
MAX_SONGS];
208 static void loadFile(
const char* fileName, buffer_t& bufferRef);
217 SidTuneInfo::clock_t clock = SidTuneInfo::CLOCK_PAL);
253 virtual void acceptSidTune(
const char* dataFileName,
const char* infoFileName,
254 buffer_t& buf,
bool isSlashedFileName);
263 #if !defined(SIDTUNE_NO_STDIN_LOADER)
266 static SidTuneBase* getFromFiles(
const char* fileName,
const char **fileNameExtensions,
bool separatorIsSlash)
268 return getFromFiles(
nullptr, fileName, fileNameExtensions, separatorIsSlash);
271 static SidTuneBase* getFromFiles(LoaderFunc loader,
const char* fileName,
const char **fileNameExtensions,
bool separatorIsSlash);
276 static SidTuneBase* getFromBuffer(
const uint_least8_t*
const buffer, uint_least32_t bufferLen);
285 static void createNewFileName(std::string& destString,
286 const char* sourceName,
const char* sourceExt);
Definition: SidTuneInfo.h:39
Definition: SidTuneBase.h:61
virtual const char * createMD5(char *)
Definition: SidTuneBase.h:169
bool checkCompatibility()
Definition: SidTuneBase.cpp:515
virtual void acceptSidTune(const char *dataFileName, const char *infoFileName, buffer_t &buf, bool isSlashedFileName)
Definition: SidTuneBase.cpp:257
void resolveAddrs(const uint_least8_t *c64data)
Definition: SidTuneBase.cpp:480
static SidTuneBase * load(const char *fileName, const char **fileNameExt, bool separatorIsSlash)
Definition: SidTuneBase.h:94
std::string petsciiToAscii(SmartPtr_sidtt< const uint8_t > &spPet)
Definition: SidTuneBase.cpp:546
const SidTuneInfo * getInfo() const
Definition: SidTuneBase.h:141
static constexpr unsigned int MAX_SONGS
Also PSID file format limit.
Definition: SidTuneBase.h:67
void convertOldStyleSpeedToTables(uint_least32_t speed, SidTuneInfo::clock_t clock=SidTuneInfo::CLOCK_PAL)
Definition: SidTuneBase.cpp:412
const uint_least8_t * c64Data() const
Definition: SidTuneBase.h:183
virtual const char * createMD5New(char *)
Definition: SidTuneBase.h:178
virtual void placeSidTuneInC64mem(sidmemory &mem)
Definition: SidTuneBase.cpp:146
static SidTuneBase * read(const uint_least8_t *sourceBuffer, uint_least32_t bufferLen)
Definition: SidTuneBase.h:124
bool checkRelocInfo()
Definition: SidTuneBase.cpp:433
unsigned int selectSong(unsigned int songNum)
Definition: SidTuneBase.cpp:111
uint_least32_t fileOffset
For files with header: offset to real data.
Definition: SidTuneBase.h:193
static void loadFile(const char *fileName, buffer_t &bufferRef)
Definition: SidTuneBase.cpp:162
const SidTuneInfo * getInfo(unsigned int songNum)
Definition: SidTuneBase.h:149
Definition: SmartPtr.h:193
Definition: SidTuneBase.h:49
Definition: sidmemory.h:34