diff options
author | StapleButter <thetotalworm@gmail.com> | 2017-03-16 23:01:22 +0100 |
---|---|---|
committer | StapleButter <thetotalworm@gmail.com> | 2017-03-16 23:01:22 +0100 |
commit | 8a4ed8f41ca54164fdb335343461ab5f9c3bd87f (patch) | |
tree | 28ba71576603fef73dfcce5db33e157ec236e6c5 /src/GPU3D.h | |
parent | 10ca9b6f7f20f88dfcdfdf680daf1b04cb7f22c5 (diff) |
reorganize repo, move shit around
Diffstat (limited to 'src/GPU3D.h')
-rw-r--r-- | src/GPU3D.h | 98 |
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 |