31#include "sidplayfp/SidTuneInfo.h"
32#include "sidplayfp/siddefs.h"
35#include "SidTuneInfoImpl.h"
43template <
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
bool checkCompatibility()
Definition SidTuneBase.cpp:515
virtual void acceptSidTune(const char *dataFileName, const char *infoFileName, buffer_t &buf, bool isSlashedFileName)
Definition SidTuneBase.cpp:257
const SidTuneInfo * getInfo() const
Definition SidTuneBase.h:141
void resolveAddrs(const uint_least8_t *c64data)
Definition SidTuneBase.cpp:480
virtual const char * createMD5New(char *)
Definition SidTuneBase.h:178
std::string petsciiToAscii(SmartPtr_sidtt< const uint8_t > &spPet)
Definition SidTuneBase.cpp:546
const SidTuneInfo * getInfo(unsigned int songNum)
Definition SidTuneBase.h:149
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
static SidTuneBase * read(const uint_least8_t *sourceBuffer, uint_least32_t bufferLen)
Definition SidTuneBase.h:124
virtual void placeSidTuneInC64mem(sidmemory &mem)
Definition SidTuneBase.cpp:146
virtual const char * createMD5(char *)
Definition SidTuneBase.h:169
static SidTuneBase * load(const char *fileName, const char **fileNameExt, bool separatorIsSlash)
Definition SidTuneBase.h:94
const uint_least8_t * c64Data() const
Definition SidTuneBase.h:183
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
Definition SmartPtr.h:193
Definition SidTuneBase.h:49
Definition sidmemory.h:34