2017-01-16 21:02:56 +00:00
|
|
|
auto VDC::DMA::step(uint clocks) -> void {
|
|
|
|
while(clocks--) {
|
|
|
|
if(vramActive) {
|
2017-01-22 00:33:36 +00:00
|
|
|
uint16 data = vdc.vram.read(source);
|
|
|
|
vdc.vram.write(target, data);
|
2017-01-16 21:02:56 +00:00
|
|
|
sourceIncrementMode == 0 ? source++ : source--;
|
|
|
|
targetIncrementMode == 0 ? target++ : target--;
|
|
|
|
if(!--length) {
|
|
|
|
vramActive = false;
|
|
|
|
vdc.irq.raise(VDC::IRQ::Line::TransferVRAM);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if(satbActive) {
|
2017-01-22 00:33:36 +00:00
|
|
|
uint16 data = vdc.vram.read(satbSource + satbOffset);
|
|
|
|
vdc.satb.write(satbOffset, data);
|
Update to v101r35 release.
byuu says:
Changelog:
- PCE: added 384KB HuCard ROM mirroring mode
- PCE: corrected D-pad polling order
- PCE: corrected palette color ordering (GRB, not RGB -- yes,
seriously)
- PCE: corrected SATB DMA -- should write to SATB, not to VRAM
- PCE: broke out Background, Sprite VDC settings to separate
subclasses
- PCE: emulated VDC backgrounds
- PCE: emulated VDC sprites
- PCE: emulated VDC sprite overflow, collision interrupts
- HuC6280: fixed disassembler output for STi instructions
- HuC6280: added missing LastCycle check to interrupt()
- HuC6280: fixed BIT, CMP, CPX, CPY, TRB, TSB, TST flag testing and
result
- HuC6280: added extra cycle delays to the block move instructions
- HuC6280: fixed ordering for flag set/clear instructions (happens
after LastCycle check)
- HuC6280: removed extra cycle from immediate instructions
- HuC6280: fixed indirectLoad, indirectYStore absolute addressing
- HuC6280: fixed BBR, BBS zeropage value testing
- HuC6280: fixed stack push/pull direction
Neutopia looks okay until the main title screen, then there's some
gibberish on the bottom. The game also locks up with some gibberish once
you actually start a new game. So, still not playable just yet =(
2017-01-19 08:38:57 +00:00
|
|
|
if(++satbOffset == 256) {
|
2017-01-16 21:02:56 +00:00
|
|
|
satbActive = false;
|
Update to v101r35 release.
byuu says:
Changelog:
- PCE: added 384KB HuCard ROM mirroring mode
- PCE: corrected D-pad polling order
- PCE: corrected palette color ordering (GRB, not RGB -- yes,
seriously)
- PCE: corrected SATB DMA -- should write to SATB, not to VRAM
- PCE: broke out Background, Sprite VDC settings to separate
subclasses
- PCE: emulated VDC backgrounds
- PCE: emulated VDC sprites
- PCE: emulated VDC sprite overflow, collision interrupts
- HuC6280: fixed disassembler output for STi instructions
- HuC6280: added missing LastCycle check to interrupt()
- HuC6280: fixed BIT, CMP, CPX, CPY, TRB, TSB, TST flag testing and
result
- HuC6280: added extra cycle delays to the block move instructions
- HuC6280: fixed ordering for flag set/clear instructions (happens
after LastCycle check)
- HuC6280: removed extra cycle from immediate instructions
- HuC6280: fixed indirectLoad, indirectYStore absolute addressing
- HuC6280: fixed BBR, BBS zeropage value testing
- HuC6280: fixed stack push/pull direction
Neutopia looks okay until the main title screen, then there's some
gibberish on the bottom. The game also locks up with some gibberish once
you actually start a new game. So, still not playable just yet =(
2017-01-19 08:38:57 +00:00
|
|
|
satbOffset = 0;
|
2017-01-16 21:02:56 +00:00
|
|
|
satbPending = satbRepeat;
|
|
|
|
vdc.irq.raise(VDC::IRQ::Line::TransferSATB);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
auto VDC::DMA::vramStart() -> void {
|
|
|
|
vramActive = true;
|
|
|
|
}
|
|
|
|
|
|
|
|
auto VDC::DMA::satbStart() -> void {
|
|
|
|
if(!satbPending) return;
|
|
|
|
satbActive = true;
|
Update to v101r35 release.
byuu says:
Changelog:
- PCE: added 384KB HuCard ROM mirroring mode
- PCE: corrected D-pad polling order
- PCE: corrected palette color ordering (GRB, not RGB -- yes,
seriously)
- PCE: corrected SATB DMA -- should write to SATB, not to VRAM
- PCE: broke out Background, Sprite VDC settings to separate
subclasses
- PCE: emulated VDC backgrounds
- PCE: emulated VDC sprites
- PCE: emulated VDC sprite overflow, collision interrupts
- HuC6280: fixed disassembler output for STi instructions
- HuC6280: added missing LastCycle check to interrupt()
- HuC6280: fixed BIT, CMP, CPX, CPY, TRB, TSB, TST flag testing and
result
- HuC6280: added extra cycle delays to the block move instructions
- HuC6280: fixed ordering for flag set/clear instructions (happens
after LastCycle check)
- HuC6280: removed extra cycle from immediate instructions
- HuC6280: fixed indirectLoad, indirectYStore absolute addressing
- HuC6280: fixed BBR, BBS zeropage value testing
- HuC6280: fixed stack push/pull direction
Neutopia looks okay until the main title screen, then there's some
gibberish on the bottom. The game also locks up with some gibberish once
you actually start a new game. So, still not playable just yet =(
2017-01-19 08:38:57 +00:00
|
|
|
satbOffset = 0;
|
2017-01-16 21:02:56 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
auto VDC::DMA::satbQueue() -> void {
|
|
|
|
satbPending = true;
|
|
|
|
}
|