31#include "sidplayfp/SidTuneInfo.h"
32#include "sidplayfp/siddefs.h"
35#include "SidTuneInfoImpl.h"
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[];
74 virtual ~SidTuneBase() =
default;
76 using LoaderFunc = void (*)(
const char* fileName, buffer_t& bufferRef);
94 static SidTuneBase*
load(
const char* fileName,
const char **fileNameExt,
bool separatorIsSlash);
110 static SidTuneBase*
load(LoaderFunc loader,
const char* fileName,
const char **fileNameExt,
bool separatorIsSlash);
121 static SidTuneBase*
read(
const uint_least8_t* sourceBuffer, uint_least32_t bufferLen);
130 unsigned int selectSong(
unsigned int songNum);
159 virtual const char *
createMD5(
char *) {
return nullptr; }
177 std::unique_ptr<SidTuneInfoImpl> info;
180 SidTuneInfo::clock_t clockSpeed[
MAX_SONGS];
198 static void loadFile(
const char* fileName, buffer_t& bufferRef);
207 SidTuneInfo::clock_t clock = SidTuneInfo::CLOCK_PAL);
243 virtual void acceptSidTune(
const char* dataFileName,
const char* infoFileName,
244 buffer_t& buf,
bool isSlashedFileName);
253#if !defined(SIDTUNE_NO_STDIN_LOADER)
254 static SidTuneBase* getFromStdIn();
256 static SidTuneBase* getFromFiles(
const char* name,
const char **fileNameExtensions,
bool separatorIsSlash);
257 static SidTuneBase* getFromFiles(LoaderFunc loader,
const char* name,
const char **fileNameExtensions,
bool separatorIsSlash);
262 static SidTuneBase* getFromBuffer(
const uint_least8_t*
const buffer, uint_least32_t bufferLen);
271 static void createNewFileName(std::string& destString,
272 const char* sourceName,
const char* sourceExt);
276 SidTuneBase(
const SidTuneBase&) =
delete;
277 SidTuneBase& operator=(SidTuneBase&) =
delete;
Definition SidTuneInfo.h:39
bool checkCompatibility()
Definition SidTuneBase.cpp:542
static SidTuneBase * read(const uint_least8_t *sourceBuffer, uint_least32_t bufferLen)
Definition SidTuneBase.cpp:117
virtual void acceptSidTune(const char *dataFileName, const char *infoFileName, buffer_t &buf, bool isSlashedFileName)
Definition SidTuneBase.cpp:279
const SidTuneInfo * getInfo() const
Definition SidTuneBase.cpp:122
void resolveAddrs(const uint_least8_t *c64data)
Definition SidTuneBase.cpp:507
virtual const char * createMD5New(char *)
Definition SidTuneBase.h:168
std::string petsciiToAscii(SmartPtr_sidtt< const uint8_t > &spPet)
Definition SidTuneBase.cpp:573
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:439
virtual void placeSidTuneInC64mem(sidmemory &mem)
Definition SidTuneBase.cpp:168
virtual const char * createMD5(char *)
Definition SidTuneBase.h:159
const uint_least8_t * c64Data() const
Definition SidTuneBase.h:173
bool checkRelocInfo()
Definition SidTuneBase.cpp:460
unsigned int selectSong(unsigned int songNum)
Definition SidTuneBase.cpp:133
uint_least32_t fileOffset
For files with header: offset to real data.
Definition SidTuneBase.h:183
static void loadFile(const char *fileName, buffer_t &bufferRef)
Definition SidTuneBase.cpp:184
static SidTuneBase * load(const char *fileName, const char **fileNameExt, bool separatorIsSlash)
Definition SidTuneBase.cpp:97
Definition SmartPtr.h:193
Definition sidmemory.h:34