diff options
Diffstat (limited to 'src/mame/drivers/namcos21_de.cpp')
-rw-r--r-- | src/mame/drivers/namcos21_de.cpp | 89 |
1 files changed, 42 insertions, 47 deletions
diff --git a/src/mame/drivers/namcos21_de.cpp b/src/mame/drivers/namcos21_de.cpp index 175c9a517a6..a25b87a67c4 100644 --- a/src/mame/drivers/namcos21_de.cpp +++ b/src/mame/drivers/namcos21_de.cpp @@ -46,6 +46,7 @@ Driver's Eyes works, #include "video/namcos21_3d.h" #include "sound/ym2151.h" #include "sound/c140.h" +#include "emupal.h" // TODO: basic parameters to get 60.606060 Hz, x2 is for interlace #define MCFG_SCREEN_RAW_PARAMS_NAMCO480I \ @@ -88,24 +89,24 @@ private: required_device<palette_device> m_palette; required_device<screen_device> m_screen; required_memory_bank m_audiobank; - required_shared_ptr<uint8_t> m_mpDualPortRAM; + required_shared_ptr<uint8_t> m_dpram; required_device<namcos21_3d_device> m_namcos21_3d; required_device<namcos21_dsp_device> m_namcos21_dsp; uint16_t m_video_enable; - DECLARE_READ16_MEMBER(namcos21_video_enable_r); - DECLARE_WRITE16_MEMBER(namcos21_video_enable_w); + DECLARE_READ16_MEMBER(video_enable_r); + DECLARE_WRITE16_MEMBER(video_enable_w); - DECLARE_READ16_MEMBER(namcos2_68k_dualportram_word_r); - DECLARE_WRITE16_MEMBER(namcos2_68k_dualportram_word_w); - DECLARE_READ8_MEMBER(namcos2_dualportram_byte_r); - DECLARE_WRITE8_MEMBER(namcos2_dualportram_byte_w); + DECLARE_READ16_MEMBER(dpram_word_r); + DECLARE_WRITE16_MEMBER(dpram_word_w); + DECLARE_READ8_MEMBER(dpram_byte_r); + DECLARE_WRITE8_MEMBER(dpram_byte_w); - DECLARE_WRITE8_MEMBER( namcos2_68k_eeprom_w ); - DECLARE_READ8_MEMBER( namcos2_68k_eeprom_r ); + DECLARE_WRITE8_MEMBER(eeprom_w); + DECLARE_READ8_MEMBER(eeprom_r); - DECLARE_WRITE8_MEMBER( namcos2_sound_bankselect_w ); + DECLARE_WRITE8_MEMBER(sound_bankselect_w); DECLARE_WRITE8_MEMBER(sound_reset_w); DECLARE_WRITE8_MEMBER(system_reset_w); @@ -115,7 +116,7 @@ private: TIMER_DEVICE_CALLBACK_MEMBER(screen_scanline); - uint32_t screen_update_driveyes(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); void configure_c68_namcos21(machine_config &config); @@ -144,7 +145,7 @@ namco_de_pcbstack_device::namco_de_pcbstack_device(const machine_config &mconfig m_palette(*this, "palette"), m_screen(*this, "screen"), m_audiobank(*this, "audiobank"), - m_mpDualPortRAM(*this, "mpdualportram"), + m_dpram(*this, "dpram"), m_namcos21_3d(*this, "namcos21_3d"), m_namcos21_dsp(*this, "namcos21dsp") {} @@ -208,7 +209,7 @@ MACHINE_CONFIG_START(namco_de_pcbstack_device::device_add_mconfig) MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_RAW_PARAMS_NAMCO480I - MCFG_SCREEN_UPDATE_DRIVER(namco_de_pcbstack_device, screen_update_driveyes) + MCFG_SCREEN_UPDATE_DRIVER(namco_de_pcbstack_device, screen_update) MCFG_SCREEN_PALETTE("palette") MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_namcos21) @@ -222,7 +223,7 @@ MACHINE_CONFIG_START(namco_de_pcbstack_device::device_add_mconfig) m_namcos21_3d->set_framebuffer_size(496,480); NAMCO_C355SPR(config, m_c355spr, 0); - m_c355spr->set_palette_tag("palette"); + m_c355spr->set_screen(m_screen); m_c355spr->set_gfxdecode_tag("gfxdecode"); m_c355spr->set_is_namcofl(false); m_c355spr->set_tile_callback(namco_c355spr_device::c355_obj_code2tile_delegate()); @@ -243,7 +244,7 @@ MACHINE_CONFIG_START(namco_de_pcbstack_device::device_add_mconfig) MACHINE_CONFIG_END -uint32_t namco_de_pcbstack_device::screen_update_driveyes(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +uint32_t namco_de_pcbstack_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { //uint8_t *videoram = m_gpu_videoram.get(); int pivot = 3; @@ -271,17 +272,17 @@ uint32_t namco_de_pcbstack_device::screen_update_driveyes(screen_device &screen, } -READ16_MEMBER(namco_de_pcbstack_device::namcos21_video_enable_r) +READ16_MEMBER(namco_de_pcbstack_device::video_enable_r) { return m_video_enable; } -WRITE16_MEMBER(namco_de_pcbstack_device::namcos21_video_enable_w) +WRITE16_MEMBER(namco_de_pcbstack_device::video_enable_w) { COMBINE_DATA( &m_video_enable ); /* 0x40 = enable */ if( m_video_enable!=0 && m_video_enable!=0x40 ) { - logerror( "unexpected namcos21_video_enable_w=0x%x\n", m_video_enable ); + logerror( "unexpected video_enable_w=0x%x\n", m_video_enable ); } } @@ -289,27 +290,27 @@ WRITE16_MEMBER(namco_de_pcbstack_device::namcos21_video_enable_w) /* dual port ram memory handlers */ -READ16_MEMBER(namco_de_pcbstack_device::namcos2_68k_dualportram_word_r) +READ16_MEMBER(namco_de_pcbstack_device::dpram_word_r) { - return m_mpDualPortRAM[offset]; + return m_dpram[offset]; } -WRITE16_MEMBER(namco_de_pcbstack_device::namcos2_68k_dualportram_word_w) +WRITE16_MEMBER(namco_de_pcbstack_device::dpram_word_w) { if( ACCESSING_BITS_0_7 ) { - m_mpDualPortRAM[offset] = data&0xff; + m_dpram[offset] = data&0xff; } } -READ8_MEMBER(namco_de_pcbstack_device::namcos2_dualportram_byte_r) +READ8_MEMBER(namco_de_pcbstack_device::dpram_byte_r) { - return m_mpDualPortRAM[offset]; + return m_dpram[offset]; } -WRITE8_MEMBER(namco_de_pcbstack_device::namcos2_dualportram_byte_w) +WRITE8_MEMBER(namco_de_pcbstack_device::dpram_byte_w) { - m_mpDualPortRAM[offset] = data; + m_dpram[offset] = data; } /*************************************************************/ @@ -322,12 +323,12 @@ void namco_de_pcbstack_device::sound_map(address_map &map) map(0x3000, 0x3003).nopw(); /* ? */ map(0x4000, 0x4001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); map(0x5000, 0x6fff).rw(m_c140, FUNC(c140_device::c140_r), FUNC(c140_device::c140_w)); - map(0x7000, 0x77ff).rw(FUNC(namco_de_pcbstack_device::namcos2_dualportram_byte_r), FUNC(namco_de_pcbstack_device::namcos2_dualportram_byte_w)).share("mpdualportram"); - map(0x7800, 0x7fff).rw(FUNC(namco_de_pcbstack_device::namcos2_dualportram_byte_r), FUNC(namco_de_pcbstack_device::namcos2_dualportram_byte_w)); /* mirror */ + map(0x7000, 0x77ff).rw(FUNC(namco_de_pcbstack_device::dpram_byte_r), FUNC(namco_de_pcbstack_device::dpram_byte_w)).share("dpram"); + map(0x7800, 0x7fff).rw(FUNC(namco_de_pcbstack_device::dpram_byte_r), FUNC(namco_de_pcbstack_device::dpram_byte_w)); /* mirror */ map(0x8000, 0x9fff).ram(); map(0xa000, 0xbfff).nopw(); /* amplifier enable on 1st write */ map(0xc000, 0xffff).nopw(); /* avoid debug log noise; games write frequently to 0xe000 */ - map(0xc000, 0xc001).w(FUNC(namco_de_pcbstack_device::namcos2_sound_bankselect_w)); + map(0xc000, 0xc001).w(FUNC(namco_de_pcbstack_device::sound_bankselect_w)); map(0xd001, 0xd001).nopw(); /* watchdog */ map(0xd000, 0xffff).rom().region("audiocpu", 0x01000); } @@ -355,8 +356,8 @@ void namco_de_pcbstack_device::configure_c68_namcos21(machine_config &config) m_c68->an5_in_cb().set_ioport("AN5"); m_c68->an6_in_cb().set_ioport("AN6"); m_c68->an7_in_cb().set_ioport("AN7"); - m_c68->dp_in_callback().set(FUNC(namco_de_pcbstack_device::namcos2_dualportram_byte_r)); - m_c68->dp_out_callback().set(FUNC(namco_de_pcbstack_device::namcos2_dualportram_byte_w)); + m_c68->dp_in_callback().set(FUNC(namco_de_pcbstack_device::dpram_byte_r)); + m_c68->dp_out_callback().set(FUNC(namco_de_pcbstack_device::dpram_byte_w)); } /*************************************************************/ @@ -370,10 +371,10 @@ void namco_de_pcbstack_device::driveyes_common_map(address_map &map) map(0x720000, 0x720007).rw(m_c355spr, FUNC(namco_c355spr_device::position_r), FUNC(namco_c355spr_device::position_w)); map(0x740000, 0x74ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); map(0x750000, 0x75ffff).ram().w(m_palette, FUNC(palette_device::write16_ext)).share("palette_ext"); - map(0x760000, 0x760001).rw(FUNC(namco_de_pcbstack_device::namcos21_video_enable_r), FUNC(namco_de_pcbstack_device::namcos21_video_enable_w)); + map(0x760000, 0x760001).rw(FUNC(namco_de_pcbstack_device::video_enable_r), FUNC(namco_de_pcbstack_device::video_enable_w)); map(0x800000, 0x8fffff).rom().region("data", 0); map(0x900000, 0x90ffff).ram().share("sharedram"); - map(0xa00000, 0xa00fff).rw(FUNC(namco_de_pcbstack_device::namcos2_68k_dualportram_word_r), FUNC(namco_de_pcbstack_device::namcos2_68k_dualportram_word_w)); + map(0xa00000, 0xa00fff).rw(FUNC(namco_de_pcbstack_device::dpram_word_r), FUNC(namco_de_pcbstack_device::dpram_word_w)); map(0xb00000, 0xb03fff).rw(m_sci, FUNC(namco_c139_device::ram_r), FUNC(namco_c139_device::ram_w)); map(0xb80000, 0xb8000f).m(m_sci, FUNC(namco_c139_device::regs_map)); } @@ -383,7 +384,7 @@ void namco_de_pcbstack_device::driveyes_master_map(address_map &map) driveyes_common_map(map); map(0x000000, 0x03ffff).rom(); map(0x100000, 0x10ffff).ram(); /* private work RAM */ - map(0x180000, 0x183fff).rw(FUNC(namco_de_pcbstack_device::namcos2_68k_eeprom_r), FUNC(namco_de_pcbstack_device::namcos2_68k_eeprom_w)).umask16(0x00ff); + map(0x180000, 0x183fff).rw(FUNC(namco_de_pcbstack_device::eeprom_r), FUNC(namco_de_pcbstack_device::eeprom_w)).umask16(0x00ff); map(0x1c0000, 0x1fffff).m(m_master_intc, FUNC(namco_c148_device::map)); // DSP related @@ -403,7 +404,7 @@ void namco_de_pcbstack_device::driveyes_slave_map(address_map &map) map(0x1c0000, 0x1fffff).m(m_slave_intc, FUNC(namco_c148_device::map)); } -WRITE8_MEMBER( namco_de_pcbstack_device::namcos2_sound_bankselect_w ) +WRITE8_MEMBER( namco_de_pcbstack_device::sound_bankselect_w ) { m_audiobank->set_entry(data>>4); } @@ -437,12 +438,12 @@ void namco_de_pcbstack_device::reset_all_subcpus(int state) m_c68->ext_reset(state); } -WRITE8_MEMBER(namco_de_pcbstack_device::namcos2_68k_eeprom_w) +WRITE8_MEMBER(namco_de_pcbstack_device::eeprom_w) { m_eeprom[offset] = data; } -READ8_MEMBER(namco_de_pcbstack_device::namcos2_68k_eeprom_r) +READ8_MEMBER(namco_de_pcbstack_device::eeprom_r) { return m_eeprom[offset]; } @@ -477,22 +478,16 @@ void namco_de_pcbstack_device::device_start() m_eeprom = std::make_unique<uint8_t[]>(0x2000); subdevice<nvram_device>("nvram")->set_base(m_eeprom.get(), 0x2000); - if (m_audiobank) - { - uint32_t max = memregion("audiocpu")->bytes() / 0x4000; - for (int i = 0; i < 0x10; i++) - m_audiobank->configure_entry(i, memregion("audiocpu")->base() + (i % max) * 0x4000); + uint32_t max = memregion("audiocpu")->bytes() / 0x4000; + for (int i = 0; i < 0x10; i++) + m_audiobank->configure_entry(i, memregion("audiocpu")->base() + (i % max) * 0x4000); - m_audiobank->set_entry(0); - } } void namco_de_pcbstack_device::device_reset() { - address_space &audio_space = m_audiocpu->space(AS_PROGRAM); - /* Initialise the bank select in the sound CPU */ - namcos2_sound_bankselect_w(audio_space, 0, 0); /* Page in bank 0 */ + m_audiobank->set_entry(0); /* Page in bank 0 */ m_audiocpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE ); |