mirror of
https://github.com/mkwong98/HDNes.git
synced 2024-06-01 19:08:05 -04:00
115 lines
2.6 KiB
C++
115 lines
2.6 KiB
C++
#include "tileReference.h"
|
|
#include "coreData.h"
|
|
#include "main.h"
|
|
|
|
tileReference::tileReference()
|
|
{
|
|
//ctor
|
|
}
|
|
|
|
tileReference::~tileReference()
|
|
{
|
|
//dtor
|
|
}
|
|
|
|
bool tileReference::compareEqual(tileReference& t){
|
|
for(int i = 0; i < 4; ++i){
|
|
if(palette[i] != t.palette[i]) return false;
|
|
}
|
|
if(coreData::cData->isCHRROM){
|
|
if(id != t.id) return false;
|
|
}
|
|
else{
|
|
for(int i = 0; i < 16; ++i){
|
|
if(rawData[i] != t.rawData[i]) return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
void tileReference::readID(string s, bool useHex){
|
|
if(coreData::cData->isCHRROM){
|
|
if(useHex){
|
|
id = strtol(s.c_str(), NULL, 16);
|
|
}
|
|
else{
|
|
id = atoi(s.c_str());
|
|
}
|
|
}
|
|
else{
|
|
main::hexToByteArray(s, (Uint8*)(rawData));
|
|
}
|
|
}
|
|
|
|
string tileReference::writeID(bool useHex){
|
|
if(coreData::cData->isCHRROM){
|
|
if(useHex){
|
|
return main::intToHex(id);
|
|
}
|
|
else{
|
|
return main::intToStr(id);
|
|
}
|
|
}
|
|
else{
|
|
stringstream stream;
|
|
for(int i = 0; i < 16; ++i){
|
|
stream << main::intToHex(rawData[i]);
|
|
}
|
|
return stream.str();
|
|
}
|
|
}
|
|
|
|
void tileReference::readPalette(string s){
|
|
main::hexToByteArray(s, (Uint8*)(palette));
|
|
}
|
|
|
|
string tileReference::writePalette(){
|
|
stringstream stream;
|
|
for(int i = 0; i < 4; ++i){
|
|
stream << main::intToHex(palette[i]);
|
|
}
|
|
return stream.str();
|
|
}
|
|
|
|
void tileReference::load(fstream& file){
|
|
string line;
|
|
string lineHdr;
|
|
string lineTail;
|
|
|
|
getline(file, line);
|
|
while(line != "<endTileReference>"){
|
|
size_t found = line.find_first_of(">");
|
|
if(found!=string::npos){
|
|
lineHdr = line.substr(0, found + 1);
|
|
lineTail = line.substr(found + 1);
|
|
|
|
if(lineHdr == "<id>"){
|
|
readID(lineTail, false);
|
|
}
|
|
else if(lineHdr == "<palette>"){
|
|
readPalette(lineTail);
|
|
}
|
|
}
|
|
getline(file, line);
|
|
}
|
|
}
|
|
|
|
void tileReference::save(fstream& file){
|
|
file << "<tileReference>\n";
|
|
file << "<id>" << writeID(false) << "\n";
|
|
file << "<palette>" << writePalette() << "\n";
|
|
file << "<endTileReference>\n";
|
|
}
|
|
|
|
tileReference tileReference::clone(){
|
|
tileReference t;
|
|
t.id = id;
|
|
for(int i = 0; i < 4; i++){
|
|
t.palette[i] = palette[i];
|
|
}
|
|
for(int i = 0; i < 16; i++){
|
|
t.rawData[i] = rawData[i];
|
|
}
|
|
return t;
|
|
}
|