fix DrawSpritesHiAS
[picodrive.git] / pico / cd / cell_map.c
1 /*
2  * Convert "cell arrange" address to normal address.
3  * (C) notaz, 2008
4  *
5  * This work is licensed under the terms of MAME license.
6  * See COPYING file in the top-level directory.
7  */
8
9 // 64 x32 x16 x8 x4 x4
10 static unsigned int cell_map(int celln)
11 {
12   int col, row;
13
14   switch ((celln >> 12) & 7) { // 0-0x8000
15     case 0: // x32 cells
16     case 1:
17     case 2:
18     case 3:
19       col = celln >> 8;
20       row = celln & 0xff;
21       break;
22     case 4: // x16
23     case 5:
24       col  = celln >> 7;
25       row  = celln & 0x7f;
26       row |= 0x10000 >> 8;
27       break;
28     case 6: // x8
29       col  = celln >> 6;
30       row  = celln & 0x3f;
31       row |= 0x18000 >> 8;
32       break;
33     case 7: // x4
34       col  = celln >> 5;
35       row  = celln & 0x1f;
36       row |= (celln & 0x7800) >> 6;
37       break;
38     default: // never happens, only here to make compiler happy
39       col = row = 0;
40       break;
41   }
42
43   return (col & 0x3f) + row*64;
44 }
45