misc: change ticket MOTOR_ACTIVE_LOW to HIGH

This commit is contained in:
hap 2024-09-09 15:08:07 +02:00
parent 8b8ca99607
commit b68c96e6c7
14 changed files with 124 additions and 122 deletions

View File

@ -54,7 +54,7 @@ ticket_dispenser_device::ticket_dispenser_device(const machine_config &mconfig,
, m_power(0) , m_power(0)
, m_timer(nullptr) , m_timer(nullptr)
, m_output(*this, tag) // TODO: change to "tag:status" , m_output(*this, tag) // TODO: change to "tag:status"
, m_dispense_handler(*this) // TODO: can we use m_output for this? , m_dispense_handler(*this)
{ {
} }

View File

@ -1,13 +1,13 @@
// license:BSD-3-Clause // license:BSD-3-Clause
// copyright-holders:hap // copyright-holders:hap
/******************************************************************************* /*
Fidelity Electronics 6502 dynamic CPU clock divider Fidelity Electronics 6502 dynamic CPU clock divider
Offset-dependent CPU clock divider base class. Used to compensate slow memory Offset-dependent CPU clock divider base class. Used to compensate slow memory
chips in chess computer models: SC12, AS12, PC, EAS, EAG. chips in chess computer models: SC12, AS12, PC, EAS, EAG.
*******************************************************************************/ */
#include "emu.h" #include "emu.h"
#include "clockdiv.h" #include "clockdiv.h"

View File

@ -36,7 +36,7 @@ TODO:
gnw_mariocmt, gnw_mariocmta, gnw_mariotj, gnw_mbaway, gnw_mmousep, gnw_mariocmt, gnw_mariocmta, gnw_mariotj, gnw_mbaway, gnw_mmousep,
gnw_pinball, gnw_popeyep, gnw_sbuster, gnw_snoopyp, gnw_zelda gnw_pinball, gnw_popeyep, gnw_sbuster, gnw_snoopyp, gnw_zelda
******************************************************************************** ================================================================================
Misc Nintendo Game & Watch notes: Misc Nintendo Game & Watch notes:
@ -121,7 +121,7 @@ The "Game Watch" wristwatches are by Nelsonic, not Nintendo.
Bassmate Computer (BM-501) is on identical hardware as G&W Multi Screen, Bassmate Computer (BM-501) is on identical hardware as G&W Multi Screen,
but it's not part of the game series. but it's not part of the game series.
******************************************************************************** ================================================================================
Regarding Электроника (Elektronika, translated: Electronics): It is not Regarding Электроника (Elektronika, translated: Electronics): It is not
actually a company. It was a USSR brand name for consumer electronics, actually a company. It was a USSR brand name for consumer electronics,

View File

@ -129,21 +129,21 @@ protected:
void fill_quad(u16 cmd, u16 *data); void fill_quad(u16 cmd, u16 *data);
void draw_line(u16 cmd, u16 *data); void draw_line(u16 cmd, u16 *data);
int m_dbmode; int m_dbmode = 0;
bool m_fg16bit; bool m_fg16bit = false;
bool m_bg16bit; bool m_bg16bit = false;
bool m_rend16bit; bool m_rend16bit = false;
bool m_width1024; bool m_width1024 = false;
bool m_rsae; bool m_rsae = false;
bool m_vbkem; bool m_vbkem = false;
s16 m_xo; s16 m_xo = 0;
s16 m_yo; s16 m_yo = 0;
s16 m_uxmin; s16 m_uxmin = 0;
s16 m_uxmax; s16 m_uxmax = 0;
s16 m_uymin; s16 m_uymin = 0;
s16 m_uymax; s16 m_uymax = 0;
s16 m_sxmax; s16 m_sxmax = 0;
s16 m_symax; s16 m_symax = 0;
u32 get_rend_offset() u32 get_rend_offset()
{ {
@ -272,7 +272,7 @@ void gsan_state::portc_w(u64 data)
*/ */
m_portc_data = data; m_portc_data = data;
machine().bookkeeping().coin_counter_w(0, ~data & 8); machine().bookkeeping().coin_counter_w(0, BIT(~data, 3));
} }
void gsan_state::portc_medal_w(u64 data) void gsan_state::portc_medal_w(u64 data)
{ {
@ -284,10 +284,10 @@ void gsan_state::portc_medal_w(u64 data)
*/ */
m_portc_data = data; m_portc_data = data;
m_hopper->motor_w(data & 0x80); m_hopper->motor_w(BIT(~data, 7));
machine().bookkeeping().coin_counter_w(0, data & 4); machine().bookkeeping().coin_counter_w(0, BIT(data, 2));
machine().bookkeeping().coin_counter_w(1, data & 2); machine().bookkeeping().coin_counter_w(1, BIT(data, 1));
machine().bookkeeping().coin_counter_w(2, data & 1); machine().bookkeeping().coin_counter_w(2, BIT(data, 0));
} }
u64 gsan_state::porte_r() u64 gsan_state::porte_r()
{ {
@ -315,9 +315,9 @@ void gsan_state::porte_medal_w(u64 data)
*/ */
m_porte_data = data; m_porte_data = data;
machine().bookkeeping().coin_lockout_w(0, data & 4); machine().bookkeeping().coin_lockout_w(0, BIT(data, 2));
machine().bookkeeping().coin_lockout_w(1, data & 2); machine().bookkeeping().coin_lockout_w(1, BIT(data, 1));
machine().bookkeeping().coin_lockout_w(2, data & 1); machine().bookkeeping().coin_lockout_w(2, BIT(data, 0));
} }
@ -1081,7 +1081,7 @@ void gsan_state::gs_medal(machine_config &config)
m_screen->set_raw(XTAL(36'000'000) / 5, 457, 0, 320, 262, 0, 240); m_screen->set_raw(XTAL(36'000'000) / 5, 457, 0, 320, 262, 0, 240);
HOPPER(config, "hopper", attotime::from_msec(100), hopper_device::MOTOR_ACTIVE_LOW, hopper_device::STATUS_ACTIVE_HIGH); HOPPER(config, "hopper", attotime::from_msec(100), hopper_device::MOTOR_ACTIVE_HIGH, hopper_device::STATUS_ACTIVE_HIGH);
} }
void gsan_state::init_gsan() void gsan_state::init_gsan()

