summaryrefslogtreecommitdiff
path: root/Source/Plugins/Plugin_VideoSoftware/Src/OpcodeDecoder.cpp
diff options
context:
space:
mode:
authorLioncash <mathew1800@gmail.com>2013-04-13 23:54:02 -0400
committerLioncash <mathew1800@gmail.com>2013-04-13 23:54:02 -0400
commit7ab0cca6455830a838b1b1e38e2c3f265e4e5d0b (patch)
treec0e29f86306e35d624cf60bfbeb3b9a1a200d4a1 /Source/Plugins/Plugin_VideoSoftware/Src/OpcodeDecoder.cpp
parent48927c17d252223ffdaa5cfb34aa850eb6ee6ee1 (diff)
Clean up most (99.99%) of the tab/space mismatches in the VideoSoftware project.
Got rid of trailing spaces that were unnecessary too. Also update the license header for this project. We don't use SVN anymore.
Diffstat (limited to 'Source/Plugins/Plugin_VideoSoftware/Src/OpcodeDecoder.cpp')
-rw-r--r--Source/Plugins/Plugin_VideoSoftware/Src/OpcodeDecoder.cpp408
1 files changed, 204 insertions, 204 deletions
diff --git a/Source/Plugins/Plugin_VideoSoftware/Src/OpcodeDecoder.cpp b/Source/Plugins/Plugin_VideoSoftware/Src/OpcodeDecoder.cpp
index 4848cb4d43..0fe0ac6192 100644
--- a/Source/Plugins/Plugin_VideoSoftware/Src/OpcodeDecoder.cpp
+++ b/Source/Plugins/Plugin_VideoSoftware/Src/OpcodeDecoder.cpp
@@ -12,7 +12,7 @@
// A copy of the GPL 2.0 should have been included with the program.
// If not, see http://www.gnu.org/licenses/
-// Official SVN repository and contact information can be found at
+// Official Git repository and contact information can be found at
// http://code.google.com/p/dolphin-emu/
#include "Common.h"
@@ -61,258 +61,258 @@ void DoState(PointerWrap &p)
void DecodePrimitiveStream(u32 iBufferSize)
{
- u32 vertexSize = vertexLoader.GetVertexSize();
+ u32 vertexSize = vertexLoader.GetVertexSize();
bool skipPrimitives = g_bSkipCurrentFrame ||
swstats.thisFrame.numDrawnObjects < g_SWVideoConfig.drawStart ||
swstats.thisFrame.numDrawnObjects >= g_SWVideoConfig.drawEnd;
- if (skipPrimitives)
- {
- while (streamSize > 0 && iBufferSize >= vertexSize)
- {
- g_pVideoData += vertexSize;
- iBufferSize -= vertexSize;
- streamSize--;
- }
- }
- else
- {
- while (streamSize > 0 && iBufferSize >= vertexSize)
- {
- vertexLoader.LoadVertex();
- iBufferSize -= vertexSize;
- streamSize--;
- }
- }
-
- if (streamSize == 0)
- {
- // return to normal command processing
- ResetDecoding();
- }
+ if (skipPrimitives)
+ {
+ while (streamSize > 0 && iBufferSize >= vertexSize)
+ {
+ g_pVideoData += vertexSize;
+ iBufferSize -= vertexSize;
+ streamSize--;
+ }
+ }
+ else
+ {
+ while (streamSize > 0 && iBufferSize >= vertexSize)
+ {
+ vertexLoader.LoadVertex();
+ iBufferSize -= vertexSize;
+ streamSize--;
+ }
+ }
+
+ if (streamSize == 0)
+ {
+ // return to normal command processing
+ ResetDecoding();
+ }
}
void ReadXFData(u32 iBufferSize)
{
- _assert_msg_(VIDEO, iBufferSize >= (u32)(streamSize * 4), "Underflow during standard opcode decoding");
+ _assert_msg_(VIDEO, iBufferSize >= (u32)(streamSize * 4), "Underflow during standard opcode decoding");
- u32 pData[16];
- for (int i = 0; i < streamSize; i++)
- pData[i] = DataReadU32();
- SWLoadXFReg(streamSize, streamAddress, pData);
+ u32 pData[16];
+ for (int i = 0; i < streamSize; i++)
+ pData[i] = DataReadU32();
+ SWLoadXFReg(streamSize, streamAddress, pData);
- // return to normal command processing
- ResetDecoding();
+ // return to normal command processing
+ ResetDecoding();
}
void ExecuteDisplayList(u32 addr, u32 count)
{
- u8 *videoDataSave = g_pVideoData;
+ u8 *videoDataSave = g_pVideoData;
- u8 *dlStart = Memory::GetPointer(addr);
+ u8 *dlStart = Memory::GetPointer(addr);
- g_pVideoData = dlStart;
+ g_pVideoData = dlStart;
- while (OpcodeDecoder::CommandRunnable(count))
- {
- OpcodeDecoder::Run(count);
+ while (OpcodeDecoder::CommandRunnable(count))
+ {
+ OpcodeDecoder::Run(count);
- // if data was read by the opcode decoder then the video data pointer changed
- u32 readCount = (u32)(g_pVideoData - dlStart);
- dlStart = g_pVideoData;
+ // if data was read by the opcode decoder then the video data pointer changed
+ u32 readCount = (u32)(g_pVideoData - dlStart);
+ dlStart = g_pVideoData;
- _assert_msg_(VIDEO, count >= readCount, "Display list underrun");
+ _assert_msg_(VIDEO, count >= readCount, "Display list underrun");
- count -= readCount;
- }
+ count -= readCount;
+ }
- g_pVideoData = videoDataSave;
+ g_pVideoData = videoDataSave;
}
void DecodeStandard(u32 bufferSize)
{
- _assert_msg_(VIDEO, CommandRunnable(bufferSize), "Underflow during standard opcode decoding");
+ _assert_msg_(VIDEO, CommandRunnable(bufferSize), "Underflow during standard opcode decoding");
- int Cmd = DataReadU8();
+ int Cmd = DataReadU8();
- if (Cmd == GX_NOP)
- return;
- // Causes a SIGBUS error on Android
- // XXX: Investigate
+ if (Cmd == GX_NOP)
+ return;
+ // Causes a SIGBUS error on Android
+ // XXX: Investigate
#ifndef ANDROID
- // check if switching in or out of an object
- // only used for debuggging
- if (inObjectStream && (Cmd & 0x87) != lastPrimCmd)
- {
- inObjectStream = false;
- DebugUtil::OnObjectEnd();
- }
- if (Cmd & 0x80 && !inObjectStream)
- {
- inObjectStream = true;
- lastPrimCmd = Cmd & 0x87;
- DebugUtil::OnObjectBegin();
- }
+ // check if switching in or out of an object
+ // only used for debuggging
+ if (inObjectStream && (Cmd & 0x87) != lastPrimCmd)
+ {
+ inObjectStream = false;
+ DebugUtil::OnObjectEnd();
+ }
+ if (Cmd & 0x80 && !inObjectStream)
+ {
+ inObjectStream = true;
+ lastPrimCmd = Cmd & 0x87;
+ DebugUtil::OnObjectBegin();
+ }
#endif
- switch(Cmd)
- {
- case GX_NOP:
- break;
-
- case GX_LOAD_CP_REG: //0x08
- {
- u32 SubCmd = DataReadU8();
- u32 Value = DataReadU32();
- SWLoadCPReg(SubCmd, Value);
- }
- break;
-
- case GX_LOAD_XF_REG:
- {
- u32 Cmd2 = DataReadU32();
- streamSize = ((Cmd2 >> 16) & 15) + 1;
- streamAddress = Cmd2 & 0xFFFF;
- currentFunction = ReadXFData;
- minCommandSize = streamSize * 4;
- readOpcode = false;
- }
- break;
-
- case GX_LOAD_INDX_A: //used for position matrices
- SWLoadIndexedXF(DataReadU32(), 0xC);
- break;
- case GX_LOAD_INDX_B: //used for normal matrices
- SWLoadIndexedXF(DataReadU32(), 0xD);
- break;
- case GX_LOAD_INDX_C: //used for postmatrices
- SWLoadIndexedXF(DataReadU32(), 0xE);
- break;
- case GX_LOAD_INDX_D: //used for lights
- SWLoadIndexedXF(DataReadU32(), 0xF);
- break;
-
- case GX_CMD_CALL_DL:
- {
- u32 dwAddr = DataReadU32();
- u32 dwCount = DataReadU32();
- ExecuteDisplayList(dwAddr, dwCount);
- }
- break;
-
- case 0x44:
- // zelda 4 swords calls it and checks the metrics registers after that
- break;
-
- case GX_CMD_INVL_VC:// Invalidate (vertex cache?)
- DEBUG_LOG(VIDEO, "Invalidate (vertex cache?)");
- break;
-
- case GX_LOAD_BP_REG: //0x61
- {
+ switch(Cmd)
+ {
+ case GX_NOP:
+ break;
+
+ case GX_LOAD_CP_REG: //0x08
+ {
+ u32 SubCmd = DataReadU8();
+ u32 Value = DataReadU32();
+ SWLoadCPReg(SubCmd, Value);
+ }
+ break;
+
+ case GX_LOAD_XF_REG:
+ {
+ u32 Cmd2 = DataReadU32();
+ streamSize = ((Cmd2 >> 16) & 15) + 1;
+ streamAddress = Cmd2 & 0xFFFF;
+ currentFunction = ReadXFData;
+ minCommandSize = streamSize * 4;
+ readOpcode = false;
+ }
+ break;
+
+ case GX_LOAD_INDX_A: //used for position matrices
+ SWLoadIndexedXF(DataReadU32(), 0xC);
+ break;
+ case GX_LOAD_INDX_B: //used for normal matrices
+ SWLoadIndexedXF(DataReadU32(), 0xD);
+ break;
+ case GX_LOAD_INDX_C: //used for postmatrices
+ SWLoadIndexedXF(DataReadU32(), 0xE);
+ break;
+ case GX_LOAD_INDX_D: //used for lights
+ SWLoadIndexedXF(DataReadU32(), 0xF);
+ break;
+
+ case GX_CMD_CALL_DL:
+ {
+ u32 dwAddr = DataReadU32();
+ u32 dwCount = DataReadU32();
+ ExecuteDisplayList(dwAddr, dwCount);
+ }
+ break;
+
+ case 0x44:
+ // zelda 4 swords calls it and checks the metrics registers after that
+ break;
+
+ case GX_CMD_INVL_VC:// Invalidate (vertex cache?)
+ DEBUG_LOG(VIDEO, "Invalidate (vertex cache?)");
+ break;
+
+ case GX_LOAD_BP_REG: //0x61
+ {
u32 cmd = DataReadU32();
- SWLoadBPReg(cmd);
- }
- break;
-
- // draw primitives
- default:
- if (Cmd & 0x80)
- {
+ SWLoadBPReg(cmd);
+ }
+ break;
+
+ // draw primitives
+ default:
+ if (Cmd & 0x80)
+ {
u8 vatIndex = Cmd & GX_VAT_MASK;
- u8 primitiveType = (Cmd & GX_PRIMITIVE_MASK) >> GX_PRIMITIVE_SHIFT;
- vertexLoader.SetFormat(vatIndex, primitiveType);
-
- // switch to primitive processing
- streamSize = DataReadU16();
- currentFunction = DecodePrimitiveStream;
- minCommandSize = vertexLoader.GetVertexSize();
- readOpcode = false;
-
- INCSTAT(swstats.thisFrame.numPrimatives);
- DEBUG_LOG(VIDEO, "Draw begin");
- }
- else
- {
- PanicAlert("GFX: Unknown Opcode (0x%x).\n", Cmd);
- break;
- }
- break;
- }
+ u8 primitiveType = (Cmd & GX_PRIMITIVE_MASK) >> GX_PRIMITIVE_SHIFT;
+ vertexLoader.SetFormat(vatIndex, primitiveType);
+
+ // switch to primitive processing
+ streamSize = DataReadU16();
+ currentFunction = DecodePrimitiveStream;
+ minCommandSize = vertexLoader.GetVertexSize();
+ readOpcode = false;
+
+ INCSTAT(swstats.thisFrame.numPrimatives);
+ DEBUG_LOG(VIDEO, "Draw begin");
+ }
+ else
+ {
+ PanicAlert("GFX: Unknown Opcode (0x%x).\n", Cmd);
+ break;
+ }
+ break;
+ }
}
void Init()
{
- inObjectStream = false;
- lastPrimCmd = 0;
- ResetDecoding();
+ inObjectStream = false;
+ lastPrimCmd = 0;
+ ResetDecoding();
}
void ResetDecoding()
{
- currentFunction = DecodeStandard;
- minCommandSize = 1;
- readOpcode = true;
+ currentFunction = DecodeStandard;
+ minCommandSize = 1;
+ readOpcode = true;
}
bool CommandRunnable(u32 iBufferSize)
{
- if (iBufferSize < minCommandSize)
- return false;
-
- if (readOpcode)
- {
- u8 Cmd = DataPeek8(0);
- u32 minSize = 1;
-
- switch(Cmd)
- {
- case GX_LOAD_CP_REG: //0x08
- minSize = 6;
- break;
-
- case GX_LOAD_XF_REG:
- minSize = 5;
- break;
-
- case GX_LOAD_INDX_A: //used for position matrices
- minSize = 5;
- break;
- case GX_LOAD_INDX_B: //used for normal matrices
- minSize = 5;
- break;
- case GX_LOAD_INDX_C: //used for postmatrices
- minSize = 5;
- break;
- case GX_LOAD_INDX_D: //used for lights
- minSize = 5;
- break;
-
- case GX_CMD_CALL_DL:
- minSize = 9;
- break;
-
- case GX_LOAD_BP_REG: //0x61
- minSize = 5;
- break;
-
- // draw primitives
- default:
- if (Cmd & 0x80)
- minSize = 3;
- break;
- }
-
- return (iBufferSize >= minSize);
- }
-
- return true;
+ if (iBufferSize < minCommandSize)
+ return false;
+
+ if (readOpcode)
+ {
+ u8 Cmd = DataPeek8(0);
+ u32 minSize = 1;
+
+ switch(Cmd)
+ {
+ case GX_LOAD_CP_REG: //0x08
+ minSize = 6;
+ break;
+
+ case GX_LOAD_XF_REG:
+ minSize = 5;
+ break;
+
+ case GX_LOAD_INDX_A: //used for position matrices
+ minSize = 5;
+ break;
+ case GX_LOAD_INDX_B: //used for normal matrices
+ minSize = 5;
+ break;
+ case GX_LOAD_INDX_C: //used for postmatrices
+ minSize = 5;
+ break;
+ case GX_LOAD_INDX_D: //used for lights
+ minSize = 5;
+ break;
+
+ case GX_CMD_CALL_DL:
+ minSize = 9;
+ break;
+
+ case GX_LOAD_BP_REG: //0x61
+ minSize = 5;
+ break;
+
+ // draw primitives
+ default:
+ if (Cmd & 0x80)
+ minSize = 3;
+ break;
+ }
+
+ return (iBufferSize >= minSize);
+ }
+
+ return true;
}
void Run(u32 iBufferSize)
{
- currentFunction(iBufferSize);
+ currentFunction(iBufferSize);
}
}