From 44e60954cd549ee9c77173d42ed55d10345fa803 Mon Sep 17 00:00:00 2001 From: Robbbert Date: Fri, 21 Aug 2015 11:39:44 +1000 Subject: [PATCH] Fixed 3wondersb [Robbbert] --- src/mame/drivers/cps1.c | 12 ++++++------ src/mame/video/cps1.c | 17 ++++++++++++++++- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/src/mame/drivers/cps1.c b/src/mame/drivers/cps1.c index 6e2b53990a3..0b9504d74c8 100644 --- a/src/mame/drivers/cps1.c +++ b/src/mame/drivers/cps1.c @@ -11801,7 +11801,7 @@ GAME( 1991, 3wonders, 0, cps1_10MHz, 3wonders, cps_state, cps1, GAME( 1991, 3wondersr1, 3wonders, cps1_10MHz, 3wonders, cps_state, cps1, ROT0, "Capcom", "Three Wonders (World 910513)", MACHINE_SUPPORTS_SAVE ) // "ETC" GAME( 1991, 3wondersu, 3wonders, cps1_10MHz, 3wonders, cps_state, cps1, ROT0, "Capcom", "Three Wonders (USA 910520)", MACHINE_SUPPORTS_SAVE ) GAME( 1991, wonder3, 3wonders, cps1_10MHz, 3wonders, cps_state, cps1, ROT0, "Capcom", "Wonder 3 (Japan 910520)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, 3wondersb, 3wonders, cps1_10MHz, 3wonders, cps_state, cps1, ROT0, "bootleg", "Three Wonders (bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // 910520 - based on World version +GAME( 1991, 3wondersb, 3wonders, cps1_10MHz, 3wonders, cps_state, cps1, ROT0, "bootleg", "Three Wonders (bootleg)", MACHINE_SUPPORTS_SAVE ) // 910520 - based on World version GAME( 1991, 3wondersh, 3wonders, cps1_10MHz, 3wonders, cps_state, cps1, ROT0, "bootleg", "Three Wonders (hack)", MACHINE_SUPPORTS_SAVE ) // 910520 - based on World version GAME( 1991, kod, 0, cps1_10MHz, kod, cps_state, cps1, ROT0, "Capcom", "The King of Dragons (World 910805)", MACHINE_SUPPORTS_SAVE ) // "ETC" GAME( 1991, kodr1, kod, cps1_10MHz, kodr1, cps_state, cps1, ROT0, "Capcom", "The King of Dragons (World 910711)", MACHINE_SUPPORTS_SAVE ) // "ETC" @@ -11871,7 +11871,7 @@ GAME( 1992, sf2hfj, sf2hf, cps1_12MHz, sf2j, cps_state, cps1, GAME( 1993, dino, 0, qsound, dino, cps_state, dino, ROT0, "Capcom", "Cadillacs and Dinosaurs (World 930201)", MACHINE_SUPPORTS_SAVE ) // "ETC" GAME( 1993, dinou, dino, qsound, dino, cps_state, dino, ROT0, "Capcom", "Cadillacs and Dinosaurs (USA 930201)", MACHINE_SUPPORTS_SAVE ) GAME( 1993, dinoj, dino, qsound, dino, cps_state, dino, ROT0, "Capcom", "Cadillacs: Kyouryuu Shin Seiki (Japan 930201)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, dinohunt, dino, wofhfh, dinoh, cps_state, dinohunt, ROT0, "bootleg", "Dinosaur Hunter (Chinese bootleg of Cadillacs and Dinosaurs)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // 930223 - based on Asia TW version, the original is still undumped +GAME( 1993, dinohunt, dino, wofhfh, dinoh, cps_state, dinohunt, ROT0, "bootleg", "Dinosaur Hunter (Chinese bootleg of Cadillacs and Dinosaurs)", MACHINE_SUPPORTS_SAVE ) // 930223 - based on Asia TW version, the original is still undumped GAME( 1993, punisher, 0, qsound, punisher, cps_state, punisher, ROT0, "Capcom", "The Punisher (World 930422)", MACHINE_SUPPORTS_SAVE ) // "ETC" GAME( 1993, punisheru, punisher, qsound, punisher, cps_state, punisher, ROT0, "Capcom", "The Punisher (USA 930422)", MACHINE_SUPPORTS_SAVE ) GAME( 1993, punisherh, punisher, qsound, punisher, cps_state, punisher, ROT0, "Capcom", "The Punisher (Hispanic 930422)", MACHINE_SUPPORTS_SAVE ) @@ -11898,10 +11898,10 @@ GAME( 1995, pang3b, pang3, pang3, pang3b, cps_state, pang3b, /* Home 'CPS Changer' Unit - For MESS */ -CONS( 1994, wofch, 0, 0, qsound, wofch, cps_state, wof, "Capcom", "Tenchi wo Kurau II: Sekiheki no Tatakai (CPS Changer, Japan 921031)", 0 ) -CONS( 1995, sfzch, 0, 0, cps1_12MHz, sfzch, cps_state, cps1, "Capcom", "Street Fighter Zero (CPS Changer, Japan 951020)", 0 ) +CONS( 1994, wofch, 0, 0, qsound, wofch, cps_state, wof, "Capcom", "Tenchi wo Kurau II: Sekiheki no Tatakai (CPS Changer, Japan 921031)", MACHINE_SUPPORTS_SAVE ) +CONS( 1995, sfzch, 0, 0, cps1_12MHz, sfzch, cps_state, cps1, "Capcom", "Street Fighter Zero (CPS Changer, Japan 951020)", MACHINE_SUPPORTS_SAVE ) // are these 2 legit sets, or did somebody region hack it? -CONS( 1995, sfach, sfzch, 0, cps1_12MHz, sfzch, cps_state, cps1, "Capcom", "Street Fighter Alpha: Warriors' Dreams (CPS Changer, Publicity USA 950727)", 0 ) -CONS( 1995, sfzbch, sfzch, 0, cps1_12MHz, sfzch, cps_state, cps1, "Capcom", "Street Fighter Zero (CPS Changer, Brazil 950727)", 0 ) +CONS( 1995, sfach, sfzch, 0, cps1_12MHz, sfzch, cps_state, cps1, "Capcom", "Street Fighter Alpha: Warriors' Dreams (CPS Changer, Publicity USA 950727)", MACHINE_SUPPORTS_SAVE ) +CONS( 1995, sfzbch, sfzch, 0, cps1_12MHz, sfzch, cps_state, cps1, "Capcom", "Street Fighter Zero (CPS Changer, Brazil 950727)", MACHINE_SUPPORTS_SAVE ) // Ken Sei Mogura: Street Fighter II - see kenseim.c diff --git a/src/mame/video/cps1.c b/src/mame/video/cps1.c index 73e51719582..273a8d8abca 100644 --- a/src/mame/video/cps1.c +++ b/src/mame/video/cps1.c @@ -1477,7 +1477,7 @@ static const struct CPS1config cps1_config_table[]= {"3wondersr1", CPS_B_21_BT1, mapper_RT24B }, {"3wondersu", CPS_B_21_BT1, mapper_RT24B }, {"wonder3", CPS_B_21_BT1, mapper_RT22B }, // equivalent to RT24B - {"3wondersb", CPS_B_21_BT1, mapper_RT24B }, + {"3wondersb", CPS_B_21_BT1, mapper_RT24B, 0x36, 0, 0, 0x88 }, // same as 3wonders except some registers are hard wired rather than written to {"3wondersh", CPS_B_02 , mapper_RT24B }, /* Not 100% sure of the CPS B-ID */ {"kod", CPS_B_21_BT2, mapper_KD29B, 0x36, 0, 0x34 }, {"kodr1", CPS_B_21_BT2, mapper_KD29B, 0x36, 0, 0x34 }, @@ -1950,6 +1950,18 @@ void cps_state::cps1_get_video_base() scroll2xoff = -0x0b; scroll3xoff = -0x0c; } + else + if (m_game_config->bootleg_kludge == 0x88) // 3wondersb + { + scroll1xoff = 0x4; + scroll2xoff = 0x6; + scroll3xoff = 0xa; + m_cps_b_regs[0x30/2] = 0x3f; + m_cps_a_regs[CPS1_VIDEOCONTROL] = 0x3e; + m_cps_a_regs[CPS1_SCROLL2_BASE] = 0x90c0; + m_cps_a_regs[CPS1_SCROLL3_BASE] = 0x9100; + m_cps_a_regs[CPS1_PALETTE_BASE] = 0x9140; + } m_obj = cps1_base(CPS1_OBJ_BASE, m_obj_size); m_other = cps1_base(CPS1_OTHER_BASE, m_other_size); @@ -2958,6 +2970,9 @@ UINT32 cps_state::screen_update_cps1(screen_device &screen, bitmap_ind16 &bitmap if (m_cps_version == 1) { + if BIT(m_game_config->bootleg_kludge, 7) + cps1_build_palette(cps1_base(CPS1_PALETTE_BASE, m_palette_align)); + cps1_render_layer(screen, bitmap, cliprect, l0, 0); if (l1 == 0)