New working clones

------------------
Jingle Bell (v200US)  [Ioannis Bampoulas]

New systems marked not working
------------------------------
Jungle King 2002 (V209US) [Ioannis Bampoulas]
Lucky Cross (V106SA) [Ioannis Bampoulas]
Olympic 5 (V112US) [Ioannis Bampoulas]

New clones marked not working
-----------------------------
Olympic 5 (V107US) [Ioannis Bampoulas]
This commit is contained in:
Ivan Vangelista 2024-07-23 18:08:10 +02:00
parent 7da34d5e7d
commit 134dc5924e
4 changed files with 417 additions and 11 deletions

View File

@ -71,6 +71,7 @@ public:
void init_mgzz();
void init_mgcs3();
void init_crzybugs();
[[maybe_unused]] void init_no_dec();
protected:
virtual void video_start() override;
@ -512,6 +513,26 @@ ROM_START( oceanpara ) // IGS PCB-0331-01-FG
ROM_LOAD( "igs_w4102.u28", 0x00000, 0x80000, CRC(558cab25) SHA1(0280b37a14589329f0385c048e5742b9e89bd587) ) // same as fruitpar
ROM_END
// supposedly a reskin of fruitpar / oceanpar, runs on a slightly different PCB (type not readable, seems same as amazonkp)
ROM_START( luckycrs )
ROM_REGION( 0x04000, "maincpu", 0 )
// Internal ROM of IGS027A type G ARM based MCU
ROM_LOAD( "luckycrs_igs027a", 0x00000, 0x4000, NO_DUMP ) // stickered V21
ROM_REGION32_LE( 0x80000, "user1", 0 ) // external ARM data / prg
ROM_LOAD( "luckycross_v-106sa.u23", 0x00000, 0x80000, CRC(5716de00) SHA1(ff68fa93c6801c78f910452c08c5a9c1a089261d) ) // 27C4002
ROM_REGION( 0x80000, "igs017_igs031:tilemaps", 0 )
ROM_LOAD( "luckycross_text_u12.u12", 0x00000, 0x80000, CRC(c03aa300) SHA1(612ab40d507da7614ec288dd2e95aaca4e497e1b) ) // 27C4002
ROM_REGION( 0x480000, "igs017_igs031:sprites", 0 )
ROM_LOAD( "igs_k4101_u13.u13", 0x000000, 0x400000, CRC(84899398) SHA1(badac65af6e03c490798f4368eb2b15db8c590d0) ) // 27C322, FIXED BITS (xxxxxxx0xxxxxxxx)
ROM_LOAD( "luckycross_ext_cg_u11.u11", 0x400000, 0x080000, CRC(997cb3cb) SHA1(6ae955abe7888135f9543ddf73ff84c23baf15f1) ) // 27C4002, FIXED BITS (xxxxxxxx0xxxxxxx)
ROM_REGION( 0x200000, "oki", 0 )
ROM_LOAD( "igs_w4102_u37.u37", 0x000000, 0x200000, CRC(114b44ee) SHA1(728ffee34c64edcfef3a46e8be97db60da8a90dc) ) // 27C160, 11xxxxxxxxxxxxxxxxxxx = 0xFF
ROM_END
/***************************************************************************
Amazonia King
@ -540,8 +561,8 @@ ROM_START( amazonia )
ROM_LOAD( "igs_t2105_cg_v110.u12", 0x000000, 0x80000, CRC(1d4be260) SHA1(6374c61735144b3ff54d5e490f26adac4a10b14d) )
ROM_REGION( 0x480000, "igs017_igs031:sprites", 0 )
ROM_LOAD( "igs_a2107_cg_v110.u13", 0x000000, 0x400000,CRC(d8dadfd7) SHA1(b40a46d56ff46d91e3377be8616c3eed321f7db4) ) // FIXED BITS (xxxxxxx0xxxxxxxx)
ROM_LOAD( "amazonia_cg.u11", 0x400000, 0x80000, CRC(2ac2cfd1) SHA1(f8750a4727ddabf1415dab6eaa4a72e60e86e7f1) ) // FIXED BITS (xxxxxxxx0xxxxxxx)
ROM_LOAD( "igs_a2107_cg_v110.u13", 0x000000, 0x400000, CRC(d8dadfd7) SHA1(b40a46d56ff46d91e3377be8616c3eed321f7db4) ) // FIXED BITS (xxxxxxx0xxxxxxxx)
ROM_LOAD( "amazonia_cg.u11", 0x400000, 0x080000, CRC(2ac2cfd1) SHA1(f8750a4727ddabf1415dab6eaa4a72e60e86e7f1) ) // FIXED BITS (xxxxxxxx0xxxxxxx)
ROM_REGION( 0x80000, "oki", 0 )
ROM_LOAD( "igs_s2102.u28", 0x00000, 0x80000, CRC(90dda82d) SHA1(67fbc1e8d76b85e124136e2f1df09c8b6c5a8f97) )
@ -559,8 +580,8 @@ ROM_START( amazonkp )
ROM_LOAD( "igs_t2105.u12", 0x000000, 0x80000, CRC(1d4be260) SHA1(6374c61735144b3ff54d5e490f26adac4a10b14d) )
ROM_REGION( 0x480000, "igs017_igs031:sprites", 0 )
ROM_LOAD( "igs_a2107.u13", 0x000000, 0x400000,CRC(d8dadfd7) SHA1(b40a46d56ff46d91e3377be8616c3eed321f7db4) ) // FIXED BITS (xxxxxxx0xxxxxxxx)
ROM_LOAD( "ak_plus_ext_cg.u11", 0x400000, 0x80000, CRC(26796bc0) SHA1(bd259fbd05834de3d90af87235f13b467a492fed) ) // FIXED BITS (xxxxxxxx0xxxxxxx)
ROM_LOAD( "igs_a2107.u13", 0x000000, 0x400000, CRC(d8dadfd7) SHA1(b40a46d56ff46d91e3377be8616c3eed321f7db4) ) // FIXED BITS (xxxxxxx0xxxxxxxx)
ROM_LOAD( "ak_plus_ext_cg.u11", 0x400000, 0x080000, CRC(26796bc0) SHA1(bd259fbd05834de3d90af87235f13b467a492fed) ) // FIXED BITS (xxxxxxxx0xxxxxxx)
ROM_REGION( 0x80000, "oki", 0 )
ROM_LOAD( "igs_s2102.u37", 0x00000, 0x80000, CRC(90dda82d) SHA1(67fbc1e8d76b85e124136e2f1df09c8b6c5a8f97) ) // this came dumped with 4 identical quarters, 1 quarter matches the ROM from the amazonia set
@ -600,6 +621,62 @@ ROM_START( amazoni2 )
ROM_LOAD( "akii_sp.u28", 0x00000, 0x80000, CRC(216b5418) SHA1(b7bc24ced0ccb5476c974420aa506c13b971fc9f) )
ROM_END
ROM_START( jking02 ) // PCB-0367-05-FG-1
ROM_REGION( 0x04000, "maincpu", 0 )
// Internal ROM of IGS027A type G ARM based MCU
ROM_LOAD( "jking02_igs027a", 0x00000, 0x4000, NO_DUMP ) // stickered J6
ROM_REGION32_LE( 0x80000, "user1", 0 ) // external ARM data / prg
ROM_LOAD( "j_k_2002_v-209us.u23", 0x00000, 0x80000, CRC(ef6b652b) SHA1(ee5c2cef2c7cbcd4a70e05c01295e964ca5e45d1) ) // 27C4096
ROM_REGION( 0x80000, "igs017_igs031:tilemaps", 0 )
ROM_LOAD( "jungle_king_02_u12_text.u12", 0x00000, 0x80000, CRC(22dcebd0) SHA1(0383f017135230d020d12c8c6cc3aeb136fe9106) ) // M27C4002
ROM_REGION( 0x480000, "igs017_igs031:sprites", 0 )
ROM_LOAD( "jungle_king_02_u13_a4202.u13", 0x000000, 0x400000, CRC(97a68f85) SHA1(177c8c23fd0d585b24a71359ede005ac9a2e4d4d) ) // 27C322, FIXED BITS (xxxxxxx0xxxxxxxx)
ROM_LOAD( "jungle_king_02_u11_cg.u11", 0x400000, 0x080000, CRC(3c43da58) SHA1(7fbc34905587a36b6514ac781a16f12345129184) ) // M27C4002, FIXED BITS (xxxxxxxx0xxxxxxx)
ROM_REGION( 0x200000, "oki", 0 )
ROM_LOAD( "igs_w4201_speech_v103.u28", 0x000000, 0x200000, CRC(fb72d4b5) SHA1(c4f434fb20ac3df8d08aaf62f1dfad03f6f619ef) ) // M27C160, 1xxxxxxxxxxxxxxxxxxxx = 0x00
ROM_END
ROM_START( olympic5 ) // PCB type not readable, layout almost identical to PCB-0367-05-FG-1
ROM_REGION( 0x04000, "maincpu", 0 )
// Internal ROM of IGS027A type G ARM based MCU
ROM_LOAD( "olympic5_igs027a", 0x00000, 0x4000, NO_DUMP ) // stickered O2
ROM_REGION32_LE( 0x80000, "user1", 0 ) // external ARM data / prg
ROM_LOAD( "olympic_5_v-112us.u23", 0x00000, 0x80000, CRC(27743107) SHA1(ddb8fc3645b0d8f8b7348c180951ca212b3a2c03) ) // MX27C4096
ROM_REGION( 0x80000, "igs017_igs031:tilemaps", 0 )
ROM_LOAD( "olympic_5_text.u12", 0x00000, 0x80000, CRC(60b415ac) SHA1(b4475b0ba1e70504cac9ac05078873df0b16495b) ) // MX27C4096
ROM_REGION( 0x200000, "igs017_igs031:sprites", 0 )
ROM_LOAD( "olympic_5_cg.u13", 0x000000, 0x200000, CRC(6803f95b) SHA1(2d3d4194bb4efaf24c42c47c027068f396b08e7e) ) // M27C160, FIXED BITS (xxxxxxx0xxxxxxxx)
// u11 not populated
ROM_REGION( 0x200000, "oki", 0 )
ROM_LOAD( "olympic_5_sp.u28", 0x000000, 0x200000, CRC(7a2b5441) SHA1(a100daa3534c06c0fd40d9bab25983efe9dd446d) ) // 27C160, contains 4 times the same data as the one in olympic5a
ROM_END
ROM_START( olympic5a )
ROM_REGION( 0x04000, "maincpu", 0 )
// Internal ROM of IGS027A type G ARM based MCU
ROM_LOAD( "olympic5_igs027a", 0x00000, 0x4000, NO_DUMP ) // stickered O2
ROM_REGION32_LE( 0x80000, "user1", 0 ) // external ARM data / prg
ROM_LOAD( "olympic_5_v-107us.u23", 0x00000, 0x80000, CRC(3bcd4dd9) SHA1(08e49d9a5045e52a7eb60113f0c7ed25b30474c2) ) // MX27C4096
ROM_REGION( 0x80000, "igs017_igs031:tilemaps", 0 )
ROM_LOAD( "olympic_5_text.u12", 0x00000, 0x80000, CRC(60b415ac) SHA1(b4475b0ba1e70504cac9ac05078873df0b16495b) ) // MX27C4096
ROM_REGION( 0x200000, "igs017_igs031:sprites", 0 )
ROM_LOAD( "olympic_5_cg.u13", 0x000000, 0x200000, CRC(6803f95b) SHA1(2d3d4194bb4efaf24c42c47c027068f396b08e7e) ) // M27C160, FIXED BITS (xxxxxxx0xxxxxxxx)
// u11 not populated
ROM_REGION( 0x80000, "oki", 0 )
ROM_LOAD( "olympic_5_sp.u28", 0x00000, 0x80000, CRC(216b5418) SHA1(b7bc24ced0ccb5476c974420aa506c13b971fc9f) ) // MX27C4000
ROM_END
// Games with prg at u16
// text at u24
@ -1123,12 +1200,10 @@ void igs_m027_state::pgm_create_dummy_internal_arm_region()
}
/*
void igs_m027_state::init_igs_m027()
void igs_m027_state::init_no_dec()
{
pgm_create_dummy_internal_arm_region(machine());
pgm_create_dummy_internal_arm_region();
}
*/
void igs_m027_state::init_sdwx()
{
@ -1281,7 +1356,11 @@ GAME( 1999, amazonkp, amazonia, igs_mahjong, amazonia, igs_m027_state, init_ama
GAME( 1999, fruitpar, 0, igs_mahjong, sdwx, igs_m027_state, init_fruitpar, ROT0, "IGS", "Fruit Paradise (V214)", MACHINE_IS_SKELETON )
GAME( 1999, oceanpar, 0, igs_mahjong, sdwx, igs_m027_state, init_oceanpar, ROT0, "IGS", "Ocean Paradise (V105US)", MACHINE_IS_SKELETON ) // 1999 copyright in ROM
GAME( 1999, oceanpara, oceanpar, igs_mahjong, sdwx, igs_m027_state, init_oceanpar, ROT0, "IGS", "Ocean Paradise (V101US)", MACHINE_IS_SKELETON ) // 1999 copyright in ROM
GAME( 200?, luckycrs, 0, igs_mahjong, sdwx, igs_m027_state, init_no_dec, ROT0, "IGS", "Lucky Cross (V106SA)", MACHINE_IS_SKELETON )
GAME( 2002, sdwx, 0, igs_mahjong, sdwx, igs_m027_state, init_sdwx, ROT0, "IGS", "Sheng Dan Wu Xian", MACHINE_IS_SKELETON ) // aka Christmas 5 Line? (or Amazonia King II, shares roms at least?)
GAME( 200?, jking02, 0, igs_mahjong, sdwx, igs_m027_state, init_no_dec, ROT0, "IGS", "Jungle King 2002 (V209US)", MACHINE_IS_SKELETON )
GAME( 200?, olympic5, 0, igs_mahjong, sdwx, igs_m027_state, init_no_dec, ROT0, "IGS", "Olympic 5 (V112US)", MACHINE_IS_SKELETON )
GAME( 200?, olympic5a, 0, igs_mahjong, sdwx, igs_m027_state, init_no_dec, ROT0, "IGS", "Olympic 5 (V107US)", MACHINE_IS_SKELETON )
GAME( 2003, amazoni2, 0, igs_mahjong, sdwx, igs_m027_state, init_amazoni2, ROT0, "IGS", "Amazonia King II (V202BR)", MACHINE_IS_SKELETON )
GAME( 200?, sddz, 0, igs_mahjong, sdwx, igs_m027_state, init_sddz, ROT0, "IGS", "Super Dou Di Zhu", MACHINE_IS_SKELETON )
GAME( 2000, zhongguo, 0, igs_mahjong, sdwx, igs_m027_state, init_zhongguo, ROT0, "IGS", "Zhong Guo Chu Da D", MACHINE_IS_SKELETON )

View File

@ -135,14 +135,41 @@ public:
protected:
virtual void video_start() override;
void portmap(address_map &map);
private:
void coins_w(uint8_t data);
void nmi_video_leds_w(uint8_t data);
void program_map(address_map &map);
void portmap(address_map &map);
};
class jb_state : public spokeru_state
{
public:
jb_state(const machine_config &mconfig, device_type type, const char *tag) :
spokeru_state(mconfig, type, tag),
m_reel_ram(*this, "reel_ram.%u", 0U),
m_reel_scroll_ram(*this, "reel_scroll_ram.%u", 0U)
{ }
void jb(machine_config &config);
protected:
virtual void video_start() override;
private:
required_shared_ptr_array<uint8_t, 3> m_reel_ram;
required_shared_ptr_array<uint8_t, 2> m_reel_scroll_ram;
tilemap_t *m_reel_tilemap[3]{};
template<uint8_t Reel> TILE_GET_INFO_MEMBER(get_reel_tile_info);
template<uint8_t Reel> void reel_ram_w(offs_t offset, uint8_t data);
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void portmap(address_map &map);
};
/***************************************************************************
Video Hardware
@ -178,6 +205,24 @@ void spoker_state::fg_color_w(offs_t offset, uint8_t data)
m_fg_tilemap->mark_tile_dirty(offset);
}
template<uint8_t Reel>
TILE_GET_INFO_MEMBER(jb_state::get_reel_tile_info)
{
int const code = m_reel_ram[Reel][tile_index];
tileinfo.set(1,
(code)+ (((tile_index + 1) & 0x3) * 0x100),
(code & 0x80) ? 0xc : 0,
0);
}
template<uint8_t Reel>
void jb_state::reel_ram_w(offs_t offset, uint8_t data)
{
m_reel_ram[Reel][offset] = data;
m_reel_tilemap[Reel]->mark_tile_dirty(offset);
}
void spoker_state::video_start()
{
m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(spoker_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 32, 128, 8);
@ -190,6 +235,20 @@ void spokeru_state::video_start()
m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(spokeru_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
}
void jb_state::video_start()
{
m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(jb_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
m_fg_tilemap->set_transparent_pen(0);
m_reel_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(jb_state::get_reel_tile_info<0>)), TILEMAP_SCAN_ROWS, 8, 32, 64, 8);
m_reel_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(jb_state::get_reel_tile_info<1>)), TILEMAP_SCAN_ROWS, 8, 32, 64, 8);
m_reel_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(jb_state::get_reel_tile_info<2>)), TILEMAP_SCAN_ROWS, 8, 32, 64, 8);
m_reel_tilemap[0]->set_scroll_cols(64);
m_reel_tilemap[1]->set_scroll_cols(64);
m_reel_tilemap[2]->set_scroll_cols(64);
}
uint32_t spoker_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
bitmap.fill(m_palette->black_pen(), cliprect);
@ -199,7 +258,51 @@ uint32_t spoker_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap
return 0;
}
uint32_t jb_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
bitmap.fill(m_palette->black_pen(), cliprect);
for (int i = 0; i < 0x40; i++)
{
m_reel_tilemap[0]->set_scrolly(i, m_reel_scroll_ram[0][i + 0x000]);
m_reel_tilemap[1]->set_scrolly(i, m_reel_scroll_ram[0][i + 0x040]);
m_reel_tilemap[2]->set_scrolly(i, m_reel_scroll_ram[0][i + 0x080]);
}
int startclipmin = 0;
const rectangle &visarea = screen.visible_area();
for (int j = 0; j < 0x100 - 1; j++)
{
rectangle clip;
int const rowenable = m_reel_scroll_ram[1][j];
// draw top of screen
clip.set(visarea.min_x, visarea.max_x, startclipmin, startclipmin + 1);
if (rowenable == 0)
{
m_reel_tilemap[0]->draw(screen, bitmap, clip, 0, 0);
}
else if (rowenable == 1)
{
m_reel_tilemap[1]->draw(screen, bitmap, clip, 0, 0);
}
else if (rowenable == 2)
{
m_reel_tilemap[2]->draw(screen, bitmap, clip, 0, 0);
}
else if (rowenable == 3)
{
}
startclipmin += 1;
}
m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
return 0;
}
/***************************************************************************
Misc Handlers
***************************************************************************/
@ -391,6 +494,19 @@ void spokeru_state::portmap(address_map &map)
map(0x7800, 0x7fff).ram().w(FUNC(spokeru_state::fg_color_w)).share(m_fg_color_ram);
}
void jb_state::portmap(address_map &map)
{
spokeru_state::portmap(map);
map(0x1000, 0x10ff).ram().share(m_reel_scroll_ram[1]);
map(0x6000, 0x60ff).ram().share(m_reel_scroll_ram[0]);
map(0x6800, 0x69ff).ram().w(FUNC(jb_state::reel_ram_w<0>)).share(m_reel_ram[0]);
map(0x6a00, 0x6bff).ram().w(FUNC(jb_state::reel_ram_w<1>)).share(m_reel_ram[1]);
map(0x6c00, 0x6dff).ram().w(FUNC(jb_state::reel_ram_w<2>)).share(m_reel_ram[2]);
map(0x6e00, 0x6fff).nopw(); // hardware seems to support a 4th reel, unused by the dump game (only writes 0xff)
map(0x8000, 0xffff).rom().region("maincpu", 0x10000);
}
void spoker_state::_3super8_portmap(address_map &map)
{
// map(0x1000, 0x1fff).nopw();
@ -645,6 +761,174 @@ static INPUT_PORTS_START( 3super8 )
INPUT_PORTS_END
// TODO: copied over from older versions in igs/igs009.cpp. Verify if dips are the same. Inputs are verified the same.
static INPUT_PORTS_START( jb )
PORT_START("DSW1")
PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("DSW1:1")
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x00, "W-Up Bonus" ) PORT_DIPLOCATION("DSW1:2")
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x04, "Min Bet" ) PORT_DIPLOCATION("DSW1:3")
PORT_DIPSETTING( 0x04, "1" )
PORT_DIPSETTING( 0x00, "8" )
PORT_DIPNAME( 0x08, 0x08, "Spin Speed" ) PORT_DIPLOCATION("DSW1:4")
PORT_DIPSETTING( 0x08, "Slow" )
PORT_DIPSETTING( 0x00, "Quick" )
PORT_DIPNAME( 0x10, 0x00, "Strip Girl" ) PORT_DIPLOCATION("DSW1:5")
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, "Payout Mode" ) PORT_DIPLOCATION("DSW1:6")
PORT_DIPSETTING( 0x20, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x00, "Auto" )
PORT_DIPNAME( 0xc0, 0xc0, "Player's Panel" ) PORT_DIPLOCATION("DSW1:7,8")
PORT_DIPSETTING( 0x00, "Type A" )
PORT_DIPSETTING( 0xc0, "Type A" )
PORT_DIPSETTING( 0x80, "Type B" )
PORT_DIPSETTING( 0x40, "Type C" )
PORT_START("DSW2")
PORT_DIPNAME( 0x07, 0x07, "Main Game Rate (%)" ) PORT_DIPLOCATION("DSW2:1,2,3")
PORT_DIPSETTING( 0x07, "55" )
PORT_DIPSETTING( 0x06, "60" )
PORT_DIPSETTING( 0x05, "65" )
PORT_DIPSETTING( 0x04, "70" )
PORT_DIPSETTING( 0x03, "75" )
PORT_DIPSETTING( 0x02, "80" )
PORT_DIPSETTING( 0x01, "85" )
PORT_DIPSETTING( 0x00, "90" )
PORT_DIPNAME( 0x38, 0x38, "W-Up Chance (%)" ) PORT_DIPLOCATION("DSW2:4,5,6")
PORT_DIPSETTING( 0x38, "93" )
PORT_DIPSETTING( 0x30, "94" )
PORT_DIPSETTING( 0x28, "95" )
PORT_DIPSETTING( 0x20, "96" )
PORT_DIPSETTING( 0x18, "97" )
PORT_DIPSETTING( 0x10, "98" )
PORT_DIPSETTING( 0x08, "99" )
PORT_DIPSETTING( 0x00, "100" )
PORT_DIPNAME( 0xc0, 0xc0, "Key In Limit" ) PORT_DIPLOCATION("DSW2:7,8")
PORT_DIPSETTING( 0xc0, "1k" )
PORT_DIPSETTING( 0x80, "3k" )
PORT_DIPSETTING( 0x40, "5k" )
PORT_DIPSETTING( 0x00, "10k" )
PORT_START("DSW3")
PORT_DIPNAME( 0x07, 0x07, "Key In Rate" ) PORT_DIPLOCATION("DSW3:1,2,3")
PORT_DIPSETTING( 0x07, "1" )
PORT_DIPSETTING( 0x06, "5" )
PORT_DIPSETTING( 0x05, "10" )
PORT_DIPSETTING( 0x04, "30" )
PORT_DIPSETTING( 0x03, "50" )
PORT_DIPSETTING( 0x02, "100" )
PORT_DIPSETTING( 0x01, "200" )
PORT_DIPSETTING( 0x00, "500" )
PORT_DIPNAME( 0x38, 0x38, "Coin 1 Rate" ) PORT_DIPLOCATION("DSW3:4,5,6")
PORT_DIPSETTING( 0x38, "1" )
PORT_DIPSETTING( 0x30, "2" )
PORT_DIPSETTING( 0x28, "5" )
PORT_DIPSETTING( 0x20, "10" )
PORT_DIPSETTING( 0x18, "20" )
PORT_DIPSETTING( 0x10, "25" )
PORT_DIPSETTING( 0x08, "50" )
PORT_DIPSETTING( 0x00, "100" )
PORT_DIPNAME( 0xc0, 0xc0, "System Limit" ) PORT_DIPLOCATION("DSW3:7,8")
PORT_DIPSETTING( 0xc0, "5k" )
PORT_DIPSETTING( 0x80, "10k" )
PORT_DIPSETTING( 0x40, "30k" )
PORT_DIPSETTING( 0x00, "Unlimited" )
PORT_START("DSW4")
PORT_DIPNAME( 0x01, 0x01, "Min Play For Fever" ) PORT_DIPLOCATION("DSW4:1")
PORT_DIPSETTING( 0x01, "8" )
PORT_DIPSETTING( 0x00, "16" )
PORT_DIPNAME( 0x02, 0x02, "Max Bet" ) PORT_DIPLOCATION("DSW4:2")
PORT_DIPSETTING( 0x02, "16" )
PORT_DIPSETTING( 0x00, "32" )
PORT_DIPNAME( 0x1c, 0x1c, "Coin 2 Rate" ) PORT_DIPLOCATION("DSW4:3,4,5")
PORT_DIPSETTING( 0x1c, "1" )
PORT_DIPSETTING( 0x18, "2" )
PORT_DIPSETTING( 0x14, "5" )
PORT_DIPSETTING( 0x10, "10" )
PORT_DIPSETTING( 0x0c, "20" )
PORT_DIPSETTING( 0x08, "40" )
PORT_DIPSETTING( 0x04, "50" )
PORT_DIPSETTING( 0x00, "100" )
PORT_DIPNAME( 0x60, 0x60, "Key Out Rate" ) PORT_DIPLOCATION("DSW4:6,7")
PORT_DIPSETTING( 0x60, "1" )
PORT_DIPSETTING( 0x40, "10" )
PORT_DIPSETTING( 0x20, "50" )
PORT_DIPSETTING( 0x00, "100" )
PORT_DIPNAME( 0x80, 0x80, "Play Line" ) PORT_DIPLOCATION("DSW4:8")
PORT_DIPSETTING( 0x80, "8" )
PORT_DIPSETTING( 0x00, "16" )
PORT_START("DSW5")
PORT_DIPNAME( 0x03, 0x00, "Maximum Play" ) PORT_DIPLOCATION("DSW5:1,2")
PORT_DIPSETTING( 0x00, "64" )
PORT_DIPSETTING( 0x01, "32" )
PORT_DIPSETTING( 0x02, "16" )
PORT_DIPSETTING( 0x03, "8" )
PORT_DIPNAME( 0x04, 0x04, "Skill Stop" ) PORT_DIPLOCATION("DSW5:3")
PORT_DIPSETTING( 0x04, "On" )
PORT_DIPSETTING( 0x00, "Off" )
PORT_DIPNAME( 0x08, 0x00, "Hands Count" ) PORT_DIPLOCATION("DSW5:4")
PORT_DIPSETTING( 0x08, "No" )
PORT_DIPSETTING( 0x00, "Yes" )
PORT_DIPNAME( 0x30, 0x00, "Hands Coin Rate" ) PORT_DIPLOCATION("DSW5:5,6")
PORT_DIPSETTING( 0x00, "25" )
PORT_DIPSETTING( 0x20, "10" )
PORT_DIPSETTING( 0x10, "5" )
PORT_DIPSETTING( 0x30, "1" )
PORT_DIPNAME( 0x40, 0x40, "Hands Coin Value" ) PORT_DIPLOCATION("DSW5:7")
PORT_DIPSETTING( 0x00, "40" )
PORT_DIPSETTING( 0x40, "20" )
PORT_DIPNAME( 0x80, 0x80, "Unused" ) PORT_DIPLOCATION("DSW5:8")
PORT_DIPSETTING( 0x00, "On" )
PORT_DIPSETTING( 0x80, "Off" )
PORT_START("SERVICE")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Memory Clear") // stats, memory
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(spoker_state, hopper_r) PORT_NAME("HPSW") // hopper sensor
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_NAME("Pay Out")
PORT_SERVICE_NO_TOGGLE( 0x20, IP_ACTIVE_LOW ) // test (press during boot)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) PORT_NAME("Records")
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("COINS")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT ) PORT_NAME("Key Down")
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("BUTTONS1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SLOT_STOP1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SLOT_STOP2 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SLOT_STOP3 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SLOT_STOP_ALL )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("BUTTONS2")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Start / Half D-Up Bet")
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_LOW ) PORT_NAME("Small")
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Left Bet / 2X D-Up Bet")
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_TAKE )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Right Bet / D-Up Bet")
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_HIGH ) PORT_NAME("Big")
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
/***************************************************************************
Graphics Layout & Graphics Decode
***************************************************************************/
@ -702,6 +986,11 @@ static GFXDECODE_START( gfx_3super8 )
GFXDECODE_ENTRY( "gfx2", 0x00000, layout_8x32x6, 0, 16 )
GFXDECODE_END
static GFXDECODE_START( gfx_jb )
GFXDECODE_ENTRY( "gfx1", 0x00000, layout_8x8x6, 0, 16 )
GFXDECODE_ENTRY( "gfx2", 0x00000, layout_8x32x6, 0, 16 )
GFXDECODE_END
/***************************************************************************
Machine Start & Reset
@ -783,6 +1072,18 @@ void spokeru_state::spokeru(machine_config &config)
}
void jb_state::jb(machine_config &config)
{
spokeru(config);
m_maincpu->set_addrmap(AS_IO, &jb_state::portmap);
m_screen->set_screen_update(FUNC(jb_state::screen_update));
m_gfxdecode->set_info(gfx_jb);
}
void spoker_state::_3super8(machine_config &config)
{
spoker(config);
@ -938,6 +1239,25 @@ ROM_START( spk100 ) // no labels on the ROMs
ROM_LOAD( "u38", 0x0000, 0x40000, CRC(33e6089d) SHA1(cd1ad01e92c18bbeab3fe3ea9152f8b0a3eb1b29) )
ROM_END
ROM_START( jb200us ) // IGS PCB-0308-01, same as the US Super Poker sets
ROM_REGION( 0x20000, "maincpu", 0 )
ROM_LOAD( "jingle_v200us.u27", 0x00000, 0x10000, CRC(831782cb) SHA1(8e903569a0cd34222a7e5fd3e9ab21bf00802bb3) ) // 27C512
ROM_LOAD( "jingle_v200us_7.u26", 0x10000, 0x10000, CRC(3160f443) SHA1(2930359961a618cbe356a7f9c8fd63bacba2a6b0) ) // 27C512, 1ST AND 2ND HALF IDENTICAL
ROM_REGION( 0xc0000, "gfx1", 0 ) // all 27C020
ROM_LOAD( "jingle_v200us_4.u33", 0x00000, 0x40000, CRC(daa56ce5) SHA1(4f14a8efac16b03bd14dd26d586bcb8d5bef65c1) )
ROM_LOAD( "jingle_v200us_5.u32", 0x40000, 0x40000, CRC(b10b38e1) SHA1(397b2d899e47c6249fbbb6e6262d0390d9b796e6) )
ROM_LOAD( "jingle_v200us_6.u31", 0x80000, 0x40000, CRC(a3304b5a) SHA1(bf51cb1f728758d50ce27275aa19ef649f6b34b9) )
ROM_REGION( 0x30000, "gfx2", 0 ) // all 27C512
ROM_LOAD( "jingle_v200us_1.u23", 0x00000, 0x10000, CRC(cadd7910) SHA1(aa514ddb29c8c9a77478d56bea4ae71995fdd518) )
ROM_LOAD( "jingle_v200us_2.u22", 0x10000, 0x10000, CRC(a9e1f5aa) SHA1(68d7f4e9e9a5bbce0904e406ee6fe82e9e52a9ba) )
ROM_LOAD( "jingle_v200us_3.u21", 0x20000, 0x10000, CRC(865b7d3a) SHA1(c1dff3a27d747ee499aaee0c4468534f0249a3e5) )
ROM_REGION( 0x40000, "oki", 0 )
ROM_LOAD( "jingle_v200ussp.u34", 0x00000, 0x20000, CRC(a42d73b1) SHA1(93157e9630d5c8bb34c71186415d0aa8c5d51951) ) // 27C010
ROM_END
/*
Super Poker
Italian sets...
@ -1181,3 +1501,4 @@ GAME( 1993?, spk114it, spk306us, spoker, spk114it, spoker_state, init_spk11
GAME( 1996, spk102ua, spk306us, spokeru, spoker, spokeru_state, init_spokeru, ROT0, "IGS", "Super Poker (v102UA)", MACHINE_SUPPORTS_SAVE )
GAME( 1996, spk100, spk306us, spoker, spk114it, spoker_state, init_spk100, ROT0, "IGS", "Super Poker (v100)", MACHINE_SUPPORTS_SAVE )
GAME( 1993?, 3super8, 0, _3super8, 3super8, spoker_state, init_3super8, ROT0, "<unknown>", "3 Super 8 (Italy)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) //roms are badly dumped
GAME( 1997, jb200us, 0, jb, jb, jb_state, init_spokeru, ROT0, "IGS", "Jingle Bell (v200US)", MACHINE_SUPPORTS_SAVE )

View File

@ -20210,14 +20210,18 @@ extradrw // (c) 200?
fruitpar // (c) 200?
gonefsh2 // (c) 200?
haunthig // (c) 200?
jking02 // (c) 200?
klxyj // (c) 200?
lhzb3 // (c) 200?
lhzb4 // (c) 200?
luckycrs // (c) 200?
mgcs3 // (c) 200?
mgfx // (c) 200?
mgzz // (c) 2003
oceanpar //
oceanpara //
olympic5 // (c) 200?
olympic5a // (c) 200?
qlgs // (c) 1999
sddz // (c) 200?
sdwx // (c) 2002
@ -20461,6 +20465,7 @@ kov3hd101
@source:igs/spoker.cpp
3super8 // unknown
jb200us // (c) 1997 IGS
spk100 // (c) 1996 IGS
spk102ua // (c) 1996 IGS
spk114it // (c) 199? IGS
@ -35420,7 +35425,7 @@ rocktrv2 // (c) 1986 Triumph Software Inc
shootbul // (c) 1985 Bally Midway
sprglbpg // German bootleg
sprglobp // (c) 1983 Epos Corporation
sprglobp2 // (c) 1983 Epos Corporation
sprglobp2 // bootleg
superabc // hack
superabco // hack
theglobme // (c) 1983 Magic Electronics

View File

@ -8703,6 +8703,7 @@ void epospm_state::init_sprglobp2()
{
// this set is very similar to the unencrypted sprglbpg set
// for some reason the following doesn't work for some ranges
// (opcodes are unencrypted there).
static const uint8_t data_xortable[16][8] =
{
@ -8899,7 +8900,7 @@ GAME( 1983, acitya, bwcasino, acitya, acitya, epospm_state, empty_init,
GAME( 1983, theglobp, suprglob, theglobp, theglobp, epospm_state, empty_init, ROT90, "Epos Corporation", "The Glob (Pac-Man hardware, set 1)", MACHINE_SUPPORTS_SAVE )
GAME( 1983, theglobpa,suprglob, theglobp, theglobp, epospm_state, empty_init, ROT90, "Epos Corporation", "The Glob (Pac-Man hardware, set 2)", MACHINE_SUPPORTS_SAVE )
GAME( 1983, sprglobp, suprglob, theglobp, theglobp, epospm_state, empty_init, ROT90, "Epos Corporation", "Super Glob (Pac-Man hardware)", MACHINE_SUPPORTS_SAVE )
GAME( 1983, sprglobp2,suprglob, pacman, theglobp, epospm_state, init_sprglobp2,ROT90, "bootleg", "Super Glob (Pac-Man hardware, bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // encrypted
GAME( 1985, sprglobp2,suprglob, pacman, theglobp, epospm_state, init_sprglobp2,ROT90, "bootleg (Elsys Software)", "Super Glob (Pac-Man hardware, bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // encrypted
GAME( 1984, sprglbpg, suprglob, pacman, theglobp, epospm_state, empty_init, ROT90, "bootleg (Software Labor)", "Super Glob (Pac-Man hardware, German bootleg)", MACHINE_SUPPORTS_SAVE )
GAME( 1983, theglobme,suprglob, woodpek, theglobp, epospm_state, empty_init, ROT90, "Magic Electronics Inc.", "The Glob (Pacman hardware, Magic Electronics Inc. license)", MACHINE_SUPPORTS_SAVE )