From 4d5b72800f13013a89cfd990eb688b5538441f31 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Mon, 25 May 2015 19:57:44 +0200 Subject: [PATCH] nbmj8891.c: added save state support (nw) --- src/mame/drivers/nbmj8891.c | 242 +++++++++++++++++------------------ src/mame/includes/nbmj8891.h | 51 +++++--- src/mame/machine/nb1413m3.c | 6 +- src/mame/video/nbmj8891.c | 101 ++++++++++----- 4 files changed, 224 insertions(+), 176 deletions(-) diff --git a/src/mame/drivers/nbmj8891.c b/src/mame/drivers/nbmj8891.c index 8ac6f6ab57e..b446b5c965d 100644 --- a/src/mame/drivers/nbmj8891.c +++ b/src/mame/drivers/nbmj8891.c @@ -226,83 +226,83 @@ DRIVER_INIT_MEMBER(nbmj8891_state,pairsten) static ADDRESS_MAP_START( gionbana_map, AS_PROGRAM, 8, nbmj8891_state ) AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf00f) AM_READWRITE(nbmj8891_clut_r,nbmj8891_clut_w) - AM_RANGE(0xf400, 0xf5ff) AM_READWRITE(nbmj8891_palette_type1_r,nbmj8891_palette_type1_w) + AM_RANGE(0xf000, 0xf00f) AM_READWRITE(clut_r, clut_w) + AM_RANGE(0xf400, 0xf5ff) AM_READWRITE(palette_type1_r, palette_type1_w) AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("nvram") ADDRESS_MAP_END static ADDRESS_MAP_START( mgion_map, AS_PROGRAM, 8, nbmj8891_state ) AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf1ff) AM_READWRITE(nbmj8891_palette_type1_r,nbmj8891_palette_type1_w) - AM_RANGE(0xf400, 0xf40f) AM_READWRITE(nbmj8891_clut_r,nbmj8891_clut_w) + AM_RANGE(0xf000, 0xf1ff) AM_READWRITE(palette_type1_r, palette_type1_w) + AM_RANGE(0xf400, 0xf40f) AM_READWRITE(clut_r, clut_w) AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("nvram") ADDRESS_MAP_END static ADDRESS_MAP_START( omotesnd_map, AS_PROGRAM, 8, nbmj8891_state ) AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf400, 0xf5ff) AM_READWRITE(nbmj8891_palette_type1_r,nbmj8891_palette_type1_w) + AM_RANGE(0xf400, 0xf5ff) AM_READWRITE(palette_type1_r, palette_type1_w) AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("nvram") ADDRESS_MAP_END static ADDRESS_MAP_START( hanamomo_map, AS_PROGRAM, 8, nbmj8891_state ) AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf1ff) AM_READWRITE(nbmj8891_palette_type1_r,nbmj8891_palette_type1_w) - AM_RANGE(0xf400, 0xf40f) AM_READWRITE(nbmj8891_clut_r,nbmj8891_clut_w) + AM_RANGE(0xf000, 0xf1ff) AM_READWRITE(palette_type1_r, palette_type1_w) + AM_RANGE(0xf400, 0xf40f) AM_READWRITE(clut_r, clut_w) AM_RANGE(0xf800, 0xffff) AM_RAM ADDRESS_MAP_END static ADDRESS_MAP_START( scandalm_map, AS_PROGRAM, 8, nbmj8891_state ) AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf400, 0xf5ff) AM_READWRITE(nbmj8891_palette_type1_r,nbmj8891_palette_type1_w) + AM_RANGE(0xf400, 0xf5ff) AM_READWRITE(palette_type1_r, palette_type1_w) AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("nvram") ADDRESS_MAP_END static ADDRESS_MAP_START( club90s_map, AS_PROGRAM, 8, nbmj8891_state ) AM_RANGE(0x0000, 0xefff) AM_ROM AM_RANGE(0xf000, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xf80f) AM_READWRITE(nbmj8891_clut_r,nbmj8891_clut_w) - AM_RANGE(0xfc00, 0xfdff) AM_READWRITE(nbmj8891_palette_type1_r,nbmj8891_palette_type1_w) + AM_RANGE(0xf800, 0xf80f) AM_READWRITE(clut_r, clut_w) + AM_RANGE(0xfc00, 0xfdff) AM_READWRITE(palette_type1_r, palette_type1_w) ADDRESS_MAP_END static ADDRESS_MAP_START( lovehous_map, AS_PROGRAM, 8, nbmj8891_state ) AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf00f) AM_READWRITE(nbmj8891_clut_r,nbmj8891_clut_w) - AM_RANGE(0xf400, 0xf5ff) AM_READWRITE(nbmj8891_palette_type2_r,nbmj8891_palette_type2_w) + AM_RANGE(0xf000, 0xf00f) AM_READWRITE(clut_r, clut_w) + AM_RANGE(0xf400, 0xf5ff) AM_READWRITE(palette_type2_r, palette_type2_w) AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("nvram") ADDRESS_MAP_END static ADDRESS_MAP_START( maiko_map, AS_PROGRAM, 8, nbmj8891_state ) AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf1ff) AM_READWRITE(nbmj8891_palette_type2_r,nbmj8891_palette_type2_w) - AM_RANGE(0xf400, 0xf40f) AM_READWRITE(nbmj8891_clut_r,nbmj8891_clut_w) + AM_RANGE(0xf000, 0xf1ff) AM_READWRITE(palette_type2_r, palette_type2_w) + AM_RANGE(0xf400, 0xf40f) AM_READWRITE(clut_r, clut_w) AM_RANGE(0xf800, 0xffff) AM_RAM ADDRESS_MAP_END static ADDRESS_MAP_START( hnxmasev_map, AS_PROGRAM, 8, nbmj8891_state ) AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf200, 0xf3ff) AM_READWRITE(nbmj8891_palette_type2_r,nbmj8891_palette_type2_w) - AM_RANGE(0xf700, 0xf70f) AM_READWRITE(nbmj8891_clut_r,nbmj8891_clut_w) + AM_RANGE(0xf200, 0xf3ff) AM_READWRITE(palette_type2_r, palette_type2_w) + AM_RANGE(0xf700, 0xf70f) AM_READWRITE(clut_r, clut_w) AM_RANGE(0xf800, 0xffff) AM_RAM ADDRESS_MAP_END static ADDRESS_MAP_START( hnageman_map, AS_PROGRAM, 8, nbmj8891_state ) AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf00f) AM_READWRITE(nbmj8891_clut_r,nbmj8891_clut_w) - AM_RANGE(0xf400, 0xf5ff) AM_READWRITE(nbmj8891_palette_type2_r,nbmj8891_palette_type2_w) + AM_RANGE(0xf000, 0xf00f) AM_READWRITE(clut_r, clut_w) + AM_RANGE(0xf400, 0xf5ff) AM_READWRITE(palette_type2_r, palette_type2_w) AM_RANGE(0xf800, 0xffff) AM_RAM ADDRESS_MAP_END static ADDRESS_MAP_START( mmaiko_map, AS_PROGRAM, 8, nbmj8891_state ) AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf1ff) AM_READWRITE(nbmj8891_palette_type2_r,nbmj8891_palette_type2_w) - AM_RANGE(0xf400, 0xf40f) AM_READWRITE(nbmj8891_clut_r,nbmj8891_clut_w) + AM_RANGE(0xf000, 0xf1ff) AM_READWRITE(palette_type2_r, palette_type2_w) + AM_RANGE(0xf400, 0xf40f) AM_READWRITE(clut_r, clut_w) AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("nvram") ADDRESS_MAP_END static ADDRESS_MAP_START( hanaoji_map, AS_PROGRAM, 8, nbmj8891_state ) AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf200, 0xf3ff) AM_READWRITE(nbmj8891_palette_type2_r,nbmj8891_palette_type2_w) - AM_RANGE(0xf700, 0xf70f) AM_READWRITE(nbmj8891_clut_r,nbmj8891_clut_w) + AM_RANGE(0xf200, 0xf3ff) AM_READWRITE(palette_type2_r, palette_type2_w) + AM_RANGE(0xf700, 0xf70f) AM_READWRITE(clut_r, clut_w) AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("nvram") ADDRESS_MAP_END @@ -313,18 +313,18 @@ READ8_MEMBER(nbmj8891_state::taiwanmb_unk_r) static ADDRESS_MAP_START( taiwanmb_map, AS_PROGRAM, 8, nbmj8891_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xec00, 0xedff) AM_READWRITE(nbmj8891_palette_type3_r,nbmj8891_palette_type3_w) + AM_RANGE(0xec00, 0xedff) AM_READWRITE(palette_type3_r, palette_type3_w) AM_RANGE(0xf800, 0xfeff) AM_RAM AM_SHARE("nvram") AM_RANGE(0xff00, 0xff1f) AM_NOP // ? AM_RANGE(0xff20, 0xff20) AM_READ(taiwanmb_unk_r) // MCU or 1413M3 STATUS? (return != 0x00 then loop) - AM_RANGE(0xff20, 0xff20) AM_WRITE(nbmj8891_taiwanmb_mcu_w) // MCU PARAMETER? + AM_RANGE(0xff20, 0xff20) AM_WRITE(taiwanmb_mcu_w) // MCU PARAMETER? AM_RANGE(0xff21, 0xff2f) AM_READNOP // ? AM_RANGE(0xff21, 0xff21) AM_WRITENOP // blitter parameter set end (write 0x01 only) - AM_RANGE(0xff22, 0xff27) AM_WRITE(nbmj8891_taiwanmb_blitter_w) // blitter parameter - AM_RANGE(0xff28, 0xff28) AM_WRITE(nbmj8891_romsel_w) // gfx rombank select - AM_RANGE(0xff29, 0xff29) AM_WRITE(nbmj8891_taiwanmb_gfxflag_w) // screen flip flag? + AM_RANGE(0xff22, 0xff27) AM_WRITE(taiwanmb_blitter_w) // blitter parameter + AM_RANGE(0xff28, 0xff28) AM_WRITE(romsel_w) // gfx rombank select + AM_RANGE(0xff29, 0xff29) AM_WRITE(taiwanmb_gfxflag_w) // screen flip flag? AM_RANGE(0xff2a, 0xff2a) AM_WRITENOP // not used? - AM_RANGE(0xff2b, 0xff2b) AM_WRITE(nbmj8891_clutsel_w) // color look up table select + AM_RANGE(0xff2b, 0xff2b) AM_WRITE(clutsel_w) // color look up table select AM_RANGE(0xff2c, 0xff2c) AM_WRITENOP // blitter parameter set start (write 0xff only) AM_RANGE(0xff2d, 0xff2d) AM_WRITENOP // not used? AM_RANGE(0xff2e, 0xff2e) AM_WRITENOP // not used? @@ -337,17 +337,17 @@ static ADDRESS_MAP_START( gionbana_io_map, AS_IO, 8, nbmj8891_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r) AM_RANGE(0x00, 0x00) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w) - AM_RANGE(0x20, 0x27) AM_WRITE(nbmj8891_blitter_w) - AM_RANGE(0x40, 0x40) AM_WRITE(nbmj8891_clutsel_w) - AM_RANGE(0x60, 0x60) AM_WRITE(nbmj8891_romsel_w) - AM_RANGE(0x70, 0x70) AM_WRITE(nbmj8891_scrolly_w) + AM_RANGE(0x20, 0x27) AM_WRITE(blitter_w) + AM_RANGE(0x40, 0x40) AM_WRITE(clutsel_w) + AM_RANGE(0x60, 0x60) AM_WRITE(romsel_w) + AM_RANGE(0x70, 0x70) AM_WRITE(scrolly_w) AM_RANGE(0x80, 0x81) AM_DEVWRITE("fmsnd", ym3812_device, write) AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r) AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w) AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w) AM_RANGE(0xc0, 0xc0) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport3_r) //AM_WRITENOP AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_device, write_unsigned8) - AM_RANGE(0xe0, 0xe0) AM_WRITE(nbmj8891_vramsel_w) + AM_RANGE(0xe0, 0xe0) AM_WRITE(vramsel_w) AM_RANGE(0xf0, 0xf0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, dipsw1_r, outcoin_w) AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r) ADDRESS_MAP_END @@ -356,17 +356,17 @@ static ADDRESS_MAP_START( mgion_io_map, AS_IO, 8, nbmj8891_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r) AM_RANGE(0x00, 0x00) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w) - AM_RANGE(0x30, 0x37) AM_WRITE(nbmj8891_blitter_w) - AM_RANGE(0x40, 0x40) AM_WRITE(nbmj8891_clutsel_w) - AM_RANGE(0x60, 0x60) AM_WRITE(nbmj8891_romsel_w) - AM_RANGE(0x70, 0x70) AM_WRITE(nbmj8891_scrolly_w) + AM_RANGE(0x30, 0x37) AM_WRITE(blitter_w) + AM_RANGE(0x40, 0x40) AM_WRITE(clutsel_w) + AM_RANGE(0x60, 0x60) AM_WRITE(romsel_w) + AM_RANGE(0x70, 0x70) AM_WRITE(scrolly_w) AM_RANGE(0x80, 0x81) AM_DEVWRITE("fmsnd", ym3812_device, write) AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r) AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w) AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w) AM_RANGE(0xc0, 0xc0) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport3_r) //AM_WRITENOP AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_device, write_unsigned8) - AM_RANGE(0xe0, 0xe0) AM_WRITE(nbmj8891_vramsel_w) + AM_RANGE(0xe0, 0xe0) AM_WRITE(vramsel_w) AM_RANGE(0xf0, 0xf0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, dipsw1_r, outcoin_w) AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r) ADDRESS_MAP_END @@ -374,20 +374,20 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( omotesnd_io_map, AS_IO, 8, nbmj8891_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r) - AM_RANGE(0x00, 0x07) AM_WRITE(nbmj8891_blitter_w) - AM_RANGE(0x30, 0x30) AM_WRITE(nbmj8891_vramsel_w) - AM_RANGE(0x10, 0x10) AM_WRITE(nbmj8891_romsel_w) - AM_RANGE(0x20, 0x20) AM_WRITE(nbmj8891_clutsel_w) - AM_RANGE(0x40, 0x4f) AM_WRITE(nbmj8891_clut_w) + AM_RANGE(0x00, 0x07) AM_WRITE(blitter_w) + AM_RANGE(0x30, 0x30) AM_WRITE(vramsel_w) + AM_RANGE(0x10, 0x10) AM_WRITE(romsel_w) + AM_RANGE(0x20, 0x20) AM_WRITE(clutsel_w) + AM_RANGE(0x40, 0x4f) AM_WRITE(clut_w) // AM_RANGE(0x50, 0x50) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w) - AM_RANGE(0x70, 0x70) AM_WRITE(nbmj8891_scrolly_w) + AM_RANGE(0x70, 0x70) AM_WRITE(scrolly_w) AM_RANGE(0x81, 0x81) AM_DEVREAD("fmsnd", ay8910_device, data_r) AM_RANGE(0x82, 0x83) AM_DEVWRITE("fmsnd", ay8910_device, data_address_w) AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r) AM_WRITENOP AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w) AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w) AM_RANGE(0xc0, 0xc0) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport3_r) AM_WRITENOP - AM_RANGE(0xd0, 0xdf) AM_READ(nbmj8891_clut_r) + AM_RANGE(0xd0, 0xdf) AM_READ(clut_r) AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_device, write_unsigned8) AM_RANGE(0xf0, 0xf0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, dipsw1_r, outcoin_w) AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r) @@ -397,10 +397,10 @@ static ADDRESS_MAP_START( hanamomo_io_map, AS_IO, 8, nbmj8891_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r) AM_RANGE(0x00, 0x00) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w) - AM_RANGE(0x30, 0x37) AM_WRITE(nbmj8891_blitter_w) - AM_RANGE(0x40, 0x40) AM_WRITE(nbmj8891_clutsel_w) - AM_RANGE(0x60, 0x60) AM_WRITE(nbmj8891_romsel_w) - AM_RANGE(0x70, 0x70) AM_WRITE(nbmj8891_scrolly_w) + AM_RANGE(0x30, 0x37) AM_WRITE(blitter_w) + AM_RANGE(0x40, 0x40) AM_WRITE(clutsel_w) + AM_RANGE(0x60, 0x60) AM_WRITE(romsel_w) + AM_RANGE(0x70, 0x70) AM_WRITE(scrolly_w) AM_RANGE(0x80, 0x81) AM_DEVWRITE("fmsnd", ym3812_device, write) AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r) AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w) @@ -416,10 +416,10 @@ static ADDRESS_MAP_START( msjiken_io_map, AS_IO, 8, nbmj8891_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r) AM_RANGE(0x00, 0x00) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w) - AM_RANGE(0x40, 0x40) AM_WRITE(nbmj8891_clutsel_w) - AM_RANGE(0x50, 0x57) AM_WRITE(nbmj8891_blitter_w) - AM_RANGE(0x60, 0x60) AM_WRITE(nbmj8891_romsel_w) - AM_RANGE(0x70, 0x70) AM_WRITE(nbmj8891_scrolly_w) + AM_RANGE(0x40, 0x40) AM_WRITE(clutsel_w) + AM_RANGE(0x50, 0x57) AM_WRITE(blitter_w) + AM_RANGE(0x60, 0x60) AM_WRITE(romsel_w) + AM_RANGE(0x70, 0x70) AM_WRITE(scrolly_w) AM_RANGE(0x80, 0x81) AM_DEVWRITE("fmsnd", ym3812_device, write) AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r) AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w) @@ -434,11 +434,11 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( scandal_io_map, AS_IO, 8, nbmj8891_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r) - AM_RANGE(0x40, 0x4f) AM_WRITE(nbmj8891_clut_w) - AM_RANGE(0x00, 0x07) AM_WRITE(nbmj8891_blitter_w) - AM_RANGE(0x10, 0x10) AM_WRITE(nbmj8891_romsel_w) - AM_RANGE(0x20, 0x20) AM_WRITE(nbmj8891_clutsel_w) - AM_RANGE(0x50, 0x50) AM_WRITE(nbmj8891_scrolly_w) + AM_RANGE(0x40, 0x4f) AM_WRITE(clut_w) + AM_RANGE(0x00, 0x07) AM_WRITE(blitter_w) + AM_RANGE(0x10, 0x10) AM_WRITE(romsel_w) + AM_RANGE(0x20, 0x20) AM_WRITE(clutsel_w) + AM_RANGE(0x50, 0x50) AM_WRITE(scrolly_w) AM_RANGE(0x80, 0x81) AM_DEVWRITE("fmsnd", ym3812_device, write) AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r) AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w) @@ -453,11 +453,11 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( scandalm_io_map, AS_IO, 8, nbmj8891_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r) - AM_RANGE(0x00, 0x07) AM_WRITE(nbmj8891_blitter_w) - AM_RANGE(0x10, 0x10) AM_WRITE(nbmj8891_romsel_w) - AM_RANGE(0x20, 0x20) AM_WRITE(nbmj8891_clutsel_w) - AM_RANGE(0x40, 0x4f) AM_WRITE(nbmj8891_clut_w) - AM_RANGE(0x50, 0x50) AM_WRITE(nbmj8891_scrolly_w) + AM_RANGE(0x00, 0x07) AM_WRITE(blitter_w) + AM_RANGE(0x10, 0x10) AM_WRITE(romsel_w) + AM_RANGE(0x20, 0x20) AM_WRITE(clutsel_w) + AM_RANGE(0x40, 0x4f) AM_WRITE(clut_w) + AM_RANGE(0x50, 0x50) AM_WRITE(scrolly_w) AM_RANGE(0x81, 0x81) AM_DEVREAD("fmsnd", ay8910_device, data_r) AM_RANGE(0x82, 0x83) AM_DEVWRITE("fmsnd", ay8910_device, data_address_w) AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r) @@ -473,12 +473,12 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( bananadr_io_map, AS_IO, 8, nbmj8891_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r) - AM_RANGE(0x00, 0x07) AM_WRITE(nbmj8891_blitter_w) - AM_RANGE(0x10, 0x10) AM_WRITE(nbmj8891_romsel_w) - AM_RANGE(0x20, 0x20) AM_WRITE(nbmj8891_clutsel_w) - AM_RANGE(0x30, 0x30) AM_WRITE(nbmj8891_vramsel_w) - AM_RANGE(0x40, 0x4f) AM_WRITE(nbmj8891_clut_w) - AM_RANGE(0x50, 0x50) AM_WRITE(nbmj8891_scrolly_w) + AM_RANGE(0x00, 0x07) AM_WRITE(blitter_w) + AM_RANGE(0x10, 0x10) AM_WRITE(romsel_w) + AM_RANGE(0x20, 0x20) AM_WRITE(clutsel_w) + AM_RANGE(0x30, 0x30) AM_WRITE(vramsel_w) + AM_RANGE(0x40, 0x4f) AM_WRITE(clut_w) + AM_RANGE(0x50, 0x50) AM_WRITE(scrolly_w) AM_RANGE(0x80, 0x81) AM_DEVWRITE("fmsnd", ym3812_device, write) AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r) AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w) @@ -494,17 +494,17 @@ static ADDRESS_MAP_START( lovehous_io_map, AS_IO, 8, nbmj8891_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r) AM_RANGE(0x00, 0x00) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w) - AM_RANGE(0x40, 0x40) AM_WRITE(nbmj8891_clutsel_w) - AM_RANGE(0x50, 0x57) AM_WRITE(nbmj8891_blitter_w) - AM_RANGE(0x60, 0x60) AM_WRITE(nbmj8891_romsel_w) - AM_RANGE(0x70, 0x70) AM_WRITE(nbmj8891_scrolly_w) + AM_RANGE(0x40, 0x40) AM_WRITE(clutsel_w) + AM_RANGE(0x50, 0x57) AM_WRITE(blitter_w) + AM_RANGE(0x60, 0x60) AM_WRITE(romsel_w) + AM_RANGE(0x70, 0x70) AM_WRITE(scrolly_w) AM_RANGE(0x80, 0x81) AM_DEVWRITE("fmsnd", ym3812_device, write) AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r) //AM_WRITENOP AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w) AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w) AM_RANGE(0xc0, 0xc0) AM_READ_PORT("PORT0-2") AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_device, write_unsigned8) - AM_RANGE(0xe0, 0xe0) AM_WRITE(nbmj8891_vramsel_w) + AM_RANGE(0xe0, 0xe0) AM_WRITE(vramsel_w) AM_RANGE(0xf0, 0xf0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, dipsw1_r, outcoin_w) AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r) ADDRESS_MAP_END @@ -513,17 +513,17 @@ static ADDRESS_MAP_START( maiko_io_map, AS_IO, 8, nbmj8891_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r) AM_RANGE(0x00, 0x00) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w) - AM_RANGE(0x40, 0x40) AM_WRITE(nbmj8891_clutsel_w) - AM_RANGE(0x50, 0x57) AM_WRITE(nbmj8891_blitter_w) - AM_RANGE(0x60, 0x60) AM_WRITE(nbmj8891_romsel_w) - AM_RANGE(0x70, 0x70) AM_WRITE(nbmj8891_scrolly_w) + AM_RANGE(0x40, 0x40) AM_WRITE(clutsel_w) + AM_RANGE(0x50, 0x57) AM_WRITE(blitter_w) + AM_RANGE(0x60, 0x60) AM_WRITE(romsel_w) + AM_RANGE(0x70, 0x70) AM_WRITE(scrolly_w) AM_RANGE(0x80, 0x81) AM_DEVWRITE("fmsnd", ym3812_device, write) AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r) AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w) AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w) AM_RANGE(0xc0, 0xc0) AM_READ_PORT("PORT0-2") //AM_WRITENOP AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_device, write_unsigned8) - AM_RANGE(0xe0, 0xe0) AM_WRITE(nbmj8891_vramsel_w) + AM_RANGE(0xe0, 0xe0) AM_WRITE(vramsel_w) AM_RANGE(0xf0, 0xf0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, dipsw1_r, outcoin_w) AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r) ADDRESS_MAP_END @@ -539,7 +539,7 @@ static ADDRESS_MAP_START( taiwanmb_io_map, AS_IO, 8, nbmj8891_state ) // AM_RANGE(0xc0, 0xc0) AM_WRITENOP // ? // AM_RANGE(0xd0, 0xd0) AM_READ(ff_r) // irq ack? watchdog? AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_device, write_unsigned8) - AM_RANGE(0xe0, 0xe0) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw3_h_r) AM_WRITE(nbmj8891_taiwanmb_gfxdraw_w) // blitter draw start + AM_RANGE(0xe0, 0xe0) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw3_h_r) AM_WRITE(taiwanmb_gfxdraw_w) // blitter draw start AM_RANGE(0xe1, 0xe1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw3_l_r) AM_RANGE(0xf0, 0xf0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, dipsw2_r, outcoin_w) AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw1_r) @@ -2525,7 +2525,7 @@ static MACHINE_CONFIG_START( gionbana, nbmj8891_state ) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) MCFG_SCREEN_SIZE(512, 256) MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 8, 248-1) - MCFG_SCREEN_UPDATE_DRIVER(nbmj8891_state, screen_update_nbmj8891) + MCFG_SCREEN_UPDATE_DRIVER(nbmj8891_state, screen_update) MCFG_SCREEN_PALETTE("palette") MCFG_PALETTE_ADD("palette", 256) @@ -2594,7 +2594,7 @@ static MACHINE_CONFIG_DERIVED( mjcamerb, gionbana ) /* video hardware */ MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 16, 240-1) - MCFG_VIDEO_START_OVERRIDE(nbmj8891_state,nbmj8891_1layer) + MCFG_VIDEO_START_OVERRIDE(nbmj8891_state,_1layer) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( mmcamera, gionbana ) @@ -2611,7 +2611,7 @@ static MACHINE_CONFIG_DERIVED( mmcamera, gionbana ) /* video hardware */ MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 16, 240-1) - MCFG_VIDEO_START_OVERRIDE(nbmj8891_state,nbmj8891_1layer) + MCFG_VIDEO_START_OVERRIDE(nbmj8891_state,_1layer) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( hanamomo, gionbana ) @@ -2627,7 +2627,7 @@ static MACHINE_CONFIG_DERIVED( hanamomo, gionbana ) /* video hardware */ MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 16, 240-1) - MCFG_VIDEO_START_OVERRIDE(nbmj8891_state,nbmj8891_1layer) + MCFG_VIDEO_START_OVERRIDE(nbmj8891_state,_1layer) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( msjiken, hanamomo ) @@ -2648,7 +2648,7 @@ static MACHINE_CONFIG_DERIVED( telmahjn, gionbana ) MCFG_NB1413M3_TYPE( NB1413M3_TELMAHJN ) /* video hardware */ - MCFG_VIDEO_START_OVERRIDE(nbmj8891_state,nbmj8891_1layer) + MCFG_VIDEO_START_OVERRIDE(nbmj8891_state,_1layer) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( mgmen89, telmahjn ) @@ -2667,7 +2667,7 @@ static MACHINE_CONFIG_DERIVED( mjfocus, gionbana ) MCFG_NB1413M3_TYPE( NB1413M3_MJFOCUS ) /* video hardware */ - MCFG_VIDEO_START_OVERRIDE(nbmj8891_state,nbmj8891_1layer) + MCFG_VIDEO_START_OVERRIDE(nbmj8891_state,_1layer) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( pairsnb, gionbana ) @@ -2815,7 +2815,7 @@ static MACHINE_CONFIG_DERIVED( mjfocusm, gionbana ) /* video hardware */ MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 16, 240-1) - MCFG_VIDEO_START_OVERRIDE(nbmj8891_state,nbmj8891_1layer) + MCFG_VIDEO_START_OVERRIDE(nbmj8891_state,_1layer) /* sound hardware */ MCFG_SOUND_REPLACE("fmsnd", AY8910, 1250000) @@ -2846,7 +2846,7 @@ static MACHINE_CONFIG_DERIVED( taiwanmb, gionbana ) /* video hardware */ MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 16, 240-1) - MCFG_VIDEO_START_OVERRIDE(nbmj8891_state,nbmj8891_1layer) + MCFG_VIDEO_START_OVERRIDE(nbmj8891_state,_1layer) /* sound hardware */ MCFG_SOUND_REPLACE("fmsnd", AY8910, 1250000) @@ -3828,36 +3828,36 @@ ROM_END // YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MONITOR,COMPANY,FULLNAME,FLAGS) -GAME( 1988, msjiken, 0, msjiken, msjiken, driver_device, 0, ROT270, "Nichibutsu", "Mahjong Satsujin Jiken (Japan 881017)", 0 ) -GAME( 1988, hanamomo, 0, hanamomo, hanamomo, driver_device, 0, ROT0, "Nichibutsu", "Mahjong Hana no Momoko gumi (Japan 881201)", 0 ) -GAME( 1988, hanamomb, hanamomo, hanamomo, hanamomo, driver_device, 0, ROT0, "Nichibutsu", "Mahjong Hana no Momoko gumi (Japan 881125)", 0 ) -GAME( 1988, telmahjn, 0, telmahjn, telmahjn, nbmj8891_state, telmahjn, ROT270, "Nichibutsu", "Telephone Mahjong (Japan 890111)", 0 ) -GAME( 1989, gionbana, 0, gionbana, gionbana, nbmj8891_state, gionbana, ROT0, "Nichibutsu", "Gionbana (Japan 890120)", 0 ) -GAME( 1989, mgion, 0, mgion, mgion, driver_device, 0, ROT0, "Nichibutsu", "Gionbana [BET] (Japan 890207)", 0 ) -GAME( 1989, omotesnd, 0, omotesnd, omotesnd, nbmj8891_state, omotesnd, ROT0, "Anime Tec", "Omotesandou (Japan 890215)", 0 ) -GAME( 1989, abunai, 0, abunai, abunai, driver_device, 0, ROT0, "Green Soft", "Abunai Houkago - Mou Matenai (Japan 890325)", 0 ) -GAME( 1989, mjfocus, 0, mjfocus, mjfocus, nbmj8891_state, mjfocus, ROT0, "Nichibutsu", "Mahjong Focus (Japan 890313)", 0 ) -GAME( 1989, mjfocusm, mjfocus, mjfocusm, mjfocusm, nbmj8891_state, mjfocusm, ROT0, "Nichibutsu", "Mahjong Focus [BET] (Japan 890510)", 0 ) -GAME( 1989, peepshow, mjfocus, mjfocus, peepshow, nbmj8891_state, mjfocus, ROT0, "AC", "Nozokimeguri Mahjong Peep Show (Japan 890404)", 0 ) -GAME( 1989, mjcamerb, 0, mjcamerb, mjcamerb, driver_device, 0, ROT0, "Miki Syouji", "Mahjong Camera Kozou (set 2) (Japan 881109)", 0 ) -GAME( 1989, mmcamera, mjcamerb, mmcamera, mmcamera, driver_device, 0, ROT0, "Miki Syouji", "Mahjong Camera Kozou [BET] (Japan 890509)", 0 ) -GAME( 1989, scandal, 0, scandal, scandal, nbmj8891_state, scandal, ROT0, "Nichibutsu", "Scandal Mahjong (Japan 890213)", 0 ) -GAME( 1989, scandalm, scandal, scandalm, scandalm, driver_device, 0, ROT0, "Nichibutsu", "Scandal Mahjong [BET] (Japan 890217)", 0 ) -GAME( 1989, mgmen89, 0, mgmen89, mgmen89, nbmj8891_state, mgmen89, ROT0, "Nichibutsu", "Mahjong G-MEN'89 (Japan 890425)", 0 ) -GAME( 1989, mjnanpas, 0, mjnanpas, mjnanpas, nbmj8891_state, mjnanpas, ROT0, "Brooks", "Mahjong Nanpa Story (Japan 890713)", 0 ) -GAME( 1989, mjnanpaa, mjnanpas, mjnanpas, mjnanpaa, nbmj8891_state, mjnanpas, ROT0, "Brooks", "Mahjong Nanpa Story (Japan 890712)", 0 ) -GAME( 1989, mjnanpau, mjnanpas, mjnanpas, mjnanpas, nbmj8891_state, mjnanpas, ROT0, "Brooks", "Mahjong Nanpa Story (Ura) (Japan 890805)", 0 ) -GAME( 1989, bananadr, 0, bananadr, bananadr, driver_device, 0, ROT0, "Digital Soft", "Mahjong Banana Dream [BET] (Japan 891124)", 0 ) -GAME( 1990, mladyhtr, 0, mladyhtr, mladyhtr, driver_device, 0, ROT0, "Nichibutsu", "Mahjong The Lady Hunter (Japan 900509)", 0 ) -GAME( 1990, chinmoku, 0, chinmoku, chinmoku, driver_device, 0, ROT0, "Nichibutsu", "Mahjong Chinmoku no Hentai (Japan 900511)", 0 ) -GAME( 1990, maiko, 0, maiko, maiko, driver_device, 0, ROT0, "Nichibutsu", "Maikobana (Japan 900802)", 0 ) -GAME( 1990, mmaiko, 0, mmaiko, mmaiko, driver_device, 0, ROT0, "Nichibutsu", "Maikobana [BET] (Japan 900911)", 0 ) -GAME( 1990, hnxmasev, 0, hnxmasev, maiko, driver_device, 0, ROT180, "Nichibutsu / AV Japan", "AV Hanafuda Hana no Christmas Eve (Japan 901204)", GAME_NOT_WORKING ) -GAME( 1990, hnageman, 0, hnageman, maiko, driver_device, 0, ROT180, "Nichibutsu / AV Japan", "AV Hanafuda Hana no Ageman (Japan 900716)", GAME_NOT_WORKING ) -GAME( 1990, club90s, 0, club90s, club90s, driver_device, 0, ROT0, "Nichibutsu", "Mahjong CLUB 90's (set 1) (Japan 900919)", 0 ) -GAME( 1990, club90sa, club90s, club90s, club90s, driver_device, 0, ROT0, "Nichibutsu", "Mahjong CLUB 90's (set 2) (Japan 900919)", 0 ) -GAME( 1990, lovehous, club90s, lovehous, lovehous, driver_device, 0, ROT0, "Nichibutsu", "Mahjong Love House [BET] (Japan 901024)", 0 ) -GAME( 1991, hanaoji, 0, hanaoji, hanaoji, driver_device, 0, ROT0, "Nichibutsu", "Hana to Ojisan [BET] (Japan 911209)", 0 ) -GAME( 1988, taiwanmb, 0, taiwanmb, taiwanmb, driver_device, 0, ROT0, "Miki Syouji", "Taiwan Mahjong [BET] (Japan 881208)", 0 ) -GAME( 1989, pairsnb, 0, pairsnb, pairsnb, nbmj8891_state, pairsnb, ROT0, "Nichibutsu", "Pairs (Nichibutsu) (Japan 890822)", 0 ) -GAME( 1989, pairsten, pairsnb, pairsten, pairsnb, nbmj8891_state, pairsten, ROT0, "System Ten", "Pairs (System Ten) (Japan 890826)", 0 ) +GAME( 1988, msjiken, 0, msjiken, msjiken, driver_device, 0, ROT270, "Nichibutsu", "Mahjong Satsujin Jiken (Japan 881017)", GAME_SUPPORTS_SAVE ) +GAME( 1988, hanamomo, 0, hanamomo, hanamomo, driver_device, 0, ROT0, "Nichibutsu", "Mahjong Hana no Momoko gumi (Japan 881201)", GAME_SUPPORTS_SAVE ) +GAME( 1988, hanamomb, hanamomo, hanamomo, hanamomo, driver_device, 0, ROT0, "Nichibutsu", "Mahjong Hana no Momoko gumi (Japan 881125)", GAME_SUPPORTS_SAVE ) +GAME( 1988, telmahjn, 0, telmahjn, telmahjn, nbmj8891_state, telmahjn, ROT270, "Nichibutsu", "Telephone Mahjong (Japan 890111)", GAME_SUPPORTS_SAVE ) +GAME( 1989, gionbana, 0, gionbana, gionbana, nbmj8891_state, gionbana, ROT0, "Nichibutsu", "Gionbana (Japan 890120)", GAME_SUPPORTS_SAVE ) +GAME( 1989, mgion, 0, mgion, mgion, driver_device, 0, ROT0, "Nichibutsu", "Gionbana [BET] (Japan 890207)", GAME_SUPPORTS_SAVE ) +GAME( 1989, omotesnd, 0, omotesnd, omotesnd, nbmj8891_state, omotesnd, ROT0, "Anime Tec", "Omotesandou (Japan 890215)", GAME_SUPPORTS_SAVE ) +GAME( 1989, abunai, 0, abunai, abunai, driver_device, 0, ROT0, "Green Soft", "Abunai Houkago - Mou Matenai (Japan 890325)", GAME_SUPPORTS_SAVE ) +GAME( 1989, mjfocus, 0, mjfocus, mjfocus, nbmj8891_state, mjfocus, ROT0, "Nichibutsu", "Mahjong Focus (Japan 890313)", GAME_SUPPORTS_SAVE ) +GAME( 1989, mjfocusm, mjfocus, mjfocusm, mjfocusm, nbmj8891_state, mjfocusm, ROT0, "Nichibutsu", "Mahjong Focus [BET] (Japan 890510)", GAME_SUPPORTS_SAVE ) +GAME( 1989, peepshow, mjfocus, mjfocus, peepshow, nbmj8891_state, mjfocus, ROT0, "AC", "Nozokimeguri Mahjong Peep Show (Japan 890404)", GAME_SUPPORTS_SAVE ) +GAME( 1989, mjcamerb, 0, mjcamerb, mjcamerb, driver_device, 0, ROT0, "Miki Syouji", "Mahjong Camera Kozou (set 2) (Japan 881109)", GAME_SUPPORTS_SAVE ) +GAME( 1989, mmcamera, mjcamerb, mmcamera, mmcamera, driver_device, 0, ROT0, "Miki Syouji", "Mahjong Camera Kozou [BET] (Japan 890509)", GAME_SUPPORTS_SAVE ) +GAME( 1989, scandal, 0, scandal, scandal, nbmj8891_state, scandal, ROT0, "Nichibutsu", "Scandal Mahjong (Japan 890213)", GAME_SUPPORTS_SAVE ) +GAME( 1989, scandalm, scandal, scandalm, scandalm, driver_device, 0, ROT0, "Nichibutsu", "Scandal Mahjong [BET] (Japan 890217)", GAME_SUPPORTS_SAVE ) +GAME( 1989, mgmen89, 0, mgmen89, mgmen89, nbmj8891_state, mgmen89, ROT0, "Nichibutsu", "Mahjong G-MEN'89 (Japan 890425)", GAME_SUPPORTS_SAVE ) +GAME( 1989, mjnanpas, 0, mjnanpas, mjnanpas, nbmj8891_state, mjnanpas, ROT0, "Brooks", "Mahjong Nanpa Story (Japan 890713)", GAME_SUPPORTS_SAVE ) +GAME( 1989, mjnanpaa, mjnanpas, mjnanpas, mjnanpaa, nbmj8891_state, mjnanpas, ROT0, "Brooks", "Mahjong Nanpa Story (Japan 890712)", GAME_SUPPORTS_SAVE ) +GAME( 1989, mjnanpau, mjnanpas, mjnanpas, mjnanpas, nbmj8891_state, mjnanpas, ROT0, "Brooks", "Mahjong Nanpa Story (Ura) (Japan 890805)", GAME_SUPPORTS_SAVE ) +GAME( 1989, bananadr, 0, bananadr, bananadr, driver_device, 0, ROT0, "Digital Soft", "Mahjong Banana Dream [BET] (Japan 891124)", GAME_SUPPORTS_SAVE ) +GAME( 1990, mladyhtr, 0, mladyhtr, mladyhtr, driver_device, 0, ROT0, "Nichibutsu", "Mahjong The Lady Hunter (Japan 900509)", GAME_SUPPORTS_SAVE ) +GAME( 1990, chinmoku, 0, chinmoku, chinmoku, driver_device, 0, ROT0, "Nichibutsu", "Mahjong Chinmoku no Hentai (Japan 900511)", GAME_SUPPORTS_SAVE ) +GAME( 1990, maiko, 0, maiko, maiko, driver_device, 0, ROT0, "Nichibutsu", "Maikobana (Japan 900802)", GAME_SUPPORTS_SAVE ) +GAME( 1990, mmaiko, 0, mmaiko, mmaiko, driver_device, 0, ROT0, "Nichibutsu", "Maikobana [BET] (Japan 900911)", GAME_SUPPORTS_SAVE ) +GAME( 1990, hnxmasev, 0, hnxmasev, maiko, driver_device, 0, ROT180, "Nichibutsu / AV Japan", "AV Hanafuda Hana no Christmas Eve (Japan 901204)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) +GAME( 1990, hnageman, 0, hnageman, maiko, driver_device, 0, ROT180, "Nichibutsu / AV Japan", "AV Hanafuda Hana no Ageman (Japan 900716)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) +GAME( 1990, club90s, 0, club90s, club90s, driver_device, 0, ROT0, "Nichibutsu", "Mahjong CLUB 90's (set 1) (Japan 900919)", GAME_SUPPORTS_SAVE ) +GAME( 1990, club90sa, club90s, club90s, club90s, driver_device, 0, ROT0, "Nichibutsu", "Mahjong CLUB 90's (set 2) (Japan 900919)", GAME_SUPPORTS_SAVE ) +GAME( 1990, lovehous, club90s, lovehous, lovehous, driver_device, 0, ROT0, "Nichibutsu", "Mahjong Love House [BET] (Japan 901024)", GAME_SUPPORTS_SAVE ) +GAME( 1991, hanaoji, 0, hanaoji, hanaoji, driver_device, 0, ROT0, "Nichibutsu", "Hana to Ojisan [BET] (Japan 911209)", GAME_SUPPORTS_SAVE ) +GAME( 1988, taiwanmb, 0, taiwanmb, taiwanmb, driver_device, 0, ROT0, "Miki Syouji", "Taiwan Mahjong [BET] (Japan 881208)", GAME_SUPPORTS_SAVE ) +GAME( 1989, pairsnb, 0, pairsnb, pairsnb, nbmj8891_state, pairsnb, ROT0, "Nichibutsu", "Pairs (Nichibutsu) (Japan 890822)", GAME_SUPPORTS_SAVE ) +GAME( 1989, pairsten, pairsnb, pairsten, pairsnb, nbmj8891_state, pairsten, ROT0, "System Ten", "Pairs (System Ten) (Japan 890826)", GAME_SUPPORTS_SAVE ) diff --git a/src/mame/includes/nbmj8891.h b/src/mame/includes/nbmj8891.h index fcb8e4e50d6..b20933660f0 100644 --- a/src/mame/includes/nbmj8891.h +++ b/src/mame/includes/nbmj8891.h @@ -46,26 +46,31 @@ public: int m_param_old[0x10]; int m_param_cnt; int m_flipscreen_old; + emu_timer *m_blitter_timer; + + DECLARE_READ8_MEMBER(palette_type1_r); + DECLARE_WRITE8_MEMBER(palette_type1_w); + DECLARE_READ8_MEMBER(palette_type2_r); + DECLARE_WRITE8_MEMBER(palette_type2_w); + DECLARE_READ8_MEMBER(palette_type3_r); + DECLARE_WRITE8_MEMBER(palette_type3_w); + DECLARE_WRITE8_MEMBER(clutsel_w); + DECLARE_READ8_MEMBER(clut_r); + DECLARE_WRITE8_MEMBER(clut_w); + DECLARE_WRITE8_MEMBER(blitter_w); + DECLARE_WRITE8_MEMBER(scrolly_w); + DECLARE_WRITE8_MEMBER(vramsel_w); + DECLARE_WRITE8_MEMBER(romsel_w); + DECLARE_READ8_MEMBER(taiwanmb_unk_r); - DECLARE_READ8_MEMBER(nbmj8891_palette_type1_r); - DECLARE_WRITE8_MEMBER(nbmj8891_palette_type1_w); - DECLARE_READ8_MEMBER(nbmj8891_palette_type2_r); - DECLARE_WRITE8_MEMBER(nbmj8891_palette_type2_w); - DECLARE_READ8_MEMBER(nbmj8891_palette_type3_r); - DECLARE_WRITE8_MEMBER(nbmj8891_palette_type3_w); - DECLARE_WRITE8_MEMBER(nbmj8891_clutsel_w); - DECLARE_READ8_MEMBER(nbmj8891_clut_r); - DECLARE_WRITE8_MEMBER(nbmj8891_clut_w); - DECLARE_WRITE8_MEMBER(nbmj8891_blitter_w); - DECLARE_WRITE8_MEMBER(nbmj8891_taiwanmb_blitter_w); - DECLARE_WRITE8_MEMBER(nbmj8891_taiwanmb_gfxdraw_w); - DECLARE_WRITE8_MEMBER(nbmj8891_taiwanmb_gfxflag_w); - DECLARE_WRITE8_MEMBER(nbmj8891_taiwanmb_mcu_w); - DECLARE_WRITE8_MEMBER(nbmj8891_scrolly_w); - DECLARE_WRITE8_MEMBER(nbmj8891_vramsel_w); - DECLARE_WRITE8_MEMBER(nbmj8891_romsel_w); + DECLARE_WRITE8_MEMBER(taiwanmb_blitter_w); + DECLARE_WRITE8_MEMBER(taiwanmb_gfxdraw_w); + DECLARE_WRITE8_MEMBER(taiwanmb_gfxflag_w); + DECLARE_WRITE8_MEMBER(taiwanmb_mcu_w); + DECLARE_CUSTOM_INPUT_MEMBER(nb1413m3_busyflag_r); DECLARE_CUSTOM_INPUT_MEMBER(nb1413m3_outcoin_flag_r); + DECLARE_DRIVER_INIT(pairsten); DECLARE_DRIVER_INIT(telmahjn); DECLARE_DRIVER_INIT(gionbana); @@ -77,12 +82,16 @@ public: DECLARE_DRIVER_INIT(pairsnb); DECLARE_DRIVER_INIT(mjnanpas); virtual void video_start(); - DECLARE_VIDEO_START(nbmj8891_1layer); - UINT32 screen_update_nbmj8891(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void nbmj8891_vramflip(int vram); + DECLARE_VIDEO_START(_1layer); + + UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + void vramflip(int vram); void update_pixel0(int x, int y); void update_pixel1(int x, int y); - void nbmj8891_gfxdraw(); + void gfxdraw(); + + void common_save_state(); + void postload(); protected: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); diff --git a/src/mame/machine/nb1413m3.c b/src/mame/machine/nb1413m3.c index 29985053e02..94445db950e 100644 --- a/src/mame/machine/nb1413m3.c +++ b/src/mame/machine/nb1413m3.c @@ -563,8 +563,6 @@ READ8_MEMBER( nb1413m3_device::dipsw3_h_r ) WRITE8_MEMBER( nb1413m3_device::outcoin_w ) { - static int counter = 0; - m_outcoin_enable = (data & 0x04) >> 2; switch (m_nb1413m3_type) @@ -588,10 +586,10 @@ WRITE8_MEMBER( nb1413m3_device::outcoin_w ) case NB1413M3_MMAIKO: if (m_outcoin_enable) { - if (counter++ == 2) + if (m_counter++ == 2) { m_outcoin_flag ^= 1; - counter = 0; + m_counter = 0; } } break; diff --git a/src/mame/video/nbmj8891.c b/src/mame/video/nbmj8891.c index 9bb83f6a44e..cb4c44bdf21 100644 --- a/src/mame/video/nbmj8891.c +++ b/src/mame/video/nbmj8891.c @@ -16,12 +16,12 @@ ******************************************************************************/ -READ8_MEMBER(nbmj8891_state::nbmj8891_palette_type1_r) +READ8_MEMBER(nbmj8891_state::palette_type1_r) { return m_palette_ptr[offset]; } -WRITE8_MEMBER(nbmj8891_state::nbmj8891_palette_type1_w) +WRITE8_MEMBER(nbmj8891_state::palette_type1_w) { int r, g, b; @@ -38,12 +38,12 @@ WRITE8_MEMBER(nbmj8891_state::nbmj8891_palette_type1_w) m_palette->set_pen_color((offset >> 1), pal4bit(r), pal4bit(g), pal4bit(b)); } -READ8_MEMBER(nbmj8891_state::nbmj8891_palette_type2_r) +READ8_MEMBER(nbmj8891_state::palette_type2_r) { return m_palette_ptr[offset]; } -WRITE8_MEMBER(nbmj8891_state::nbmj8891_palette_type2_w) +WRITE8_MEMBER(nbmj8891_state::palette_type2_w) { int r, g, b; @@ -60,12 +60,12 @@ WRITE8_MEMBER(nbmj8891_state::nbmj8891_palette_type2_w) m_palette->set_pen_color((offset & 0x0ff), pal4bit(r), pal4bit(g), pal4bit(b)); } -READ8_MEMBER(nbmj8891_state::nbmj8891_palette_type3_r) +READ8_MEMBER(nbmj8891_state::palette_type3_r) { return m_palette_ptr[offset]; } -WRITE8_MEMBER(nbmj8891_state::nbmj8891_palette_type3_w) +WRITE8_MEMBER(nbmj8891_state::palette_type3_w) { int r, g, b; @@ -82,17 +82,17 @@ WRITE8_MEMBER(nbmj8891_state::nbmj8891_palette_type3_w) m_palette->set_pen_color((offset >> 1), pal4bit(r), pal4bit(g), pal4bit(b)); } -WRITE8_MEMBER(nbmj8891_state::nbmj8891_clutsel_w) +WRITE8_MEMBER(nbmj8891_state::clutsel_w) { m_clutsel = data; } -READ8_MEMBER(nbmj8891_state::nbmj8891_clut_r) +READ8_MEMBER(nbmj8891_state::clut_r) { return m_clut[offset]; } -WRITE8_MEMBER(nbmj8891_state::nbmj8891_clut_w) +WRITE8_MEMBER(nbmj8891_state::clut_w) { m_clut[((m_clutsel & 0x7f) * 0x10) + (offset & 0x0f)] = data; } @@ -101,7 +101,7 @@ WRITE8_MEMBER(nbmj8891_state::nbmj8891_clut_w) ******************************************************************************/ -WRITE8_MEMBER(nbmj8891_state::nbmj8891_blitter_w) +WRITE8_MEMBER(nbmj8891_state::blitter_w) { switch (offset) { @@ -112,20 +112,20 @@ WRITE8_MEMBER(nbmj8891_state::nbmj8891_blitter_w) case 0x04: m_blitter_sizex = data; break; case 0x05: m_blitter_sizey = data; /* writing here also starts the blit */ - nbmj8891_gfxdraw(); + gfxdraw(); break; case 0x06: m_blitter_direction_x = (data & 0x01) ? 1 : 0; m_blitter_direction_y = (data & 0x02) ? 1 : 0; m_flipscreen = (data & 0x04) ? 1 : 0; m_dispflag = (data & 0x08) ? 0 : 1; - if (m_gfxdraw_mode) nbmj8891_vramflip(1); - nbmj8891_vramflip(0); + if (m_gfxdraw_mode) vramflip(1); + vramflip(0); break; case 0x07: break; } } -WRITE8_MEMBER(nbmj8891_state::nbmj8891_taiwanmb_blitter_w) +WRITE8_MEMBER(nbmj8891_state::taiwanmb_blitter_w) { switch (offset) { @@ -138,19 +138,19 @@ WRITE8_MEMBER(nbmj8891_state::nbmj8891_taiwanmb_blitter_w) } } -WRITE8_MEMBER(nbmj8891_state::nbmj8891_taiwanmb_gfxdraw_w) +WRITE8_MEMBER(nbmj8891_state::taiwanmb_gfxdraw_w) { -// nbmj8891_gfxdraw(); +// gfxdraw(); } -WRITE8_MEMBER(nbmj8891_state::nbmj8891_taiwanmb_gfxflag_w) +WRITE8_MEMBER(nbmj8891_state::taiwanmb_gfxflag_w) { m_flipscreen = (data & 0x04) ? 1 : 0; - nbmj8891_vramflip(0); + vramflip(0); } -WRITE8_MEMBER(nbmj8891_state::nbmj8891_taiwanmb_mcu_w) +WRITE8_MEMBER(nbmj8891_state::taiwanmb_mcu_w) { m_param_old[m_param_cnt & 0x0f] = data; @@ -223,7 +223,7 @@ WRITE8_MEMBER(nbmj8891_state::nbmj8891_taiwanmb_mcu_w) m_blitter_sizey ^= 0x00; } - nbmj8891_gfxdraw(); + gfxdraw(); } // m_blitter_direction_x = 0; // for debug @@ -233,12 +233,12 @@ WRITE8_MEMBER(nbmj8891_state::nbmj8891_taiwanmb_mcu_w) m_param_cnt++; } -WRITE8_MEMBER(nbmj8891_state::nbmj8891_scrolly_w) +WRITE8_MEMBER(nbmj8891_state::scrolly_w) { m_scrolly = data; } -WRITE8_MEMBER(nbmj8891_state::nbmj8891_vramsel_w) +WRITE8_MEMBER(nbmj8891_state::vramsel_w) { /* protection - not sure about this */ m_nb1413m3->m_sndromrgntag = (data & 0x20) ? "protection" : "voice"; @@ -246,7 +246,7 @@ WRITE8_MEMBER(nbmj8891_state::nbmj8891_vramsel_w) m_vram = data; } -WRITE8_MEMBER(nbmj8891_state::nbmj8891_romsel_w) +WRITE8_MEMBER(nbmj8891_state::romsel_w) { int gfxlen = memregion("gfx1")->bytes(); m_gfxrom = (data & 0x0f); @@ -264,7 +264,7 @@ WRITE8_MEMBER(nbmj8891_state::nbmj8891_romsel_w) ******************************************************************************/ -void nbmj8891_state::nbmj8891_vramflip(int vram) +void nbmj8891_state::vramflip(int vram) { int x, y; UINT8 color1, color2; @@ -317,7 +317,7 @@ void nbmj8891_state::device_timer(emu_timer &timer, device_timer_id id, int para } } -void nbmj8891_state::nbmj8891_gfxdraw() +void nbmj8891_state::gfxdraw() { UINT8 *GFX = memregion("gfx1")->base(); int width = m_screen->width(); @@ -473,29 +473,36 @@ void nbmj8891_state::nbmj8891_gfxdraw() } m_nb1413m3->m_busyflag = 0; - timer_set(attotime::from_hz(400000) * m_nb1413m3->m_busyctr, TIMER_BLITTER); + m_blitter_timer->adjust(attotime::from_hz(400000) * m_nb1413m3->m_busyctr); } /****************************************************************************** ******************************************************************************/ -VIDEO_START_MEMBER(nbmj8891_state,nbmj8891_1layer) +VIDEO_START_MEMBER(nbmj8891_state,_1layer) { UINT8 *CLUT = memregion("protection")->base(); - int i; int width = m_screen->width(); int height = m_screen->height(); + m_blitter_timer = timer_alloc(TIMER_BLITTER); m_screen->register_screen_bitmap(m_tmpbitmap0); m_videoram0 = auto_alloc_array(machine(), UINT8, width * height); m_palette_ptr = auto_alloc_array(machine(), UINT8, 0x200); m_clut = auto_alloc_array(machine(), UINT8, 0x800); memset(m_videoram0, 0xff, (width * height * sizeof(char))); m_gfxdraw_mode = 0; + m_screen_refresh = 1; if (m_nb1413m3->m_nb1413m3_type == NB1413M3_TAIWANMB) - for (i = 0; i < 0x0800; i++) m_clut[i] = CLUT[i]; + { + for (int i = 0; i < 0x0800; i++) m_clut[i] = CLUT[i]; + save_item(NAME(m_param_cnt)); + save_item(NAME(m_param_old)); + } + + common_save_state(); } void nbmj8891_state::video_start() @@ -503,6 +510,7 @@ void nbmj8891_state::video_start() int width = m_screen->width(); int height = m_screen->height(); + m_blitter_timer = timer_alloc(TIMER_BLITTER); m_screen->register_screen_bitmap(m_tmpbitmap0); m_screen->register_screen_bitmap(m_tmpbitmap1); m_videoram0 = auto_alloc_array(machine(), UINT8, width * height); @@ -512,13 +520,46 @@ void nbmj8891_state::video_start() memset(m_videoram0, 0xff, (width * height * sizeof(UINT8))); memset(m_videoram1, 0xff, (width * height * sizeof(UINT8))); m_gfxdraw_mode = 1; + m_screen_refresh = 1; + + common_save_state(); + save_pointer(NAME(m_videoram1), width * height); +} + +void nbmj8891_state::common_save_state() +{ + save_item(NAME(m_scrolly)); + save_item(NAME(m_blitter_destx)); + save_item(NAME(m_blitter_desty)); + save_item(NAME(m_blitter_sizex)); + save_item(NAME(m_blitter_sizey)); + save_item(NAME(m_blitter_src_addr)); + save_item(NAME(m_blitter_direction_x)); + save_item(NAME(m_blitter_direction_y)); + save_item(NAME(m_vram)); + save_item(NAME(m_gfxrom)); + save_item(NAME(m_dispflag)); + save_item(NAME(m_flipscreen)); + save_item(NAME(m_clutsel)); + save_item(NAME(m_gfxdraw_mode)); + save_pointer(NAME(m_videoram0), m_screen->width() * m_screen->height()); + save_pointer(NAME(m_palette_ptr), 0x200); + save_pointer(NAME(m_clut), 0x800); + save_item(NAME(m_flipscreen_old)); + + machine().save().register_postload(save_prepost_delegate(FUNC(nbmj8891_state::postload), this)); +} + +void nbmj8891_state::postload() +{ + m_screen_refresh = 1; } /****************************************************************************** ******************************************************************************/ -UINT32 nbmj8891_state::screen_update_nbmj8891(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +UINT32 nbmj8891_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { int x, y;