aboutsummaryrefslogtreecommitdiff
path: root/GPU3D.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'GPU3D.cpp')
-rw-r--r--GPU3D.cpp22
1 files changed, 21 insertions, 1 deletions
diff --git a/GPU3D.cpp b/GPU3D.cpp
index 0e8e45d..60fe733 100644
--- a/GPU3D.cpp
+++ b/GPU3D.cpp
@@ -144,6 +144,8 @@ FIFO<CmdFIFOEntry>* CmdPIPE;
u32 NumCommands, CurCommand, ParamCount, TotalParams;
u32 DispCnt;
+u32 AlphaRef;
+
u32 GXStat;
u32 ExecParams[32];
@@ -233,6 +235,8 @@ void Reset()
TotalParams = 0;
DispCnt = 0;
+ AlphaRef = 0;
+
GXStat = 0;
memset(ExecParams, 0, 32*4);
@@ -425,7 +429,7 @@ void ClipSegment(Vertex* outbuf, Vertex* vout, Vertex* vin)
if (comp != 2) INTERPOLATE(Position[2]);
INTERPOLATE(Position[3]);
mid.Position[comp] = plane*mid.Position[3];
-//printf("clip %d,%d: Y = %08X %08X %08X, %08X %08X\n", comp, plane, vin->Position[1], vout->Position[1], mid.Position[1], (s32)factor_num, factor_den);
+
INTERPOLATE(Color[0]);
INTERPOLATE(Color[1]);
INTERPOLATE(Color[2]);
@@ -1382,6 +1386,8 @@ void VBlank()
{
if (FlushRequest)
{
+ SoftRenderer::DispCnt = DispCnt;
+ SoftRenderer::AlphaRef = AlphaRef;
SoftRenderer::RenderFrame(CurFlushAttributes, CurVertexRAM, CurPolygonRAM, NumPolygons);
CurRAMBank = CurRAMBank?0:1;
@@ -1462,6 +1468,12 @@ u32 Read32(u32 addr)
void Write8(u32 addr, u8 val)
{
+ switch (addr)
+ {
+ case 0x04000340:
+ AlphaRef = val & 0x1F;
+ return;
+ }
}
void Write16(u32 addr, u16 val)
@@ -1472,6 +1484,10 @@ void Write16(u32 addr, u16 val)
DispCnt = val;
return;
+ case 0x04000340:
+ AlphaRef = val & 0x1F;
+ return;
+
case 0x04000350:
ClearAttr1 = (ClearAttr1 & 0xFFFF0000) | val;
return;
@@ -1495,6 +1511,10 @@ void Write32(u32 addr, u32 val)
DispCnt = val & 0xFFFF;
return;
+ case 0x04000340:
+ AlphaRef = val & 0x1F;
+ return;
+
case 0x04000350:
ClearAttr1 = val;
return;