coleco: add m1 and soundchip waitstates

This commit is contained in:
hap 2025-02-08 15:05:53 +01:00
parent 3e84f5b071
commit a9699a223f
3 changed files with 34 additions and 34 deletions

View File

@ -345,7 +345,6 @@ static INPUT_PORTS_START( bit90 )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("CTRL") PORT_CODE(KEYCODE_LCONTROL)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("SPACE") PORT_CODE(KEYCODE_SPACE)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("FCTN") PORT_CODE(KEYCODE_RCONTROL)
INPUT_PORTS_END
/* Interrupts */
@ -575,6 +574,7 @@ void coleco_state::coleco(machine_config &config)
{
/* basic machine hardware */
Z80(config, m_maincpu, XTAL(7'159'090)/2); // 3.579545 MHz
m_maincpu->z80_set_m1_cycles(4+1); // 1 WAIT CLK per M1
m_maincpu->set_addrmap(AS_PROGRAM, &coleco_state::coleco_map);
m_maincpu->set_addrmap(AS_IO, &coleco_state::coleco_io_map);
@ -589,8 +589,7 @@ void coleco_state::coleco(machine_config &config)
SPEAKER(config, "mono").front_center();
sn76489a_device &psg(SN76489A(config, "sn76489a", XTAL(7'159'090)/2)); // 3.579545 MHz
psg.add_route(ALL_OUTPUTS, "mono", 1.00);
// TODO: enable when Z80 has better WAIT pin emulation, this currently breaks pitfall2 for example
//psg.ready_cb().set_inputline("maincpu", Z80_INPUT_LINE_WAIT).invert();
psg.ready_cb().set_inputline("maincpu", Z80_INPUT_LINE_WAIT).invert();
/* cartridge */
COLECOVISION_CARTRIDGE_SLOT(config, m_cart, colecovision_cartridges, nullptr);
@ -624,6 +623,7 @@ void bit90_state::bit90(machine_config &config)
{
/* basic machine hardware */
Z80(config, m_maincpu, XTAL(7'159'090)/2); // 3.579545 MHz
m_maincpu->z80_set_m1_cycles(4+1); // 1 WAIT CLK per M1
m_maincpu->set_addrmap(AS_PROGRAM, &bit90_state::bit90_map);
m_maincpu->set_addrmap(AS_IO, &bit90_state::bit90_io_map);
@ -638,8 +638,7 @@ void bit90_state::bit90(machine_config &config)
SPEAKER(config, "mono").front_center();
sn76489a_device &psg(SN76489A(config, "sn76489a", XTAL(7'159'090)/2)); // 3.579545 MHz
psg.add_route(ALL_OUTPUTS, "mono", 1.00);
// TODO: enable when Z80 has better WAIT pin emulation, this currently breaks pitfall2 for example
//psg.ready_cb().set_inputline("maincpu", Z80_INPUT_LINE_WAIT).invert();
psg.ready_cb().set_inputline("maincpu", Z80_INPUT_LINE_WAIT).invert();
/* cartridge */
COLECOVISION_CARTRIDGE_SLOT(config, m_cart, colecovision_cartridges, nullptr);

View File

@ -17,27 +17,27 @@
class coleco_state : public driver_device
{
public:
coleco_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_cart(*this, COLECOVISION_CARTRIDGE_SLOT_TAG),
m_ctrlsel(*this, "CTRLSEL"),
m_std_keypad1(*this, "STD_KEYPAD1"),
m_std_joy1(*this, "STD_JOY1"),
m_std_keypad2(*this, "STD_KEYPAD2"),
m_std_joy2(*this, "STD_JOY2"),
m_sac_keypad1(*this, "SAC_KEYPAD1"),
m_sac_joy1(*this, "SAC_JOY1"),
m_sac_slide1(*this, "SAC_SLIDE1"),
m_sac_keypad2(*this, "SAC_KEYPAD2"),
m_sac_joy2(*this, "SAC_JOY2"),
m_sac_slide2(*this, "SAC_SLIDE2"),
m_driv_wheel1(*this, "DRIV_WHEEL1"),
m_driv_pedal1(*this, "DRIV_PEDAL1"),
m_driv_wheel2(*this, "DRIV_WHEEL2"),
m_driv_pedal2(*this, "DRIV_PEDAL2"),
m_roller_x(*this, "ROLLER_X"),
m_roller_y(*this, "ROLLER_Y")
coleco_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_cart(*this, COLECOVISION_CARTRIDGE_SLOT_TAG),
m_ctrlsel(*this, "CTRLSEL"),
m_std_keypad1(*this, "STD_KEYPAD1"),
m_std_joy1(*this, "STD_JOY1"),
m_std_keypad2(*this, "STD_KEYPAD2"),
m_std_joy2(*this, "STD_JOY2"),
m_sac_keypad1(*this, "SAC_KEYPAD1"),
m_sac_joy1(*this, "SAC_JOY1"),
m_sac_slide1(*this, "SAC_SLIDE1"),
m_sac_keypad2(*this, "SAC_KEYPAD2"),
m_sac_joy2(*this, "SAC_JOY2"),
m_sac_slide2(*this, "SAC_SLIDE2"),
m_driv_wheel1(*this, "DRIV_WHEEL1"),
m_driv_pedal1(*this, "DRIV_PEDAL1"),
m_driv_wheel2(*this, "DRIV_WHEEL2"),
m_driv_pedal2(*this, "DRIV_PEDAL2"),
m_roller_x(*this, "ROLLER_X"),
m_roller_y(*this, "ROLLER_Y")
{ }
virtual void machine_start() override ATTR_COLD;
@ -67,8 +67,9 @@ public:
void coleco_io_map(address_map &map) ATTR_COLD;
void coleco_map(address_map &map) ATTR_COLD;
void czz50_map(address_map &map) ATTR_COLD;
protected:
required_device<cpu_device> m_maincpu;
required_device<z80_device> m_maincpu;
required_device<colecovision_cartridge_slot_device> m_cart;
int m_joy_mode = 0;
@ -106,12 +107,12 @@ protected:
class bit90_state : public coleco_state
{
public:
bit90_state(const machine_config &mconfig, device_type type, const char *tag)
: coleco_state(mconfig, type, tag),
m_bank(*this, "bank"),
m_ram(*this, RAM_TAG),
m_io_keyboard(*this, {"ROW0", "ROW1", "ROW2", "ROW3", "ROW4", "ROW5", "ROW6", "ROW7"})
{}
bit90_state(const machine_config &mconfig, device_type type, const char *tag) :
coleco_state(mconfig, type, tag),
m_bank(*this, "bank"),
m_ram(*this, RAM_TAG),
m_io_keyboard(*this, {"ROW0", "ROW1", "ROW2", "ROW3", "ROW4", "ROW5", "ROW6", "ROW7"})
{ }
virtual void machine_start() override ATTR_COLD;
virtual void machine_reset() override ATTR_COLD;

View File

@ -235,7 +235,7 @@ ROM_START( sjunior )
ROM_LOAD("1988_newcrest_614140ha27", 0x0000, 0x2000, CRC(9eb77d94) SHA1(84306ee39986847f9ae82a1117dc6fb8bd309bab) )
ROM_REGION( 57412, "screen", 0 )
ROM_LOAD("cpchess.svg", 0, 57412, CRC(7859b1ac) SHA1(518c5cd08fa8562628345e8e28048c01c9e4edd6) )
ROM_LOAD("pchess.svg", 0, 57412, CRC(7859b1ac) SHA1(518c5cd08fa8562628345e8e28048c01c9e4edd6) )
ROM_END
} // anonymous namespace