mirror of https://github.com/bsnes-emu/bsnes.git
80 lines
1.8 KiB
C++
80 lines
1.8 KiB
C++
auto VDP::status() -> uint8 {
|
|
io.controlLatch = 0;
|
|
uint8 data = 0x00;
|
|
data.bits(0,4) = io.spriteOverflowIndex;
|
|
data.bit(5) = io.spriteCollision;
|
|
data.bit(6) = io.spriteOverflow;
|
|
data.bit(7) = io.irqLine;
|
|
io.irqLine = 0;
|
|
return data;
|
|
}
|
|
|
|
auto VDP::data() -> uint8 {
|
|
io.controlLatch = 0;
|
|
uint8 data = io.vramLatch;
|
|
uint14 address = io.controlValue.bits(0,13)++;
|
|
io.vramLatch = vram.read(address);
|
|
return data;
|
|
}
|
|
|
|
auto VDP::data(uint8 data) -> void {
|
|
io.controlLatch = 0;
|
|
uint14 address = io.controlValue.bits(0,13)++;
|
|
vram.write(address, data);
|
|
}
|
|
|
|
auto VDP::control(uint8 data) -> void {
|
|
if(io.controlLatch == 0) {
|
|
io.controlLatch = 1;
|
|
io.controlValue.byte(0) = data;
|
|
return;
|
|
} else {
|
|
io.controlLatch = 0;
|
|
io.controlValue.byte(1) = data;
|
|
}
|
|
|
|
if(!io.controlValue.bit(15)) {
|
|
if(!io.controlValue.bit(14)) {
|
|
uint14 address = io.controlValue.bits(0,13)++;
|
|
io.vramLatch = vram.read(address);
|
|
}
|
|
return;
|
|
}
|
|
|
|
data = io.controlValue.bits(0,7);
|
|
switch(io.controlValue.bits(8,10)) {
|
|
case 0:
|
|
io.externalInput = data.bit(0);
|
|
io.videoMode.bit(1) = data.bit(1);
|
|
break;
|
|
case 1:
|
|
io.spriteZoom = data.bit(0);
|
|
io.spriteSize = data.bit(1);
|
|
io.videoMode.bit(2) = data.bit(3);
|
|
io.videoMode.bit(0) = data.bit(4);
|
|
io.irqEnable = data.bit(5);
|
|
io.displayEnable = data.bit(6);
|
|
io.ramMode = data.bit(7);
|
|
break;
|
|
case 2:
|
|
io.nameTableAddress = data.bits(0,3);
|
|
break;
|
|
case 3:
|
|
io.colorTableAddress = data.bits(0,7);
|
|
break;
|
|
case 4:
|
|
io.patternTableAddress = data.bits(0,2);
|
|
break;
|
|
case 5:
|
|
io.spriteAttributeTableAddress = data.bits(0,6);
|
|
break;
|
|
case 6:
|
|
io.spritePatternTableAddress = data.bits(0,2);
|
|
break;
|
|
case 7:
|
|
io.colorBackground = data.bits(0,3);
|
|
io.colorForeground = data.bits(4,7);
|
|
break;
|
|
}
|
|
}
|