summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mame/misc/flower.cpp34
1 files changed, 14 insertions, 20 deletions
diff --git a/src/mame/misc/flower.cpp b/src/mame/misc/flower.cpp
index 06244671fd5..836d16c29df 100644
--- a/src/mame/misc/flower.cpp
+++ b/src/mame/misc/flower.cpp
@@ -5,7 +5,7 @@
Flower (c) 1986 Clarue (licensed to Komax/Sega)
driver by Angelo Salese,
- original "wiped off due of not anymore licenseable" driver by insideoutboy.
+ original "wiped off due of not anymore licensable" driver by insideoutboy.
TODO:
- priority might be wrong in some places (title screen stars around the
@@ -30,7 +30,7 @@ There is a PCB picture that shows two stickers, the first says
FLOWER CHIP PLACEMENT
XTAL: 18.4320 MHz
-USES THREE Z80A CPU'S
+USES THREE Z80A (or D780C-1) CPU'S
CHIP # POSITION TYPE
------------------------
@@ -130,8 +130,8 @@ private:
void bgvram_w(offs_t offset, u8 data);
void fgvram_w(offs_t offset, u8 data);
void txvram_w(offs_t offset, u8 data);
- void master_irq_enable_w(int state);
- void slave_irq_enable_w(int state);
+ void master_irq_ack_w(int state);
+ void slave_irq_ack_w(int state);
void vblank_irq_w(int state);
TILE_GET_INFO_MEMBER(get_tx_tile_info);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
@@ -165,8 +165,6 @@ private:
void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect);
- bool m_master_irq_enable = false;
- bool m_slave_irq_enable = false;
bool m_audio_nmi_enable = false;
bool m_flip_screen = false;
tilemap_t *m_bg_tilemap = nullptr;
@@ -219,8 +217,6 @@ void flower_state::video_start()
m_fg_tilemap->set_transparent_pen(15);
m_tx_tilemap->set_transparent_pen(3);
- save_item(NAME(m_master_irq_enable));
- save_item(NAME(m_slave_irq_enable));
save_item(NAME(m_flip_screen));
m_bg_tilemap->set_scrolldx(16, 0);
@@ -493,39 +489,37 @@ void flower_state::machine_reset()
m_audio_nmi_enable = false;
}
-void flower_state::master_irq_enable_w(int state)
+void flower_state::master_irq_ack_w(int state)
{
- m_master_irq_enable = state;
if (!state)
m_mastercpu->set_input_line(0, CLEAR_LINE);
}
-void flower_state::slave_irq_enable_w(int state)
+void flower_state::slave_irq_ack_w(int state)
{
- m_slave_irq_enable = state;
if (!state)
m_slavecpu->set_input_line(0, CLEAR_LINE);
}
void flower_state::vblank_irq_w(int state)
{
- if (state && m_master_irq_enable)
+ if (state)
+ {
m_mastercpu->set_input_line(0, ASSERT_LINE);
-
- if (state && m_slave_irq_enable)
m_slavecpu->set_input_line(0, ASSERT_LINE);
+ }
}
void flower_state::flower(machine_config &config)
{
- Z80(config, m_mastercpu, MASTER_CLOCK / 4); // divider unknown
+ Z80(config, m_mastercpu, MASTER_CLOCK / 6); // divider unknown
m_mastercpu->set_addrmap(AS_PROGRAM, &flower_state::shared_map);
- Z80(config, m_slavecpu, MASTER_CLOCK / 4); // divider unknown
+ Z80(config, m_slavecpu, MASTER_CLOCK / 6); // divider unknown
m_slavecpu->set_addrmap(AS_PROGRAM, &flower_state::shared_map);
- Z80(config, m_audiocpu, MASTER_CLOCK / 4); // divider unknown
+ Z80(config, m_audiocpu, MASTER_CLOCK / 6); // divider unknown
m_audiocpu->set_addrmap(AS_PROGRAM, &flower_state::audio_map);
m_audiocpu->set_periodic_int(FUNC(flower_state::irq0_line_hold), attotime::from_hz(90));
@@ -534,8 +528,8 @@ void flower_state::flower(machine_config &config)
ls259_device &outlatch(LS259(config, "outlatch")); // M74LS259P @ 11K
outlatch.q_out_cb<0>().set_nop();
outlatch.q_out_cb<1>().set(FUNC(flower_state::flipscreen_w));
- outlatch.q_out_cb<2>().set(FUNC(flower_state::master_irq_enable_w));
- outlatch.q_out_cb<3>().set(FUNC(flower_state::slave_irq_enable_w));
+ outlatch.q_out_cb<2>().set(FUNC(flower_state::master_irq_ack_w));
+ outlatch.q_out_cb<3>().set(FUNC(flower_state::slave_irq_ack_w));
outlatch.q_out_cb<4>().set(FUNC(flower_state::coin_counter_w));
outlatch.q_out_cb<5>().set_nop();