-bus/isa/prose4k1.cpp: Dumped Speech Plus Prose 4001 CPU firmware. [Matt Balmer]

* The CPU passes its initial memory test, but no I/O is connected.

-dynax/ddenlovr.cpp: Identified 18 of 40 DIP switches for hanakanz with
 high confidence, and improved inputs.
This commit is contained in:
Vas Crabb 2025-01-06 03:29:10 +11:00
parent bab7f83906
commit a44c48b2fa
5 changed files with 202 additions and 167 deletions

View File

@ -1848,6 +1848,8 @@ if (BUSES["ISA"]~=null) then
MAME_DIR .. "src/devices/bus/isa/pds.h",
MAME_DIR .. "src/devices/bus/isa/pgc.cpp",
MAME_DIR .. "src/devices/bus/isa/pgc.h",
MAME_DIR .. "src/devices/bus/isa/prose4k1.cpp",
MAME_DIR .. "src/devices/bus/isa/prose4k1.h",
MAME_DIR .. "src/devices/bus/isa/sb16.cpp",
MAME_DIR .. "src/devices/bus/isa/sb16.h",
MAME_DIR .. "src/devices/bus/isa/sblaster.cpp",

View File

@ -10,84 +10,85 @@
#include "isa_cards.h"
// video
#include "mda.h"
#include "cga.h"
#include "aga.h"
#include "cga.h"
#include "ega.h"
#include "eis_hgb107x.h"
#include "ex1280.h"
#include "mda.h"
#include "num9rev.h"
#include "pgc.h"
#include "vga.h"
#include "vga_ati.h"
#include "svga_cirrus.h"
#include "svga_paradise.h"
#include "svga_s3.h"
#include "svga_tseng.h"
#include "svga_trident.h"
#include "num9rev.h"
#include "eis_hgb107x.h"
#include "ex1280.h"
#include "svga_tseng.h"
#include "vga.h"
#include "vga_ati.h"
// storage
#include "fdc.h"
#include "mufdc.h"
#include "hdc.h"
#include "wdxt_gen.h"
#include "ide.h"
#include "xtide.h"
#include "side116.h"
#include "acb2072.h"
#include "aha1542b.h"
#include "aha1542c.h"
#include "aha174x.h"
#include "wd1002a_wx1.h"
#include "wd1007a.h"
#include "mcd.h"
#include "lbaenhancer.h"
#include "cl_sh260.h"
#include "asc88.h"
#include "bt54x.h"
#include "cl_sh260.h"
#include "dcb.h"
#include "fdc.h"
#include "hdc.h"
#include "ide.h"
#include "lbaenhancer.h"
#include "lrk330.h"
#include "mcd.h"
#include "mufdc.h"
#include "omti8621.h"
#include "side116.h"
#include "tekram_dc820.h"
#include "ultra12f.h"
#include "ultra14f.h"
#include "ultra24f.h"
#include "tekram_dc820.h"
#include "asc88.h"
#include "omti8621.h"
#include "lrk330.h"
#include "wd1002a_wx1.h"
#include "wd1007a.h"
#include "wdxt_gen.h"
#include "xtide.h"
// sound
#include "adlib.h"
#include "dectalk.h"
#include "gblaster.h"
#include "gus.h"
#include "ibm_mfc.h"
#include "ibm_speech.h"
#include "mpu401.h"
#include "pcmidi.h"
#include "prose4k1.h"
#include "sb16.h"
#include "sblaster.h"
#include "ssi2001.h"
#include "stereo_fx.h"
#include "dectalk.h"
#include "sb16.h"
// network
#include "3c503.h"
#include "ne1000.h"
#include "ne2000.h"
#include "3c505.h"
#include "3xtwin.h"
#include "eis_sad8852.h"
#include "eis_twib.h"
#include "ne1000.h"
#include "ne2000.h"
#include "np600.h"
#include "3xtwin.h"
// communication ports
#include "lpt.h"
#include "com.h"
#include "lpt.h"
#include "pds.h"
// other
#include "hpblp.h"
#include "bblue2.h"
#include "chessmdr.h"
#include "chessmsr.h"
#include "finalchs.h"
#include "bblue2.h"
#include "hpblp.h"
#include "opus100pm.h"
@ -134,6 +135,7 @@ void pc_isa8_cards(device_slot_interface &device)
device.option_add("ibm_mfc", ISA8_IBM_MFC);
device.option_add("wd1002a_wx1", ISA8_WD1002A_WX1);
device.option_add("dectalk", ISA8_DECTALK);
device.option_add("prose4k1", ISA8_PROSE4001);
device.option_add("pds", ISA8_PDS);
device.option_add("lba_enhancer", ISA8_LBA_ENHANCER);
device.option_add("asc88", ASC88);
@ -182,6 +184,7 @@ void pc_isa16_cards(device_slot_interface &device)
device.option_add("ibm_mfc", ISA8_IBM_MFC);
device.option_add("fdcsmc", ISA8_FDC_SMC);
device.option_add("dectalk", ISA8_DECTALK);
device.option_add("prose4k1", ISA8_PROSE4001);
device.option_add("pds", ISA8_PDS);
device.option_add("lba_enhancer", ISA8_LBA_ENHANCER);
device.option_add("chessmdr", ISA8_CHESSMDR);

