mirror of
https://github.com/RaySollium99/picodrive.git
synced 2025-09-05 15:27:46 -04:00
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:
parent
740da8c60b
commit
f58f05d28a
2 changed files with 20 additions and 27 deletions
|
@ -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,23 +69,25 @@ static
|
||||||
void z80WriteBusReq(u32 d)
|
void z80WriteBusReq(u32 d)
|
||||||
{
|
{
|
||||||
d&=1; d^=1;
|
d&=1; d^=1;
|
||||||
if(!d) {
|
if(Pico.m.scanline != -1)
|
||||||
// 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(!d) {
|
||||||
int lineCycles;
|
// this is for a nasty situation where Z80 was enabled and disabled in the same 68k timeslice (Golden Axe III)
|
||||||
z80stopCycle = SekCyclesDone();
|
if (Pico.m.z80Run) {
|
||||||
if (Pico.m.z80Run&2)
|
int lineCycles;
|
||||||
lineCycles=(488-SekCyclesLeft)&0x1ff;
|
z80stopCycle = SekCyclesDone();
|
||||||
else lineCycles=z80stopCycle-z80startCycle; // z80 was started at current line
|
if (Pico.m.z80Run&2)
|
||||||
if (lineCycles > 0 && lineCycles <= 488) {
|
lineCycles=(488-SekCyclesLeft)&0x1ff;
|
||||||
dprintf("zrun: %i/%i cycles", lineCycles, (lineCycles>>1)-(lineCycles>>5));
|
else lineCycles=z80stopCycle-z80startCycle; // z80 was started at current line
|
||||||
lineCycles=(lineCycles>>1)-(lineCycles>>5);
|
if (lineCycles > 0 && lineCycles <= 488) {
|
||||||
z80_run(lineCycles);
|
dprintf("zrun: %i/%i cycles", lineCycles, (lineCycles>>1)-(lineCycles>>5));
|
||||||
|
lineCycles=(lineCycles>>1)-(lineCycles>>5);
|
||||||
|
z80_run(lineCycles);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
z80startCycle = SekCyclesDone();
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
10
Pico/Pico.c
10
Pico/Pico.c
|
@ -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++) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue