mirror of
https://github.com/holub/mame
synced 2025-04-22 16:31:49 +03:00
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:
parent
7da34d5e7d
commit
134dc5924e
@ -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 )
|
||||
|
@ -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 )
|
||||
|
@ -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
|
||||
|
@ -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 )
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user