Skip to content

Commit b7c8cc8

Browse files
committed
- atari/jaguar.cpp: adjusted clock of the MIPS based games to the actual chip type [Brian Troha]
- igs/igs017.cpp: added NVRAM support to most sets - seta/simple_st0016.cpp: added controls for dcrown [Brian Troha] - seta/st0016.cpp: adjusted some visible areas, added some notes
1 parent e0268b3 commit b7c8cc8

File tree

4 files changed

+104
-22
lines changed

4 files changed

+104
-22
lines changed

src/mame/atari/jaguar.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
Components:
4141
sdt79r3041-20j
4242
Atari Jaguar CPU V1.0 6sc880hf106
43-
Atari Jaguar DSP V1.0 sc414201ft (has Motorolla logo)
43+
Atari Jaguar DSP V1.0 sc414201ft (has Motorola logo)
4444
Altera epm7128elc84-15 marked A-21652
4545
VIA vt83c461 IDE controller
4646
Actel a1010b marked A-22096 near IDE and gun inputs
@@ -1760,7 +1760,7 @@ void jaguar_state::video_config(machine_config &config, const XTAL clock)
17601760
void jaguar_state::cojagr3k(machine_config &config)
17611761
{
17621762
/* basic machine hardware */
1763-
R3041(config, m_maincpu, R3000_CLOCK).set_endianness(ENDIANNESS_BIG);
1763+
R3041(config, m_maincpu, R3000_CLOCK / 2).set_endianness(ENDIANNESS_BIG); // divider not verified, but chip is rated for 20 MHz
17641764
m_maincpu->set_addrmap(AS_PROGRAM, &jaguar_state::r3000_map);
17651765

17661766
video_config(config, COJAG_CLOCK/2);

src/mame/igs/igs017.cpp

+54-16
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ Year + Game PCB CPU Sound
2727
98 Manguan Caishen (V110C) NO-0266 68000 M6295 IGS031 IGS025 IGS026 Battery
2828
99 Tarzan (V107) NO-0228? Z180 U6295 IGS031 IGS025 IGS029 Battery
2929
99 Tarzan (V109C) NO-0248-1 Z180 U6295 IGS031 IGS025 Battery
30-
00 Chaoji Da manguan 2 - Jiaqiang Ban (V100C) NO-0271 68000 K668 IGS031 IGS025 Battery
30+
00 Chaoji Da Manguan 2 - Jiaqiang Ban (V100C) NO-0271 68000 K668 IGS031 IGS025 Battery
3131
00? Jungle King (V103A) NO-0230-1 Z180 U6295 IGS031 IGS025 (N9) Battery
3232
00? Super Tarzan (V100I) NO-0230-1 Z180 K668 IGS031 IGS025 Battery
3333
00? Happy Skill (V611IT) NO-0281 Z180 K668 IGS031 IGS025 Battery
@@ -38,10 +38,11 @@ Year + Game PCB CPU Sound
3838
not present in another set *
3939
To Do:
4040
41-
- Protection emulation in some games, instead of patching the roms.
42-
- NVRAM.
41+
- Protection emulation in some games, instead of patching the ROMs.
42+
- Do iqblocka and clones, genius6 and clones, tjsb support NVRAM?
4343
- mgcs: Finish IGS029 protection simulation.
4444
- jking302us: IGS025 and IGS029 protection simulation.
45+
- sdmg2: different protection that kicks in after several dozens of hands
4546
4647
Notes:
4748
@@ -88,6 +89,7 @@ To Do:
8889
#include "cpu/m68000/m68000.h"
8990
#include "cpu/z180/z180.h"
9091
#include "machine/i8255.h"
92+
#include "machine/nvram.h"
9193
#include "machine/ticket.h"
9294
#include "machine/timer.h"
9395
#include "sound/okim6295.h"
@@ -898,6 +900,7 @@ class igs017_state : public driver_device
898900
void cpoker2_io(address_map &map) ATTR_COLD;
899901
void cpoker2_map(address_map &map) ATTR_COLD;
900902
void cpoker2_mux_map(address_map &map) ATTR_COLD;
903+
void happyskl_map(address_map &map) ATTR_COLD;
901904
void happyskl_io(address_map &map) ATTR_COLD;
902905
void happyskl_mux_map(address_map &map) ATTR_COLD;
903906
void iqblocka_io(address_map &map) ATTR_COLD;
@@ -2144,7 +2147,7 @@ void igs017_state::igs_fixed_data_mux_map(address_map &map)
21442147
void igs017_state::iqblocka_map(address_map &map)
21452148
{
21462149
map(0x00000, 0x0dfff).rom();
2147-
map(0x0e000, 0x0efff).ram();
2150+
map(0x0e000, 0x0efff).ram().share("nvram");
21482151
map(0x0f000, 0x0ffff).ram();
21492152
map(0x10000, 0x3ffff).rom();
21502153
}
@@ -2283,6 +2286,13 @@ void igs017_state::starzan_mux_map(address_map &map)
22832286

22842287
// happyksl
22852288

2289+
void igs017_state::happyskl_map(address_map &map)
2290+
{
2291+
map(0x00000, 0x0dfff).rom();
2292+
map(0x0e000, 0x0ffff).ram().share("nvram");
2293+
map(0x10000, 0x3ffff).rom();
2294+
}
2295+
22862296
void igs017_state::happyskl_io(address_map &map)
22872297
{
22882298
map(0x0000, 0x7fff).rw(m_igs017_igs031, FUNC(igs017_igs031_device::read), FUNC(igs017_igs031_device::write));
@@ -2623,7 +2633,7 @@ u8 igs017_state::mgcs_keys_joy_r()
26232633
void igs017_state::mgcs_map(address_map &map)
26242634
{
26252635
map(0x000000, 0x07ffff).rom();
2626-
map(0x300000, 0x303fff).ram();
2636+
map(0x300000, 0x303fff).ram().share("nvram");
26272637

26282638
map(0x49c000, 0x49c001).nopr().w(m_igs_mux, FUNC(igs_mux_device::address_w)).umask16(0x00ff); // clr.w dummy read
26292639
map(0x49c002, 0x49c003).rw(m_igs_mux, FUNC(igs_mux_device::data_r), FUNC(igs_mux_device::data_w)).umask16(0x00ff);
@@ -2647,7 +2657,7 @@ void igs017_state::mgcs_mux_map(address_map &map)
26472657
void igs017_state::mgcsa_map(address_map &map)
26482658
{
26492659
map(0x000000, 0x07ffff).rom();
2650-
map(0x100000, 0x103fff).ram();
2660+
map(0x100000, 0x103fff).ram().share("nvram");
26512661

26522662
map(0x49c000, 0x49c001).nopr().w(m_igs_mux, FUNC(igs_mux_device::address_w)).umask16(0x00ff); // clr.w dummy read
26532663
map(0x49c002, 0x49c003).rw(m_igs_mux, FUNC(igs_mux_device::data_r), FUNC(igs_mux_device::data_w)).umask16(0x00ff);
@@ -2661,7 +2671,7 @@ void igs017_state::mgcsa_map(address_map &map)
26612671
void igs017_state::mgcsb_map(address_map &map)
26622672
{
26632673
map(0x000000, 0x07ffff).rom();
2664-
map(0x300000, 0x303fff).ram();
2674+
map(0x300000, 0x303fff).ram().share("nvram");
26652675

26662676
map(0x49c000, 0x49c001).nopr().w(m_igs_mux, FUNC(igs_mux_device::address_w)).umask16(0x00ff); // clr.w dummy read
26672677
map(0x49c002, 0x49c003).rw(m_igs_mux, FUNC(igs_mux_device::data_r), FUNC(igs_mux_device::data_w)).umask16(0x00ff);
@@ -2693,7 +2703,7 @@ void igs017_state::sdmg2_map(address_map &map)
26932703
map(0x002007, 0x002007).w(m_igs_incdec, FUNC(igs_incdec_device::inc_w));
26942704
map(0x00200b, 0x00200b).r(m_igs_incdec, FUNC(igs_incdec_device::result_r));
26952705

2696-
map(0x1f0000, 0x1fffff).ram();
2706+
map(0x1f0000, 0x1fffff).ram().share("nvram");
26972707

26982708
map(0x200000, 0x20ffff).rw(m_igs017_igs031, FUNC(igs017_igs031_device::read), FUNC(igs017_igs031_device::write)).umask16(0x00ff);
26992709

@@ -2735,7 +2745,7 @@ void igs017_state::sdmg2_mux_map(address_map &map)
27352745
void igs017_state::mgdh_map(address_map &map)
27362746
{
27372747
map(0x000000, 0x07ffff).rom();
2738-
map(0x600000, 0x603fff).ram();
2748+
map(0x600000, 0x603fff).ram().share("nvram");
27392749

27402750
map(0x876000, 0x876001).nopr().w(m_igs_mux, FUNC(igs_mux_device::address_w)).umask16(0x00ff); // clr.w dummy read
27412751
map(0x876002, 0x876003).rw(m_igs_mux, FUNC(igs_mux_device::data_r), FUNC(igs_mux_device::data_w)).umask16(0x00ff);
@@ -2784,7 +2794,7 @@ void igs017_state::sdmg2p_map(address_map &map)
27842794
{
27852795
map(0x000000, 0x07ffff).rom();
27862796

2787-
map(0x100000, 0x103fff).ram();
2797+
map(0x100000, 0x103fff).ram().share("nvram");
27882798

27892799
map(0x38d000, 0x38d001).nopr().w(m_igs_mux, FUNC(igs_mux_device::address_w)).umask16(0x00ff); // clr.w dummy read
27902800
map(0x38d002, 0x38d003).rw(m_igs_mux, FUNC(igs_mux_device::data_r), FUNC(igs_mux_device::data_w)).umask16(0x00ff);
@@ -2879,7 +2889,7 @@ void igs017_state::lhzb2_map(address_map &map)
28792889

28802890
map(0x100000, 0x103fff).ram().share("igs022:sharedprotram"); // Shared with protection device
28812891

2882-
map(0x500000, 0x503fff).ram();
2892+
map(0x500000, 0x503fff).ram().share("nvram");
28832893

28842894
map(0x910000, 0x910001).nopr().w(m_igs_mux, FUNC(igs_mux_device::address_w)).umask16(0x00ff); // clr.w dummy read
28852895
map(0x910002, 0x910003).rw(m_igs_mux, FUNC(igs_mux_device::data_r), FUNC(igs_mux_device::data_w)).umask16(0x00ff);
@@ -3012,7 +3022,7 @@ void igs017_state::lhzb2a_map(address_map &map)
30123022
map(0x003207, 0x003207).w(m_igs_incdec, FUNC(igs_incdec_device::inc_w));
30133023
map(0x00320b, 0x00320b).r(m_igs_incdec, FUNC(igs_incdec_device::result_r));
30143024

3015-
map(0x500000, 0x503fff).ram();
3025+
map(0x500000, 0x503fff).ram().share("nvram");
30163026
// map(0x910000, 0x910003) accesses appear to be from leftover code where the final checks were disabled
30173027

30183028
map(0xb00000, 0xb0ffff).rw(m_igs017_igs031, FUNC(igs017_igs031_device::read), FUNC(igs017_igs031_device::write)).umask16(0x00ff);
@@ -3038,7 +3048,7 @@ void igs017_state::lhzb2a_mux_map(address_map &map)
30383048
void igs017_state::slqz2_map(address_map &map)
30393049
{
30403050
map(0x000000, 0x07ffff).rom();
3041-
map(0x100000, 0x103fff).ram();
3051+
map(0x100000, 0x103fff).ram().share("nvram");
30423052

30433053
map(0x300000, 0x303fff).ram().share("igs022:sharedprotram"); // Shared with protection device
30443054

@@ -3085,7 +3095,7 @@ void igs017_state::slqz2_mux_map(address_map &map)
30853095
void igs017_state::jking302us_map(address_map &map)
30863096
{
30873097
map(0x000000, 0x07ffff).rom();
3088-
map(0x100000, 0x103fff).ram();
3098+
map(0x100000, 0x103fff).ram().share("nvram"); // TODO: verify once it works
30893099

30903100
map(0x638000, 0x638001).nopr().w(m_igs_mux, FUNC(igs_mux_device::address_w)).umask16(0x00ff); // clr.w dummy read
30913101
map(0x638002, 0x638003).rw(m_igs_mux, FUNC(igs_mux_device::data_r), FUNC(igs_mux_device::data_w)).umask16(0x00ff);
@@ -4399,6 +4409,8 @@ void igs017_state::iqblocka(machine_config &config)
43994409
m_maincpu->set_addrmap(AS_IO, &igs017_state::iqblocka_io);
44004410
TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::iqblocka_interrupt), "screen", 0, 1);
44014411

4412+
// NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
4413+
44024414
// i/o
44034415
m_igs_mux->set_addrmap(0, &igs017_state::iqblocka_mux_map);
44044416

@@ -4456,6 +4468,8 @@ void igs017_state::tarzan(machine_config &config)
44564468
m_maincpu->set_addrmap(AS_OPCODES, &igs017_state::decrypted_opcodes_map);
44574469
TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::iqblocka_interrupt), "screen", 0, 1);
44584470

4471+
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
4472+
44594473
// I/O
44604474
m_igs_mux->set_addrmap(0, &igs017_state::tarzan_mux_map);
44614475

@@ -4489,6 +4503,8 @@ void igs017_state::starzan(machine_config &config)
44894503
m_maincpu->set_addrmap(AS_OPCODES, &igs017_state::decrypted_opcodes_map);
44904504
TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::iqblocka_interrupt), "screen", 0, 1);
44914505

4506+
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
4507+
44924508
// i/o
44934509
m_igs_mux->set_addrmap(0, &igs017_state::starzan_mux_map);
44944510

@@ -4518,11 +4534,13 @@ void igs017_state::happyskl(machine_config &config)
45184534
base_machine_oki(config, 16_MHz_XTAL / 16);
45194535

45204536
HD64180RP(config, m_maincpu, 16_MHz_XTAL);
4521-
m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::iqblocka_map);
4537+
m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::happyskl_map);
45224538
m_maincpu->set_addrmap(AS_IO, &igs017_state::happyskl_io);
45234539
m_maincpu->set_addrmap(AS_OPCODES, &igs017_state::decrypted_opcodes_map);
45244540
TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::iqblocka_interrupt), "screen", 0, 1);
45254541

