o add my bsnes branch
This commit is contained in:
50
tools/bsnes/reader/filereader.cpp
Executable file
50
tools/bsnes/reader/filereader.cpp
Executable file
@@ -0,0 +1,50 @@
|
||||
#ifdef READER_CPP
|
||||
|
||||
#include "filereader.hpp"
|
||||
|
||||
unsigned FileReader::size() {
|
||||
return fp.size();
|
||||
}
|
||||
|
||||
//This function will allocate memory even if open() fails.
|
||||
//This is needed so that when SRAM files do not exist, the
|
||||
//memory for the SRAM data will be allocated still.
|
||||
//The memory is flushed to 0x00 when no file is opened.
|
||||
uint8_t* FileReader::read(unsigned length) {
|
||||
uint8_t *data = 0;
|
||||
|
||||
if(length == 0) {
|
||||
//read the entire file into RAM
|
||||
data = new(zeromemory) uint8_t[fp.size()];
|
||||
if(fp.open()) fp.read(data, fp.size());
|
||||
} else if(length > fp.size()) {
|
||||
//read the entire file into RAM, pad the rest with 0x00s
|
||||
data = new(zeromemory) uint8_t[length];
|
||||
if(fp.open()) fp.read(data, fp.size());
|
||||
} else { //filesize >= length
|
||||
//read only what was requested
|
||||
data = new(zeromemory) uint8_t[length];
|
||||
if(fp.open()) fp.read(data, length);
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
bool FileReader::ready() {
|
||||
return fp.open();
|
||||
}
|
||||
|
||||
FileReader::FileReader(const char *fn) {
|
||||
if(!fp.open(fn, file::mode_read)) return;
|
||||
|
||||
if(fp.size() == 0) {
|
||||
//empty file
|
||||
fp.close();
|
||||
}
|
||||
}
|
||||
|
||||
FileReader::~FileReader() {
|
||||
if(fp.open()) fp.close();
|
||||
}
|
||||
|
||||
#endif //ifdef READER_CPP
|
||||
Reference in New Issue
Block a user