From e9bfbc7a268818c23a96e8bd12861a24744febde Mon Sep 17 00:00:00 2001 From: Ted Green Date: Mon, 11 Sep 2017 17:41:50 -0600 Subject: voodoo: Fixed subtle casting bug. The uncasted depth in the expanded variable calculation was causing a possible sign extension into the top 32 bits of expanded. Allows obsidian manufacturing test in calspeed to pass. (nw) --- src/devices/video/voodoo.cpp | 8 ++++---- src/mame/drivers/seattle.cpp | 3 +++ 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/devices/video/voodoo.cpp b/src/devices/video/voodoo.cpp index cc25e658d1d..3d717221d0d 100644 --- a/src/devices/video/voodoo.cpp +++ b/src/devices/video/voodoo.cpp @@ -5906,16 +5906,16 @@ void voodoo_device::raster_fastfill(void *destbase, int32_t y, const poly_extent /* fill this dest buffer row */ if (FBZMODE_AUX_BUFFER_MASK(vd->reg[fbzMode].u) && vd->fbi.auxoffs != ~0) { - uint16_t depth = vd->reg[zaColor].u; - uint64_t expanded = ((uint64_t)depth << 48) | ((uint64_t)depth << 32) | (depth << 16) | depth; + uint32_t depth = vd->reg[zaColor].u; + uint64_t expanded = ((uint64_t)depth << 32) | (uint64_t)depth; uint16_t *dest = (uint16_t *)(vd->fbi.ram + vd->fbi.auxoffs) + scry * vd->fbi.rowpixels; for (x = startx; x < stopx && (x & 3) != 0; x++) - dest[x] = depth; + dest[x] = (uint16_t) depth; for ( ; x < (stopx & ~3); x += 4) *(uint64_t *)&dest[x] = expanded; for ( ; x < stopx; x++) - dest[x] = depth; + dest[x] = (uint16_t) depth; } } diff --git a/src/mame/drivers/seattle.cpp b/src/mame/drivers/seattle.cpp index a269c2c44fb..8fcb6b77a22 100644 --- a/src/mame/drivers/seattle.cpp +++ b/src/mame/drivers/seattle.cpp @@ -1317,6 +1317,9 @@ static INPUT_PORTS_START( calspeed ) PORT_INCLUDE(seattle_common) PORT_MODIFY("DIPS") + PORT_DIPNAME( 0x0010, 0x0010, "Obsidian Manufacturing Test" ) // Needs boot rom test on to run. + PORT_DIPSETTING( 0x0010, DEF_STR( Off )) + PORT_DIPSETTING( 0x0000, DEF_STR( On )) PORT_DIPNAME( 0x0040, 0x0040, "Boot ROM Test" ) PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) -- cgit v1.2.3