mirror of
https://github.com/holub/mame
synced 2025-04-16 05:24:54 +03:00
New clones marked as NOT_WORKING
-------------------------------- Kung Fu (IGS, v202N) [Jorge Silva]
This commit is contained in:
parent
3f083ff7f2
commit
140b1ca07a
@ -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
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user