4542+
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
4543+
45264544
// i/o
45274545
m_igs_mux->set_addrmap(0, &igs017_state::happyskl_mux_map);
45284546

@@ -4548,6 +4566,8 @@ void igs017_state::cpoker2(machine_config &config)
45484566
m_maincpu->set_addrmap(AS_IO, &igs017_state::cpoker2_io);
45494567
TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::iqblocka_interrupt), "screen", 0, 1);
45504568

4569+
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
4570+
45514571
// i/o
45524572
m_igs_mux->set_addrmap(0, &igs017_state::cpoker2_mux_map);
45534573

@@ -4609,6 +4629,8 @@ void igs017_state::spkrform(machine_config &config)
46094629
m_maincpu->set_addrmap(AS_IO, &igs017_state::spkrform_io);
46104630
TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::iqblocka_interrupt), "screen", 0, 1);
46114631

4632+
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
4633+
46124634
// i/o
46134635
m_igs_mux->set_addrmap(0, &igs017_state::spkrform_mux_map);
46144636

@@ -4649,6 +4671,8 @@ void igs017_state::mgcs(machine_config &config)
46494671
m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::mgcs_map);
46504672
TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::mgcs_interrupt), "screen", 0, 1);
46514673

4674+
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
4675+
46524676
// i/o
46534677
m_igs_mux->set_addrmap(0, &igs017_state::mgcs_mux_map);
46544678

