some cleanup + added coincounter

This commit is contained in:
Michaël Banaan Ananas 2011-12-30 22:15:42 +00:00
parent ddfbf37eac
commit 9537f6c091

View File

@ -27,26 +27,13 @@
#include "includes/kyugo.h" #include "includes/kyugo.h"
/*************************************
*
* Memory handlers
*
*************************************/
static WRITE8_HANDLER( kyugo_sub_cpu_control_w )
{
kyugo_state *state = space->machine().driver_data<kyugo_state>();
device_set_input_line(state->m_subcpu, INPUT_LINE_HALT, data ? CLEAR_LINE : ASSERT_LINE);
}
/************************************* /*************************************
* *
* Main CPU memory handlers * Main CPU memory handlers
* *
*************************************/ *************************************/
static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8 ) static ADDRESS_MAP_START( kyugo_main_map, AS_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(kyugo_bgvideoram_w) AM_BASE_MEMBER(kyugo_state, m_bgvideoram) AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(kyugo_bgvideoram_w) AM_BASE_MEMBER(kyugo_state, m_bgvideoram)
AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(kyugo_bgattribram_w) AM_BASE_MEMBER(kyugo_state, m_bgattribram) AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(kyugo_bgattribram_w) AM_BASE_MEMBER(kyugo_state, m_bgattribram)
@ -67,25 +54,25 @@ ADDRESS_MAP_END
* *
*************************************/ *************************************/
static WRITE8_HANDLER( nmi_mask_w ) static WRITE8_HANDLER( kyugo_nmi_mask_w )
{ {
kyugo_state *state = space->machine().driver_data<kyugo_state>(); kyugo_state *state = space->machine().driver_data<kyugo_state>();
state->m_nmi_mask = data & 1; state->m_nmi_mask = data & 1;
} }
#define Main_PortMap( name, base ) \ static WRITE8_HANDLER( kyugo_sub_cpu_control_w )
static ADDRESS_MAP_START( name##_portmap, AS_IO, 8 ) \ {
ADDRESS_MAP_GLOBAL_MASK(0xff) \ kyugo_state *state = space->machine().driver_data<kyugo_state>();
AM_RANGE(base+0, base+0) AM_WRITE(nmi_mask_w) \ device_set_input_line(state->m_subcpu, INPUT_LINE_HALT, data ? CLEAR_LINE : ASSERT_LINE);
AM_RANGE(base+1, base+1) AM_WRITE(kyugo_flipscreen_w) \ }
AM_RANGE(base+2, base+2) AM_WRITE(kyugo_sub_cpu_control_w) \
ADDRESS_MAP_END
Main_PortMap( gyrodine, 0x00 ) static ADDRESS_MAP_START( kyugo_main_portmap, AS_IO, 8 )
Main_PortMap( flashgal, 0x40 ) ADDRESS_MAP_GLOBAL_MASK(0x07)
Main_PortMap( flashgala, 0xc0 ) AM_RANGE(0x00, 0x00) AM_WRITE(kyugo_nmi_mask_w)
Main_PortMap( srdmissn, 0x08 ) AM_RANGE(0x01, 0x01) AM_WRITE(kyugo_flipscreen_w)
AM_RANGE(0x02, 0x02) AM_WRITE(kyugo_sub_cpu_control_w)
ADDRESS_MAP_END
@ -95,20 +82,49 @@ Main_PortMap( srdmissn, 0x08 )
* *
*************************************/ *************************************/
#define Sub_MemMap( name, rom_end, shared, in0, in1, in2 ) \ static ADDRESS_MAP_START( gyrodine_sub_map, AS_PROGRAM, 8 )
static ADDRESS_MAP_START( name##_sub_map, AS_PROGRAM, 8 ) \ AM_RANGE(0x0000, 0x1fff) AM_ROM
AM_RANGE(0x0000, rom_end) AM_ROM \ AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("share1")
AM_RANGE(shared, shared+0x7ff) AM_RAM AM_SHARE("share1") \ AM_RANGE(0x8000, 0x8000) AM_READ_PORT("P2")
AM_RANGE(in0, in0) AM_READ_PORT("SYSTEM") \ AM_RANGE(0x8040, 0x8040) AM_READ_PORT("P1")
AM_RANGE(in1, in1) AM_READ_PORT("P1") \ AM_RANGE(0x8080, 0x8080) AM_READ_PORT("SYSTEM")
AM_RANGE(in2, in2) AM_READ_PORT("P2") \
ADDRESS_MAP_END ADDRESS_MAP_END
Sub_MemMap( gyrodine, 0x1fff, 0x4000, 0x8080, 0x8040, 0x8000 )
Sub_MemMap( repulse, 0x7fff, 0xa000, 0xc080, 0xc040, 0xc000 ) static ADDRESS_MAP_START( repulse_sub_map, AS_PROGRAM, 8 )
Sub_MemMap( srdmissn, 0x7fff, 0x8000, 0xf400, 0xf401, 0xf402 ) AM_RANGE(0x0000, 0x7fff) AM_ROM
Sub_MemMap( legend, 0x7fff, 0xc000, 0xf800, 0xf801, 0xf802 ) AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_SHARE("share1")
Sub_MemMap( flashgala,0x7fff, 0xe000, 0xc040, 0xc080, 0xc0c0 ) AM_RANGE(0xc000, 0xc000) AM_READ_PORT("P2")
AM_RANGE(0xc040, 0xc040) AM_READ_PORT("P1")
AM_RANGE(0xc080, 0xc080) AM_READ_PORT("SYSTEM")
ADDRESS_MAP_END
static ADDRESS_MAP_START( srdmissn_sub_map, AS_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("share1")
AM_RANGE(0xf400, 0xf400) AM_READ_PORT("SYSTEM")
AM_RANGE(0xf401, 0xf401) AM_READ_PORT("P1")
AM_RANGE(0xf402, 0xf402) AM_READ_PORT("P2")
ADDRESS_MAP_END
static ADDRESS_MAP_START( legend_sub_map, AS_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("share1")
AM_RANGE(0xf800, 0xf800) AM_READ_PORT("SYSTEM")
AM_RANGE(0xf801, 0xf801) AM_READ_PORT("P1")
AM_RANGE(0xf802, 0xf802) AM_READ_PORT("P2")
ADDRESS_MAP_END
static ADDRESS_MAP_START( flashgala_sub_map, AS_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0xc040, 0xc040) AM_READ_PORT("SYSTEM")
AM_RANGE(0xc080, 0xc080) AM_READ_PORT("P1")
AM_RANGE(0xc0c0, 0xc0c0) AM_READ_PORT("P2")
AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("share1")
ADDRESS_MAP_END
@ -118,18 +134,45 @@ Sub_MemMap( flashgala,0x7fff, 0xe000, 0xc040, 0xc080, 0xc0c0 )
* *
*************************************/ *************************************/
#define Sub_PortMap( name, ay0_base, ay1_base ) \ static WRITE8_HANDLER( kyugo_coin_counter_w )
static ADDRESS_MAP_START( name##_sub_portmap, AS_IO, 8 ) \ {
ADDRESS_MAP_GLOBAL_MASK(0xff) \ coin_counter_w(space->machine(), offset, data & 1);
AM_RANGE(ay0_base+0, ay0_base+1) AM_DEVWRITE("ay1", ay8910_address_data_w) \ }
AM_RANGE(ay0_base+2, ay0_base+2) AM_DEVREAD("ay1", ay8910_r) \
AM_RANGE(ay1_base+0, ay1_base+1) AM_DEVWRITE("ay2", ay8910_address_data_w) \ static ADDRESS_MAP_START( gyrodine_sub_portmap, AS_IO, 8 )
ADDRESS_MAP_END \ ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ay8910_address_data_w)
AM_RANGE(0x02, 0x02) AM_DEVREAD("ay1", ay8910_r)
AM_RANGE(0xc0, 0xc1) AM_DEVWRITE("ay2", ay8910_address_data_w)
ADDRESS_MAP_END
static ADDRESS_MAP_START( repulse_sub_portmap, AS_IO, 8 )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ay8910_address_data_w)
AM_RANGE(0x02, 0x02) AM_DEVREAD("ay1", ay8910_r)
AM_RANGE(0x40, 0x41) AM_DEVWRITE("ay2", ay8910_address_data_w)
AM_RANGE(0xc0, 0xc1) AM_WRITE(kyugo_coin_counter_w)
ADDRESS_MAP_END
static ADDRESS_MAP_START( flashgala_sub_portmap, AS_IO, 8 )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x40, 0x41) AM_DEVWRITE("ay1", ay8910_address_data_w)
AM_RANGE(0x42, 0x42) AM_DEVREAD("ay1", ay8910_r)
AM_RANGE(0x80, 0x81) AM_DEVWRITE("ay2", ay8910_address_data_w)
AM_RANGE(0xc0, 0xc1) AM_WRITE(kyugo_coin_counter_w)
ADDRESS_MAP_END
static ADDRESS_MAP_START( srdmissn_sub_portmap, AS_IO, 8 )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x80, 0x81) AM_DEVWRITE("ay1", ay8910_address_data_w)
AM_RANGE(0x82, 0x82) AM_DEVREAD("ay1", ay8910_r)
AM_RANGE(0x84, 0x85) AM_DEVWRITE("ay2", ay8910_address_data_w)
AM_RANGE(0x90, 0x91) AM_WRITE(kyugo_coin_counter_w)
ADDRESS_MAP_END
Sub_PortMap( gyrodine, 0x00, 0xc0 )
Sub_PortMap( repulse, 0x00, 0x40 )
Sub_PortMap( srdmissn, 0x80, 0x84 )
Sub_PortMap( flashgala,0x40, 0x80 )
/************************************* /*************************************
@ -497,8 +540,8 @@ static MACHINE_CONFIG_START( gyrodine, kyugo_state )
/* basic machine hardware */ /* basic machine hardware */
MCFG_CPU_ADD("maincpu", Z80, XTAL_18_432MHz/6) /* verified on pcb */ MCFG_CPU_ADD("maincpu", Z80, XTAL_18_432MHz/6) /* verified on pcb */
MCFG_CPU_PROGRAM_MAP(main_map) MCFG_CPU_PROGRAM_MAP(kyugo_main_map)
MCFG_CPU_IO_MAP(gyrodine_portmap) MCFG_CPU_IO_MAP(kyugo_main_portmap)
MCFG_CPU_VBLANK_INT("screen", vblank_irq) MCFG_CPU_VBLANK_INT("screen", vblank_irq)
MCFG_CPU_ADD("sub", Z80, XTAL_18_432MHz/6) /* verified on pcb */ MCFG_CPU_ADD("sub", Z80, XTAL_18_432MHz/6) /* verified on pcb */
@ -548,27 +591,14 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( srdmissn, gyrodine ) static MACHINE_CONFIG_DERIVED( srdmissn, gyrodine )
/* basic machine hardware */ /* basic machine hardware */
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_IO_MAP(srdmissn_portmap)
MCFG_CPU_MODIFY("sub") MCFG_CPU_MODIFY("sub")
MCFG_CPU_PROGRAM_MAP(srdmissn_sub_map) MCFG_CPU_PROGRAM_MAP(srdmissn_sub_map)
MCFG_CPU_IO_MAP(srdmissn_sub_portmap) MCFG_CPU_IO_MAP(srdmissn_sub_portmap)
MACHINE_CONFIG_END MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( flashgal, repulse )
/* basic machine hardware */
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_IO_MAP(flashgal_portmap)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( flashgala, gyrodine ) static MACHINE_CONFIG_DERIVED( flashgala, gyrodine )
/* basic machine hardware */ /* basic machine hardware */
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_IO_MAP(flashgala_portmap)
MCFG_CPU_MODIFY("sub") MCFG_CPU_MODIFY("sub")
MCFG_CPU_PROGRAM_MAP(flashgala_sub_map) MCFG_CPU_PROGRAM_MAP(flashgala_sub_map)
MCFG_CPU_IO_MAP(flashgala_sub_portmap) MCFG_CPU_IO_MAP(flashgala_sub_portmap)
@ -1378,7 +1408,7 @@ GAME( 1985, 99lstwar, repulse, repulse, repulse, 0, ROT90, "Sega (Pro
GAME( 1985, 99lstwara, repulse, repulse, repulse, 0, ROT90, "Sega (Proma license)", "'99: The Last War (alternate)", GAME_SUPPORTS_SAVE ) GAME( 1985, 99lstwara, repulse, repulse, repulse, 0, ROT90, "Sega (Proma license)", "'99: The Last War (alternate)", GAME_SUPPORTS_SAVE )
GAME( 1985, 99lstwark, repulse, repulse, repulse, 0, ROT90, "Sega (Kyugo license)", "'99: The Last War (Kyugo)", GAME_SUPPORTS_SAVE ) GAME( 1985, 99lstwark, repulse, repulse, repulse, 0, ROT90, "Sega (Kyugo license)", "'99: The Last War (Kyugo)", GAME_SUPPORTS_SAVE )
GAME( 1985, sonofphx, repulse, repulse, repulse, 0, ROT90, "bootleg (Associated Overseas MFR, Inc)", "Son of Phoenix", GAME_SUPPORTS_SAVE ) GAME( 1985, sonofphx, repulse, repulse, repulse, 0, ROT90, "bootleg (Associated Overseas MFR, Inc)", "Son of Phoenix", GAME_SUPPORTS_SAVE )
GAME( 1985, flashgal, 0, flashgal, flashgal, 0, ROT0, "Sega", "Flashgal (set 1)", GAME_SUPPORTS_SAVE ) GAME( 1985, flashgal, 0, repulse, flashgal, 0, ROT0, "Sega", "Flashgal (set 1)", GAME_SUPPORTS_SAVE )
GAME( 1985, flashgala, flashgal, flashgala,flashgal, 0, ROT0, "Sega", "Flashgal (set 2)", GAME_SUPPORTS_SAVE ) GAME( 1985, flashgala, flashgal, flashgala,flashgal, 0, ROT0, "Sega", "Flashgal (set 2)", GAME_SUPPORTS_SAVE )
GAME( 1986, srdmissn, 0, srdmissn, srdmissn, srdmissn, ROT90, "Taito Corporation", "S.R.D. Mission", GAME_SUPPORTS_SAVE ) GAME( 1986, srdmissn, 0, srdmissn, srdmissn, srdmissn, ROT90, "Taito Corporation", "S.R.D. Mission", GAME_SUPPORTS_SAVE )
GAME( 1986, fx, srdmissn, srdmissn, srdmissn, srdmissn, ROT90, "bootleg", "F-X", GAME_SUPPORTS_SAVE ) GAME( 1986, fx, srdmissn, srdmissn, srdmissn, srdmissn, ROT90, "bootleg", "F-X", GAME_SUPPORTS_SAVE )