mirror of
https://github.com/holub/mame
synced 2025-05-29 09:03:08 +03:00
fixed cpx and cpy when a ptn or a agcpy command is executed
This commit is contained in:
parent
15969c0428
commit
cc9883d312
@ -1104,18 +1104,108 @@ logerror("unsupported register\n");
|
|||||||
}
|
}
|
||||||
else if ((fifo[0] & 0xf000) == 0xd000) /* PTN (to do) */
|
else if ((fifo[0] & 0xf000) == 0xd000) /* PTN (to do) */
|
||||||
{
|
{
|
||||||
// if ((fifo[0] & 0x0700) == 0x0400) printf("4");
|
|
||||||
ptn(fifo[0] & 0x0007,psx,psy,pex - psx,pey - psy);
|
ptn(fifo[0] & 0x0007,psx,psy,pex - psx,pey - psy);
|
||||||
|
|
||||||
cpx += pex - psx;
|
if ((fifo[0] & 0x0800) == 0x0000)
|
||||||
cpy += pey - psy;
|
switch (fifo[0] & 0x0700)
|
||||||
|
{
|
||||||
|
case 0x0000:
|
||||||
|
if ((pey - psy) > 0)
|
||||||
|
cpy += (pey - psy);
|
||||||
|
else
|
||||||
|
cpy -= (pey - psy);
|
||||||
|
break;
|
||||||
|
case 0x0100:
|
||||||
|
// missing
|
||||||
|
break;
|
||||||
|
case 0x0200:
|
||||||
|
if ((pey - psy) > 0)
|
||||||
|
cpx += (pey - psy);
|
||||||
|
else
|
||||||
|
cpx -= (pey - psy);
|
||||||
|
break;
|
||||||
|
case 0x0300:
|
||||||
|
// missing
|
||||||
|
break;
|
||||||
|
case 0x0400:
|
||||||
|
if ((pey - psy) > 0)
|
||||||
|
cpy -= (pey - psy);
|
||||||
|
else
|
||||||
|
cpy += (pey - psy);
|
||||||
|
break;
|
||||||
|
case 0x0500:
|
||||||
|
// missing
|
||||||
|
break;
|
||||||
|
case 0x0600:
|
||||||
|
if ((pey - psy) > 0)
|
||||||
|
cpx -= (pey - psy);
|
||||||
|
else
|
||||||
|
cpx += (pey - psy);
|
||||||
|
break;
|
||||||
|
case 0x0700:
|
||||||
|
// missing
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// missing
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if ((fifo[0] & 0xf0f8) == 0xe000) /* AGCPY */
|
else if ((fifo[0] & 0xf0f8) == 0xe000) /* AGCPY */
|
||||||
{
|
{
|
||||||
agcpy(fifo[0],fifo[1],fifo[2],cpx,cpy,fifo[3],fifo[4]);
|
agcpy(fifo[0],fifo[1],fifo[2],cpx,cpy,fifo[3],fifo[4]);
|
||||||
|
|
||||||
cpx += fifo[4];
|
switch (fifo[0] & 0x0700)
|
||||||
cpy += fifo[3];
|
{
|
||||||
|
case 0x0000:
|
||||||
|
if (fifo[4] > 0)
|
||||||
|
cpy += fifo[4];
|
||||||
|
else
|
||||||
|
cpy -= fifo[4];
|
||||||
|
break;
|
||||||
|
case 0x0100:
|
||||||
|
if (fifo[4] > 0)
|
||||||
|
cpy -= fifo[4];
|
||||||
|
else
|
||||||
|
cpy += fifo[4];
|
||||||
|
break;
|
||||||
|
case 0x0200:
|
||||||
|
if (fifo[4] > 0)
|
||||||
|
cpy += fifo[4];
|
||||||
|
else
|
||||||
|
cpy -= fifo[4];
|
||||||
|
break;
|
||||||
|
case 0x0300:
|
||||||
|
if (fifo[4] > 0)
|
||||||
|
cpy -= fifo[4];
|
||||||
|
else
|
||||||
|
cpy += fifo[4];
|
||||||
|
break;
|
||||||
|
case 0x0400:
|
||||||
|
if (fifo[3] > 0)
|
||||||
|
cpx += fifo[3];
|
||||||
|
else
|
||||||
|
cpx -= fifo[3];
|
||||||
|
break;
|
||||||
|
case 0x0500:
|
||||||
|
if (fifo[3] > 0)
|
||||||
|
cpx += fifo[3];
|
||||||
|
else
|
||||||
|
cpx -= fifo[3];
|
||||||
|
break;
|
||||||
|
case 0x0600:
|
||||||
|
if (fifo[3] > 0)
|
||||||
|
cpx -= fifo[3];
|
||||||
|
else
|
||||||
|
cpx += fifo[3];
|
||||||
|
break;
|
||||||
|
case 0x0700:
|
||||||
|
if (fifo[3] > 0)
|
||||||
|
cpx -= fifo[3];
|
||||||
|
else
|
||||||
|
cpx += fifo[3];
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user