diff options
Diffstat (limited to 'src/mame/drivers/tonton.cpp')
-rw-r--r-- | src/mame/drivers/tonton.cpp | 273 |
1 files changed, 0 insertions, 273 deletions
diff --git a/src/mame/drivers/tonton.cpp b/src/mame/drivers/tonton.cpp deleted file mode 100644 index e173eb85268..00000000000 --- a/src/mame/drivers/tonton.cpp +++ /dev/null @@ -1,273 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Angelo Salese, Roberto Fresca -/************************************************************************** - - Waku Waku Doubutsu Land TonTon (c) 1987 Success. - - HW based off MSX2 - - Driver by Angelo Salese & Roberto Fresca. - - -*************************************************************************** - - WAKUWAKU DOUBUTSU LAND TONTON (ANIMAL VIDEO SLOT) - (c)SUCCESS / CABINET :TAIYO JIDOKI (SUN AUTO MACHINE) - - CPU : Z80 - SOUND : YM2149F - XTAL : 21477.27KHz - - TONTON.BIN : MAIN ROM - - -***************************************************************************/ - -#include "emu.h" -#include "cpu/z80/z80.h" -#include "machine/nvram.h" -#include "machine/ticket.h" -#include "sound/ay8910.h" -#include "video/v9938.h" -#include "speaker.h" - -class tonton_state : public driver_device -{ -public: - tonton_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), - m_v9938(*this, "v9938"), - m_maincpu(*this, "maincpu"), - m_hopper(*this, "hopper") - { } - - void tonton(machine_config &config); - -private: - required_device<v9938_device> m_v9938; - DECLARE_WRITE8_MEMBER(tonton_outport_w); - DECLARE_WRITE8_MEMBER(hopper_w); - DECLARE_WRITE8_MEMBER(ay_aout_w); - DECLARE_WRITE8_MEMBER(ay_bout_w); - virtual void machine_start() override; - virtual void machine_reset() override; - required_device<cpu_device> m_maincpu; - required_device<ticket_dispenser_device> m_hopper; - void tonton_io(address_map &map); - void tonton_map(address_map &map); -}; - -#define MAIN_CLOCK XTAL(21'477'272) -#define CPU_CLOCK MAIN_CLOCK/6 -#define YM2149_CLOCK MAIN_CLOCK/6/2 // '/SEL' pin tied to GND, so internal divisor x2 is active - -#define HOPPER_PULSE 50 // time between hopper pulses in milliseconds -#define VDP_MEM 0x30000 - - -/************************************************* -* Multi-Purpose Output Port * -*************************************************/ - -WRITE8_MEMBER(tonton_state::tonton_outport_w) -{ - machine().bookkeeping().coin_counter_w(offset, data & 0x01); - machine().bookkeeping().coin_lockout_global_w(data & 0x02); /* Coin Lock */ - -// if(data & 0xfe) -// logerror("%02x %02x\n",data,offset); - if (data) - logerror("tonton_outport_w %02X @ %04X\n", data, m_maincpu->pc()); -} - -WRITE8_MEMBER(tonton_state::hopper_w) -{ - m_hopper->motor_w(BIT(data, 1)); -} - - -/************************************************* -* Memory Map * -*************************************************/ - -void tonton_state::tonton_map(address_map &map) -{ - map(0x0000, 0xdfff).rom(); - map(0xe000, 0xe3ff).ram().share("nvram"); - map(0xf000, 0xffff).ram(); -} - -void tonton_state::tonton_io(address_map &map) -{ - map.global_mask(0xff); - map(0x00, 0x00).portr("IN0"); - map(0x00, 0x00).w(FUNC(tonton_state::tonton_outport_w)); - map(0x01, 0x01).portr("IN1"); - map(0x01, 0x01).w(FUNC(tonton_state::hopper_w)); - map(0x02, 0x02).portr("DSW1"); - map(0x03, 0x03).portr("DSW2"); - map(0x88, 0x8b).rw(m_v9938, FUNC(v9938_device::read), FUNC(v9938_device::write)); - map(0xa0, 0xa1).w("aysnd", FUNC(ay8910_device::address_data_w)); - map(0xa2, 0xa2).r("aysnd", FUNC(ay8910_device::data_r)); -} - - -/************************************************* -* Input Ports Definitions * -*************************************************/ - -static INPUT_PORTS_START( tonton ) - PORT_START("IN0") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CODE(KEYCODE_Z) PORT_NAME("1. Pig") - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CODE(KEYCODE_X) PORT_NAME("2. Penguin") - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_CODE(KEYCODE_C) PORT_NAME("3. Tiger") - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_CODE(KEYCODE_V) PORT_NAME("4. Cow") - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_CODE(KEYCODE_B) PORT_NAME("5. Bear") - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_CODE(KEYCODE_N) PORT_NAME("6. Elephant") - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON7 ) PORT_CODE(KEYCODE_M) PORT_NAME("7. Lion") - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) - - PORT_START("IN1") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_9) PORT_TOGGLE PORT_NAME("Bookkeeping") - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_NAME("Medal In") - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_0) PORT_NAME("Reset Button") - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_A) PORT_NAME("Unknown A") - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("hopper", ticket_dispenser_device, line_r) // hopper feedback - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) - - PORT_START("DSW1") - PORT_DIPNAME( 0x07, 0x03, "Coinage A (100 Yen)" ) PORT_DIPLOCATION("DSW1:1,2,3") - PORT_DIPSETTING( 0x02, "1 Coin / 3 Medal" ) - PORT_DIPSETTING( 0x06, "1 Coin / 4 Medal" ) - PORT_DIPSETTING( 0x01, "1 Coin / 5 Medal" ) - PORT_DIPSETTING( 0x05, "1 Coin / 6 Medal" ) - PORT_DIPSETTING( 0x03, "1 Coin / 10 Medal" ) - PORT_DIPSETTING( 0x07, "1 Coin / 11 Medal" ) - PORT_DIPSETTING( 0x04, "1 Coin / 20 Medal" ) - PORT_DIPSETTING( 0x00, "1 Coin / 50 Medal" ) - PORT_DIPNAME( 0x18, 0x18, "Coinage B (10 Yen)" ) PORT_DIPLOCATION("DSW1:4,5") - PORT_DIPSETTING( 0x00, "3 Coin / 1 Medal" ) - PORT_DIPSETTING( 0x10, "2 Coin / 1 Medal" ) - PORT_DIPSETTING( 0x18, "1 Coin / 1 Medal" ) - PORT_DIPSETTING( 0x08, "1 Coin / 2 Medal" ) - PORT_DIPNAME( 0x20, 0x20, "Service Coinage" ) PORT_DIPLOCATION("DSW1:6") - PORT_DIPSETTING( 0x20, "1 Pulse / 1 Medal" ) - PORT_DIPSETTING( 0x00, "1 Pulse / 2 Medal" ) - PORT_DIPNAME( 0x40, 0x40, "Coinage A Lock" ) PORT_DIPLOCATION("DSW1:7") - PORT_DIPSETTING( 0x40, "Unlocked" ) - PORT_DIPSETTING( 0x00, "Locked" ) - PORT_DIPNAME( 0x80, 0x80, "Payout Mode") PORT_DIPLOCATION("DSW1:8") - PORT_DIPSETTING( 0x80, "Manual" ) - PORT_DIPSETTING( 0x00, "Automatic" ) - - PORT_START("DSW2") - PORT_DIPNAME( 0x07, 0x03, "Percentage" ) PORT_DIPLOCATION("DSW2:1,2,3") - PORT_DIPSETTING( 0x07, "50%" ) - PORT_DIPSETTING( 0x03, "60%" ) - PORT_DIPSETTING( 0x05, "70%" ) - PORT_DIPSETTING( 0x01, "75%" ) - PORT_DIPSETTING( 0x06, "80%" ) - PORT_DIPSETTING( 0x02, "85%" ) - PORT_DIPSETTING( 0x04, "90%" ) - PORT_DIPSETTING( 0x00, "95%" ) - PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW2:4") - PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW2:5") - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW2:6") - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW2:7") - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("DSW2:8") - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x80, DEF_STR( On ) ) - -INPUT_PORTS_END - - -/************************************************* -* Machine Start & Reset Routines * -*************************************************/ - -void tonton_state::machine_start() -{ -} - -void tonton_state::machine_reset() -{ -} - - -/************************************************* -* R/W Handlers and Interrupt Routines * -*************************************************/ - -WRITE8_MEMBER(tonton_state::ay_aout_w) -{ - logerror("AY8910: Port A out: %02X\n", data); -} - -WRITE8_MEMBER(tonton_state::ay_bout_w) -{ - logerror("AY8910: Port B out: %02X\n", data); -} - -/************************************************* -* Machine Driver * -*************************************************/ - -void tonton_state::tonton(machine_config &config) -{ - /* basic machine hardware */ - Z80(config, m_maincpu, CPU_CLOCK); /* Guess. According to other MSX2 based gambling games */ - m_maincpu->set_addrmap(AS_PROGRAM, &tonton_state::tonton_map); - m_maincpu->set_addrmap(AS_IO, &tonton_state::tonton_io); - - NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); - - /* video hardware */ - V9938(config, m_v9938, MAIN_CLOCK); - m_v9938->set_screen_ntsc("screen"); - m_v9938->set_vram_size(0x20000); - m_v9938->int_cb().set_inputline(m_maincpu, 0); - SCREEN(config, "screen", SCREEN_TYPE_RASTER); - - TICKET_DISPENSER(config, m_hopper, attotime::from_msec(HOPPER_PULSE), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW ); - - /* sound hardware */ - SPEAKER(config, "mono").front_center(); - ym2149_device &aysnd(YM2149(config, "aysnd", YM2149_CLOCK)); /* Guess. According to other MSX2 based gambling games */ - /* - AY8910: Port A out: FF - AY8910: Port B out: FF - AY8910: Port A out: FF - AY8910: Port B out: FF - AY8910: Port A out: 00 - AY8910: Port B out: 00 - */ - aysnd.port_a_write_callback().set(FUNC(tonton_state::ay_aout_w)); /* Write all bits twice, and then reset them at boot */ - aysnd.port_b_write_callback().set(FUNC(tonton_state::ay_bout_w)); /* Write all bits twice, and then reset them at boot */ - aysnd.add_route(ALL_OUTPUTS, "mono", 0.70); -} - - -/*************************************************************************** - - Game driver(s) - -***************************************************************************/ - -ROM_START( tonton ) - ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD( "tonton.bin", 0x0000, 0x10000, CRC(6c9cacfb) SHA1(21afd5a40b785300b013ac8cb31f5e4f480657ef) ) -ROM_END - - -// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS -GAME( 1987, tonton, 0, tonton, tonton, tonton_state, empty_init, ROT0, "Success / Taiyo Jidoki", "Waku Waku Doubutsu Land TonTon (Japan)", 0 ) |