libsidplayfp 1.0.3
SidTuneInfo.h
00001 /*
00002  * This file is part of libsidplayfp, a SID player engine.
00003  *
00004  *  Copyright 2011-2012 Leandro Nini
00005  *  Copyright 2007-2010 Antti Lankila
00006  *  Copyright 2000 Simon White
00007  *
00008  *  This program is free software; you can redistribute it and/or modify
00009  *  it under the terms of the GNU General Public License as published by
00010  *  the Free Software Foundation; either version 2 of the License, or
00011  *  (at your option) any later version.
00012  *
00013  *  This program is distributed in the hope that it will be useful,
00014  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00015  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00016  *  GNU General Public License for more details.
00017  *
00018  *  You should have received a copy of the GNU General Public License
00019  *  along with this program; if not, write to the Free Software
00020  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
00021  */
00022 
00023 #ifndef SIDTUNEINFO_H
00024 #define SIDTUNEINFO_H
00025 
00026 #include <stdint.h>
00027 
00036 class SidTuneInfo
00037 {
00038 public:
00039     typedef enum {
00040         CLOCK_UNKNOWN,
00041         CLOCK_PAL,
00042         CLOCK_NTSC,
00043         CLOCK_ANY
00044     } clock_t;
00045 
00046     typedef enum {
00047         SIDMODEL_UNKNOWN,
00048         SIDMODEL_6581,
00049         SIDMODEL_8580,
00050         SIDMODEL_ANY
00051     } model_t;
00052 
00053     typedef enum {
00054         COMPATIBILITY_C64,   
00055         COMPATIBILITY_PSID,  
00056         COMPATIBILITY_R64,   
00057         COMPATIBILITY_BASIC  
00058     } compatibility_t;
00059 
00060 public:
00062     static const int SPEED_VBI = 0;
00063 
00065     static const int SPEED_CIA_1A = 60;
00066 
00067 public:
00069     virtual uint_least16_t loadAddr() const =0;
00070 
00072     virtual uint_least16_t initAddr() const =0;
00073 
00075     virtual uint_least16_t playAddr() const =0;
00076 
00080     virtual unsigned int songs() const =0;
00081 
00085     virtual unsigned int startSong() const =0;
00086 
00090     virtual unsigned int currentSong() const =0;
00091 
00097     virtual uint_least16_t sidChipBase1() const =0;    
00098     virtual uint_least16_t sidChipBase2() const =0;    
00099 
00100 
00104     virtual bool isStereo() const=0;
00105 
00109     virtual int songSpeed() const =0;
00110 
00114     virtual uint_least8_t relocStartPage() const =0;
00115 
00119     virtual uint_least8_t relocPages() const =0;
00120 
00126     virtual model_t sidModel1() const =0;    
00127     virtual model_t sidModel2() const =0;    
00128 
00129 
00133     virtual compatibility_t compatibility() const =0;
00134 
00143     virtual unsigned int numberOfInfoStrings() const =0;     
00144     virtual const char* infoString(unsigned int i) const =0; 
00145 
00146 
00152     virtual unsigned int numberOfCommentStrings() const =0;     
00153     virtual const char* commentString(unsigned int i) const =0; 
00154 
00155 
00159     virtual uint_least32_t dataFileLen() const =0;
00160 
00164     virtual uint_least32_t c64dataLen() const =0;
00165 
00169     virtual clock_t clockSpeed() const =0;
00170 
00174     virtual const char* formatString() const =0;
00175 
00179     virtual bool fixLoad() const =0;
00180 
00184     virtual const char* path() const =0;
00185 
00189     virtual const char* dataFileName() const =0;
00190 
00195     virtual const char* infoFileName() const =0;
00196 
00197 protected:
00198     ~SidTuneInfo() {}
00199 };
00200 
00201 #endif  /* SIDTUNEINFO_H */