diff options
author | Aaron Giles <aaron@aarongiles.com> | 2011-03-17 07:12:42 +0000 |
---|---|---|
committer | Aaron Giles <aaron@aarongiles.com> | 2011-03-17 07:12:42 +0000 |
commit | 36fdd337acd67af266ed1f6bb67f58d28668e1d1 (patch) | |
tree | cc779ee0cb3d76ee297348df11b5c8be80807b7d /src/mame/drivers/luckgrln.c | |
parent | ef95984285044c8af96e9e1d279e2f99e58e984f (diff) |
Continued moving global/static variables to the driver_device classes.
[Atari Ace]
Diffstat (limited to 'src/mame/drivers/luckgrln.c')
-rw-r--r-- | src/mame/drivers/luckgrln.c | 227 |
1 files changed, 129 insertions, 98 deletions
diff --git a/src/mame/drivers/luckgrln.c b/src/mame/drivers/luckgrln.c index 587d6555ab5..5ff72af1085 100644 --- a/src/mame/drivers/luckgrln.c +++ b/src/mame/drivers/luckgrln.c @@ -82,42 +82,59 @@ #include "video/mc6845.h" #include "luckgrln.lh" -static UINT8 *luck_vram1,*luck_vram2,*luck_vram3; -static UINT8 nmi_enable; -static tilemap_t *reel1_tilemap, *reel2_tilemap, *reel3_tilemap, *reel4_tilemap; -static UINT8* reel1_ram; -static UINT8* reel2_ram; -static UINT8* reel3_ram; -static UINT8* reel4_ram; -static UINT8* reel1_scroll; -static UINT8* reel2_scroll; -static UINT8* reel3_scroll; -static UINT8* reel4_scroll; -static UINT8* reel1_attr; -static UINT8* reel2_attr; -static UINT8* reel3_attr; -static UINT8* reel4_attr; +class luckgrln_state : public driver_device +{ +public: + luckgrln_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *luck_vram1; + UINT8 *luck_vram2; + UINT8 *luck_vram3; + UINT8 nmi_enable; + tilemap_t *reel1_tilemap; + tilemap_t *reel2_tilemap; + tilemap_t *reel3_tilemap; + tilemap_t *reel4_tilemap; + UINT8* reel1_ram; + UINT8* reel2_ram; + UINT8* reel3_ram; + UINT8* reel4_ram; + UINT8* reel1_scroll; + UINT8* reel2_scroll; + UINT8* reel3_scroll; + UINT8* reel4_scroll; + UINT8* reel1_attr; + UINT8* reel2_attr; + UINT8* reel3_attr; + UINT8* reel4_attr; + int palette_count; + UINT8 palette_ram[0x10000]; +}; static WRITE8_HANDLER( luckgrln_reel1_ram_w ) { - reel1_ram[offset] = data; - tilemap_mark_tile_dirty(reel1_tilemap,offset); + luckgrln_state *state = space->machine->driver_data<luckgrln_state>(); + state->reel1_ram[offset] = data; + tilemap_mark_tile_dirty(state->reel1_tilemap,offset); } static WRITE8_HANDLER( luckgrln_reel1_attr_w ) { - reel1_attr[offset] = data; - tilemap_mark_tile_dirty(reel1_tilemap,offset); + luckgrln_state *state = space->machine->driver_data<luckgrln_state>(); + state->reel1_attr[offset] = data; + tilemap_mark_tile_dirty(state->reel1_tilemap,offset); } static TILE_GET_INFO( get_luckgrln_reel1_tile_info ) { - int code = reel1_ram[tile_index]; - int attr = reel1_attr[tile_index]; + luckgrln_state *state = machine->driver_data<luckgrln_state>(); + int code = state->reel1_ram[tile_index]; + int attr = state->reel1_attr[tile_index]; int col = (attr & 0x1f); code |= (attr & 0xe0)<<3; @@ -133,21 +150,24 @@ static TILE_GET_INFO( get_luckgrln_reel1_tile_info ) static WRITE8_HANDLER( luckgrln_reel2_ram_w ) { - reel2_ram[offset] = data; - tilemap_mark_tile_dirty(reel2_tilemap,offset); + luckgrln_state *state = space->machine->driver_data<luckgrln_state>(); + state->reel2_ram[offset] = data; + tilemap_mark_tile_dirty(state->reel2_tilemap,offset); } static WRITE8_HANDLER( luckgrln_reel2_attr_w ) { - reel2_attr[offset] = data; - tilemap_mark_tile_dirty(reel2_tilemap,offset); + luckgrln_state *state = space->machine->driver_data<luckgrln_state>(); + state->reel2_attr[offset] = data; + tilemap_mark_tile_dirty(state->reel2_tilemap,offset); } static TILE_GET_INFO( get_luckgrln_reel2_tile_info ) { - int code = reel2_ram[tile_index]; - int attr = reel2_attr[tile_index]; + luckgrln_state *state = machine->driver_data<luckgrln_state>(); + int code = state->reel2_ram[tile_index]; + int attr = state->reel2_attr[tile_index]; int col = (attr & 0x1f); code |= (attr & 0xe0)<<3; @@ -162,21 +182,24 @@ static TILE_GET_INFO( get_luckgrln_reel2_tile_info ) static WRITE8_HANDLER( luckgrln_reel3_ram_w ) { - reel3_ram[offset] = data; - tilemap_mark_tile_dirty(reel3_tilemap,offset); + luckgrln_state *state = space->machine->driver_data<luckgrln_state>(); + state->reel3_ram[offset] = data; + tilemap_mark_tile_dirty(state->reel3_tilemap,offset); } static WRITE8_HANDLER( luckgrln_reel3_attr_w ) { - reel3_attr[offset] = data; - tilemap_mark_tile_dirty(reel3_tilemap,offset); + luckgrln_state *state = space->machine->driver_data<luckgrln_state>(); + state->reel3_attr[offset] = data; + tilemap_mark_tile_dirty(state->reel3_tilemap,offset); } static TILE_GET_INFO( get_luckgrln_reel3_tile_info ) { - int code = reel3_ram[tile_index]; - int attr = reel3_attr[tile_index]; + luckgrln_state *state = machine->driver_data<luckgrln_state>(); + int code = state->reel3_ram[tile_index]; + int attr = state->reel3_attr[tile_index]; int col = (attr & 0x1f); code |= (attr & 0xe0)<<3; @@ -190,21 +213,24 @@ static TILE_GET_INFO( get_luckgrln_reel3_tile_info ) static WRITE8_HANDLER( luckgrln_reel4_ram_w ) { - reel4_ram[offset] = data; - tilemap_mark_tile_dirty(reel4_tilemap,offset); + luckgrln_state *state = space->machine->driver_data<luckgrln_state>(); + state->reel4_ram[offset] = data; + tilemap_mark_tile_dirty(state->reel4_tilemap,offset); } static WRITE8_HANDLER( luckgrln_reel4_attr_w ) { - reel4_attr[offset] = data; - tilemap_mark_tile_dirty(reel4_tilemap,offset); + luckgrln_state *state = space->machine->driver_data<luckgrln_state>(); + state->reel4_attr[offset] = data; + tilemap_mark_tile_dirty(state->reel4_tilemap,offset); } static TILE_GET_INFO( get_luckgrln_reel4_tile_info ) { - int code = reel4_ram[tile_index]; - int attr = reel4_attr[tile_index]; + luckgrln_state *state = machine->driver_data<luckgrln_state>(); + int code = state->reel4_ram[tile_index]; + int attr = state->reel4_attr[tile_index]; int col = (attr & 0x1f); code |= (attr & 0xe0)<<3; @@ -218,24 +244,26 @@ static TILE_GET_INFO( get_luckgrln_reel4_tile_info ) static VIDEO_START(luckgrln) { - reel1_tilemap = tilemap_create(machine,get_luckgrln_reel1_tile_info,tilemap_scan_rows, 8, 32, 64, 8); - reel2_tilemap = tilemap_create(machine,get_luckgrln_reel2_tile_info,tilemap_scan_rows, 8, 32, 64, 8); - reel3_tilemap = tilemap_create(machine,get_luckgrln_reel3_tile_info,tilemap_scan_rows, 8, 32, 64, 8); - reel4_tilemap = tilemap_create(machine,get_luckgrln_reel4_tile_info,tilemap_scan_rows, 8, 32, 64, 8); - - tilemap_set_scroll_cols(reel1_tilemap, 64); - tilemap_set_scroll_cols(reel2_tilemap, 64); - tilemap_set_scroll_cols(reel3_tilemap, 64); - tilemap_set_scroll_cols(reel4_tilemap, 64); - - tilemap_set_transparent_pen( reel1_tilemap, 0 ); - tilemap_set_transparent_pen( reel2_tilemap, 0 ); - tilemap_set_transparent_pen( reel3_tilemap, 0 ); - tilemap_set_transparent_pen( reel4_tilemap, 0 ); + luckgrln_state *state = machine->driver_data<luckgrln_state>(); + state->reel1_tilemap = tilemap_create(machine,get_luckgrln_reel1_tile_info,tilemap_scan_rows, 8, 32, 64, 8); + state->reel2_tilemap = tilemap_create(machine,get_luckgrln_reel2_tile_info,tilemap_scan_rows, 8, 32, 64, 8); + state->reel3_tilemap = tilemap_create(machine,get_luckgrln_reel3_tile_info,tilemap_scan_rows, 8, 32, 64, 8); + state->reel4_tilemap = tilemap_create(machine,get_luckgrln_reel4_tile_info,tilemap_scan_rows, 8, 32, 64, 8); + + tilemap_set_scroll_cols(state->reel1_tilemap, 64); + tilemap_set_scroll_cols(state->reel2_tilemap, 64); + tilemap_set_scroll_cols(state->reel3_tilemap, 64); + tilemap_set_scroll_cols(state->reel4_tilemap, 64); + + tilemap_set_transparent_pen( state->reel1_tilemap, 0 ); + tilemap_set_transparent_pen( state->reel2_tilemap, 0 ); + tilemap_set_transparent_pen( state->reel3_tilemap, 0 ); + tilemap_set_transparent_pen( state->reel4_tilemap, 0 ); } static SCREEN_UPDATE(luckgrln) { + luckgrln_state *state = screen->machine->driver_data<luckgrln_state>(); int y,x; int count = 0; const rectangle &visarea = screen->visible_area(); @@ -252,10 +280,10 @@ static SCREEN_UPDATE(luckgrln) for (i= 0;i < 64;i++) { - tilemap_set_scrolly(reel1_tilemap, i, reel1_scroll[i]); - tilemap_set_scrolly(reel2_tilemap, i, reel2_scroll[i]); - tilemap_set_scrolly(reel3_tilemap, i, reel3_scroll[i]); - tilemap_set_scrolly(reel4_tilemap, i, reel4_scroll[i]); + tilemap_set_scrolly(state->reel1_tilemap, i, state->reel1_scroll[i]); + tilemap_set_scrolly(state->reel2_tilemap, i, state->reel2_scroll[i]); + tilemap_set_scrolly(state->reel3_tilemap, i, state->reel3_scroll[i]); + tilemap_set_scrolly(state->reel4_tilemap, i, state->reel4_scroll[i]); } @@ -269,9 +297,9 @@ static SCREEN_UPDATE(luckgrln) for (x=0;x<64;x++) { - UINT16 tile = (luck_vram1[count] & 0xff); - UINT16 tile_high = (luck_vram2[count]); - UINT16 tileattr = (luck_vram3[count]); + UINT16 tile = (state->luck_vram1[count] & 0xff); + UINT16 tile_high = (state->luck_vram2[count]); + UINT16 tileattr = (state->luck_vram3[count]); UINT8 col = 0; UINT8 region = 0; UINT8 bgenable; @@ -283,8 +311,8 @@ static SCREEN_UPDATE(luckgrln) if (clip.max_x>visarea.max_x) clip.max_x = visarea.max_x; /* - luck_vram1 tttt tttt (t = low tile bits) - luck_vram2 tttt ppp? (t = high tile bits) (p = pal select)? + state->luck_vram1 tttt tttt (t = low tile bits) + state->luck_vram2 tttt ppp? (t = high tile bits) (p = pal select)? */ @@ -295,7 +323,7 @@ static SCREEN_UPDATE(luckgrln) // ?? low bit is used too col = tile_high&0xf; - // --ss fbt- luck_vram3 + // --ss fbt- state->luck_vram3 // - = unused? // s = reel layer select for this 8x8 region // f = fg enabled for this 8x8 region (or priority?) @@ -307,10 +335,10 @@ static SCREEN_UPDATE(luckgrln) #if 0 // treat bit as fg enable if (tileattr&0x04) { - if (bgenable==0) tilemap_draw(bitmap, &clip, reel1_tilemap, 0, 0); - if (bgenable==1) tilemap_draw(bitmap, &clip, reel2_tilemap, 0, 0); - if (bgenable==2) tilemap_draw(bitmap, &clip, reel3_tilemap, 0, 0); - if (bgenable==3) tilemap_draw(bitmap, &clip, reel4_tilemap, 0, 0); + if (bgenable==0) tilemap_draw(bitmap, &clip, state->reel1_tilemap, 0, 0); + if (bgenable==1) tilemap_draw(bitmap, &clip, state->reel2_tilemap, 0, 0); + if (bgenable==2) tilemap_draw(bitmap, &clip, state->reel3_tilemap, 0, 0); + if (bgenable==3) tilemap_draw(bitmap, &clip, state->reel4_tilemap, 0, 0); } if (tileattr&0x08) drawgfx_transpen(bitmap,&clip,screen->machine->gfx[region],tile,col,0,0,x*8,y*8, 0); @@ -320,10 +348,10 @@ static SCREEN_UPDATE(luckgrln) if (tileattr&0x04) { - if (bgenable==0) tilemap_draw(bitmap, &clip, reel1_tilemap, 0, 0); - if (bgenable==1) tilemap_draw(bitmap, &clip, reel2_tilemap, 0, 0); - if (bgenable==2) tilemap_draw(bitmap, &clip, reel3_tilemap, 0, 0); - if (bgenable==3) tilemap_draw(bitmap, &clip, reel4_tilemap, 0, 0); + if (bgenable==0) tilemap_draw(bitmap, &clip, state->reel1_tilemap, 0, 0); + if (bgenable==1) tilemap_draw(bitmap, &clip, state->reel2_tilemap, 0, 0); + if (bgenable==2) tilemap_draw(bitmap, &clip, state->reel3_tilemap, 0, 0); + if (bgenable==3) tilemap_draw(bitmap, &clip, state->reel4_tilemap, 0, 0); } if ((tileattr&0x08)) drawgfx_transpen(bitmap,&clip,screen->machine->gfx[region],tile,col,0,0,x*8,y*8, 0); @@ -340,30 +368,30 @@ static ADDRESS_MAP_START( mainmap, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x10000, 0x1ffff) AM_ROM AM_REGION("rom_data",0x10000) AM_RANGE(0x20000, 0x2ffff) AM_ROM AM_REGION("rom_data",0x00000) - AM_RANGE(0x0c000, 0x0c1ff) AM_RAM_WRITE(luckgrln_reel1_ram_w) AM_BASE(&reel1_ram) // only written to half way - AM_RANGE(0x0c800, 0x0c9ff) AM_RAM_WRITE(luckgrln_reel1_attr_w) AM_BASE(&reel1_attr) - AM_RANGE(0x0d000, 0x0d03f) AM_RAM AM_BASE(&reel1_scroll) AM_MIRROR(0x000c0) + AM_RANGE(0x0c000, 0x0c1ff) AM_RAM_WRITE(luckgrln_reel1_ram_w) AM_BASE_MEMBER(luckgrln_state, reel1_ram) // only written to half way + AM_RANGE(0x0c800, 0x0c9ff) AM_RAM_WRITE(luckgrln_reel1_attr_w) AM_BASE_MEMBER(luckgrln_state, reel1_attr) + AM_RANGE(0x0d000, 0x0d03f) AM_RAM AM_BASE_MEMBER(luckgrln_state, reel1_scroll) AM_MIRROR(0x000c0) - AM_RANGE(0x0c200, 0x0c3ff) AM_RAM_WRITE(luckgrln_reel2_ram_w) AM_BASE(&reel2_ram) - AM_RANGE(0x0ca00, 0x0cbff) AM_RAM_WRITE(luckgrln_reel2_attr_w) AM_BASE(&reel2_attr) - AM_RANGE(0x0d200, 0x0d23f) AM_RAM AM_BASE(&reel2_scroll) AM_MIRROR(0x000c0) + AM_RANGE(0x0c200, 0x0c3ff) AM_RAM_WRITE(luckgrln_reel2_ram_w) AM_BASE_MEMBER(luckgrln_state, reel2_ram) + AM_RANGE(0x0ca00, 0x0cbff) AM_RAM_WRITE(luckgrln_reel2_attr_w) AM_BASE_MEMBER(luckgrln_state, reel2_attr) + AM_RANGE(0x0d200, 0x0d23f) AM_RAM AM_BASE_MEMBER(luckgrln_state, reel2_scroll) AM_MIRROR(0x000c0) - AM_RANGE(0x0c400, 0x0c5ff) AM_RAM_WRITE(luckgrln_reel3_ram_w ) AM_BASE(&reel3_ram) - AM_RANGE(0x0cc00, 0x0cdff) AM_RAM_WRITE(luckgrln_reel3_attr_w) AM_BASE(&reel3_attr) - AM_RANGE(0x0d400, 0x0d43f) AM_RAM AM_BASE(&reel3_scroll) AM_MIRROR(0x000c0) + AM_RANGE(0x0c400, 0x0c5ff) AM_RAM_WRITE(luckgrln_reel3_ram_w ) AM_BASE_MEMBER(luckgrln_state, reel3_ram) + AM_RANGE(0x0cc00, 0x0cdff) AM_RAM_WRITE(luckgrln_reel3_attr_w) AM_BASE_MEMBER(luckgrln_state, reel3_attr) + AM_RANGE(0x0d400, 0x0d43f) AM_RAM AM_BASE_MEMBER(luckgrln_state, reel3_scroll) AM_MIRROR(0x000c0) - AM_RANGE(0x0c600, 0x0c7ff) AM_RAM_WRITE(luckgrln_reel4_ram_w ) AM_BASE(&reel4_ram) - AM_RANGE(0x0ce00, 0x0cfff) AM_RAM_WRITE(luckgrln_reel4_attr_w) AM_BASE(&reel4_attr) - AM_RANGE(0x0d600, 0x0d63f) AM_RAM AM_BASE(&reel4_scroll) + AM_RANGE(0x0c600, 0x0c7ff) AM_RAM_WRITE(luckgrln_reel4_ram_w ) AM_BASE_MEMBER(luckgrln_state, reel4_ram) + AM_RANGE(0x0ce00, 0x0cfff) AM_RAM_WRITE(luckgrln_reel4_attr_w) AM_BASE_MEMBER(luckgrln_state, reel4_attr) + AM_RANGE(0x0d600, 0x0d63f) AM_RAM AM_BASE_MEMBER(luckgrln_state, reel4_scroll) // AM_RANGE(0x0d200, 0x0d2ff) AM_RAM AM_RANGE(0x0d800, 0x0dfff) AM_RAM // nvram - AM_RANGE(0x0e000, 0x0e7ff) AM_RAM AM_BASE(&luck_vram1) - AM_RANGE(0x0e800, 0x0efff) AM_RAM AM_BASE(&luck_vram2) - AM_RANGE(0x0f000, 0x0f7ff) AM_RAM AM_BASE(&luck_vram3) + AM_RANGE(0x0e000, 0x0e7ff) AM_RAM AM_BASE_MEMBER(luckgrln_state, luck_vram1) + AM_RANGE(0x0e800, 0x0efff) AM_RAM AM_BASE_MEMBER(luckgrln_state, luck_vram2) + AM_RANGE(0x0f000, 0x0f7ff) AM_RAM AM_BASE_MEMBER(luckgrln_state, luck_vram3) AM_RANGE(0x0f800, 0x0ffff) AM_RAM @@ -373,40 +401,42 @@ ADDRESS_MAP_END static WRITE8_HANDLER( output_w ) { + luckgrln_state *state = space->machine->driver_data<luckgrln_state>(); /* correct? */ if (data==0x84) - nmi_enable = 0; + state->nmi_enable = 0; else if (data==0x85) - nmi_enable = 1; + state->nmi_enable = 1; else printf("output_w unk data %02x\n",data); } -static int palette_count = 0; -static UINT8 palette_ram[0x10000]; static WRITE8_HANDLER( palette_offset_low_w ) { - palette_count = data<<1; + luckgrln_state *state = space->machine->driver_data<luckgrln_state>(); + state->palette_count = data<<1; } static WRITE8_HANDLER( palette_offset_high_w ) { - palette_count = palette_count | data<<9; + luckgrln_state *state = space->machine->driver_data<luckgrln_state>(); + state->palette_count = state->palette_count | data<<9; } static WRITE8_HANDLER( palette_w ) { - palette_ram[palette_count] = data; + luckgrln_state *state = space->machine->driver_data<luckgrln_state>(); + state->palette_ram[state->palette_count] = data; { int r,g,b; int offs; UINT16 dat; - offs = palette_count&~0x1; - dat = palette_ram[offs] | palette_ram[offs+1]<<8; + offs = state->palette_count&~0x1; + dat = state->palette_ram[offs] | state->palette_ram[offs+1]<<8; r = (dat >> 0) & 0x1f; g = (dat >> 5) & 0x1f; @@ -416,7 +446,7 @@ static WRITE8_HANDLER( palette_w ) } - palette_count++; + state->palette_count++; } @@ -811,11 +841,12 @@ static const mc6845_interface mc6845_intf = static INTERRUPT_GEN( luckgrln_irq ) { - if(nmi_enable) + luckgrln_state *state = device->machine->driver_data<luckgrln_state>(); + if(state->nmi_enable) cputag_set_input_line(device->machine, "maincpu", INPUT_LINE_NMI, PULSE_LINE); } -static MACHINE_CONFIG_START( luckgrln, driver_device ) +static MACHINE_CONFIG_START( luckgrln, luckgrln_state ) MCFG_CPU_ADD("maincpu", Z180,8000000) MCFG_CPU_PROGRAM_MAP(mainmap) MCFG_CPU_IO_MAP(portmap) |