irem m92: rowscroll and scrollx are mutually exclusive - fixes ssoldier/psoldier background scrolling issues. kludge for in the hunt no longer needed

This commit is contained in:
dinkc64 2019-02-20 19:57:10 -05:00
parent 49dbeb5cb2
commit 8f3010f04b
1 changed files with 2 additions and 15 deletions

View File

@ -1375,14 +1375,6 @@ UINT8 __fastcall m92ReadPort(UINT32 port)
return 0;
}
static void clear_pf_scroll(INT32 layer)
{
pf_control[layer][0] = 0; // scrolly
pf_control[layer][1] = 0; // "
pf_control[layer][4] = 0; // scrollx
pf_control[layer][5] = 0; // "
}
static void set_pf_info(INT32 layer, INT32 data)
{
struct _m92_layer *ptr = m92_layers[layer];
@ -1394,10 +1386,7 @@ static void set_pf_info(INT32 layer, INT32 data)
ptr->wide = (data & 0x04) ? 128 : 64;
}
int oldrowscroll = ptr->enable_rowscroll;
ptr->enable_rowscroll = data & 0x40;
if (ptr->enable_rowscroll != oldrowscroll)
clear_pf_scroll(layer); //clear scrollx/scrolly on change, fixes skewed background problems (f. ex. inthunt)
ptr->vram = (UINT16*)(DrvVidRAM + ((data & 0x03) * 0x4000));
}
@ -1429,7 +1418,7 @@ void __fastcall m92WritePort(UINT32 port, UINT8 data)
case 0x02:
case 0x03:
//m92_coincounter_w
//coin counter
return;
case 0x10: // ppan
@ -1447,7 +1436,6 @@ void __fastcall m92WritePort(UINT32 port, UINT8 data)
case 0x20:
// case 0x21:
// m92_bankswitch_w
if (m92_kludge != 1) { // lethalth
VezMapArea(0xa0000, 0xbffff, 0, DrvV33ROM + 0x100000 + (data&0x7)*0x10000);
VezMapArea(0xa0000, 0xbffff, 2, DrvV33ROM + 0x100000 + (data&0x7)*0x10000);
@ -1521,7 +1509,6 @@ UINT8 __fastcall m92SndReadByte(UINT32 address)
return BurnYM2151Read();
case 0xa8044:
//VezSetIRQLineAndVector(NEC_INPUT_LINE_INTP1, 0xff/*default*/, CPU_IRQSTATUS_NONE);
return sound_latch[0];
case 0xa8045:
@ -1937,7 +1924,7 @@ static void draw_layer_byline(INT32 start, INT32 finish, INT32 layer, INT32 forc
INT32 wide = ptr->wide;
INT32 scrolly = (ptr->scrolly + 136 - nScreenOffsets[1]) & 0x1ff;
INT32 scrollx = ((ptr->scrollx - nScreenOffsets[0]) - (2 * layer - ((wide & 0x80)<<1))) + 80;
INT32 scrollx = ((((ptr->enable_rowscroll) ? 0 : ptr->scrollx) - nScreenOffsets[0]) - (2 * layer - ((wide & 0x80)<<1))) + 80;
const UINT16 transmask[3][3][2] = { // layer, group, value
{ { 0xffff, 0x0001 }, { 0x00ff, 0xff01 }, { 0x0001, 0xffff } },