summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/highvdeo.c
diff options
context:
space:
mode:
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
commitfd9822e2859faffee41c3f4a90f4f3bbc94ecb3b (patch)
tree287e1ba6e7217bff96ed6edb96daf6ece2f0efb8 /src/mame/drivers/highvdeo.c
parent3783cf95515491d961776534fb5937b76accd464 (diff)
MAME going modern part 4 (no whatsnew)
Diffstat (limited to 'src/mame/drivers/highvdeo.c')
-rw-r--r--src/mame/drivers/highvdeo.c196
1 files changed, 105 insertions, 91 deletions
diff --git a/src/mame/drivers/highvdeo.c b/src/mame/drivers/highvdeo.c
index d4e8f6e887e..74bb43d132b 100644
--- a/src/mame/drivers/highvdeo.c
+++ b/src/mame/drivers/highvdeo.c
@@ -100,6 +100,23 @@ public:
UINT16 m_vblank_bit;
UINT16 m_brasil_prot_latch;
struct { int r,g,b,offs,offs_internal; } m_pal;
+ DECLARE_READ16_MEMBER(read1_r);
+ DECLARE_READ16_MEMBER(read2_r);
+ DECLARE_READ16_MEMBER(read3_r);
+ DECLARE_WRITE16_MEMBER(tv_vcf_paletteram_w);
+ DECLARE_WRITE16_MEMBER(tv_vcf_bankselect_w);
+ DECLARE_WRITE16_MEMBER(write1_w);
+ DECLARE_READ16_MEMBER(tv_ncf_read2_r);
+ DECLARE_WRITE16_MEMBER(tv_tcf_paletteram_w);
+ DECLARE_WRITE16_MEMBER(tv_tcf_bankselect_w);
+ DECLARE_READ16_MEMBER(newmcard_status_r);
+ DECLARE_READ16_MEMBER(newmcard_vblank_r);
+ DECLARE_WRITE16_MEMBER(newmcard_vblank_w);
+ DECLARE_WRITE16_MEMBER(write2_w);
+ DECLARE_READ16_MEMBER(brasil_status_r);
+ DECLARE_WRITE16_MEMBER(brasil_status_w);
+ DECLARE_READ16_MEMBER(ciclone_status_r);
+ DECLARE_WRITE16_MEMBER(fashion_output_w);
};
@@ -174,48 +191,47 @@ static SCREEN_UPDATE_RGB32(brasil)
-static READ16_HANDLER( read1_r )
+READ16_MEMBER(highvdeo_state::read1_r)
{
- return input_port_read(space->machine(), "IN0");
+ return input_port_read(machine(), "IN0");
}
-static READ16_HANDLER( read2_r )
+READ16_MEMBER(highvdeo_state::read2_r)
{
- return input_port_read(space->machine(), "IN1");
+ return input_port_read(machine(), "IN1");
}
-static READ16_HANDLER( read3_r )
+READ16_MEMBER(highvdeo_state::read3_r)
{
- return input_port_read(space->machine(), "IN2");
+ return input_port_read(machine(), "IN2");
}
-static WRITE16_HANDLER( tv_vcf_paletteram_w )
+WRITE16_MEMBER(highvdeo_state::tv_vcf_paletteram_w)
{
- highvdeo_state *state = space->machine().driver_data<highvdeo_state>();
switch(offset*2)
{
case 0:
- state->m_pal.offs = data;
+ m_pal.offs = data;
break;
case 2:
- state->m_pal.offs_internal = 0;
+ m_pal.offs_internal = 0;
break;
case 4:
- switch(state->m_pal.offs_internal)
+ switch(m_pal.offs_internal)
{
case 0:
- state->m_pal.r = ((data & 0x3f) << 2) | ((data & 0x30) >> 4);
- state->m_pal.offs_internal++;
+ m_pal.r = ((data & 0x3f) << 2) | ((data & 0x30) >> 4);
+ m_pal.offs_internal++;
break;
case 1:
- state->m_pal.g = ((data & 0x3f) << 2) | ((data & 0x30) >> 4);
- state->m_pal.offs_internal++;
+ m_pal.g = ((data & 0x3f) << 2) | ((data & 0x30) >> 4);
+ m_pal.offs_internal++;
break;
case 2:
- state->m_pal.b = ((data & 0x3f) << 2) | ((data & 0x30) >> 4);
- palette_set_color(space->machine(), state->m_pal.offs, MAKE_RGB(state->m_pal.r, state->m_pal.g, state->m_pal.b));
- state->m_pal.offs_internal = 0;
- state->m_pal.offs++;
+ m_pal.b = ((data & 0x3f) << 2) | ((data & 0x30) >> 4);
+ palette_set_color(machine(), m_pal.offs, MAKE_RGB(m_pal.r, m_pal.g, m_pal.b));
+ m_pal.offs_internal = 0;
+ m_pal.offs++;
break;
}
@@ -223,15 +239,15 @@ static WRITE16_HANDLER( tv_vcf_paletteram_w )
}
}
-static WRITE16_HANDLER( tv_vcf_bankselect_w )
+WRITE16_MEMBER(highvdeo_state::tv_vcf_bankselect_w)
{
UINT32 bankaddress;
- UINT8 *ROM = space->machine().region("user1")->base();
+ UINT8 *ROM = machine().region("user1")->base();
/* bits 0, 1 select the ROM bank */
bankaddress = (data & 0x03) * 0x40000;
- memory_set_bankptr(space->machine(), "bank1", &ROM[bankaddress]);
+ memory_set_bankptr(machine(), "bank1", &ROM[bankaddress]);
}
@@ -255,7 +271,7 @@ static READ16_DEVICE_HANDLER( tv_oki6376_r )
return 0xff;
}
-static WRITE16_HANDLER( write1_w )
+WRITE16_MEMBER(highvdeo_state::write1_w)
{
/*
- Lbits -
@@ -287,17 +303,17 @@ static ADDRESS_MAP_START( tv_vcf_map, AS_PROGRAM, 16, highvdeo_state )
ADDRESS_MAP_END
static ADDRESS_MAP_START( tv_vcf_io, AS_IO, 16, highvdeo_state )
- AM_RANGE(0x0000, 0x0001) AM_WRITE_LEGACY(write1_w ) // lamps
+ AM_RANGE(0x0000, 0x0001) AM_WRITE(write1_w ) // lamps
AM_RANGE(0x0006, 0x0007) AM_DEVWRITE_LEGACY("oki", tv_oki6376_w )
- AM_RANGE(0x0008, 0x0009) AM_READ_LEGACY(read1_r )
- AM_RANGE(0x000a, 0x000b) AM_READ_LEGACY(read2_r )
- AM_RANGE(0x000c, 0x000d) AM_READ_LEGACY(read3_r )
- AM_RANGE(0x0010, 0x0015) AM_WRITE_LEGACY(tv_vcf_paletteram_w )
- AM_RANGE(0x0030, 0x0031) AM_WRITE_LEGACY(tv_vcf_bankselect_w ) AM_DEVREAD_LEGACY("oki", tv_oki6376_r )
+ AM_RANGE(0x0008, 0x0009) AM_READ(read1_r )
+ AM_RANGE(0x000a, 0x000b) AM_READ(read2_r )
+ AM_RANGE(0x000c, 0x000d) AM_READ(read3_r )
+ AM_RANGE(0x0010, 0x0015) AM_WRITE(tv_vcf_paletteram_w )
+ AM_RANGE(0x0030, 0x0031) AM_WRITE(tv_vcf_bankselect_w ) AM_DEVREAD_LEGACY("oki", tv_oki6376_r )
ADDRESS_MAP_END
-static READ16_HANDLER( tv_ncf_read2_r )
+READ16_MEMBER(highvdeo_state::tv_ncf_read2_r)
{
static int resetpulse = 0;
@@ -305,7 +321,7 @@ static READ16_HANDLER( tv_ncf_read2_r )
// machine resets itself.
resetpulse ^= 0x40;
- return (input_port_read(space->machine(), "IN1") & 0xbf) | resetpulse;
+ return (input_port_read(machine(), "IN1") & 0xbf) | resetpulse;
}
static WRITE16_DEVICE_HANDLER( tv_ncf_oki6376_w )
@@ -334,56 +350,56 @@ static ADDRESS_MAP_START( tv_ncf_map, AS_PROGRAM, 16, highvdeo_state )
ADDRESS_MAP_END
static ADDRESS_MAP_START( tv_ncf_io, AS_IO, 16, highvdeo_state )
- AM_RANGE(0x0000, 0x0001) AM_WRITE_LEGACY(write1_w ) // lamps
+ AM_RANGE(0x0000, 0x0001) AM_WRITE(write1_w ) // lamps
AM_RANGE(0x0008, 0x0009) AM_DEVWRITE_LEGACY("oki", tv_ncf_oki6376_w )
AM_RANGE(0x000a, 0x000b) AM_DEVWRITE_LEGACY("oki", tv_ncf_oki6376_st_w )
- AM_RANGE(0x000c, 0x000d) AM_READ_LEGACY(read1_r )
- AM_RANGE(0x0010, 0x0011) AM_READ_LEGACY(tv_ncf_read2_r )
- AM_RANGE(0x0012, 0x0013) AM_READ_LEGACY(read3_r )
- AM_RANGE(0x0030, 0x0035) AM_WRITE_LEGACY(tv_vcf_paletteram_w )
+ AM_RANGE(0x000c, 0x000d) AM_READ(read1_r )
+ AM_RANGE(0x0010, 0x0011) AM_READ(tv_ncf_read2_r )
+ AM_RANGE(0x0012, 0x0013) AM_READ(read3_r )
+ AM_RANGE(0x0030, 0x0035) AM_WRITE(tv_vcf_paletteram_w )
ADDRESS_MAP_END
-static WRITE16_HANDLER( tv_tcf_paletteram_w )
+WRITE16_MEMBER(highvdeo_state::tv_tcf_paletteram_w)
{
int r, g, b, color;
- COMBINE_DATA(&space->machine().generic.paletteram.u16[offset]);
+ COMBINE_DATA(&machine().generic.paletteram.u16[offset]);
- color = space->machine().generic.paletteram.u16[offset];
+ color = machine().generic.paletteram.u16[offset];
r = (color >> 8) & 0xf8;
g = (color >> 3) & 0xf8;
b = (color << 3) & 0xf8;
- palette_set_color_rgb(space->machine(), offset, r, g, b);
+ palette_set_color_rgb(machine(), offset, r, g, b);
}
-static WRITE16_HANDLER( tv_tcf_bankselect_w )
+WRITE16_MEMBER(highvdeo_state::tv_tcf_bankselect_w)
{
UINT32 bankaddress;
- UINT8 *ROM = space->machine().region("user1")->base();
+ UINT8 *ROM = machine().region("user1")->base();
/* bits 0, 1, 2 select the ROM bank */
bankaddress = (data & 0x07) * 0x40000;
- memory_set_bankptr(space->machine(), "bank1", &ROM[bankaddress]);
+ memory_set_bankptr(machine(), "bank1", &ROM[bankaddress]);
}
static ADDRESS_MAP_START( tv_tcf_map, AS_PROGRAM, 16, highvdeo_state )
AM_RANGE(0x00000, 0x003ff) AM_RAM /*irq vector area*/
AM_RANGE(0x00400, 0x03fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x40000, 0x5d4bf) AM_RAM AM_BASE(m_blit_ram) /*blitter ram*/
- AM_RANGE(0x7fe00, 0x7ffff) AM_RAM_WRITE_LEGACY(tv_tcf_paletteram_w ) AM_BASE_GENERIC(paletteram)
+ AM_RANGE(0x7fe00, 0x7ffff) AM_RAM_WRITE(tv_tcf_paletteram_w ) AM_BASE_GENERIC(paletteram)
AM_RANGE(0x80000, 0xbffff) AM_ROMBANK("bank1")
AM_RANGE(0xc0000, 0xfffff) AM_ROM AM_REGION("boot_prg",0)
ADDRESS_MAP_END
static ADDRESS_MAP_START( tv_tcf_io, AS_IO, 16, highvdeo_state )
- AM_RANGE(0x0000, 0x0001) AM_WRITE_LEGACY(write1_w ) // lamps
+ AM_RANGE(0x0000, 0x0001) AM_WRITE(write1_w ) // lamps
AM_RANGE(0x0006, 0x0007) AM_DEVWRITE_LEGACY("oki", tv_oki6376_w )
- AM_RANGE(0x0008, 0x0009) AM_READ_LEGACY(read1_r )
- AM_RANGE(0x000a, 0x000b) AM_READ_LEGACY(read2_r )
- AM_RANGE(0x0030, 0x0031) AM_READ_LEGACY(read3_r ) AM_WRITE_LEGACY(tv_tcf_bankselect_w )
+ AM_RANGE(0x0008, 0x0009) AM_READ(read1_r )
+ AM_RANGE(0x000a, 0x000b) AM_READ(read2_r )
+ AM_RANGE(0x0030, 0x0031) AM_READ(read3_r ) AM_WRITE(tv_tcf_bankselect_w )
ADDRESS_MAP_END
/****************************
@@ -392,7 +408,7 @@ ADDRESS_MAP_END
*
****************************/
-static READ16_HANDLER( newmcard_status_r )
+READ16_MEMBER(highvdeo_state::newmcard_status_r)
{
switch(offset*2)
{
@@ -403,19 +419,17 @@ static READ16_HANDLER( newmcard_status_r )
}
-static READ16_HANDLER( newmcard_vblank_r )
+READ16_MEMBER(highvdeo_state::newmcard_vblank_r)
{
- highvdeo_state *state = space->machine().driver_data<highvdeo_state>();
- return state->m_vblank_bit; //0x80
+ return m_vblank_bit; //0x80
}
-static WRITE16_HANDLER( newmcard_vblank_w )
+WRITE16_MEMBER(highvdeo_state::newmcard_vblank_w)
{
- highvdeo_state *state = space->machine().driver_data<highvdeo_state>();
- state->m_vblank_bit = data;
+ m_vblank_bit = data;
}
-static WRITE16_HANDLER( write2_w )
+WRITE16_MEMBER(highvdeo_state::write2_w)
{
int i;
@@ -423,8 +437,8 @@ static WRITE16_HANDLER( write2_w )
for(i=0;i<4;i++)
{
- coin_counter_w(space->machine(), i,data & 0x20);
- coin_lockout_w(space->machine(), i,~data & 0x08);
+ coin_counter_w(machine(), i,data & 0x20);
+ coin_lockout_w(machine(), i,~data & 0x08);
}
}
@@ -437,17 +451,17 @@ static ADDRESS_MAP_START( newmcard_map, AS_PROGRAM, 16, highvdeo_state )
ADDRESS_MAP_END
static ADDRESS_MAP_START( newmcard_io, AS_IO, 16, highvdeo_state )
- AM_RANGE(0x0030, 0x0033) AM_READ_LEGACY(newmcard_status_r )
- AM_RANGE(0x0030, 0x0031) AM_WRITE_LEGACY(tv_tcf_bankselect_w )
- AM_RANGE(0x0000, 0x0001) AM_WRITE_LEGACY(write1_w ) // lamps
- AM_RANGE(0x0002, 0x0003) AM_WRITE_LEGACY(write2_w ) // coin counter & coin lockout
- AM_RANGE(0x0004, 0x0005) AM_WRITE_LEGACY(newmcard_vblank_w )
+ AM_RANGE(0x0030, 0x0033) AM_READ(newmcard_status_r )
+ AM_RANGE(0x0030, 0x0031) AM_WRITE(tv_tcf_bankselect_w )
+ AM_RANGE(0x0000, 0x0001) AM_WRITE(write1_w ) // lamps
+ AM_RANGE(0x0002, 0x0003) AM_WRITE(write2_w ) // coin counter & coin lockout
+ AM_RANGE(0x0004, 0x0005) AM_WRITE(newmcard_vblank_w )
AM_RANGE(0x0006, 0x0007) AM_DEVWRITE_LEGACY("oki", tv_oki6376_w )
- AM_RANGE(0x0008, 0x0009) AM_READ_LEGACY(read1_r )
- AM_RANGE(0x000a, 0x000b) AM_READ_LEGACY(read2_r )
- AM_RANGE(0x000c, 0x000d) AM_READ_LEGACY(newmcard_vblank_r )
- AM_RANGE(0x000e, 0x000f) AM_READ_LEGACY(read3_r )
- AM_RANGE(0x0010, 0x0015) AM_WRITE_LEGACY(tv_vcf_paletteram_w )
+ AM_RANGE(0x0008, 0x0009) AM_READ(read1_r )
+ AM_RANGE(0x000a, 0x000b) AM_READ(read2_r )
+ AM_RANGE(0x000c, 0x000d) AM_READ(newmcard_vblank_r )
+ AM_RANGE(0x000e, 0x000f) AM_READ(read3_r )
+ AM_RANGE(0x0010, 0x0015) AM_WRITE(tv_vcf_paletteram_w )
ADDRESS_MAP_END
/****************************
@@ -457,9 +471,8 @@ ADDRESS_MAP_END
****************************/
-static READ16_HANDLER( brasil_status_r )
+READ16_MEMBER(highvdeo_state::brasil_status_r)
{
- highvdeo_state *state = space->machine().driver_data<highvdeo_state>();
static UINT16 resetpulse;
switch(offset*2)
@@ -468,7 +481,7 @@ static READ16_HANDLER( brasil_status_r )
resetpulse^=0x10;
return 3 | resetpulse;
- case 2: return (state->m_brasil_prot_latch & 3); //and 0x3f
+ case 2: return (m_brasil_prot_latch & 3); //and 0x3f
}
return 0;
@@ -477,22 +490,21 @@ static READ16_HANDLER( brasil_status_r )
/*bankaddress might be incorrect.*/
-static WRITE16_HANDLER( brasil_status_w )
+WRITE16_MEMBER(highvdeo_state::brasil_status_w)
{
- highvdeo_state *state = space->machine().driver_data<highvdeo_state>();
UINT32 bankaddress;
- UINT8 *ROM = space->machine().region("user1")->base();
+ UINT8 *ROM = machine().region("user1")->base();
switch(data & 3) //data & 7?
{
- case 0: state->m_brasil_prot_latch = 1; break;
- case 1: state->m_brasil_prot_latch = 0; break;
- case 2: state->m_brasil_prot_latch = 2; break;
+ case 0: m_brasil_prot_latch = 1; break;
+ case 1: m_brasil_prot_latch = 0; break;
+ case 2: m_brasil_prot_latch = 2; break;
}
bankaddress = (data & 0x07) * 0x40000;
- memory_set_bankptr(space->machine(), "bank1", &ROM[bankaddress]);
+ memory_set_bankptr(machine(), "bank1", &ROM[bankaddress]);
// popmessage("%04x",data);
}
@@ -506,14 +518,14 @@ static ADDRESS_MAP_START( brasil_map, AS_PROGRAM, 16, highvdeo_state )
ADDRESS_MAP_END
static ADDRESS_MAP_START( brasil_io, AS_IO, 16, highvdeo_state )
- AM_RANGE(0x0030, 0x0033) AM_READ_LEGACY(brasil_status_r )
- AM_RANGE(0x0030, 0x0031) AM_WRITE_LEGACY(brasil_status_w )
- AM_RANGE(0x0000, 0x0001) AM_WRITE_LEGACY(write1_w ) // lamps
- AM_RANGE(0x0002, 0x0003) AM_WRITE_LEGACY(write2_w ) // coin counter & coin lockout
+ AM_RANGE(0x0030, 0x0033) AM_READ(brasil_status_r )
+ AM_RANGE(0x0030, 0x0031) AM_WRITE(brasil_status_w )
+ AM_RANGE(0x0000, 0x0001) AM_WRITE(write1_w ) // lamps
+ AM_RANGE(0x0002, 0x0003) AM_WRITE(write2_w ) // coin counter & coin lockout
AM_RANGE(0x0006, 0x0007) AM_DEVWRITE_LEGACY("oki", tv_oki6376_w )
- AM_RANGE(0x0008, 0x0009) AM_READ_LEGACY(read1_r )
- AM_RANGE(0x000a, 0x000b) AM_READ_LEGACY(read2_r )
- AM_RANGE(0x000e, 0x000f) AM_READ_LEGACY(read3_r )
+ AM_RANGE(0x0008, 0x0009) AM_READ(read1_r )
+ AM_RANGE(0x000a, 0x000b) AM_READ(read2_r )
+ AM_RANGE(0x000e, 0x000f) AM_READ(read3_r )
// AM_RANGE(0x000e, 0x000f) AM_WRITE
// AM_RANGE(0xffa2, 0xffa3) AM_WRITE
ADDRESS_MAP_END
@@ -1160,7 +1172,7 @@ ROM_START( ciclone )
ROM_END
/*Ciclone*/
-static READ16_HANDLER( ciclone_status_r )
+READ16_MEMBER(highvdeo_state::ciclone_status_r)
{
static UINT16 resetpulse;
switch(offset*2)
@@ -1176,7 +1188,8 @@ static READ16_HANDLER( ciclone_status_r )
static DRIVER_INIT( ciclone )
{
- machine.device("maincpu")->memory().space(AS_IO)->install_legacy_read_handler(0x0030, 0x0033, FUNC(ciclone_status_r) );
+ highvdeo_state *state = machine.driver_data<highvdeo_state>();
+ machine.device("maincpu")->memory().space(AS_IO)->install_read_handler(0x0030, 0x0033, read16_delegate(FUNC(highvdeo_state::ciclone_status_r), state));
}
/*
@@ -1231,7 +1244,7 @@ ROM_START( fashion )
ROM_LOAD( "sound-fashion-v-1-memory4m.u16", 0x00000, 0x80000, CRC(2927c799) SHA1(f11cad096a23fee10bfdff5bf944c96e30f4a8b8) )
ROM_END
-static WRITE16_HANDLER( fashion_output_w )
+WRITE16_MEMBER(highvdeo_state::fashion_output_w)
{
int i;
@@ -1239,14 +1252,15 @@ static WRITE16_HANDLER( fashion_output_w )
for(i=0;i<4;i++)
{
- coin_counter_w(space->machine(), i,data & 0x20);
- coin_lockout_w(space->machine(), i,~data & 0x01);
+ coin_counter_w(machine(), i,data & 0x20);
+ coin_lockout_w(machine(), i,~data & 0x01);
}
}
static DRIVER_INIT( fashion )
{
- machine.device("maincpu")->memory().space(AS_IO)->install_legacy_write_handler(0x0002, 0x0003, FUNC(fashion_output_w) );
+ highvdeo_state *state = machine.driver_data<highvdeo_state>();
+ machine.device("maincpu")->memory().space(AS_IO)->install_write_handler(0x0002, 0x0003, write16_delegate(FUNC(highvdeo_state::fashion_output_w), state));
}
GAMEL( 2000, tour4000, 0, tv_vcf, tv_vcf, 0, ROT0, "High Video", "Tour 4000", 0, layout_fashion )