mirror of
https://github.com/holub/mame
synced 2025-10-06 09:00:04 +03:00
Added driver data struct to ironhors.c
This commit is contained in:
parent
0c3290533f
commit
970edeb987
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -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
|
||||
|
@ -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 )
|
||||
|
40
src/mame/includes/ironhors.h
Normal file
40
src/mame/includes/ironhors.h
Normal file
@ -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 );
|
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user