New clones marked as NOT_WORKING

--------------------------------
Kung Fu (IGS, v202N) [Jorge Silva]
This commit is contained in:
Ivan Vangelista 2022-01-26 18:09:48 +01:00
parent 3f083ff7f2
commit 140b1ca07a
4 changed files with 61 additions and 30 deletions

View File

@ -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)!
@ -3025,6 +3041,18 @@ ROM_START( kungfu )
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();
@ -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

View File

@ -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
*/

View File

@ -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

View File

@ -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