mirror of
https://github.com/holub/mame
synced 2025-07-01 16:19:38 +03:00
Simplified Mahjong Man Guan Cai Shen decryption (maybe there were some fixes too)
This commit is contained in:
parent
65a96e4f7a
commit
04dd24b41d
@ -320,26 +320,9 @@ static DRIVER_INIT( mgcs )
|
|||||||
{
|
{
|
||||||
UINT16 x = src[i];
|
UINT16 x = src[i];
|
||||||
|
|
||||||
if( (i & 0x7000/2) == 0x6000/2 || (i & 0x7000/2) == 0x7000/2)
|
/* bit 0 xor layer */
|
||||||
{
|
|
||||||
if( (i & 0x20/2) )
|
|
||||||
{
|
|
||||||
if( (i & 0x02/2) )
|
|
||||||
{
|
|
||||||
x ^= 0x0001;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if( (i & 0x100/2) && !(i & 0x400/2) )
|
|
||||||
{
|
|
||||||
x ^= 0x0100;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( (i & 0x100/2) && (i & 0x400/2) )
|
if( i & 0x4000/2 )
|
||||||
{
|
|
||||||
x ^= 0x0100;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if( (i & 0x7000/2) == 0x4000/2 || (i & 0x7000/2) == 0x5000/2 )
|
|
||||||
{
|
{
|
||||||
if( i & 0x20/2 )
|
if( i & 0x20/2 )
|
||||||
{
|
{
|
||||||
@ -348,40 +331,10 @@ static DRIVER_INIT( mgcs )
|
|||||||
x ^= 0x0001;
|
x ^= 0x0001;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if( i & 0x100/2 )
|
|
||||||
{
|
|
||||||
if( !(i & 0x20/2) || (i & 0x80/2) || (i & 0x400/2) )
|
|
||||||
{
|
|
||||||
x ^= 0x0100;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if( i & 0x80/2 )
|
|
||||||
{
|
|
||||||
x ^= 0x0100;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if( (i & 0x7000/2) == 0x2000/2 || (i & 0x7000/2) == 0x3000/2 )
|
else
|
||||||
{
|
{
|
||||||
if( (i & 0x300/2) == 0x100/2 || (i & 0x300/2) == 0x300/2 )
|
if( i & 0x300/2 )
|
||||||
{
|
|
||||||
if( !(i & 0x20/2) || (i & 0x400/2) )
|
|
||||||
{
|
|
||||||
x ^= 0x0100;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( i & 0x20/2 )
|
|
||||||
{
|
|
||||||
if( i & 0x02/2 )
|
|
||||||
{
|
|
||||||
x ^= 0x0001;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if( (i & 0x300/2) == 0x200/2 )
|
|
||||||
{
|
{
|
||||||
if( i & 0x20/2 )
|
if( i & 0x20/2 )
|
||||||
{
|
{
|
||||||
@ -406,102 +359,38 @@ static DRIVER_INIT( mgcs )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if( (i & 0x7000/2) == 0x0000/2 || (i & 0x7000/2) == 0x1000/2)
|
|
||||||
|
/* bit 8 xor layer */
|
||||||
|
|
||||||
|
if( i & 0x2000/2 )
|
||||||
{
|
{
|
||||||
if( (i & 0x300/2) == 0x100/2 || (i & 0x300/2) == 0x300/2 )
|
if( i & 0x100/2 )
|
||||||
{
|
{
|
||||||
if( i & 0x80/2 )
|
if( !(i & 0x20/2) || (i & 0x400/2) )
|
||||||
{
|
{
|
||||||
x ^= 0x0100;
|
x ^= 0x0100;
|
||||||
|
|
||||||
if( i & 0x20/2 )
|
|
||||||
{
|
|
||||||
if( (i & 0x02/2) )
|
|
||||||
{
|
|
||||||
x ^= 0x0001;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if( i & 0x20/2 )
|
|
||||||
{
|
|
||||||
if( (i & 0x02/2) )
|
|
||||||
{
|
|
||||||
x ^= 0x0001;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if( !(i & 0x400/2) )
|
|
||||||
{
|
|
||||||
x ^= 0x0100;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( i & 0x400/2 )
|
|
||||||
{
|
|
||||||
x ^= 0x0100;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if( (i & 0x300/2) == 0x200/2 )
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if( i & 0x80/2 )
|
||||||
{
|
{
|
||||||
if( i & 0x80/2 )
|
x ^= 0x0100;
|
||||||
{
|
|
||||||
x ^= 0x0100;
|
|
||||||
|
|
||||||
if( i & 0x20/2 )
|
|
||||||
{
|
|
||||||
if( (i & 0x02/2) )
|
|
||||||
{
|
|
||||||
x ^= 0x0001;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if( (i & 0x20/2) )
|
|
||||||
{
|
|
||||||
if( (i & 0x02/2) )
|
|
||||||
{
|
|
||||||
x ^= 0x0001;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
if( i & 0x80/2 )
|
|
||||||
{
|
|
||||||
x ^= 0x0100;
|
|
||||||
|
|
||||||
if( i & 0x20/2 )
|
if( i & 0x100/2 )
|
||||||
|
{
|
||||||
|
if( !(i & 0x80/2) )
|
||||||
|
{
|
||||||
|
if( !(i & 0x20/2) || (i & 0x400/2) )
|
||||||
{
|
{
|
||||||
if( !(i & 0x02/2) )
|
x ^= 0x0100;
|
||||||
{
|
|
||||||
x ^= 0x0001;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
x ^= 0x0001;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if( i & 0x20/2 )
|
|
||||||
{
|
|
||||||
if( !(i & 0x02/2) )
|
|
||||||
{
|
|
||||||
x ^= 0x0001;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
x ^= 0x0001;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
src[i] = x;
|
src[i] = x;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user