summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2018-08-29 00:03:18 -0400
committer AJR <ajrhacker@users.noreply.github.com>2018-08-29 00:03:41 -0400
commit67290d021b3d86a49e8a6ab99964a06a36dbf196 (patch)
tree15bd6e0b0d4a3ff9f6307cdbdd2d21f330ec309a
parent60e73888176279c82bba44407066d5eff778d5a0 (diff)
apple3.cpp: Clean up driver a little: fewer MCFG overrides and scan timers, more XTAL clocks and VBL callbacks (nw)
-rw-r--r--src/mame/drivers/apple3.cpp27
-rw-r--r--src/mame/includes/apple3.h9
-rw-r--r--src/mame/machine/apple3.cpp14
-rw-r--r--src/mame/video/apple3.cpp4
4 files changed, 19 insertions, 35 deletions
diff --git a/src/mame/drivers/apple3.cpp b/src/mame/drivers/apple3.cpp
index 98672ccd89c..083cda9b91a 100644
--- a/src/mame/drivers/apple3.cpp
+++ b/src/mame/drivers/apple3.cpp
@@ -57,7 +57,7 @@ FLOPPY_FORMATS_END
MACHINE_CONFIG_START(apple3_state::apple3)
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M6502, 2000000) /* 2 MHz */
+ MCFG_DEVICE_ADD("maincpu", M6502, 14.318181_MHz_XTAL / 7) /* 2 MHz */
MCFG_M6502_SYNC_CALLBACK(WRITELINE(*this, apple3_state, apple3_sync_w))
MCFG_DEVICE_PROGRAM_MAP(apple3_map)
MCFG_QUANTUM_TIME(attotime::from_hz(60))
@@ -66,24 +66,17 @@ MACHINE_CONFIG_START(apple3_state::apple3)
mainirq.output_handler().set_inputline(m_maincpu, m6502_device::IRQ_LINE);
mainirq.output_handler().append(m_via[1], FUNC(via6522_device::write_pa7)).invert(); // this is active low
- MCFG_MACHINE_RESET_OVERRIDE(apple3_state, apple3 )
-
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
- MCFG_SCREEN_SIZE((280*2)+32, 224)
- MCFG_SCREEN_VISIBLE_AREA(0, (280*2)-1,0,192-1)
- MCFG_SCREEN_UPDATE_DRIVER(apple3_state, screen_update_apple3)
- MCFG_SCREEN_PALETTE("palette")
+ SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
+ m_screen->set_raw(14.318181_MHz_XTAL, 910, 0, 560, 262, 0, 192);
+ m_screen->set_screen_update(FUNC(apple3_state::screen_update));
+ m_screen->set_palette("palette");
+ m_screen->screen_vblank().set(m_via[1], FUNC(via6522_device::write_cb1));
+ m_screen->screen_vblank().append(m_via[1], FUNC(via6522_device::write_cb2));
MCFG_PALETTE_ADD("palette", 32)
MCFG_PALETTE_INIT_OWNER(apple3_state, apple3 )
- MCFG_VIDEO_START_OVERRIDE(apple3_state, apple3 )
-
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", apple3_state, apple3_interrupt, "screen", 0, 1)
-
/* keyboard controller */
MCFG_DEVICE_ADD("ay3600", AY3600, 0)
MCFG_AY3600_MATRIX_X0(IOPORT("X0"))
@@ -138,15 +131,15 @@ MACHINE_CONFIG_START(apple3_state::apple3)
MCFG_TIMER_DRIVER_ADD("pdltimer", apple3_state, paddle_timer);
/* rtc */
- MCFG_DEVICE_ADD("rtc", MM58167, XTAL(32'768))
+ MCFG_DEVICE_ADD("rtc", MM58167, 32.768_kHz_XTAL)
/* via */
- VIA6522(config, m_via[0], 1000000);
+ VIA6522(config, m_via[0], 14.318181_MHz_XTAL / 14);
m_via[0]->writepa_handler().set(FUNC(apple3_state::apple3_via_0_out_a));
m_via[0]->writepb_handler().set(FUNC(apple3_state::apple3_via_0_out_b));
m_via[0]->irq_handler().set("mainirq", FUNC(input_merger_device::in_w<2>));
- VIA6522(config, m_via[1], 1000000);
+ VIA6522(config, m_via[1], 14.318181_MHz_XTAL / 14);
m_via[1]->writepa_handler().set(FUNC(apple3_state::apple3_via_1_out_a));
m_via[1]->writepb_handler().set(FUNC(apple3_state::apple3_via_1_out_b));
m_via[1]->irq_handler().set("mainirq", FUNC(input_merger_device::in_w<1>));
diff --git a/src/mame/includes/apple3.h b/src/mame/includes/apple3.h
index 840ee20dd62..36e2c62702c 100644
--- a/src/mame/includes/apple3.h
+++ b/src/mame/includes/apple3.h
@@ -92,10 +92,9 @@ public:
DECLARE_READ8_MEMBER(apple3_c0xx_r);
DECLARE_WRITE8_MEMBER(apple3_c0xx_w);
void init_apple3();
- DECLARE_MACHINE_RESET(apple3);
- DECLARE_VIDEO_START(apple3);
- uint32_t screen_update_apple3(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- TIMER_DEVICE_CALLBACK_MEMBER(apple3_interrupt);
+ virtual void machine_reset() override;
+ virtual void video_start() override;
+ uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_CALLBACK_MEMBER(scanstart_cb);
TIMER_CALLBACK_MEMBER(scanend_cb);
DECLARE_WRITE8_MEMBER(apple3_via_0_out_a);
@@ -119,7 +118,7 @@ public:
DECLARE_READ_LINE_MEMBER(ay3600_shift_r);
DECLARE_READ_LINE_MEMBER(ay3600_control_r);
DECLARE_WRITE_LINE_MEMBER(ay3600_data_ready_w);
- void apple3_postload();
+ virtual void device_post_load() override;
TIMER_DEVICE_CALLBACK_MEMBER(paddle_timer);
void pdl_handler(int offset);
DECLARE_FLOPPY_FORMATS( floppy_formats );
diff --git a/src/mame/machine/apple3.cpp b/src/mame/machine/apple3.cpp
index 834a82dc349..e9e6a43a503 100644
--- a/src/mame/machine/apple3.cpp
+++ b/src/mame/machine/apple3.cpp
@@ -469,12 +469,6 @@ WRITE8_MEMBER(apple3_state::apple3_c0xx_w)
}
}
-TIMER_DEVICE_CALLBACK_MEMBER(apple3_state::apple3_interrupt)
-{
- m_via[1]->write_cb1(m_screen->vblank());
- m_via[1]->write_cb2(m_screen->vblank());
-}
-
uint8_t *apple3_state::apple3_bankaddr(uint16_t bank, offs_t offset)
{
if (bank != (uint16_t) ~0)
@@ -510,7 +504,7 @@ void apple3_state::apple3_update_memory()
logerror("apple3_update_memory(): via_0_b=0x%02x via_1_a=0x0x%02x\n", m_via_0_b, m_via_1_a);
}
- m_maincpu->set_unscaled_clock((m_via_0_a & ENV_SLOWSPEED) ? 1021800 : 2000000);
+ m_maincpu->set_unscaled_clock(14.318181_MHz_XTAL / ((m_via_0_a & ENV_SLOWSPEED) ? 14 : 7));
/* bank 2 (0100-01FF) */
if (!(m_via_0_a & ENV_STACK1XX))
@@ -621,7 +615,7 @@ WRITE8_MEMBER(apple3_state::apple3_via_1_out_b)
}
-MACHINE_RESET_MEMBER(apple3_state,apple3)
+void apple3_state::machine_reset()
{
m_indir_bank = 0;
m_sync = false;
@@ -729,11 +723,9 @@ void apple3_state::init_apple3()
save_item(NAME(m_vb));
save_item(NAME(m_vc));
save_item(NAME(m_smoothscr));
-
- machine().save().register_postload(save_prepost_delegate(FUNC(apple3_state::apple3_postload), this));
}
-void apple3_state::apple3_postload()
+void apple3_state::device_post_load()
{
apple3_update_memory();
}
diff --git a/src/mame/video/apple3.cpp b/src/mame/video/apple3.cpp
index cfc4a675c5b..7ccd684e97a 100644
--- a/src/mame/video/apple3.cpp
+++ b/src/mame/video/apple3.cpp
@@ -118,7 +118,7 @@ void apple3_state::apple3_write_charmem()
-VIDEO_START_MEMBER(apple3_state,apple3)
+void apple3_state::video_start()
{
int i, j;
uint32_t v;
@@ -486,7 +486,7 @@ void apple3_state::graphics_chires(bitmap_ind16 &bitmap, const rectangle &clipre
-uint32_t apple3_state::screen_update_apple3(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+uint32_t apple3_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
// printf("gfx mode %x\n", m_flags & (VAR_VM3|VAR_VM1|VAR_VM0));