diff --git a/src/mame/drivers/seattle.cpp b/src/mame/drivers/seattle.cpp index 395b7cfd0fd..7001adeca76 100644 --- a/src/mame/drivers/seattle.cpp +++ b/src/mame/drivers/seattle.cpp @@ -194,6 +194,9 @@ #include "machine/smc91c9x.h" #include "video/voodoo.h" #include "machine/nvram.h" +#include "calspeed.lh" +#include "vaportrx.lh" +#include "hyprdriv.lh" @@ -368,6 +371,7 @@ /* Widget registers */ #define WREG_ETHER_ADDR (0x00/4) #define WREG_INTERRUPT (0x04/4) +#define WREG_OUTPUT (0x0C/4) #define WREG_ANALOG (0x10/4) #define WREG_ETHER_DATA (0x14/4) @@ -469,6 +473,8 @@ public: UINT8 m_pending_analog_read; UINT8 m_status_leds; UINT32 m_cmos_write_enabled; + UINT32 m_output; + UINT8 m_output_mode; DECLARE_READ32_MEMBER(interrupt_state_r); DECLARE_READ32_MEMBER(interrupt_state2_r); DECLARE_WRITE32_MEMBER(interrupt_config_w); @@ -492,6 +498,8 @@ public: DECLARE_WRITE32_MEMBER(status_leds_w); DECLARE_READ32_MEMBER(ethernet_r); DECLARE_WRITE32_MEMBER(ethernet_w); + DECLARE_READ32_MEMBER(output_r); + DECLARE_WRITE32_MEMBER(output_w); DECLARE_READ32_MEMBER(widget_r); DECLARE_WRITE32_MEMBER(widget_w); DECLARE_READ32_MEMBER(seattle_ide_r); @@ -599,6 +607,8 @@ void seattle_state::machine_start() save_item(NAME(m_pending_analog_read)); save_item(NAME(m_status_leds)); save_item(NAME(m_cmos_write_enabled)); + save_item(NAME(m_output)); + save_item(NAME(m_output_mode)); } @@ -1563,6 +1573,50 @@ void seattle_state::update_widget_irq() } +READ32_MEMBER(seattle_state::output_r) +{ + return m_output; +} + + +WRITE32_MEMBER(seattle_state::output_w) +{ + UINT8 op = (data >> 8) & 0xF; + UINT8 arg = data & 0xFF; + + switch (op) + { + default: + logerror("Unknown output (%02X) = %02X\n", op, arg); + break; + + case 0xF: break; // sync/security wrapper commands. arg matches the wrapped command. + + case 0x7: + m_output_mode = arg; + break; + + case 0xB: + switch (m_output_mode) + { + default: + logerror("Unknown output with mode (%02X) = %02X\n", m_output_mode, arg); + break; + + case 0x04: + output().set_value("wheel", arg); // wheel motor delta. signed byte. + break; + + case 0x05: + for (UINT8 bit = 0; bit < 8; bit++) + output().set_lamp_value(bit, (arg >> bit) & 0x1); + break; + } + break; + } +} + + READ32_MEMBER(seattle_state::widget_r) { UINT32 result = ~0; @@ -1577,6 +1631,10 @@ READ32_MEMBER(seattle_state::widget_r) result = m_ethernet_irq_state << WINT_ETHERNET_SHIFT; result = ~result; break; + + case WREG_OUTPUT: + result = output_r(m_maincpu->space(AS_PROGRAM), 0, mem_mask); + break; case WREG_ANALOG: result = analog_port_r(m_maincpu->space(AS_PROGRAM), 0, mem_mask); @@ -1608,6 +1666,10 @@ WRITE32_MEMBER(seattle_state::widget_w) m_widget.irq_mask = data; update_widget_irq(); break; + + case WREG_OUTPUT: + output_w(m_maincpu->space(AS_PROGRAM), 0, data, mem_mask); + break; case WREG_ANALOG: analog_port_w(m_maincpu->space(AS_PROGRAM), 0, data, mem_mask); @@ -3231,14 +3293,14 @@ GAME( 1996, mace, 0, mace, mace, seattle_state, mace GAME( 1997, macea, mace, mace, mace, seattle_state, mace, ROT0, "Atari Games", "Mace: The Dark Age (HDD 1.0a)", MACHINE_SUPPORTS_SAVE ) GAME( 1996, sfrush, 0, sfrush, sfrush, seattle_state, sfrush, ROT0, "Atari Games", "San Francisco Rush", MACHINE_SUPPORTS_SAVE ) GAME( 1996, sfrushrk, 0, sfrushrk, sfrushrk, seattle_state, sfrushrk, ROT0, "Atari Games", "San Francisco Rush: The Rock", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -GAME( 1998, calspeed, 0, calspeed, calspeed, seattle_state, calspeed, ROT0, "Atari Games", "California Speed (Version 2.1a Apr 17 1998, GUTS 1.25 Apr 17 1998 / MAIN Apr 17 1998)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, calspeeda,calspeed, calspeed, calspeed, seattle_state, calspeed, ROT0, "Atari Games", "California Speed (Version 1.0r8 Mar 10 1998, GUTS Mar 10 1998 / MAIN Mar 10 1998)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, calspeedb,calspeed, calspeed, calspeed, seattle_state, calspeed, ROT0, "Atari Games", "California Speed (Version 1.0r7a Mar 4 1998, GUTS Mar 3 1998 / MAIN Jan 19 1998)", MACHINE_SUPPORTS_SAVE ) +GAMEL( 1998, calspeed, 0, calspeed, calspeed, seattle_state, calspeed, ROT0, "Atari Games", "California Speed (Version 2.1a Apr 17 1998, GUTS 1.25 Apr 17 1998 / MAIN Apr 17 1998)", MACHINE_SUPPORTS_SAVE, layout_calspeed ) +GAMEL( 1998, calspeeda,calspeed, calspeed, calspeed, seattle_state, calspeed, ROT0, "Atari Games", "California Speed (Version 1.0r8 Mar 10 1998, GUTS Mar 10 1998 / MAIN Mar 10 1998)", MACHINE_SUPPORTS_SAVE, layout_calspeed ) +GAMEL( 1998, calspeedb,calspeed, calspeed, calspeed, seattle_state, calspeed, ROT0, "Atari Games", "California Speed (Version 1.0r7a Mar 4 1998, GUTS Mar 3 1998 / MAIN Jan 19 1998)", MACHINE_SUPPORTS_SAVE, layout_calspeed ) -GAME( 1998, vaportrx, 0, vaportrx, vaportrx, seattle_state, vaportrx, ROT0, "Atari Games", "Vapor TRX", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, vaportrxp,vaportrx, vaportrx, vaportrx, seattle_state, vaportrx, ROT0, "Atari Games", "Vapor TRX (prototype)", MACHINE_SUPPORTS_SAVE ) +GAMEL( 1998, vaportrx, 0, vaportrx, vaportrx, seattle_state, vaportrx, ROT0, "Atari Games", "Vapor TRX", MACHINE_SUPPORTS_SAVE, layout_vaportrx ) +GAMEL( 1998, vaportrxp,vaportrx, vaportrx, vaportrx, seattle_state, vaportrx, ROT0, "Atari Games", "Vapor TRX (prototype)", MACHINE_SUPPORTS_SAVE, layout_vaportrx ) /* Midway */ GAME( 1997, biofreak, 0, biofreak, biofreak, seattle_state, biofreak, ROT0, "Midway Games", "BioFreaks (prototype)", MACHINE_SUPPORTS_SAVE ) @@ -3249,4 +3311,4 @@ GAME( 1998, blitz99a, blitz99, blitz99, blitz99, seattle_state, blit GAME( 1999, blitz2k, 0, blitz2k, blitz99, seattle_state, blitz2k, ROT0, "Midway Games", "NFL Blitz 2000 Gold Edition (ver 1.2, Sep 22 1999)", MACHINE_SUPPORTS_SAVE ) GAME( 1998, carnevil, 0, carnevil, carnevil, seattle_state, carnevil, ROT0, "Midway Games", "CarnEvil (v1.0.3)", MACHINE_SUPPORTS_SAVE ) GAME( 1998, carnevil1,carnevil, carnevil, carnevil, seattle_state, carnevil, ROT0, "Midway Games", "CarnEvil (v1.0.1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, hyprdriv, 0, hyprdriv, hyprdriv, seattle_state, hyprdriv, ROT0, "Midway Games", "Hyperdrive", MACHINE_SUPPORTS_SAVE ) +GAMEL( 1998, hyprdriv, 0, hyprdriv, hyprdriv, seattle_state, hyprdriv, ROT0, "Midway Games", "Hyperdrive", MACHINE_SUPPORTS_SAVE, layout_hyprdriv ) diff --git a/src/mame/layout/calspeed.lay b/src/mame/layout/calspeed.lay new file mode 100644 index 00000000000..9e6ce650f40 --- /dev/null +++ b/src/mame/layout/calspeed.lay @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mame/layout/hyprdriv.lay b/src/mame/layout/hyprdriv.lay new file mode 100644 index 00000000000..03e3ad9513e --- /dev/null +++ b/src/mame/layout/hyprdriv.lay @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mame/layout/vaportrx.lay b/src/mame/layout/vaportrx.lay new file mode 100644 index 00000000000..d93ee1db645 --- /dev/null +++ b/src/mame/layout/vaportrx.lay @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +