mirror of
https://github.com/holub/mame
synced 2025-10-05 08:41:31 +03:00
senjyo.c: added save state support, removed unneeded include, member variables and suffixes (nw)
This commit is contained in:
parent
8f484ca9b9
commit
7727ba546a
@ -26,7 +26,7 @@ WRITE_LINE_MEMBER(senjyo_state::sound_line_clock)
|
||||
}
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(senjyo_state::senjyo_volume_w)
|
||||
WRITE8_MEMBER(senjyo_state::volume_w)
|
||||
{
|
||||
m_single_volume = data & 0x0f;
|
||||
}
|
||||
|
@ -78,18 +78,23 @@ I/O read/write
|
||||
#include "emu.h"
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "sound/sn76496.h"
|
||||
#include "sound/samples.h"
|
||||
#include "machine/segacrpt.h"
|
||||
#include "includes/senjyo.h"
|
||||
|
||||
void senjyo_state::machine_reset()
|
||||
void senjyo_state::machine_start()
|
||||
{
|
||||
// ...
|
||||
save_item(NAME(m_sound_cmd));
|
||||
save_item(NAME(m_single_volume));
|
||||
save_item(NAME(m_sound_state));
|
||||
save_item(NAME(m_bgstripes));
|
||||
}
|
||||
|
||||
INTERRUPT_GEN_MEMBER(senjyo_state::senjyo_interrupt)
|
||||
void senjyo_state::machine_reset()
|
||||
{
|
||||
device.execute().set_input_line(0, ASSERT_LINE);
|
||||
m_sound_cmd = 0;
|
||||
m_single_volume = 0;
|
||||
m_sound_state = 0;
|
||||
m_bgstripes = 0;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(senjyo_state::irq_ctrl_w)
|
||||
@ -105,15 +110,13 @@ WRITE8_MEMBER(senjyo_state::flip_screen_w)
|
||||
|
||||
WRITE8_MEMBER(senjyo_state::sound_cmd_w)
|
||||
{
|
||||
z80pio_device *device = machine().device<z80pio_device>("z80pio");
|
||||
|
||||
m_sound_cmd = data;
|
||||
|
||||
device->strobe_a(0);
|
||||
device->strobe_a(1);
|
||||
m_pio->strobe_a(0);
|
||||
m_pio->strobe_a(1);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(senjyo_state::senjyo_paletteram_w)
|
||||
WRITE8_MEMBER(senjyo_state::paletteram_w)
|
||||
{
|
||||
int r = (data << 2) & 0xC;
|
||||
int g = (data ) & 0xC;
|
||||
@ -131,15 +134,15 @@ WRITE8_MEMBER(senjyo_state::senjyo_paletteram_w)
|
||||
static ADDRESS_MAP_START( senjyo_map, AS_PROGRAM, 8, senjyo_state )
|
||||
AM_RANGE(0x0000, 0x7fff) AM_ROM
|
||||
AM_RANGE(0x8000, 0x8fff) AM_RAM
|
||||
AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(senjyo_fgvideoram_w) AM_SHARE("fgvideoram")
|
||||
AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(senjyo_fgcolorram_w) AM_SHARE("fgcolorram")
|
||||
AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram")
|
||||
AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(fgcolorram_w) AM_SHARE("fgcolorram")
|
||||
AM_RANGE(0x9800, 0x987f) AM_RAM AM_SHARE("spriteram")
|
||||
AM_RANGE(0x9c00, 0x9dff) AM_RAM_WRITE(senjyo_paletteram_w) AM_SHARE("paletteram")
|
||||
AM_RANGE(0x9c00, 0x9dff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
|
||||
AM_RANGE(0x9e00, 0x9e1f) AM_RAM AM_SHARE("fgscroll")
|
||||
AM_RANGE(0x9e20, 0x9e21) AM_RAM AM_SHARE("scrolly3")
|
||||
/* AM_RANGE(0x9e22, 0x9e23) height of the layer (Senjyo only, fixed at 0x380) */
|
||||
AM_RANGE(0x9e25, 0x9e25) AM_RAM AM_SHARE("scrollx3")
|
||||
AM_RANGE(0x9e27, 0x9e27) AM_RAM_WRITE(senjyo_bgstripes_w) AM_SHARE("bgstripesram") /* controls width of background stripes */
|
||||
AM_RANGE(0x9e27, 0x9e27) AM_RAM AM_SHARE("bgstripesram") /* controls width of background stripes */
|
||||
AM_RANGE(0x9e28, 0x9e29) AM_RAM AM_SHARE("scrolly2")
|
||||
/* AM_RANGE(0x9e2a, 0x9e2b) height of the layer (Senjyo only, fixed at 0x200) */
|
||||
AM_RANGE(0x9e2d, 0x9e2d) AM_RAM AM_SHARE("scrollx2")
|
||||
@ -149,9 +152,9 @@ static ADDRESS_MAP_START( senjyo_map, AS_PROGRAM, 8, senjyo_state )
|
||||
/* AM_RANGE(0x9e38, 0x9e38) probably radar y position (Senjyo only, fixed at 0x61) */
|
||||
/* AM_RANGE(0x9e3d, 0x9e3d) probably radar x position (Senjyo only, 0x00/0xc0 depending on screen flip) */
|
||||
AM_RANGE(0x9e00, 0x9e3f) AM_RAM
|
||||
AM_RANGE(0xa000, 0xa7ff) AM_RAM_WRITE(senjyo_bg3videoram_w) AM_SHARE("bg3videoram")
|
||||
AM_RANGE(0xa800, 0xafff) AM_RAM_WRITE(senjyo_bg2videoram_w) AM_SHARE("bg2videoram")
|
||||
AM_RANGE(0xb000, 0xb7ff) AM_RAM_WRITE(senjyo_bg1videoram_w) AM_SHARE("bg1videoram")
|
||||
AM_RANGE(0xa000, 0xa7ff) AM_RAM_WRITE(bg3videoram_w) AM_SHARE("bg3videoram")
|
||||
AM_RANGE(0xa800, 0xafff) AM_RAM_WRITE(bg2videoram_w) AM_SHARE("bg2videoram")
|
||||
AM_RANGE(0xb000, 0xb7ff) AM_RAM_WRITE(bg1videoram_w) AM_SHARE("bg1videoram")
|
||||
AM_RANGE(0xb800, 0xbbff) AM_RAM AM_SHARE("radarram")
|
||||
AM_RANGE(0xd000, 0xd000) AM_READ_PORT("P1") AM_WRITE(flip_screen_w)
|
||||
AM_RANGE(0xd001, 0xd001) AM_READ_PORT("P2")
|
||||
@ -167,7 +170,7 @@ static ADDRESS_MAP_START( senjyo_sound_map, AS_PROGRAM, 8, senjyo_state )
|
||||
AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("sn1", sn76496_device, write)
|
||||
AM_RANGE(0x9000, 0x9000) AM_DEVWRITE("sn2", sn76496_device, write)
|
||||
AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("sn3", sn76496_device, write)
|
||||
AM_RANGE(0xd000, 0xd000) AM_WRITE(senjyo_volume_w)
|
||||
AM_RANGE(0xd000, 0xd000) AM_WRITE(volume_w)
|
||||
#if 0
|
||||
AM_RANGE(0xe000, 0xe000) AM_WRITE(unknown)
|
||||
AM_RANGE(0xf000, 0xf000) AM_WRITE(unknown)
|
||||
@ -198,10 +201,10 @@ WRITE8_MEMBER(senjyo_state::starforb_scrollx2)
|
||||
static ADDRESS_MAP_START( starforb_map, AS_PROGRAM, 8, senjyo_state )
|
||||
AM_RANGE(0x0000, 0x7fff) AM_ROM
|
||||
AM_RANGE(0x8000, 0x8fff) AM_RAM
|
||||
AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(senjyo_fgvideoram_w) AM_SHARE("fgvideoram")
|
||||
AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(senjyo_fgcolorram_w) AM_SHARE("fgcolorram")
|
||||
AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram")
|
||||
AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(fgcolorram_w) AM_SHARE("fgcolorram")
|
||||
AM_RANGE(0x9800, 0x987f) AM_RAM AM_SHARE("spriteram")
|
||||
AM_RANGE(0x9c00, 0x9dff) AM_RAM_WRITE(senjyo_paletteram_w) AM_SHARE("paletteram")
|
||||
AM_RANGE(0x9c00, 0x9dff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
|
||||
/* The format / use of the ram here is different on the bootleg */
|
||||
AM_RANGE(0x9e20, 0x9e21) AM_RAM AM_SHARE("scrolly3")
|
||||
AM_RANGE(0x9e25, 0x9e25) AM_RAM AM_SHARE("scrollx3")
|
||||
@ -209,9 +212,9 @@ static ADDRESS_MAP_START( starforb_map, AS_PROGRAM, 8, senjyo_state )
|
||||
AM_RANGE(0x9e35, 0x9e35) AM_RAM_WRITE(starforb_scrollx2) AM_SHARE("scrollx2") // ok
|
||||
AM_RANGE(0x9e00, 0x9e3f) AM_RAM
|
||||
|
||||
AM_RANGE(0xa000, 0xa7ff) AM_RAM_WRITE(senjyo_bg3videoram_w) AM_SHARE("bg3videoram")
|
||||
AM_RANGE(0xa800, 0xafff) AM_RAM_WRITE(senjyo_bg2videoram_w) AM_SHARE("bg2videoram")
|
||||
AM_RANGE(0xb000, 0xb7ff) AM_RAM_WRITE(senjyo_bg1videoram_w) AM_SHARE("bg1videoram")
|
||||
AM_RANGE(0xa000, 0xa7ff) AM_RAM_WRITE(bg3videoram_w) AM_SHARE("bg3videoram")
|
||||
AM_RANGE(0xa800, 0xafff) AM_RAM_WRITE(bg2videoram_w) AM_SHARE("bg2videoram")
|
||||
AM_RANGE(0xb000, 0xb7ff) AM_RAM_WRITE(bg1videoram_w) AM_SHARE("bg1videoram")
|
||||
AM_RANGE(0xb800, 0xbbff) AM_RAM AM_SHARE("radarram")
|
||||
AM_RANGE(0xd000, 0xd000) AM_READ_PORT("P1") AM_WRITE(flip_screen_w)
|
||||
AM_RANGE(0xd001, 0xd001) AM_READ_PORT("P2")
|
||||
@ -221,7 +224,7 @@ static ADDRESS_MAP_START( starforb_map, AS_PROGRAM, 8, senjyo_state )
|
||||
|
||||
/* these aren't used / written, left here to make sure memory is allocated */
|
||||
AM_RANGE(0xfe00, 0xfe1f) AM_RAM AM_SHARE("fgscroll")
|
||||
AM_RANGE(0xfe27, 0xfe27) AM_RAM_WRITE(senjyo_bgstripes_w) AM_SHARE("bgstripesram") /* controls width of background stripes */
|
||||
AM_RANGE(0xfe27, 0xfe27) AM_RAM AM_SHARE("bgstripesram") /* controls width of background stripes */
|
||||
AM_RANGE(0xfe28, 0xfe29) AM_RAM AM_SHARE("scrolly1")
|
||||
AM_RANGE(0xfe2d, 0xfe2d) AM_RAM AM_SHARE("scrollx1")
|
||||
ADDRESS_MAP_END
|
||||
@ -233,7 +236,7 @@ static ADDRESS_MAP_START( starforb_sound_map, AS_PROGRAM, 8, senjyo_state )
|
||||
AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("sn1", sn76496_device, write)
|
||||
AM_RANGE(0x9000, 0x9000) AM_DEVWRITE("sn2", sn76496_device, write)
|
||||
AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("sn3", sn76496_device, write)
|
||||
AM_RANGE(0xd000, 0xd000) AM_WRITE(senjyo_volume_w)
|
||||
AM_RANGE(0xd000, 0xd000) AM_WRITE(volume_w)
|
||||
#if 0
|
||||
AM_RANGE(0xe000, 0xe000) AM_WRITE(unknown)
|
||||
AM_RANGE(0xf000, 0xf000) AM_WRITE(unknown)
|
||||
@ -556,7 +559,7 @@ static MACHINE_CONFIG_START( senjyo, senjyo_state )
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", Z80, 4000000) /* 4 MHz? */
|
||||
MCFG_CPU_PROGRAM_MAP(senjyo_map)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", senjyo_state, senjyo_interrupt)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", senjyo_state, irq0_line_assert)
|
||||
|
||||
MCFG_CPU_ADD("sub", Z80, 2000000) /* 2 MHz? */
|
||||
MCFG_CPU_CONFIG(senjyo_daisy_chain)
|
||||
@ -578,7 +581,7 @@ static MACHINE_CONFIG_START( senjyo, senjyo_state )
|
||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
|
||||
MCFG_SCREEN_SIZE(32*8, 32*8)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(senjyo_state, screen_update_senjyo)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(senjyo_state, screen_update)
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
|
||||
MCFG_GFXDECODE_ADD("gfxdecode", "palette", senjyo)
|
||||
@ -925,10 +928,10 @@ DRIVER_INIT_MEMBER(senjyo_state,senjyo)
|
||||
}
|
||||
|
||||
|
||||
GAME( 1983, senjyo, 0, senjyo, senjyo, senjyo_state, senjyo, ROT90, "Tehkan", "Senjyo", 0 )
|
||||
GAME( 1984, starforc, 0, senjyo, starforc, senjyo_state, starforc, ROT90, "Tehkan", "Star Force", 0 )
|
||||
GAME( 1984, starforce,starforc, senjyo, starforc, senjyo_state, starfore, ROT90, "Tehkan", "Star Force (encrypted, set 1)", 0 )
|
||||
GAME( 1984, starforcb,starforc, starforb,starforc, senjyo_state, starfore, ROT90, "bootleg", "Star Force (encrypted, bootleg)", 0 )
|
||||
GAME( 1984, starforca,starforc, senjyo, starforc, senjyo_state, starfora, ROT90, "Tehkan", "Star Force (encrypted, set 2)", 0 )
|
||||
GAME( 1985, megaforc, starforc, senjyo, starforc, senjyo_state, starforc, ROT90, "Tehkan (Video Ware license)", "Mega Force", 0 )
|
||||
GAME( 1986, baluba, 0, senjyo, baluba, senjyo_state, starforc, ROT90, "Able Corp, Ltd.", "Baluba-louk no Densetsu (Japan)", 0 )
|
||||
GAME( 1983, senjyo, 0, senjyo, senjyo, senjyo_state, senjyo, ROT90, "Tehkan", "Senjyo", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1984, starforc, 0, senjyo, starforc, senjyo_state, starforc, ROT90, "Tehkan", "Star Force", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1984, starforce,starforc, senjyo, starforc, senjyo_state, starfore, ROT90, "Tehkan", "Star Force (encrypted, set 1)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1984, starforcb,starforc, starforb,starforc, senjyo_state, starfore, ROT90, "bootleg", "Star Force (encrypted, bootleg)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1984, starforca,starforc, senjyo, starforc, senjyo_state, starfora, ROT90, "Tehkan", "Star Force (encrypted, set 2)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1985, megaforc, starforc, senjyo, starforc, senjyo_state, starforc, ROT90, "Tehkan (Video Ware license)", "Mega Force", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1986, baluba, 0, senjyo, baluba, senjyo_state, starforc, ROT90, "Able Corp, Ltd.", "Baluba-louk no Densetsu (Japan)", GAME_SUPPORTS_SAVE )
|
||||
|
@ -8,7 +8,11 @@ class senjyo_state : public driver_device
|
||||
public:
|
||||
senjyo_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_pio(*this, "z80pio"),
|
||||
m_dac(*this, "dac"),
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
m_palette(*this, "palette"),
|
||||
m_spriteram(*this, "spriteram"),
|
||||
m_fgscroll(*this, "fgscroll"),
|
||||
m_scrollx1(*this, "scrollx1"),
|
||||
@ -24,19 +28,16 @@ public:
|
||||
m_bg3videoram(*this, "bg3videoram"),
|
||||
m_radarram(*this, "radarram"),
|
||||
m_bgstripesram(*this, "bgstripesram"),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
m_palette(*this, "palette"),
|
||||
m_generic_paletteram_8(*this, "paletteram") { }
|
||||
|
||||
UINT8 m_sound_cmd;
|
||||
INT16 *m_single_data;
|
||||
int m_single_rate;
|
||||
int m_single_volume;
|
||||
int m_sound_state;
|
||||
|
||||
/* devices */
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<z80pio_device> m_pio;
|
||||
required_device<dac_device> m_dac;
|
||||
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<palette_device> m_palette;
|
||||
|
||||
/* memory pointers */
|
||||
required_shared_ptr<UINT8> m_spriteram;
|
||||
required_shared_ptr<UINT8> m_fgscroll;
|
||||
required_shared_ptr<UINT8> m_scrollx1;
|
||||
@ -52,50 +53,54 @@ public:
|
||||
required_shared_ptr<UINT8> m_bg3videoram;
|
||||
required_shared_ptr<UINT8> m_radarram;
|
||||
required_shared_ptr<UINT8> m_bgstripesram;
|
||||
required_shared_ptr<UINT8> m_generic_paletteram_8;
|
||||
|
||||
// game specific initialization
|
||||
int m_is_senjyo;
|
||||
int m_scrollhack;
|
||||
|
||||
UINT8 m_sound_cmd;
|
||||
int m_single_volume;
|
||||
int m_sound_state;
|
||||
int m_bgstripes;
|
||||
tilemap_t *m_fg_tilemap;
|
||||
tilemap_t *m_bg1_tilemap;
|
||||
tilemap_t *m_bg2_tilemap;
|
||||
tilemap_t *m_bg3_tilemap;
|
||||
|
||||
int m_bgstripes;
|
||||
|
||||
DECLARE_WRITE8_MEMBER(flip_screen_w);
|
||||
DECLARE_WRITE8_MEMBER(senjyo_paletteram_w);
|
||||
DECLARE_WRITE8_MEMBER(paletteram_w);
|
||||
DECLARE_WRITE8_MEMBER(starforb_scrolly2);
|
||||
DECLARE_WRITE8_MEMBER(starforb_scrollx2);
|
||||
DECLARE_WRITE8_MEMBER(senjyo_fgvideoram_w);
|
||||
DECLARE_WRITE8_MEMBER(senjyo_fgcolorram_w);
|
||||
DECLARE_WRITE8_MEMBER(senjyo_bg1videoram_w);
|
||||
DECLARE_WRITE8_MEMBER(senjyo_bg2videoram_w);
|
||||
DECLARE_WRITE8_MEMBER(senjyo_bg3videoram_w);
|
||||
DECLARE_WRITE8_MEMBER(senjyo_bgstripes_w);
|
||||
DECLARE_WRITE8_MEMBER(senjyo_volume_w);
|
||||
DECLARE_WRITE8_MEMBER(fgvideoram_w);
|
||||
DECLARE_WRITE8_MEMBER(fgcolorram_w);
|
||||
DECLARE_WRITE8_MEMBER(bg1videoram_w);
|
||||
DECLARE_WRITE8_MEMBER(bg2videoram_w);
|
||||
DECLARE_WRITE8_MEMBER(bg3videoram_w);
|
||||
DECLARE_WRITE8_MEMBER(volume_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(sound_line_clock);
|
||||
DECLARE_WRITE8_MEMBER(sound_cmd_w);
|
||||
DECLARE_WRITE8_MEMBER(irq_ack_w);
|
||||
DECLARE_WRITE8_MEMBER(irq_ctrl_w);
|
||||
DECLARE_READ8_MEMBER(pio_pa_r);
|
||||
|
||||
DECLARE_DRIVER_INIT(starfora);
|
||||
DECLARE_DRIVER_INIT(senjyo);
|
||||
DECLARE_DRIVER_INIT(starfore);
|
||||
DECLARE_DRIVER_INIT(starforc);
|
||||
|
||||
TILE_GET_INFO_MEMBER(get_fg_tile_info);
|
||||
TILE_GET_INFO_MEMBER(senjyo_bg1_tile_info);
|
||||
TILE_GET_INFO_MEMBER(starforc_bg1_tile_info);
|
||||
TILE_GET_INFO_MEMBER(get_bg2_tile_info);
|
||||
TILE_GET_INFO_MEMBER(get_bg3_tile_info);
|
||||
|
||||
virtual void machine_start();
|
||||
virtual void machine_reset();
|
||||
virtual void video_start();
|
||||
UINT32 screen_update_senjyo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
INTERRUPT_GEN_MEMBER(senjyo_interrupt);
|
||||
DECLARE_WRITE8_MEMBER(irq_ctrl_w);
|
||||
DECLARE_READ8_MEMBER(pio_pa_r);
|
||||
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
void draw_bgbitmap(bitmap_ind16 &bitmap,const rectangle &cliprect);
|
||||
void draw_radar(bitmap_ind16 &bitmap,const rectangle &cliprect);
|
||||
void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect,int priority);
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<palette_device> m_palette;
|
||||
required_shared_ptr<UINT8> m_generic_paletteram_8;
|
||||
};
|
||||
|
||||
/*----------- defined in audio/senjyo.c -----------*/
|
||||
|
@ -114,37 +114,32 @@ void senjyo_state::video_start()
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
WRITE8_MEMBER(senjyo_state::senjyo_fgvideoram_w)
|
||||
WRITE8_MEMBER(senjyo_state::fgvideoram_w)
|
||||
{
|
||||
m_fgvideoram[offset] = data;
|
||||
m_fg_tilemap->mark_tile_dirty(offset);
|
||||
}
|
||||
WRITE8_MEMBER(senjyo_state::senjyo_fgcolorram_w)
|
||||
WRITE8_MEMBER(senjyo_state::fgcolorram_w)
|
||||
{
|
||||
m_fgcolorram[offset] = data;
|
||||
m_fg_tilemap->mark_tile_dirty(offset);
|
||||
}
|
||||
WRITE8_MEMBER(senjyo_state::senjyo_bg1videoram_w)
|
||||
WRITE8_MEMBER(senjyo_state::bg1videoram_w)
|
||||
{
|
||||
m_bg1videoram[offset] = data;
|
||||
m_bg1_tilemap->mark_tile_dirty(offset);
|
||||
}
|
||||
WRITE8_MEMBER(senjyo_state::senjyo_bg2videoram_w)
|
||||
WRITE8_MEMBER(senjyo_state::bg2videoram_w)
|
||||
{
|
||||
m_bg2videoram[offset] = data;
|
||||
m_bg2_tilemap->mark_tile_dirty(offset);
|
||||
}
|
||||
WRITE8_MEMBER(senjyo_state::senjyo_bg3videoram_w)
|
||||
WRITE8_MEMBER(senjyo_state::bg3videoram_w)
|
||||
{
|
||||
m_bg3videoram[offset] = data;
|
||||
m_bg3_tilemap->mark_tile_dirty(offset);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(senjyo_state::senjyo_bgstripes_w)
|
||||
{
|
||||
*m_bgstripesram = data;
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Display refresh
|
||||
@ -153,28 +148,25 @@ WRITE8_MEMBER(senjyo_state::senjyo_bgstripes_w)
|
||||
|
||||
void senjyo_state::draw_bgbitmap(bitmap_ind16 &bitmap,const rectangle &cliprect)
|
||||
{
|
||||
int x,y,pen,strwid,count;
|
||||
|
||||
|
||||
if (m_bgstripes == 0xff) /* off */
|
||||
bitmap.fill(0, cliprect);
|
||||
else
|
||||
{
|
||||
int flip = flip_screen();
|
||||
|
||||
pen = 0;
|
||||
count = 0;
|
||||
strwid = m_bgstripes;
|
||||
int pen = 0;
|
||||
int count = 0;
|
||||
int strwid = m_bgstripes;
|
||||
if (strwid == 0) strwid = 0x100;
|
||||
if (flip) strwid ^= 0xff;
|
||||
|
||||
for (x = 0;x < 256;x++)
|
||||
for (int x = 0;x < 256;x++)
|
||||
{
|
||||
if (flip)
|
||||
for (y = 0;y < 256;y++)
|
||||
for (int y = 0;y < 256;y++)
|
||||
bitmap.pix16(y, 255 - x) = 384 + pen;
|
||||
else
|
||||
for (y = 0;y < 256;y++)
|
||||
for (int y = 0;y < 256;y++)
|
||||
bitmap.pix16(y, x) = 384 + pen;
|
||||
|
||||
count += 0x10;
|
||||
@ -189,10 +181,8 @@ void senjyo_state::draw_bgbitmap(bitmap_ind16 &bitmap,const rectangle &cliprect)
|
||||
|
||||
void senjyo_state::draw_radar(bitmap_ind16 &bitmap,const rectangle &cliprect)
|
||||
{
|
||||
int offs,x;
|
||||
|
||||
for (offs = 0;offs < 0x400;offs++)
|
||||
for (x = 0;x < 8;x++)
|
||||
for (int offs = 0;offs < 0x400;offs++)
|
||||
for (int x = 0;x < 8;x++)
|
||||
if (m_radarram[offs] & (1 << x))
|
||||
{
|
||||
int sx, sy;
|
||||
@ -213,26 +203,23 @@ void senjyo_state::draw_radar(bitmap_ind16 &bitmap,const rectangle &cliprect)
|
||||
|
||||
void senjyo_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect,int priority)
|
||||
{
|
||||
UINT8 *spriteram = m_spriteram;
|
||||
int offs;
|
||||
|
||||
for (offs = m_spriteram.bytes() - 4; offs >= 0; offs -= 4)
|
||||
for (int offs = m_spriteram.bytes() - 4; offs >= 0; offs -= 4)
|
||||
{
|
||||
int big,sx,sy,flipx,flipy;
|
||||
|
||||
if (((spriteram[offs+1] & 0x30) >> 4) == priority)
|
||||
if (((m_spriteram[offs+1] & 0x30) >> 4) == priority)
|
||||
{
|
||||
if (m_is_senjyo) /* Senjyo */
|
||||
big = (spriteram[offs] & 0x80);
|
||||
big = (m_spriteram[offs] & 0x80);
|
||||
else /* Star Force */
|
||||
big = ((spriteram[offs] & 0xc0) == 0xc0);
|
||||
sx = spriteram[offs+3];
|
||||
big = ((m_spriteram[offs] & 0xc0) == 0xc0);
|
||||
sx = m_spriteram[offs+3];
|
||||
if (big)
|
||||
sy = 224-spriteram[offs+2];
|
||||
sy = 224-m_spriteram[offs+2];
|
||||
else
|
||||
sy = 240-spriteram[offs+2];
|
||||
flipx = spriteram[offs+1] & 0x40;
|
||||
flipy = spriteram[offs+1] & 0x80;
|
||||
sy = 240-m_spriteram[offs+2];
|
||||
flipx = m_spriteram[offs+1] & 0x40;
|
||||
flipy = m_spriteram[offs+1] & 0x80;
|
||||
|
||||
if (flip_screen())
|
||||
{
|
||||
@ -253,32 +240,28 @@ void senjyo_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect,i
|
||||
|
||||
|
||||
m_gfxdecode->gfx(big ? 5 : 4)->transpen(bitmap,cliprect,
|
||||
spriteram[offs],
|
||||
spriteram[offs + 1] & 0x07,
|
||||
m_spriteram[offs],
|
||||
m_spriteram[offs + 1] & 0x07,
|
||||
flipx,flipy,
|
||||
sx,sy,0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
UINT32 senjyo_state::screen_update_senjyo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
UINT32 senjyo_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
||||
/* two colors for the radar dots (verified on the real board) */
|
||||
m_palette->set_pen_color(512,rgb_t(0xff,0x00,0x00)); /* red for enemies */
|
||||
m_palette->set_pen_color(513,rgb_t(0xff,0xff,0x00)); /* yellow for player */
|
||||
|
||||
{
|
||||
int flip = flip_screen();
|
||||
int scrollx,scrolly;
|
||||
|
||||
for (i = 0;i < 32;i++)
|
||||
for (int i = 0;i < 32;i++)
|
||||
m_fg_tilemap->set_scrolly(i, m_fgscroll[i]);
|
||||
|
||||
scrollx = m_scrollx1[0];
|
||||
scrolly = m_scrolly1[0] + 256 * m_scrolly1[1];
|
||||
int scrollx = m_scrollx1[0];
|
||||
int scrolly = m_scrolly1[0] + 256 * m_scrolly1[1];
|
||||
if (flip)
|
||||
scrollx = -scrollx;
|
||||
m_bg1_tilemap->set_scrollx(0, scrollx);
|
||||
|
Loading…
Reference in New Issue
Block a user