@@ -4692,6 +4716,8 @@ void igs017_state::lhzb2(machine_config &config)
46924716
m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::lhzb2_map);
46934717
TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::mgcs_interrupt), "screen", 0, 1);
46944718

4719+
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
4720+
46954721
// i/o
46964722
m_igs_mux->set_addrmap(0, &igs017_state::lhzb2_mux_map);
46974723

@@ -4727,6 +4753,8 @@ void igs017_state::lhzb2a(machine_config &config)
47274753
m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::lhzb2a_map);
47284754
TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::mgcs_interrupt), "screen", 0, 1);
47294755

4756+
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
4757+
47304758
MCFG_MACHINE_RESET_OVERRIDE(igs017_state, lhzb2a)
47314759

47324760
// i/o
@@ -4764,6 +4792,8 @@ void igs017_state::slqz2(machine_config &config)
47644792
m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::slqz2_map);
47654793
TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::mgcs_interrupt), "screen", 0, 1);
47664794

4795+
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
4796+
47674797
// i/o
47684798
m_igs_mux->set_addrmap(0, &igs017_state::slqz2_mux_map);
47694799

@@ -4793,6 +4823,8 @@ void igs017_state::sdmg2(machine_config &config)
47934823
m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::sdmg2_map);
47944824
TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::mgcs_interrupt), "screen", 0, 1);
47954825

