summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/video/superqix.c
diff options
context:
space:
mode:
author Aaron Giles <aaron@aarongiles.com>2011-02-03 10:38:15 +0000
committer Aaron Giles <aaron@aarongiles.com>2011-02-03 10:38:15 +0000
commit659dc8ac6eb77b42594ae80b473a2ccfe38958e5 (patch)
treea8b7b945c9834d70a3f2fd9ec8dc562d52ce8e71 /src/mame/video/superqix.c
parentf534d245c02059be44071e9c37f38497f12f67f8 (diff)
From: Atari Ace
Hi mamedev, This patch eliminates global/static variables in a number of Taito/Irem drivers by introducing/using driver_device classes. ~aa
Diffstat (limited to 'src/mame/video/superqix.c')
-rw-r--r--src/mame/video/superqix.c104
1 files changed, 53 insertions, 51 deletions
diff --git a/src/mame/video/superqix.c b/src/mame/video/superqix.c
index 1f48a15d1eb..72bbd12b606 100644
--- a/src/mame/video/superqix.c
+++ b/src/mame/video/superqix.c
@@ -9,15 +9,7 @@
#include "emu.h"
#include "includes/superqix.h"
-UINT8 *superqix_videoram;
-UINT8 *superqix_bitmapram,*superqix_bitmapram2;
-int pbillian_show_power;
-static int gfxbank;
-static bitmap_t *fg_bitmap[2];
-static int show_bitmap;
-static tilemap_t *bg_tilemap;
-static int last_power[2];
/***************************************************************************
@@ -28,20 +20,22 @@ static int last_power[2];
static TILE_GET_INFO( pb_get_bg_tile_info )
{
- int attr = superqix_videoram[tile_index + 0x400];
- int code = superqix_videoram[tile_index] + 256 * (attr & 0x7);
+ superqix_state *state = machine->driver_data<superqix_state>();
+ int attr = state->videoram[tile_index + 0x400];
+ int code = state->videoram[tile_index] + 256 * (attr & 0x7);
int color = (attr & 0xf0) >> 4;
SET_TILE_INFO(0, code, color, 0);
}
static TILE_GET_INFO( sqix_get_bg_tile_info )
{
- int attr = superqix_videoram[tile_index + 0x400];
+ superqix_state *state = machine->driver_data<superqix_state>();
+ int attr = state->videoram[tile_index + 0x400];
int bank = (attr & 0x04) ? 0 : 1;
- int code = superqix_videoram[tile_index] + 256 * (attr & 0x03);
+ int code = state->videoram[tile_index] + 256 * (attr & 0x03);
int color = (attr & 0xf0) >> 4;
- if (bank) code += 1024 * gfxbank;
+ if (bank) code += 1024 * state->gfxbank;
SET_TILE_INFO(bank, code, color, 0);
tileinfo->group = (attr & 0x08) >> 3;
@@ -57,27 +51,29 @@ static TILE_GET_INFO( sqix_get_bg_tile_info )
VIDEO_START( pbillian )
{
- bg_tilemap = tilemap_create(machine, pb_get_bg_tile_info, tilemap_scan_rows, 8, 8,32,32);
+ superqix_state *state = machine->driver_data<superqix_state>();
+ state->bg_tilemap = tilemap_create(machine, pb_get_bg_tile_info, tilemap_scan_rows, 8, 8,32,32);
/* Need to do save state here */
- state_save_register_global(machine, last_power[0]);
- state_save_register_global(machine, last_power[1]);
- state_save_register_global(machine, pbillian_show_power);
+ state_save_register_global(machine, state->last_power[0]);
+ state_save_register_global(machine, state->last_power[1]);
+ state_save_register_global(machine, state->pbillian_show_power);
}
VIDEO_START( superqix )
{
- fg_bitmap[0] = auto_bitmap_alloc(machine, 256, 256, machine->primary_screen->format());
- fg_bitmap[1] = auto_bitmap_alloc(machine, 256, 256, machine->primary_screen->format());
- bg_tilemap = tilemap_create(machine, sqix_get_bg_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
-
- tilemap_set_transmask(bg_tilemap,0,0xffff,0x0000); /* split type 0 is totally transparent in front half */
- tilemap_set_transmask(bg_tilemap,1,0x0001,0xfffe); /* split type 1 has pen 0 transparent in front half */
-
- state_save_register_global(machine, gfxbank);
- state_save_register_global(machine, show_bitmap);
- state_save_register_global_bitmap(machine, fg_bitmap[0]);
- state_save_register_global_bitmap(machine, fg_bitmap[1]);
+ superqix_state *state = machine->driver_data<superqix_state>();
+ state->fg_bitmap[0] = auto_bitmap_alloc(machine, 256, 256, machine->primary_screen->format());
+ state->fg_bitmap[1] = auto_bitmap_alloc(machine, 256, 256, machine->primary_screen->format());
+ state->bg_tilemap = tilemap_create(machine, sqix_get_bg_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
+
+ tilemap_set_transmask(state->bg_tilemap,0,0xffff,0x0000); /* split type 0 is totally transparent in front half */
+ tilemap_set_transmask(state->bg_tilemap,1,0x0001,0xfffe); /* split type 1 has pen 0 transparent in front half */
+
+ state_save_register_global(machine, state->gfxbank);
+ state_save_register_global(machine, state->show_bitmap);
+ state_save_register_global_bitmap(machine, state->fg_bitmap[0]);
+ state_save_register_global_bitmap(machine, state->fg_bitmap[1]);
}
@@ -90,35 +86,38 @@ VIDEO_START( superqix )
WRITE8_HANDLER( superqix_videoram_w )
{
- superqix_videoram[offset] = data;
- tilemap_mark_tile_dirty(bg_tilemap, offset & 0x3ff);
+ superqix_state *state = space->machine->driver_data<superqix_state>();
+ state->videoram[offset] = data;
+ tilemap_mark_tile_dirty(state->bg_tilemap, offset & 0x3ff);
}
WRITE8_HANDLER( superqix_bitmapram_w )
{
- if (superqix_bitmapram[offset] != data)
+ superqix_state *state = space->machine->driver_data<superqix_state>();
+ if (state->bitmapram[offset] != data)
{
int x = 2 * (offset % 128);
int y = offset / 128 + 16;
- superqix_bitmapram[offset] = data;
+ state->bitmapram[offset] = data;
- *BITMAP_ADDR16(fg_bitmap[0], y, x) = data >> 4;
- *BITMAP_ADDR16(fg_bitmap[0], y, x + 1) = data & 0x0f;
+ *BITMAP_ADDR16(state->fg_bitmap[0], y, x) = data >> 4;
+ *BITMAP_ADDR16(state->fg_bitmap[0], y, x + 1) = data & 0x0f;
}
}
WRITE8_HANDLER( superqix_bitmapram2_w )
{
- if (data != superqix_bitmapram2[offset])
+ superqix_state *state = space->machine->driver_data<superqix_state>();
+ if (data != state->bitmapram2[offset])
{
int x = 2 * (offset % 128);
int y = offset / 128 + 16;
- superqix_bitmapram2[offset] = data;
+ state->bitmapram2[offset] = data;
- *BITMAP_ADDR16(fg_bitmap[1], y, x) = data >> 4;
- *BITMAP_ADDR16(fg_bitmap[1], y, x + 1) = data & 0x0f;
+ *BITMAP_ADDR16(state->fg_bitmap[1], y, x) = data >> 4;
+ *BITMAP_ADDR16(state->fg_bitmap[1], y, x + 1) = data & 0x0f;
}
}
@@ -144,15 +143,16 @@ WRITE8_HANDLER( pbillian_0410_w )
WRITE8_HANDLER( superqix_0410_w )
{
+ superqix_state *state = space->machine->driver_data<superqix_state>();
/* bits 0-1 select the tile bank */
- if (gfxbank != (data & 0x03))
+ if (state->gfxbank != (data & 0x03))
{
- gfxbank = data & 0x03;
- tilemap_mark_all_tiles_dirty(bg_tilemap);
+ state->gfxbank = data & 0x03;
+ tilemap_mark_all_tiles_dirty(state->bg_tilemap);
}
/* bit 2 selects which of the two bitmaps to display (for 2 players game) */
- show_bitmap = (data & 0x04) >> 2;
+ state->show_bitmap = (data & 0x04) >> 2;
/* bit 3 enables NMI */
interrupt_enable_w(space,offset,data & 0x08);
@@ -229,25 +229,26 @@ static void superqix_draw_sprites(running_machine *machine, bitmap_t *bitmap,con
VIDEO_UPDATE( pbillian )
{
- tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0);
+ superqix_state *state = screen->machine->driver_data<superqix_state>();
+ tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0);
pbillian_draw_sprites(screen->machine, bitmap,cliprect);
- if (pbillian_show_power)
+ if (state->pbillian_show_power)
{
int curr_power;
curr_power = ((input_port_read(screen->machine, "PADDLE1") & 0x3f) * 100) / 0x3f;
- if (last_power[0] != curr_power)
+ if (state->last_power[0] != curr_power)
{
popmessage ("Power %d%%", curr_power);
- last_power[0] = curr_power;
+ state->last_power[0] = curr_power;
}
curr_power = ((input_port_read(screen->machine, "PADDLE2") & 0x3f) * 100) / 0x3f;
- if (last_power[1] != curr_power)
+ if (state->last_power[1] != curr_power)
{
popmessage ("Power %d%%", curr_power);
- last_power[1] = curr_power;
+ state->last_power[1] = curr_power;
}
}
return 0;
@@ -255,9 +256,10 @@ VIDEO_UPDATE( pbillian )
VIDEO_UPDATE( superqix )
{
- tilemap_draw(bitmap, cliprect, bg_tilemap, TILEMAP_DRAW_LAYER1, 0);
- copybitmap_trans(bitmap,fg_bitmap[show_bitmap],flip_screen_get(screen->machine),flip_screen_get(screen->machine),0,0,cliprect,0);
+ superqix_state *state = screen->machine->driver_data<superqix_state>();
+ tilemap_draw(bitmap, cliprect, state->bg_tilemap, TILEMAP_DRAW_LAYER1, 0);
+ copybitmap_trans(bitmap,state->fg_bitmap[state->show_bitmap],flip_screen_get(screen->machine),flip_screen_get(screen->machine),0,0,cliprect,0);
superqix_draw_sprites(screen->machine, bitmap,cliprect);
- tilemap_draw(bitmap, cliprect, bg_tilemap, TILEMAP_DRAW_LAYER0, 0);
+ tilemap_draw(bitmap, cliprect, state->bg_tilemap, TILEMAP_DRAW_LAYER0, 0);
return 0;
}