2018-05-26 23:04:43 +00:00
|
|
|
auto PPU::Line::renderObject(PPU::IO::Object&) -> void {
|
|
|
|
}
|
|
|
|
|
|
|
|
auto PPU::oamAddressReset() -> void {
|
|
|
|
}
|
|
|
|
|
|
|
|
auto PPU::oamSetFirstObject() -> void {
|
|
|
|
}
|
|
|
|
|
|
|
|
auto PPU::readObject(uint10 address) -> uint8 {
|
2018-05-26 03:29:14 +00:00
|
|
|
if(!address.bit(9)) {
|
|
|
|
uint n = address >> 2; //object#
|
|
|
|
address &= 3;
|
|
|
|
if(address == 0) return object[n].x.bits(0,7);
|
|
|
|
if(address == 1) return object[n].y;
|
|
|
|
if(address == 2) return object[n].character;
|
|
|
|
return (
|
|
|
|
object[n].nameselect << 0
|
|
|
|
| object[n].palette << 1
|
|
|
|
| object[n].priority << 4
|
|
|
|
| object[n].hflip << 6
|
|
|
|
| object[n].vflip << 7
|
|
|
|
);
|
|
|
|
} else {
|
|
|
|
uint n = (address & 0x1f) << 2; //object#
|
|
|
|
return (
|
|
|
|
object[n + 0].x.bit(8) << 0
|
|
|
|
| object[n + 0].size << 1
|
|
|
|
| object[n + 1].x.bit(8) << 2
|
|
|
|
| object[n + 1].size << 3
|
|
|
|
| object[n + 2].x.bit(8) << 4
|
|
|
|
| object[n + 2].size << 5
|
|
|
|
| object[n + 3].x.bit(8) << 6
|
|
|
|
| object[n + 3].size << 7
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-05-26 23:04:43 +00:00
|
|
|
auto PPU::writeObject(uint10 address, uint8 data) -> void {
|
2018-05-26 03:29:14 +00:00
|
|
|
if(!address.bit(9)) {
|
|
|
|
uint n = address >> 2; //object#
|
|
|
|
if(address == 0) { object[n].x.bits(0,7) = data; return; }
|
|
|
|
if(address == 1) { object[n].y = data; return; }
|
|
|
|
if(address == 2) { object[n].character = data; return; }
|
|
|
|
object[n].nameselect = data.bit (0);
|
|
|
|
object[n].palette = data.bits(1,3);
|
|
|
|
object[n].priority = data.bits(4,5);
|
|
|
|
object[n].hflip = data.bit (6);
|
|
|
|
object[n].vflip = data.bit (7);
|
|
|
|
} else {
|
|
|
|
uint n = (address & 0x1f) << 2; //object#
|
|
|
|
object[n + 0].x.bit(8) = data.bit(0);
|
|
|
|
object[n + 0].size = data.bit(1);
|
|
|
|
object[n + 1].x.bit(8) = data.bit(2);
|
|
|
|
object[n + 1].size = data.bit(3);
|
|
|
|
object[n + 2].x.bit(8) = data.bit(4);
|
|
|
|
object[n + 2].size = data.bit(5);
|
|
|
|
object[n + 3].x.bit(8) = data.bit(6);
|
|
|
|
object[n + 3].size = data.bit(7);
|
|
|
|
}
|
|
|
|
}
|