From: slack Date: Sun, 19 Aug 2007 03:36:13 +0000 (+0000) Subject: Logging de datos de las roms. Cambio gbrom.cc->GBRom.cc X-Git-Tag: v0.1~70 X-Git-Url: http://slack.codemaniacs.com/git/?a=commitdiff_plain;h=0a9c99e38eff77b28ca6ec07269d88f8975395ba;p=wenboi.git Logging de datos de las roms. Cambio gbrom.cc->GBRom.cc git-svn-id: http://slack.codemaniacs.com/wenboi@9 0666ae3d-8926-0410-aeff-ae84559ff337 --- diff --git a/GBRom.cc b/GBRom.cc new file mode 100644 index 0000000..e7c3efd --- /dev/null +++ b/GBRom.cc @@ -0,0 +1,70 @@ +#include "GBRom.h" +#include "Logger.h" +#include +#include +#include +#include +#include + +using std::ifstream; +using std::ios; +using std::cout; +using std::endl; + +void log_rom_header(GBRom *rom, Logger::log_level level) +{ + std::ostringstream out; + + out << std::hex << std::right << std::setfill('0'); + out << "Entrypoint: 0x" << rom->header.entry_point << endl; + out << "New licensee code: 0x" << std::setw(2) << + int(rom->header.new_licensee_code[0]) << std::setw(2) << + int(rom->header.new_licensee_code[1]) << endl; + + out << "SGB flag: " << int(rom->header.sgb_flag) << endl; + out << "Cartridge type: " << int(rom->header.cartridge_type) << endl; + out << std::dec; + out << "ROM size: " << (32 << int(rom->header.rom_size)) << "K" << endl; + out << "RAM size: " << int(rom->header.ram_size) << endl; + out << "Destination code: " << int(rom->header.destination_code) << endl; + out << "Old licensee code: " << int(rom->header.old_licensee_code) << endl; + out << "Mask ROM version number: " << int(rom->header.mask_rom_version_number) << endl; + out << std::hex; + out << "Header checksum: " << std::setw(2) << int(rom->header.header_checksum) << endl; + out << "Global checksum: " << std::setw(2) << + int(rom->header.global_checksum[0]) << std::setw(2) << + int(rom->header.global_checksum[1]) << endl; + + logger.log(level, out.str()); +} + +GBRom *read_gbrom(std::string filename) +{ + ifstream is; + is.open(filename.c_str(), ios::binary); + + is.seekg(0,ios::end); + int length = is.tellg(); + cout << "Loading " << filename << " (length=" << length << ")" << endl; + is.seekg(0,ios::beg); + + void *buffer = ::operator new(length); + is.read((char*)buffer, length); + GBRom *rom = (GBRom*) buffer; + + char buf[17]; + std::memcpy(buf, rom->header.old_title, 16); + buf[16]=0; + + logger.info("Loaded "+std::string(buf)); + log_rom_header(rom, Logger::DEBUG); + + return rom; +} + +#ifdef TEST_GBROM +int main(int argc, char *argv[]) +{ + GBRom *rom=read_gbrom(argv[1]); +} +#endif diff --git a/Makefile b/Makefile index b442874..c6e4bcd 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ CXXFLAGS=-g -Wall -Weffc++ -Wstrict-null-sentinel -Wold-style-cast \ -Woverloaded-virtual -all: gbcore.o MBC.o GBMemory.o Logger.o +all: gbcore.o MBC.o GBMemory.o Logger.o GBRom.o tests: tests/test_gbrom @@ -17,10 +17,10 @@ MBC.o: MBC.cc MBC.h Logger.h gbcore.o: gbcore.cc gbcore.h GBRom.h Logger.h MBC.h GBMemory.h g++ $(CXXFLAGS) -c -o $@ $< -tests/test_gbrom: GBRom.cc GBRom.h - g++ -DTEST_GBROM -o $@ $< +tests/test_gbrom: GBRom.cc GBRom.h Logger.o + g++ -DTEST_GBROM -o $@ GBRom.cc Logger.o clean: - rm -f *.o tests/* + rm -f *.o tests/test_gbrom .PHONY: clean tests all diff --git a/gbrom.cc b/gbrom.cc deleted file mode 100644 index b43b750..0000000 --- a/gbrom.cc +++ /dev/null @@ -1,67 +0,0 @@ -#include "gbrom.h" -#include "logger.h" -#include -#include -#include -#include - -using std::ifstream; -using std::ios; -using std::cout; -using std::endl; - -GBRom *read_gbrom(std::string filename) -{ - ifstream is; - is.open(filename.c_str(), ios::binary); - - is.seekg(0,ios::end); - int length = is.tellg(); - cout << "Loading " << filename << " (length=" << length << ")" << endl; - is.seekg(0,ios::beg); - - void *buffer = ::operator new(length); - is.read((char*)buffer, length); - GBRom *rom = (GBRom*) buffer; - - char buf[17]; - std::memcpy(buf, rom->header.old_title, 16); - buf[16]=0; - - logger.info("Loaded "+std::string(buf)); - log_rom_header(rom, Logger::DEBUG); - - return rom; -} - -void log_rom_header(GBRom *rom, Logger::log_level level) -{ - ostringstream out; - - out.setf(std::ios::hex, std::ios::basefield); - out << "Entrypoint: " << rom->header.entry_point << endl; - out << "New licensee code: " << - rom->neader.new_licensee_code[0] << - rom->neader.new_licensee_code[1] << endl; - - out << "SGB flag: " << rom->header.sgb_flag << endl; - out << "Cartridge type: " << rom->header.cartridge_type << endl; - out << "ROM size: " << (32 << rom->header.rom_size) << "K" << endl; - out << "RAM size: " << rom->header.ram_size << endl; - out << "Destination code: " << rom->header.destination_code << endl; - out << "Old licensee code: " << rom->header.old_licensee_code << endl; - out << "Mask ROM version number: " << rom->header.mask_rom_version_number << endl; - out << "Header checksum: " << rom->header.header_checksum << endl; - out << "Global checksum: " << - rom->header.global_checksum[0] << - rom->header.global_checksum[1] << endl; - - logger.log(out.str(), level); -} - -#ifdef TEST_GBROM -int main(int argc, char *argv[]) -{ - GBRom *rom=read_gbrom(argv[1]); -} -#endif