diff --git a/src/mame/drivers/rltennis.cpp b/src/mame/drivers/rltennis.cpp index ac281c2f2dc..5405befbe5a 100644 --- a/src/mame/drivers/rltennis.cpp +++ b/src/mame/drivers/rltennis.cpp @@ -141,14 +141,14 @@ TIMER_CALLBACK_MEMBER(rltennis_state::sample_player) { if((m_dac_counter&0x7ff) == 0x7ff) /* reload top address bits */ { - m_sample_rom_offset_1=(( m_data740000 >> m_offset_shift ) & 0xff )<<11; - m_sample_rom_offset_2=(( m_data760000 >> m_offset_shift ) & 0xff )<<11; + m_sample_rom_offset[0]=(( m_data740000 >> m_offset_shift ) & 0xff )<<11; + m_sample_rom_offset[1]=(( m_data760000 >> m_offset_shift ) & 0xff )<<11; m_offset_shift^=8; /* switch between MSB and LSB */ } ++m_dac_counter; /* update low address bits */ - m_dac1->write(m_samples_1[m_sample_rom_offset_1 + (m_dac_counter & 0x7ff)]); - m_dac2->write(m_samples_2[m_sample_rom_offset_2 + (m_dac_counter & 0x7ff)]); + m_dac[0]->write(m_samples[0][m_sample_rom_offset[0] + (m_dac_counter & 0x7ff)]); + m_dac[1]->write(m_samples[1][m_sample_rom_offset[1] + (m_dac_counter & 0x7ff)]); m_timer->adjust(attotime::from_hz( RLT_TIMER_FREQ )); } @@ -161,16 +161,12 @@ INTERRUPT_GEN_MEMBER(rltennis_state::interrupt) void rltennis_state::machine_start() { - m_samples_1 = memregion("samples1")->base(); - m_samples_2 = memregion("samples2")->base(); - m_gfx = memregion("gfx1")->base(); m_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(rltennis_state::sample_player),this)); save_item(NAME(m_data760000)); save_item(NAME(m_data740000)); save_item(NAME(m_dac_counter)); - save_item(NAME(m_sample_rom_offset_1)); - save_item(NAME(m_sample_rom_offset_2)); + save_item(NAME(m_sample_rom_offset)); save_item(NAME(m_offset_shift)); save_item(NAME(m_unk_counter)); } @@ -219,7 +215,7 @@ ROM_START( rltennis ) ROM_LOAD16_BYTE( "tennis_1.u12", 0x00001, 0x80000, CRC(2ded10d7) SHA1(cca1e858c9c759ef5c0aca6ee50d23d5d532534c) ) ROM_LOAD16_BYTE( "tennis_2.u19", 0x00000, 0x80000, CRC(a0dbd2ed) SHA1(8db7dbb6a36fd0fb382a4938d7eba1f7662aa672) ) - ROM_REGION( 0x1000000, "gfx1", ROMREGION_ERASE00 ) + ROM_REGION( 0x1000000, "gfx", ROMREGION_ERASE00 ) ROM_LOAD( "tennis_5.u33", 0x000000, 0x80000, CRC(067a2e4b) SHA1(ab5a227de2b0c51b17aeca68c8af1bf224904ac8) ) ROM_LOAD( "tennis_6.u34", 0x080000, 0x80000, CRC(901df2c1) SHA1(7e57d7c7e281ddc02a3e34178d3e471bd8e1d572) ) ROM_LOAD( "tennis_7.u35", 0x100000, 0x80000, CRC(8d70fb37) SHA1(250c4c3d32e5a7e17413ee41e1abccb0492b63fd) ) diff --git a/src/mame/includes/rltennis.h b/src/mame/includes/rltennis.h index 32867a0abfc..e03e12b1a7c 100644 --- a/src/mame/includes/rltennis.h +++ b/src/mame/includes/rltennis.h @@ -1,7 +1,7 @@ // license:BSD-3-Clause // copyright-holders:Tomasz Slanina #include "sound/dac.h" - +#include #define RLT_NUM_BLITTER_REGS 8 #define RLT_NUM_BITMAPS 8 @@ -9,30 +9,31 @@ class rltennis_state : public driver_device { public: - rltennis_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), + rltennis_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), - m_dac1(*this, "dac1"), - m_dac2(*this, "dac2"), - m_data760000(0), m_data740000(0), m_dac_counter(0), m_sample_rom_offset_1(0), m_sample_rom_offset_2(0), - m_offset_shift(0) { } + m_dac(*this, "dac%u", 1U), + m_samples(*this, "samples%u", 1U), + m_gfx(*this, "gfx"), + m_data760000(0), m_data740000(0), m_dac_counter(0), + m_offset_shift(0) + { + std::fill(std::begin(m_sample_rom_offset), std::end(m_sample_rom_offset), 0); + } required_device m_maincpu; - required_device m_dac1; - required_device m_dac2; + required_device_array m_dac; + required_region_ptr_array m_samples; + required_region_ptr m_gfx; uint16_t m_blitter[RLT_NUM_BLITTER_REGS]; int32_t m_data760000; int32_t m_data740000; int32_t m_dac_counter; - int32_t m_sample_rom_offset_1; - int32_t m_sample_rom_offset_2; + int32_t m_sample_rom_offset[2]; int32_t m_offset_shift; int32_t m_unk_counter; std::unique_ptr m_tmp_bitmap[RLT_NUM_BITMAPS]; - uint8_t *m_samples_1; - uint8_t *m_samples_2; - uint8_t *m_gfx; emu_timer *m_timer; DECLARE_READ16_MEMBER(io_r); diff --git a/src/mame/video/rltennis.cpp b/src/mame/video/rltennis.cpp index 0a3ada8a550..542de9cf183 100644 --- a/src/mame/video/rltennis.cpp +++ b/src/mame/video/rltennis.cpp @@ -208,7 +208,7 @@ WRITE16_MEMBER(rltennis_state::blitter_w) int address=yy*512+xx; - int pix = m_gfx[ address & 0x0ffffff ]; + int pix = m_gfx[ address & m_gfx.mask() ]; int screen_x=(x&0xff)+((m_blitter[BLT_FLAGS] & BLTFLAG_DST_LR )?256:0); if((pix || force_blit)&& screen_x >0 && y >0 && screen_x < 512 && y < 256 )