diff options
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 |
commit | 659dc8ac6eb77b42594ae80b473a2ccfe38958e5 (patch) | |
tree | a8b7b945c9834d70a3f2fd9ec8dc562d52ce8e71 /src/mame/video/superqix.c | |
parent | f534d245c02059be44071e9c37f38497f12f67f8 (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.c | 104 |
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; } |