aboutsummaryrefslogtreecommitdiff
path: root/src/GPU3D.h
diff options
context:
space:
mode:
authorStapleButter <thetotalworm@gmail.com>2017-03-16 23:01:22 +0100
committerStapleButter <thetotalworm@gmail.com>2017-03-16 23:01:22 +0100
commit8a4ed8f41ca54164fdb335343461ab5f9c3bd87f (patch)
tree28ba71576603fef73dfcce5db33e157ec236e6c5 /src/GPU3D.h
parent10ca9b6f7f20f88dfcdfdf680daf1b04cb7f22c5 (diff)
reorganize repo, move shit around
Diffstat (limited to 'src/GPU3D.h')
-rw-r--r--src/GPU3D.h98
1 files changed, 98 insertions, 0 deletions
diff --git a/src/GPU3D.h b/src/GPU3D.h
new file mode 100644
index 0000000..c1adc2f
--- /dev/null
+++ b/src/GPU3D.h
@@ -0,0 +1,98 @@
+/*
+ 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/.
+*/
+
+#ifndef GPU3D_H
+#define GPU3D_H
+
+namespace GPU3D
+{
+
+typedef struct
+{
+ s32 Position[4];
+ s32 Color[3];
+ s16 TexCoords[2];
+
+ bool Clipped;
+
+ // final vertex attributes.
+ // allows them to be reused in polygon strips.
+
+ s32 FinalPosition[4];
+ s32 FinalColor[3];
+
+} Vertex;
+
+typedef struct
+{
+ Vertex* Vertices[10];
+ u32 NumVertices;
+
+ u32 Attr;
+ u32 TexParam;
+ u32 TexPalette;
+
+ bool FacingView;
+ bool Translucent;
+
+ u32 VTop, VBottom; // vertex indices
+ s32 YTop, YBottom; // Y coords
+ s32 XTop, XBottom; // associated X coords
+
+} Polygon;
+
+extern u32 DispCnt;
+extern u32 AlphaRef;
+extern s32 Viewport[4];
+extern u32 ClearAttr1, ClearAttr2;
+
+bool Init();
+void DeInit();
+void Reset();
+
+void ExecuteCommand();
+
+void Run(s32 cycles);
+void CheckFIFOIRQ();
+void CheckFIFODMA();
+
+void VBlank();
+u32* GetLine(int line);
+
+u8 Read8(u32 addr);
+u16 Read16(u32 addr);
+u32 Read32(u32 addr);
+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);
+u32* GetLine(int line);
+
+}
+
+}
+
+#endif