diff options
author | Miodrag Milanovic <mmicko@gmail.com> | 2012-04-03 09:51:27 +0000 |
---|---|---|
committer | Miodrag Milanovic <mmicko@gmail.com> | 2012-04-03 09:51:27 +0000 |
commit | fd9822e2859faffee41c3f4a90f4f3bbc94ecb3b (patch) | |
tree | 287e1ba6e7217bff96ed6edb96daf6ece2f0efb8 /src/mame/drivers/jangou.c | |
parent | 3783cf95515491d961776534fb5937b76accd464 (diff) |
MAME going modern part 4 (no whatsnew)
Diffstat (limited to 'src/mame/drivers/jangou.c')
-rw-r--r-- | src/mame/drivers/jangou.c | 145 |
1 files changed, 74 insertions, 71 deletions
diff --git a/src/mame/drivers/jangou.c b/src/mame/drivers/jangou.c index b3e97d2f5c8..9a5128e6a1a 100644 --- a/src/mame/drivers/jangou.c +++ b/src/mame/drivers/jangou.c @@ -64,6 +64,19 @@ public: UINT8 m_pen_data[0x10]; UINT8 m_blit_data[6]; UINT8 m_blit_buffer[256 * 256]; + DECLARE_WRITE8_MEMBER(blitter_process_w); + DECLARE_WRITE8_MEMBER(blit_vregs_w); + DECLARE_WRITE8_MEMBER(mux_w); + DECLARE_WRITE8_MEMBER(output_w); + DECLARE_WRITE8_MEMBER(sound_latch_w); + DECLARE_READ8_MEMBER(sound_latch_r); + DECLARE_WRITE8_MEMBER(cvsd_w); + DECLARE_WRITE8_MEMBER(adpcm_w); + DECLARE_READ8_MEMBER(master_com_r); + DECLARE_WRITE8_MEMBER(master_com_w); + DECLARE_READ8_MEMBER(slave_com_r); + DECLARE_WRITE8_MEMBER(slave_com_w); + DECLARE_READ8_MEMBER(jngolady_rng_r); }; @@ -176,27 +189,26 @@ static void plot_jangou_gfx_pixel( running_machine &machine, UINT8 pix, int x, i state->m_blit_buffer[(y * 256) + (x >> 1)] = (state->m_blit_buffer[(y * 256) + (x >> 1)] & 0xf0) | (pix & 0x0f); } -static WRITE8_HANDLER( blitter_process_w ) +WRITE8_MEMBER(jangou_state::blitter_process_w) { - jangou_state *state = space->machine().driver_data<jangou_state>(); int src, x, y, h, w, flipx; - state->m_blit_data[offset] = data; + m_blit_data[offset] = data; if (offset == 5) { int count = 0; int xcount, ycount; - /* printf("%02x %02x %02x %02x %02x %02x\n", state->m_blit_data[0], state->m_blit_data[1], state->m_blit_data[2], - state->m_blit_data[3], state->m_blit_data[4], state->m_blit_data[5]); */ - w = (state->m_blit_data[4] & 0xff) + 1; - h = (state->m_blit_data[5] & 0xff) + 1; - src = ((state->m_blit_data[1] << 8)|(state->m_blit_data[0] << 0)); - x = (state->m_blit_data[2] & 0xff); - y = (state->m_blit_data[3] & 0xff); + /* printf("%02x %02x %02x %02x %02x %02x\n", m_blit_data[0], m_blit_data[1], m_blit_data[2], + m_blit_data[3], m_blit_data[4], m_blit_data[5]); */ + w = (m_blit_data[4] & 0xff) + 1; + h = (m_blit_data[5] & 0xff) + 1; + src = ((m_blit_data[1] << 8)|(m_blit_data[0] << 0)); + x = (m_blit_data[2] & 0xff); + y = (m_blit_data[3] & 0xff); // lowest bit of src controls flipping / draw direction? - flipx = (state->m_blit_data[0] & 1); + flipx = (m_blit_data[0] & 1); if (!flipx) src += (w * h) - 1; @@ -209,14 +221,14 @@ static WRITE8_HANDLER( blitter_process_w ) { int drawx = (x + xcount) & 0xff; int drawy = (y + ycount) & 0xff; - UINT8 dat = jangou_gfx_nibble(space->machine(), src + count); - UINT8 cur_pen_hi = state->m_pen_data[(dat & 0xf0) >> 4]; - UINT8 cur_pen_lo = state->m_pen_data[(dat & 0x0f) >> 0]; + UINT8 dat = jangou_gfx_nibble(machine(), src + count); + UINT8 cur_pen_hi = m_pen_data[(dat & 0xf0) >> 4]; + UINT8 cur_pen_lo = m_pen_data[(dat & 0x0f) >> 0]; dat = cur_pen_lo | (cur_pen_hi << 4); if ((dat & 0xff) != 0) - plot_jangou_gfx_pixel(space->machine(), dat, drawx, drawy); + plot_jangou_gfx_pixel(machine(), dat, drawx, drawy); if (!flipx) count--; @@ -228,12 +240,11 @@ static WRITE8_HANDLER( blitter_process_w ) } /* What is the bit 5 (0x20) for?*/ -static WRITE8_HANDLER( blit_vregs_w ) +WRITE8_MEMBER(jangou_state::blit_vregs_w) { - jangou_state *state = space->machine().driver_data<jangou_state>(); // printf("%02x %02x\n", offset, data); - state->m_pen_data[offset] = data & 0xf; + m_pen_data[offset] = data & 0xf; } /************************************* @@ -242,13 +253,12 @@ static WRITE8_HANDLER( blit_vregs_w ) * *************************************/ -static WRITE8_HANDLER( mux_w ) +WRITE8_MEMBER(jangou_state::mux_w) { - jangou_state *state = space->machine().driver_data<jangou_state>(); - state->m_mux_data = ~data; + m_mux_data = ~data; } -static WRITE8_HANDLER( output_w ) +WRITE8_MEMBER(jangou_state::output_w) { /* --x- ---- ? (polls between high and low in irq routine,probably signals the vblank routine) @@ -256,9 +266,9 @@ static WRITE8_HANDLER( output_w ) ---- ---x coin counter */ // printf("%02x\n", data); - coin_counter_w(space->machine(), 0, data & 0x01); + coin_counter_w(machine(), 0, data & 0x01); // flip_screen_set(data & 0x04); -// coin_lockout_w(space->machine(), 0, ~data & 0x20); +// coin_lockout_w(machine(), 0, ~data & 0x20); } static READ8_DEVICE_HANDLER( input_mux_r ) @@ -289,25 +299,22 @@ static READ8_DEVICE_HANDLER( input_system_r ) * *************************************/ -static WRITE8_HANDLER( sound_latch_w ) +WRITE8_MEMBER(jangou_state::sound_latch_w) { - jangou_state *state = space->machine().driver_data<jangou_state>(); soundlatch_w(space, 0, data & 0xff); - device_set_input_line(state->m_cpu_1, INPUT_LINE_NMI, ASSERT_LINE); + device_set_input_line(m_cpu_1, INPUT_LINE_NMI, ASSERT_LINE); } -static READ8_HANDLER( sound_latch_r ) +READ8_MEMBER(jangou_state::sound_latch_r) { - jangou_state *state = space->machine().driver_data<jangou_state>(); - device_set_input_line(state->m_cpu_1, INPUT_LINE_NMI, CLEAR_LINE); + device_set_input_line(m_cpu_1, INPUT_LINE_NMI, CLEAR_LINE); return soundlatch_r(space, 0); } /* Jangou HC-55516 CVSD */ -static WRITE8_HANDLER( cvsd_w ) +WRITE8_MEMBER(jangou_state::cvsd_w) { - jangou_state *state = space->machine().driver_data<jangou_state>(); - state->m_cvsd_shiftreg = data; + m_cvsd_shiftreg = data; } static TIMER_CALLBACK( cvsd_bit_timer_callback ) @@ -325,10 +332,9 @@ static TIMER_CALLBACK( cvsd_bit_timer_callback ) /* Jangou Lady MSM5218 (MSM5205-compatible) ADPCM */ -static WRITE8_HANDLER( adpcm_w ) +WRITE8_MEMBER(jangou_state::adpcm_w) { - jangou_state *state = space->machine().driver_data<jangou_state>(); - state->m_adpcm_byte = data; + m_adpcm_byte = data; } static void jngolady_vclk_cb( device_t *device ) @@ -353,30 +359,26 @@ static void jngolady_vclk_cb( device_t *device ) * *************************************/ -static READ8_HANDLER( master_com_r ) +READ8_MEMBER(jangou_state::master_com_r) { - jangou_state *state = space->machine().driver_data<jangou_state>(); - return state->m_z80_latch; + return m_z80_latch; } -static WRITE8_HANDLER( master_com_w ) +WRITE8_MEMBER(jangou_state::master_com_w) { - jangou_state *state = space->machine().driver_data<jangou_state>(); - device_set_input_line(state->m_nsc, 0, HOLD_LINE); - state->m_nsc_latch = data; + device_set_input_line(m_nsc, 0, HOLD_LINE); + m_nsc_latch = data; } -static READ8_HANDLER( slave_com_r ) +READ8_MEMBER(jangou_state::slave_com_r) { - jangou_state *state = space->machine().driver_data<jangou_state>(); - return state->m_nsc_latch; + return m_nsc_latch; } -static WRITE8_HANDLER( slave_com_w ) +WRITE8_MEMBER(jangou_state::slave_com_w) { - jangou_state *state = space->machine().driver_data<jangou_state>(); - state->m_z80_latch = data; + m_z80_latch = data; } /************************************* @@ -395,12 +397,12 @@ static ADDRESS_MAP_START( cpu0_io, AS_IO, 8, jangou_state ) AM_RANGE(0x01,0x01) AM_DEVREAD_LEGACY("aysnd", ay8910_r) AM_RANGE(0x02,0x03) AM_DEVWRITE_LEGACY("aysnd", ay8910_data_address_w) AM_RANGE(0x10,0x10) AM_READ_PORT("DSW") //dsw + blitter busy flag - AM_RANGE(0x10,0x10) AM_WRITE_LEGACY(output_w) - AM_RANGE(0x11,0x11) AM_WRITE_LEGACY(mux_w) - AM_RANGE(0x12,0x17) AM_WRITE_LEGACY(blitter_process_w) - AM_RANGE(0x20,0x2f) AM_WRITE_LEGACY(blit_vregs_w) + AM_RANGE(0x10,0x10) AM_WRITE(output_w) + AM_RANGE(0x11,0x11) AM_WRITE(mux_w) + AM_RANGE(0x12,0x17) AM_WRITE(blitter_process_w) + AM_RANGE(0x20,0x2f) AM_WRITE(blit_vregs_w) AM_RANGE(0x30,0x30) AM_WRITENOP //? polls 0x03 continuously - AM_RANGE(0x31,0x31) AM_WRITE_LEGACY(sound_latch_w) + AM_RANGE(0x31,0x31) AM_WRITE(sound_latch_w) ADDRESS_MAP_END @@ -410,8 +412,8 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( cpu1_io, AS_IO, 8, jangou_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00,0x00) AM_READ_LEGACY(sound_latch_r) - AM_RANGE(0x01,0x01) AM_WRITE_LEGACY(cvsd_w) + AM_RANGE(0x00,0x00) AM_READ(sound_latch_r) + AM_RANGE(0x01,0x01) AM_WRITE(cvsd_w) AM_RANGE(0x02,0x02) AM_WRITENOP // Echoes sound command - acknowledge? ADDRESS_MAP_END @@ -425,7 +427,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( jngolady_cpu0_map, AS_PROGRAM, 8, jangou_state ) AM_RANGE(0x0000, 0x9fff) AM_ROM AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("share1") - AM_RANGE(0xe000, 0xe000) AM_READWRITE_LEGACY(master_com_r,master_com_w) + AM_RANGE(0xe000, 0xe000) AM_READWRITE(master_com_r,master_com_w) ADDRESS_MAP_END @@ -435,8 +437,8 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( jngolady_cpu1_io, AS_IO, 8, jangou_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00,0x00) AM_READ_LEGACY(sound_latch_r) - AM_RANGE(0x01,0x01) AM_WRITE_LEGACY(adpcm_w) + AM_RANGE(0x00,0x00) AM_READ(sound_latch_r) + AM_RANGE(0x01,0x01) AM_WRITE(adpcm_w) AM_RANGE(0x02,0x02) AM_WRITENOP ADDRESS_MAP_END @@ -444,7 +446,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( nsc_map, AS_PROGRAM, 8, jangou_state ) AM_RANGE(0x0000, 0x007f) AM_RAM //internal ram for irq etc. AM_RANGE(0x8000, 0x8000) AM_WRITENOP //write-only,irq related? - AM_RANGE(0x9000, 0x9000) AM_READWRITE_LEGACY(slave_com_r,slave_com_w) + AM_RANGE(0x9000, 0x9000) AM_READWRITE(slave_com_r,slave_com_w) AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("share1") AM_RANGE(0xf000, 0xffff) AM_ROM ADDRESS_MAP_END @@ -466,12 +468,12 @@ static ADDRESS_MAP_START( cntrygrl_cpu0_io, AS_IO, 8, jangou_state ) AM_RANGE(0x01,0x01) AM_DEVREAD_LEGACY("aysnd", ay8910_r) AM_RANGE(0x02,0x03) AM_DEVWRITE_LEGACY("aysnd", ay8910_data_address_w) AM_RANGE(0x10,0x10) AM_READ_PORT("DSW") //dsw + blitter busy flag - AM_RANGE(0x10,0x10) AM_WRITE_LEGACY(output_w) - AM_RANGE(0x11,0x11) AM_WRITE_LEGACY(mux_w) - AM_RANGE(0x12,0x17) AM_WRITE_LEGACY(blitter_process_w) - AM_RANGE(0x20,0x2f) AM_WRITE_LEGACY(blit_vregs_w ) + AM_RANGE(0x10,0x10) AM_WRITE(output_w) + AM_RANGE(0x11,0x11) AM_WRITE(mux_w) + AM_RANGE(0x12,0x17) AM_WRITE(blitter_process_w) + AM_RANGE(0x20,0x2f) AM_WRITE(blit_vregs_w ) AM_RANGE(0x30,0x30) AM_WRITENOP //? polls 0x03 continuously -// AM_RANGE(0x31,0x31) AM_WRITE_LEGACY(sound_latch_w) +// AM_RANGE(0x31,0x31) AM_WRITE(sound_latch_w) ADDRESS_MAP_END /************************************* @@ -491,10 +493,10 @@ static ADDRESS_MAP_START( roylcrdn_cpu0_io, AS_IO, 8, jangou_state ) AM_RANGE(0x02,0x03) AM_DEVWRITE_LEGACY("aysnd", ay8910_data_address_w) AM_RANGE(0x10,0x10) AM_READ_PORT("DSW") /* DSW + blitter busy flag */ AM_RANGE(0x10,0x10) AM_WRITENOP /* Writes continuosly 0's in attract mode, and 1's in game */ - AM_RANGE(0x11,0x11) AM_WRITE_LEGACY(mux_w) + AM_RANGE(0x11,0x11) AM_WRITE(mux_w) AM_RANGE(0x13,0x13) AM_READNOP /* Often reads bit7 with unknown purposes */ - AM_RANGE(0x12,0x17) AM_WRITE_LEGACY(blitter_process_w) - AM_RANGE(0x20,0x2f) AM_WRITE_LEGACY(blit_vregs_w) + AM_RANGE(0x12,0x17) AM_WRITE(blitter_process_w) + AM_RANGE(0x20,0x2f) AM_WRITE(blit_vregs_w) AM_RANGE(0x30,0x30) AM_WRITENOP /* Seems to write 0x10 on each sound event */ ADDRESS_MAP_END @@ -1353,14 +1355,15 @@ ROM_END *************************************/ /*Temporary kludge for make the RNG work*/ -static READ8_HANDLER( jngolady_rng_r ) +READ8_MEMBER(jangou_state::jngolady_rng_r) { - return space->machine().rand(); + return machine().rand(); } static DRIVER_INIT( jngolady ) { - machine.device("nsc")->memory().space(AS_PROGRAM)->install_legacy_read_handler(0x08, 0x08, FUNC(jngolady_rng_r) ); + jangou_state *state = machine.driver_data<jangou_state>(); + machine.device("nsc")->memory().space(AS_PROGRAM)->install_read_handler(0x08, 0x08, read8_delegate(FUNC(jangou_state::jngolady_rng_r),state) ); } static DRIVER_INIT (luckygrl) |