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/highvdeo.c | |
parent | 3783cf95515491d961776534fb5937b76accd464 (diff) |
MAME going modern part 4 (no whatsnew)
Diffstat (limited to 'src/mame/drivers/highvdeo.c')
-rw-r--r-- | src/mame/drivers/highvdeo.c | 196 |
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 ) |