summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/video/voodoo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/video/voodoo.cpp')
-rw-r--r--src/devices/video/voodoo.cpp16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/devices/video/voodoo.cpp b/src/devices/video/voodoo.cpp
index 35014038b71..a3a5596586e 100644
--- a/src/devices/video/voodoo.cpp
+++ b/src/devices/video/voodoo.cpp
@@ -1308,7 +1308,8 @@ static void recompute_texture_params(tmu_state *t)
/* Several Voodoo 2 games leave the upper bits of TLOD == 0xff, meaning we think */
/* they want multitex mode when they really don't -- disable for now */
// Enable for Voodoo 3 or Viper breaks - VL.
- if (TEXLOD_TMULTIBASEADDR(t->reg[tLOD].u))
+ // Add check for upper nibble not equal to zero to fix funkball -- TG
+ if (TEXLOD_TMULTIBASEADDR(t->reg[tLOD].u) && (t->reg[tLOD].u >> 28) == 0)
{
base = (t->reg[texBaseAddr_1].u & t->texaddr_mask) << t->texaddr_shift;
t->lodoffset[1] = base & t->mask;
@@ -3395,11 +3396,14 @@ int32_t voodoo_device::texture_w(voodoo_device *vd, offs_t offset, uint32_t data
tt = (offset >> 7) & 0xff;
/* old code has a bit about how this is broken in gauntleg unless we always look at TMU0 */
- if (TEXMODE_SEQ_8_DOWNLD(vd->tmu[0].reg/*t->reg*/[textureMode].u))
- ts = (offset << 2) & 0xfc;
- else
- ts = (offset << 1) & 0xfc;
-
+ if (TEXMODE_SEQ_8_DOWNLD(vd->tmu[0].reg/*t->reg*/[textureMode].u)) {
+ //ts = (offset << 2) & 0xfc;
+ ts = (offset & 0x3f) << 2;
+ }
+ else {
+ //ts = (offset << 1) & 0xfc;
+ ts = (offset & 0x7f) << 1;
+ }
/* validate parameters */
if (lod > 8)
return 0;