46 lines
928 B
C
46 lines
928 B
C
![]() |
/*
|
||
|
* Convert "cell arrange" address to normal address.
|
||
|
* (C) notaz, 2008
|
||
|
*
|
||
|
* This work is licensed under the terms of MAME license.
|
||
|
* See COPYING file in the top-level directory.
|
||
|
*/
|
||
|
|
||
|
// 64 x32 x16 x8 x4 x4
|
||
|
static unsigned int cell_map(int celln)
|
||
|
{
|
||
|
int col, row;
|
||
|
|
||
|
switch ((celln >> 12) & 7) { // 0-0x8000
|
||
|
case 0: // x32 cells
|
||
|
case 1:
|
||
|
case 2:
|
||
|
case 3:
|
||
|
col = celln >> 8;
|
||
|
row = celln & 0xff;
|
||
|
break;
|
||
|
case 4: // x16
|
||
|
case 5:
|
||
|
col = celln >> 7;
|
||
|
row = celln & 0x7f;
|
||
|
row |= 0x10000 >> 8;
|
||
|
break;
|
||
|
case 6: // x8
|
||
|
col = celln >> 6;
|
||
|
row = celln & 0x3f;
|
||
|
row |= 0x18000 >> 8;
|
||
|
break;
|
||
|
case 7: // x4
|
||
|
col = celln >> 5;
|
||
|
row = celln & 0x1f;
|
||
|
row |= (celln & 0x7800) >> 6;
|
||
|
break;
|
||
|
default: // never happens, only here to make compiler happy
|
||
|
col = row = 0;
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
return (col & 0x3f) + row*64;
|
||
|
}
|
||
|
|