+ int S = A & 1;
+ int M_horz = (A>>1)&1;
+ int p = (A >> 2) & 0x1F;
+ p += (A&0x100) ? 0x20 : 0;
+ bool o = (A>>7)&1;
+ bool L = (A>>9)&1;
+
+ if (o && !S )
+ {
+ ROM_BANK16(0x8000,p);
+ ROM_BANK16(0xC000,p);
+ }
+ if (o && S )
+ {
+ ROM_BANK16(0x8000,p);
+ ROM_BANK16(0xC000,p+1);
+ }
+ if (!o && !S && !L )
+ {
+ ROM_BANK16(0x8000,p);
+ ROM_BANK16(0xC000,p&0x38);
+ }
+ if (!o && S && !L )
+ {
+ ROM_BANK16(0x8000,p&0x3E);
+ ROM_BANK16(0xC000,p&0x38);
+ }
+ if (!o && !S && L)
+ {
+ ROM_BANK16(0x8000,p);
+ ROM_BANK16(0xC000,p|7);
+ }
+ if (!o && S && L )
+ {
+ ROM_BANK16(0x8000,p&0x3E);
+ ROM_BANK16(0xC000,p|7);
+ }