aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStapleButter <thetotalworm@gmail.com>2017-02-10 16:50:26 +0100
committerStapleButter <thetotalworm@gmail.com>2017-02-10 16:50:26 +0100
commit78f49d061a1c5d1c3056244db42f2f00bed29c6b (patch)
tree300c615b1b7252bce1a021ec168f2eb9d75b0c69
parentc95f7578bbf3c9cec96b341474b3ca73159c791d (diff)
base for software renderer
-rw-r--r--GPU3D.cpp9
-rw-r--r--GPU3D.h11
-rw-r--r--GPU3D_Soft.cpp55
-rw-r--r--melonDS.cbp1
4 files changed, 75 insertions, 1 deletions
diff --git a/GPU3D.cpp b/GPU3D.cpp
index bf323c1..1ee350e 100644
--- a/GPU3D.cpp
+++ b/GPU3D.cpp
@@ -177,11 +177,15 @@ bool Init()
CmdFIFO = new FIFO<CmdFIFOEntry>(256);
CmdPIPE = new FIFO<CmdFIFOEntry>(4);
+ if (!SoftRenderer::Init()) return false;
+
return true;
}
void DeInit()
{
+ SoftRenderer::DeInit();
+
delete CmdFIFO;
delete CmdPIPE;
}
@@ -228,6 +232,8 @@ void Reset()
CurPolygonRAM = &PolygonRAM[0];
NumVertices = 0;
NumPolygons = 0;
+
+ SoftRenderer::Reset();
}
@@ -1152,7 +1158,8 @@ void CheckFIFODMA()
void VBlank()
{
- // TODO: render
+ // TODO: only do this if a SwapBuffers command was issued
+ SoftRenderer::RenderFrame(CurVertexRAM, CurPolygonRAM, NumPolygons);
CurRAMBank = CurRAMBank?0:1;
CurVertexRAM = &VertexRAM[CurRAMBank ? 6144 : 0];
diff --git a/GPU3D.h b/GPU3D.h
index 19356d8..d65fa9a 100644
--- a/GPU3D.h
+++ b/GPU3D.h
@@ -53,6 +53,17 @@ void Write8(u32 addr, u8 val);
void Write16(u32 addr, u16 val);
void Write32(u32 addr, u32 val);
+namespace SoftRenderer
+{
+
+bool Init();
+void DeInit();
+void Reset();
+
+void RenderFrame(Vertex* vertices, Polygon* polygons, int npolys);
+
+}
+
}
#endif
diff --git a/GPU3D_Soft.cpp b/GPU3D_Soft.cpp
new file mode 100644
index 0000000..38d3539
--- /dev/null
+++ b/GPU3D_Soft.cpp
@@ -0,0 +1,55 @@
+/*
+ Copyright 2016-2017 StapleButter
+
+ This file is part of melonDS.
+
+ melonDS is free software: you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free
+ Software Foundation, either version 3 of the License, or (at your option)
+ any later version.
+
+ melonDS is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with melonDS. If not, see http://www.gnu.org/licenses/.
+*/
+
+#include <stdio.h>
+#include <string.h>
+#include "NDS.h"
+#include "GPU3D.h"
+
+
+namespace GPU3D
+{
+namespace SoftRenderer
+{
+
+u8 ColorBuffer[256*192 * 4];
+
+
+bool Init()
+{
+ //
+}
+
+void DeInit()
+{
+ //
+}
+
+void Reset()
+{
+ memset(ColorBuffer, 0, 256*192 * 4);
+}
+
+
+void RenderFrame(Vertex* vertices, Polygon* polygons, int npolys)
+{
+ //
+}
+
+}
+}
diff --git a/melonDS.cbp b/melonDS.cbp
index fb32d8b..90764d9 100644
--- a/melonDS.cbp
+++ b/melonDS.cbp
@@ -58,6 +58,7 @@
<Unit filename="GPU2D.h" />
<Unit filename="GPU3D.cpp" />
<Unit filename="GPU3D.h" />
+ <Unit filename="GPU3D_Soft.cpp" />
<Unit filename="NDS.cpp" />
<Unit filename="NDS.h" />
<Unit filename="NDSCart.cpp" />