View File

@ -1777,10 +1777,10 @@ void williams_state::lottofun(machine_config &config)
williams_b1(config); williams_b1(config);
// pia // pia
m_pia[0]->writepb_handler().set("ticket", FUNC(ticket_dispenser_device::motor_w)).bit(7); m_pia[0]->writepb_handler().set("ticket", FUNC(ticket_dispenser_device::motor_w)).bit(7).invert();
m_pia[0]->ca2_handler().set([this](int state) { machine().bookkeeping().coin_lockout_global_w(state); }); m_pia[0]->ca2_handler().set([this](int state) { machine().bookkeeping().coin_lockout_global_w(state); });
TICKET_DISPENSER(config, "ticket", attotime::from_msec(70), ticket_dispenser_device::MOTOR_ACTIVE_LOW, ticket_dispenser_device::STATUS_ACTIVE_HIGH); TICKET_DISPENSER(config, "ticket", attotime::from_msec(70), ticket_dispenser_device::MOTOR_ACTIVE_HIGH, ticket_dispenser_device::STATUS_ACTIVE_HIGH);
} }

View File

@ -280,7 +280,7 @@ void amusco_state::output_b_w(uint8_t data)
m_lamps[6] = BIT(data, 2); // Lamp 6 (Start/Draw) m_lamps[6] = BIT(data, 2); // Lamp 6 (Start/Draw)
m_lamps[7] = BIT(data, 1); // Lamp 7 (Unknown) m_lamps[7] = BIT(data, 1); // Lamp 7 (Unknown)
m_pit->write_gate0(!BIT(data, 4)); m_pit->write_gate0(BIT(~data, 4));
// logerror("Writing %02Xh to PPI output B\n", data); // logerror("Writing %02Xh to PPI output B\n", data);
} }
@ -300,8 +300,8 @@ void amusco_state::output_c_w(uint8_t data)
if (!data) if (!data)
return; return;
machine().bookkeeping().coin_counter_w(0, !BIT(data, 1)); machine().bookkeeping().coin_counter_w(0, BIT(~data, 1));
m_hopper->motor_w(BIT(data, 4)); m_hopper->motor_w(BIT(~data, 4));
// logerror("Writing %02Xh to PPI output C\n", data); // logerror("Writing %02Xh to PPI output C\n", data);
} }
@ -574,7 +574,7 @@ void amusco_state::amusco(machine_config &config)
i8155b.in_pc_callback().set(m_rtc, FUNC(msm5832_device::data_r)); i8155b.in_pc_callback().set(m_rtc, FUNC(msm5832_device::data_r));
i8155b.out_pc_callback().set(m_rtc, FUNC(msm5832_device::data_w)); i8155b.out_pc_callback().set(m_rtc, FUNC(msm5832_device::data_w));
TICKET_DISPENSER(config, m_hopper, attotime::from_msec(30), ticket_dispenser_device::MOTOR_ACTIVE_LOW, ticket_dispenser_device::STATUS_ACTIVE_HIGH); TICKET_DISPENSER(config, m_hopper, attotime::from_msec(30), ticket_dispenser_device::MOTOR_ACTIVE_HIGH, ticket_dispenser_device::STATUS_ACTIVE_HIGH);
/* video hardware */ /* video hardware */
SCREEN(config, m_screen, SCREEN_TYPE_RASTER); SCREEN(config, m_screen, SCREEN_TYPE_RASTER);

