#include "GBMemory.h"
#include "MBC.h"
#include "gbcore.h"
+#include "Logger.h"
u8& GBMemory::operator[](unsigned int addr)
{
--- /dev/null
+#include "Logger.h"
+#include <iostream>
+
+Logger Logger::instance(std::cerr);
#include "MBC.h"
-#include "logger.h"
+#include "Logger.h"
+#include <cstring>
using namespace cartridge_types;
return 0;
}
}
+
+u8 NoMBC::operator[](unsigned int addr) const
+{
+ if (addr <= 0x7FFF)
+ return ROM[addr];
+ else if ((addr&0xE000) == 0xA000) //(addr >= 0xA000 && addr <= 0xBFFF)
+ return RAM[addr-0xA000];
+ else
+ logger.error("NoMBC: Incorrect read");
+ return 0;
+}
+
+u8& NoMBC::operator[](unsigned int addr)
+{
+ if ((addr&0xE000) == 0xA000) //(addr >= 0xA000 && addr <= 0xBFFF)
+ return RAM[addr-0xA000];
+ else
+ logger.error("NoMBC: trying to write in ROM");
+ return *(static_cast<u8*>(0)); // Shouldn't happen
+}
+
#include "sized_types.h"
#include "GBRom.h"
-#include "logger.h"
-#include <cstring>
class MBC
{
public:
NoMBC(GBRom *rom) { memcpy(ROM, rom->data, 32768); }
+ u8 operator[](unsigned int addr) const;
+ u8& operator[](unsigned int addr);
- u8 operator[](unsigned int addr) const
- {
- if (addr <= 0x7FFF)
- return ROM[addr];
- else if ((addr&0xE000) == 0xA000) //(addr >= 0xA000 && addr <= 0xBFFF)
- return RAM[addr-0xA000];
- else
- logger.error("NoMBC: Incorrect read");
- return 0;
- }
-
- u8& operator[](unsigned int addr)
- {
- if ((addr&0xE000) == 0xA000) //(addr >= 0xA000 && addr <= 0xBFFF)
- return RAM[addr-0xA000];
- else
- logger.error("NoMBC: trying to write in ROM");
- return *(static_cast<u8*>(0)); // Shouldn't happen
- }
};
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
tests: tests/test_gbrom
-logger.o: logger.cc logger.h
+Logger.o: Logger.cc Logger.h
g++ $(CXXFLAGS) -c -o $@ $<
-GBMemory.o: GBMemory.cc GBMemory.h
+GBMemory.o: GBMemory.cc GBMemory.h Logger.h
g++ $(CXXFLAGS) -c -o $@ $<
-MBC.o: MBC.cc MBC.h
+MBC.o: MBC.cc MBC.h Logger.h
g++ $(CXXFLAGS) -c -o $@ $<
-gbcore.o: gbcore.cc gbcore.h GBRom.h logger.h MBC.h GBMemory.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
#include "GBRom.h"
#include "MBC.h"
-#include "logger.h"
+#include "Logger.h"
#include <string>
#include <cstring>