Add read of more Voodoo registers. Tomb Raider demo not works.
This commit is contained in:
parent
20bd34e548
commit
d20868f930
1 changed files with 57 additions and 12 deletions
|
|
@ -181,6 +181,8 @@ typedef struct voodoo_params_t
|
||||||
uint32_t front_offset;
|
uint32_t front_offset;
|
||||||
|
|
||||||
uint32_t swapbufferCMD;
|
uint32_t swapbufferCMD;
|
||||||
|
|
||||||
|
uint32_t stipple;
|
||||||
} voodoo_params_t;
|
} voodoo_params_t;
|
||||||
|
|
||||||
typedef struct texture_t
|
typedef struct texture_t
|
||||||
|
|
@ -494,7 +496,7 @@ enum
|
||||||
SST_chromaKey = 0x134,
|
SST_chromaKey = 0x134,
|
||||||
|
|
||||||
SST_userIntrCMD = 0x13c,
|
SST_userIntrCMD = 0x13c,
|
||||||
|
SST_stipple = 0x140,
|
||||||
SST_color0 = 0x144,
|
SST_color0 = 0x144,
|
||||||
SST_color1 = 0x148,
|
SST_color1 = 0x148,
|
||||||
|
|
||||||
|
|
@ -4508,7 +4510,9 @@ static void voodoo_reg_writel(uint32_t addr, uint32_t val, void *p)
|
||||||
voodoo->params.chromaKey_b = val & 0xff;
|
voodoo->params.chromaKey_b = val & 0xff;
|
||||||
voodoo->params.chromaKey = val & 0xffffff;
|
voodoo->params.chromaKey = val & 0xffffff;
|
||||||
break;
|
break;
|
||||||
|
case SST_stipple:
|
||||||
|
voodoo->params.stipple = val;
|
||||||
|
break;
|
||||||
case SST_color0:
|
case SST_color0:
|
||||||
voodoo->params.color0 = val;
|
voodoo->params.color0 = val;
|
||||||
break;
|
break;
|
||||||
|
|
@ -5630,6 +5634,18 @@ static uint16_t voodoo_readw(uint32_t addr, void *p)
|
||||||
return 0xffff;
|
return 0xffff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void voodoo_flush(voodoo_t *voodoo)
|
||||||
|
{
|
||||||
|
voodoo->flush = 1;
|
||||||
|
while (!FIFO_EMPTY)
|
||||||
|
{
|
||||||
|
wake_fifo_thread_now(voodoo);
|
||||||
|
thread_wait_event(voodoo->fifo_not_full_event, 1);
|
||||||
|
}
|
||||||
|
wait_for_render_thread_idle(voodoo);
|
||||||
|
voodoo->flush = 0;
|
||||||
|
}
|
||||||
|
|
||||||
static uint32_t voodoo_readl(uint32_t addr, void *p)
|
static uint32_t voodoo_readl(uint32_t addr, void *p)
|
||||||
{
|
{
|
||||||
voodoo_t *voodoo = (voodoo_t *)p;
|
voodoo_t *voodoo = (voodoo_t *)p;
|
||||||
|
|
@ -5676,18 +5692,47 @@ static uint32_t voodoo_readl(uint32_t addr, void *p)
|
||||||
wake_fifo_thread(voodoo);
|
wake_fifo_thread(voodoo);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case SST_fbzColorPath:
|
||||||
|
voodoo_flush(voodoo);
|
||||||
|
temp = voodoo->params.fbzColorPath;
|
||||||
|
break;
|
||||||
|
case SST_fogMode:
|
||||||
|
voodoo_flush(voodoo);
|
||||||
|
temp = voodoo->params.fogMode;
|
||||||
|
break;
|
||||||
|
case SST_alphaMode:
|
||||||
|
voodoo_flush(voodoo);
|
||||||
|
temp = voodoo->params.alphaMode;
|
||||||
|
break;
|
||||||
|
case SST_fbzMode:
|
||||||
|
voodoo_flush(voodoo);
|
||||||
|
temp = voodoo->params.fbzMode;
|
||||||
|
break;
|
||||||
case SST_lfbMode:
|
case SST_lfbMode:
|
||||||
voodoo->flush = 1;
|
voodoo_flush(voodoo);
|
||||||
while (!FIFO_EMPTY)
|
|
||||||
{
|
|
||||||
wake_fifo_thread_now(voodoo);
|
|
||||||
thread_wait_event(voodoo->fifo_not_full_event, 1);
|
|
||||||
}
|
|
||||||
wait_for_render_thread_idle(voodoo);
|
|
||||||
voodoo->flush = 0;
|
|
||||||
|
|
||||||
temp = voodoo->lfbMode;
|
temp = voodoo->lfbMode;
|
||||||
break;
|
break;
|
||||||
|
case SST_clipLeftRight:
|
||||||
|
voodoo_flush(voodoo);
|
||||||
|
temp = voodoo->params.clipRight | (voodoo->params.clipLeft << 16);
|
||||||
|
break;
|
||||||
|
case SST_clipLowYHighY:
|
||||||
|
voodoo_flush(voodoo);
|
||||||
|
temp = voodoo->params.clipHighY | (voodoo->params.clipLowY << 16);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SST_stipple:
|
||||||
|
voodoo_flush(voodoo);
|
||||||
|
temp = voodoo->params.stipple;
|
||||||
|
break;
|
||||||
|
case SST_color0:
|
||||||
|
voodoo_flush(voodoo);
|
||||||
|
temp = voodoo->params.color0;
|
||||||
|
break;
|
||||||
|
case SST_color1:
|
||||||
|
voodoo_flush(voodoo);
|
||||||
|
temp = voodoo->params.color1;
|
||||||
|
break;
|
||||||
|
|
||||||
case SST_fbiPixelsIn:
|
case SST_fbiPixelsIn:
|
||||||
temp = voodoo->fbiPixelsIn & 0xffffff;
|
temp = voodoo->fbiPixelsIn & 0xffffff;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue