mirror of
https://github.com/zoriya/ComSquare.git
synced 2025-12-20 06:05:11 +00:00
fixing some registers and update registers related to backgrounds
This commit is contained in:
@@ -61,8 +61,8 @@ namespace ComSquare::PPU
|
|||||||
for (int j = 0; j < this->_characterSize.x; j++) {
|
for (int j = 0; j < this->_characterSize.x; j++) {
|
||||||
reference = getTilePixelReference(graphicAddress, index);
|
reference = getTilePixelReference(graphicAddress, index);
|
||||||
color = getRealColor(palette[reference]);
|
color = getRealColor(palette[reference]);
|
||||||
if (tileData.tilePriority == this->priority && reference != 0) // reference 0 is considered as transparency
|
if (tileData.tilePriority == this->priority) // reference 0 is considered as transparency
|
||||||
this->buffer[pos.x][pos.y] = color;
|
this->buffer[pos.x][pos.y] = (reference) ? color : 0;
|
||||||
if (j == 7) {
|
if (j == 7) {
|
||||||
index = -1;
|
index = -1;
|
||||||
// to go to the tile to the right
|
// to go to the tile to the right
|
||||||
|
|||||||
@@ -180,6 +180,9 @@ namespace ComSquare::PPU
|
|||||||
break;
|
break;
|
||||||
case ppuRegisters::bgmode:
|
case ppuRegisters::bgmode:
|
||||||
this->_registers._bgmode.raw = data;
|
this->_registers._bgmode.raw = data;
|
||||||
|
// update backgrounds
|
||||||
|
for (int i = 0; i < 8; i++)
|
||||||
|
this->_backgrounds[i].setCharacterSize(this->getCharacterSize((i / 2) + 1));
|
||||||
break;
|
break;
|
||||||
case ppuRegisters::mosaic:
|
case ppuRegisters::mosaic:
|
||||||
this->_registers._mosaic.raw = data;
|
this->_registers._mosaic.raw = data;
|
||||||
@@ -189,6 +192,9 @@ namespace ComSquare::PPU
|
|||||||
case ppuRegisters::bg3sc:
|
case ppuRegisters::bg3sc:
|
||||||
case ppuRegisters::bg4sc:
|
case ppuRegisters::bg4sc:
|
||||||
this->_registers._bgsc[addr - 0x07].raw = data;
|
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;
|
break;
|
||||||
case ppuRegisters::bg12nba:
|
case ppuRegisters::bg12nba:
|
||||||
case ppuRegisters::bg34nba:
|
case ppuRegisters::bg34nba:
|
||||||
@@ -253,7 +259,7 @@ namespace ComSquare::PPU
|
|||||||
case ppuRegisters::m7b:
|
case ppuRegisters::m7b:
|
||||||
case ppuRegisters::m7c:
|
case ppuRegisters::m7c:
|
||||||
case ppuRegisters::m7d:
|
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;
|
break;
|
||||||
case ppuRegisters::m7x:
|
case ppuRegisters::m7x:
|
||||||
case ppuRegisters::m7y:
|
case ppuRegisters::m7y:
|
||||||
|
|||||||
Reference in New Issue
Block a user