From a0651990983ba675a21f410bfa8efdfffebe5ea5 Mon Sep 17 00:00:00 2001 From: Adrian Conlon Date: Sun, 22 Oct 2017 21:25:06 +0100 Subject: [PATCH] Tidy up some leftover work from the scanline rendering update. Signed-off-by: Adrian Conlon --- LR35902/inc/CharacterDefinition.h | 3 +-- LR35902/inc/Display.h | 1 - LR35902/inc/ObjectAttribute.h | 2 +- LR35902/src/CharacterDefinition.cpp | 8 +++----- LR35902/src/Display.cpp | 24 +++++++++--------------- LR35902/src/ObjectAttribute.cpp | 10 ++++------ 6 files changed, 18 insertions(+), 30 deletions(-) diff --git a/LR35902/inc/CharacterDefinition.h b/LR35902/inc/CharacterDefinition.h index 497e4ec..8448771 100644 --- a/LR35902/inc/CharacterDefinition.h +++ b/LR35902/inc/CharacterDefinition.h @@ -11,14 +11,13 @@ namespace EightBit { class CharacterDefinition { public: CharacterDefinition(); - CharacterDefinition(Ram* ram, uint16_t address, int height); + CharacterDefinition(Ram* ram, uint16_t address); std::array get(int row) const; private: Ram* m_ram; uint16_t m_address; - int m_height; }; } } \ No newline at end of file diff --git a/LR35902/inc/Display.h b/LR35902/inc/Display.h index 2486280..b6565e8 100644 --- a/LR35902/inc/Display.h +++ b/LR35902/inc/Display.h @@ -54,7 +54,6 @@ namespace EightBit { const std::array& palette); void renderObjects(); - void renderObjects(int objBlockHeight); void renderTile( int height, diff --git a/LR35902/inc/ObjectAttribute.h b/LR35902/inc/ObjectAttribute.h index 5ee2e49..99da0f9 100644 --- a/LR35902/inc/ObjectAttribute.h +++ b/LR35902/inc/ObjectAttribute.h @@ -12,7 +12,7 @@ namespace EightBit { class ObjectAttribute { public: ObjectAttribute(); - ObjectAttribute(Ram& ram, uint16_t address, int height); + ObjectAttribute(Ram& ram, uint16_t address); uint8_t positionY() const { return m_positionY; } uint8_t positionX() const { return m_positionX; } diff --git a/LR35902/src/CharacterDefinition.cpp b/LR35902/src/CharacterDefinition.cpp index 5f73d52..2d35ec6 100644 --- a/LR35902/src/CharacterDefinition.cpp +++ b/LR35902/src/CharacterDefinition.cpp @@ -5,14 +5,12 @@ EightBit::GameBoy::CharacterDefinition::CharacterDefinition() : m_ram(nullptr), - m_address(~0), - m_height(0) { + m_address(~0) { } -EightBit::GameBoy::CharacterDefinition::CharacterDefinition(Ram* ram, uint16_t address, int height) +EightBit::GameBoy::CharacterDefinition::CharacterDefinition(Ram* ram, uint16_t address) : m_ram(ram), - m_address(address), - m_height(height) { + m_address(address) { } std::array EightBit::GameBoy::CharacterDefinition::get(int row) const { diff --git a/LR35902/src/Display.cpp b/LR35902/src/Display.cpp index b071be4..3c83b1d 100644 --- a/LR35902/src/Display.cpp +++ b/LR35902/src/Display.cpp @@ -48,20 +48,15 @@ std::array EightBit::GameBoy::Display::createPalette(const int address) return palette; } -void EightBit::GameBoy::Display::renderObjects() { - const auto objBlockHeight = (m_control & IoRegisters::ObjectBlockCompositionSelection) ? 16 : 8; - renderObjects(objBlockHeight); -} - void EightBit::GameBoy::Display::loadObjectAttributes() { - const auto objBlockHeight = (m_control & IoRegisters::ObjectBlockCompositionSelection) ? 16 : 8; - for (int i = 0; i < 40; ++i) { - m_objectAttributes[i] = ObjectAttribute(m_oam, 4 * i, objBlockHeight); - } + for (int i = 0; i < 40; ++i) + m_objectAttributes[i] = ObjectAttribute(m_oam, 4 * i); } -void EightBit::GameBoy::Display::renderObjects(int objBlockHeight) { +void EightBit::GameBoy::Display::renderObjects() { + const auto objBlockHeight = (m_control & IoRegisters::ObjectBlockCompositionSelection) ? 16 : 8; + std::vector> palettes(2); palettes[0] = createPalette(IoRegisters::OBP0); palettes[1] = createPalette(IoRegisters::OBP1); @@ -79,7 +74,7 @@ void EightBit::GameBoy::Display::renderObjects(int objBlockHeight) { const auto drawX = spriteX - 8; const auto sprite = current.pattern(); - const auto definition = CharacterDefinition(&m_vram, 16 * sprite, objBlockHeight); + const auto definition = CharacterDefinition(&m_vram, (objBlockHeight == 8 ? 16 : 8) * sprite); const auto& palette = palettes[current.palette()]; const auto flipX = current.flipX(); const auto flipY = current.flipY(); @@ -120,14 +115,13 @@ void EightBit::GameBoy::Display::renderBackground( const std::array& palette) { const int row = (m_scanLine - offsetY) / 8; - const auto baseAddress = bgArea + row * BufferCharacterWidth; + auto address = bgArea + row * BufferCharacterWidth; for (int column = 0; column < BufferCharacterWidth; ++column) { - const auto address = baseAddress + column; - const auto character = m_vram.peek(address); + const auto character = m_vram.peek(address++); - const auto definition = CharacterDefinition(&m_vram, bgCharacters + 16 * character, 8); + const auto definition = CharacterDefinition(&m_vram, bgCharacters + 16 * character); renderTile( 8, column * 8 + offsetX, row * 8 + offsetY, diff --git a/LR35902/src/ObjectAttribute.cpp b/LR35902/src/ObjectAttribute.cpp index ae67f75..bf37c71 100644 --- a/LR35902/src/ObjectAttribute.cpp +++ b/LR35902/src/ObjectAttribute.cpp @@ -6,11 +6,9 @@ EightBit::GameBoy::ObjectAttribute::ObjectAttribute() { } -EightBit::GameBoy::ObjectAttribute::ObjectAttribute(Ram& ram, uint16_t address, int height) { +EightBit::GameBoy::ObjectAttribute::ObjectAttribute(Ram& ram, uint16_t address) { m_positionY = ram.peek(address); - m_positionX = ram.peek(address + 1); - m_pattern = ram.peek(address + 2); - if (height == 16) - m_pattern >>= 1; - m_flags = ram.peek(address + 3); + m_positionX = ram.peek(++address); + m_pattern = ram.peek(++address); + m_flags = ram.peek(++address); }