4826+
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
4827+
47964828
// i/o
47974829
m_igs_mux->set_addrmap(0, &igs017_state::sdmg2_mux_map);
47984830

@@ -4828,6 +4860,8 @@ void igs017_state::mgdha(machine_config &config)
48284860
m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::mgdh_map);
48294861
TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::mgdh_interrupt), "screen", 0, 1);
48304862

4863+
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
4864+
48314865
// i/o
48324866
m_igs_mux->set_addrmap(0, &igs017_state::mgdha_mux_map);
48334867

@@ -4854,6 +4888,8 @@ void igs017_state::sdmg2p(machine_config &config)
48544888
m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::sdmg2p_map);
48554889
TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::mgcs_interrupt), "screen", 0, 1);
48564890

4891+
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
4892+
48574893
// i/o
48584894
m_igs_mux->set_addrmap(0, &igs017_state::sdmg2p_mux_map);
48594895

@@ -4874,6 +4910,8 @@ void igs017_state::jking302us(machine_config &config)
48744910
m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::jking302us_map);
48754911
TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::mgdh_interrupt), "screen", 0, 1);
48764912

4913+
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
4914+
48774915
// i/o
48784916
m_igs_mux->set_addrmap(0, &igs017_state::jking302us_mux_map);
48794917

@@ -6187,7 +6225,7 @@ GAME ( 1996, iqblocka, iqblock, iqblocka, iqblocka, igs017_state, init
61876225
GAME ( 1997, iqblockf, iqblock, iqblockf, iqblockf, igs017_state, init_iqblocka, ROT0, "IGS", "IQ Block (V113FR, gambling)", 0 )
61886226
GAME ( 1997, mgdh, 0, mgdh, mgdh, igs017_state, init_mgdh, ROT0, "IGS", "Manguan Daheng (Taiwan, V125T1)", MACHINE_IMPERFECT_COLORS | MACHINE_UNEMULATED_PROTECTION) // 滿貫大亨, wrong colors in betting screen, game id check (patched out)
61896227
GAME ( 1997, mgdha, mgdh, mgdha, mgdh, igs017_state, init_mgdha, ROT0, "IGS", "Manguan Daheng (Taiwan, V123T1)", 0 ) // 滿貫大亨
6190-
GAME ( 1997, sdmg2, 0, sdmg2, sdmg2, igs017_state, init_sdmg2, ROT0, "IGS", "Chaoji Da Manguan II (China, V765C)", 0 ) // 超級大滿貫II
6228+
GAME ( 1997, sdmg2, 0, sdmg2, sdmg2, igs017_state, init_sdmg2, ROT0, "IGS", "Chaoji Da Manguan II (China, V765C)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) // 超級大滿貫II
61916229
GAME ( 1997, sdmg2754ca, sdmg2, sdmg2, sdmg2, igs017_state, init_sdmg2754ca, ROT0, "IGS", "Chaoji Da Manguan II (China, V754C, set 1)", 0 ) // 超級大滿貫II
61926230
GAME ( 1997, sdmg2754cb, sdmg2, sdmg2, sdmg2, igs017_state, init_sdmg2754cb, ROT0, "IGS", "Chaoji Da Manguan II (China, V754C, set 2)", 0 ) // 超級大滿貫II
61936231
GAME ( 1997, tjsb, 0, tjsb, tjsb, igs017_state, init_tjsb, ROT0, "IGS", "Tian Jiang Shen Bing (China, V137C)", MACHINE_UNEMULATED_PROTECTION ) // 天將神兵, fails the bonus round protection check (if enabled via DSW), see e.g. demo mode

src/mame/seta/simple_st0016.cpp

+39-2
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
1515
Todo:
1616
- find NMI source, and NMI enable/disable (timer ? video hw ?)
17+
- test modes for crownpkr and dcrown show flip support problems
1718
1819
Dips verified for Neratte Chu (nratechu) from manual
1920
*/
@@ -51,6 +52,7 @@ class st0016_state : public driver_device
5152
void mayjinsn(machine_config &config) ATTR_COLD;
5253

5354
void init_crownpkr() ATTR_COLD;
55+
void init_dcrown() ATTR_COLD;
5456
void init_nratechu() ATTR_COLD;
5557
void init_mayjinsn() ATTR_COLD;
5658
void init_mayjisn2() ATTR_COLD;
@@ -445,6 +447,36 @@ static INPUT_PORTS_START( crownpkr )
445447
PORT_SERVICE( 0x08, IP_ACTIVE_LOW ) // only works if pressed during boot
446448
INPUT_PORTS_END
447449

450+
static INPUT_PORTS_START( dcrown )
451+
PORT_INCLUDE( st0016 )
452+
453+
PORT_MODIFY("P1")
454+
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT )
455+
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effect in test mode
456+
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SLOT_STOP1 ) PORT_NAME("Stop Reel 1 / Double Up")
457+
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SLOT_STOP3 ) PORT_NAME("Stop Reel 3 / Bet on Black" )
458+
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effect in test mode
459+
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effect in test mode
460+
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) // TODO: hopper
461+
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_TAKE )
462+
463+
PORT_MODIFY("P2")
464+
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_BET )
465+
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START1 )
466+
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SLOT_STOP2 ) PORT_NAME("Stop Reel 2 / Bet on Red / Show Paytable" )
467+
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effect in test mode
468+
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effect in test mode
469+
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effect in test mode
470+
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME( "Modern Equipment" ) // TODO: what's this? machine translation doesn't seem correct
471+
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effect in test mode
472+
473+
PORT_MODIFY("SYSTEM")
474+
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
475+
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5)
476+
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(10) // TODO: simulate coin drop sensor
477+
PORT_SERVICE( 0x08, IP_ACTIVE_LOW )
478+
INPUT_PORTS_END
479+
448480
static INPUT_PORTS_START( mayjisn2 )
449481
PORT_INCLUDE( st0016 )
450482

