From 236dd85f8e2a72a1148db25336eb5aa7e1326abe Mon Sep 17 00:00:00 2001 From: AJR Date: Thu, 29 Nov 2018 17:15:57 -0500 Subject: beathead.cpp, foodf.cpp, relief.cpp: Disentangle drivers from atarigen_state (nw) --- src/mame/drivers/beathead.cpp | 3 --- src/mame/drivers/foodf.cpp | 35 ++++++++++++++++++++++++++++------- src/mame/drivers/relief.cpp | 30 ++++++++---------------------- src/mame/includes/beathead.h | 18 ++++++++++++------ src/mame/includes/foodf.h | 23 +++++++++++++++++++---- src/mame/includes/relief.h | 12 ++++++++---- src/mame/video/foodf.cpp | 4 ++-- src/mame/video/jaguar.cpp | 1 - src/mame/video/relief.cpp | 1 - src/mame/video/thunderj.cpp | 1 - 10 files changed, 77 insertions(+), 51 deletions(-) diff --git a/src/mame/drivers/beathead.cpp b/src/mame/drivers/beathead.cpp index 9075c4bc8a6..f8bbe4363a1 100644 --- a/src/mame/drivers/beathead.cpp +++ b/src/mame/drivers/beathead.cpp @@ -142,9 +142,6 @@ TIMER_DEVICE_CALLBACK_MEMBER(beathead_state::scanline_callback) void beathead_state::machine_reset() { - /* reset the common subsystems */ - atarigen_state::machine_reset(); - /* the code is temporarily mapped at 0 at startup */ /* just copying the first 0x40 bytes is sufficient */ memcpy(m_ram_base, m_rom_base, 0x40); diff --git a/src/mame/drivers/foodf.cpp b/src/mame/drivers/foodf.cpp index ff3c8e39f7c..0ef3540ae20 100644 --- a/src/mame/drivers/foodf.cpp +++ b/src/mame/drivers/foodf.cpp @@ -79,7 +79,6 @@ #include "includes/foodf.h" #include "cpu/m68000/m68000.h" #include "machine/adc0808.h" -#include "machine/atarigen.h" #include "machine/watchdog.h" #include "sound/pokey.h" #include "speaker.h" @@ -127,7 +126,8 @@ TIMER_DEVICE_CALLBACK_MEMBER(foodf_state::scanline_update_timer) mystery yet */ /* INT 1 is on 32V */ - scanline_int_gen(*m_maincpu); + m_scanline_int_state = true; + update_interrupts(); /* advance to the next interrupt */ scanline += 64; @@ -139,9 +139,24 @@ TIMER_DEVICE_CALLBACK_MEMBER(foodf_state::scanline_update_timer) } +WRITE_LINE_MEMBER(foodf_state::video_int_write_line) +{ + if (state) + { + m_video_int_state = true; + update_interrupts(); + } +} + + void foodf_state::machine_start() { - atarigen_state::machine_start(); + m_scanline_int_state = false; + m_video_int_state = false; + + save_item(NAME(m_scanline_int_state)); + save_item(NAME(m_video_int_state)); + save_item(NAME(m_playfield_flip)); m_leds.resolve(); } @@ -165,10 +180,16 @@ WRITE8_MEMBER(foodf_state::digital_w) m_nvram->store(data & 0x02); - if (!(data & 0x04)) - scanline_int_ack_w(space,0,0); - if (!(data & 0x08)) - video_int_ack_w(space,0,0); + if (!BIT(data, 2)) + { + m_scanline_int_state = false; + update_interrupts(); + } + if (!BIT(data, 3)) + { + m_video_int_state = false; + update_interrupts(); + } m_leds[0] = BIT(data, 4); m_leds[1] = BIT(data, 5); diff --git a/src/mame/drivers/relief.cpp b/src/mame/drivers/relief.cpp index 06c19a40ccc..05ec9f00b35 100644 --- a/src/mame/drivers/relief.cpp +++ b/src/mame/drivers/relief.cpp @@ -27,22 +27,10 @@ #include "machine/watchdog.h" #include "sound/okim6295.h" #include "sound/ym2413.h" +#include "emupal.h" #include "speaker.h" -/************************************* - * - * Interrupt handling - * - *************************************/ - -void relief_state::update_interrupts() -{ - m_maincpu->set_input_line(4, m_scanline_int_state ? ASSERT_LINE : CLEAR_LINE); -} - - - /************************************* * * Initialization @@ -51,8 +39,6 @@ void relief_state::update_interrupts() void relief_state::machine_reset() { - atarigen_state::machine_reset(); - m_adpcm_bank = 0; m_okibank->set_entry(m_adpcm_bank); m_ym2413_volume = 15; @@ -70,7 +56,7 @@ void relief_state::machine_reset() READ16_MEMBER(relief_state::special_port2_r) { int result = ioport("260010")->read(); - if (!(result & 0x0080) || get_hblank(*m_screen)) result ^= 0x0001; + if (!(result & 0x0080) || m_screen->hblank()) result ^= 0x0001; return result; } @@ -136,7 +122,7 @@ void relief_state::main_map(address_map &map) map(0x260010, 0x260011).r(FUNC(relief_state::special_port2_r)); map(0x260012, 0x260013).portr("260012"); map(0x2a0000, 0x2a0001).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); - map(0x3e0000, 0x3e0fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x3e0000, 0x3e0fff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); map(0x3effc0, 0x3effff).rw(m_vad, FUNC(atari_vad_device::control_read), FUNC(atari_vad_device::control_write)); map(0x3f0000, 0x3f1fff).ram().w(m_vad, FUNC(atari_vad_device::playfield2_latched_msb_w)).share("vad:playfield2"); map(0x3f2000, 0x3f3fff).ram().w(m_vad, FUNC(atari_vad_device::playfield_latched_lsb_w)).share("vad:playfield"); @@ -272,7 +258,7 @@ GFXDECODE_END MACHINE_CONFIG_START(relief_state::relief) /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, ATARI_CLOCK_14MHz/2) + MCFG_DEVICE_ADD("maincpu", M68000, 14.318181_MHz_XTAL/2) MCFG_DEVICE_PROGRAM_MAP(main_map) EEPROM_2816(config, "eeprom").lock_after_write(true); @@ -284,7 +270,7 @@ MACHINE_CONFIG_START(relief_state::relief) MCFG_PALETTE_ADD("palette", 2048) MCFG_PALETTE_FORMAT(IRRRRRGGGGGBBBBB) - MCFG_ATARI_VAD_ADD("vad", "screen", WRITELINE(*this, relief_state, scanline_int_write_line)) + MCFG_ATARI_VAD_ADD("vad", "screen", INPUTLINE("maincpu", M68K_IRQ_4)) MCFG_ATARI_VAD_PLAYFIELD(relief_state, "gfxdecode", get_playfield_tile_info) MCFG_ATARI_VAD_PLAYFIELD2(relief_state, "gfxdecode", get_playfield2_tile_info) MCFG_ATARI_VAD_MOB(relief_state::s_mob_config, "gfxdecode") @@ -293,18 +279,18 @@ MACHINE_CONFIG_START(relief_state::relief) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) /* note: these parameters are from published specs, not derived */ /* the board uses a VAD chip to generate video signals */ - MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240) + MCFG_SCREEN_RAW_PARAMS(14.318181_MHz_XTAL/2, 456, 0, 336, 262, 0, 240) MCFG_SCREEN_UPDATE_DRIVER(relief_state, screen_update_relief) MCFG_SCREEN_PALETTE("palette") /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("oki", OKIM6295, ATARI_CLOCK_14MHz/4/3, okim6295_device::PIN7_LOW) + MCFG_DEVICE_ADD("oki", OKIM6295, 14.318181_MHz_XTAL/4/3, okim6295_device::PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MCFG_DEVICE_ADDRESS_MAP(0, oki_map) - MCFG_DEVICE_ADD("ymsnd", YM2413, ATARI_CLOCK_14MHz/4) + MCFG_DEVICE_ADD("ymsnd", YM2413, 14.318181_MHz_XTAL/4) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END diff --git a/src/mame/includes/beathead.h b/src/mame/includes/beathead.h index 584417e448d..639f23c5480 100644 --- a/src/mame/includes/beathead.h +++ b/src/mame/includes/beathead.h @@ -10,16 +10,20 @@ #pragma once -#include "machine/atarigen.h" #include "machine/timer.h" #include "cpu/asap/asap.h" #include "audio/atarijsa.h" +#include "emupal.h" +#include "screen.h" -class beathead_state : public atarigen_state +class beathead_state : public driver_device { public: beathead_state(const machine_config &mconfig, device_type type, const char *tag) : - atarigen_state(mconfig, type, tag), + driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_palette(*this, "palette"), + m_screen(*this, "screen"), m_jsa(*this, "jsa"), m_scan_timer(*this, "scan_timer"), m_videoram(*this, "videoram"), @@ -33,7 +37,7 @@ public: protected: // in drivers/beathead.c - virtual void update_interrupts() override; + void update_interrupts(); DECLARE_WRITE32_MEMBER( interrupt_control_w ); DECLARE_READ32_MEMBER( interrupt_control_r ); DECLARE_WRITE32_MEMBER( sound_reset_w ); @@ -58,6 +62,10 @@ protected: uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); private: + required_device m_maincpu; + required_device m_palette; + required_device m_screen; + required_device m_jsa; required_device m_scan_timer; @@ -81,8 +89,6 @@ private: uint8_t m_irq_line_state; uint8_t m_irq_enable[3]; uint8_t m_irq_state[3]; - - uint8_t m_eeprom_enabled; }; #endif // MAME_INCLUDES_BEATHEAD_H diff --git a/src/mame/includes/foodf.h b/src/mame/includes/foodf.h index 3272a4b1337..fe615016523 100644 --- a/src/mame/includes/foodf.h +++ b/src/mame/includes/foodf.h @@ -10,16 +10,22 @@ #pragma once -#include "machine/atarigen.h" #include "machine/timer.h" #include "machine/x2212.h" +#include "emupal.h" +#include "screen.h" -class foodf_state : public atarigen_state +class foodf_state : public driver_device { public: foodf_state(const machine_config &mconfig, device_type type, const char *tag) : - atarigen_state(mconfig, type, tag), + driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), m_nvram(*this, "nvram"), + m_screen(*this, "screen"), + m_palette(*this, "palette"), + m_paletteram(*this, "paletteram"), + m_gfxdecode(*this, "gfxdecode"), m_playfield_tilemap(*this, "playfield"), m_scan_timer(*this, "scan_timer"), m_spriteram(*this, "spriteram"), @@ -32,7 +38,7 @@ private: virtual void machine_start() override; virtual void machine_reset() override; virtual void video_start() override; - virtual void update_interrupts() override; + void update_interrupts(); DECLARE_WRITE16_MEMBER(nvram_recall_w); DECLARE_WRITE8_MEMBER(digital_w); DECLARE_WRITE16_MEMBER(foodf_paletteram_w); @@ -41,10 +47,19 @@ private: TILE_GET_INFO_MEMBER(get_playfield_tile_info); uint32_t screen_update_foodf(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); TIMER_DEVICE_CALLBACK_MEMBER(scanline_update_timer); + DECLARE_WRITE_LINE_MEMBER(video_int_write_line); void main_map(address_map &map); + bool m_scanline_int_state; + bool m_video_int_state; + + required_device m_maincpu; required_device m_nvram; + required_device m_screen; + required_device m_palette; + required_shared_ptr m_paletteram; + required_device m_gfxdecode; required_device m_playfield_tilemap; required_device m_scan_timer; diff --git a/src/mame/includes/relief.h b/src/mame/includes/relief.h index 16886a825af..efa82079070 100644 --- a/src/mame/includes/relief.h +++ b/src/mame/includes/relief.h @@ -10,18 +10,20 @@ #pragma once -#include "machine/atarigen.h" #include "sound/okim6295.h" #include "sound/ym2413.h" #include "video/atarimo.h" #include "video/atarivad.h" #include "screen.h" -class relief_state : public atarigen_state +class relief_state : public driver_device { public: relief_state(const machine_config &mconfig, device_type type, const char *tag) : - atarigen_state(mconfig, type, tag), + driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_gfxdecode(*this, "gfxdecode"), + m_screen(*this, "screen"), m_vad(*this, "vad"), m_oki(*this, "oki"), m_ym2413(*this, "ymsnd"), @@ -35,7 +37,6 @@ public: private: virtual void machine_reset() override; virtual void video_start() override; - virtual void update_interrupts() override; DECLARE_READ16_MEMBER(special_port2_r); DECLARE_WRITE16_MEMBER(audio_control_w); DECLARE_WRITE16_MEMBER(audio_volume_w); @@ -46,6 +47,9 @@ private: void main_map(address_map &map); void oki_map(address_map &map); + required_device m_maincpu; + required_device m_gfxdecode; + required_device m_screen; required_device m_vad; required_device m_oki; required_device m_ym2413; diff --git a/src/mame/video/foodf.cpp b/src/mame/video/foodf.cpp index 4025a3ced60..b2ea49556b3 100644 --- a/src/mame/video/foodf.cpp +++ b/src/mame/video/foodf.cpp @@ -77,8 +77,8 @@ WRITE16_MEMBER(foodf_state::foodf_paletteram_w) { int newword, r, g, b, bit0, bit1, bit2; - COMBINE_DATA(&m_generic_paletteram_16[offset]); - newword = m_generic_paletteram_16[offset]; + COMBINE_DATA(&m_paletteram[offset]); + newword = m_paletteram[offset]; /* only the bottom 8 bits are used */ /* red component */ diff --git a/src/mame/video/jaguar.cpp b/src/mame/video/jaguar.cpp index a1152652168..9ad0746ceb6 100644 --- a/src/mame/video/jaguar.cpp +++ b/src/mame/video/jaguar.cpp @@ -137,7 +137,6 @@ ****************************************************************************/ #include "emu.h" -#include "machine/atarigen.h" #include "cpu/mips/mips1.h" #include "cpu/m68000/m68000.h" #include "includes/jaguar.h" diff --git a/src/mame/video/relief.cpp b/src/mame/video/relief.cpp index 26b344682ef..76ed4c60b1a 100644 --- a/src/mame/video/relief.cpp +++ b/src/mame/video/relief.cpp @@ -7,7 +7,6 @@ ****************************************************************************/ #include "emu.h" -#include "machine/atarigen.h" #include "includes/relief.h" diff --git a/src/mame/video/thunderj.cpp b/src/mame/video/thunderj.cpp index e51c58d899f..63dd8b30793 100644 --- a/src/mame/video/thunderj.cpp +++ b/src/mame/video/thunderj.cpp @@ -7,7 +7,6 @@ ****************************************************************************/ #include "emu.h" -#include "machine/atarigen.h" #include "includes/thunderj.h" -- cgit v1.2.3