diff options
author | 2025-04-29 20:41:30 +0200 | |
---|---|---|
committer | 2025-04-29 20:41:30 +0200 | |
commit | b7c8cc8f400ddecd585620beaccc210e7b0d87a0 (patch) | |
tree | f3acc55b4a75758419ce9af3c1e4d403ba80bf48 | |
parent | e0268b35b2a4b14997586bdf8f27ad4545d77f4c (diff) |
- 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
-rw-r--r-- | src/mame/atari/jaguar.cpp | 4 | ||||
-rw-r--r-- | src/mame/igs/igs017.cpp | 70 | ||||
-rw-r--r-- | src/mame/seta/simple_st0016.cpp | 41 | ||||
-rw-r--r-- | src/mame/seta/st0016.cpp | 11 |
4 files changed, 104 insertions, 22 deletions
diff --git a/src/mame/atari/jaguar.cpp b/src/mame/atari/jaguar.cpp index df74019350c..352b62a9141 100644 --- a/src/mame/atari/jaguar.cpp +++ b/src/mame/atari/jaguar.cpp @@ -40,7 +40,7 @@ Components: sdt79r3041-20j Atari Jaguar CPU V1.0 6sc880hf106 - Atari Jaguar DSP V1.0 sc414201ft (has Motorolla logo) + Atari Jaguar DSP V1.0 sc414201ft (has Motorola logo) Altera epm7128elc84-15 marked A-21652 VIA vt83c461 IDE controller 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) void jaguar_state::cojagr3k(machine_config &config) { /* basic machine hardware */ - R3041(config, m_maincpu, R3000_CLOCK).set_endianness(ENDIANNESS_BIG); + R3041(config, m_maincpu, R3000_CLOCK / 2).set_endianness(ENDIANNESS_BIG); // divider not verified, but chip is rated for 20 MHz m_maincpu->set_addrmap(AS_PROGRAM, &jaguar_state::r3000_map); video_config(config, COJAG_CLOCK/2); diff --git a/src/mame/igs/igs017.cpp b/src/mame/igs/igs017.cpp index f399f17d36a..6daced93f00 100644 --- a/src/mame/igs/igs017.cpp +++ b/src/mame/igs/igs017.cpp @@ -27,7 +27,7 @@ Year + Game PCB CPU Sound 98 Manguan Caishen (V110C) NO-0266 68000 M6295 IGS031 IGS025 IGS026 Battery 99 Tarzan (V107) NO-0228? Z180 U6295 IGS031 IGS025 IGS029 Battery 99 Tarzan (V109C) NO-0248-1 Z180 U6295 IGS031 IGS025 Battery -00 Chaoji Da manguan 2 - Jiaqiang Ban (V100C) NO-0271 68000 K668 IGS031 IGS025 Battery +00 Chaoji Da Manguan 2 - Jiaqiang Ban (V100C) NO-0271 68000 K668 IGS031 IGS025 Battery 00? Jungle King (V103A) NO-0230-1 Z180 U6295 IGS031 IGS025 (N9) Battery 00? Super Tarzan (V100I) NO-0230-1 Z180 K668 IGS031 IGS025 Battery 00? Happy Skill (V611IT) NO-0281 Z180 K668 IGS031 IGS025 Battery @@ -38,10 +38,11 @@ Year + Game PCB CPU Sound not present in another set * To Do: -- Protection emulation in some games, instead of patching the roms. -- NVRAM. +- Protection emulation in some games, instead of patching the ROMs. +- Do iqblocka and clones, genius6 and clones, tjsb support NVRAM? - mgcs: Finish IGS029 protection simulation. - jking302us: IGS025 and IGS029 protection simulation. +- sdmg2: different protection that kicks in after several dozens of hands Notes: @@ -88,6 +89,7 @@ Notes: #include "cpu/m68000/m68000.h" #include "cpu/z180/z180.h" #include "machine/i8255.h" +#include "machine/nvram.h" #include "machine/ticket.h" #include "machine/timer.h" #include "sound/okim6295.h" @@ -898,6 +900,7 @@ private: void cpoker2_io(address_map &map) ATTR_COLD; void cpoker2_map(address_map &map) ATTR_COLD; void cpoker2_mux_map(address_map &map) ATTR_COLD; + void happyskl_map(address_map &map) ATTR_COLD; void happyskl_io(address_map &map) ATTR_COLD; void happyskl_mux_map(address_map &map) ATTR_COLD; void iqblocka_io(address_map &map) ATTR_COLD; @@ -2144,7 +2147,7 @@ void igs017_state::igs_fixed_data_mux_map(address_map &map) void igs017_state::iqblocka_map(address_map &map) { map(0x00000, 0x0dfff).rom(); - map(0x0e000, 0x0efff).ram(); + map(0x0e000, 0x0efff).ram().share("nvram"); map(0x0f000, 0x0ffff).ram(); map(0x10000, 0x3ffff).rom(); } @@ -2283,6 +2286,13 @@ void igs017_state::starzan_mux_map(address_map &map) // happyksl +void igs017_state::happyskl_map(address_map &map) +{ + map(0x00000, 0x0dfff).rom(); + map(0x0e000, 0x0ffff).ram().share("nvram"); + map(0x10000, 0x3ffff).rom(); +} + void igs017_state::happyskl_io(address_map &map) { 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() void igs017_state::mgcs_map(address_map &map) { map(0x000000, 0x07ffff).rom(); - map(0x300000, 0x303fff).ram(); + map(0x300000, 0x303fff).ram().share("nvram"); map(0x49c000, 0x49c001).nopr().w(m_igs_mux, FUNC(igs_mux_device::address_w)).umask16(0x00ff); // clr.w dummy read 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) void igs017_state::mgcsa_map(address_map &map) { map(0x000000, 0x07ffff).rom(); - map(0x100000, 0x103fff).ram(); + map(0x100000, 0x103fff).ram().share("nvram"); map(0x49c000, 0x49c001).nopr().w(m_igs_mux, FUNC(igs_mux_device::address_w)).umask16(0x00ff); // clr.w dummy read 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) void igs017_state::mgcsb_map(address_map &map) { map(0x000000, 0x07ffff).rom(); - map(0x300000, 0x303fff).ram(); + map(0x300000, 0x303fff).ram().share("nvram"); map(0x49c000, 0x49c001).nopr().w(m_igs_mux, FUNC(igs_mux_device::address_w)).umask16(0x00ff); // clr.w dummy read 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) map(0x002007, 0x002007).w(m_igs_incdec, FUNC(igs_incdec_device::inc_w)); map(0x00200b, 0x00200b).r(m_igs_incdec, FUNC(igs_incdec_device::result_r)); - map(0x1f0000, 0x1fffff).ram(); + map(0x1f0000, 0x1fffff).ram().share("nvram"); map(0x200000, 0x20ffff).rw(m_igs017_igs031, FUNC(igs017_igs031_device::read), FUNC(igs017_igs031_device::write)).umask16(0x00ff); @@ -2735,7 +2745,7 @@ void igs017_state::sdmg2_mux_map(address_map &map) void igs017_state::mgdh_map(address_map &map) { map(0x000000, 0x07ffff).rom(); - map(0x600000, 0x603fff).ram(); + map(0x600000, 0x603fff).ram().share("nvram"); map(0x876000, 0x876001).nopr().w(m_igs_mux, FUNC(igs_mux_device::address_w)).umask16(0x00ff); // clr.w dummy read 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) { map(0x000000, 0x07ffff).rom(); - map(0x100000, 0x103fff).ram(); + map(0x100000, 0x103fff).ram().share("nvram"); map(0x38d000, 0x38d001).nopr().w(m_igs_mux, FUNC(igs_mux_device::address_w)).umask16(0x00ff); // clr.w dummy read 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) map(0x100000, 0x103fff).ram().share("igs022:sharedprotram"); // Shared with protection device - map(0x500000, 0x503fff).ram(); + map(0x500000, 0x503fff).ram().share("nvram"); map(0x910000, 0x910001).nopr().w(m_igs_mux, FUNC(igs_mux_device::address_w)).umask16(0x00ff); // clr.w dummy read 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) map(0x003207, 0x003207).w(m_igs_incdec, FUNC(igs_incdec_device::inc_w)); map(0x00320b, 0x00320b).r(m_igs_incdec, FUNC(igs_incdec_device::result_r)); - map(0x500000, 0x503fff).ram(); + map(0x500000, 0x503fff).ram().share("nvram"); // map(0x910000, 0x910003) accesses appear to be from leftover code where the final checks were disabled 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) void igs017_state::slqz2_map(address_map &map) { map(0x000000, 0x07ffff).rom(); - map(0x100000, 0x103fff).ram(); + map(0x100000, 0x103fff).ram().share("nvram"); map(0x300000, 0x303fff).ram().share("igs022:sharedprotram"); // Shared with protection device @@ -3085,7 +3095,7 @@ void igs017_state::slqz2_mux_map(address_map &map) void igs017_state::jking302us_map(address_map &map) { map(0x000000, 0x07ffff).rom(); - map(0x100000, 0x103fff).ram(); + map(0x100000, 0x103fff).ram().share("nvram"); // TODO: verify once it works map(0x638000, 0x638001).nopr().w(m_igs_mux, FUNC(igs_mux_device::address_w)).umask16(0x00ff); // clr.w dummy read 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) m_maincpu->set_addrmap(AS_IO, &igs017_state::iqblocka_io); TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::iqblocka_interrupt), "screen", 0, 1); + // NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); + // i/o m_igs_mux->set_addrmap(0, &igs017_state::iqblocka_mux_map); @@ -4456,6 +4468,8 @@ void igs017_state::tarzan(machine_config &config) m_maincpu->set_addrmap(AS_OPCODES, &igs017_state::decrypted_opcodes_map); TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::iqblocka_interrupt), "screen", 0, 1); + NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); + // I/O m_igs_mux->set_addrmap(0, &igs017_state::tarzan_mux_map); @@ -4489,6 +4503,8 @@ void igs017_state::starzan(machine_config &config) m_maincpu->set_addrmap(AS_OPCODES, &igs017_state::decrypted_opcodes_map); TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::iqblocka_interrupt), "screen", 0, 1); + NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); + // i/o m_igs_mux->set_addrmap(0, &igs017_state::starzan_mux_map); @@ -4518,11 +4534,13 @@ void igs017_state::happyskl(machine_config &config) base_machine_oki(config, 16_MHz_XTAL / 16); HD64180RP(config, m_maincpu, 16_MHz_XTAL); - m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::iqblocka_map); + m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::happyskl_map); m_maincpu->set_addrmap(AS_IO, &igs017_state::happyskl_io); m_maincpu->set_addrmap(AS_OPCODES, &igs017_state::decrypted_opcodes_map); TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::iqblocka_interrupt), "screen", 0, 1); + NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); + // i/o m_igs_mux->set_addrmap(0, &igs017_state::happyskl_mux_map); @@ -4548,6 +4566,8 @@ void igs017_state::cpoker2(machine_config &config) m_maincpu->set_addrmap(AS_IO, &igs017_state::cpoker2_io); TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::iqblocka_interrupt), "screen", 0, 1); + NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); + // i/o m_igs_mux->set_addrmap(0, &igs017_state::cpoker2_mux_map); @@ -4609,6 +4629,8 @@ void igs017_state::spkrform(machine_config &config) m_maincpu->set_addrmap(AS_IO, &igs017_state::spkrform_io); TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::iqblocka_interrupt), "screen", 0, 1); + NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); + // i/o m_igs_mux->set_addrmap(0, &igs017_state::spkrform_mux_map); @@ -4649,6 +4671,8 @@ void igs017_state::mgcs(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::mgcs_map); TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::mgcs_interrupt), "screen", 0, 1); + NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); + // i/o m_igs_mux->set_addrmap(0, &igs017_state::mgcs_mux_map); @@ -4692,6 +4716,8 @@ void igs017_state::lhzb2(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::lhzb2_map); TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::mgcs_interrupt), "screen", 0, 1); + NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); + // i/o m_igs_mux->set_addrmap(0, &igs017_state::lhzb2_mux_map); @@ -4727,6 +4753,8 @@ void igs017_state::lhzb2a(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::lhzb2a_map); TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::mgcs_interrupt), "screen", 0, 1); + NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); + MCFG_MACHINE_RESET_OVERRIDE(igs017_state, lhzb2a) // i/o @@ -4764,6 +4792,8 @@ void igs017_state::slqz2(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::slqz2_map); TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::mgcs_interrupt), "screen", 0, 1); + NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); + // i/o m_igs_mux->set_addrmap(0, &igs017_state::slqz2_mux_map); @@ -4793,6 +4823,8 @@ void igs017_state::sdmg2(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::sdmg2_map); TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::mgcs_interrupt), "screen", 0, 1); + NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); + // i/o m_igs_mux->set_addrmap(0, &igs017_state::sdmg2_mux_map); @@ -4828,6 +4860,8 @@ void igs017_state::mgdha(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::mgdh_map); TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::mgdh_interrupt), "screen", 0, 1); + NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); + // i/o m_igs_mux->set_addrmap(0, &igs017_state::mgdha_mux_map); @@ -4854,6 +4888,8 @@ void igs017_state::sdmg2p(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::sdmg2p_map); TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::mgcs_interrupt), "screen", 0, 1); + NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); + // i/o m_igs_mux->set_addrmap(0, &igs017_state::sdmg2p_mux_map); @@ -4874,6 +4910,8 @@ void igs017_state::jking302us(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::jking302us_map); TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::mgdh_interrupt), "screen", 0, 1); + NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); + // i/o m_igs_mux->set_addrmap(0, &igs017_state::jking302us_mux_map); @@ -6187,7 +6225,7 @@ GAME ( 1996, iqblocka, iqblock, iqblocka, iqblocka, igs017_state, init GAME ( 1997, iqblockf, iqblock, iqblockf, iqblockf, igs017_state, init_iqblocka, ROT0, "IGS", "IQ Block (V113FR, gambling)", 0 ) 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) GAME ( 1997, mgdha, mgdh, mgdha, mgdh, igs017_state, init_mgdha, ROT0, "IGS", "Manguan Daheng (Taiwan, V123T1)", 0 ) // 滿貫大亨 -GAME ( 1997, sdmg2, 0, sdmg2, sdmg2, igs017_state, init_sdmg2, ROT0, "IGS", "Chaoji Da Manguan II (China, V765C)", 0 ) // 超級大滿貫II +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 GAME ( 1997, sdmg2754ca, sdmg2, sdmg2, sdmg2, igs017_state, init_sdmg2754ca, ROT0, "IGS", "Chaoji Da Manguan II (China, V754C, set 1)", 0 ) // 超級大滿貫II GAME ( 1997, sdmg2754cb, sdmg2, sdmg2, sdmg2, igs017_state, init_sdmg2754cb, ROT0, "IGS", "Chaoji Da Manguan II (China, V754C, set 2)", 0 ) // 超級大滿貫II 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 diff --git a/src/mame/seta/simple_st0016.cpp b/src/mame/seta/simple_st0016.cpp index 7ddb0755102..51d0fbc901c 100644 --- a/src/mame/seta/simple_st0016.cpp +++ b/src/mame/seta/simple_st0016.cpp @@ -14,6 +14,7 @@ Todo: - find NMI source, and NMI enable/disable (timer ? video hw ?) +- test modes for crownpkr and dcrown show flip support problems Dips verified for Neratte Chu (nratechu) from manual */ @@ -51,6 +52,7 @@ public: void mayjinsn(machine_config &config) ATTR_COLD; void init_crownpkr() ATTR_COLD; + void init_dcrown() ATTR_COLD; void init_nratechu() ATTR_COLD; void init_mayjinsn() ATTR_COLD; void init_mayjisn2() ATTR_COLD; @@ -445,6 +447,36 @@ static INPUT_PORTS_START( crownpkr ) PORT_SERVICE( 0x08, IP_ACTIVE_LOW ) // only works if pressed during boot INPUT_PORTS_END +static INPUT_PORTS_START( dcrown ) + PORT_INCLUDE( st0016 ) + + PORT_MODIFY("P1") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effect in test mode + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SLOT_STOP1 ) PORT_NAME("Stop Reel 1 / Double Up") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SLOT_STOP3 ) PORT_NAME("Stop Reel 3 / Bet on Black" ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effect in test mode + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effect in test mode + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) // TODO: hopper + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_TAKE ) + + PORT_MODIFY("P2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SLOT_STOP2 ) PORT_NAME("Stop Reel 2 / Bet on Red / Show Paytable" ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effect in test mode + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effect in test mode + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effect in test mode + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME( "Modern Equipment" ) // TODO: what's this? machine translation doesn't seem correct + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effect in test mode + + PORT_MODIFY("SYSTEM") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(10) // TODO: simulate coin drop sensor + PORT_SERVICE( 0x08, IP_ACTIVE_LOW ) +INPUT_PORTS_END + static INPUT_PORTS_START( mayjisn2 ) PORT_INCLUDE( st0016 ) @@ -824,6 +856,11 @@ void st0016_state::init_crownpkr() m_maincpu->set_game_flag(2); } +void st0016_state::init_dcrown() +{ + m_maincpu->set_game_flag(3); +} + void st0016_state::init_mayjinsn() { m_maincpu->set_game_flag(4 /*| 0x80*/); @@ -852,5 +889,5 @@ GAME( 2001, gostop, 0, st0016, gostop, st0016_state, init_renju, // Not working 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 ) 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 -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 -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 +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 +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 diff --git a/src/mame/seta/st0016.cpp b/src/mame/seta/st0016.cpp index b38796057c7..efbd80d2a32 100644 --- a/src/mame/seta/st0016.cpp +++ b/src/mame/seta/st0016.cpp @@ -123,6 +123,12 @@ void st0016_cpu_device::device_reset() break; case 2: // Crown Poker + screen().set_visible_area(8,42*8-1,0,29*8-1); + m_spr_dx = 4; + m_spr_dy = 4; + break; + + case 3: // Dream Crown screen().set_visible_area(8,42*8-1,0,30*8-1); m_spr_dx = 4; break; @@ -664,8 +670,8 @@ void st0016_cpu_device::draw_bgmap(bitmap_ind16 &bitmap, const rectangle &clipre code = m_spriteram[i] + 256 * m_spriteram[i + 1]; color = m_spriteram[i + 2] & 0x3f; - flipx = m_spriteram[i + 3] & 0x80; - flipy = m_spriteram[i + 3] & 0x40; + flipx = m_spriteram[i + 3] & 0x80; // crownpkr test mode doesn't seem to agree with this + flipy = m_spriteram[i + 3] & 0x40; // " if (priority) { @@ -694,6 +700,7 @@ void st0016_cpu_device::draw_bgmap(bitmap_ind16 &bitmap, const rectangle &clipre if (!flipy) { drawypos = ypos + yloop; } else { drawypos = (ypos + 8 - 1) - yloop; } destline = &bitmap.pix(drawypos); + // destline = &bitmap.pix(drawypos ^ 0x07); // hack for dcrown test mode for (xloop = 0; xloop < 8; xloop++) { |