mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2024-11-15 22:09:19 -07:00
0661efea84
Mostly just zapping a bunch of duplicated code; the only interesting thing going on here is the changes to the performance counter implementation.
93 lines
2.5 KiB
C
93 lines
2.5 KiB
C
// Copyright 2013 Dolphin Emulator Project
|
|
// Licensed under GPLv2
|
|
// Refer to the license.txt file included.
|
|
|
|
#pragma once
|
|
|
|
#include "Common/Common.h"
|
|
|
|
#include "VideoCommon/XFMemory.h"
|
|
|
|
union TXFMatrixIndexA
|
|
{
|
|
struct
|
|
{
|
|
u32 PosNormalMtxIdx : 6;
|
|
u32 Tex0MtxIdx : 6;
|
|
u32 Tex1MtxIdx : 6;
|
|
u32 Tex2MtxIdx : 6;
|
|
u32 Tex3MtxIdx : 6;
|
|
};
|
|
struct
|
|
{
|
|
u32 Hex : 30;
|
|
u32 unused : 2;
|
|
};
|
|
};
|
|
|
|
union TXFMatrixIndexB
|
|
{
|
|
struct
|
|
{
|
|
u32 Tex4MtxIdx : 6;
|
|
u32 Tex5MtxIdx : 6;
|
|
u32 Tex6MtxIdx : 6;
|
|
u32 Tex7MtxIdx : 6;
|
|
};
|
|
struct
|
|
{
|
|
u32 Hex : 24;
|
|
u32 unused : 8;
|
|
};
|
|
};
|
|
|
|
struct SWXFRegisters
|
|
{
|
|
u32 posMatrices[256]; // 0x0000 - 0x00ff
|
|
u32 unk0[768]; // 0x0100 - 0x03ff
|
|
u32 normalMatrices[96]; // 0x0400 - 0x045f
|
|
u32 unk1[160]; // 0x0460 - 0x04ff
|
|
u32 postMatrices[256]; // 0x0500 - 0x05ff
|
|
u32 lights[128]; // 0x0600 - 0x067f
|
|
u32 unk2[2432]; // 0x0680 - 0x0fff
|
|
u32 error; // 0x1000
|
|
u32 diag; // 0x1001
|
|
u32 state0; // 0x1002
|
|
u32 state1; // 0x1003
|
|
u32 xfClock; // 0x1004
|
|
u32 clipDisable; // 0x1005
|
|
u32 perf0; // 0x1006
|
|
u32 perf1; // 0x1007
|
|
INVTXSPEC hostinfo; // 0x1008 number of textures,colors,normals from vertex input
|
|
u32 nNumChans; // 0x1009
|
|
u32 ambColor[2]; // 0x100a, 0x100b
|
|
u32 matColor[2]; // 0x100c, 0x100d
|
|
LitChannel color[2]; // 0x100e, 0x100f
|
|
LitChannel alpha[2]; // 0x1010, 0x1011
|
|
u32 dualTexTrans; // 0x1012
|
|
u32 unk3; // 0x1013
|
|
u32 unk4; // 0x1014
|
|
u32 unk5; // 0x1015
|
|
u32 unk6; // 0x1016
|
|
u32 unk7; // 0x1017
|
|
TXFMatrixIndexA MatrixIndexA; // 0x1018
|
|
TXFMatrixIndexB MatrixIndexB; // 0x1019
|
|
Viewport viewport; // 0x101a - 0x101f
|
|
Projection projection; // 0x1020 - 0x1026
|
|
u32 unk8[24]; // 0x1027 - 0x103e
|
|
u32 numTexGens; // 0x103f
|
|
TexMtxInfo texMtxInfo[8]; // 0x1040 - 0x1047
|
|
u32 unk9[8]; // 0x1048 - 0x104f
|
|
PostMtxInfo postMtxInfo[8]; // 0x1050 - 0x1057
|
|
};
|
|
|
|
extern SWXFRegisters swxfregs;
|
|
|
|
void InitXFMemory();
|
|
|
|
void XFWritten(u32 transferSize, u32 baseAddress);
|
|
|
|
void SWLoadXFReg(u32 transferSize, u32 baseAddress, u32 *pData);
|
|
|
|
void SWLoadIndexedXF(u32 val, int array);
|