Added Voodoo depth biasing.
This commit is contained in:
parent
14df80109b
commit
74786231c5
3 changed files with 24 additions and 1 deletions
|
|
@ -594,7 +594,9 @@ enum
|
|||
FBZ_DRAW_FRONT = 0x0000,
|
||||
FBZ_DRAW_BACK = 0x4000,
|
||||
FBZ_DRAW_MASK = 0xc000,
|
||||
|
||||
|
||||
FBZ_DEPTH_BIAS = (1 << 16),
|
||||
|
||||
FBZ_PARAM_ADJUST = (1 << 26)
|
||||
};
|
||||
|
||||
|
|
@ -1962,6 +1964,9 @@ static void voodoo_half_triangle(voodoo_t *voodoo, voodoo_params_t *params, vood
|
|||
else
|
||||
new_depth = CLAMP16(state->z >> 12);
|
||||
|
||||
if (params->fbzMode & FBZ_DEPTH_BIAS)
|
||||
new_depth = (new_depth + params->zaColor) & 0xffff;
|
||||
|
||||
if (params->fbzMode & FBZ_DEPTH_ENABLE)
|
||||
{
|
||||
uint16_t old_depth = aux_mem[x];
|
||||
|
|
|
|||
|
|
@ -231,6 +231,15 @@ static inline void voodoo_generate(uint8_t *code_block, voodoo_t *voodoo, voodoo
|
|||
addbyte(0xc3);
|
||||
}
|
||||
|
||||
if (params->fbzMode & FBZ_DEPTH_BIAS)
|
||||
{
|
||||
addbyte(0x03); /*ADD EAX, params->zaColor[ESI]*/
|
||||
addbyte(0x86);
|
||||
addlong(offsetof(voodoo_params_t, zaColor));
|
||||
addbyte(0x25); /*AND EAX, 0xffff*/
|
||||
addlong(0xffff);
|
||||
}
|
||||
|
||||
addbyte(0x89); /*MOV state->new_depth[EDI], EAX*/
|
||||
addbyte(0x87);
|
||||
addlong(offsetof(voodoo_state_t, new_depth));
|
||||
|
|
|
|||
|
|
@ -212,6 +212,15 @@ static inline void voodoo_generate(uint8_t *code_block, voodoo_t *voodoo, voodoo
|
|||
addbyte(0x47);
|
||||
addbyte(0xc3);
|
||||
}
|
||||
|
||||
if (params->fbzMode & FBZ_DEPTH_BIAS)
|
||||
{
|
||||
addbyte(0x03); /*ADD EAX, params->zaColor[ESI]*/
|
||||
addbyte(0x86);
|
||||
addlong(offsetof(voodoo_params_t, zaColor));
|
||||
addbyte(0x25); /*AND EAX, 0xffff*/
|
||||
addlong(0xffff);
|
||||
}
|
||||
|
||||
addbyte(0x89); /*MOV state->new_depth[EDI], EAX*/
|
||||
addbyte(0x87);
|
||||
|
|
|
|||
Loading…
Reference in a new issue