View File

@ -43,10 +43,12 @@
*********************************************************************/ *********************************************************************/
#include "emu.h" #include "emu.h"
#include "cpu/e132xs/e132xs.h" #include "cpu/e132xs/e132xs.h"
#include "machine/nvram.h" #include "machine/nvram.h"
#include "machine/ticket.h" #include "machine/ticket.h"
#include "sound/okim6295.h" #include "sound/okim6295.h"
#include "emupal.h" #include "emupal.h"
#include "screen.h" #include "screen.h"
#include "speaker.h" #include "speaker.h"
@ -72,6 +74,11 @@ public:
void init_mjsenpu(); void init_mjsenpu();
protected:
virtual void machine_start() override;
virtual void machine_reset() override;
virtual void video_start() override;
private: private:
/* devices */ /* devices */
required_device<e132xt_device> m_maincpu; required_device<e132xt_device> m_maincpu;
@ -80,9 +87,9 @@ private:
required_shared_ptr<uint32_t> m_mainram; required_shared_ptr<uint32_t> m_mainram;
// required_shared_ptr<uint32_t> m_vram; // required_shared_ptr<uint32_t> m_vram;
uint8_t m_pal[0x200]; uint8_t m_pal[0x200] = { };
uint32_t m_vram0[0x20000 / 4]; uint32_t m_vram0[0x20000 / 4] = { };
uint32_t m_vram1[0x20000 / 4]; uint32_t m_vram1[0x20000 / 4] = { };
uint8_t m_control = 0; uint8_t m_control = 0;
uint8_t m_mux = 0; uint8_t m_mux = 0;
@ -102,9 +109,6 @@ private:
uint32_t vram_r(offs_t offset); uint32_t vram_r(offs_t offset);
void vram_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0); void vram_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0);
virtual void machine_start() override;
virtual void machine_reset() override;
virtual void video_start() override;
uint32_t screen_update_mjsenpu(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_mjsenpu(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<palette_device> m_palette; required_device<palette_device> m_palette;
@ -163,15 +167,15 @@ void mjsenpu_state::control_w(uint8_t data)
// bit 0x20 not used? // bit 0x20 not used?
// bit 0x10 is the M6295 bank, samples <26 are the same in both banks and so bank switch isn't written for them, not even in sound test. // bit 0x10 is the M6295 bank, samples <26 are the same in both banks and so bank switch isn't written for them, not even in sound test.
m_oki->set_rom_bank((data&0x10)>>4); m_oki->set_rom_bank(BIT(data, 4));
// bits 0x08 is used in the alt payout / hopper mode (see dipswitches) // bits 0x08 is used in the alt payout / hopper mode (see dipswitches)
// 0x04 seem to be hopper/ticket related? different ones get used depending on the dips // 0x04 seem to be hopper/ticket related? different ones get used depending on the dips
m_hopper->motor_w(data & 0x04); m_hopper->motor_w(BIT(~data, 2));
// bit 0x02 could be coin counter? // bit 0x02 could be coin counter?
machine().bookkeeping().coin_counter_w(0, data & 0x02 ); machine().bookkeeping().coin_counter_w(0, BIT(data, 1));
// bit 0x01 alternates frequently, using as video buffer, but that's a complete guess // bit 0x01 alternates frequently, using as video buffer, but that's a complete guess
m_control = data; m_control = data;
@ -471,7 +475,7 @@ void mjsenpu_state::mjsenpu(machine_config &config)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
// more likely coins out? // more likely coins out?
TICKET_DISPENSER(config, m_hopper, attotime::from_msec(50), ticket_dispenser_device::MOTOR_ACTIVE_LOW, ticket_dispenser_device::STATUS_ACTIVE_HIGH); TICKET_DISPENSER(config, m_hopper, attotime::from_msec(50), ticket_dispenser_device::MOTOR_ACTIVE_HIGH, ticket_dispenser_device::STATUS_ACTIVE_HIGH);
/* video hardware */ /* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));

View File

@ -37,12 +37,14 @@
****************************************************************************/ ****************************************************************************/
#include "emu.h" #include "emu.h"
#include "cpu/m68000/m68000.h" #include "cpu/m68000/m68000.h"
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "machine/nvram.h" #include "machine/nvram.h"
#include "machine/ticket.h" #include "machine/ticket.h"
#include "sound/bsmt2000.h" #include "sound/bsmt2000.h"
#include "video/mc6845.h" #include "video/mc6845.h"
#include "screen.h" #include "screen.h"
#include "speaker.h" #include "speaker.h"
@ -70,6 +72,10 @@ public:
void tapatune(machine_config &config); void tapatune(machine_config &config);
void tapatune_base(machine_config &config); void tapatune_base(machine_config &config);
protected:
virtual void machine_start() override;
virtual void machine_reset() override;
private: private:
required_device<cpu_device> m_maincpu; required_device<cpu_device> m_maincpu;
optional_device<cpu_device> m_videocpu; optional_device<cpu_device> m_videocpu;
@ -91,9 +97,6 @@ private:
uint8_t m_bsmt_data_h = 0; uint8_t m_bsmt_data_h = 0;
bool m_bsmt_reset = false; bool m_bsmt_reset = false;
virtual void machine_start() override;
virtual void machine_reset() override;
void crtc_vsync(int state); void crtc_vsync(int state);
void palette_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); void palette_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
@ -505,7 +508,7 @@ static INPUT_PORTS_START( tapatune )
PORT_START("COINS") PORT_START("COINS")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("ticket", ticket_dispenser_device, line_r) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("ticket", ticket_dispenser_device, line_r)
PORT_BIT( 0xf8, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0xf8, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("BUTTONS") PORT_START("BUTTONS")
@ -536,7 +539,7 @@ void tapatune_state::tapatune_base(machine_config &config)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
TICKET_DISPENSER(config, "ticket", attotime::from_msec(100), ticket_dispenser_device::MOTOR_ACTIVE_LOW, ticket_dispenser_device::STATUS_ACTIVE_LOW); TICKET_DISPENSER(config, "ticket", attotime::from_msec(100), ticket_dispenser_device::MOTOR_ACTIVE_HIGH, ticket_dispenser_device::STATUS_ACTIVE_HIGH);
/* sound hardware */ /* sound hardware */
SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "lspeaker").front_left();

View File

@ -344,8 +344,8 @@ void tickee_state::tickee_control_w(offs_t offset, uint8_t data)
break; break;
case 3: case 3:
m_ticket[0]->motor_w(BIT(data, 3)); m_ticket[0]->motor_w(BIT(~data, 3));
m_ticket[1]->motor_w(BIT(data, 2)); m_ticket[1]->motor_w(BIT(~data, 2));
break; break;
default: default:
@ -806,8 +806,8 @@ void tickee_gun_state::tickee(machine_config &config)
set_beamadd(50, 0); set_beamadd(50, 0);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
TICKET_DISPENSER(config, m_ticket[0], attotime::from_msec(100), ticket_dispenser_device::MOTOR_ACTIVE_LOW, ticket_dispenser_device::STATUS_ACTIVE_HIGH); TICKET_DISPENSER(config, m_ticket[0], attotime::from_msec(100), ticket_dispenser_device::MOTOR_ACTIVE_HIGH, ticket_dispenser_device::STATUS_ACTIVE_HIGH);
TICKET_DISPENSER(config, m_ticket[1], attotime::from_msec(100), ticket_dispenser_device::MOTOR_ACTIVE_LOW, ticket_dispenser_device::STATUS_ACTIVE_HIGH); TICKET_DISPENSER(config, m_ticket[1], attotime::from_msec(100), ticket_dispenser_device::MOTOR_ACTIVE_HIGH, ticket_dispenser_device::STATUS_ACTIVE_HIGH);
// video hardware // video hardware
TLC34076(config, m_tlc34076, tlc34076_device::TLC34076_6_BIT); TLC34076(config, m_tlc34076, tlc34076_device::TLC34076_6_BIT);
@ -850,8 +850,8 @@ void tickee_state::mouseatk(machine_config &config)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
TICKET_DISPENSER(config, m_ticket[0], attotime::from_msec(100), ticket_dispenser_device::MOTOR_ACTIVE_LOW, ticket_dispenser_device::STATUS_ACTIVE_HIGH); TICKET_DISPENSER(config, m_ticket[0], attotime::from_msec(100), ticket_dispenser_device::MOTOR_ACTIVE_HIGH, ticket_dispenser_device::STATUS_ACTIVE_HIGH);
TICKET_DISPENSER(config, m_ticket[1], attotime::from_msec(100), ticket_dispenser_device::MOTOR_ACTIVE_LOW, ticket_dispenser_device::STATUS_ACTIVE_HIGH); TICKET_DISPENSER(config, m_ticket[1], attotime::from_msec(100), ticket_dispenser_device::MOTOR_ACTIVE_HIGH, ticket_dispenser_device::STATUS_ACTIVE_HIGH);
// video hardware // video hardware
TLC34076(config, m_tlc34076, tlc34076_device::TLC34076_6_BIT); TLC34076(config, m_tlc34076, tlc34076_device::TLC34076_6_BIT);

View File

@ -50,16 +50,14 @@
***************************************************************************/ ***************************************************************************/
#define MASTER_CLOCK XTAL(21'477'272) // Dumper notes poorly refers to a 21.?727 Xtal.
#include "emu.h" #include "emu.h"
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "sound/ay8910.h" #include "sound/ay8910.h"
#include "video/v9938.h" #include "video/v9938.h"
#include "machine/nvram.h" #include "machine/nvram.h"
#include "machine/ticket.h" #include "machine/ticket.h"
#include "screen.h" #include "screen.h"
#include "speaker.h" #include "speaker.h"
@ -97,10 +95,6 @@ private:
}; };
#define HOPPER_PULSE 40 // time between hopper pulses in milliseconds
#define VDP_MEM 0x40000
/**************************************** /****************************************
* Input Ports Demux & Common Routines * * Input Ports Demux & Common Routines *
****************************************/ ****************************************/
@ -108,7 +102,7 @@ private:
void big10_state::mux_w(uint8_t data) void big10_state::mux_w(uint8_t data)
{ {
m_mux_data = ~data; m_mux_data = ~data;
m_hopper->motor_w(BIT(data, 6)); m_hopper->motor_w(BIT(~data, 6));
m_lamp = BIT(~data, 7); // maybe a coin counter? m_lamp = BIT(~data, 7); // maybe a coin counter?
} }
@ -232,6 +226,8 @@ INPUT_PORTS_END
void big10_state::big10(machine_config &config) void big10_state::big10(machine_config &config)
{ {
constexpr XTAL MASTER_CLOCK = 21.477272_MHz_XTAL; // Dumper notes poorly refers to a 21.?727 Xtal.
// basic machine hardware // basic machine hardware
Z80(config, m_maincpu, MASTER_CLOCK/6); // guess Z80(config, m_maincpu, MASTER_CLOCK/6); // guess
m_maincpu->set_addrmap(AS_PROGRAM, &big10_state::main_map); m_maincpu->set_addrmap(AS_PROGRAM, &big10_state::main_map);
@ -239,12 +235,12 @@ void big10_state::big10(machine_config &config)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
TICKET_DISPENSER(config, m_hopper, attotime::from_msec(HOPPER_PULSE), ticket_dispenser_device::MOTOR_ACTIVE_LOW, ticket_dispenser_device::STATUS_ACTIVE_LOW); TICKET_DISPENSER(config, m_hopper, attotime::from_msec(40), ticket_dispenser_device::MOTOR_ACTIVE_HIGH, ticket_dispenser_device::STATUS_ACTIVE_HIGH);
// video hardware // video hardware
v9938_device &v9938(V9938(config, "v9938", MASTER_CLOCK)); v9938_device &v9938(V9938(config, "v9938", MASTER_CLOCK));
v9938.set_screen_ntsc("screen"); v9938.set_screen_ntsc("screen");
v9938.set_vram_size(VDP_MEM); v9938.set_vram_size(0x40000);
v9938.int_cb().set_inputline("maincpu", 0); v9938.int_cb().set_inputline("maincpu", 0);
SCREEN(config, "screen", SCREEN_TYPE_RASTER); SCREEN(config, "screen", SCREEN_TYPE_RASTER);

View File

@ -323,7 +323,7 @@ void doraemon_state::outputs_w(uint8_t data)
machine().bookkeeping().coin_counter_w(1, BIT(data, 1)); // gift out counter machine().bookkeeping().coin_counter_w(1, BIT(data, 1)); // gift out counter
machine().bookkeeping().coin_lockout_w(0, BIT(~data, 3)); // coin lockout machine().bookkeeping().coin_lockout_w(0, BIT(~data, 3)); // coin lockout
m_hopper->motor_w(BIT(~data, 2)); // gift out motor m_hopper->motor_w(BIT(data, 2)); // gift out motor
m_mainbank->set_entry((data & 0x30) >> 4); m_mainbank->set_entry((data & 0x30) >> 4);
@ -481,7 +481,7 @@ static INPUT_PORTS_START( doraemon )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON3 )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("hopper", ticket_dispenser_device, line_r) // sensor PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("hopper", ticket_dispenser_device, line_r) // sensor
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_SERVICE_NO_TOGGLE( 0x80, IP_ACTIVE_LOW ) PORT_SERVICE_NO_TOGGLE( 0x80, IP_ACTIVE_LOW )
INPUT_PORTS_END INPUT_PORTS_END
@ -601,7 +601,7 @@ void doraemon_state::doraemon(machine_config &config)
m_spritegen->set_bg_yoffsets(0x00, 0x01); m_spritegen->set_bg_yoffsets(0x00, 0x01);
m_spritegen->set_fg_yoffsets(0x00, 0x10); m_spritegen->set_fg_yoffsets(0x00, 0x10);
TICKET_DISPENSER(config, m_hopper, attotime::from_msec(2000), ticket_dispenser_device::MOTOR_ACTIVE_LOW, ticket_dispenser_device::STATUS_ACTIVE_LOW); TICKET_DISPENSER(config, m_hopper, attotime::from_msec(2000), ticket_dispenser_device::MOTOR_ACTIVE_HIGH, ticket_dispenser_device::STATUS_ACTIVE_HIGH);
// video hardware // video hardware
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));

