summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Ivan Vangelista <mesgnet@yahoo.it>2022-01-26 18:09:48 +0100
committer Ivan Vangelista <mesgnet@yahoo.it>2022-01-26 18:09:48 +0100
commit140b1ca07adda3edc8b4d0830211f586b97e07cc (patch)
tree7707c8216f9f340c8b039c4e7d42ca4720921ccb
parent3f083ff7f2a1aa5af9a0c0810a4c7f1de67c4fff (diff)
New clones marked as NOT_WORKING
-------------------------------- Kung Fu (IGS, v202N) [Jorge Silva]
-rw-r--r--src/mame/drivers/igspoker.cpp85
-rw-r--r--src/mame/drivers/jackie.cpp1
-rw-r--r--src/mame/drivers/segac2.cpp2
-rw-r--r--src/mame/mame.lst3
4 files changed, 61 insertions, 30 deletions
diff --git a/src/mame/drivers/igspoker.cpp b/src/mame/drivers/igspoker.cpp
index 2dd09968cda..ecb1dc90536 100644
--- a/src/mame/drivers/igspoker.cpp
+++ b/src/mame/drivers/igspoker.cpp
@@ -126,6 +126,7 @@ public:
void init_igs_ncs2();
void init_cpokerpk();
void init_kungfu();
+ void init_kungfua();
DECLARE_READ_LINE_MEMBER(hopper_r);
@@ -135,13 +136,13 @@ protected:
virtual void video_start() override;
private:
- uint8_t igs_irqack_r();
- void igs_irqack_w(uint8_t data);
+ uint8_t irqack_r();
+ void irqack_w(uint8_t data);
void bg_tile_w(offs_t offset, uint8_t data);
void fg_tile_w(offs_t offset, uint8_t data);
void fg_color_w(offs_t offset, uint8_t data);
- void igs_nmi_and_coins_w(uint8_t data);
- void igs_lamps_w(uint8_t data);
+ void nmi_and_coins_w(uint8_t data);
+ void lamps_w(uint8_t data);
uint8_t custom_io_r();
void custom_io_w(uint8_t data);
uint8_t exp_rom_r(offs_t offset);
@@ -150,9 +151,9 @@ private:
TILE_GET_INFO_MEMBER(get_bg_tile_info);
TILE_GET_INFO_MEMBER(get_fg_tile_info);
DECLARE_VIDEO_START(cpokerpk);
- uint32_t screen_update_igs_video(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update_cpokerpk(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- TIMER_DEVICE_CALLBACK_MEMBER(igs_interrupt);
+ TIMER_DEVICE_CALLBACK_MEMBER(interrupt);
void cpokerpk_io_map(address_map &map);
void igspoker_io_map(address_map &map);
@@ -186,7 +187,7 @@ void igspoker_state::machine_reset()
}
-TIMER_DEVICE_CALLBACK_MEMBER(igspoker_state::igs_interrupt)
+TIMER_DEVICE_CALLBACK_MEMBER(igspoker_state::interrupt)
{
int scanline = param;
@@ -201,13 +202,13 @@ TIMER_DEVICE_CALLBACK_MEMBER(igspoker_state::igs_interrupt)
}
-uint8_t igspoker_state::igs_irqack_r()
+uint8_t igspoker_state::irqack_r()
{
m_maincpu->set_input_line(0, CLEAR_LINE);
return 0;
}
-void igspoker_state::igs_irqack_w(uint8_t data)
+void igspoker_state::irqack_w(uint8_t data)
{
// m_maincpu->set_input_line(0, CLEAR_LINE);
}
@@ -252,7 +253,7 @@ void igspoker_state::video_start()
m_fg_tilemap->set_transparent_pen(0);
}
-uint32_t igspoker_state::screen_update_igs_video(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+uint32_t igspoker_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
bitmap.fill(m_palette->black_pen(), cliprect);
@@ -284,7 +285,7 @@ void igspoker_state::show_out()
#endif
}
-void igspoker_state::igs_nmi_and_coins_w(uint8_t data)
+void igspoker_state::nmi_and_coins_w(uint8_t data)
{
machine().bookkeeping().coin_counter_w(0, data & 0x01); // coin_a
machine().bookkeeping().coin_counter_w(1, data & 0x04); // coin_c
@@ -302,7 +303,7 @@ void igspoker_state::igs_nmi_and_coins_w(uint8_t data)
show_out();
}
-void igspoker_state::igs_lamps_w(uint8_t data)
+void igspoker_state::lamps_w(uint8_t data)
{
/*
- Lbits -
@@ -354,9 +355,8 @@ uint8_t igspoker_state::custom_io_r()
void igspoker_state::custom_io_w(uint8_t data)
{
-#if VERBOSE
+
logerror("PC %06X: Protection write %02x\n",m_maincpu->pc(),data);
-#endif
switch (data)
{
@@ -427,10 +427,10 @@ void igspoker_state::igspoker_io_map(address_map &map)
map(0x4004, 0x4004).portr("DSW5"); /* DSW5 */
map(0x5080, 0x5083).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write));
map(0x5090, 0x5090).w(FUNC(igspoker_state::custom_io_w));
- map(0x5091, 0x5091).r(FUNC(igspoker_state::custom_io_r)).w(FUNC(igspoker_state::igs_lamps_w)); /* Keyboard */
+ map(0x5091, 0x5091).r(FUNC(igspoker_state::custom_io_r)).w(FUNC(igspoker_state::lamps_w)); /* Keyboard */
map(0x50a0, 0x50a0).portr("BUTTONS2"); /* Not connected */
map(0x50b0, 0x50b1).w("ymsnd", FUNC(ym2413_device::write));
- map(0x50c0, 0x50c0).r(FUNC(igspoker_state::igs_irqack_r)).w(FUNC(igspoker_state::igs_irqack_w));
+ map(0x50c0, 0x50c0).r(FUNC(igspoker_state::irqack_r)).w(FUNC(igspoker_state::irqack_w));
map(0x6800, 0x6fff).ram().w(FUNC(igspoker_state::bg_tile_w)).share("bg_tile_ram");
map(0x7000, 0x77ff).ram().w(FUNC(igspoker_state::fg_tile_w)).share("fg_tile_ram");
map(0x7800, 0x7fff).ram().w(FUNC(igspoker_state::fg_color_w)).share("fg_color_ram");
@@ -1180,14 +1180,14 @@ void igspoker_state::number10_io_map(address_map &map)
map(0x4004, 0x4004).portr("DSW5"); /* DSW5 */
map(0x4006, 0x4006).portr("DSW6");
map(0x4007, 0x4007).portr("DSW7");
- map(0x50f0, 0x50f0).w(FUNC(igspoker_state::igs_nmi_and_coins_w));
+ map(0x50f0, 0x50f0).w(FUNC(igspoker_state::nmi_and_coins_w));
map(0x5080, 0x5080).portr("SERVICE"); /* Services */
map(0x5090, 0x5090).w(FUNC(igspoker_state::custom_io_w));
- map(0x5091, 0x5091).r(FUNC(igspoker_state::custom_io_r)).w(FUNC(igspoker_state::igs_lamps_w)); /* Keyboard */
+ map(0x5091, 0x5091).r(FUNC(igspoker_state::custom_io_r)).w(FUNC(igspoker_state::lamps_w)); /* Keyboard */
map(0x50a0, 0x50a0).portr("BUTTONS2");
/* Sound synthesys has been patched out, replaced by ADPCM samples */
map(0x50b0, 0x50b0).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
- map(0x50c0, 0x50c0).r(FUNC(igspoker_state::igs_irqack_r)).w(FUNC(igspoker_state::igs_irqack_w));
+ map(0x50c0, 0x50c0).r(FUNC(igspoker_state::irqack_r)).w(FUNC(igspoker_state::irqack_w));
map(0x7000, 0x77ff).ram().w(FUNC(igspoker_state::fg_tile_w)).share("fg_tile_ram");
map(0x7800, 0x7fff).ram().w(FUNC(igspoker_state::fg_color_w)).share("fg_color_ram");
}
@@ -1202,15 +1202,15 @@ void igspoker_state::cpokerpk_io_map(address_map &map)
map(0x4002, 0x4002).portr("DSW3"); /* DSW3 */
map(0x4003, 0x4003).portr("DSW4"); /* DSW4 */
map(0x4004, 0x4004).portr("DSW5"); /* DSW5 */
- map(0x50f0, 0x50f0).w(FUNC(igspoker_state::igs_nmi_and_coins_w));
+ map(0x50f0, 0x50f0).w(FUNC(igspoker_state::nmi_and_coins_w));
map(0x5081, 0x5081).portr("SERVICE"); /* Services */
map(0x5082, 0x5082).portr("COINS"); /* Coing & Kbd */
map(0x5090, 0x5090).w(FUNC(igspoker_state::custom_io_w));
- map(0x5091, 0x5091).r(FUNC(igspoker_state::custom_io_r)).w(FUNC(igspoker_state::igs_lamps_w)); /* Keyboard */
+ map(0x5091, 0x5091).r(FUNC(igspoker_state::custom_io_r)).w(FUNC(igspoker_state::lamps_w)); /* Keyboard */
map(0x50a0, 0x50a0).portr("BUTTONS2");
/* Sound synthesys has been patched out, replaced by ADPCM samples */
map(0x50b0, 0x50b0).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
- map(0x50c0, 0x50c0).r(FUNC(igspoker_state::igs_irqack_r)).w(FUNC(igspoker_state::igs_irqack_w));
+ map(0x50c0, 0x50c0).r(FUNC(igspoker_state::irqack_r)).w(FUNC(igspoker_state::irqack_w));
map(0x7000, 0x77ff).ram().w(FUNC(igspoker_state::fg_tile_w)).share("fg_tile_ram");
map(0x7800, 0x7fff).ram().w(FUNC(igspoker_state::fg_color_w)).share("fg_color_ram");
}
@@ -1939,10 +1939,10 @@ void igspoker_state::igspoker(machine_config &config)
Z80(config, m_maincpu, 3579545);
m_maincpu->set_addrmap(AS_PROGRAM, &igspoker_state::igspoker_prg_map);
m_maincpu->set_addrmap(AS_IO, &igspoker_state::igspoker_io_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(igspoker_state::igs_interrupt), "screen", 0, 1);
+ TIMER(config, "scantimer").configure_scanline(FUNC(igspoker_state::interrupt), "screen", 0, 1);
i8255_device &ppi(I8255A(config, "ppi"));
- ppi.out_pa_callback().set(FUNC(igspoker_state::igs_nmi_and_coins_w));
+ ppi.out_pa_callback().set(FUNC(igspoker_state::nmi_and_coins_w));
ppi.in_pb_callback().set_ioport("SERVICE");
ppi.in_pc_callback().set_ioport("COINS");
@@ -1952,7 +1952,7 @@ void igspoker_state::igspoker(machine_config &config)
m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
m_screen->set_size(64*8, 32*8); // TODO: wrong screen size!
m_screen->set_visarea(0*8, 64*8-1, 0, 32*8-1);
- m_screen->set_screen_update(FUNC(igspoker_state::screen_update_igs_video));
+ m_screen->set_screen_update(FUNC(igspoker_state::screen_update));
m_screen->set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_igspoker);
@@ -2965,6 +2965,22 @@ void igspoker_state::init_pktet346()
rom[0xbb0c] = 0xc3;
}
+ROM_START( kungfu ) // IGS PCB N0- 0139
+ ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "u23", 0x00000, 0x10000, CRC(53396dd3) SHA1(1bab42394f016f800dbd80603c70defc25380fd7) ) // missing label, probably 'kung fu 8'
+ ROM_LOAD( "kungfu-7.u22", 0x10000, 0x08000, CRC(0568f20b) SHA1(a51a10deee0d581b79d0fee354cedceaa660f55c) ) // 1ST AND 2ND HALF IDENTICAL, otherwise same as the other set
+ ROM_IGNORE( 0x08000 )
+
+ ROM_REGION( 0x60000, "gfx1", 0 )
+ ROM_LOAD( "kungfu-4.u4", 0x00000, 0x20000, CRC(df4afedb) SHA1(56ab18c46a199653c284417a8e9edc9f32374318) )
+ ROM_LOAD( "kungfu-5.u5", 0x20000, 0x20000, CRC(25c9c98e) SHA1(2d3a399d8d53ee5cb8106d2b35d1ab1778439f81) )
+ ROM_LOAD( "kungfu-6.u6", 0x40000, 0x20000, CRC(f1ec5f0d) SHA1(0aa888e13312ed5d98953c81f03a61c6175c7fec) )
+
+ ROM_REGION( 0x30000, "gfx2", ROMREGION_ERASE00 )
+ ROM_LOAD( "kungfu-1.u1", 0x00000, 0x4000, CRC(abaada6b) SHA1(a6b910db7451e8ca737f43f32dfc8fc5ecf865f4) )
+ ROM_LOAD( "kungfu-2.u2", 0x10000, 0x4000, CRC(927b3060) SHA1(a780ea5aaee04287cc9533c2d258dc18f8426530) )
+ ROM_LOAD( "kungfu-3.u3", 0x20000, 0x4000, CRC(bbf78e03) SHA1(06fee093e75e2611d00c076c2e0a681938fa8b74) )
+ROM_END
/*
@@ -2983,7 +2999,7 @@ Board silkscreend on top PCB NO.0013-B
.41 27128 stickered 2
.40 27128 stickered 1
.98 27256 stickered 7 couldn't read chip, but board was silkscreened 27c256
-.97 27512 stickered ? looked like japanese writing
+.97 27512 stickered ? looked like Japanese writing
.38 74s287
.46 18cv8 <--- same checksum as .48
.47 pal16l8a <--- checksum was 0
@@ -2998,7 +3014,7 @@ open 24 pin socket @ u54
*/
-ROM_START( kungfu )
+ROM_START( kungfua )
ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASE00 )
// u97 contains leftover x86 code at 0-3fff (compiled with Borland Turbo-C).
// You can rename the rom to kungfu.exe and run it (DOS MZ executable)!
@@ -3027,6 +3043,18 @@ ROM_END
void igspoker_state::init_kungfu()
{
uint8_t *rom = memregion("maincpu")->base();
+ for (int A = 0; A < 0x10000; A++)
+ {
+ rom[A] ^= 0x01;
+ if ((A & 0x0060) == 0x0020) rom[A] ^= 0x20;
+ if ((A & 0x0282) == 0x0282) rom[A] ^= 0x01;
+ if ((A & 0x0940) == 0x0940) rom[A] ^= 0x02;
+ }
+}
+
+void igspoker_state::init_kungfua()
+{
+ uint8_t *rom = memregion("maincpu")->base();
for (int A = 0x4000; A < 0x10000; A++)
{
@@ -3071,4 +3099,5 @@ GAMEL( 1993?,pktet346, 0, pktetris, pktet346, igspoker_state, init_pkt
GAMEL( 199?, igstet341, pktet346, pktetris, igstet341,igspoker_state, init_tet341, ROT0, "IGS", "Tetris (v341R)", 0, layout_igspoker )
GAMEL( 199?, igstet342, pktet346, pktetris, igstet341,igspoker_state, init_tet341, ROT0, "IGS", "Tetris (v342R)", 0, layout_igspoker )
-GAMEL( 1992, kungfu, 0, igspoker, cpoker, igspoker_state, init_kungfu, ROT0, "IGS", "Kung Fu (IGS, v100)", MACHINE_NOT_WORKING, layout_igspoker )
+GAMEL( 199?, kungfu, 0, igspoker, cpoker, igspoker_state, init_kungfu, ROT0, "IGS", "Kung Fu (IGS, v202N)", MACHINE_NOT_WORKING, layout_igspoker ) // decryption should be good, needs proper address map
+GAMEL( 1992, kungfua, kungfu, igspoker, cpoker, igspoker_state, init_kungfua, ROT0, "IGS", "Kung Fu (IGS, v100)", MACHINE_NOT_WORKING, layout_igspoker ) // missing internal ROM dump
diff --git a/src/mame/drivers/jackie.cpp b/src/mame/drivers/jackie.cpp
index bd923d3a109..83881782177 100644
--- a/src/mame/drivers/jackie.cpp
+++ b/src/mame/drivers/jackie.cpp
@@ -3,6 +3,7 @@
/*
Happy Jackie (c) 1993 IGS.
Video Slot machine game for amusement only.
+IGS PCB N0-T0039-4
Driver by David Haywood and Mirko Buffoni
*/
diff --git a/src/mame/drivers/segac2.cpp b/src/mame/drivers/segac2.cpp
index 9b404301090..3645760a5ea 100644
--- a/src/mame/drivers/segac2.cpp
+++ b/src/mame/drivers/segac2.cpp
@@ -2909,7 +2909,7 @@ GAME( 1994, stkclmns, 0, segac2, stkclmns, segac2_state, init_st
GAME( 1994, stkclmnsj, stkclmns, segac2, stkclmns, segac2_state, init_stkclmnj, ROT0, "Sega", "Stack Columns (Japan)", 0 )
GAME( 1994, ichir, 0, segac2, ichir, segac2_state, init_ichir, ROT0, "Sega", "Puzzle & Action: Ichidant-R (World)", 0 )
-GAME( 1994, ichirbl, ichir, segac2, ichir, segac2_state, init_noprot, ROT0, "Sega", "Puzzle & Action: Ichidant-R (World) (bootleg)", 0 )
+GAME( 1994, ichirbl, ichir, segac2, ichir, segac2_state, init_noprot, ROT0, "bootleg", "Puzzle & Action: Ichidant-R (World) (bootleg)", 0 )
GAME( 1994, ichirk, ichir, segac2, ichir, segac2_state, init_ichirk, ROT0, "Sega", "Puzzle & Action: Ichidant-R (Korea)", 0 )
GAME( 1994, ichirj, ichir, segac2, ichir, segac2_state, init_ichirj, ROT0, "Sega", "Puzzle & Action: Ichidant-R (Japan)", 0 )
GAME( 1994, ichirjbl, ichir, segac, ichir, segac2_state, init_ichirjbl, ROT0, "bootleg", "Puzzle & Action: Ichidant-R (Japan) (bootleg)", 0 ) // C board, no samples
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index 4ad0d412dac..15c7b761392 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -17225,7 +17225,8 @@ igs_ncs // (c) 198? IGS
igs_ncs2 // (c) 2000 IGS
igstet341 // (c) 199? IGS
igstet342 // (c) 199? IGS
-kungfu // (c) 1992 IGS
+kungfu // (c) 199? IGS
+kungfua // (c) 1992 IGS
number10 // (c) IGS (Board labeled Playmark Srl)
numbr10l // (c) IGS (Board labeled Playmark Srl)
pktet346 // (c) 199? IGS