diff --git a/.gitattributes b/.gitattributes index b1695733826..c39f08a815f 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2507,6 +2507,7 @@ src/mame/includes/iqblock.h svneol=native#text/plain src/mame/includes/iremipt.h svneol=native#text/plain src/mame/includes/iremz80.h svneol=native#text/plain src/mame/includes/irobot.h svneol=native#text/plain +src/mame/includes/ironhors.h svneol=native#text/plain src/mame/includes/itech32.h svneol=native#text/plain src/mame/includes/itech8.h svneol=native#text/plain src/mame/includes/jackal.h svneol=native#text/plain diff --git a/src/mame/drivers/ironhors.c b/src/mame/drivers/ironhors.c index 0f4bf4732bf..1f2ac208c18 100644 --- a/src/mame/drivers/ironhors.c +++ b/src/mame/drivers/ironhors.c @@ -1,8 +1,8 @@ /*************************************************************************** -IronHorse + IronHorse -driver by Mirko Buffoni + driver by Mirko Buffoni ***************************************************************************/ @@ -12,41 +12,36 @@ driver by Mirko Buffoni #include "cpu/m6809/m6809.h" #include "sound/2203intf.h" #include "sound/discrete.h" -#include "konamipt.h" - -extern UINT8 *ironhors_scroll; -static UINT8 *ironhors_interrupt_enable; - -extern WRITE8_HANDLER( ironhors_videoram_w ); -extern WRITE8_HANDLER( ironhors_colorram_w ); -extern WRITE8_HANDLER( ironhors_palettebank_w ); -extern WRITE8_HANDLER( ironhors_charbank_w ); -extern WRITE8_HANDLER( ironhors_flipscreen_w ); - -extern PALETTE_INIT( ironhors ); -extern VIDEO_START( ironhors ); -extern VIDEO_UPDATE( ironhors ); -extern VIDEO_START( farwest ); -extern VIDEO_UPDATE( farwest ); +#include "includes/konamipt.h" +#include "includes/ironhors.h" +/************************************* + * + * Memory handlers + * + *************************************/ static INTERRUPT_GEN( ironhors_interrupt ) { + ironhors_state *state = (ironhors_state *)device->machine->driver_data; + if (cpu_getiloops(device) == 0) { - if (*ironhors_interrupt_enable & 4) + if (*state->interrupt_enable & 4) cpu_set_input_line(device, M6809_FIRQ_LINE, HOLD_LINE); } else if (cpu_getiloops(device) % 2) { - if (*ironhors_interrupt_enable & 1) + if (*state->interrupt_enable & 1) cpu_set_input_line(device, INPUT_LINE_NMI, PULSE_LINE); } } static WRITE8_HANDLER( ironhors_sh_irqtrigger_w ) { - cputag_set_input_line_and_vector(space->machine, "soundcpu", 0, HOLD_LINE, 0xff); + ironhors_state *state = (ironhors_state *)space->machine->driver_data; + + cpu_set_input_line_and_vector(state->soundcpu, 0, HOLD_LINE, 0xff); } static WRITE8_DEVICE_HANDLER( ironhors_filter_w ) @@ -56,12 +51,18 @@ static WRITE8_DEVICE_HANDLER( ironhors_filter_w ) discrete_sound_w(device, NODE_13, (data & 0x01) >> 0); } +/************************************* + * + * Address maps + * + *************************************/ + static ADDRESS_MAP_START( master_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x0002) AM_RAM AM_RANGE(0x0003, 0x0003) AM_RAM_WRITE(ironhors_charbank_w) - AM_RANGE(0x0004, 0x0004) AM_RAM AM_BASE(&ironhors_interrupt_enable) + AM_RANGE(0x0004, 0x0004) AM_RAM AM_BASE_MEMBER(ironhors_state, interrupt_enable) AM_RANGE(0x0005, 0x001f) AM_RAM - AM_RANGE(0x0020, 0x003f) AM_RAM AM_BASE(&ironhors_scroll) + AM_RANGE(0x0020, 0x003f) AM_RAM AM_BASE_MEMBER(ironhors_state, scroll) AM_RANGE(0x0040, 0x005f) AM_RAM AM_RANGE(0x0060, 0x00df) AM_RAM AM_RANGE(0x0800, 0x0800) AM_WRITE(soundlatch_w) @@ -74,12 +75,12 @@ static ADDRESS_MAP_START( master_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x1800, 0x1800) AM_WRITENOP // ??? AM_RANGE(0x1a00, 0x1a01) AM_WRITENOP // ??? AM_RANGE(0x1c00, 0x1dff) AM_WRITENOP // ??? - AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE(ironhors_colorram_w) AM_BASE_GENERIC(colorram) - AM_RANGE(0x2400, 0x27ff) AM_RAM_WRITE(ironhors_videoram_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE(ironhors_colorram_w) AM_BASE_MEMBER(ironhors_state, colorram) + AM_RANGE(0x2400, 0x27ff) AM_RAM_WRITE(ironhors_videoram_w) AM_BASE_MEMBER(ironhors_state, videoram) AM_RANGE(0x2800, 0x2fff) AM_RAM - AM_RANGE(0x3000, 0x30ff) AM_RAM AM_BASE_GENERIC(spriteram2) + AM_RANGE(0x3000, 0x30ff) AM_RAM AM_BASE_MEMBER(ironhors_state, spriteram2) AM_RANGE(0x3100, 0x37ff) AM_RAM - AM_RANGE(0x3800, 0x38ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x3800, 0x38ff) AM_RAM AM_BASE_SIZE_MEMBER(ironhors_state, spriteram, spriteram_size) AM_RANGE(0x3900, 0x3fff) AM_RAM AM_RANGE(0x4000, 0xffff) AM_ROM ADDRESS_MAP_END @@ -100,7 +101,7 @@ static ADDRESS_MAP_START( farwest_master_map, ADDRESS_SPACE_PROGRAM, 8 ) //20=31db AM_RANGE(0x0005, 0x001f) AM_RAM - AM_RANGE(0x31db, 0x31fa) AM_RAM AM_BASE(&ironhors_scroll) + AM_RANGE(0x31db, 0x31fa) AM_RAM AM_BASE_MEMBER(ironhors_state, scroll) AM_RANGE(0x0040, 0x005f) AM_RAM AM_RANGE(0x0060, 0x00ff) AM_RAM AM_RANGE(0x0800, 0x0800) AM_WRITE(soundlatch_w) @@ -114,17 +115,17 @@ static ADDRESS_MAP_START( farwest_master_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x1800, 0x1800) AM_WRITE(ironhors_sh_irqtrigger_w) - AM_RANGE(0x1a00, 0x1a00) AM_RAM AM_BASE(&ironhors_interrupt_enable) + AM_RANGE(0x1a00, 0x1a00) AM_RAM AM_BASE_MEMBER(ironhors_state, interrupt_enable) AM_RANGE(0x1a01, 0x1a01) AM_RAM_WRITE(ironhors_charbank_w) AM_RANGE(0x1a02, 0x1a02) AM_WRITE(ironhors_palettebank_w) AM_RANGE(0x0000, 0x1bff) AM_ROM // AM_RANGE(0x1c00, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE(ironhors_colorram_w) AM_BASE_GENERIC(colorram) - AM_RANGE(0x2400, 0x27ff) AM_RAM_WRITE(ironhors_videoram_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE(ironhors_colorram_w) AM_BASE_MEMBER(ironhors_state, colorram) + AM_RANGE(0x2400, 0x27ff) AM_RAM_WRITE(ironhors_videoram_w) AM_BASE_MEMBER(ironhors_state, videoram) AM_RANGE(0x2800, 0x2fff) AM_RAM - AM_RANGE(0x1c00, 0x1dff) AM_RAM AM_BASE_GENERIC(spriteram2) + AM_RANGE(0x1c00, 0x1dff) AM_RAM AM_BASE_MEMBER(ironhors_state, spriteram2) AM_RANGE(0x3000, 0x38ff) AM_RAM - AM_RANGE(0x1e00, 0x1eff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x1e00, 0x1eff) AM_RAM AM_BASE_SIZE_MEMBER(ironhors_state, spriteram, spriteram_size) AM_RANGE(0x3900, 0x3fff) AM_RAM AM_RANGE(0x4000, 0xffff) AM_ROM ADDRESS_MAP_END @@ -136,6 +137,11 @@ static ADDRESS_MAP_START( farwest_slave_map, ADDRESS_SPACE_PROGRAM, 8 ) ADDRESS_MAP_END +/************************************* + * + * Input ports + * + *************************************/ static INPUT_PORTS_START( dairesya ) PORT_START("SYSTEM") @@ -200,6 +206,12 @@ INPUT_PORTS_END +/************************************* + * + * Graphics definitions + * + *************************************/ + static const gfx_layout ironhors_charlayout = { 8,8, @@ -272,6 +284,13 @@ static GFXDECODE_START( farwest ) GFXDECODE_ENTRY( "gfx2", 0, farwest_spritelayout2,16*8*16, 16*8 ) /* to handle 8x8 sprites */ GFXDECODE_END + +/************************************* + * + * Discrete sound + * + *************************************/ + static const discrete_mixer_desc ironhors_mixer_desc = {DISC_MIXER_IS_RESISTOR, {RES_K(2.2), RES_K(2.2), RES_K(2.2)}, @@ -317,6 +336,12 @@ static DISCRETE_SOUND_START( ironhors ) DISCRETE_SOUND_END +/************************************* + * + * Machine driver + * + *************************************/ + static const ym2203_interface ym2203_config = { { @@ -331,8 +356,31 @@ static const ym2203_interface ym2203_config = }; +static MACHINE_START( ironhors ) +{ + ironhors_state *state = (ironhors_state *)machine->driver_data; + + state->soundcpu = devtag_get_device(machine, "soundcpu"); + + state_save_register_global(machine, state->palettebank); + state_save_register_global(machine, state->charbank); + state_save_register_global(machine, state->spriterambank); +} + +static MACHINE_RESET( ironhors ) +{ + ironhors_state *state = (ironhors_state *)machine->driver_data; + + state->palettebank = 0; + state->charbank = 0; + state->spriterambank = 0; +} + static MACHINE_DRIVER_START( ironhors ) + /* driver data */ + MDRV_DRIVER_DATA(ironhors_state) + /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M6809,18432000/6) /* 3.072 MHz??? mod by Shingo Suzuki 1999/10/15 */ MDRV_CPU_PROGRAM_MAP(master_map) @@ -342,6 +390,9 @@ static MACHINE_DRIVER_START( ironhors ) MDRV_CPU_PROGRAM_MAP(slave_map) MDRV_CPU_IO_MAP(slave_io_map) + MDRV_MACHINE_START(ironhors) + MDRV_MACHINE_RESET(ironhors) + /* video hardware */ MDRV_SCREEN_ADD("screen", RASTER) MDRV_SCREEN_REFRESH_RATE(30) @@ -376,21 +427,25 @@ MACHINE_DRIVER_END static INTERRUPT_GEN( farwest_interrupt ) { + ironhors_state *state = (ironhors_state *)device->machine->driver_data; + if (cpu_getiloops(device) &1) { - if (*ironhors_interrupt_enable & 4) + if (*state->interrupt_enable & 4) cpu_set_input_line(device, M6809_FIRQ_LINE, HOLD_LINE); } else //if (cpu_getiloops() % 2) { - if (*ironhors_interrupt_enable & 1) + if (*state->interrupt_enable & 1) cpu_set_input_line(device, INPUT_LINE_NMI, PULSE_LINE); } } static READ8_DEVICE_HANDLER( farwest_soundlatch_r ) { - return soundlatch_r(cputag_get_address_space(device->machine, "soundcpu", ADDRESS_SPACE_PROGRAM),0); + ironhors_state *state = (ironhors_state *)device->machine->driver_data; + + return soundlatch_r(cpu_get_address_space(state->soundcpu, ADDRESS_SPACE_PROGRAM), 0); } static const ym2203_interface farwest_ym2203_config = @@ -429,11 +484,11 @@ MACHINE_DRIVER_END -/*************************************************************************** - - Game driver(s) - -***************************************************************************/ +/************************************* + * + * ROM definition(s) + * + *************************************/ ROM_START( ironhors ) ROM_REGION( 0x10000, "maincpu", 0 ) @@ -507,6 +562,11 @@ ROM_START( farwest ) ROM_END +/************************************* + * + * Game driver(s) + * + *************************************/ GAME( 1986, ironhors, 0, ironhors, ironhors, 0, ROT0, "Konami", "Iron Horse", 0 ) GAME( 1986, dairesya, ironhors, ironhors, dairesya, 0, ROT0, "[Konami] (Kawakusu license)", "Dai Ressya Goutou (Japan)", 0 ) diff --git a/src/mame/includes/ironhors.h b/src/mame/includes/ironhors.h new file mode 100644 index 00000000000..d36ed4567be --- /dev/null +++ b/src/mame/includes/ironhors.h @@ -0,0 +1,40 @@ +/************************************************************************* + + IronHorse + +*************************************************************************/ + +typedef struct _ironhors_state ironhors_state; +struct _ironhors_state +{ + /* memory pointers */ + UINT8 * videoram; + UINT8 * colorram; + UINT8 * spriteram; + UINT8 * spriteram2; + UINT8 * scroll; + UINT8 * interrupt_enable; + size_t spriteram_size; + + /* video-related */ + tilemap *bg_tilemap; + int palettebank, charbank, spriterambank; + + /* devices */ + const device_config *soundcpu; +}; + + +/*----------- defined in video/ironhors.c -----------*/ + +WRITE8_HANDLER( ironhors_videoram_w ); +WRITE8_HANDLER( ironhors_colorram_w ); +WRITE8_HANDLER( ironhors_palettebank_w ); +WRITE8_HANDLER( ironhors_charbank_w ); +WRITE8_HANDLER( ironhors_flipscreen_w ); + +PALETTE_INIT( ironhors ); +VIDEO_START( ironhors ); +VIDEO_UPDATE( ironhors ); +VIDEO_START( farwest ); +VIDEO_UPDATE( farwest ); diff --git a/src/mame/video/ironhors.c b/src/mame/video/ironhors.c index 2e79f03b78e..91de94821b5 100644 --- a/src/mame/video/ironhors.c +++ b/src/mame/video/ironhors.c @@ -8,17 +8,14 @@ #include "driver.h" #include "video/resnet.h" - -UINT8 *ironhors_scroll; -static int palettebank, charbank, spriterambank; - -static tilemap *bg_tilemap; +#include "includes/ironhors.h" /*************************************************************************** Convert the color PROMs into a more useable format. ***************************************************************************/ + PALETTE_INIT( ironhors ) { static const int resistances[4] = { 2000, 1000, 470, 220 }; @@ -83,34 +80,38 @@ PALETTE_INIT( ironhors ) WRITE8_HANDLER( ironhors_videoram_w ) { - space->machine->generic.videoram.u8[offset] = data; - tilemap_mark_tile_dirty(bg_tilemap, offset); + ironhors_state *state = (ironhors_state *)space->machine->driver_data; + state->videoram[offset] = data; + tilemap_mark_tile_dirty(state->bg_tilemap, offset); } WRITE8_HANDLER( ironhors_colorram_w ) { - space->machine->generic.colorram.u8[offset] = data; - tilemap_mark_tile_dirty(bg_tilemap, offset); + ironhors_state *state = (ironhors_state *)space->machine->driver_data; + state->colorram[offset] = data; + tilemap_mark_tile_dirty(state->bg_tilemap, offset); } WRITE8_HANDLER( ironhors_charbank_w ) { - if (charbank != (data & 0x03)) + ironhors_state *state = (ironhors_state *)space->machine->driver_data; + if (state->charbank != (data & 0x03)) { - charbank = data & 0x03; + state->charbank = data & 0x03; tilemap_mark_all_tiles_dirty_all(space->machine); } - spriterambank = data & 0x08; + state->spriterambank = data & 0x08; /* other bits unknown */ } WRITE8_HANDLER( ironhors_palettebank_w ) { - if (palettebank != (data & 0x07)) + ironhors_state *state = (ironhors_state *)space->machine->driver_data; + if (state->palettebank != (data & 0x07)) { - palettebank = data & 0x07; + state->palettebank = data & 0x07; tilemap_mark_all_tiles_dirty_all(space->machine); } @@ -119,7 +120,8 @@ WRITE8_HANDLER( ironhors_palettebank_w ) /* bit 6 unknown - set after game over */ - if (data & 0x88) popmessage("ironhors_palettebank_w %02x",data); + if (data & 0x88) + popmessage("ironhors_palettebank_w %02x",data); } WRITE8_HANDLER( ironhors_flipscreen_w ) @@ -135,41 +137,43 @@ WRITE8_HANDLER( ironhors_flipscreen_w ) static TILE_GET_INFO( get_bg_tile_info ) { - int code = machine->generic.videoram.u8[tile_index] + ((machine->generic.colorram.u8[tile_index] & 0x40) << 2) + - ((machine->generic.colorram.u8[tile_index] & 0x20) << 4) + (charbank << 10); - int color = (machine->generic.colorram.u8[tile_index] & 0x0f) + 16 * palettebank; - int flags = ((machine->generic.colorram.u8[tile_index] & 0x10) ? TILE_FLIPX : 0) | - ((machine->generic.colorram.u8[tile_index] & 0x20) ? TILE_FLIPY : 0); + ironhors_state *state = (ironhors_state *)machine->driver_data; + int code = state->videoram[tile_index] + ((state->colorram[tile_index] & 0x40) << 2) + + ((state->colorram[tile_index] & 0x20) << 4) + (state->charbank << 10); + int color = (state->colorram[tile_index] & 0x0f) + 16 * state->palettebank; + int flags = ((state->colorram[tile_index] & 0x10) ? TILE_FLIPX : 0) | + ((state->colorram[tile_index] & 0x20) ? TILE_FLIPY : 0); SET_TILE_INFO(0, code, color, flags); } VIDEO_START( ironhors ) { - bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows, - 8, 8, 32, 32); + ironhors_state *state = (ironhors_state *)machine->driver_data; + state->bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows, 8, 8, 32, 32); - tilemap_set_scroll_rows(bg_tilemap, 32); + tilemap_set_scroll_rows(state->bg_tilemap, 32); } -static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect) +static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect ) { + ironhors_state *state = (ironhors_state *)machine->driver_data; int offs; UINT8 *sr; - if (spriterambank != 0) - sr = machine->generic.spriteram.u8; + if (state->spriterambank != 0) + sr = state->spriteram; else - sr = machine->generic.spriteram2.u8; + sr = state->spriteram2; - for (offs = 0;offs < machine->generic.spriteram_size;offs += 5) + for (offs = 0; offs < state->spriteram_size; offs += 5) { - int sx = sr[offs+3]; - int sy = sr[offs+2]; - int flipx = sr[offs+4] & 0x20; - int flipy = sr[offs+4] & 0x40; - int code = (sr[offs] << 2) + ((sr[offs+1] & 0x03) << 10) + ((sr[offs+1] & 0x0c) >> 2); - int color = ((sr[offs+1] & 0xf0)>>4) + 16 * palettebank; + int sx = sr[offs + 3]; + int sy = sr[offs + 2]; + int flipx = sr[offs + 4] & 0x20; + int flipy = sr[offs + 4] & 0x40; + int code = (sr[offs] << 2) + ((sr[offs + 1] & 0x03) << 10) + ((sr[offs + 1] & 0x0c) >> 2); + int color = ((sr[offs + 1] & 0xf0) >> 4) + 16 * state->palettebank; // int mod = flip_screen_get(machine) ? -8 : 8; if (flip_screen_get(machine)) @@ -180,7 +184,7 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const recta flipy = !flipy; } - switch (sr[offs+4] & 0x0c) + switch (sr[offs + 4] & 0x0c) { case 0x00: /* 16x16 */ drawgfx_transpen(bitmap,cliprect,machine->gfx[1], @@ -237,55 +241,51 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const recta VIDEO_UPDATE( ironhors ) { + ironhors_state *state = (ironhors_state *)screen->machine->driver_data; int row; for (row = 0; row < 32; row++) - tilemap_set_scrollx(bg_tilemap, row, ironhors_scroll[row]); + tilemap_set_scrollx(state->bg_tilemap, row, state->scroll[row]); - tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0); + tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0); draw_sprites(screen->machine, bitmap, cliprect); return 0; } static TILE_GET_INFO( farwest_get_bg_tile_info ) { - int code = machine->generic.videoram.u8[tile_index] + ((machine->generic.colorram.u8[tile_index] & 0x40) << 2) + - ((machine->generic.colorram.u8[tile_index] & 0x20) << 4) + (charbank << 10); - int color = (machine->generic.colorram.u8[tile_index] & 0x0f) + 16 * palettebank; - int flags = 0;//((machine->generic.colorram.u8[tile_index] & 0x10) ? TILE_FLIPX : 0) | ((machine->generic.colorram.u8[tile_index] & 0x20) ? TILE_FLIPY : 0); + ironhors_state *state = (ironhors_state *)machine->driver_data; + int code = state->videoram[tile_index] + ((state->colorram[tile_index] & 0x40) << 2) + + ((state->colorram[tile_index] & 0x20) << 4) + (state->charbank << 10); + int color = (state->colorram[tile_index] & 0x0f) + 16 * state->palettebank; + int flags = 0;//((state->colorram[tile_index] & 0x10) ? TILE_FLIPX : 0) | ((state->colorram[tile_index] & 0x20) ? TILE_FLIPY : 0); SET_TILE_INFO(0, code, color, flags); } VIDEO_START( farwest ) { - bg_tilemap = tilemap_create(machine, farwest_get_bg_tile_info, tilemap_scan_rows, - 8, 8, 32, 32); + ironhors_state *state = (ironhors_state *)machine->driver_data; + state->bg_tilemap = tilemap_create(machine, farwest_get_bg_tile_info, tilemap_scan_rows, 8, 8, 32, 32); - tilemap_set_scroll_rows(bg_tilemap, 32); + tilemap_set_scroll_rows(state->bg_tilemap, 32); } -static void farwest_draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect) +static void farwest_draw_sprites( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect ) { + ironhors_state *state = (ironhors_state *)machine->driver_data; int offs; - UINT8 *sr=machine->generic.spriteram2.u8; - UINT8 *sr2=machine->generic.spriteram.u8; + UINT8 *sr = state->spriteram2; + UINT8 *sr2 = state->spriteram; -// if (spriterambank != 0) - // sr = spriteram; - //else - //sr = ; - - for (offs = 0;offs < machine->generic.spriteram_size;offs += 4) + for (offs = 0; offs < state->spriteram_size; offs += 4) { - int sx = sr[offs+2]; - int sy = sr[offs+1]; - int flipx = sr[offs+3] & 0x20; - int flipy = sr[offs+3] & 0x40; + int sx = sr[offs + 2]; + int sy = sr[offs + 1]; + int flipx = sr[offs + 3] & 0x20; + int flipy = sr[offs + 3] & 0x40; int code = (sr[offs] << 2) + ((sr2[offs] & 0x03) << 10) + ((sr2[offs] & 0x0c) >> 2); - int color = ((sr2[offs] & 0xf0)>>4) + 16 * palettebank; - - + int color = ((sr2[offs] & 0xf0) >> 4) + 16 * state->palettebank; // int mod = flip_screen_get() ? -8 : 8; @@ -297,7 +297,7 @@ static void farwest_draw_sprites(running_machine *machine, bitmap_t *bitmap, con // flipy = !flipy; } - switch (sr[offs+3] & 0x0c) + switch (sr[offs + 3] & 0x0c) { case 0x00: /* 16x16 */ drawgfx_transpen(bitmap,cliprect,machine->gfx[1], @@ -354,12 +354,13 @@ static void farwest_draw_sprites(running_machine *machine, bitmap_t *bitmap, con VIDEO_UPDATE( farwest) { + ironhors_state *state = (ironhors_state *)screen->machine->driver_data; int row; for (row = 0; row < 32; row++) - tilemap_set_scrollx(bg_tilemap, row, ironhors_scroll[row]); + tilemap_set_scrollx(state->bg_tilemap, row, state->scroll[row]); - tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0); + tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0); farwest_draw_sprites(screen->machine, bitmap, cliprect); return 0; }