@@ -824,6 +856,11 @@ void st0016_state::init_crownpkr()
824856
m_maincpu->set_game_flag(2);
825857
}
826858

859+
void st0016_state::init_dcrown()
860+
{
861+
m_maincpu->set_game_flag(3);
862+
}
863+
827864
void st0016_state::init_mayjinsn()
828865
{
829866
m_maincpu->set_game_flag(4 /*| 0x80*/);
@@ -852,5 +889,5 @@ GAME( 2001, gostop, 0, st0016, gostop, st0016_state, init_renju,
852889
// Not working
853890
GAME( 1994, mayjinsn, 0, mayjinsn, st0016, st0016_state, init_mayjinsn, ROT0, "Seta", "Mayjinsen", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
854891
GAME( 1997, crownpkr, 0, st0016, crownpkr, st0016_state, init_crownpkr, ROT0, "<unknown>", "Crown Poker (ver. 1.20)", MACHINE_NOT_WORKING | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // coining in doesn't work
855-
GAME( 1994, dcrown, 0, st0016, crownpkr, st0016_state, init_crownpkr, ROT0, "Nippon Data Kiki", "Dream Crown (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // (c) 1994 Nippon Data Kiki is uploaded near the Japanese Insert coin text
856-
GAME( 1994, dcrowna, dcrown, st0016, crownpkr, st0016_state, init_crownpkr, ROT0, "Nippon Data Kiki", "Dream Crown (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // the Insert Coin text has been translated to English and no (c) is uploaded
892+
GAME( 1994, dcrown, 0, st0016, dcrown, st0016_state, init_dcrown, ROT0, "Nippon Data Kiki", "Dream Crown (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // (c) 1994 Nippon Data Kiki is uploaded near the Japanese Insert coin text
893+
GAME( 1994, dcrowna, dcrown, st0016, dcrown, st0016_state, init_dcrown, ROT0, "Nippon Data Kiki", "Dream Crown (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // the Insert Coin text has been translated to English and no (c) is uploaded

0 commit comments

Comments
 (0)