mirror of
https://github.com/holub/mame
synced 2025-07-05 18:08:04 +03:00
mustache: game runs in IM1(no irq vector used), irq stays high during vblank, old regression from 0a7b50a005
(nw)
This commit is contained in:
parent
39bde3e473
commit
ae1aa998a3
@ -231,10 +231,10 @@ TIMER_DEVICE_CALLBACK_MEMBER(darkmist_state::scanline)
|
|||||||
int scanline = param;
|
int scanline = param;
|
||||||
|
|
||||||
if(scanline == 240) // vblank-out irq
|
if(scanline == 240) // vblank-out irq
|
||||||
m_maincpu->set_input_line_and_vector(0, HOLD_LINE,0x10); /* Z80 - RST 10h */
|
m_maincpu->set_input_line_and_vector(0, HOLD_LINE,0xd7); /* Z80 - RST 10h */
|
||||||
|
|
||||||
if(scanline == 0) // vblank-in irq
|
if(scanline == 0) // vblank-in irq
|
||||||
m_maincpu->set_input_line_and_vector(0, HOLD_LINE,0x08); /* Z80 - RST 08h */
|
m_maincpu->set_input_line_and_vector(0, HOLD_LINE,0xcf); /* Z80 - RST 08h */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -359,11 +359,11 @@ TIMER_DEVICE_CALLBACK_MEMBER(metlfrzr_state::scanline)
|
|||||||
int scanline = param;
|
int scanline = param;
|
||||||
|
|
||||||
if(scanline == 240) // vblank-out irq
|
if(scanline == 240) // vblank-out irq
|
||||||
m_maincpu->set_input_line_and_vector(0, HOLD_LINE,0x10); /* Z80 - RST 10h */
|
m_maincpu->set_input_line_and_vector(0, HOLD_LINE,0xd7); /* Z80 - RST 10h */
|
||||||
|
|
||||||
// TODO: check this irq.
|
// TODO: check this irq.
|
||||||
if(scanline == 0) // vblank-in irq
|
if(scanline == 0) // vblank-in irq
|
||||||
m_maincpu->set_input_line_and_vector(0, HOLD_LINE,0x08); /* Z80 - RST 08h */
|
m_maincpu->set_input_line_and_vector(0, HOLD_LINE,0xcf); /* Z80 - RST 08h */
|
||||||
}
|
}
|
||||||
|
|
||||||
void metlfrzr_state::metlfrzr(machine_config &config)
|
void metlfrzr_state::metlfrzr(machine_config &config)
|
||||||
|
@ -166,17 +166,6 @@ static GFXDECODE_START( gfx_mustache )
|
|||||||
GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 0x80, 8 )
|
GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 0x80, 8 )
|
||||||
GFXDECODE_END
|
GFXDECODE_END
|
||||||
|
|
||||||
TIMER_DEVICE_CALLBACK_MEMBER(mustache_state::scanline)
|
|
||||||
{
|
|
||||||
int scanline = param;
|
|
||||||
|
|
||||||
if(scanline == 240) // vblank-out irq
|
|
||||||
m_maincpu->set_input_line_and_vector(0, HOLD_LINE,0x10); /* Z80 - RST 10h */
|
|
||||||
|
|
||||||
if(scanline == 0) // vblank-in irq
|
|
||||||
m_maincpu->set_input_line_and_vector(0, HOLD_LINE,0x08); /* Z80 - RST 08h */
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void mustache_state::mustache(machine_config &config)
|
void mustache_state::mustache(machine_config &config)
|
||||||
@ -185,7 +174,6 @@ void mustache_state::mustache(machine_config &config)
|
|||||||
Z80(config, m_maincpu, CPU_CLOCK);
|
Z80(config, m_maincpu, CPU_CLOCK);
|
||||||
m_maincpu->set_addrmap(AS_PROGRAM, &mustache_state::memmap);
|
m_maincpu->set_addrmap(AS_PROGRAM, &mustache_state::memmap);
|
||||||
m_maincpu->set_addrmap(AS_OPCODES, &mustache_state::decrypted_opcodes_map);
|
m_maincpu->set_addrmap(AS_OPCODES, &mustache_state::decrypted_opcodes_map);
|
||||||
TIMER(config, "scantimer").configure_scanline(FUNC(mustache_state::scanline), "screen", 0, 1);
|
|
||||||
|
|
||||||
SEI80BU(config, "sei80bu", 0).set_device_rom_tag("maincpu");
|
SEI80BU(config, "sei80bu", 0).set_device_rom_tag("maincpu");
|
||||||
|
|
||||||
@ -194,11 +182,12 @@ void mustache_state::mustache(machine_config &config)
|
|||||||
/* video hardware */
|
/* video hardware */
|
||||||
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
|
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
|
||||||
m_screen->set_refresh_hz(56.747);
|
m_screen->set_refresh_hz(56.747);
|
||||||
m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
|
m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500));
|
||||||
m_screen->set_size(32*8, 32*8);
|
m_screen->set_size(32*8, 32*8);
|
||||||
m_screen->set_visarea(1*8, 31*8-1, 0, 31*8-1);
|
m_screen->set_visarea(1*8, 31*8-1, 0, 31*8-1);
|
||||||
m_screen->set_screen_update(FUNC(mustache_state::screen_update));
|
m_screen->set_screen_update(FUNC(mustache_state::screen_update));
|
||||||
m_screen->set_palette(m_palette);
|
m_screen->set_palette(m_palette);
|
||||||
|
m_screen->screen_vblank().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
|
||||||
|
|
||||||
GFXDECODE(config, m_gfxdecode, m_palette, gfx_mustache);
|
GFXDECODE(config, m_gfxdecode, m_palette, gfx_mustache);
|
||||||
PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 256);
|
PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 256);
|
||||||
|
@ -57,7 +57,7 @@ void pc8401a_state::scan_keyboard()
|
|||||||
if (!m_key_strobe && strobe)
|
if (!m_key_strobe && strobe)
|
||||||
{
|
{
|
||||||
/* trigger interrupt */
|
/* trigger interrupt */
|
||||||
m_maincpu->set_input_line_and_vector(INPUT_LINE_IRQ0, ASSERT_LINE, 0x28); // Z80
|
m_maincpu->set_input_line_and_vector(INPUT_LINE_IRQ0, ASSERT_LINE, 0xef); // Z80 - RST 28h
|
||||||
logerror("INTERRUPT\n");
|
logerror("INTERRUPT\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -54,7 +54,6 @@ private:
|
|||||||
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect );
|
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect );
|
||||||
|
|
||||||
TIMER_DEVICE_CALLBACK_MEMBER(scanline);
|
|
||||||
void decrypted_opcodes_map(address_map &map);
|
void decrypted_opcodes_map(address_map &map);
|
||||||
void memmap(address_map &map);
|
void memmap(address_map &map);
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user