mirror of https://github.com/bsnes-emu/bsnes.git
139 lines
3.6 KiB
C++
139 lines
3.6 KiB
C++
PPU::Registers::Control::operator uint16() const {
|
|
return (
|
|
(bgmode << 0)
|
|
| (cgbmode << 3)
|
|
| (frame << 4)
|
|
| (hblank << 5)
|
|
| (objmapping << 6)
|
|
| (forceblank << 7)
|
|
| (enable[BG0] << 8)
|
|
| (enable[BG1] << 9)
|
|
| (enable[BG2] << 10)
|
|
| (enable[BG3] << 11)
|
|
| (enable[OBJ] << 12)
|
|
| (enablewindow[In0] << 13)
|
|
| (enablewindow[In1] << 14)
|
|
| (enablewindow[Obj] << 15)
|
|
);
|
|
}
|
|
|
|
uint16 PPU::Registers::Control::operator=(uint16 source) {
|
|
bgmode = source >> 0;
|
|
cgbmode = source >> 3;
|
|
frame = source >> 4;
|
|
hblank = source >> 5;
|
|
objmapping = source >> 6;
|
|
forceblank = source >> 7;
|
|
enable[BG0] = source >> 8;
|
|
enable[BG1] = source >> 9;
|
|
enable[BG2] = source >> 10;
|
|
enable[BG3] = source >> 11;
|
|
enable[OBJ] = source >> 12;
|
|
enablewindow[In0] = source >> 13;
|
|
enablewindow[In1] = source >> 14;
|
|
enablewindow[Obj] = source >> 15;
|
|
return operator uint16();
|
|
}
|
|
|
|
PPU::Registers::Status::operator uint16() const {
|
|
return (
|
|
(vblank << 0)
|
|
| (hblank << 1)
|
|
| (vcoincidence << 2)
|
|
| (irqvblank << 3)
|
|
| (irqhblank << 4)
|
|
| (irqvcoincidence << 5)
|
|
| (vcompare << 8)
|
|
);
|
|
}
|
|
|
|
uint16 PPU::Registers::Status::operator=(uint16 source) {
|
|
vblank = source >> 0;
|
|
hblank = source >> 1;
|
|
vcoincidence = source >> 2;
|
|
irqvblank = source >> 3;
|
|
irqhblank = source >> 4;
|
|
irqvcoincidence = source >> 5;
|
|
vcompare = source >> 8;
|
|
return operator uint16();
|
|
}
|
|
|
|
PPU::Registers::BackgroundControl::operator uint16() const {
|
|
return (
|
|
(priority << 0)
|
|
| (characterbaseblock << 2)
|
|
| (mosaic << 6)
|
|
| (colormode << 7)
|
|
| (screenbaseblock << 8)
|
|
| (affinewrap << 13)
|
|
| (screensize << 14)
|
|
);
|
|
}
|
|
|
|
uint16 PPU::Registers::BackgroundControl::operator=(uint16 source) {
|
|
priority = source >> 0;
|
|
characterbaseblock = source >> 2;
|
|
mosaic = source >> 6;
|
|
colormode = source >> 7;
|
|
screenbaseblock = source >> 8;
|
|
affinewrap = source >> 13;
|
|
screensize = source >> 14;
|
|
return operator uint16();
|
|
}
|
|
|
|
PPU::Registers::WindowFlags::operator uint8() const {
|
|
return (
|
|
(enable[BG0] << 0)
|
|
| (enable[BG1] << 1)
|
|
| (enable[BG2] << 2)
|
|
| (enable[BG3] << 3)
|
|
| (enable[OBJ] << 4)
|
|
| (enable[SFX] << 5)
|
|
);
|
|
}
|
|
|
|
uint8 PPU::Registers::WindowFlags::operator=(uint8 source) {
|
|
enable[BG0] = source >> 0;
|
|
enable[BG1] = source >> 1;
|
|
enable[BG2] = source >> 2;
|
|
enable[BG3] = source >> 3;
|
|
enable[OBJ] = source >> 4;
|
|
enable[SFX] = source >> 5;
|
|
return operator uint8();
|
|
}
|
|
|
|
PPU::Registers::BlendControl::operator uint16() const {
|
|
return (
|
|
(above[BG0] << 0)
|
|
| (above[BG1] << 1)
|
|
| (above[BG2] << 2)
|
|
| (above[BG3] << 3)
|
|
| (above[OBJ] << 4)
|
|
| (above[SFX] << 5)
|
|
| (mode << 6)
|
|
| (below[BG0] << 8)
|
|
| (below[BG1] << 9)
|
|
| (below[BG2] << 10)
|
|
| (below[BG3] << 11)
|
|
| (below[OBJ] << 12)
|
|
| (below[SFX] << 13)
|
|
);
|
|
}
|
|
|
|
uint16 PPU::Registers::BlendControl::operator=(uint16 source) {
|
|
above[BG0] = source >> 0;
|
|
above[BG1] = source >> 1;
|
|
above[BG2] = source >> 2;
|
|
above[BG3] = source >> 3;
|
|
above[OBJ] = source >> 4;
|
|
above[SFX] = source >> 5;
|
|
mode = source >> 6;
|
|
below[BG0] = source >> 8;
|
|
below[BG1] = source >> 9;
|
|
below[BG2] = source >> 10;
|
|
below[BG3] = source >> 11;
|
|
below[OBJ] = source >> 12;
|
|
below[SFX] = source >> 13;
|
|
return operator uint16();
|
|
}
|