removed z80 cycle code in nonacc mode as it was only causing trouble

git-svn-id: file:///home/notaz/opt/svn/PicoDrive@238 be3aeb3a-fb24-0410-a615-afba39da0efa
This commit is contained in:
notaz 2007-09-02 16:41:02 +00:00
parent 740da8c60b
commit f58f05d28a
2 changed files with 20 additions and 27 deletions

View file

@ -52,7 +52,7 @@ static
u32 z80ReadBusReq(void) u32 z80ReadBusReq(void)
{ {
u32 d=Pico.m.z80Run&1; u32 d=Pico.m.z80Run&1;
if (!d) { if (!d && Pico.m.scanline != -1) {
// needed by buggy Terminator (Sega CD) // needed by buggy Terminator (Sega CD)
int stop_before = SekCyclesDone() - z80stopCycle; int stop_before = SekCyclesDone() - z80stopCycle;
dprintf("stop before: %i", stop_before); dprintf("stop before: %i", stop_before);
@ -69,6 +69,8 @@ static
void z80WriteBusReq(u32 d) void z80WriteBusReq(u32 d)
{ {
d&=1; d^=1; d&=1; d^=1;
if(Pico.m.scanline != -1)
{
if(!d) { if(!d) {
// this is for a nasty situation where Z80 was enabled and disabled in the same 68k timeslice (Golden Axe III) // this is for a nasty situation where Z80 was enabled and disabled in the same 68k timeslice (Golden Axe III)
if (Pico.m.z80Run) { if (Pico.m.z80Run) {
@ -85,7 +87,7 @@ void z80WriteBusReq(u32 d)
} }
} else { } else {
z80startCycle = SekCyclesDone(); z80startCycle = SekCyclesDone();
//if(Pico.m.scanline != -1) }
} }
dprintf("set_zrun: %02x [%i|%i] @%06x", d, Pico.m.scanline, SekCyclesDone(), /*mz80GetRegisterValue(NULL, 0),*/ SekPc); dprintf("set_zrun: %02x [%i|%i] @%06x", d, Pico.m.scanline, SekCyclesDone(), /*mz80GetRegisterValue(NULL, 0),*/ SekPc);
Pico.m.z80Run=(u8)d; Pico.m.z80Run=(u8)d;
@ -110,7 +112,7 @@ u32 OtherRead16(u32 a, int realsize)
goto end; goto end;
} }
// |=0x80 for Shadow of the Beast & Super Offroad; rotate fakes next fetched instruction for Time Killers // rotate fakes next fetched instruction for Time Killers
if (a==0xa11100) { // z80 busreq if (a==0xa11100) { // z80 busreq
d=(z80ReadBusReq()<<8)|Pico.m.rotate++; d=(z80ReadBusReq()<<8)|Pico.m.rotate++;
dprintf("get_zrun: %04x [%i|%i] @%06x", d, Pico.m.scanline, SekCyclesDone(), SekPc); dprintf("get_zrun: %04x [%i|%i] @%06x", d, Pico.m.scanline, SekCyclesDone(), SekPc);
@ -183,6 +185,7 @@ void OtherWrite8(u32 a,u32 d)
} }
#endif #endif
if ((a&0xe700e0)==0xc00000) { if ((a&0xe700e0)==0xc00000) {
d&=0xff;
PicoVideoWrite(a,(u16)(d|(d<<8))); // Byte access gets mirrored PicoVideoWrite(a,(u16)(d|(d<<8))); // Byte access gets mirrored
return; return;
} }

View file

@ -458,19 +458,9 @@ static void PicoRunZ80Simple(int line_from, int line_to)
{ {
int line_from_r=line_from, line_to_r=line_to, line = line_from; int line_from_r=line_from, line_to_r=line_to, line = line_from;
int line_sample = Pico.m.pal ? 68 : 93; int line_sample = Pico.m.pal ? 68 : 93;
extern const unsigned short vcounts[];
if(!(PicoOpt&4) || Pico.m.z80Run == 0) { line_from_r = line_to_r; line_to_r = 0; } if(!(PicoOpt&4) || Pico.m.z80Run == 0) { line_from_r = line_to_r; line_to_r = 0; }
if(z80startCycle != 0x01000000) {
line_from_r = vcounts[z80startCycle>>8]+1;
z80startCycle = 0x01000000;
}
if(z80stopCycle != 0x01000000) {
line_to_r = vcounts[z80stopCycle>>8]+1;
z80stopCycle = 0x01000000;
}
if(PicoOpt&1) { if(PicoOpt&1) {
// we have ym2612 enabled, so we have to run Z80 in lines, so we could update DAC and timers // we have ym2612 enabled, so we have to run Z80 in lines, so we could update DAC and timers
for(; line < line_to; line++) { for(; line < line_to; line++) {