summaryrefslogtreecommitdiff
path: root/src/nes/mapper.cc
diff options
context:
space:
mode:
authorHannes Schulze <haschu0103@outlook.de>2025-01-23 19:37:32 +0100
committerHannes Schulze <haschu0103@outlook.de>2025-01-23 19:37:32 +0100
commit6512dd599d13035f6a90b2009344e02c488f5aae (patch)
tree5d19f043aac57c5cec6edc8221d5ec9057d49ab3 /src/nes/mapper.cc
parentbaa585fd21f631708de215929241d40f66b58498 (diff)
initial working version
Diffstat (limited to 'src/nes/mapper.cc')
-rw-r--r--src/nes/mapper.cc21
1 files changed, 13 insertions, 8 deletions
diff --git a/src/nes/mapper.cc b/src/nes/mapper.cc
index aa9618e..5392d87 100644
--- a/src/nes/mapper.cc
+++ b/src/nes/mapper.cc
@@ -16,6 +16,11 @@ namespace nes
{
}
+ auto mapper::snapshot(test::status& snapshot) const -> void
+ {
+ snapshot.chrrom = std::vector(cartridge_.get_chr_rom(), cartridge_.get_chr_rom() + cartridge_.get_chr_rom_length());
+ }
+
auto mapper::select(cartridge& cartridge) -> mapper
{
switch (cartridge.get_mapper_number())
@@ -115,17 +120,17 @@ namespace nes
{
case name_table_arrangement::horizontal:
// $2000 = $2400, $2800 = $2c00
- if (rel <= 0x23FF) { return 0x000 + (rel % 0x400); }
- if (rel <= 0x27FF) { return 0x000 + (rel % 0x400); }
- if (rel <= 0x2BFF) { return 0x400 + (rel % 0x400); }
- if (rel <= 0x2FFF) { return 0x400 + (rel % 0x400); }
+ if (rel <= 0x3FF) { return 0x000 + (rel % 0x400); }
+ if (rel <= 0x7FF) { return 0x000 + (rel % 0x400); }
+ if (rel <= 0xBFF) { return 0x400 + (rel % 0x400); }
+ if (rel <= 0xFFF) { return 0x400 + (rel % 0x400); }
break;
case name_table_arrangement::vertical:
// $2000 = $2800, $2400 = $2c00
- if (rel <= 0x23FF) { return 0x000 + (rel % 0x400); }
- if (rel <= 0x27FF) { return 0x400 + (rel % 0x400); }
- if (rel <= 0x2BFF) { return 0x000 + (rel % 0x400); }
- if (rel <= 0x2FFF) { return 0x400 + (rel % 0x400); }
+ if (rel <= 0x3FF) { return 0x000 + (rel % 0x400); }
+ if (rel <= 0x7FF) { return 0x400 + (rel % 0x400); }
+ if (rel <= 0xBFF) { return 0x000 + (rel % 0x400); }
+ if (rel <= 0xFFF) { return 0x400 + (rel % 0x400); }
break;
}