Beispiel #1
0
	bool ZCompare(u16 x, u16 y, u32 z)
	{
		u32 offset = GetDepthOffset(x, y);
		u32 depth = GetPixelDepth(offset);

		bool pass;

		switch (bpmem.zmode.func)
		{
		case ZMode::NEVER:
			pass = false;
			break;
		case ZMode::LESS:
			pass = z < depth;
			break;
		case ZMode::EQUAL:
			pass = z == depth;
			break;
		case ZMode::LEQUAL:
			pass = z <= depth;
			break;
		case ZMode::GREATER:
			pass = z > depth;
			break;
		case ZMode::NEQUAL:
			pass = z != depth;
			break;
		case ZMode::GEQUAL:
			pass = z >= depth;
			break;
		case ZMode::ALWAYS:
			pass = true;
			break;
		default:
			pass = false;
			ERROR_LOG(VIDEO, "Bad Z compare mode %i", (int)bpmem.zmode.func);
		}

		if (pass && bpmem.zmode.updateenable)
		{
			SetPixelDepth(offset, z);
		}

		return pass;
	}
Beispiel #2
0
	u8 *GetPixelPointer(u16 x, u16 y, bool depth)
	{
		if (depth)
			return &efb[GetDepthOffset(x, y)];
		return &efb[GetColorOffset(x, y)];
	}
Beispiel #3
0
	void SetDepth(u16 x, u16 y, u32 depth)
	{
		if (bpmem.zmode.updateenable)
			SetPixelDepth(GetDepthOffset(x, y), depth);
	}
Beispiel #4
0
	u32 GetDepth(u16 x, u16 y)
	{
		u32 offset = GetDepthOffset(x, y);
		return GetPixelDepth(offset);
	}
Beispiel #5
0
 void SetDepth(u16 x, u16 y, u32 depth)
 {
     SetPixelDepth(GetDepthOffset(x, y), depth);
 }