mirror of
https://github.com/holub/mame
synced 2025-04-24 01:11:11 +03:00
mosaic.c, tagteam.c, taotaido.c: added / enabled save state support (nw)
This commit is contained in:
parent
0853e5f3b6
commit
15026a0e7b
@ -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 )
|
||||
|
@ -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 )
|
||||
|
@ -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 )
|
||||
|
@ -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);
|
||||
};
|
||||
|
@ -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);
|
||||
};
|
||||
|
@ -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 );
|
||||
};
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user