diff options
| author | Hannes Schulze <haschu0103@outlook.de> | 2025-01-23 19:37:32 +0100 |
|---|---|---|
| committer | Hannes Schulze <haschu0103@outlook.de> | 2025-01-23 19:37:32 +0100 |
| commit | 6512dd599d13035f6a90b2009344e02c488f5aae (patch) | |
| tree | 5d19f043aac57c5cec6edc8221d5ec9057d49ab3 /src/nes/mapper.cc | |
| parent | baa585fd21f631708de215929241d40f66b58498 (diff) | |
initial working version
Diffstat (limited to 'src/nes/mapper.cc')
| -rw-r--r-- | src/nes/mapper.cc | 21 |
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; } |
