irem m92: fix background glitching in level2 of r-type leo

This commit is contained in:
dinkc64 2014-12-07 09:42:31 +00:00
parent 7aaa386eb2
commit df92d0f520
2 changed files with 7 additions and 33 deletions

View File

@ -1435,7 +1435,6 @@ void __fastcall m92WritePort(UINT32 port, UINT8 data)
case 0x9c: pf_control[3][4] = data; set_pf_info(2, data); return;
case 0x9d: pf_control[3][5] = data; return;
case 0x9e: pf_control[3][6] = data;
m92_raster_irq_position = ((pf_control[3][7]<<8) | pf_control[3][6]) - 128;
return;
case 0x9f: pf_control[3][7] = data;
m92_raster_irq_position = ((pf_control[3][7]<<8) | pf_control[3][6]) - 128;
@ -1784,6 +1783,7 @@ static INT32 DrvExit()
nPrevScreenPos = 0;
m92_kludge = 0;
m92_raster_irq_position = 0;
nScreenOffsets[0] = nScreenOffsets[1] = 0;
return 0;
@ -2053,7 +2053,6 @@ static void scanline_interrupts(INT32 prev, INT32 segment, INT32 scanline)
VezSetIRQLineAndVector(0, (m92_irq_vectorbase + 0)/4, VEZ_IRQSTATUS_ACK);
nCyclesDone[0] += VezRun(10);
VezSetIRQLineAndVector(0, (m92_irq_vectorbase + 0)/4, VEZ_IRQSTATUS_NONE);
}
}
@ -2067,7 +2066,7 @@ static INT32 DrvFrame()
compile_inputs();
INT32 multiplier=3;
INT32 multiplier=8;
nInterleave = 256*multiplier;
// overclocking...
@ -2076,10 +2075,6 @@ static INT32 DrvFrame()
nCyclesTotal[1] = (INT32)((INT64)(7159090 / 60) * nBurnCPUSpeedAdjust / 0x0100);
nCyclesDone[0] = nCyclesDone[1] = 0;
if (pBurnSoundOut) {
memset (pBurnSoundOut, 0, nBurnSoundLen * 2 * sizeof(INT16));
}
for (INT32 i = 0; i < nInterleave; i++)
{
VezOpen(0);

View File

@ -303,40 +303,19 @@ INT32 iremga20_scan(INT32 device, INT32 nAction, INT32 *pnMin)
if (device > nNumChips) bprintf(PRINT_ERROR, _T("iremga20_scan called with invalid chip %x\n"), device);
#endif
chip = &chips[device];
struct BurnArea ba;
char szName[16];
if ((nAction & ACB_DRIVER_DATA) == 0) {
return 1;
}
if (pnMin != NULL) {
*pnMin = 0x029678;
}
chip = &chips[device];
for (INT32 i = 0; i < MAX_GA20; i++)
{
sprintf(szName, "IREM GA20 #%d Regs", device);
ba.Data = &chip->regs;
ba.nLen = 0x40 * sizeof(UINT16);
ba.nAddress = 0;
ba.szName = szName;
BurnAcb(&ba);
sprintf(szName, "IREM GA20 #%d channels", device);
ba.Data = &chip->channel;
ba.nLen = 4 * sizeof(IremGA20_channel_def);
ba.nAddress = 0;
ba.szName = szName;
BurnAcb(&ba);
if ((nAction & ACB_DRIVER_DATA)) {
SCAN_VAR(chip->channel);
SCAN_VAR(chip->regs);
SCAN_VAR(chip->frequency);
SCAN_VAR(chip->gain);
SCAN_VAR(chip->output_dir);
}
return 0;
}