summaryrefslogtreecommitdiff
path: root/lib/nes/ppu.cc
diff options
context:
space:
mode:
authorHannes Schulze <haschu0103@outlook.de>2025-01-26 23:19:56 +0100
committerHannes Schulze <haschu0103@outlook.de>2025-01-26 23:19:56 +0100
commit430a246fe81d7eab6823bf6ca4562fd1e99f2a5d (patch)
tree75c5f4e8eeeb1e5f25c866e828440e5c493bed8b /lib/nes/ppu.cc
parentd1f4b65eafe9c41ecca7bbe8026ec0a693c1ecda (diff)
refactor mappers
Diffstat (limited to 'lib/nes/ppu.cc')
-rw-r--r--lib/nes/ppu.cc15
1 files changed, 8 insertions, 7 deletions
diff --git a/lib/nes/ppu.cc b/lib/nes/ppu.cc
index 0772d80..0f2e0d6 100644
--- a/lib/nes/ppu.cc
+++ b/lib/nes/ppu.cc
@@ -1,6 +1,6 @@
#include "nes/ppu.hh"
#include "nes/cpu.hh"
-#include "nes/mapper.hh"
+#include "nes/cartridge.hh"
#include "nes/util/address.hh"
#include "nes/util/display.hh"
#include "nes/util/rgb.hh"
@@ -9,9 +9,9 @@
namespace nes
{
- ppu::ppu(cpu& cpu, mapper& mapper, display& display)
+ ppu::ppu(cpu& cpu, cartridge& cartridge, display& display)
: cpu_{ cpu }
- , mapper_{ mapper }
+ , cartridge_{ cartridge }
, display_{ display }
{
}
@@ -110,7 +110,8 @@ namespace nes
fetch_cycle_.palette, fetch_cycle_.bitplane_0, fetch_cycle_.bitplane_1);
break;
}
- default: break;
+ default:
+ break;
}
}
@@ -230,7 +231,7 @@ namespace nes
{
auto const height = get_sprite_height();
sprite_count_ = 0;
- for (auto i = unsigned{ 0 }; i < 64; ++i)
+ for (auto i = unsigned{ 0 }; i < sprite_max_count; ++i)
{
auto const s = get_sprite(i);
auto const row = static_cast<int>(scanline_) - static_cast<int>(s.y);
@@ -298,7 +299,7 @@ namespace nes
auto ppu::read8(address addr) -> std::uint8_t
{
addr = addr % 0x4000; // PPU only has 16 KiB addresses.
- if (addr <= address{ 0x3EFF }) { return mapper_.read_ppu(addr, vram_); }
+ if (addr <= address{ 0x3EFF }) { return cartridge_.get_mapper().read_ppu(addr, cartridge_, vram_); }
if (addr <= address{ 0x3FFF })
{
auto const index = color_index{ static_cast<std::uint8_t>(addr.get_absolute() % 0x20) };
@@ -314,7 +315,7 @@ namespace nes
addr = addr % 0x4000; // PPU only has 16 KiB addresses.
if (addr <= address{ 0x3EFF })
{
- mapper_.write_ppu(addr, vram_, value);
+ cartridge_.get_mapper().write_ppu(addr, value, cartridge_, vram_);
return;
}
if (addr <= address{ 0x3FFF })