32x: built-in BIOS; reset handling; 68k memhandler split
[picodrive.git] / pico / cd / cell_map.c
CommitLineData
6cadc2da 1// Convert "cell arrange" address to normal address.
2// (c) Copyright 2007, Grazvydas "notaz" Ignotas
fa1e5e29 3
4// 64 x32 x16 x8 x4 x4
5static unsigned int cell_map(int celln)
6{
7 int col, row;
8
9 switch ((celln >> 12) & 7) { // 0-0x8000
10 case 0: // x32 cells
11 case 1:
12 case 2:
13 case 3:
14 col = celln >> 8;
15 row = celln & 0xff;
16 break;
17 case 4: // x16
18 case 5:
19 col = celln >> 7;
20 row = celln & 0x7f;
21 row |= 0x10000 >> 8;
22 break;
23 case 6: // x8
24 col = celln >> 6;
25 row = celln & 0x3f;
26 row |= 0x18000 >> 8;
27 break;
28 case 7: // x4
29 col = celln >> 5;
30 row = celln & 0x1f;
31 row |= (celln & 0x7800) >> 6;
32 break;
4ff2d527 33 default: // never happens, only here to make compiler happy
fa1e5e29 34 col = row = 0;
35 break;
36 }
37
38 return (col & 0x3f) + row*64;
39}
40