summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/luckgrln.c
diff options
context:
space:
mode:
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
commit36fdd337acd67af266ed1f6bb67f58d28668e1d1 (patch)
treecc779ee0cb3d76ee297348df11b5c8be80807b7d /src/mame/drivers/luckgrln.c
parentef95984285044c8af96e9e1d279e2f99e58e984f (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.c227
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)