summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/video/cps1.c
diff options
context:
space:
mode:
author Robbbert <pac0446@bigpond.net.au>2015-08-21 11:39:44 +1000
committer Robbbert <pac0446@bigpond.net.au>2015-08-21 11:39:44 +1000
commit44e60954cd549ee9c77173d42ed55d10345fa803 (patch)
tree7cb695d4281e8312270a58b69c1f47efd56c9700 /src/mame/video/cps1.c
parenta6242ea3678b1ac478c08e32fde0801d4b76f269 (diff)
Fixed 3wondersb [Robbbert]
Diffstat (limited to 'src/mame/video/cps1.c')
-rw-r--r--src/mame/video/cps1.c17
1 files changed, 16 insertions, 1 deletions
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)