HACK: return 0xffff for the current program counter while fetching the vector as the segag80r protection currently relies on it. Reduce the number of extraneous reads that the segag80r protection performs. [smf]

This commit is contained in:
smf- 2016-12-11 09:22:21 +00:00
parent acc42e344d
commit b5f03f4ef9
2 changed files with 8 additions and 2 deletions

View File

@ -3126,6 +3126,8 @@ OP(op,ff) { rst(0x38);
void z80_device::take_nmi()
{
PRVPC = 0xffff; // HACK: segag80r protection kludge
/* Check if processor was halted */
leave_halt();
@ -3146,6 +3148,8 @@ void z80_device::take_interrupt()
{
int irq_vector;
PRVPC = 0xffff; // HACK: segag80r protection kludge
/* Check if processor was halted */
leave_halt();
@ -3230,6 +3234,8 @@ void z80_device::take_interrupt()
void nsc800_device::take_interrupt_nsc800()
{
PRVPC = 0xffff; // HACK: segag80r protection kludge
/* Check if processor was halted */
leave_halt();

View File

@ -172,8 +172,8 @@ offs_t segag80r_state::decrypt_offset(address_space &space, offs_t offset)
if ((uint16_t)pc == 0xffff || space.read_byte(pc) != 0x32)
return offset;
/* fetch the low byte of the address and munge it */
return (offset & 0xff00) | (*m_decrypt)(pc, space.read_byte(pc + 1));
/* munge the low byte of the address */
return (offset & 0xff00) | (*m_decrypt)(pc, offset & 0xff);
}
WRITE8_MEMBER(segag80r_state::mainram_w)