View File

@ -0,0 +1,92 @@
// license:BSD-3-Clause
// copyright-holders:Vas Crabb
/*
Speech Plus Prose 4001 speech synthesiser
Full-length ISA card. Supports operation in IBM PC mode (as an ISA bus
card) and standalone mode (controlled over a seria connection). The
example the ROMs were dumped from had many components unpopulated.
Major components include:
* Siemens 80188-N CPU
* NEC D77P20 DSP with EPROM memory
* Three TI 27C512 EPROMS
* 256 kbit SRAM
* Intel P8251A UART
* Three banks of eight DIP switches
*/
#include "emu.h"
#include "prose4k1.h"
#include "cpu/i86/i186.h"
#include "machine/i8251.h"
namespace {
class prose4k1_device : public device_t, public device_isa8_card_interface
{
public:
static constexpr feature_type unemulated_features() { return feature::SOUND; }
prose4k1_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock) :
device_t(mconfig, ISA8_PROSE4001, tag, owner, clock),
device_isa8_card_interface(mconfig, *this)
{
}
protected:
// device_t implementation
virtual tiny_rom_entry const *device_rom_region() const override ATTR_COLD;
virtual void device_add_mconfig(machine_config &config) override ATTR_COLD;
virtual void device_start() override ATTR_COLD;
private:
void main_map(address_map &map) ATTR_COLD;
};
ROM_START(prose4k1)
ROM_REGION(0x3'0000, "u8", 0)
ROM_LOAD("v3.4.1_pr4001.u3", 0x0'0000, 0x1'0000, CRC(12dac3ed) SHA1(cf8c0b9de1f00facbc5cb5dc8e2dcbb09d6ff479)) // TMS27C512, printed label
ROM_LOAD("v3.4.1_pr4001.u2", 0x1'0000, 0x1'0000, CRC(2ee241b7) SHA1(35b81f3b4deb552511f8d8f2d0aac9100fdee49d)) // TMS27C512, printed label
ROM_LOAD("v3.4.1_pr4001.u1", 0x2'0000, 0x1'0000, CRC(559f4950) SHA1(5c8709c82dadaea7012859c20141ef8f59d5e473)) // TMS27C512, handwritten label
ROM_REGION32_BE(0x0800, "dsp:prg", 0) // 512*23-bit words
ROM_LOAD("v3.12_5_04_90.prg", 0x0000, 0x0800, NO_DUMP)
ROM_REGION16_BE(0x0400, "dsp:dat", 0) // 512*13-bit words
ROM_LOAD("v3.12_5_04_90.dat", 0x0000, 0x0400, NO_DUMP)
ROM_END
tiny_rom_entry const *prose4k1_device::device_rom_region() const
{
return ROM_NAME(prose4k1);
}
void prose4k1_device::device_add_mconfig(machine_config &config)
{
I80188(config, "u8", 8'000'000).set_addrmap(AS_PROGRAM, &prose4k1_device::main_map); // TODO: measure clock
I8251(config, "u27", 0);
}
void prose4k1_device::device_start()
{
}
void prose4k1_device::main_map(address_map &map)
{
map(0x0'0000, 0x0'8000).ram();
map(0xd'0000, 0xf'ffff).rom().region("u8", 0x0'0000);
}
} // anonymous namespace
DEFINE_DEVICE_TYPE_PRIVATE(ISA8_PROSE4001, device_isa8_card_interface, prose4k1_device, "isa_prose4001", "Speech Plus Prose 4001 (IBM PC mode)")

View File

@ -0,0 +1,13 @@
// license:BSD-3-Clause
// copyright-holders:Vas Crabb
#ifndef MAME_BUS_ISA_PROSE4K1_H
#define MAME_BUS_ISA_PROSE4K1_H
#pragma once
#include "isa.h"
DECLARE_DEVICE_TYPE(ISA8_PROSE4001, device_isa8_card_interface)
#endif // MAME_BUS_ISA_PROSE4K1_H

View File

@ -5642,106 +5642,26 @@ static INPUT_PORTS_START( hanakanz )
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_CONDITION("BET",0x40,EQUALS,0x00) PORT_CODE(KEYCODE_4) // pay
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("BET",0x40,EQUALS,0x40)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) // Test
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR(Test)) // Test
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) // analyzer
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // data clear
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) // note
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN ) // key-in
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN)
PORT_START("KEY0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_HANAFUDA_A )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_HANAFUDA_E )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // I
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_HANAFUDA_YES )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) PORT_CONDITION("BET",0x40,EQUALS,0x00) // "t"
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("BET",0x40,EQUALS,0x40)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
PORT_INCLUDE(dynax_hanafuda_keys_bet)
PORT_START("KEY1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_HANAFUDA_B )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_HANAFUDA_F )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // J
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_HANAFUDA_NO )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) PORT_CONDITION("BET",0x40,EQUALS,0x00) // "s"
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("BET",0x40,EQUALS,0x40)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // BET
PORT_MODIFY("KEY2")
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_HANAFUDA_G )
PORT_START("KEY2")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_HANAFUDA_C )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_HANAFUDA_G ) PORT_CONDITION("BET",0x40,EQUALS,0x40)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("BET",0x40,EQUALS,0x00)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // K
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) PORT_CONDITION("BET",0x40,EQUALS,0x00) // "b"
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("BET",0x40,EQUALS,0x40)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // Ron
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_MODIFY("KEY3")
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_HANAFUDA_H )
PORT_START("KEY3")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_HANAFUDA_D )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_HANAFUDA_H ) PORT_CONDITION("BET",0x40,EQUALS,0x40)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("BET",0x40,EQUALS,0x00)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // L
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) PORT_CONDITION("BET",0x40,EQUALS,0x00) // "w"
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("BET",0x40,EQUALS,0x40)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_MODIFY("KEY7")
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_HANAFUDA_G ) PORT_PLAYER(2)
PORT_START("KEY4")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) PORT_CONDITION("BET",0x40,EQUALS,0x40)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("BET",0x40,EQUALS,0x00)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("KEY5")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_HANAFUDA_A ) PORT_PLAYER(2) // A
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_HANAFUDA_E ) PORT_PLAYER(2) // E
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // I
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_HANAFUDA_YES ) PORT_PLAYER(2)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) PORT_CONDITION("BET",0x40,EQUALS,0x00) PORT_PLAYER(2) // "t"
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("BET",0x40,EQUALS,0x40)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
PORT_START("KEY6")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_HANAFUDA_B ) PORT_PLAYER(2) // B
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_HANAFUDA_F ) PORT_PLAYER(2)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // J
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_HANAFUDA_NO ) PORT_PLAYER(2)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) PORT_CONDITION("BET",0x40,EQUALS,0x00) PORT_PLAYER(2) // "s"
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("BET",0x40,EQUALS,0x40)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // BET
PORT_START("KEY7")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_HANAFUDA_C ) PORT_PLAYER(2) // C
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_HANAFUDA_G ) PORT_CONDITION("BET",0x40,EQUALS,0x40) PORT_PLAYER(2)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("BET",0x40,EQUALS,0x00)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // K
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) PORT_CONDITION("BET",0x40,EQUALS,0x00) PORT_PLAYER(2) // "b"
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("BET",0x40,EQUALS,0x40)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // Ron
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("KEY8")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_HANAFUDA_D ) PORT_PLAYER(2) // D
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_HANAFUDA_H ) PORT_CONDITION("BET",0x40,EQUALS,0x40) PORT_PLAYER(2)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("BET",0x40,EQUALS,0x00)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // L
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) PORT_CONDITION("BET",0x40,EQUALS,0x00) PORT_PLAYER(2) // "w"
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("BET",0x40,EQUALS,0x40)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("KEY9")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) PORT_CONDITION("BET",0x40,EQUALS,0x40) PORT_PLAYER(2)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("BET",0x40,EQUALS,0x00)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_MODIFY("KEY8")
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_HANAFUDA_H ) PORT_PLAYER(2)
PORT_START("DSW1")
PORT_DIPNAME( 0x07, 0x07, "Unknown 1-0&1&2" )
@ -5764,27 +5684,33 @@ static INPUT_PORTS_START( hanakanz )
PORT_DIPSETTING( 0x40, "1" )
PORT_DIPSETTING( 0x20, "2" )
PORT_DIPSETTING( 0x00, "3" )
PORT_DIPNAME( 0x80, 0x80, "Unknown 1-7" )
PORT_DIPSETTING( 0x00, "5" )
PORT_DIPSETTING( 0x80, "10" )
PORT_DIPNAME( 0x80, 0x80, "Key-In Rate" ) PORT_DIPLOCATION("SW1:8")
PORT_DIPSETTING( 0x00, "5" ) PORT_CONDITION("DSW2", 0x03, EQUALS, 0x03)
PORT_DIPSETTING( 0x00, "10" ) PORT_CONDITION("DSW2", 0x03, EQUALS, 0x02)
PORT_DIPSETTING( 0x00, "25" ) PORT_CONDITION("DSW2", 0x03, EQUALS, 0x01)
PORT_DIPSETTING( 0x00, "50" ) PORT_CONDITION("DSW2", 0x03, EQUALS, 0x00)
PORT_DIPSETTING( 0x80, "10" ) PORT_CONDITION("DSW2", 0x03, EQUALS, 0x03)
PORT_DIPSETTING( 0x80, "20" ) PORT_CONDITION("DSW2", 0x03, EQUALS, 0x02)
PORT_DIPSETTING( 0x80, "50" ) PORT_CONDITION("DSW2", 0x03, EQUALS, 0x01)
PORT_DIPSETTING( 0x80, "100" ) PORT_CONDITION("DSW2", 0x03, EQUALS, 0x00)
PORT_START("DSW2")
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) )
PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x01, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
PORT_DIPNAME( 0x0c, 0x0c, "Unknown 2-2&3" )
PORT_DIPSETTING( 0x0c, "10" )
PORT_DIPSETTING( 0x08, "20" )
PORT_DIPSETTING( 0x04, "30" )
PORT_DIPSETTING( 0x00, "50" )
PORT_DIPNAME( 0x30, 0x30, "Unknown 2-4&5" )
PORT_DIPNAME( 0x03, 0x03, DEF_STR(Coinage) ) PORT_DIPLOCATION("SW2:1,2")
PORT_DIPSETTING( 0x03, DEF_STR(1C_1C) )
PORT_DIPSETTING( 0x02, DEF_STR(1C_2C) )
PORT_DIPSETTING( 0x01, DEF_STR(1C_5C) )
PORT_DIPSETTING( 0x00, "1 Coin/10 Credits" )
PORT_DIPNAME( 0x0c, 0x0c, "Minimum Bet" ) PORT_DIPLOCATION("SW2:3,4")
PORT_DIPSETTING( 0x0c, "1" )
PORT_DIPSETTING( 0x08, "2" )
PORT_DIPSETTING( 0x04, "3" )
PORT_DIPSETTING( 0x00, "5" )
PORT_DIPNAME( 0x30, 0x30, "Gokou Odds" ) PORT_DIPLOCATION("SW2:5,6")
PORT_DIPSETTING( 0x30, "100" )
PORT_DIPSETTING( 0x20, "200" )
PORT_DIPSETTING( 0x10, "250" )
PORT_DIPSETTING( 0x00, "300" )
PORT_DIPNAME( 0xc0, 0xc0, "Unknown 2-6&7" )
PORT_DIPNAME( 0xc0, 0xc0, "Shikou Odds" ) PORT_DIPLOCATION("SW2:7,8")
PORT_DIPSETTING( 0xc0, "50" )
PORT_DIPSETTING( 0x80, "60" )
PORT_DIPSETTING( 0x40, "70" )
@ -5814,9 +5740,9 @@ static INPUT_PORTS_START( hanakanz )
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
PORT_START("DSW4")
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Demo_Sounds ) )
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x01, DEF_STR( On ) )
PORT_DIPNAME( 0x01, 0x01, DEF_STR(Demo_Sounds) ) PORT_DIPLOCATION("SW4:1")
PORT_DIPSETTING( 0x00, DEF_STR(Off) )
PORT_DIPSETTING( 0x01, DEF_STR(On) )
PORT_DIPNAME( 0x02, 0x02, "Unknown 4-1" )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
@ -5826,27 +5752,26 @@ static INPUT_PORTS_START( hanakanz )
PORT_DIPNAME( 0x08, 0x08, "Unknown 4-3" )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x10, "Unknown 4-4" )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x10, "Hand Lesson" ) PORT_DIPLOCATION("SW4:5")
PORT_DIPSETTING( 0x00, DEF_STR(Off) )
PORT_DIPSETTING( 0x10, DEF_STR(On) )
PORT_DIPNAME( 0x20, 0x20, "Unknown 4-5" )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, "Keyboard" )
PORT_DIPSETTING( 0x40, "Hanafuda" )
PORT_DIPSETTING( 0x00, "Mahjong" )
PORT_DIPNAME( 0x80, 0x80, "Unknown 4-7" )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0xc0, 0xc0, DEF_STR(Controls) ) PORT_DIPLOCATION("SW4:7,8")
PORT_DIPSETTING( 0xc0, "Hanafuda Panel" ) // (numbers/yes/no, uses take/w-up/big/small)
PORT_DIPSETTING( 0x80, "Mahjong Panel" ) // (letters, uses take/w-up/big/small)
PORT_DIPSETTING( 0x40, "Hanafuda Amusement" ) // (numbers/yes/no, doesn't use take/w-up/big/small)
PORT_DIPSETTING( 0x00, "Mahjong Amusement" ) // (letters, doesn't use take/w-up/big/small)
PORT_START("DSW5")
PORT_DIPNAME( 0x01, 0x01, "Unknown 1-8" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x01, 0x01, "Maximum Bet" ) PORT_DIPLOCATION("SW1:9")
PORT_DIPSETTING( 0x00, "5" )
PORT_DIPSETTING( 0x01, "10" )
PORT_DIPNAME( 0x02, 0x02, "Unknown 1-9" )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x0c, 0x0c, "Unknown 2-8&9" )
PORT_DIPNAME( 0x0c, 0x0c, "Ameshikou Odds" ) PORT_DIPLOCATION("SW2:9,10")
PORT_DIPSETTING( 0x0c, "20" )
PORT_DIPSETTING( 0x08, "30" )
PORT_DIPSETTING( 0x04, "40" )
@ -5854,18 +5779,20 @@ static INPUT_PORTS_START( hanakanz )
PORT_DIPNAME( 0x10, 0x10, "Unknown 3-8" )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, "Unknown 3-9" )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, "Gal Voice" ) PORT_DIPLOCATION("SW3:10")
PORT_DIPSETTING( 0x00, DEF_STR(Off) )
PORT_DIPSETTING( 0x20, DEF_STR(On) )
PORT_DIPNAME( 0x40, 0x40, "Unknown 4-8" )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
PORT_DIPNAME( 0x80, 0x80, DEF_STR(Service_Mode) ) PORT_DIPLOCATION("SW4:10")
PORT_DIPSETTING( 0x80, DEF_STR(Off) )
PORT_DIPSETTING( 0x00, DEF_STR(On) )
PORT_START("BET")
PORT_DIPNAME( 0x40, 0x40, "Allow Bets" )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, "Auto Bet" )
PORT_DIPSETTING( 0x40, DEF_STR(Off) )
PORT_DIPSETTING( 0x00, DEF_STR(On) ) // overrides game mode setting, any credits added are bet immediately
PORT_START("HOPPER")
PORT_DIPNAME( 0x40, 0x40, "? Hopper M." )
@ -5989,10 +5916,10 @@ static INPUT_PORTS_START( hkagerou )
PORT_DIPSETTING( 0x00, DEF_STR(Off) ) // 無
PORT_DIPSETTING( 0x20, DEF_STR(On) ) // 有
PORT_DIPNAME( 0xc0, 0xc0, DEF_STR(Controls) ) PORT_DIPLOCATION("SW4:7,8") // パネルタイプ
PORT_DIPSETTING( 0xc0, "Hanafuda Panel" ) // 花札パネル 表示
PORT_DIPSETTING( 0x80, "Mahjong Panel" ) // 麻雀パネル 表示
PORT_DIPSETTING( 0x40, "Hanafuda Amusement" ) // 花札アミューズメント表示 (doesn't use take/w-up/big/small)
PORT_DIPSETTING( 0x00, "Mahjong Amusement" ) // 麻雀アミューズメント表示 (doesn't use take/w-up/big/small)
PORT_DIPSETTING( 0xc0, "Hanafuda Panel" ) // 花札パネル 表示 (numbers/yes/no, uses take/w-up/big/small)
PORT_DIPSETTING( 0x80, "Mahjong Panel" ) // 麻雀パネル 表示 (letters, uses take/w-up/big/small)
PORT_DIPSETTING( 0x40, "Hanafuda Amusement" ) // 花札アミューズメント表示 (numbers/yes/no, doesn't use take/w-up/big/small)
PORT_DIPSETTING( 0x00, "Mahjong Amusement" ) // 麻雀アミューズメント表示 (letters, doesn't use take/w-up/big/small)
PORT_START("DSW5")
PORT_DIPNAME( 0x01, 0x01, "Maximum Bet" ) PORT_DIPLOCATION("SW1:9") // ベットMAX
@ -6011,8 +5938,6 @@ static INPUT_PORTS_START( hkagerou )
PORT_DIPSETTING( 0x00, DEF_STR(Off) ) // 無
PORT_DIPSETTING( 0x20, DEF_STR(On) ) // 有
PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "SW4:9" ) // OFF固定
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR(Service_Mode) ) PORT_DIPLOCATION("SW4:10")
PORT_DIPSETTING( 0x80, DEF_STR(Off) ) // ゲームモード
PORT_DIPSETTING( 0x00, DEF_STR(On) ) // テストモード