fixing some registers and update registers related to backgrounds

This commit is contained in:
Clément Le Bihan
2020-05-28 14:35:06 +02:00
parent 18757bbfa4
commit 0933a9803e
2 changed files with 9 additions and 3 deletions

View File

@@ -61,8 +61,8 @@ namespace ComSquare::PPU
for (int j = 0; j < this->_characterSize.x; j++) {
reference = getTilePixelReference(graphicAddress, index);
color = getRealColor(palette[reference]);
if (tileData.tilePriority == this->priority && reference != 0) // reference 0 is considered as transparency
this->buffer[pos.x][pos.y] = color;
if (tileData.tilePriority == this->priority) // reference 0 is considered as transparency
this->buffer[pos.x][pos.y] = (reference) ? color : 0;
if (j == 7) {
index = -1;
// to go to the tile to the right

View File

@@ -180,6 +180,9 @@ namespace ComSquare::PPU
break;
case ppuRegisters::bgmode:
this->_registers._bgmode.raw = data;
// update backgrounds
for (int i = 0; i < 8; i++)
this->_backgrounds[i].setCharacterSize(this->getCharacterSize((i / 2) + 1));
break;
case ppuRegisters::mosaic:
this->_registers._mosaic.raw = data;
@@ -189,6 +192,9 @@ namespace ComSquare::PPU
case ppuRegisters::bg3sc:
case ppuRegisters::bg4sc:
this->_registers._bgsc[addr - 0x07].raw = data;
// update background tilemap address
this->_backgrounds[addr - 0x07].setTileMapStartAddress(this->getTileMapStartAddress(addr - 0x07 + 1));
this->_backgrounds[addr - 0x07 + 1].setTileMapStartAddress(this->getTileMapStartAddress(addr - 0x07 + 1));
break;
case ppuRegisters::bg12nba:
case ppuRegisters::bg34nba:
@@ -253,7 +259,7 @@ namespace ComSquare::PPU
case ppuRegisters::m7b:
case ppuRegisters::m7c:
case ppuRegisters::m7d:
this->_registers._m7[addr - ppuRegisters::m7a].m7 = (this->_registers._m7[addr - ppuRegisters::m7a].m7 << 8) | data;
this->_registers._m7[addr - ppuRegisters::m7a].m7 = (this->_registers._m7[addr - ppuRegisters::m7a].m7 << 8U) | data;
break;
case ppuRegisters::m7x:
case ppuRegisters::m7y: