Mercurial > audlegacy
comparison Plugins/Input/console/Spc_Emu.cpp @ 479:0b9507985f0d trunk
[svn] Use the VFS subsystem and delete the unused demo source.
| author | chainsaw |
|---|---|
| date | Sat, 21 Jan 2006 06:32:50 -0800 |
| parents | 8fc500c08b61 |
| children | 7c5e886205ef |
comparison
equal
deleted
inserted
replaced
| 478:5064517c685c | 479:0b9507985f0d |
|---|---|
| 16 more details. You should have received a copy of the GNU Lesser General | 16 more details. You should have received a copy of the GNU Lesser General |
| 17 Public License along with this module; if not, write to the Free Software | 17 Public License along with this module; if not, write to the Free Software |
| 18 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ | 18 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ |
| 19 | 19 |
| 20 #include BLARGG_SOURCE_BEGIN | 20 #include BLARGG_SOURCE_BEGIN |
| 21 | |
| 22 #ifndef RAISE_ERROR | |
| 23 #define RAISE_ERROR( str ) return str | |
| 24 #endif | |
| 25 | |
| 26 typedef Spc_Reader::error_t error_t; | |
| 27 | 21 |
| 28 Spc_Emu::Spc_Emu() | 22 Spc_Emu::Spc_Emu() |
| 29 { | 23 { |
| 30 resample_ratio = 1.0; | 24 resample_ratio = 1.0; |
| 31 use_resampler = false; | 25 use_resampler = false; |
| 123 | 117 |
| 124 Spc_Reader::~Spc_Reader() { | 118 Spc_Reader::~Spc_Reader() { |
| 125 close(); | 119 close(); |
| 126 } | 120 } |
| 127 | 121 |
| 128 error_t Spc_Reader::open( const char* path ) | 122 blargg_err_t Spc_Reader::read_head(Spc_Emu::header_t *header) { |
| 129 { | 123 vfs_fread(&header->tag, 1,35,file); |
| 130 file = fopen( path, "rb" ); | 124 vfs_fread(&header->format, 1, 1,file); |
| 131 if ( !file ) | 125 vfs_fread(&header->version, 1, 1,file); |
| 132 RAISE_ERROR( "Couldn't open file" ); | 126 vfs_fread(&header->pc, 1, 2,file); |
| 133 return NULL; | 127 vfs_fread(&header->a, 1, 1,file); |
| 128 vfs_fread(&header->x, 1, 1,file); | |
| 129 vfs_fread(&header->y, 1, 1,file); | |
| 130 vfs_fread(&header->psw, 1, 1,file); | |
| 131 vfs_fread(&header->sp, 1, 1,file); | |
| 132 vfs_fread(&header->unused, 1, 2,file); | |
| 133 vfs_fread(&header->song, 1,32,file); | |
| 134 vfs_fread(&header->game, 1,32,file); | |
| 135 vfs_fread(&header->dumper, 1,16,file); | |
| 136 vfs_fread(&header->comment, 1,32,file); | |
| 137 vfs_fread(&header->date, 1,11,file); | |
| 138 vfs_fread(&header->len_secs,1, 3,file); | |
| 139 vfs_fread(&header->fade_msec,1,5,file); | |
| 140 vfs_fread(&header->author, 1,32,file); | |
| 141 vfs_fread(&header->mute_mask,1,1,file); | |
| 142 vfs_fread(&header->emulator,1, 1,file); | |
| 143 vfs_fread(&header->unused2, 1,45,file); | |
| 134 } | 144 } |
| 135 | |
| 136 blargg_err_t Spc_Reader::read_head(Spc_Emu::header_t *header) { | |
| 137 fread(&header->tag, 1,35,file); | |
| 138 fread(&header->format, 1, 1,file); | |
| 139 fread(&header->version, 1, 1,file); | |
| 140 fread(&header->pc, 1, 2,file); | |
| 141 fread(&header->a, 1, 1,file); | |
| 142 fread(&header->x, 1, 1,file); | |
| 143 fread(&header->y, 1, 1,file); | |
| 144 fread(&header->psw, 1, 1,file); | |
| 145 fread(&header->sp, 1, 1,file); | |
| 146 fread(&header->unused, 1, 2,file); | |
| 147 fread(&header->song, 1,32,file); | |
| 148 fread(&header->game, 1,32,file); | |
| 149 fread(&header->dumper, 1,16,file); | |
| 150 fread(&header->comment, 1,32,file); | |
| 151 fread(&header->date, 1,11,file); | |
| 152 fread(&header->len_secs,1, 3,file); | |
| 153 fread(&header->fade_msec,1,5,file); | |
| 154 fread(&header->author, 1,32,file); | |
| 155 fread(&header->mute_mask,1,1,file); | |
| 156 fread(&header->emulator,1, 1,file); | |
| 157 fread(&header->unused2, 1,45,file); | |
| 158 } | |
| 159 | |
| 160 long Spc_Reader::size() const | |
| 161 { | |
| 162 long pos = tell(); | |
| 163 fseek( file, 0, SEEK_END ); | |
| 164 long result = tell(); | |
| 165 fseek( file, pos, SEEK_SET ); | |
| 166 return result; | |
| 167 } | |
| 168 | |
| 169 long Spc_Reader::read_avail( void* p, long s ) { | |
| 170 return fread( p, 1, s, file ); | |
| 171 } | |
| 172 | |
| 173 long Spc_Reader::tell() const { | |
| 174 return ftell( file ); | |
| 175 } | |
| 176 | |
| 177 error_t Spc_Reader::seek( long n ) | |
| 178 { | |
| 179 if ( fseek( file, n, SEEK_SET ) != 0 ) | |
| 180 RAISE_ERROR( "Error seeking in file" ); | |
| 181 return NULL; | |
| 182 } | |
| 183 | |
| 184 void Spc_Reader::close() | |
| 185 { | |
| 186 if ( file ) { | |
| 187 fclose( file ); | |
| 188 file = NULL; | |
| 189 } | |
| 190 } |