View File

@ -114,6 +114,7 @@ Notes:
*************************************************************************************************************/ *************************************************************************************************************/
#include "emu.h" #include "emu.h"
#include "cpu/z80/kl5c80a12.h" #include "cpu/z80/kl5c80a12.h"
#include "cpu/z80/ky80.h" #include "cpu/z80/ky80.h"
#include "machine/74165.h" #include "machine/74165.h"
@ -126,6 +127,7 @@ Notes:
#include "sound/okim9810.h" #include "sound/okim9810.h"
#include "sound/ymz280b.h" #include "sound/ymz280b.h"
#include "video/bufsprite.h" #include "video/bufsprite.h"
#include "emupal.h" #include "emupal.h"
#include "screen.h" #include "screen.h"
#include "speaker.h" #include "speaker.h"
@ -734,7 +736,7 @@ void sigmab98_state::show_outputs()
void sigmab98_state::eeprom_w(uint8_t data) void sigmab98_state::eeprom_w(uint8_t data)
{ {
// latch the bit // latch the bit
m_eeprom->di_write((data & 0x40) >> 6); m_eeprom->di_write(BIT(data, 6));
// reset line asserted: reset. // reset line asserted: reset.
// if ((m_c0 ^ data) & 0x20) // if ((m_c0 ^ data) & 0x20)
@ -765,9 +767,9 @@ void sigmab98_state::c4_w(uint8_t data)
// 20 led? (starts blinking after coin in) // 20 led? (starts blinking after coin in)
void sigmab98_state::c6_w(uint8_t data) void sigmab98_state::c6_w(uint8_t data)
{ {
machine().bookkeeping().coin_lockout_w(0, (~data) & 0x02); machine().bookkeeping().coin_lockout_w(0, BIT(~data, 1));
machine().bookkeeping().coin_counter_w(0, data & 0x04); machine().bookkeeping().coin_counter_w(0, BIT(data, 2));
if ((data & 0x08) && !(m_c6 & 0x08)) if ((data & 0x08) && !(m_c6 & 0x08))
m_buffered_spriteram->copy(); m_buffered_spriteram->copy();
@ -784,7 +786,7 @@ void sigmab98_state::c6_w(uint8_t data)
// 02 hopper motor on (active low)? // 02 hopper motor on (active low)?
void sigmab98_state::c8_w(uint8_t data) void sigmab98_state::c8_w(uint8_t data)
{ {
m_hopper->motor_w((!(data & 0x02) && (data & 0x01)) ? 0 : 1); m_hopper->motor_w(~data >> 1 & data & 1);
m_c8 = data; m_c8 = data;
show_outputs(); show_outputs();
@ -1213,7 +1215,7 @@ static INPUT_PORTS_START( sigma_1b )
PORT_START("BUTTON") PORT_START("BUTTON")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5) // ? (coin error, pulses mask 4 of port c6) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5) // ? (coin error, pulses mask 4 of port c6)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5) PORT_NAME("Medal") // coin/medal in (coin error) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5) PORT_NAME("Medal") // coin/medal in (coin error)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("hopper", ticket_dispenser_device, line_r) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("hopper", ticket_dispenser_device, line_r)
PORT_SERVICE( 0x08, IP_ACTIVE_LOW ) PORT_SERVICE( 0x08, IP_ACTIVE_LOW )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) PORT_CODE(KEYCODE_1) // bet / select in test menu PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) PORT_CODE(KEYCODE_1) // bet / select in test menu
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 )
@ -1289,7 +1291,7 @@ static INPUT_PORTS_START( lufykzku )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("hopper", ticket_dispenser_device, line_r) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("hopper", ticket_dispenser_device, line_r)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_START("PAYOUT") PORT_START("PAYOUT")
@ -1370,7 +1372,7 @@ static INPUT_PORTS_START( sammymdl )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_IMPULSE(5) PORT_NAME("Medal") // medal in PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_IMPULSE(5) PORT_NAME("Medal") // medal in
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) // test sw PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) // test sw
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("hopper", ticket_dispenser_device, line_r) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("hopper", ticket_dispenser_device, line_r)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END INPUT_PORTS_END
@ -1392,7 +1394,7 @@ static INPUT_PORTS_START( haekaka )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) // test sw PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) // test sw
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) // button PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) // button
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("hopper", ticket_dispenser_device, line_r) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("hopper", ticket_dispenser_device, line_r)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE1 ) // service coin / set in test mode PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE1 ) // service coin / set in test mode
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END INPUT_PORTS_END
@ -1401,8 +1403,8 @@ static INPUT_PORTS_START( gocowboy )
PORT_START("BUTTON") PORT_START("BUTTON")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) // shoot PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) // shoot
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(20) // coin PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(20) // coin
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("hopper_small", ticket_dispenser_device, line_r) // 1/2' pay sensor (small) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("hopper_small", ticket_dispenser_device, line_r) // 1/2' pay sensor (small)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("hopper_large", ticket_dispenser_device, line_r) // 3/4' pay sensor (large) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("hopper_large", ticket_dispenser_device, line_r) // 3/4' pay sensor (large)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Meter Switch") // capsule test (pressed while booting) / next in test mode PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Meter Switch") // capsule test (pressed while booting) / next in test mode
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Reset Switch") // reset backup ram (pressed while booting) / previous in test mode PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Reset Switch") // reset backup ram (pressed while booting) / previous in test mode
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE ) // test mode (keep pressed in game) / select in test mode / service coin PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE ) // test mode (keep pressed in game) / select in test mode / service coin
@ -1444,7 +1446,7 @@ void sigmab98_state::sigmab98(machine_config &config)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
EEPROM_93C46_16BIT(config, "eeprom"); EEPROM_93C46_16BIT(config, "eeprom");
TICKET_DISPENSER(config, m_hopper, attotime::from_msec(200), ticket_dispenser_device::MOTOR_ACTIVE_LOW, ticket_dispenser_device::STATUS_ACTIVE_LOW ); TICKET_DISPENSER(config, m_hopper, attotime::from_msec(200), ticket_dispenser_device::MOTOR_ACTIVE_HIGH, ticket_dispenser_device::STATUS_ACTIVE_HIGH );
// video hardware // video hardware
SCREEN(config, m_screen, SCREEN_TYPE_RASTER); SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
@ -1516,7 +1518,7 @@ void lufykzku_state::lufykzku(machine_config &config)
// No EEPROM // No EEPROM
MB3773(config, m_watchdog, 0); MB3773(config, m_watchdog, 0);
TICKET_DISPENSER(config, m_hopper, attotime::from_msec(200), ticket_dispenser_device::MOTOR_ACTIVE_LOW, ticket_dispenser_device::STATUS_ACTIVE_LOW ); TICKET_DISPENSER(config, m_hopper, attotime::from_msec(200), ticket_dispenser_device::MOTOR_ACTIVE_HIGH, ticket_dispenser_device::STATUS_ACTIVE_HIGH );
// 2 x 8-bit parallel/serial converters // 2 x 8-bit parallel/serial converters
TTL165(config, m_dsw_shifter[0]); TTL165(config, m_dsw_shifter[0]);
@ -1593,7 +1595,7 @@ void sammymdl_state::sammymdl(machine_config &config)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // battery backed RAM NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // battery backed RAM
EEPROM_93C46_8BIT(config, "eeprom"); EEPROM_93C46_8BIT(config, "eeprom");
TICKET_DISPENSER(config, m_hopper, attotime::from_msec(200), ticket_dispenser_device::MOTOR_ACTIVE_LOW, ticket_dispenser_device::STATUS_ACTIVE_LOW ); TICKET_DISPENSER(config, m_hopper, attotime::from_msec(200), ticket_dispenser_device::MOTOR_ACTIVE_HIGH, ticket_dispenser_device::STATUS_ACTIVE_HIGH );
WATCHDOG_TIMER(config, "watchdog"); WATCHDOG_TIMER(config, "watchdog");
@ -1640,8 +1642,8 @@ void sammymdl_state::gocowboy(machine_config &config)
TIMER(config, "scantimer").configure_scanline(FUNC(sammymdl_state::gocowboy_int), "screen", 0, 1); TIMER(config, "scantimer").configure_scanline(FUNC(sammymdl_state::gocowboy_int), "screen", 0, 1);
config.device_remove("hopper"); config.device_remove("hopper");
TICKET_DISPENSER(config, m_hopper_small, attotime::from_msec(200), ticket_dispenser_device::MOTOR_ACTIVE_LOW, ticket_dispenser_device::STATUS_ACTIVE_LOW ); TICKET_DISPENSER(config, m_hopper_small, attotime::from_msec(200), ticket_dispenser_device::MOTOR_ACTIVE_HIGH, ticket_dispenser_device::STATUS_ACTIVE_HIGH );
TICKET_DISPENSER(config, m_hopper_large, attotime::from_msec(200), ticket_dispenser_device::MOTOR_ACTIVE_LOW, ticket_dispenser_device::STATUS_ACTIVE_LOW ); TICKET_DISPENSER(config, m_hopper_large, attotime::from_msec(200), ticket_dispenser_device::MOTOR_ACTIVE_HIGH, ticket_dispenser_device::STATUS_ACTIVE_HIGH );
m_screen->screen_vblank().set_nop(); m_screen->screen_vblank().set_nop();
} }

