mirror of
https://github.com/holub/mame
synced 2025-04-22 16:31:49 +03:00
SPECTRA - more wip
This commit is contained in:
parent
66a083daaf
commit
2a4429912c
@ -43,6 +43,8 @@ protected:
|
||||
// driver_device overrides
|
||||
virtual void machine_reset();
|
||||
private:
|
||||
UINT8 m_porta;
|
||||
UINT8 m_portb;
|
||||
UINT8 m_t_c;
|
||||
UINT8 m_out_offs;
|
||||
};
|
||||
@ -58,6 +60,44 @@ static ADDRESS_MAP_START( spectra_map, AS_PROGRAM, 8, spectra_state )
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static INPUT_PORTS_START( spectra )
|
||||
PORT_START("X0")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_OTHER)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_OTHER)
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_OTHER)
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_OTHER)
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_OTHER)
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_OTHER)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_OTHER)
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_OTHER)
|
||||
PORT_START("X1")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_OTHER)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_OTHER)
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_OTHER)
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_OTHER)
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_OTHER)
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_OTHER)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_OTHER)
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_OTHER)
|
||||
PORT_START("X2")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_OTHER)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_OTHER)
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_OTHER)
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_OTHER)
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_OTHER)
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_OTHER)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_OTHER)
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_OTHER)
|
||||
PORT_START("X3")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_OTHER)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_OTHER)
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_OTHER)
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_COIN1)
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_START1)
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_TILT)
|
||||
PORT_DIPNAME( 0x60, 0x60, "Test Switch" ) // 3-position slide switch
|
||||
PORT_DIPSETTING( 0x60, "Play" )
|
||||
PORT_DIPSETTING( 0x20, "Setup" )
|
||||
PORT_DIPSETTING( 0x40, "Test" )
|
||||
INPUT_PORTS_END
|
||||
|
||||
void spectra_state::machine_reset()
|
||||
@ -66,21 +106,30 @@ void spectra_state::machine_reset()
|
||||
}
|
||||
|
||||
READ8_MEMBER( spectra_state::porta_r )
|
||||
{printf("ReadA ");
|
||||
return 0;
|
||||
{
|
||||
char kbdrow[6];
|
||||
sprintf(kbdrow,"X%X",(m_porta & 0x18) >> 3);
|
||||
UINT8 data = ioport(kbdrow)->read();
|
||||
return ((BIT(data, m_porta & 7)) ? 0x40 : 0) | (m_porta & 0xbf);
|
||||
}
|
||||
|
||||
READ8_MEMBER( spectra_state::portb_r )
|
||||
{printf("ReadB ");
|
||||
return 0x5a;
|
||||
{
|
||||
if (m_p_ram[0xf0] != 1)
|
||||
return 0x5a; // factory reset if first time
|
||||
else
|
||||
return m_portb;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( spectra_state::porta_w )
|
||||
{printf("A=%X ",data);
|
||||
{
|
||||
m_porta = data;
|
||||
}
|
||||
|
||||
// sound port
|
||||
WRITE8_MEMBER( spectra_state::portb_w )
|
||||
{printf("B=%X ",data);
|
||||
{
|
||||
m_portb = data;
|
||||
}
|
||||
|
||||
|
||||
@ -101,13 +150,20 @@ TIMER_DEVICE_CALLBACK_MEMBER( spectra_state::nmitimer)
|
||||
m_t_c++;
|
||||
}
|
||||
|
||||
// 00-27 displays
|
||||
// 40-6F lamps
|
||||
// 70-7F solenoids (73=outhole) no knocker
|
||||
TIMER_DEVICE_CALLBACK_MEMBER( spectra_state::outtimer)
|
||||
{
|
||||
static const UINT8 patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x38, 0x63, 0x01, 0x40, 0x08, 0 }; // 74C912
|
||||
static const UINT8 patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x5c, 0x63, 0x01, 0x40, 0x08, 0 }; // 74C912
|
||||
m_out_offs++;
|
||||
|
||||
if (m_out_offs < 0x28)
|
||||
output_set_digit_value(m_out_offs, patterns[m_p_ram[m_out_offs]&15]);
|
||||
{
|
||||
UINT8 data = m_p_ram[m_out_offs];
|
||||
UINT8 segments = patterns[data&15] | (BIT(data, 4) ? 0x80 : 0);
|
||||
output_set_digit_value(m_out_offs, segments);
|
||||
}
|
||||
else
|
||||
m_out_offs = 0xff;
|
||||
}
|
||||
@ -117,7 +173,7 @@ static MACHINE_CONFIG_START( spectra, spectra_state )
|
||||
MCFG_CPU_ADD("maincpu", M6502, 3579545/4) // actually a 6503
|
||||
MCFG_CPU_PROGRAM_MAP(spectra_map)
|
||||
MCFG_RIOT6532_ADD("riot", 3579545/4, riot6532_intf) // R6532
|
||||
MCFG_NVRAM_ADD_0FILL("ram")
|
||||
MCFG_NVRAM_ADD_1FILL("ram")
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("nmitimer", spectra_state, nmitimer, attotime::from_hz(120))
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("outtimer", spectra_state, outtimer, attotime::from_hz(1200))
|
||||
|
||||
|
@ -34,102 +34,102 @@
|
||||
|
||||
<!-- Player 1 Score -->
|
||||
|
||||
<bezel name="digit32" element="digit">
|
||||
<bezel name="digit24" element="digit">
|
||||
<bounds left="10" top="45" right="44" bottom="84" />
|
||||
</bezel>
|
||||
<bezel name="digit33" element="digit">
|
||||
<bezel name="digit25" element="digit">
|
||||
<bounds left="54" top="45" right="88" bottom="84" />
|
||||
</bezel>
|
||||
<bezel name="digit34" element="digit">
|
||||
<bezel name="digit26" element="digit">
|
||||
<bounds left="98" top="45" right="132" bottom="84" />
|
||||
</bezel>
|
||||
<bezel name="digit35" element="digit">
|
||||
<bezel name="digit27" element="digit">
|
||||
<bounds left="142" top="45" right="176" bottom="84" />
|
||||
</bezel>
|
||||
<bezel name="digit36" element="digit">
|
||||
<bezel name="digit28" element="digit">
|
||||
<bounds left="186" top="45" right="220" bottom="84" />
|
||||
</bezel>
|
||||
<bezel name="digit37" element="digit">
|
||||
<bezel name="digit29" element="digit">
|
||||
<bounds left="230" top="45" right="264" bottom="84" />
|
||||
</bezel>
|
||||
|
||||
<!-- Player 2 Score -->
|
||||
<bezel name="digit24" element="digit">
|
||||
<bezel name="digit16" element="digit">
|
||||
<bounds left="10" top="105" right="44" bottom="144" />
|
||||
</bezel>
|
||||
<bezel name="digit25" element="digit">
|
||||
<bezel name="digit17" element="digit">
|
||||
<bounds left="54" top="105" right="88" bottom="144" />
|
||||
</bezel>
|
||||
<bezel name="digit26" element="digit">
|
||||
<bezel name="digit18" element="digit">
|
||||
<bounds left="98" top="105" right="132" bottom="144" />
|
||||
</bezel>
|
||||
<bezel name="digit27" element="digit">
|
||||
<bezel name="digit19" element="digit">
|
||||
<bounds left="142" top="105" right="176" bottom="144" />
|
||||
</bezel>
|
||||
<bezel name="digit28" element="digit">
|
||||
<bezel name="digit20" element="digit">
|
||||
<bounds left="186" top="105" right="220" bottom="144" />
|
||||
</bezel>
|
||||
<bezel name="digit29" element="digit">
|
||||
<bezel name="digit21" element="digit">
|
||||
<bounds left="230" top="105" right="264" bottom="144" />
|
||||
</bezel>
|
||||
|
||||
<!-- Player 3 Score -->
|
||||
<bezel name="digit16" element="digit">
|
||||
<bezel name="digit8" element="digit">
|
||||
<bounds left="10" top="165" right="44" bottom="204" />
|
||||
</bezel>
|
||||
<bezel name="digit17" element="digit">
|
||||
<bezel name="digit9" element="digit">
|
||||
<bounds left="54" top="165" right="88" bottom="204" />
|
||||
</bezel>
|
||||
<bezel name="digit18" element="digit">
|
||||
<bezel name="digit10" element="digit">
|
||||
<bounds left="98" top="165" right="132" bottom="204" />
|
||||
</bezel>
|
||||
<bezel name="digit19" element="digit">
|
||||
<bezel name="digit11" element="digit">
|
||||
<bounds left="142" top="165" right="176" bottom="204" />
|
||||
</bezel>
|
||||
<bezel name="digit20" element="digit">
|
||||
<bezel name="digit12" element="digit">
|
||||
<bounds left="186" top="165" right="220" bottom="204" />
|
||||
</bezel>
|
||||
<bezel name="digit21" element="digit">
|
||||
<bezel name="digit13" element="digit">
|
||||
<bounds left="230" top="165" right="264" bottom="204" />
|
||||
</bezel>
|
||||
|
||||
<!-- Player 4 Score -->
|
||||
<bezel name="digit8" element="digit">
|
||||
<bezel name="digit0" element="digit">
|
||||
<bounds left="10" top="225" right="44" bottom="264" />
|
||||
</bezel>
|
||||
<bezel name="digit9" element="digit">
|
||||
<bezel name="digit1" element="digit">
|
||||
<bounds left="54" top="225" right="88" bottom="264" />
|
||||
</bezel>
|
||||
<bezel name="digit10" element="digit">
|
||||
<bezel name="digit2" element="digit">
|
||||
<bounds left="98" top="225" right="132" bottom="264" />
|
||||
</bezel>
|
||||
<bezel name="digit11" element="digit">
|
||||
<bezel name="digit3" element="digit">
|
||||
<bounds left="142" top="225" right="176" bottom="264" />
|
||||
</bezel>
|
||||
<bezel name="digit12" element="digit">
|
||||
<bezel name="digit4" element="digit">
|
||||
<bounds left="186" top="225" right="220" bottom="264" />
|
||||
</bezel>
|
||||
<bezel name="digit13" element="digit">
|
||||
<bezel name="digit5" element="digit">
|
||||
<bounds left="230" top="225" right="264" bottom="264" />
|
||||
</bezel>
|
||||
|
||||
<!-- Credits and Balls -->
|
||||
<bezel name="digit0" element="digit">
|
||||
<bezel name="digit32" element="digit">
|
||||
<bounds left="10" top="345" right="44" bottom="384" />
|
||||
</bezel>
|
||||
<bezel name="digit1" element="digit">
|
||||
<bezel name="digit33" element="digit">
|
||||
<bounds left="54" top="345" right="88" bottom="384" />
|
||||
</bezel>
|
||||
<bezel name="digit2" element="digit">
|
||||
<bezel name="digit34" element="digit">
|
||||
<bounds left="98" top="345" right="132" bottom="384" />
|
||||
</bezel>
|
||||
<bezel name="digit3" element="digit">
|
||||
<bezel name="digit35" element="digit">
|
||||
<bounds left="142" top="345" right="176" bottom="384" />
|
||||
</bezel>
|
||||
<bezel name="digit4" element="digit">
|
||||
<bezel name="digit36" element="digit">
|
||||
<bounds left="186" top="345" right="220" bottom="384" />
|
||||
</bezel>
|
||||
<bezel name="digit5" element="digit">
|
||||
<bezel name="digit37" element="digit">
|
||||
<bounds left="230" top="345" right="264" bottom="384" />
|
||||
</bezel>
|
||||
<bezel element="P0"><bounds left="200" right="258" top="330" bottom="342" /></bezel>
|
||||
|
Loading…
Reference in New Issue
Block a user