mosaic.c, tagteam.c, taotaido.c: added / enabled save state support (nw)

This commit is contained in:
Ivan Vangelista 2015-02-25 18:56:44 +01:00
parent 0853e5f3b6
commit 15026a0e7b
9 changed files with 147 additions and 119 deletions

View File

@ -88,16 +88,16 @@ READ8_MEMBER(mosaic_state::gfire2_protection_r)
static ADDRESS_MAP_START( mosaic_map, AS_PROGRAM, 8, mosaic_state )
AM_RANGE(0x00000, 0x0ffff) AM_ROM
AM_RANGE(0x20000, 0x21fff) AM_RAM
AM_RANGE(0x22000, 0x22fff) AM_RAM_WRITE(mosaic_bgvideoram_w) AM_SHARE("bgvideoram")
AM_RANGE(0x23000, 0x23fff) AM_RAM_WRITE(mosaic_fgvideoram_w) AM_SHARE("fgvideoram")
AM_RANGE(0x22000, 0x22fff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram")
AM_RANGE(0x23000, 0x23fff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram")
AM_RANGE(0x24000, 0x241ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
ADDRESS_MAP_END
static ADDRESS_MAP_START( gfire2_map, AS_PROGRAM, 8, mosaic_state )
AM_RANGE(0x00000, 0x0ffff) AM_ROM
AM_RANGE(0x10000, 0x17fff) AM_RAM
AM_RANGE(0x22000, 0x22fff) AM_RAM_WRITE(mosaic_bgvideoram_w) AM_SHARE("bgvideoram")
AM_RANGE(0x23000, 0x23fff) AM_RAM_WRITE(mosaic_fgvideoram_w) AM_SHARE("fgvideoram")
AM_RANGE(0x22000, 0x22fff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram")
AM_RANGE(0x23000, 0x23fff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram")
AM_RANGE(0x24000, 0x241ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
ADDRESS_MAP_END
@ -255,7 +255,7 @@ static MACHINE_CONFIG_START( mosaic, mosaic_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, 48*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(mosaic_state, screen_update_mosaic)
MCFG_SCREEN_UPDATE_DRIVER(mosaic_state, screen_update)
MCFG_SCREEN_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", "palette", mosaic)
@ -338,6 +338,6 @@ ROM_END
GAME( 1990, mosaic, 0, mosaic, mosaic, driver_device, 0, ROT0, "Space", "Mosaic", 0 )
GAME( 1990, mosaica, mosaic, mosaic, mosaic, driver_device, 0, ROT0, "Space (Fuuki license)", "Mosaic (Fuuki)", 0 )
GAME( 1992, gfire2, 0, gfire2, gfire2, driver_device, 0, ROT0, "Topis Corp", "Golden Fire II", 0 )
GAME( 1990, mosaic, 0, mosaic, mosaic, driver_device, 0, ROT0, "Space", "Mosaic", GAME_SUPPORTS_SAVE )
GAME( 1990, mosaica, mosaic, mosaic, mosaic, driver_device, 0, ROT0, "Space (Fuuki license)", "Mosaic (Fuuki)", GAME_SUPPORTS_SAVE )
GAME( 1992, gfire2, 0, gfire2, gfire2, driver_device, 0, ROT0, "Topis Corp", "Golden Fire II", GAME_SUPPORTS_SAVE )

View File

@ -30,6 +30,12 @@ TODO:
#include "sound/dac.h"
#include "includes/tagteam.h"
void tagteam_state::machine_start()
{
save_item(NAME(m_sound_nmi_mask));
}
WRITE8_MEMBER(tagteam_state::sound_command_w)
{
soundlatch_byte_w(space, offset, data);
@ -43,15 +49,15 @@ WRITE8_MEMBER(tagteam_state::irq_clear_w)
static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, tagteam_state )
AM_RANGE(0x0000, 0x07ff) AM_RAM
AM_RANGE(0x2000, 0x2000) AM_READ_PORT("P2") AM_WRITE(tagteam_flipscreen_w)
AM_RANGE(0x2001, 0x2001) AM_READ_PORT("P1") AM_WRITE(tagteam_control_w)
AM_RANGE(0x2000, 0x2000) AM_READ_PORT("P2") AM_WRITE(flipscreen_w)
AM_RANGE(0x2001, 0x2001) AM_READ_PORT("P1") AM_WRITE(control_w)
AM_RANGE(0x2002, 0x2002) AM_READ_PORT("DSW1") AM_WRITE(sound_command_w)
AM_RANGE(0x2003, 0x2003) AM_READ_PORT("DSW2") AM_WRITE(irq_clear_w)
AM_RANGE(0x4000, 0x43ff) AM_READWRITE(tagteam_mirrorvideoram_r, tagteam_mirrorvideoram_w)
AM_RANGE(0x4400, 0x47ff) AM_READWRITE(tagteam_mirrorcolorram_r, tagteam_mirrorcolorram_w)
AM_RANGE(0x4000, 0x43ff) AM_READWRITE(mirrorvideoram_r, mirrorvideoram_w)
AM_RANGE(0x4400, 0x47ff) AM_READWRITE(mirrorcolorram_r, mirrorcolorram_w)
AM_RANGE(0x4800, 0x4fff) AM_READONLY
AM_RANGE(0x4800, 0x4bff) AM_WRITE(tagteam_videoram_w) AM_SHARE("videoram")
AM_RANGE(0x4c00, 0x4fff) AM_WRITE(tagteam_colorram_w) AM_SHARE("colorram")
AM_RANGE(0x4800, 0x4bff) AM_WRITE(videoram_w) AM_SHARE("videoram")
AM_RANGE(0x4c00, 0x4fff) AM_WRITE(colorram_w) AM_SHARE("colorram")
AM_RANGE(0x8000, 0xffff) AM_ROM
ADDRESS_MAP_END
@ -218,7 +224,7 @@ static MACHINE_CONFIG_START( tagteam, tagteam_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(3072))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
MCFG_SCREEN_UPDATE_DRIVER(tagteam_state, screen_update_tagteam)
MCFG_SCREEN_UPDATE_DRIVER(tagteam_state, screen_update)
MCFG_SCREEN_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", "palette", tagteam)
@ -304,5 +310,5 @@ ROM_END
GAME( 1983, bigprowr, 0, tagteam, bigprowr, driver_device, 0, ROT270, "Technos Japan", "The Big Pro Wrestling!", 0 )
GAME( 1983, tagteam, bigprowr, tagteam, tagteam, driver_device, 0, ROT270, "Technos Japan (Data East license)", "Tag Team Wrestling", 0 )
GAME( 1983, bigprowr, 0, tagteam, bigprowr, driver_device, 0, ROT270, "Technos Japan", "The Big Pro Wrestling!", GAME_SUPPORTS_SAVE )
GAME( 1983, tagteam, bigprowr, tagteam, tagteam, driver_device, 0, ROT270, "Technos Japan (Data East license)", "Tag Team Wrestling", GAME_SUPPORTS_SAVE )

View File

@ -73,6 +73,12 @@ zooming might be wrong
#define TAOTAIDO_SHOW_ALL_INPUTS 0
void taotaido_state::machine_start()
{
save_item(NAME(m_pending_command));
}
READ16_MEMBER(taotaido_state::pending_command_r)
{
/* Only bit 0 is tested */
@ -90,7 +96,7 @@ WRITE16_MEMBER(taotaido_state::sound_command_w)
}
static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, taotaido_state )
AM_RANGE(0x000000, 0x0fffff) AM_ROM
AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(taotaido_bgvideoram_w) AM_SHARE("bgram") // bg ram?
AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgram") // bg ram?
AM_RANGE(0xa00000, 0xa01fff) AM_RAM AM_SHARE("spriteram") // sprite ram
AM_RANGE(0xc00000, 0xc0ffff) AM_RAM AM_SHARE("spriteram2") // sprite tile lookup ram
AM_RANGE(0xfe0000, 0xfeffff) AM_RAM // main ram
@ -106,10 +112,10 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, taotaido_state )
AM_RANGE(0xffff8e, 0xffff8f) AM_READ_PORT("JP")
AM_RANGE(0xffffa0, 0xffffa1) AM_READ_PORT("P3") // used only by taotaida
AM_RANGE(0xffffa2, 0xffffa3) AM_READ_PORT("P4") // used only by taotaida
AM_RANGE(0xffff00, 0xffff0f) AM_WRITE(taotaido_tileregs_w)
AM_RANGE(0xffff00, 0xffff0f) AM_WRITE(tileregs_w)
AM_RANGE(0xffff10, 0xffff11) AM_WRITENOP // unknown
AM_RANGE(0xffff20, 0xffff21) AM_WRITENOP // unknown - flip screen related
AM_RANGE(0xffff40, 0xffff47) AM_WRITE(taotaido_sprite_character_bank_select_w)
AM_RANGE(0xffff40, 0xffff47) AM_WRITE(sprite_character_bank_select_w)
AM_RANGE(0xffffc0, 0xffffc1) AM_WRITE(sound_command_w) // seems right
AM_RANGE(0xffffe0, 0xffffe1) AM_READ(pending_command_r) // guess - seems to be needed for all the sounds to work
ADDRESS_MAP_END
@ -122,7 +128,7 @@ WRITE8_MEMBER(taotaido_state::pending_command_clear_w)
m_pending_command = 0;
}
WRITE8_MEMBER(taotaido_state::taotaido_sh_bankswitch_w)
WRITE8_MEMBER(taotaido_state::sh_bankswitch_w)
{
UINT8 *rom = memregion("audiocpu")->base() + 0x10000;
@ -138,7 +144,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_port_map, AS_IO, 8, taotaido_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
AM_RANGE(0x04, 0x04) AM_WRITE(taotaido_sh_bankswitch_w)
AM_RANGE(0x04, 0x04) AM_WRITE(sh_bankswitch_w)
AM_RANGE(0x08, 0x08) AM_WRITE(pending_command_clear_w)
AM_RANGE(0x0c, 0x0c) AM_READ(soundlatch_byte_r)
ADDRESS_MAP_END
@ -331,7 +337,7 @@ static INPUT_PORTS_START( taotaido6 )
INPUT_PORTS_END
static const gfx_layout taotaido_layout =
static const gfx_layout layout =
{
16,16,
RGN_FRAC(1,1),
@ -345,15 +351,10 @@ static const gfx_layout taotaido_layout =
};
static GFXDECODE_START( taotaido )
GFXDECODE_ENTRY( "gfx1", 0, taotaido_layout, 0x000, 256 ) /* sprites */
GFXDECODE_ENTRY( "gfx2", 0, taotaido_layout, 0x300, 256 ) /* bg tiles */
GFXDECODE_ENTRY( "gfx1", 0, layout, 0x000, 256 ) /* sprites */
GFXDECODE_ENTRY( "gfx2", 0, layout, 0x300, 256 ) /* bg tiles */
GFXDECODE_END
WRITE_LINE_MEMBER(taotaido_state::irqhandler)
{
m_audiocpu->set_input_line(0, state ? ASSERT_LINE : CLEAR_LINE);
}
static MACHINE_CONFIG_START( taotaido, taotaido_state )
@ -373,15 +374,15 @@ static MACHINE_CONFIG_START( taotaido, taotaido_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
MCFG_SCREEN_UPDATE_DRIVER(taotaido_state, screen_update_taotaido)
MCFG_SCREEN_VBLANK_DRIVER(taotaido_state, screen_eof_taotaido)
MCFG_SCREEN_UPDATE_DRIVER(taotaido_state, screen_update)
MCFG_SCREEN_VBLANK_DRIVER(taotaido_state, screen_eof)
MCFG_SCREEN_PALETTE("palette")
MCFG_PALETTE_ADD("palette", 0x800)
MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_DEVICE_ADD("vsystem_spr", VSYSTEM_SPR, 0)
MCFG_VSYSTEM_SPR_SET_TILE_INDIRECT( taotaido_state, taotaido_tile_callback )
MCFG_VSYSTEM_SPR_SET_TILE_INDIRECT( taotaido_state, tile_callback )
MCFG_VSYSTEM_SPR_SET_GFXREGION(0)
MCFG_VSYSTEM_SPR_GFXDECODE("gfxdecode")
MCFG_VSYSTEM_SPR_PALETTE("palette")
@ -390,7 +391,7 @@ static MACHINE_CONFIG_START( taotaido, taotaido_state )
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_SOUND_ADD("ymsnd", YM2610, 8000000)
MCFG_YM2610_IRQ_HANDLER(WRITELINE(taotaido_state, irqhandler))
MCFG_YM2610_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.25)
MCFG_SOUND_ROUTE(0, "rspeaker", 0.25)
MCFG_SOUND_ROUTE(1, "lspeaker", 1.0)
@ -470,6 +471,6 @@ ROM_START( taotaido3 )
ROM_LOAD( "u15.bin", 0x000000, 0x200000, CRC(e95823e9) SHA1(362583944ad4fdde4f9e29928cf34376c7ad931f) )
ROM_END
GAME( 1993, taotaido, 0, taotaido, taotaido, driver_device, 0, ROT0, "Video System Co.", "Tao Taido (2 button version)", GAME_NO_COCKTAIL )
GAME( 1993, taotaidoa,taotaido, taotaido, taotaido6,driver_device, 0, ROT0, "Video System Co.", "Tao Taido (6 button version)", GAME_NO_COCKTAIL ) // maybe a prototype? has various debug features
GAME( 1993, taotaido3,taotaido, taotaido, taotaido3,driver_device, 0, ROT0, "Video System Co.", "Tao Taido (2/3 button version)", GAME_NO_COCKTAIL )
GAME( 1993, taotaido, 0, taotaido, taotaido, driver_device, 0, ROT0, "Video System Co.", "Tao Taido (2 button version)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
GAME( 1993, taotaidoa,taotaido, taotaido, taotaido6,driver_device, 0, ROT0, "Video System Co.", "Tao Taido (6 button version)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) // maybe a prototype? has various debug features
GAME( 1993, taotaido3,taotaido, taotaido, taotaido3,driver_device, 0, ROT0, "Video System Co.", "Tao Taido (2/3 button version)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )

View File

@ -9,15 +9,18 @@ class mosaic_state : public driver_device
public:
mosaic_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_fgvideoram(*this, "fgvideoram"),
m_bgvideoram(*this, "bgvideoram"),
m_maincpu(*this, "maincpu"),
m_gfxdecode(*this, "gfxdecode") { }
m_gfxdecode(*this, "gfxdecode"),
m_fgvideoram(*this, "fgvideoram"),
m_bgvideoram(*this, "bgvideoram") { }
/* devices */
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
/* memory pointers */
required_shared_ptr<UINT8> m_fgvideoram;
required_shared_ptr<UINT8> m_bgvideoram;
// UINT8 * m_paletteram; // currently this uses generic palette handling
/* video-related */
tilemap_t *m_bg_tilemap;
@ -25,18 +28,20 @@ public:
/* misc */
int m_prot_val;
DECLARE_WRITE8_MEMBER(protection_w);
DECLARE_READ8_MEMBER(protection_r);
DECLARE_WRITE8_MEMBER(gfire2_protection_w);
DECLARE_READ8_MEMBER(gfire2_protection_r);
DECLARE_WRITE8_MEMBER(mosaic_fgvideoram_w);
DECLARE_WRITE8_MEMBER(mosaic_bgvideoram_w);
DECLARE_WRITE8_MEMBER(fgvideoram_w);
DECLARE_WRITE8_MEMBER(bgvideoram_w);
TILE_GET_INFO_MEMBER(get_fg_tile_info);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
UINT32 screen_update_mosaic(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};

View File

@ -3,39 +3,46 @@ class tagteam_state : public driver_device
public:
tagteam_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_videoram(*this, "videoram"),
m_colorram(*this, "colorram"),
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette") { }
m_palette(*this, "palette"),
m_videoram(*this, "videoram"),
m_colorram(*this, "colorram") { }
required_shared_ptr<UINT8> m_videoram;
required_shared_ptr<UINT8> m_colorram;
int m_palettebank;
tilemap_t *m_bg_tilemap;
UINT8 m_sound_nmi_mask;
DECLARE_WRITE8_MEMBER(sound_command_w);
DECLARE_WRITE8_MEMBER(irq_clear_w);
DECLARE_WRITE8_MEMBER(sound_nmi_mask_w);
DECLARE_WRITE8_MEMBER(tagteam_videoram_w);
DECLARE_WRITE8_MEMBER(tagteam_colorram_w);
DECLARE_READ8_MEMBER(tagteam_mirrorvideoram_r);
DECLARE_READ8_MEMBER(tagteam_mirrorcolorram_r);
DECLARE_WRITE8_MEMBER(tagteam_mirrorvideoram_w);
DECLARE_WRITE8_MEMBER(tagteam_mirrorcolorram_w);
DECLARE_WRITE8_MEMBER(tagteam_control_w);
DECLARE_WRITE8_MEMBER(tagteam_flipscreen_w);
DECLARE_INPUT_CHANGED_MEMBER(coin_inserted);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void video_start();
DECLARE_PALETTE_INIT(tagteam);
UINT32 screen_update_tagteam(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(sound_timer_irq);
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
required_shared_ptr<UINT8> m_videoram;
required_shared_ptr<UINT8> m_colorram;
int m_palettebank;
tilemap_t *m_bg_tilemap;
UINT8 m_sound_nmi_mask;
DECLARE_WRITE8_MEMBER(sound_command_w);
DECLARE_WRITE8_MEMBER(irq_clear_w);
DECLARE_WRITE8_MEMBER(sound_nmi_mask_w);
DECLARE_WRITE8_MEMBER(videoram_w);
DECLARE_WRITE8_MEMBER(colorram_w);
DECLARE_READ8_MEMBER(mirrorvideoram_r);
DECLARE_READ8_MEMBER(mirrorcolorram_r);
DECLARE_WRITE8_MEMBER(mirrorvideoram_w);
DECLARE_WRITE8_MEMBER(mirrorcolorram_w);
DECLARE_WRITE8_MEMBER(control_w);
DECLARE_WRITE8_MEMBER(flipscreen_w);
DECLARE_INPUT_CHANGED_MEMBER(coin_inserted);
INTERRUPT_GEN_MEMBER(sound_timer_irq);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void machine_start();
virtual void video_start();
DECLARE_PALETTE_INIT(tagteam);
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
};

View File

@ -3,23 +3,26 @@ class taotaido_state : public driver_device
public:
taotaido_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"),
m_gfxdecode(*this, "gfxdecode"),
m_spr(*this, "vsystem_spr"),
m_spriteram(*this, "spriteram"),
m_spriteram2(*this, "spriteram2"),
m_scrollram(*this, "scrollram"),
m_bgram(*this, "bgram"),
m_spr(*this, "vsystem_spr"),
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"),
m_gfxdecode(*this, "gfxdecode") { }
m_bgram(*this, "bgram") { }
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
required_device<gfxdecode_device> m_gfxdecode;
required_device<vsystem_spr_device> m_spr;
int m_pending_command;
required_shared_ptr<UINT16> m_spriteram;
required_shared_ptr<UINT16> m_spriteram2;
required_shared_ptr<UINT16> m_scrollram;
required_shared_ptr<UINT16> m_bgram;
required_device<vsystem_spr_device> m_spr;
UINT32 taotaido_tile_callback( UINT32 code );
int m_pending_command;
UINT16 m_sprite_character_bank_select[8];
UINT16 m_video_bank_select[8];
tilemap_t *m_bg_tilemap;
@ -27,20 +30,22 @@ public:
UINT16 *m_spriteram_older;
UINT16 *m_spriteram2_old;
UINT16 *m_spriteram2_older;
DECLARE_READ16_MEMBER(pending_command_r);
DECLARE_WRITE16_MEMBER(sound_command_w);
DECLARE_WRITE8_MEMBER(pending_command_clear_w);
DECLARE_WRITE8_MEMBER(taotaido_sh_bankswitch_w);
DECLARE_WRITE16_MEMBER(taotaido_sprite_character_bank_select_w);
DECLARE_WRITE16_MEMBER(taotaido_tileregs_w);
DECLARE_WRITE16_MEMBER(taotaido_bgvideoram_w);
TILE_GET_INFO_MEMBER(taotaido_bg_tile_info);
TILEMAP_MAPPER_MEMBER(taotaido_tilemap_scan_rows);
DECLARE_WRITE8_MEMBER(sh_bankswitch_w);
DECLARE_WRITE16_MEMBER(sprite_character_bank_select_w);
DECLARE_WRITE16_MEMBER(tileregs_w);
DECLARE_WRITE16_MEMBER(bgvideoram_w);
TILE_GET_INFO_MEMBER(bg_tile_info);
TILEMAP_MAPPER_MEMBER(tilemap_scan_rows);
virtual void machine_start();
virtual void video_start();
UINT32 screen_update_taotaido(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void screen_eof_taotaido(screen_device &screen, bool state);
DECLARE_WRITE_LINE_MEMBER(irqhandler);
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
required_device<gfxdecode_device> m_gfxdecode;
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void screen_eof(screen_device &screen, bool state);
UINT32 tile_callback( UINT32 code );
};

View File

@ -1,6 +1,6 @@
/***************************************************************************
video.c
mosaic.c
Functions to emulate the video hardware of the machine.
@ -56,13 +56,13 @@ void mosaic_state::video_start()
***************************************************************************/
WRITE8_MEMBER(mosaic_state::mosaic_fgvideoram_w)
WRITE8_MEMBER(mosaic_state::fgvideoram_w)
{
m_fgvideoram[offset] = data;
m_fg_tilemap->mark_tile_dirty(offset / 2);
}
WRITE8_MEMBER(mosaic_state::mosaic_bgvideoram_w)
WRITE8_MEMBER(mosaic_state::bgvideoram_w)
{
m_bgvideoram[offset] = data;
m_bg_tilemap->mark_tile_dirty(offset / 2);
@ -70,7 +70,7 @@ WRITE8_MEMBER(mosaic_state::mosaic_bgvideoram_w)
UINT32 mosaic_state::screen_update_mosaic(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
UINT32 mosaic_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0);

View File

@ -1,6 +1,6 @@
/***************************************************************************
video.c
tagteam.c
Functions to emulate the video hardware of the machine.
@ -42,19 +42,19 @@ PALETTE_INIT_MEMBER(tagteam_state, tagteam)
}
WRITE8_MEMBER(tagteam_state::tagteam_videoram_w)
WRITE8_MEMBER(tagteam_state::videoram_w)
{
m_videoram[offset] = data;
m_bg_tilemap->mark_tile_dirty(offset);
}
WRITE8_MEMBER(tagteam_state::tagteam_colorram_w)
WRITE8_MEMBER(tagteam_state::colorram_w)
{
m_colorram[offset] = data;
m_bg_tilemap->mark_tile_dirty(offset);
}
READ8_MEMBER(tagteam_state::tagteam_mirrorvideoram_r)
READ8_MEMBER(tagteam_state::mirrorvideoram_r)
{
int x,y;
@ -66,7 +66,7 @@ READ8_MEMBER(tagteam_state::tagteam_mirrorvideoram_r)
return m_videoram[offset];
}
READ8_MEMBER(tagteam_state::tagteam_mirrorcolorram_r)
READ8_MEMBER(tagteam_state::mirrorcolorram_r)
{
int x,y;
@ -78,7 +78,7 @@ READ8_MEMBER(tagteam_state::tagteam_mirrorcolorram_r)
return m_colorram[offset];
}
WRITE8_MEMBER(tagteam_state::tagteam_mirrorvideoram_w)
WRITE8_MEMBER(tagteam_state::mirrorvideoram_w)
{
int x,y;
@ -87,10 +87,10 @@ WRITE8_MEMBER(tagteam_state::tagteam_mirrorvideoram_w)
y = offset % 32;
offset = 32 * y + x;
tagteam_videoram_w(space,offset,data);
videoram_w(space,offset,data);
}
WRITE8_MEMBER(tagteam_state::tagteam_mirrorcolorram_w)
WRITE8_MEMBER(tagteam_state::mirrorcolorram_w)
{
int x,y;
@ -99,10 +99,10 @@ WRITE8_MEMBER(tagteam_state::tagteam_mirrorcolorram_w)
y = offset % 32;
offset = 32 * y + x;
tagteam_colorram_w(space,offset,data);
colorram_w(space,offset,data);
}
WRITE8_MEMBER(tagteam_state::tagteam_control_w)
WRITE8_MEMBER(tagteam_state::control_w)
{
// d0-3: color for blank screen, applies to h/v borders too
// (not implemented yet, and tagteam doesn't have a global screen on/off bit)
@ -111,7 +111,7 @@ WRITE8_MEMBER(tagteam_state::tagteam_control_w)
m_palettebank = (data & 0x80) >> 7;
}
WRITE8_MEMBER(tagteam_state::tagteam_flipscreen_w)
WRITE8_MEMBER(tagteam_state::flipscreen_w)
{
// d0: flip screen
if (flip_screen() != (data &0x01))
@ -137,6 +137,8 @@ void tagteam_state::video_start()
{
m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(tagteam_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS_FLIP_X,
8, 8, 32, 32);
save_item(NAME(m_palettebank));
}
void tagteam_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
@ -183,7 +185,7 @@ void tagteam_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect
}
}
UINT32 tagteam_state::screen_update_tagteam(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
UINT32 tagteam_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
draw_sprites(bitmap, cliprect);

View File

@ -13,7 +13,7 @@ zooming might be wrong (only used on title logo?)
#include "includes/taotaido.h"
/* sprite tile codes 0x4000 - 0x7fff get remapped according to the content of these registers */
WRITE16_MEMBER(taotaido_state::taotaido_sprite_character_bank_select_w)
WRITE16_MEMBER(taotaido_state::sprite_character_bank_select_w)
{
if(ACCESSING_BITS_8_15)
m_sprite_character_bank_select[offset*2] = data >> 8;
@ -27,7 +27,7 @@ WRITE16_MEMBER(taotaido_state::taotaido_sprite_character_bank_select_w)
/* the tilemap */
WRITE16_MEMBER(taotaido_state::taotaido_tileregs_w)
WRITE16_MEMBER(taotaido_state::tileregs_w)
{
switch (offset)
{
@ -52,13 +52,13 @@ WRITE16_MEMBER(taotaido_state::taotaido_tileregs_w)
}
}
WRITE16_MEMBER(taotaido_state::taotaido_bgvideoram_w)
WRITE16_MEMBER(taotaido_state::bgvideoram_w)
{
COMBINE_DATA(&m_bgram[offset]);
m_bg_tilemap->mark_tile_dirty(offset);
}
TILE_GET_INFO_MEMBER(taotaido_state::taotaido_bg_tile_info)
TILE_GET_INFO_MEMBER(taotaido_state::bg_tile_info)
{
int code = m_bgram[tile_index]&0x01ff;
int bank = (m_bgram[tile_index]&0x0e00)>>9;
@ -72,14 +72,14 @@ TILE_GET_INFO_MEMBER(taotaido_state::taotaido_bg_tile_info)
0);
}
TILEMAP_MAPPER_MEMBER(taotaido_state::taotaido_tilemap_scan_rows)
TILEMAP_MAPPER_MEMBER(taotaido_state::tilemap_scan_rows)
{
/* logical (col,row) -> memory offset */
return row*0x40 + (col&0x3f) + ((col&0x40)<<6);
}
UINT32 taotaido_state::taotaido_tile_callback( UINT32 code )
UINT32 taotaido_state::tile_callback( UINT32 code )
{
code = m_spriteram2_older[code&0x7fff];
@ -96,7 +96,7 @@ UINT32 taotaido_state::taotaido_tile_callback( UINT32 code )
void taotaido_state::video_start()
{
m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(taotaido_state::taotaido_bg_tile_info),this),tilemap_mapper_delegate(FUNC(taotaido_state::taotaido_tilemap_scan_rows),this),16,16,128,64);
m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(taotaido_state::bg_tile_info),this),tilemap_mapper_delegate(FUNC(taotaido_state::tilemap_scan_rows),this),16,16,128,64);
m_spriteram_old = auto_alloc_array(machine(), UINT16, 0x2000/2);
m_spriteram_older = auto_alloc_array(machine(), UINT16, 0x2000/2);
@ -104,10 +104,12 @@ void taotaido_state::video_start()
m_spriteram2_old = auto_alloc_array(machine(), UINT16, 0x10000/2);
m_spriteram2_older = auto_alloc_array(machine(), UINT16, 0x10000/2);
save_item(NAME(m_sprite_character_bank_select));
save_item(NAME(m_video_bank_select));
}
UINT32 taotaido_state::screen_update_taotaido(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
UINT32 taotaido_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
// m_bg_tilemap->set_scrollx(0,(m_scrollram[0x380/2]>>4)); // the values put here end up being wrong every other frame
// m_bg_tilemap->set_scrolly(0,(m_scrollram[0x382/2]>>4)); // the values put here end up being wrong every other frame
@ -133,7 +135,7 @@ UINT32 taotaido_state::screen_update_taotaido(screen_device &screen, bitmap_ind1
return 0;
}
void taotaido_state::screen_eof_taotaido(screen_device &screen, bool state)
void taotaido_state::screen_eof(screen_device &screen, bool state)
{
// rising edge
if (state)