View File

@ -138,6 +138,10 @@ private:
optional_device_array<netlist_mame_logic_input_device, 8> m_sound_nl; optional_device_array<netlist_mame_logic_input_device, 8> m_sound_nl;
required_ioport_array<2> m_inputs; required_ioport_array<2> m_inputs;
u16 m_mux = 0;
u8 m_seg_data = 0;
u8 m_sound_data = 0;
void main_map(address_map &map); void main_map(address_map &map);
void main_io(address_map &map); void main_io(address_map &map);
@ -149,10 +153,6 @@ private:
void sound_w(u8 data); void sound_w(u8 data);
void discrete_w(u8 data); void discrete_w(u8 data);
u8 sound_r(); u8 sound_r();
u16 m_mux = 0;
u8 m_seg_data = 0;
u8 m_sound_data = 0;
}; };
void gm_state::machine_start() void gm_state::machine_start()

View File

@ -10,7 +10,6 @@
NETLIST_START(gamemachine) NETLIST_START(gamemachine)
{ {
/* Standard stuff */ /* Standard stuff */
SOLVER(Solver, 48000) SOLVER(Solver, 48000)
@ -87,6 +86,4 @@ NETLIST_START(gamemachine)
NET_C(Q1.C, SPK1.2) NET_C(Q1.C, SPK1.2)
NET_C(C8.1, R1.1, R3.2, IC1.5) NET_C(C8.1, R1.1, R3.2, IC1.5)
} }