mirror of
https://github.com/holub/mame
synced 2025-10-06 17:08:28 +03:00
nbmj8991.c: added save state support (nw)
This commit is contained in:
parent
0a794fd6ce
commit
3a9f5f622a
@ -39,29 +39,15 @@ Notes:
|
||||
#include "machine/nvram.h"
|
||||
|
||||
|
||||
WRITE8_MEMBER(nbmj8991_state::nbmj8991_soundbank_w)
|
||||
WRITE8_MEMBER(nbmj8991_state::soundbank_w)
|
||||
{
|
||||
if (!(data & 0x80)) soundlatch_clear_byte_w(space, 0, 0);
|
||||
membank("bank1")->set_entry(data & 0x03);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(nbmj8991_state::nbmj8991_sound_w)
|
||||
{
|
||||
soundlatch_byte_w(space, 0, data);
|
||||
}
|
||||
|
||||
READ8_MEMBER(nbmj8991_state::nbmj8991_sound_r)
|
||||
{
|
||||
int data;
|
||||
|
||||
data = soundlatch_byte_r(space,0);
|
||||
return data;
|
||||
}
|
||||
|
||||
void nbmj8991_state::machine_reset()
|
||||
{
|
||||
device_t *audiocpu = m_audiocpu;
|
||||
if (audiocpu != NULL && audiocpu->type() == Z80)
|
||||
if (m_audiocpu)
|
||||
{
|
||||
membank("bank1")->configure_entries(0, 4, memregion("audiocpu")->base() + 0x8000, 0x8000);
|
||||
membank("bank1")->set_entry(0);
|
||||
@ -109,70 +95,70 @@ DRIVER_INIT_MEMBER(nbmj8991_state,tokimbsj)
|
||||
|
||||
static ADDRESS_MAP_START( pstadium_map, AS_PROGRAM, 8, nbmj8991_state )
|
||||
AM_RANGE(0x0000, 0xefff) AM_ROM
|
||||
AM_RANGE(0xf000, 0xf00f) AM_READWRITE(nbmj8991_clut_r,nbmj8991_clut_w)
|
||||
AM_RANGE(0xf200, 0xf3ff) AM_RAM_WRITE(nbmj8991_palette_type3_w) AM_SHARE("paletteram")
|
||||
AM_RANGE(0xf000, 0xf00f) AM_READWRITE(clut_r,clut_w)
|
||||
AM_RANGE(0xf200, 0xf3ff) AM_RAM_WRITE(palette_type3_w) AM_SHARE("paletteram")
|
||||
AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("nvram") // finalbny
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( triplew1_map, AS_PROGRAM, 8, nbmj8991_state )
|
||||
AM_RANGE(0x0000, 0xefff) AM_ROM
|
||||
AM_RANGE(0xf000, 0xf1ff) AM_RAM_WRITE(nbmj8991_palette_type3_w) AM_SHARE("paletteram")
|
||||
AM_RANGE(0xf200, 0xf20f) AM_READWRITE(nbmj8991_clut_r,nbmj8991_clut_w)
|
||||
AM_RANGE(0xf000, 0xf1ff) AM_RAM_WRITE(palette_type3_w) AM_SHARE("paletteram")
|
||||
AM_RANGE(0xf200, 0xf20f) AM_READWRITE(clut_r,clut_w)
|
||||
AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("nvram") // mjgottub
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( triplew2_map, AS_PROGRAM, 8, nbmj8991_state )
|
||||
AM_RANGE(0x0000, 0xefff) AM_ROM
|
||||
AM_RANGE(0xf000, 0xf1ff) AM_RAM_WRITE(nbmj8991_palette_type3_w) AM_SHARE("paletteram")
|
||||
AM_RANGE(0xf400, 0xf40f) AM_READWRITE(nbmj8991_clut_r,nbmj8991_clut_w)
|
||||
AM_RANGE(0xf000, 0xf1ff) AM_RAM_WRITE(palette_type3_w) AM_SHARE("paletteram")
|
||||
AM_RANGE(0xf400, 0xf40f) AM_READWRITE(clut_r,clut_w)
|
||||
AM_RANGE(0xf800, 0xffff) AM_RAM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( mjlstory_map, AS_PROGRAM, 8, nbmj8991_state )
|
||||
AM_RANGE(0x0000, 0xefff) AM_ROM
|
||||
AM_RANGE(0xf200, 0xf3ff) AM_RAM_WRITE(nbmj8991_palette_type3_w) AM_SHARE("paletteram")
|
||||
AM_RANGE(0xf700, 0xf70f) AM_READWRITE(nbmj8991_clut_r,nbmj8991_clut_w)
|
||||
AM_RANGE(0xf200, 0xf3ff) AM_RAM_WRITE(palette_type3_w) AM_SHARE("paletteram")
|
||||
AM_RANGE(0xf700, 0xf70f) AM_READWRITE(clut_r,clut_w)
|
||||
AM_RANGE(0xf800, 0xffff) AM_RAM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( galkoku_map, AS_PROGRAM, 8, nbmj8991_state )
|
||||
AM_RANGE(0x0000, 0xefff) AM_ROM
|
||||
AM_RANGE(0xf000, 0xf00f) AM_READWRITE(nbmj8991_clut_r,nbmj8991_clut_w)
|
||||
AM_RANGE(0xf400, 0xf5ff) AM_RAM_WRITE(nbmj8991_palette_type1_w) AM_SHARE("paletteram")
|
||||
AM_RANGE(0xf000, 0xf00f) AM_READWRITE(clut_r,clut_w)
|
||||
AM_RANGE(0xf400, 0xf5ff) AM_RAM_WRITE(palette_type1_w) AM_SHARE("paletteram")
|
||||
AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("nvram") // hyouban
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( galkaika_map, AS_PROGRAM, 8, nbmj8991_state )
|
||||
AM_RANGE(0x0000, 0xefff) AM_ROM
|
||||
AM_RANGE(0xf000, 0xf00f) AM_READWRITE(nbmj8991_clut_r,nbmj8991_clut_w)
|
||||
AM_RANGE(0xf400, 0xf5ff) AM_RAM_WRITE(nbmj8991_palette_type2_w) AM_SHARE("paletteram")
|
||||
AM_RANGE(0xf000, 0xf00f) AM_READWRITE(clut_r,clut_w)
|
||||
AM_RANGE(0xf400, 0xf5ff) AM_RAM_WRITE(palette_type2_w) AM_SHARE("paletteram")
|
||||
AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("nvram") // tokimbsj
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( tokyogal_map, AS_PROGRAM, 8, nbmj8991_state )
|
||||
AM_RANGE(0x0000, 0xefff) AM_ROM
|
||||
AM_RANGE(0xf000, 0xf1ff) AM_RAM_WRITE(nbmj8991_palette_type2_w) AM_SHARE("paletteram")
|
||||
AM_RANGE(0xf400, 0xf40f) AM_READWRITE(nbmj8991_clut_r,nbmj8991_clut_w)
|
||||
AM_RANGE(0xf000, 0xf1ff) AM_RAM_WRITE(palette_type2_w) AM_SHARE("paletteram")
|
||||
AM_RANGE(0xf400, 0xf40f) AM_READWRITE(clut_r,clut_w)
|
||||
AM_RANGE(0xf800, 0xffff) AM_RAM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( av2mj1bb_map, AS_PROGRAM, 8, nbmj8991_state )
|
||||
AM_RANGE(0x0000, 0xefff) AM_ROM
|
||||
AM_RANGE(0xf000, 0xf1ff) AM_RAM_WRITE(nbmj8991_palette_type3_w) AM_SHARE("paletteram")
|
||||
AM_RANGE(0xf500, 0xf50f) AM_READWRITE(nbmj8991_clut_r,nbmj8991_clut_w)
|
||||
AM_RANGE(0xf000, 0xf1ff) AM_RAM_WRITE(palette_type3_w) AM_SHARE("paletteram")
|
||||
AM_RANGE(0xf500, 0xf50f) AM_READWRITE(clut_r,clut_w)
|
||||
AM_RANGE(0xf800, 0xffff) AM_RAM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( av2mj2rg_map, AS_PROGRAM, 8, nbmj8991_state )
|
||||
AM_RANGE(0x0000, 0xefff) AM_ROM
|
||||
AM_RANGE(0xf000, 0xf00f) AM_READWRITE(nbmj8991_clut_r,nbmj8991_clut_w)
|
||||
AM_RANGE(0xf200, 0xf3ff) AM_RAM_WRITE(nbmj8991_palette_type3_w) AM_SHARE("paletteram")
|
||||
AM_RANGE(0xf000, 0xf00f) AM_READWRITE(clut_r,clut_w)
|
||||
AM_RANGE(0xf200, 0xf3ff) AM_RAM_WRITE(palette_type3_w) AM_SHARE("paletteram")
|
||||
AM_RANGE(0xf800, 0xffff) AM_RAM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( galkoku_io_map, AS_IO, 8, nbmj8991_state )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||
AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r) AM_WRITE(nbmj8991_blitter_w)
|
||||
AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r) AM_WRITE(blitter_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)
|
||||
@ -186,7 +172,7 @@ ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( hyouban_io_map, AS_IO, 8, nbmj8991_state )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||
AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r) AM_WRITE(nbmj8991_blitter_w)
|
||||
AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r) AM_WRITE(blitter_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)
|
||||
@ -201,8 +187,8 @@ ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( pstadium_io_map, AS_IO, 8, nbmj8991_state )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||
AM_RANGE(0x00, 0x7f) AM_WRITE(nbmj8991_blitter_w)
|
||||
AM_RANGE(0x80, 0x80) AM_WRITE(nbmj8991_sound_w)
|
||||
AM_RANGE(0x00, 0x7f) AM_WRITE(blitter_w)
|
||||
AM_RANGE(0x80, 0x80) AM_WRITE(soundlatch_byte_w)
|
||||
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_DEVREAD("nb1413m3", nb1413m3_device, inputport2_r) //AM_WRITENOP
|
||||
@ -214,8 +200,8 @@ ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( av2mj1bb_io_map, AS_IO, 8, nbmj8991_state )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||
AM_RANGE(0x00, 0x7f) AM_WRITE(nbmj8991_blitter_w)
|
||||
AM_RANGE(0x80, 0x80) AM_WRITE(nbmj8991_sound_w)
|
||||
AM_RANGE(0x00, 0x7f) AM_WRITE(blitter_w)
|
||||
AM_RANGE(0x80, 0x80) AM_WRITE(soundlatch_byte_w)
|
||||
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, vcrctrl_w)
|
||||
@ -235,9 +221,9 @@ ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( nbmj8991_sound_io_map, AS_IO, 8, nbmj8991_state )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||
AM_RANGE(0x00, 0x00) AM_READ(nbmj8991_sound_r) AM_DEVWRITE("dac1", dac_device, write_unsigned8)
|
||||
AM_RANGE(0x00, 0x00) AM_READ(soundlatch_byte_r) AM_DEVWRITE("dac1", dac_device, write_unsigned8)
|
||||
AM_RANGE(0x02, 0x02) AM_DEVWRITE("dac2", dac_device, write_unsigned8)
|
||||
AM_RANGE(0x04, 0x04) AM_WRITE(nbmj8991_soundbank_w)
|
||||
AM_RANGE(0x04, 0x04) AM_WRITE(soundbank_w)
|
||||
AM_RANGE(0x06, 0x06) AM_WRITENOP
|
||||
AM_RANGE(0x80, 0x81) AM_DEVWRITE("fmsnd", ym3812_device, write)
|
||||
ADDRESS_MAP_END
|
||||
@ -1401,7 +1387,7 @@ static MACHINE_CONFIG_START( nbmjdrv1, nbmj8991_state ) // galkoku
|
||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
|
||||
MCFG_SCREEN_SIZE(1024, 512)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 240-1)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(nbmj8991_state, screen_update_nbmj8991_type1)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(nbmj8991_state, screen_update_type1)
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
|
||||
MCFG_PALETTE_ADD("palette", 256)
|
||||
@ -1437,7 +1423,7 @@ static MACHINE_CONFIG_START( nbmjdrv2, nbmj8991_state ) // pstadium
|
||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
|
||||
MCFG_SCREEN_SIZE(1024, 512)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 240-1)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(nbmj8991_state, screen_update_nbmj8991_type2)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(nbmj8991_state, screen_update_type2)
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
|
||||
MCFG_PALETTE_ADD("palette", 256)
|
||||
@ -2148,21 +2134,21 @@ ROM_START( av2mj2rg )
|
||||
ROM_END
|
||||
|
||||
|
||||
GAME( 1989, galkoku, 0, galkoku, galkoku, driver_device, 0, ROT180, "Nichibutsu / T.R.Tec", "Mahjong Gal no Kokuhaku (Japan)", 0 )
|
||||
GAME( 1989, hyouban, galkoku, hyouban, hyouban, driver_device, 0, ROT180, "Nichibutsu / T.R.Tec", "Mahjong Hyouban Musume [BET] (Japan)", 0 )
|
||||
GAME( 1989, galkaika, 0, galkaika, galkaika, nbmj8991_state, galkaika, ROT180, "Nichibutsu / T.R.Tec", "Mahjong Gal no Kaika (Japan)", 0 )
|
||||
GAME( 1989, tokyogal, 0, tokyogal, tokyogal, nbmj8991_state, tokyogal, ROT180, "Nichibutsu", "Tokyo Gal Zukan (Japan)", 0 )
|
||||
GAME( 1989, tokimbsj, tokyogal, tokimbsj, tokimbsj, nbmj8991_state, tokimbsj, ROT180, "Nichibutsu", "Tokimeki Bishoujo [BET] (Japan)", 0 )
|
||||
GAME( 1989, mcontest, 0, mcontest, mcontest, driver_device, 0, ROT180, "Nichibutsu", "Miss Mahjong Contest (Japan)", 0 )
|
||||
GAME( 1989, uchuuai, 0, uchuuai, uchuuai, driver_device, 0, ROT180, "Nichibutsu", "Mahjong Uchuu yori Ai wo komete (Japan)", 0 )
|
||||
GAME( 1989, triplew1, 0, triplew1, triplew1, driver_device, 0, ROT180, "Nichibutsu", "Mahjong Triple Wars (Japan)", 0 )
|
||||
GAME( 1990, pstadium, 0, pstadium, pstadium, driver_device, 0, ROT180, "Nichibutsu", "Mahjong Panic Stadium (Japan)", 0 )
|
||||
GAME( 1990, triplew2, 0, triplew2, triplew1, driver_device, 0, ROT180, "Nichibutsu", "Mahjong Triple Wars 2 (Japan)", 0 )
|
||||
GAME( 1990, ntopstar, 0, ntopstar, ntopstar, driver_device, 0, ROT180, "Nichibutsu", "Mahjong Nerae! Top Star (Japan)", 0 )
|
||||
GAME( 1991, mjlstory, 0, mjlstory, mjlstory, driver_device, 0, ROT180, "Nichibutsu", "Mahjong Jikken Love Story (Japan)", 0 )
|
||||
GAME( 1991, vanilla, 0, vanilla, vanilla, driver_device, 0, ROT180, "Nichibutsu", "Mahjong Vanilla Syndrome (Japan)", 0 )
|
||||
GAME( 1991, finalbny, vanilla, finalbny, finalbny, nbmj8991_state, finalbny, ROT180, "Nichibutsu", "Mahjong Final Bunny [BET] (Japan)", 0 )
|
||||
GAME( 1991, qmhayaku, 0, qmhayaku, qmhayaku, driver_device, 0, ROT180, "Nichibutsu", "Quiz-Mahjong Hayaku Yatteyo! (Japan)", 0 )
|
||||
GAME( 1991, mjgottub, 0, mjgottub, mjgottub, driver_device, 0, ROT180, "Nichibutsu", "Medal Mahjong Gottsu ee-kanji [BET] (Japan)", 0 )
|
||||
GAME( 1991, av2mj1bb, 0, av2mj1bb, av2mj1bb, driver_device, 0, ROT0, "Miki Syouji / AV Japan", "AV2Mahjong No.1 Bay Bridge no Seijo (Japan)", GAME_NOT_WORKING )
|
||||
GAME( 1991, av2mj2rg, 0, av2mj2rg, av2mj2rg, driver_device, 0, ROT0, "Miki Syouji / AV Japan", "AV2Mahjong No.2 Rouge no Kaori (Japan)", GAME_NOT_WORKING )
|
||||
GAME( 1989, galkoku, 0, galkoku, galkoku, driver_device, 0, ROT180, "Nichibutsu / T.R.Tec", "Mahjong Gal no Kokuhaku (Japan)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1989, hyouban, galkoku, hyouban, hyouban, driver_device, 0, ROT180, "Nichibutsu / T.R.Tec", "Mahjong Hyouban Musume [BET] (Japan)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1989, galkaika, 0, galkaika, galkaika, nbmj8991_state, galkaika, ROT180, "Nichibutsu / T.R.Tec", "Mahjong Gal no Kaika (Japan)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1989, tokyogal, 0, tokyogal, tokyogal, nbmj8991_state, tokyogal, ROT180, "Nichibutsu", "Tokyo Gal Zukan (Japan)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1989, tokimbsj, tokyogal, tokimbsj, tokimbsj, nbmj8991_state, tokimbsj, ROT180, "Nichibutsu", "Tokimeki Bishoujo [BET] (Japan)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1989, mcontest, 0, mcontest, mcontest, driver_device, 0, ROT180, "Nichibutsu", "Miss Mahjong Contest (Japan)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1989, uchuuai, 0, uchuuai, uchuuai, driver_device, 0, ROT180, "Nichibutsu", "Mahjong Uchuu yori Ai wo komete (Japan)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1989, triplew1, 0, triplew1, triplew1, driver_device, 0, ROT180, "Nichibutsu", "Mahjong Triple Wars (Japan)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1990, pstadium, 0, pstadium, pstadium, driver_device, 0, ROT180, "Nichibutsu", "Mahjong Panic Stadium (Japan)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1990, triplew2, 0, triplew2, triplew1, driver_device, 0, ROT180, "Nichibutsu", "Mahjong Triple Wars 2 (Japan)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1990, ntopstar, 0, ntopstar, ntopstar, driver_device, 0, ROT180, "Nichibutsu", "Mahjong Nerae! Top Star (Japan)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1991, mjlstory, 0, mjlstory, mjlstory, driver_device, 0, ROT180, "Nichibutsu", "Mahjong Jikken Love Story (Japan)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1991, vanilla, 0, vanilla, vanilla, driver_device, 0, ROT180, "Nichibutsu", "Mahjong Vanilla Syndrome (Japan)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1991, finalbny, vanilla, finalbny, finalbny, nbmj8991_state, finalbny, ROT180, "Nichibutsu", "Mahjong Final Bunny [BET] (Japan)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1991, qmhayaku, 0, qmhayaku, qmhayaku, driver_device, 0, ROT180, "Nichibutsu", "Quiz-Mahjong Hayaku Yatteyo! (Japan)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1991, mjgottub, 0, mjgottub, mjgottub, driver_device, 0, ROT180, "Nichibutsu", "Medal Mahjong Gottsu ee-kanji [BET] (Japan)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1991, av2mj1bb, 0, av2mj1bb, av2mj1bb, driver_device, 0, ROT0, "Miki Syouji / AV Japan", "AV2Mahjong No.1 Bay Bridge no Seijo (Japan)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
|
||||
GAME( 1991, av2mj2rg, 0, av2mj2rg, av2mj2rg, driver_device, 0, ROT0, "Miki Syouji / AV Japan", "AV2Mahjong No.2 Rouge no Kaori (Japan)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
|
||||
|
@ -19,8 +19,14 @@ public:
|
||||
required_device<nb1413m3_device> m_nb1413m3;
|
||||
required_device<screen_device> m_screen;
|
||||
required_device<palette_device> m_palette;
|
||||
|
||||
required_shared_ptr<UINT8> m_generic_paletteram_8;
|
||||
|
||||
enum
|
||||
{
|
||||
TIMER_BLITTER
|
||||
};
|
||||
|
||||
int m_scrollx;
|
||||
int m_scrolly;
|
||||
int m_blitter_destx;
|
||||
@ -39,26 +45,32 @@ public:
|
||||
UINT8 *m_videoram;
|
||||
UINT8 *m_clut;
|
||||
int m_flipscreen_old;
|
||||
DECLARE_WRITE8_MEMBER(nbmj8991_soundbank_w);
|
||||
DECLARE_WRITE8_MEMBER(nbmj8991_sound_w);
|
||||
DECLARE_READ8_MEMBER(nbmj8991_sound_r);
|
||||
DECLARE_WRITE8_MEMBER(nbmj8991_palette_type1_w);
|
||||
DECLARE_WRITE8_MEMBER(nbmj8991_palette_type2_w);
|
||||
DECLARE_WRITE8_MEMBER(nbmj8991_palette_type3_w);
|
||||
DECLARE_WRITE8_MEMBER(nbmj8991_blitter_w);
|
||||
DECLARE_READ8_MEMBER(nbmj8991_clut_r);
|
||||
DECLARE_WRITE8_MEMBER(nbmj8991_clut_w);
|
||||
emu_timer *m_blitter_timer;
|
||||
|
||||
DECLARE_WRITE8_MEMBER(soundbank_w);
|
||||
DECLARE_WRITE8_MEMBER(palette_type1_w);
|
||||
DECLARE_WRITE8_MEMBER(palette_type2_w);
|
||||
DECLARE_WRITE8_MEMBER(palette_type3_w);
|
||||
DECLARE_WRITE8_MEMBER(blitter_w);
|
||||
DECLARE_READ8_MEMBER(clut_r);
|
||||
DECLARE_WRITE8_MEMBER(clut_w);
|
||||
DECLARE_CUSTOM_INPUT_MEMBER(nb1413m3_busyflag_r);
|
||||
|
||||
DECLARE_DRIVER_INIT(galkaika);
|
||||
DECLARE_DRIVER_INIT(tokimbsj);
|
||||
DECLARE_DRIVER_INIT(tokyogal);
|
||||
DECLARE_DRIVER_INIT(finalbny);
|
||||
virtual void machine_reset();
|
||||
virtual void video_start();
|
||||
UINT32 screen_update_nbmj8991_type1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
UINT32 screen_update_nbmj8991_type2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
TIMER_CALLBACK_MEMBER(blitter_timer_callback);
|
||||
void nbmj8991_vramflip();
|
||||
|
||||
UINT32 screen_update_type1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
UINT32 screen_update_type2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
void vramflip();
|
||||
void update_pixel(int x, int y);
|
||||
void nbmj8991_gfxdraw();
|
||||
void gfxdraw();
|
||||
|
||||
void postload();
|
||||
|
||||
protected:
|
||||
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
|
||||
};
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
******************************************************************************/
|
||||
|
||||
WRITE8_MEMBER(nbmj8991_state::nbmj8991_palette_type1_w)
|
||||
WRITE8_MEMBER(nbmj8991_state::palette_type1_w)
|
||||
{
|
||||
int r, g, b;
|
||||
|
||||
@ -33,7 +33,7 @@ WRITE8_MEMBER(nbmj8991_state::nbmj8991_palette_type1_w)
|
||||
m_palette->set_pen_color((offset >> 1), pal4bit(r), pal4bit(g), pal4bit(b));
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(nbmj8991_state::nbmj8991_palette_type2_w)
|
||||
WRITE8_MEMBER(nbmj8991_state::palette_type2_w)
|
||||
{
|
||||
int r, g, b;
|
||||
|
||||
@ -50,7 +50,7 @@ WRITE8_MEMBER(nbmj8991_state::nbmj8991_palette_type2_w)
|
||||
m_palette->set_pen_color((offset / 2), pal5bit(r), pal5bit(g), pal5bit(b));
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(nbmj8991_state::nbmj8991_palette_type3_w)
|
||||
WRITE8_MEMBER(nbmj8991_state::palette_type3_w)
|
||||
{
|
||||
int r, g, b;
|
||||
|
||||
@ -71,7 +71,7 @@ WRITE8_MEMBER(nbmj8991_state::nbmj8991_palette_type3_w)
|
||||
|
||||
|
||||
******************************************************************************/
|
||||
WRITE8_MEMBER(nbmj8991_state::nbmj8991_blitter_w)
|
||||
WRITE8_MEMBER(nbmj8991_state::blitter_w)
|
||||
{
|
||||
int gfxlen = memregion("gfx1")->bytes();
|
||||
|
||||
@ -84,13 +84,13 @@ WRITE8_MEMBER(nbmj8991_state::nbmj8991_blitter_w)
|
||||
case 0x04: m_blitter_sizex = data; break;
|
||||
case 0x05: m_blitter_sizey = data;
|
||||
/* writing here also starts the blit */
|
||||
nbmj8991_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) ? 0 : 1;
|
||||
m_dispflag = (data & 0x10) ? 0 : 1;
|
||||
nbmj8991_vramflip();
|
||||
vramflip();
|
||||
break;
|
||||
case 0x07: break;
|
||||
case 0x10: m_blitter_destx = (m_blitter_destx & 0xff00) | data; break;
|
||||
@ -115,12 +115,12 @@ WRITE8_MEMBER(nbmj8991_state::nbmj8991_blitter_w)
|
||||
}
|
||||
}
|
||||
|
||||
READ8_MEMBER(nbmj8991_state::nbmj8991_clut_r)
|
||||
READ8_MEMBER(nbmj8991_state::clut_r)
|
||||
{
|
||||
return m_clut[offset];
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(nbmj8991_state::nbmj8991_clut_w)
|
||||
WRITE8_MEMBER(nbmj8991_state::clut_w)
|
||||
{
|
||||
m_clut[((m_clutsel & 0x7f) * 0x10) + (offset & 0x0f)] = data;
|
||||
}
|
||||
@ -129,7 +129,7 @@ WRITE8_MEMBER(nbmj8991_state::nbmj8991_clut_w)
|
||||
|
||||
|
||||
******************************************************************************/
|
||||
void nbmj8991_state::nbmj8991_vramflip()
|
||||
void nbmj8991_state::vramflip()
|
||||
{
|
||||
int x, y;
|
||||
UINT8 color1, color2;
|
||||
@ -165,12 +165,19 @@ void nbmj8991_state::update_pixel(int x, int y)
|
||||
m_tmpbitmap.pix16(y, x) = color;
|
||||
}
|
||||
|
||||
TIMER_CALLBACK_MEMBER(nbmj8991_state::blitter_timer_callback)
|
||||
void nbmj8991_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
|
||||
{
|
||||
m_nb1413m3->m_busyflag = 1;
|
||||
switch (id)
|
||||
{
|
||||
case TIMER_BLITTER:
|
||||
m_nb1413m3->m_busyflag = 1;
|
||||
break;
|
||||
default:
|
||||
assert_always(FALSE, "Unknown id in nbmj8991_state::device_timer");
|
||||
}
|
||||
}
|
||||
|
||||
void nbmj8991_state::nbmj8991_gfxdraw()
|
||||
void nbmj8991_state::gfxdraw()
|
||||
{
|
||||
UINT8 *GFX = memregion("gfx1")->base();
|
||||
int width = m_screen->width();
|
||||
@ -272,7 +279,7 @@ void nbmj8991_state::nbmj8991_gfxdraw()
|
||||
}
|
||||
|
||||
m_nb1413m3->m_busyflag = 0;
|
||||
machine().scheduler().timer_set(attotime::from_nsec(1650) * m_nb1413m3->m_busyctr, timer_expired_delegate(FUNC(nbmj8991_state::blitter_timer_callback),this));
|
||||
m_blitter_timer->adjust(attotime::from_nsec(1650) * m_nb1413m3->m_busyctr);
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
@ -281,6 +288,8 @@ void nbmj8991_state::nbmj8991_gfxdraw()
|
||||
******************************************************************************/
|
||||
void nbmj8991_state::video_start()
|
||||
{
|
||||
m_blitter_timer = timer_alloc(TIMER_BLITTER);
|
||||
|
||||
int width = m_screen->width();
|
||||
int height = m_screen->height();
|
||||
|
||||
@ -288,9 +297,35 @@ void nbmj8991_state::video_start()
|
||||
m_videoram = auto_alloc_array(machine(), UINT8, width * height);
|
||||
m_clut = auto_alloc_array(machine(), UINT8, 0x800);
|
||||
memset(m_videoram, 0x00, (width * height * sizeof(UINT8)));
|
||||
|
||||
m_screen_refresh = 1;
|
||||
|
||||
save_item(NAME(m_scrollx));
|
||||
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_gfxrom));
|
||||
save_item(NAME(m_dispflag));
|
||||
save_item(NAME(m_flipscreen));
|
||||
save_item(NAME(m_clutsel));
|
||||
save_pointer(NAME(m_videoram), width * height);
|
||||
save_pointer(NAME(m_clut), 0x800);
|
||||
save_item(NAME(m_flipscreen_old));
|
||||
|
||||
machine().save().register_postload(save_prepost_delegate(FUNC(nbmj8991_state::postload), this));
|
||||
}
|
||||
|
||||
UINT32 nbmj8991_state::screen_update_nbmj8991_type1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
void nbmj8991_state::postload()
|
||||
{
|
||||
m_screen_refresh = 1;
|
||||
}
|
||||
|
||||
UINT32 nbmj8991_state::screen_update_type1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
int x, y;
|
||||
|
||||
@ -329,7 +364,7 @@ UINT32 nbmj8991_state::screen_update_nbmj8991_type1(screen_device &screen, bitma
|
||||
return 0;
|
||||
}
|
||||
|
||||
UINT32 nbmj8991_state::screen_update_nbmj8991_type2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
UINT32 nbmj8991_state::screen_update_type2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
int x, y;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user