mirror of
https://github.com/holub/mame
synced 2025-05-28 16:43:04 +03:00
tecmo.c, tecmo16.c, vball.c: added save state support (nw)
This commit is contained in:
parent
1ecab6f443
commit
1cdee288e5
@ -51,11 +51,10 @@ f80b ????
|
||||
#include "emu.h"
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "sound/3812intf.h"
|
||||
#include "sound/msm5205.h"
|
||||
#include "includes/tecmo.h"
|
||||
|
||||
|
||||
WRITE8_MEMBER(tecmo_state::tecmo_bankswitch_w)
|
||||
WRITE8_MEMBER(tecmo_state::bankswitch_w)
|
||||
{
|
||||
int bankaddress;
|
||||
UINT8 *RAM = memregion("maincpu")->base();
|
||||
@ -65,34 +64,34 @@ WRITE8_MEMBER(tecmo_state::tecmo_bankswitch_w)
|
||||
membank("bank1")->set_base(&RAM[bankaddress]);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(tecmo_state::tecmo_sound_command_w)
|
||||
WRITE8_MEMBER(tecmo_state::sound_command_w)
|
||||
{
|
||||
soundlatch_byte_w(space, offset, data);
|
||||
m_soundcpu->set_input_line(INPUT_LINE_NMI,ASSERT_LINE);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(tecmo_state::tecmo_nmi_ack_w)
|
||||
WRITE8_MEMBER(tecmo_state::nmi_ack_w)
|
||||
{
|
||||
m_soundcpu->set_input_line(INPUT_LINE_NMI,CLEAR_LINE);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(tecmo_state::tecmo_adpcm_start_w)
|
||||
WRITE8_MEMBER(tecmo_state::adpcm_start_w)
|
||||
{
|
||||
m_adpcm_pos = data << 8;
|
||||
m_msm->reset_w(0);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(tecmo_state::tecmo_adpcm_end_w)
|
||||
WRITE8_MEMBER(tecmo_state::adpcm_end_w)
|
||||
{
|
||||
m_adpcm_end = (data + 1) << 8;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(tecmo_state::tecmo_adpcm_vol_w)
|
||||
WRITE8_MEMBER(tecmo_state::adpcm_vol_w)
|
||||
{
|
||||
m_msm->set_volume((data & 0x0f) * 100 / 15);
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER(tecmo_state::tecmo_adpcm_int)
|
||||
WRITE_LINE_MEMBER(tecmo_state::adpcm_int)
|
||||
{
|
||||
if (m_adpcm_pos >= m_adpcm_end ||
|
||||
m_adpcm_pos >= memregion("adpcm")->bytes())
|
||||
@ -112,28 +111,28 @@ WRITE_LINE_MEMBER(tecmo_state::tecmo_adpcm_int)
|
||||
}
|
||||
|
||||
/* the 8-bit dipswitches are split across addresses */
|
||||
READ8_MEMBER(tecmo_state::tecmo_dswa_l_r)
|
||||
READ8_MEMBER(tecmo_state::dswa_l_r)
|
||||
{
|
||||
UINT8 port = ioport("DSWA")->read();
|
||||
port &= 0x0f;
|
||||
return port;
|
||||
}
|
||||
|
||||
READ8_MEMBER(tecmo_state::tecmo_dswa_h_r)
|
||||
READ8_MEMBER(tecmo_state::dswa_h_r)
|
||||
{
|
||||
UINT8 port = ioport("DSWA")->read();
|
||||
port &= 0xf0;
|
||||
return port>>4;
|
||||
}
|
||||
|
||||
READ8_MEMBER(tecmo_state::tecmo_dswb_l_r)
|
||||
READ8_MEMBER(tecmo_state::dswb_l_r)
|
||||
{
|
||||
UINT8 port = ioport("DSWB")->read();
|
||||
port &= 0x0f;
|
||||
return port;
|
||||
}
|
||||
|
||||
READ8_MEMBER(tecmo_state::tecmo_dswb_h_r)
|
||||
READ8_MEMBER(tecmo_state::dswb_h_r)
|
||||
{
|
||||
UINT8 port = ioport("DSWB")->read();
|
||||
port &= 0xf0;
|
||||
@ -144,9 +143,9 @@ READ8_MEMBER(tecmo_state::tecmo_dswb_h_r)
|
||||
static ADDRESS_MAP_START( rygar_map, AS_PROGRAM, 8, tecmo_state )
|
||||
AM_RANGE(0x0000, 0xbfff) AM_ROM
|
||||
AM_RANGE(0xc000, 0xcfff) AM_RAM
|
||||
AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(tecmo_txvideoram_w) AM_SHARE("txvideoram")
|
||||
AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(tecmo_fgvideoram_w) AM_SHARE("fgvideoram")
|
||||
AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(tecmo_bgvideoram_w) AM_SHARE("bgvideoram")
|
||||
AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(txvideoram_w) AM_SHARE("txvideoram")
|
||||
AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram")
|
||||
AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram")
|
||||
AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("spriteram")
|
||||
AM_RANGE(0xe800, 0xefff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
|
||||
AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK("bank1")
|
||||
@ -156,25 +155,25 @@ static ADDRESS_MAP_START( rygar_map, AS_PROGRAM, 8, tecmo_state )
|
||||
AM_RANGE(0xf803, 0xf803) AM_READ_PORT("BUTTONS2")
|
||||
AM_RANGE(0xf804, 0xf804) AM_READ_PORT("SYS_0")
|
||||
AM_RANGE(0xf805, 0xf805) AM_READ_PORT("SYS_1")
|
||||
AM_RANGE(0xf806, 0xf806) AM_READ(tecmo_dswa_l_r)
|
||||
AM_RANGE(0xf807, 0xf807) AM_READ(tecmo_dswa_h_r)
|
||||
AM_RANGE(0xf808, 0xf808) AM_READ(tecmo_dswb_l_r)
|
||||
AM_RANGE(0xf809, 0xf809) AM_READ(tecmo_dswb_h_r)
|
||||
AM_RANGE(0xf806, 0xf806) AM_READ(dswa_l_r)
|
||||
AM_RANGE(0xf807, 0xf807) AM_READ(dswa_h_r)
|
||||
AM_RANGE(0xf808, 0xf808) AM_READ(dswb_l_r)
|
||||
AM_RANGE(0xf809, 0xf809) AM_READ(dswb_h_r)
|
||||
AM_RANGE(0xf80f, 0xf80f) AM_READ_PORT("SYS_2")
|
||||
AM_RANGE(0xf800, 0xf802) AM_WRITE(tecmo_fgscroll_w)
|
||||
AM_RANGE(0xf803, 0xf805) AM_WRITE(tecmo_bgscroll_w)
|
||||
AM_RANGE(0xf806, 0xf806) AM_WRITE(tecmo_sound_command_w)
|
||||
AM_RANGE(0xf807, 0xf807) AM_WRITE(tecmo_flipscreen_w)
|
||||
AM_RANGE(0xf808, 0xf808) AM_WRITE(tecmo_bankswitch_w)
|
||||
AM_RANGE(0xf800, 0xf802) AM_WRITE(fgscroll_w)
|
||||
AM_RANGE(0xf803, 0xf805) AM_WRITE(bgscroll_w)
|
||||
AM_RANGE(0xf806, 0xf806) AM_WRITE(sound_command_w)
|
||||
AM_RANGE(0xf807, 0xf807) AM_WRITE(flipscreen_w)
|
||||
AM_RANGE(0xf808, 0xf808) AM_WRITE(bankswitch_w)
|
||||
AM_RANGE(0xf80b, 0xf80b) AM_WRITE(watchdog_reset_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( gemini_map, AS_PROGRAM, 8, tecmo_state )
|
||||
AM_RANGE(0x0000, 0xbfff) AM_ROM
|
||||
AM_RANGE(0xc000, 0xcfff) AM_RAM
|
||||
AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(tecmo_txvideoram_w) AM_SHARE("txvideoram")
|
||||
AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(tecmo_fgvideoram_w) AM_SHARE("fgvideoram")
|
||||
AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(tecmo_bgvideoram_w) AM_SHARE("bgvideoram")
|
||||
AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(txvideoram_w) AM_SHARE("txvideoram")
|
||||
AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram")
|
||||
AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram")
|
||||
AM_RANGE(0xe000, 0xe7ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
|
||||
AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("spriteram")
|
||||
AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK("bank1")
|
||||
@ -184,24 +183,24 @@ static ADDRESS_MAP_START( gemini_map, AS_PROGRAM, 8, tecmo_state )
|
||||
AM_RANGE(0xf803, 0xf803) AM_READ_PORT("BUTTONS2")
|
||||
AM_RANGE(0xf804, 0xf804) AM_READ_PORT("SYS_0")
|
||||
AM_RANGE(0xf805, 0xf805) AM_READ_PORT("SYS_1")
|
||||
AM_RANGE(0xf806, 0xf806) AM_READ(tecmo_dswa_l_r)
|
||||
AM_RANGE(0xf807, 0xf807) AM_READ(tecmo_dswa_h_r)
|
||||
AM_RANGE(0xf808, 0xf808) AM_READ(tecmo_dswb_l_r)
|
||||
AM_RANGE(0xf809, 0xf809) AM_READ(tecmo_dswb_h_r)
|
||||
AM_RANGE(0xf806, 0xf806) AM_READ(dswa_l_r)
|
||||
AM_RANGE(0xf807, 0xf807) AM_READ(dswa_h_r)
|
||||
AM_RANGE(0xf808, 0xf808) AM_READ(dswb_l_r)
|
||||
AM_RANGE(0xf809, 0xf809) AM_READ(dswb_h_r)
|
||||
AM_RANGE(0xf80f, 0xf80f) AM_READ_PORT("SYS_2")
|
||||
AM_RANGE(0xf800, 0xf802) AM_WRITE(tecmo_fgscroll_w)
|
||||
AM_RANGE(0xf803, 0xf805) AM_WRITE(tecmo_bgscroll_w)
|
||||
AM_RANGE(0xf806, 0xf806) AM_WRITE(tecmo_sound_command_w)
|
||||
AM_RANGE(0xf807, 0xf807) AM_WRITE(tecmo_flipscreen_w)
|
||||
AM_RANGE(0xf808, 0xf808) AM_WRITE(tecmo_bankswitch_w)
|
||||
AM_RANGE(0xf800, 0xf802) AM_WRITE(fgscroll_w)
|
||||
AM_RANGE(0xf803, 0xf805) AM_WRITE(bgscroll_w)
|
||||
AM_RANGE(0xf806, 0xf806) AM_WRITE(sound_command_w)
|
||||
AM_RANGE(0xf807, 0xf807) AM_WRITE(flipscreen_w)
|
||||
AM_RANGE(0xf808, 0xf808) AM_WRITE(bankswitch_w)
|
||||
AM_RANGE(0xf80b, 0xf80b) AM_WRITE(watchdog_reset_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( silkworm_map, AS_PROGRAM, 8, tecmo_state )
|
||||
AM_RANGE(0x0000, 0xbfff) AM_ROM
|
||||
AM_RANGE(0xc000, 0xc3ff) AM_RAM_WRITE(tecmo_bgvideoram_w) AM_SHARE("bgvideoram")
|
||||
AM_RANGE(0xc400, 0xc7ff) AM_RAM_WRITE(tecmo_fgvideoram_w) AM_SHARE("fgvideoram")
|
||||
AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(tecmo_txvideoram_w) AM_SHARE("txvideoram")
|
||||
AM_RANGE(0xc000, 0xc3ff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram")
|
||||
AM_RANGE(0xc400, 0xc7ff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram")
|
||||
AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(txvideoram_w) AM_SHARE("txvideoram")
|
||||
AM_RANGE(0xd000, 0xdfff) AM_RAM
|
||||
AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("spriteram")
|
||||
AM_RANGE(0xe800, 0xefff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
|
||||
@ -212,16 +211,16 @@ static ADDRESS_MAP_START( silkworm_map, AS_PROGRAM, 8, tecmo_state )
|
||||
AM_RANGE(0xf803, 0xf803) AM_READ_PORT("BUTTONS2")
|
||||
AM_RANGE(0xf804, 0xf804) AM_READ_PORT("SYS_0")
|
||||
AM_RANGE(0xf805, 0xf805) AM_READ_PORT("SYS_1")
|
||||
AM_RANGE(0xf806, 0xf806) AM_READ(tecmo_dswa_l_r)
|
||||
AM_RANGE(0xf807, 0xf807) AM_READ(tecmo_dswa_h_r)
|
||||
AM_RANGE(0xf808, 0xf808) AM_READ(tecmo_dswb_l_r)
|
||||
AM_RANGE(0xf809, 0xf809) AM_READ(tecmo_dswb_h_r)
|
||||
AM_RANGE(0xf806, 0xf806) AM_READ(dswa_l_r)
|
||||
AM_RANGE(0xf807, 0xf807) AM_READ(dswa_h_r)
|
||||
AM_RANGE(0xf808, 0xf808) AM_READ(dswb_l_r)
|
||||
AM_RANGE(0xf809, 0xf809) AM_READ(dswb_h_r)
|
||||
AM_RANGE(0xf80f, 0xf80f) AM_READ_PORT("SYS_2")
|
||||
AM_RANGE(0xf800, 0xf802) AM_WRITE(tecmo_fgscroll_w)
|
||||
AM_RANGE(0xf803, 0xf805) AM_WRITE(tecmo_bgscroll_w)
|
||||
AM_RANGE(0xf806, 0xf806) AM_WRITE(tecmo_sound_command_w)
|
||||
AM_RANGE(0xf807, 0xf807) AM_WRITE(tecmo_flipscreen_w)
|
||||
AM_RANGE(0xf808, 0xf808) AM_WRITE(tecmo_bankswitch_w)
|
||||
AM_RANGE(0xf800, 0xf802) AM_WRITE(fgscroll_w)
|
||||
AM_RANGE(0xf803, 0xf805) AM_WRITE(bgscroll_w)
|
||||
AM_RANGE(0xf806, 0xf806) AM_WRITE(sound_command_w)
|
||||
AM_RANGE(0xf807, 0xf807) AM_WRITE(flipscreen_w)
|
||||
AM_RANGE(0xf808, 0xf808) AM_WRITE(bankswitch_w)
|
||||
AM_RANGE(0xf809, 0xf809) AM_WRITENOP /* ? */
|
||||
AM_RANGE(0xf80b, 0xf80b) AM_WRITENOP /* ? if mapped to watchdog like in the others, causes reset */
|
||||
ADDRESS_MAP_END
|
||||
@ -230,10 +229,10 @@ static ADDRESS_MAP_START( rygar_sound_map, AS_PROGRAM, 8, tecmo_state )
|
||||
AM_RANGE(0x0000, 0x3fff) AM_ROM
|
||||
AM_RANGE(0x4000, 0x47ff) AM_RAM
|
||||
AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("ymsnd", ym3812_device, write)
|
||||
AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_byte_r) AM_WRITE(tecmo_adpcm_start_w)
|
||||
AM_RANGE(0xd000, 0xd000) AM_WRITE(tecmo_adpcm_end_w)
|
||||
AM_RANGE(0xe000, 0xe000) AM_WRITE(tecmo_adpcm_vol_w)
|
||||
AM_RANGE(0xf000, 0xf000) AM_WRITE(tecmo_nmi_ack_w)
|
||||
AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_byte_r) AM_WRITE(adpcm_start_w)
|
||||
AM_RANGE(0xd000, 0xd000) AM_WRITE(adpcm_end_w)
|
||||
AM_RANGE(0xe000, 0xe000) AM_WRITE(adpcm_vol_w)
|
||||
AM_RANGE(0xf000, 0xf000) AM_WRITE(nmi_ack_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( tecmo_sound_map, AS_PROGRAM, 8, tecmo_state )
|
||||
@ -242,10 +241,10 @@ static ADDRESS_MAP_START( tecmo_sound_map, AS_PROGRAM, 8, tecmo_state )
|
||||
AM_RANGE(0x0000, 0x7fff) AM_ROM
|
||||
AM_RANGE(0x8000, 0x87ff) AM_RAM
|
||||
AM_RANGE(0xa000, 0xa001) AM_DEVWRITE("ymsnd", ym3812_device, write)
|
||||
AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_byte_r) AM_WRITE(tecmo_adpcm_start_w)
|
||||
AM_RANGE(0xc400, 0xc400) AM_WRITE(tecmo_adpcm_end_w)
|
||||
AM_RANGE(0xc800, 0xc800) AM_WRITE(tecmo_adpcm_vol_w)
|
||||
AM_RANGE(0xcc00, 0xcc00) AM_WRITE(tecmo_nmi_ack_w)
|
||||
AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_byte_r) AM_WRITE(adpcm_start_w)
|
||||
AM_RANGE(0xc400, 0xc400) AM_WRITE(adpcm_end_w)
|
||||
AM_RANGE(0xc800, 0xc800) AM_WRITE(adpcm_vol_w)
|
||||
AM_RANGE(0xcc00, 0xcc00) AM_WRITE(nmi_ack_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
@ -600,7 +599,14 @@ static GFXDECODE_START( tecmo )
|
||||
GFXDECODE_END
|
||||
|
||||
|
||||
MACHINE_RESET_MEMBER(tecmo_state,rygar)
|
||||
void tecmo_state::machine_start()
|
||||
{
|
||||
save_item(NAME(m_adpcm_pos));
|
||||
save_item(NAME(m_adpcm_end));
|
||||
save_item(NAME(m_adpcm_data));
|
||||
}
|
||||
|
||||
void tecmo_state::machine_reset()
|
||||
{
|
||||
m_adpcm_pos = 0;
|
||||
m_adpcm_end = 0;
|
||||
@ -623,7 +629,7 @@ static MACHINE_CONFIG_START( rygar, tecmo_state )
|
||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0) /* frames per second, vblank duration */)
|
||||
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(tecmo_state, screen_update_tecmo)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(tecmo_state, screen_update)
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
|
||||
MCFG_GFXDECODE_ADD("gfxdecode", "palette", tecmo)
|
||||
@ -633,10 +639,6 @@ static MACHINE_CONFIG_START( rygar, tecmo_state )
|
||||
|
||||
MCFG_DEVICE_ADD("spritegen", TECMO_SPRITE, 0)
|
||||
|
||||
MCFG_VIDEO_START_OVERRIDE(tecmo_state,tecmo)
|
||||
|
||||
MCFG_MACHINE_RESET_OVERRIDE(tecmo_state, rygar )
|
||||
|
||||
/* sound hardware */
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
|
||||
@ -645,7 +647,7 @@ static MACHINE_CONFIG_START( rygar, tecmo_state )
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
||||
|
||||
MCFG_SOUND_ADD("msm", MSM5205, XTAL_400kHz) /* verified on pcb, even if schematics shows a 384khz resonator */
|
||||
MCFG_MSM5205_VCLK_CB(WRITELINE(tecmo_state, tecmo_adpcm_int)) /* interrupt function */
|
||||
MCFG_MSM5205_VCLK_CB(WRITELINE(tecmo_state, adpcm_int)) /* interrupt function */
|
||||
MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8KHz */
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
|
||||
MACHINE_CONFIG_END
|
||||
@ -671,47 +673,11 @@ static MACHINE_CONFIG_DERIVED( silkworm, gemini )
|
||||
MCFG_CPU_PROGRAM_MAP(silkworm_map)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
#ifdef UNUSED_CODE
|
||||
static MACHINE_CONFIG_START( backfirt, tecmo_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", Z80, XTAL_24MHz/4)
|
||||
MCFG_CPU_PROGRAM_MAP(rygar_map)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", tecmo_state, irq0_line_hold)
|
||||
|
||||
MCFG_CPU_ADD("soundcpu", Z80, XTAL_8MHz/2)
|
||||
MCFG_CPU_PROGRAM_MAP(rygar_sound_map)
|
||||
|
||||
/* video hardware */
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_REFRESH_RATE(60)
|
||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0) /* frames per second, vblank duration */)
|
||||
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(tecmo_state, screen_update_tecmo)
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
|
||||
MCFG_GFXDECODE_ADD("gfxdecode", "palette", tecmo)
|
||||
MCFG_PALETTE_ADD("palette", 1024)
|
||||
MCFG_PALETTE_FORMAT(xxxxBBBBRRRRGGGG)
|
||||
MCFG_PALETTE_ENDIANNESS(ENDIANNESS_BIG)
|
||||
|
||||
MCFG_VIDEO_START_OVERRIDE(tecmo_state,tecmo)
|
||||
|
||||
MCFG_MACHINE_RESET_OVERRIDE(tecmo_state, rygar )
|
||||
|
||||
/* sound hardware */
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
|
||||
MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_4MHz) /* verified on pcb */
|
||||
MCFG_YM3812_IRQ_HANDLER(INPUTLINE("soundcpu", 0))
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
||||
|
||||
/* no MSM on this PCB */
|
||||
static MACHINE_CONFIG_DERIVED( backfirt, gemini )
|
||||
|
||||
/* this pcb has no MSM5205 */
|
||||
MCFG_DEVICE_REMOVE("msm")
|
||||
MACHINE_CONFIG_END
|
||||
#endif
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Game driver(s)
|
||||
@ -1065,9 +1031,6 @@ ROM_START( backfirt )
|
||||
ROM_LOAD( "b16-s2.bin", 0x10000, 0x10000, CRC(6e4052c9) SHA1(e2e3d7221b75cb044449a25a076a93c3def1f11b) ) /* tiles #2 */
|
||||
ROM_LOAD( "b15-s2.bin", 0x20000, 0x10000, CRC(2b6cc20e) SHA1(4815819288753400935836cc1b0b69f4c4b43ddc) ) /* tiles #2 */
|
||||
ROM_LOAD( "b14-s3.bin", 0x30000, 0x08000, CRC(4d29637a) SHA1(28e85925138256b8ce5a1c4a5df5b219b1b6b197) ) /* tiles #2 */ // half size is correct, rom type 27256
|
||||
|
||||
ROM_REGION( 0x8000, "adpcm", ROMREGION_ERASE00 ) /* ADPCM samples */
|
||||
// ROM_LOAD( "silkworm.1", 0x0000, 0x8000, CRC(5b553644) SHA1(5d39d2251094c17f7b732b4861401b3516fce9b1) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( gemini )
|
||||
@ -1138,11 +1101,11 @@ DRIVER_INIT_MEMBER(tecmo_state,backfirt)
|
||||
|
||||
|
||||
|
||||
GAME( 1986, rygar, 0, rygar, rygar, tecmo_state, rygar, ROT0, "Tecmo", "Rygar (US set 1)", 0 )
|
||||
GAME( 1986, rygar2, rygar, rygar, rygar, tecmo_state, rygar, ROT0, "Tecmo", "Rygar (US set 2)", 0 )
|
||||
GAME( 1986, rygar3, rygar, rygar, rygar, tecmo_state, rygar, ROT0, "Tecmo", "Rygar (US set 3 Old Version)", 0 )
|
||||
GAME( 1986, rygarj, rygar, rygar, rygar, tecmo_state, rygar, ROT0, "Tecmo", "Argus no Senshi (Japan)", 0 )
|
||||
GAME( 1987, gemini, 0, gemini, gemini, tecmo_state, gemini, ROT90, "Tecmo", "Gemini Wing (Japan)", 0 ) /* Japan regional warning screen */
|
||||
GAME( 1988, silkworm, 0, silkworm, silkworm, tecmo_state, silkworm, ROT0, "Tecmo", "Silk Worm (World)", 0 ) /* No regional "Warning, if you are playing ..." screen */
|
||||
GAME( 1988, silkwormj, silkworm, silkworm, silkworm, tecmo_state, silkworm, ROT0, "Tecmo", "Silk Worm (Japan)", 0 ) /* Japan regional warning screen */
|
||||
GAME( 1988, backfirt, 0, gemini, backfirt, tecmo_state, backfirt, ROT0, "Tecmo", "Back Fire (Tecmo, bootleg)", 0 )
|
||||
GAME( 1986, rygar, 0, rygar, rygar, tecmo_state, rygar, ROT0, "Tecmo", "Rygar (US set 1)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1986, rygar2, rygar, rygar, rygar, tecmo_state, rygar, ROT0, "Tecmo", "Rygar (US set 2)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1986, rygar3, rygar, rygar, rygar, tecmo_state, rygar, ROT0, "Tecmo", "Rygar (US set 3 Old Version)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1986, rygarj, rygar, rygar, rygar, tecmo_state, rygar, ROT0, "Tecmo", "Argus no Senshi (Japan)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1987, gemini, 0, gemini, gemini, tecmo_state, gemini, ROT90, "Tecmo", "Gemini Wing (Japan)", GAME_SUPPORTS_SAVE ) /* Japan regional warning screen */
|
||||
GAME( 1988, silkworm, 0, silkworm, silkworm, tecmo_state, silkworm, ROT0, "Tecmo", "Silk Worm (World)", GAME_SUPPORTS_SAVE ) /* No regional "Warning, if you are playing ..." screen */
|
||||
GAME( 1988, silkwormj, silkworm, silkworm, silkworm, tecmo_state, silkworm, ROT0, "Tecmo", "Silk Worm (Japan)", GAME_SUPPORTS_SAVE ) /* Japan regional warning screen */
|
||||
GAME( 1988, backfirt, 0, backfirt, backfirt, tecmo_state, backfirt, ROT0, "Tecmo", "Back Fire (Tecmo, bootleg)", GAME_SUPPORTS_SAVE )
|
||||
|
@ -32,7 +32,7 @@ Notes:
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
WRITE16_MEMBER(tecmo16_state::tecmo16_sound_command_w)
|
||||
WRITE16_MEMBER(tecmo16_state::sound_command_w)
|
||||
{
|
||||
if (ACCESSING_BITS_0_7)
|
||||
{
|
||||
@ -46,49 +46,49 @@ WRITE16_MEMBER(tecmo16_state::tecmo16_sound_command_w)
|
||||
static ADDRESS_MAP_START( fstarfrc_map, AS_PROGRAM, 16, tecmo16_state )
|
||||
AM_RANGE(0x000000, 0x07ffff) AM_ROM
|
||||
AM_RANGE(0x100000, 0x103fff) AM_RAM /* Main RAM */
|
||||
AM_RANGE(0x110000, 0x110fff) AM_RAM_WRITE(tecmo16_charram_w) AM_SHARE("charram")
|
||||
AM_RANGE(0x120000, 0x1207ff) AM_RAM_WRITE(tecmo16_videoram_w) AM_SHARE("videoram")
|
||||
AM_RANGE(0x120800, 0x120fff) AM_RAM_WRITE(tecmo16_colorram_w) AM_SHARE("colorram")
|
||||
AM_RANGE(0x121000, 0x1217ff) AM_RAM_WRITE(tecmo16_videoram2_w) AM_SHARE("videoram2")
|
||||
AM_RANGE(0x121800, 0x121fff) AM_RAM_WRITE(tecmo16_colorram2_w) AM_SHARE("colorram2")
|
||||
AM_RANGE(0x110000, 0x110fff) AM_RAM_WRITE(charram_w) AM_SHARE("charram")
|
||||
AM_RANGE(0x120000, 0x1207ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
|
||||
AM_RANGE(0x120800, 0x120fff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
|
||||
AM_RANGE(0x121000, 0x1217ff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2")
|
||||
AM_RANGE(0x121800, 0x121fff) AM_RAM_WRITE(colorram2_w) AM_SHARE("colorram2")
|
||||
AM_RANGE(0x122000, 0x127fff) AM_RAM /* work area */
|
||||
AM_RANGE(0x130000, 0x130fff) AM_RAM AM_SHARE("spriteram")
|
||||
AM_RANGE(0x140000, 0x141fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
|
||||
AM_RANGE(0x150000, 0x150001) AM_WRITE(tecmo16_flipscreen_w)
|
||||
AM_RANGE(0x150010, 0x150011) AM_WRITE(tecmo16_sound_command_w)
|
||||
AM_RANGE(0x150000, 0x150001) AM_WRITE(flipscreen_w)
|
||||
AM_RANGE(0x150010, 0x150011) AM_WRITE(sound_command_w)
|
||||
AM_RANGE(0x150030, 0x150031) AM_READ_PORT("DSW2") AM_WRITENOP /* ??? */
|
||||
AM_RANGE(0x150040, 0x150041) AM_READ_PORT("DSW1")
|
||||
AM_RANGE(0x150050, 0x150051) AM_READ_PORT("P1_P2")
|
||||
AM_RANGE(0x160000, 0x160001) AM_WRITE(tecmo16_scroll_char_x_w)
|
||||
AM_RANGE(0x16000c, 0x16000d) AM_WRITE(tecmo16_scroll_x_w)
|
||||
AM_RANGE(0x160012, 0x160013) AM_WRITE(tecmo16_scroll_y_w)
|
||||
AM_RANGE(0x160018, 0x160019) AM_WRITE(tecmo16_scroll2_x_w)
|
||||
AM_RANGE(0x16001e, 0x16001f) AM_WRITE(tecmo16_scroll2_y_w)
|
||||
AM_RANGE(0x160000, 0x160001) AM_WRITE(scroll_char_x_w)
|
||||
AM_RANGE(0x16000c, 0x16000d) AM_WRITE(scroll_x_w)
|
||||
AM_RANGE(0x160012, 0x160013) AM_WRITE(scroll_y_w)
|
||||
AM_RANGE(0x160018, 0x160019) AM_WRITE(scroll2_x_w)
|
||||
AM_RANGE(0x16001e, 0x16001f) AM_WRITE(scroll2_y_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( ginkun_map, AS_PROGRAM, 16, tecmo16_state )
|
||||
AM_RANGE(0x000000, 0x07ffff) AM_ROM
|
||||
AM_RANGE(0x100000, 0x103fff) AM_RAM /* Main RAM */
|
||||
AM_RANGE(0x110000, 0x110fff) AM_RAM_WRITE(tecmo16_charram_w) AM_SHARE("charram")
|
||||
AM_RANGE(0x120000, 0x120fff) AM_RAM_WRITE(tecmo16_videoram_w) AM_SHARE("videoram")
|
||||
AM_RANGE(0x121000, 0x121fff) AM_RAM_WRITE(tecmo16_colorram_w) AM_SHARE("colorram")
|
||||
AM_RANGE(0x122000, 0x122fff) AM_RAM_WRITE(tecmo16_videoram2_w) AM_SHARE("videoram2")
|
||||
AM_RANGE(0x123000, 0x123fff) AM_RAM_WRITE(tecmo16_colorram2_w) AM_SHARE("colorram2")
|
||||
AM_RANGE(0x110000, 0x110fff) AM_RAM_WRITE(charram_w) AM_SHARE("charram")
|
||||
AM_RANGE(0x120000, 0x120fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
|
||||
AM_RANGE(0x121000, 0x121fff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
|
||||
AM_RANGE(0x122000, 0x122fff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2")
|
||||
AM_RANGE(0x123000, 0x123fff) AM_RAM_WRITE(colorram2_w) AM_SHARE("colorram2")
|
||||
AM_RANGE(0x124000, 0x124fff) AM_RAM /* extra RAM for Riot */
|
||||
AM_RANGE(0x130000, 0x130fff) AM_RAM AM_SHARE("spriteram")
|
||||
AM_RANGE(0x140000, 0x141fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
|
||||
AM_RANGE(0x150000, 0x150001) AM_WRITE(tecmo16_flipscreen_w)
|
||||
AM_RANGE(0x150010, 0x150011) AM_WRITE(tecmo16_sound_command_w)
|
||||
AM_RANGE(0x150000, 0x150001) AM_WRITE(flipscreen_w)
|
||||
AM_RANGE(0x150010, 0x150011) AM_WRITE(sound_command_w)
|
||||
AM_RANGE(0x150020, 0x150021) AM_READ_PORT("EXTRA") AM_WRITENOP /* ??? */
|
||||
AM_RANGE(0x150030, 0x150031) AM_READ_PORT("DSW2") AM_WRITENOP /* ??? */
|
||||
AM_RANGE(0x150040, 0x150041) AM_READ_PORT("DSW1")
|
||||
AM_RANGE(0x150050, 0x150051) AM_READ_PORT("P1_P2")
|
||||
AM_RANGE(0x160000, 0x160001) AM_WRITE(tecmo16_scroll_char_x_w)
|
||||
AM_RANGE(0x160006, 0x160007) AM_WRITE(tecmo16_scroll_char_y_w)
|
||||
AM_RANGE(0x16000c, 0x16000d) AM_WRITE(tecmo16_scroll_x_w)
|
||||
AM_RANGE(0x160012, 0x160013) AM_WRITE(tecmo16_scroll_y_w)
|
||||
AM_RANGE(0x160018, 0x160019) AM_WRITE(tecmo16_scroll2_x_w)
|
||||
AM_RANGE(0x16001e, 0x16001f) AM_WRITE(tecmo16_scroll2_y_w)
|
||||
AM_RANGE(0x160000, 0x160001) AM_WRITE(scroll_char_x_w)
|
||||
AM_RANGE(0x160006, 0x160007) AM_WRITE(scroll_char_y_w)
|
||||
AM_RANGE(0x16000c, 0x16000d) AM_WRITE(scroll_x_w)
|
||||
AM_RANGE(0x160012, 0x160013) AM_WRITE(scroll_y_w)
|
||||
AM_RANGE(0x160018, 0x160019) AM_WRITE(scroll2_x_w)
|
||||
AM_RANGE(0x16001e, 0x16001f) AM_WRITE(scroll2_y_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, tecmo16_state )
|
||||
@ -382,7 +382,7 @@ static MACHINE_CONFIG_START( fstarfrc, tecmo16_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(tecmo16_state, screen_update_tecmo16)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(tecmo16_state, screen_update)
|
||||
|
||||
MCFG_GFXDECODE_ADD("gfxdecode", "palette", tecmo16)
|
||||
MCFG_PALETTE_ADD_INIT_BLACK("palette", 4096)
|
||||
@ -629,7 +629,7 @@ ROM_END
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
GAME( 1992, fstarfrc, 0, fstarfrc, fstarfrc, driver_device, 0, ROT90, "Tecmo", "Final Star Force (US)", 0 )
|
||||
GAME( 1992, fstarfrcj, fstarfrc, fstarfrc, fstarfrc, driver_device, 0, ROT90, "Tecmo", "Final Star Force (Japan)", 0 )
|
||||
GAME( 1992, riot, 0, riot, riot, driver_device, 0, ROT0, "NMK", "Riot", 0 )
|
||||
GAME( 1995, ginkun, 0, ginkun, ginkun, driver_device, 0, ROT0, "Tecmo", "Ganbare Ginkun", 0 )
|
||||
GAME( 1992, fstarfrc, 0, fstarfrc, fstarfrc, driver_device, 0, ROT90, "Tecmo", "Final Star Force (US)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1992, fstarfrcj, fstarfrc, fstarfrc, fstarfrc, driver_device, 0, ROT90, "Tecmo", "Final Star Force (Japan)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1992, riot, 0, riot, riot, driver_device, 0, ROT0, "NMK", "Riot", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1995, ginkun, 0, ginkun, ginkun, driver_device, 0, ROT0, "Tecmo", "Ganbare Ginkun", GAME_SUPPORTS_SAVE )
|
||||
|
@ -31,7 +31,7 @@ VBlank = 58Hz
|
||||
-2) X Line Scrolling doesn't work 100% when Flip Screen Dip is set
|
||||
-3) 2 Player Version - Dips for difficulty don't seem to work or just need more testing
|
||||
|
||||
-4) 2 Player Version - sound ROM is different and the adpmc chip is addressed differently
|
||||
-4) 2 Player Version - sound ROM is different and the adpcm chip is addressed differently
|
||||
Changed it to use a rom that was dumped from original PCB (readme below),
|
||||
this makes the non-working ROM not used - i don't know where it come from.
|
||||
|
||||
@ -131,11 +131,11 @@ TIMER_DEVICE_CALLBACK_MEMBER(vball_state::vball_scanline)
|
||||
/* Save the scroll x register value */
|
||||
if (scanline < 256)
|
||||
{
|
||||
m_vb_scrollx[255 - scanline] = (m_vb_scrollx_hi + m_vb_scrollx_lo + 4);
|
||||
m_scrollx[255 - scanline] = (m_scrollx_hi + m_scrollx_lo + 4);
|
||||
}
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(vball_state::vball_irq_ack_w)
|
||||
WRITE8_MEMBER(vball_state::irq_ack_w)
|
||||
{
|
||||
if (offset == 0)
|
||||
m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
|
||||
@ -154,17 +154,16 @@ WRITE8_MEMBER(vball_state::vball_irq_ack_w)
|
||||
bit 6 = scroll y hi
|
||||
bit 7 = ?
|
||||
*/
|
||||
WRITE8_MEMBER(vball_state::vb_bankswitch_w)
|
||||
WRITE8_MEMBER(vball_state::bankswitch_w)
|
||||
{
|
||||
UINT8 *RAM = memregion("maincpu")->base();
|
||||
membank("bank1")->set_base(&RAM[0x10000 + (0x4000 * (data & 1))]);
|
||||
membank("mainbank")->set_entry(data & 1);
|
||||
|
||||
if (m_gfxset != ((data & 0x20) ^ 0x20))
|
||||
{
|
||||
m_gfxset = (data & 0x20) ^ 0x20;
|
||||
vb_mark_all_dirty();
|
||||
m_bg_tilemap->mark_all_dirty();
|
||||
}
|
||||
m_vb_scrolly_hi = (data & 0x40) << 2;
|
||||
m_scrolly_hi = (data & 0x40) << 2;
|
||||
}
|
||||
|
||||
/* The sound system comes all but verbatim from Double Dragon */
|
||||
@ -184,19 +183,19 @@ WRITE8_MEMBER(vball_state::cpu_sound_command_w)
|
||||
bit 6 = sp prom bank
|
||||
bit 7 = sp prom bank
|
||||
*/
|
||||
WRITE8_MEMBER(vball_state::vb_scrollx_hi_w)
|
||||
WRITE8_MEMBER(vball_state::scrollx_hi_w)
|
||||
{
|
||||
flip_screen_set(~data&1);
|
||||
m_vb_scrollx_hi = (data & 0x02) << 7;
|
||||
vb_bgprombank_w((data >> 2) & 0x07);
|
||||
vb_spprombank_w((data >> 5) & 0x07);
|
||||
//logerror("%04x: vb_scrollx_hi = %d\n", space.device().safe_pcbase(), m_vb_scrollx_hi);
|
||||
m_scrollx_hi = (data & 0x02) << 7;
|
||||
bgprombank_w((data >> 2) & 0x07);
|
||||
spprombank_w((data >> 5) & 0x07);
|
||||
//logerror("%04x: scrollx_hi = %d\n", space.device().safe_pcbase(), m_scrollx_hi);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(vball_state::vb_scrollx_lo_w)
|
||||
WRITE8_MEMBER(vball_state::scrollx_lo_w)
|
||||
{
|
||||
m_vb_scrollx_lo = data;
|
||||
//logerror("%04x: vb_scrollx_lo =%d\n", space.device().safe_pcbase(), m_vb_scrollx_lo);
|
||||
m_scrollx_lo = data;
|
||||
//logerror("%04x: scrollx_lo =%d\n", space.device().safe_pcbase(), m_scrollx_lo);
|
||||
}
|
||||
|
||||
|
||||
@ -211,15 +210,15 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, vball_state )
|
||||
AM_RANGE(0x1004, 0x1004) AM_READ_PORT("DSW2")
|
||||
AM_RANGE(0x1005, 0x1005) AM_READ_PORT("P3")
|
||||
AM_RANGE(0x1006, 0x1006) AM_READ_PORT("P4")
|
||||
AM_RANGE(0x1008, 0x1008) AM_WRITE(vb_scrollx_hi_w)
|
||||
AM_RANGE(0x1009, 0x1009) AM_WRITE(vb_bankswitch_w)
|
||||
AM_RANGE(0x100a, 0x100b) AM_WRITE(vball_irq_ack_w) /* is there a scanline counter here? */
|
||||
AM_RANGE(0x100c, 0x100c) AM_WRITE(vb_scrollx_lo_w)
|
||||
AM_RANGE(0x1008, 0x1008) AM_WRITE(scrollx_hi_w)
|
||||
AM_RANGE(0x1009, 0x1009) AM_WRITE(bankswitch_w)
|
||||
AM_RANGE(0x100a, 0x100b) AM_WRITE(irq_ack_w) /* is there a scanline counter here? */
|
||||
AM_RANGE(0x100c, 0x100c) AM_WRITE(scrollx_lo_w)
|
||||
AM_RANGE(0x100d, 0x100d) AM_WRITE(cpu_sound_command_w)
|
||||
AM_RANGE(0x100e, 0x100e) AM_WRITEONLY AM_SHARE("vb_scrolly_lo")
|
||||
AM_RANGE(0x2000, 0x2fff) AM_WRITE(vb_videoram_w) AM_SHARE("vb_videoram")
|
||||
AM_RANGE(0x3000, 0x3fff) AM_WRITE(vb_attrib_w) AM_SHARE("vb_attribram")
|
||||
AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
|
||||
AM_RANGE(0x100e, 0x100e) AM_WRITEONLY AM_SHARE("scrolly_lo")
|
||||
AM_RANGE(0x2000, 0x2fff) AM_WRITE(videoram_w) AM_SHARE("videoram")
|
||||
AM_RANGE(0x3000, 0x3fff) AM_WRITE(attrib_w) AM_SHARE("attribram")
|
||||
AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("mainbank")
|
||||
AM_RANGE(0x8000, 0xffff) AM_ROM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -361,6 +360,11 @@ static INPUT_PORTS_START (vball2pj)
|
||||
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) /* Used in 4 player mode, not supported in 2 player set */
|
||||
INPUT_PORTS_END
|
||||
|
||||
void vball_state::machine_start()
|
||||
{
|
||||
membank("mainbank")->configure_entries(0, 2, memregion("maincpu")->base() + 0x10000, 0x4000);
|
||||
}
|
||||
|
||||
|
||||
static const gfx_layout charlayout =
|
||||
{
|
||||
@ -407,7 +411,7 @@ static MACHINE_CONFIG_START( vball, vball_state )
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_SIZE(32*8, 32*8)
|
||||
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 384, 0, 256, 272, 8, 248) /* based on ddragon driver */
|
||||
MCFG_SCREEN_UPDATE_DRIVER(vball_state, screen_update_vb)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(vball_state, screen_update)
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
|
||||
MCFG_GFXDECODE_ADD("gfxdecode", "palette", vb)
|
||||
@ -557,7 +561,7 @@ ROM_START( vball2pjb ) /* bootleg of the Japan set with unmoddified program rom
|
||||
ROM_END
|
||||
|
||||
|
||||
GAME( 1988, vball, 0, vball, vball, driver_device, 0, ROT0, "Technos Japan", "U.S. Championship V'ball (US)", 0 )
|
||||
GAME( 1988, vball2pj, vball, vball, vball2pj, driver_device, 0, ROT0, "Technos Japan", "U.S. Championship V'ball (Japan)", 0 )
|
||||
GAME( 1988, vballb, vball, vball, vball, driver_device, 0, ROT0, "bootleg", "U.S. Championship V'ball (bootleg of US set)", 0 )
|
||||
GAME( 1988, vball2pjb,vball, vball, vball, driver_device, 0, ROT0, "bootleg", "U.S. Championship V'ball (bootleg of Japan set)", 0 )
|
||||
GAME( 1988, vball, 0, vball, vball, driver_device, 0, ROT0, "Technos Japan", "U.S. Championship V'ball (US)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1988, vball2pj, vball, vball, vball2pj, driver_device, 0, ROT0, "Technos Japan", "U.S. Championship V'ball (Japan)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1988, vballb, vball, vball, vball, driver_device, 0, ROT0, "bootleg", "U.S. Championship V'ball (bootleg of US set)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1988, vball2pjb,vball, vball, vball, driver_device, 0, ROT0, "bootleg", "U.S. Championship V'ball (bootleg of Japan set)", GAME_SUPPORTS_SAVE )
|
||||
|
@ -6,65 +6,72 @@ class tecmo_state : public driver_device
|
||||
public:
|
||||
tecmo_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_txvideoram(*this, "txvideoram"),
|
||||
m_fgvideoram(*this, "fgvideoram"),
|
||||
m_bgvideoram(*this, "bgvideoram"),
|
||||
m_spriteram(*this, "spriteram"),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_soundcpu(*this, "soundcpu"),
|
||||
m_msm(*this, "msm"),
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
m_palette(*this, "palette"),
|
||||
m_sprgen(*this, "spritegen")
|
||||
{ }
|
||||
m_sprgen(*this, "spritegen"),
|
||||
m_txvideoram(*this, "txvideoram"),
|
||||
m_fgvideoram(*this, "fgvideoram"),
|
||||
m_bgvideoram(*this, "bgvideoram"),
|
||||
m_spriteram(*this, "spriteram") { }
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_soundcpu;
|
||||
optional_device<msm5205_device> m_msm;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<palette_device> m_palette;
|
||||
required_device<tecmo_spr_device> m_sprgen;
|
||||
|
||||
int m_adpcm_pos;
|
||||
int m_adpcm_end;
|
||||
int m_adpcm_data;
|
||||
int m_video_type;
|
||||
required_shared_ptr<UINT8> m_txvideoram;
|
||||
required_shared_ptr<UINT8> m_fgvideoram;
|
||||
required_shared_ptr<UINT8> m_bgvideoram;
|
||||
required_shared_ptr<UINT8> m_spriteram;
|
||||
|
||||
tilemap_t *m_tx_tilemap;
|
||||
tilemap_t *m_fg_tilemap;
|
||||
tilemap_t *m_bg_tilemap;
|
||||
UINT8 m_fgscroll[3];
|
||||
UINT8 m_bgscroll[3];
|
||||
required_shared_ptr<UINT8> m_spriteram;
|
||||
DECLARE_WRITE8_MEMBER(tecmo_bankswitch_w);
|
||||
DECLARE_WRITE8_MEMBER(tecmo_sound_command_w);
|
||||
DECLARE_WRITE8_MEMBER(tecmo_nmi_ack_w);
|
||||
DECLARE_WRITE8_MEMBER(tecmo_adpcm_end_w);
|
||||
DECLARE_READ8_MEMBER(tecmo_dswa_l_r);
|
||||
DECLARE_READ8_MEMBER(tecmo_dswa_h_r);
|
||||
DECLARE_READ8_MEMBER(tecmo_dswb_l_r);
|
||||
DECLARE_READ8_MEMBER(tecmo_dswb_h_r);
|
||||
DECLARE_WRITE8_MEMBER(tecmo_txvideoram_w);
|
||||
DECLARE_WRITE8_MEMBER(tecmo_fgvideoram_w);
|
||||
DECLARE_WRITE8_MEMBER(tecmo_bgvideoram_w);
|
||||
DECLARE_WRITE8_MEMBER(tecmo_fgscroll_w);
|
||||
DECLARE_WRITE8_MEMBER(tecmo_bgscroll_w);
|
||||
DECLARE_WRITE8_MEMBER(tecmo_flipscreen_w);
|
||||
DECLARE_WRITE8_MEMBER(tecmo_adpcm_start_w);
|
||||
DECLARE_WRITE8_MEMBER(tecmo_adpcm_vol_w);
|
||||
int m_adpcm_pos;
|
||||
int m_adpcm_end;
|
||||
int m_adpcm_data;
|
||||
int m_video_type;
|
||||
|
||||
DECLARE_WRITE8_MEMBER(bankswitch_w);
|
||||
DECLARE_WRITE8_MEMBER(sound_command_w);
|
||||
DECLARE_WRITE8_MEMBER(nmi_ack_w);
|
||||
DECLARE_WRITE8_MEMBER(adpcm_end_w);
|
||||
DECLARE_READ8_MEMBER(dswa_l_r);
|
||||
DECLARE_READ8_MEMBER(dswa_h_r);
|
||||
DECLARE_READ8_MEMBER(dswb_l_r);
|
||||
DECLARE_READ8_MEMBER(dswb_h_r);
|
||||
DECLARE_WRITE8_MEMBER(txvideoram_w);
|
||||
DECLARE_WRITE8_MEMBER(fgvideoram_w);
|
||||
DECLARE_WRITE8_MEMBER(bgvideoram_w);
|
||||
DECLARE_WRITE8_MEMBER(fgscroll_w);
|
||||
DECLARE_WRITE8_MEMBER(bgscroll_w);
|
||||
DECLARE_WRITE8_MEMBER(flipscreen_w);
|
||||
DECLARE_WRITE8_MEMBER(adpcm_start_w);
|
||||
DECLARE_WRITE8_MEMBER(adpcm_vol_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(adpcm_int);
|
||||
|
||||
DECLARE_DRIVER_INIT(silkworm);
|
||||
DECLARE_DRIVER_INIT(rygar);
|
||||
DECLARE_DRIVER_INIT(backfirt);
|
||||
DECLARE_DRIVER_INIT(gemini);
|
||||
|
||||
TILE_GET_INFO_MEMBER(get_bg_tile_info);
|
||||
TILE_GET_INFO_MEMBER(get_fg_tile_info);
|
||||
TILE_GET_INFO_MEMBER(gemini_get_bg_tile_info);
|
||||
TILE_GET_INFO_MEMBER(gemini_get_fg_tile_info);
|
||||
TILE_GET_INFO_MEMBER(get_tx_tile_info);
|
||||
DECLARE_MACHINE_RESET(rygar);
|
||||
DECLARE_VIDEO_START(tecmo);
|
||||
UINT32 screen_update_tecmo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
|
||||
virtual void machine_start();
|
||||
virtual void machine_reset();
|
||||
virtual void video_start();
|
||||
|
||||
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap,const rectangle &cliprect);
|
||||
DECLARE_WRITE_LINE_MEMBER(tecmo_adpcm_int);
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_soundcpu;
|
||||
required_device<msm5205_device> m_msm;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<palette_device> m_palette;
|
||||
required_device<tecmo_spr_device> m_sprgen;
|
||||
};
|
||||
|
@ -6,26 +6,36 @@ class tecmo16_state : public driver_device
|
||||
public:
|
||||
tecmo16_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_videoram2(*this, "videoram2"),
|
||||
m_colorram2(*this, "colorram2"),
|
||||
m_charram(*this, "charram"),
|
||||
m_spriteram(*this, "spriteram"),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_audiocpu(*this, "audiocpu"),
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
m_screen(*this, "screen"),
|
||||
m_palette(*this, "palette"),
|
||||
m_sprgen(*this, "spritegen"),
|
||||
m_mixer(*this, "mixer")
|
||||
m_mixer(*this, "mixer"),
|
||||
m_videoram(*this, "videoram"),
|
||||
m_colorram(*this, "colorram"),
|
||||
m_videoram2(*this, "videoram2"),
|
||||
m_colorram2(*this, "colorram2"),
|
||||
m_charram(*this, "charram"),
|
||||
m_spriteram(*this, "spriteram")
|
||||
{ }
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_audiocpu;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<screen_device> m_screen;
|
||||
required_device<palette_device> m_palette;
|
||||
required_device<tecmo_spr_device> m_sprgen;
|
||||
required_device<tecmo_mix_device> m_mixer;
|
||||
|
||||
required_shared_ptr<UINT16> m_videoram;
|
||||
required_shared_ptr<UINT16> m_colorram;
|
||||
required_shared_ptr<UINT16> m_videoram2;
|
||||
required_shared_ptr<UINT16> m_colorram2;
|
||||
required_shared_ptr<UINT16> m_charram;
|
||||
required_shared_ptr<UINT16> m_spriteram;
|
||||
|
||||
tilemap_t *m_fg_tilemap;
|
||||
tilemap_t *m_bg_tilemap;
|
||||
tilemap_t *m_tx_tilemap;
|
||||
@ -40,33 +50,30 @@ public:
|
||||
UINT16 m_scroll2_y_w;
|
||||
UINT16 m_scroll_char_x_w;
|
||||
UINT16 m_scroll_char_y_w;
|
||||
required_shared_ptr<UINT16> m_spriteram;
|
||||
DECLARE_WRITE16_MEMBER(tecmo16_sound_command_w);
|
||||
DECLARE_WRITE16_MEMBER(tecmo16_videoram_w);
|
||||
DECLARE_WRITE16_MEMBER(tecmo16_colorram_w);
|
||||
DECLARE_WRITE16_MEMBER(tecmo16_videoram2_w);
|
||||
DECLARE_WRITE16_MEMBER(tecmo16_colorram2_w);
|
||||
DECLARE_WRITE16_MEMBER(tecmo16_charram_w);
|
||||
DECLARE_WRITE16_MEMBER(tecmo16_flipscreen_w);
|
||||
DECLARE_WRITE16_MEMBER(tecmo16_scroll_x_w);
|
||||
DECLARE_WRITE16_MEMBER(tecmo16_scroll_y_w);
|
||||
DECLARE_WRITE16_MEMBER(tecmo16_scroll2_x_w);
|
||||
DECLARE_WRITE16_MEMBER(tecmo16_scroll2_y_w);
|
||||
DECLARE_WRITE16_MEMBER(tecmo16_scroll_char_x_w);
|
||||
DECLARE_WRITE16_MEMBER(tecmo16_scroll_char_y_w);
|
||||
|
||||
DECLARE_WRITE16_MEMBER(sound_command_w);
|
||||
DECLARE_WRITE16_MEMBER(videoram_w);
|
||||
DECLARE_WRITE16_MEMBER(colorram_w);
|
||||
DECLARE_WRITE16_MEMBER(videoram2_w);
|
||||
DECLARE_WRITE16_MEMBER(colorram2_w);
|
||||
DECLARE_WRITE16_MEMBER(charram_w);
|
||||
DECLARE_WRITE16_MEMBER(flipscreen_w);
|
||||
DECLARE_WRITE16_MEMBER(scroll_x_w);
|
||||
DECLARE_WRITE16_MEMBER(scroll_y_w);
|
||||
DECLARE_WRITE16_MEMBER(scroll2_x_w);
|
||||
DECLARE_WRITE16_MEMBER(scroll2_y_w);
|
||||
DECLARE_WRITE16_MEMBER(scroll_char_x_w);
|
||||
DECLARE_WRITE16_MEMBER(scroll_char_y_w);
|
||||
|
||||
TILE_GET_INFO_MEMBER(fg_get_tile_info);
|
||||
TILE_GET_INFO_MEMBER(bg_get_tile_info);
|
||||
TILE_GET_INFO_MEMBER(tx_get_tile_info);
|
||||
|
||||
virtual void video_start();
|
||||
DECLARE_VIDEO_START(ginkun);
|
||||
DECLARE_VIDEO_START(riot);
|
||||
UINT32 screen_update_tecmo16(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_audiocpu;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<screen_device> m_screen;
|
||||
required_device<palette_device> m_palette;
|
||||
required_device<tecmo_spr_device> m_sprgen;
|
||||
required_device<tecmo_mix_device> m_mixer;
|
||||
|
||||
UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||
|
||||
void save_state();
|
||||
};
|
||||
|
@ -3,49 +3,54 @@ class vball_state : public driver_device
|
||||
public:
|
||||
vball_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_vb_attribram(*this, "vb_attribram"),
|
||||
m_vb_videoram(*this, "vb_videoram"),
|
||||
m_vb_scrolly_lo(*this, "vb_scrolly_lo"),
|
||||
m_spriteram(*this, "spriteram"),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_audiocpu(*this, "audiocpu"),
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
m_screen(*this, "screen"),
|
||||
m_palette(*this, "palette"){ }
|
||||
m_palette(*this, "palette"),
|
||||
m_attribram(*this, "attribram"),
|
||||
m_videoram(*this, "videoram"),
|
||||
m_scrolly_lo(*this, "scrolly_lo"),
|
||||
m_spriteram(*this, "spriteram") { }
|
||||
|
||||
required_shared_ptr<UINT8> m_vb_attribram;
|
||||
required_shared_ptr<UINT8> m_vb_videoram;
|
||||
required_shared_ptr<UINT8> m_vb_scrolly_lo;
|
||||
int m_vb_scrollx_hi;
|
||||
int m_vb_scrolly_hi;
|
||||
int m_vb_scrollx_lo;
|
||||
int m_gfxset;
|
||||
int m_vb_scrollx[256];
|
||||
int m_vb_bgprombank;
|
||||
int m_vb_spprombank;
|
||||
tilemap_t *m_bg_tilemap;
|
||||
required_shared_ptr<UINT8> m_spriteram;
|
||||
DECLARE_WRITE8_MEMBER(vball_irq_ack_w);
|
||||
DECLARE_WRITE8_MEMBER(vb_bankswitch_w);
|
||||
DECLARE_WRITE8_MEMBER(cpu_sound_command_w);
|
||||
DECLARE_WRITE8_MEMBER(vb_scrollx_hi_w);
|
||||
DECLARE_WRITE8_MEMBER(vb_scrollx_lo_w);
|
||||
DECLARE_WRITE8_MEMBER(vb_videoram_w);
|
||||
DECLARE_READ8_MEMBER(vb_attrib_r);
|
||||
DECLARE_WRITE8_MEMBER(vb_attrib_w);
|
||||
TILEMAP_MAPPER_MEMBER(background_scan);
|
||||
TILE_GET_INFO_MEMBER(get_bg_tile_info);
|
||||
virtual void video_start();
|
||||
UINT32 screen_update_vb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(vball_scanline);
|
||||
void vb_bgprombank_w( int bank );
|
||||
void vb_spprombank_w( int bank );
|
||||
void vb_mark_all_dirty( );
|
||||
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
inline int scanline_to_vcount(int scanline);
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_audiocpu;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<screen_device> m_screen;
|
||||
required_device<palette_device> m_palette;
|
||||
|
||||
required_shared_ptr<UINT8> m_attribram;
|
||||
required_shared_ptr<UINT8> m_videoram;
|
||||
required_shared_ptr<UINT8> m_scrolly_lo;
|
||||
required_shared_ptr<UINT8> m_spriteram;
|
||||
|
||||
int m_scrollx_hi;
|
||||
int m_scrolly_hi;
|
||||
int m_scrollx_lo;
|
||||
int m_gfxset;
|
||||
int m_scrollx[256];
|
||||
int m_bgprombank;
|
||||
int m_spprombank;
|
||||
tilemap_t *m_bg_tilemap;
|
||||
|
||||
DECLARE_WRITE8_MEMBER(irq_ack_w);
|
||||
DECLARE_WRITE8_MEMBER(bankswitch_w);
|
||||
DECLARE_WRITE8_MEMBER(cpu_sound_command_w);
|
||||
DECLARE_WRITE8_MEMBER(scrollx_hi_w);
|
||||
DECLARE_WRITE8_MEMBER(scrollx_lo_w);
|
||||
DECLARE_WRITE8_MEMBER(videoram_w);
|
||||
DECLARE_WRITE8_MEMBER(attrib_w);
|
||||
|
||||
TILEMAP_MAPPER_MEMBER(background_scan);
|
||||
TILE_GET_INFO_MEMBER(get_bg_tile_info);
|
||||
|
||||
virtual void machine_start();
|
||||
virtual void video_start();
|
||||
|
||||
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(vball_scanline);
|
||||
void bgprombank_w(int bank);
|
||||
void spprombank_w(int bank);
|
||||
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
inline int scanline_to_vcount(int scanline);
|
||||
};
|
||||
|
@ -74,7 +74,7 @@ TILE_GET_INFO_MEMBER(tecmo_state::get_tx_tile_info)
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
VIDEO_START_MEMBER(tecmo_state,tecmo)
|
||||
void tecmo_state::video_start()
|
||||
{
|
||||
if (m_video_type == 2) /* gemini */
|
||||
{
|
||||
@ -94,6 +94,9 @@ VIDEO_START_MEMBER(tecmo_state,tecmo)
|
||||
|
||||
m_bg_tilemap->set_scrolldx(-48,256+48);
|
||||
m_fg_tilemap->set_scrolldx(-48,256+48);
|
||||
|
||||
save_item(NAME(m_fgscroll));
|
||||
save_item(NAME(m_bgscroll));
|
||||
}
|
||||
|
||||
|
||||
@ -104,25 +107,25 @@ VIDEO_START_MEMBER(tecmo_state,tecmo)
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
WRITE8_MEMBER(tecmo_state::tecmo_txvideoram_w)
|
||||
WRITE8_MEMBER(tecmo_state::txvideoram_w)
|
||||
{
|
||||
m_txvideoram[offset] = data;
|
||||
m_tx_tilemap->mark_tile_dirty(offset & 0x3ff);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(tecmo_state::tecmo_fgvideoram_w)
|
||||
WRITE8_MEMBER(tecmo_state::fgvideoram_w)
|
||||
{
|
||||
m_fgvideoram[offset] = data;
|
||||
m_fg_tilemap->mark_tile_dirty(offset & 0x1ff);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(tecmo_state::tecmo_bgvideoram_w)
|
||||
WRITE8_MEMBER(tecmo_state::bgvideoram_w)
|
||||
{
|
||||
m_bgvideoram[offset] = data;
|
||||
m_bg_tilemap->mark_tile_dirty(offset & 0x1ff);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(tecmo_state::tecmo_fgscroll_w)
|
||||
WRITE8_MEMBER(tecmo_state::fgscroll_w)
|
||||
{
|
||||
m_fgscroll[offset] = data;
|
||||
|
||||
@ -130,7 +133,7 @@ WRITE8_MEMBER(tecmo_state::tecmo_fgscroll_w)
|
||||
m_fg_tilemap->set_scrolly(0, m_fgscroll[2]);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(tecmo_state::tecmo_bgscroll_w)
|
||||
WRITE8_MEMBER(tecmo_state::bgscroll_w)
|
||||
{
|
||||
m_bgscroll[offset] = data;
|
||||
|
||||
@ -138,7 +141,7 @@ WRITE8_MEMBER(tecmo_state::tecmo_bgscroll_w)
|
||||
m_bg_tilemap->set_scrolly(0, m_bgscroll[2]);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(tecmo_state::tecmo_flipscreen_w)
|
||||
WRITE8_MEMBER(tecmo_state::flipscreen_w)
|
||||
{
|
||||
flip_screen_set(data & 1);
|
||||
}
|
||||
@ -153,7 +156,7 @@ WRITE8_MEMBER(tecmo_state::tecmo_flipscreen_w)
|
||||
|
||||
|
||||
|
||||
UINT32 tecmo_state::screen_update_tecmo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
UINT32 tecmo_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
screen.priority().fill(0, cliprect);
|
||||
bitmap.fill(0x100, cliprect);
|
||||
|
@ -14,6 +14,18 @@
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
|
||||
void tecmo16_state::save_state()
|
||||
{
|
||||
save_item(NAME(m_flipscreen));
|
||||
save_item(NAME(m_scroll_x_w));
|
||||
save_item(NAME(m_scroll_y_w));
|
||||
save_item(NAME(m_scroll2_x_w));
|
||||
save_item(NAME(m_scroll2_y_w));
|
||||
save_item(NAME(m_scroll_char_x_w));
|
||||
save_item(NAME(m_scroll_char_y_w));
|
||||
}
|
||||
|
||||
TILE_GET_INFO_MEMBER(tecmo16_state::fg_get_tile_info)
|
||||
{
|
||||
int tile = m_videoram[tile_index] & 0x1fff;
|
||||
@ -70,6 +82,8 @@ void tecmo16_state::video_start()
|
||||
m_tx_tilemap->set_scrolly(0,-16);
|
||||
m_flipscreen = 0;
|
||||
m_game_is_riot = 0;
|
||||
|
||||
save_state();
|
||||
}
|
||||
|
||||
VIDEO_START_MEMBER(tecmo16_state,ginkun)
|
||||
@ -90,6 +104,8 @@ VIDEO_START_MEMBER(tecmo16_state,ginkun)
|
||||
m_tx_tilemap->set_transparent_pen(0);
|
||||
m_flipscreen = 0;
|
||||
m_game_is_riot = 0;
|
||||
|
||||
save_state();
|
||||
}
|
||||
|
||||
VIDEO_START_MEMBER(tecmo16_state,riot)
|
||||
@ -111,42 +127,44 @@ VIDEO_START_MEMBER(tecmo16_state,riot)
|
||||
m_tx_tilemap->set_scrolldy(-16,-16);
|
||||
m_flipscreen = 0;
|
||||
m_game_is_riot = 1;
|
||||
|
||||
save_state();
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
WRITE16_MEMBER(tecmo16_state::tecmo16_videoram_w)
|
||||
WRITE16_MEMBER(tecmo16_state::videoram_w)
|
||||
{
|
||||
COMBINE_DATA(&m_videoram[offset]);
|
||||
m_fg_tilemap->mark_tile_dirty(offset);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(tecmo16_state::tecmo16_colorram_w)
|
||||
WRITE16_MEMBER(tecmo16_state::colorram_w)
|
||||
{
|
||||
COMBINE_DATA(&m_colorram[offset]);
|
||||
m_fg_tilemap->mark_tile_dirty(offset);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(tecmo16_state::tecmo16_videoram2_w)
|
||||
WRITE16_MEMBER(tecmo16_state::videoram2_w)
|
||||
{
|
||||
COMBINE_DATA(&m_videoram2[offset]);
|
||||
m_bg_tilemap->mark_tile_dirty(offset);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(tecmo16_state::tecmo16_colorram2_w)
|
||||
WRITE16_MEMBER(tecmo16_state::colorram2_w)
|
||||
{
|
||||
COMBINE_DATA(&m_colorram2[offset]);
|
||||
m_bg_tilemap->mark_tile_dirty(offset);
|
||||
}
|
||||
|
||||
|
||||
WRITE16_MEMBER(tecmo16_state::tecmo16_charram_w)
|
||||
WRITE16_MEMBER(tecmo16_state::charram_w)
|
||||
{
|
||||
COMBINE_DATA(&m_charram[offset]);
|
||||
m_tx_tilemap->mark_tile_dirty(offset);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(tecmo16_state::tecmo16_flipscreen_w)
|
||||
WRITE16_MEMBER(tecmo16_state::flipscreen_w)
|
||||
{
|
||||
m_flipscreen = data & 0x01;
|
||||
flip_screen_set(m_flipscreen);
|
||||
@ -154,37 +172,37 @@ WRITE16_MEMBER(tecmo16_state::tecmo16_flipscreen_w)
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
WRITE16_MEMBER(tecmo16_state::tecmo16_scroll_x_w)
|
||||
WRITE16_MEMBER(tecmo16_state::scroll_x_w)
|
||||
{
|
||||
COMBINE_DATA(&m_scroll_x_w);
|
||||
m_fg_tilemap->set_scrollx(0,m_scroll_x_w);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(tecmo16_state::tecmo16_scroll_y_w)
|
||||
WRITE16_MEMBER(tecmo16_state::scroll_y_w)
|
||||
{
|
||||
COMBINE_DATA(&m_scroll_y_w);
|
||||
m_fg_tilemap->set_scrolly(0,m_scroll_y_w);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(tecmo16_state::tecmo16_scroll2_x_w)
|
||||
WRITE16_MEMBER(tecmo16_state::scroll2_x_w)
|
||||
{
|
||||
COMBINE_DATA(&m_scroll2_x_w);
|
||||
m_bg_tilemap->set_scrollx(0,m_scroll2_x_w);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(tecmo16_state::tecmo16_scroll2_y_w)
|
||||
WRITE16_MEMBER(tecmo16_state::scroll2_y_w)
|
||||
{
|
||||
COMBINE_DATA(&m_scroll2_y_w);
|
||||
m_bg_tilemap->set_scrolly(0,m_scroll2_y_w);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(tecmo16_state::tecmo16_scroll_char_x_w)
|
||||
WRITE16_MEMBER(tecmo16_state::scroll_char_x_w)
|
||||
{
|
||||
COMBINE_DATA(&m_scroll_char_x_w);
|
||||
m_tx_tilemap->set_scrollx(0,m_scroll_char_x_w);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(tecmo16_state::tecmo16_scroll_char_y_w)
|
||||
WRITE16_MEMBER(tecmo16_state::scroll_char_y_w)
|
||||
{
|
||||
COMBINE_DATA(&m_scroll_char_y_w);
|
||||
m_tx_tilemap->set_scrolly(0,m_scroll_char_y_w-16);
|
||||
@ -195,7 +213,7 @@ WRITE16_MEMBER(tecmo16_state::tecmo16_scroll_char_y_w)
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
UINT32 tecmo16_state::screen_update_tecmo16(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
|
||||
UINT32 tecmo16_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
m_tile_bitmap_bg.fill(0, cliprect);
|
||||
m_tile_bitmap_fg.fill(0, cliprect);
|
||||
|
@ -27,8 +27,8 @@ TILEMAP_MAPPER_MEMBER(vball_state::background_scan)
|
||||
|
||||
TILE_GET_INFO_MEMBER(vball_state::get_bg_tile_info)
|
||||
{
|
||||
UINT8 code = m_vb_videoram[tile_index];
|
||||
UINT8 attr = m_vb_attribram[tile_index];
|
||||
UINT8 code = m_videoram[tile_index];
|
||||
UINT8 attr = m_attribram[tile_index];
|
||||
SET_TILE_INFO_MEMBER(0,
|
||||
code + ((attr & 0x1f) << 8) + (m_gfxset<<8),
|
||||
(attr >> 5) & 0x7,
|
||||
@ -42,63 +42,60 @@ void vball_state::video_start()
|
||||
|
||||
m_bg_tilemap->set_scroll_rows(32);
|
||||
m_gfxset=0;
|
||||
m_vb_bgprombank=0xff;
|
||||
m_vb_spprombank=0xff;
|
||||
m_bgprombank=0xff;
|
||||
m_spprombank=0xff;
|
||||
|
||||
save_item(NAME(m_scrollx_hi));
|
||||
save_item(NAME(m_scrolly_hi));
|
||||
save_item(NAME(m_scrollx_lo));
|
||||
save_item(NAME(m_gfxset));
|
||||
save_item(NAME(m_scrollx));
|
||||
save_item(NAME(m_bgprombank));
|
||||
save_item(NAME(m_spprombank));
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(vball_state::vb_videoram_w)
|
||||
WRITE8_MEMBER(vball_state::videoram_w)
|
||||
{
|
||||
m_vb_videoram[offset] = data;
|
||||
m_videoram[offset] = data;
|
||||
m_bg_tilemap->mark_tile_dirty(offset);
|
||||
}
|
||||
|
||||
#ifdef UNUSED_FUNCTION
|
||||
READ8_MEMBER(vball_state::vb_attrib_r)
|
||||
WRITE8_MEMBER(vball_state::attrib_w)
|
||||
{
|
||||
return m_vb_attribram[offset];
|
||||
}
|
||||
#endif
|
||||
|
||||
WRITE8_MEMBER(vball_state::vb_attrib_w)
|
||||
{
|
||||
m_vb_attribram[offset] = data;
|
||||
m_attribram[offset] = data;
|
||||
m_bg_tilemap->mark_tile_dirty(offset);
|
||||
}
|
||||
|
||||
void vball_state::vb_bgprombank_w( int bank )
|
||||
void vball_state::bgprombank_w( int bank )
|
||||
{
|
||||
int i;
|
||||
UINT8* color_prom;
|
||||
|
||||
if (bank==m_vb_bgprombank) return;
|
||||
if (bank==m_bgprombank) return;
|
||||
|
||||
color_prom = memregion("proms")->base() + bank*0x80;
|
||||
for (i=0;i<128;i++, color_prom++) {
|
||||
m_palette->set_pen_color(i,pal4bit(color_prom[0] >> 0),pal4bit(color_prom[0] >> 4),
|
||||
pal4bit(color_prom[0x800] >> 0));
|
||||
}
|
||||
m_vb_bgprombank=bank;
|
||||
m_bgprombank=bank;
|
||||
}
|
||||
|
||||
void vball_state::vb_spprombank_w( int bank )
|
||||
void vball_state::spprombank_w( int bank )
|
||||
{
|
||||
int i;
|
||||
UINT8* color_prom;
|
||||
|
||||
if (bank==m_vb_spprombank) return;
|
||||
if (bank==m_spprombank) return;
|
||||
|
||||
color_prom = memregion("proms")->base()+0x400 + bank*0x80;
|
||||
for (i=128;i<256;i++,color_prom++) {
|
||||
m_palette->set_pen_color(i,pal4bit(color_prom[0] >> 0),pal4bit(color_prom[0] >> 4),
|
||||
pal4bit(color_prom[0x800] >> 0));
|
||||
}
|
||||
m_vb_spprombank=bank;
|
||||
m_spprombank=bank;
|
||||
}
|
||||
|
||||
void vball_state::vb_mark_all_dirty( )
|
||||
{
|
||||
m_bg_tilemap->mark_all_dirty();
|
||||
}
|
||||
|
||||
#define DRAW_SPRITE( order, sx, sy ) gfx->transpen(bitmap,\
|
||||
cliprect, \
|
||||
@ -150,16 +147,16 @@ void vball_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
|
||||
#undef DRAW_SPRITE
|
||||
|
||||
UINT32 vball_state::screen_update_vb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
UINT32 vball_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
int i;
|
||||
|
||||
m_bg_tilemap->set_scrolly(0,m_vb_scrolly_hi + *m_vb_scrolly_lo);
|
||||
m_bg_tilemap->set_scrolly(0,m_scrolly_hi + *m_scrolly_lo);
|
||||
|
||||
/*To get linescrolling to work properly, we must ignore the 1st two scroll values, no idea why! -SJE */
|
||||
for (i = 2; i < 256; i++) {
|
||||
m_bg_tilemap->set_scrollx(i,m_vb_scrollx[i-2]);
|
||||
//logerror("scrollx[%d] = %d\n",i,m_vb_scrollx[i]);
|
||||
m_bg_tilemap->set_scrollx(i,m_scrollx[i-2]);
|
||||
//logerror("scrollx[%d] = %d\n",i,m_scrollx[i]);
|
||||
}
|
||||
m_bg_tilemap->draw(screen, bitmap, cliprect, 0,0);
|
||||
draw_sprites(bitmap,cliprect);
|
||||
|
Loading…
Reference in New Issue
Block a user