diff --git a/libctru/include/3ds/gpu/gpu.h b/libctru/include/3ds/gpu/gpu.h index ac25969..5fd3071 100644 --- a/libctru/include/3ds/gpu/gpu.h +++ b/libctru/include/3ds/gpu/gpu.h @@ -1,14 +1,8 @@ #pragma once -#include "3ds/gpu/registers.h" - -//GPU void GPU_Init(Handle *gsphandle); void GPU_Reset(u32* gxbuf, u32* gpuBuf, u32 gpuBufSize); -//GPUCMD -#define GPUCMD_HEADER(consec, mask, reg) (((consec)<<31)|(((mask)&0xF)<<16)|((reg)&0x3FF)) - void GPUCMD_SetBuffer(u32* adr, u32 size, u32 offset); void GPUCMD_SetBufferOffset(u32 offset); void GPUCMD_GetBuffer(u32** adr, u32* size, u32* offset); diff --git a/libctru/include/3ds/gpu/registers.h b/libctru/include/3ds/gpu/registers.h deleted file mode 100644 index abbf61e..0000000 --- a/libctru/include/3ds/gpu/registers.h +++ /dev/null @@ -1,729 +0,0 @@ -#pragma once - -#define GPUREG_0000 0x0000 -#define GPUREG_0001 0x0001 -#define GPUREG_0002 0x0002 -#define GPUREG_0003 0x0003 -#define GPUREG_0004 0x0004 -#define GPUREG_0005 0x0005 -#define GPUREG_0006 0x0006 -#define GPUREG_0007 0x0007 -#define GPUREG_0008 0x0008 -#define GPUREG_0009 0x0009 -#define GPUREG_000A 0x000A -#define GPUREG_000B 0x000B -#define GPUREG_000C 0x000C -#define GPUREG_000D 0x000D -#define GPUREG_000E 0x000E -#define GPUREG_000F 0x000F -#define GPUREG_FINALIZE 0x0010 -#define GPUREG_0011 0x0011 -#define GPUREG_0012 0x0012 -#define GPUREG_0013 0x0013 -#define GPUREG_0014 0x0014 -#define GPUREG_0015 0x0015 -#define GPUREG_0016 0x0016 -#define GPUREG_0017 0x0017 -#define GPUREG_0018 0x0018 -#define GPUREG_0019 0x0019 -#define GPUREG_001A 0x001A -#define GPUREG_001B 0x001B -#define GPUREG_001C 0x001C -#define GPUREG_001D 0x001D -#define GPUREG_001E 0x001E -#define GPUREG_001F 0x001F -#define GPUREG_0020 0x0020 -#define GPUREG_0021 0x0021 -#define GPUREG_0022 0x0022 -#define GPUREG_0023 0x0023 -#define GPUREG_0024 0x0024 -#define GPUREG_0025 0x0025 -#define GPUREG_0026 0x0026 -#define GPUREG_0027 0x0027 -#define GPUREG_0028 0x0028 -#define GPUREG_0029 0x0029 -#define GPUREG_002A 0x002A -#define GPUREG_002B 0x002B -#define GPUREG_002C 0x002C -#define GPUREG_002D 0x002D -#define GPUREG_002E 0x002E -#define GPUREG_002F 0x002F -#define GPUREG_0030 0x0030 -#define GPUREG_0031 0x0031 -#define GPUREG_0032 0x0032 -#define GPUREG_0033 0x0033 -#define GPUREG_0034 0x0034 -#define GPUREG_0035 0x0035 -#define GPUREG_0036 0x0036 -#define GPUREG_0037 0x0037 -#define GPUREG_0038 0x0038 -#define GPUREG_0039 0x0039 -#define GPUREG_003A 0x003A -#define GPUREG_003B 0x003B -#define GPUREG_003C 0x003C -#define GPUREG_003D 0x003D -#define GPUREG_003E 0x003E -#define GPUREG_003F 0x003F -#define GPUREG_FACECULLING_CONFIG 0x0040 -#define GPUREG_0041 0x0041 -#define GPUREG_0042 0x0042 -#define GPUREG_0043 0x0043 -#define GPUREG_0044 0x0044 -#define GPUREG_0045 0x0045 -#define GPUREG_0046 0x0046 -#define GPUREG_0047 0x0047 -#define GPUREG_0048 0x0048 -#define GPUREG_0049 0x0049 -#define GPUREG_004A 0x004A -#define GPUREG_004B 0x004B -#define GPUREG_004C 0x004C -#define GPUREG_DEPTHRANGE_NEAR 0x004D -#define GPUREG_DEPTHRANGE_FAR 0x004E -#define GPUREG_SH_OUTMAP_TOTAL 0x004F -#define GPUREG_SH_OUTMAP_O0 0x0050 -#define GPUREG_SH_OUTMAP_O1 0x0051 -#define GPUREG_SH_OUTMAP_O2 0x0052 -#define GPUREG_SH_OUTMAP_O3 0x0053 -#define GPUREG_SH_OUTMAP_O4 0x0054 -#define GPUREG_SH_OUTMAP_O5 0x0055 -#define GPUREG_SH_OUTMAP_O6 0x0056 -#define GPUREG_0057 0x0057 -#define GPUREG_0058 0x0058 -#define GPUREG_0059 0x0059 -#define GPUREG_005A 0x005A -#define GPUREG_005B 0x005B -#define GPUREG_005C 0x005C -#define GPUREG_005D 0x005D -#define GPUREG_005E 0x005E -#define GPUREG_005F 0x005F -#define GPUREG_0060 0x0060 -#define GPUREG_0061 0x0061 -#define GPUREG_0062 0x0062 -#define GPUREG_0063 0x0063 -#define GPUREG_0064 0x0064 -#define GPUREG_SCISSORTEST_MODE 0x0065 -#define GPUREG_SCISSORTEST_POS 0x0066 -#define GPUREG_SCISSORTEST_DIM 0x0067 -#define GPUREG_0068 0x0068 -#define GPUREG_0069 0x0069 -#define GPUREG_006A 0x006A -#define GPUREG_006B 0x006B -#define GPUREG_006C 0x006C -#define GPUREG_006D 0x006D -#define GPUREG_006E 0x006E -#define GPUREG_006F 0x006F -#define GPUREG_0070 0x0070 -#define GPUREG_0071 0x0071 -#define GPUREG_0072 0x0072 -#define GPUREG_0073 0x0073 -#define GPUREG_0074 0x0074 -#define GPUREG_0075 0x0075 -#define GPUREG_0076 0x0076 -#define GPUREG_0077 0x0077 -#define GPUREG_0078 0x0078 -#define GPUREG_0079 0x0079 -#define GPUREG_007A 0x007A -#define GPUREG_007B 0x007B -#define GPUREG_007C 0x007C -#define GPUREG_007D 0x007D -#define GPUREG_007E 0x007E -#define GPUREG_007F 0x007F -#define GPUREG_TEXUNITS_CONFIG 0x0080 -#define GPUREG_0081 0x0081 -#define GPUREG_TEXUNIT0_DIM 0x0082 -#define GPUREG_TEXUNIT0_PARAM 0x0083 -#define GPUREG_0084 0x0084 -#define GPUREG_TEXUNIT0_LOC 0x0085 -#define GPUREG_0086 0x0086 -#define GPUREG_0087 0x0087 -#define GPUREG_0088 0x0088 -#define GPUREG_0089 0x0089 -#define GPUREG_008A 0x008A -#define GPUREG_008B 0x008B -#define GPUREG_008C 0x008C -#define GPUREG_008D 0x008D -#define GPUREG_TEXUNIT0_TYPE 0x008E -#define GPUREG_008F 0x008F -#define GPUREG_0090 0x0090 -#define GPUREG_0091 0x0091 -#define GPUREG_TEXUNIT1_DIM 0x0092 -#define GPUREG_TEXUNIT1_PARAM 0x0093 -#define GPUREG_0094 0x0094 -#define GPUREG_TEXUNIT1_LOC 0x0095 -#define GPUREG_TEXUNIT1_TYPE 0x0096 -#define GPUREG_0097 0x0097 -#define GPUREG_0098 0x0098 -#define GPUREG_0099 0x0099 -#define GPUREG_TEXUNIT2_DIM 0x009A -#define GPUREG_TEXUNIT2_PARAM 0x009B -#define GPUREG_009C 0x009C -#define GPUREG_TEXUNIT2_LOC 0x009D -#define GPUREG_TEXUNIT2_TYPE 0x009E -#define GPUREG_009F 0x009F -#define GPUREG_00A0 0x00A0 -#define GPUREG_00A1 0x00A1 -#define GPUREG_00A2 0x00A2 -#define GPUREG_00A3 0x00A3 -#define GPUREG_00A4 0x00A4 -#define GPUREG_00A5 0x00A5 -#define GPUREG_00A6 0x00A6 -#define GPUREG_00A7 0x00A7 -#define GPUREG_00A8 0x00A8 -#define GPUREG_00A9 0x00A9 -#define GPUREG_00AA 0x00AA -#define GPUREG_00AB 0x00AB -#define GPUREG_00AC 0x00AC -#define GPUREG_00AD 0x00AD -#define GPUREG_00AE 0x00AE -#define GPUREG_00AF 0x00AF -#define GPUREG_00B0 0x00B0 -#define GPUREG_00B1 0x00B1 -#define GPUREG_00B2 0x00B2 -#define GPUREG_00B3 0x00B3 -#define GPUREG_00B4 0x00B4 -#define GPUREG_00B5 0x00B5 -#define GPUREG_00B6 0x00B6 -#define GPUREG_00B7 0x00B7 -#define GPUREG_00B8 0x00B8 -#define GPUREG_00B9 0x00B9 -#define GPUREG_00BA 0x00BA -#define GPUREG_00BB 0x00BB -#define GPUREG_00BC 0x00BC -#define GPUREG_00BD 0x00BD -#define GPUREG_00BE 0x00BE -#define GPUREG_00BF 0x00BF -#define GPUREG_TEXENV0_CONFIG0 0x00C0 -#define GPUREG_TEXENV0_CONFIG1 0x00C1 -#define GPUREG_TEXENV0_CONFIG2 0x00C2 -#define GPUREG_TEXENV0_CONFIG3 0x00C3 -#define GPUREG_TEXENV0_CONFIG4 0x00C4 -#define GPUREG_00C5 0x00C5 -#define GPUREG_00C6 0x00C6 -#define GPUREG_00C7 0x00C7 -#define GPUREG_TEXENV1_CONFIG0 0x00C8 -#define GPUREG_TEXENV1_CONFIG1 0x00C9 -#define GPUREG_TEXENV1_CONFIG2 0x00CA -#define GPUREG_TEXENV1_CONFIG3 0x00CB -#define GPUREG_TEXENV1_CONFIG4 0x00CC -#define GPUREG_00CD 0x00CD -#define GPUREG_00CE 0x00CE -#define GPUREG_00CF 0x00CF -#define GPUREG_TEXENV2_CONFIG0 0x00D0 -#define GPUREG_TEXENV2_CONFIG1 0x00D1 -#define GPUREG_TEXENV2_CONFIG2 0x00D2 -#define GPUREG_TEXENV2_CONFIG3 0x00D3 -#define GPUREG_TEXENV2_CONFIG4 0x00D4 -#define GPUREG_00D5 0x00D5 -#define GPUREG_00D6 0x00D6 -#define GPUREG_00D7 0x00D7 -#define GPUREG_TEXENV3_CONFIG0 0x00D8 -#define GPUREG_TEXENV3_CONFIG1 0x00D9 -#define GPUREG_TEXENV3_CONFIG2 0x00DA -#define GPUREG_TEXENV3_CONFIG3 0x00DB -#define GPUREG_TEXENV3_CONFIG4 0x00DC -#define GPUREG_00DD 0x00DD -#define GPUREG_00DE 0x00DE -#define GPUREG_00DF 0x00DF -#define GPUREG_00E0 0x00E0 -#define GPUREG_00E1 0x00E1 -#define GPUREG_00E2 0x00E2 -#define GPUREG_00E3 0x00E3 -#define GPUREG_00E4 0x00E4 -#define GPUREG_00E5 0x00E5 -#define GPUREG_00E6 0x00E6 -#define GPUREG_00E7 0x00E7 -#define GPUREG_00E8 0x00E8 -#define GPUREG_00E9 0x00E9 -#define GPUREG_00EA 0x00EA -#define GPUREG_00EB 0x00EB -#define GPUREG_00EC 0x00EC -#define GPUREG_00ED 0x00ED -#define GPUREG_00EE 0x00EE -#define GPUREG_00EF 0x00EF -#define GPUREG_TEXENV4_CONFIG0 0x00F0 -#define GPUREG_TEXENV4_CONFIG1 0x00F1 -#define GPUREG_TEXENV4_CONFIG2 0x00F2 -#define GPUREG_TEXENV4_CONFIG3 0x00F3 -#define GPUREG_TEXENV4_CONFIG4 0x00F4 -#define GPUREG_00F5 0x00F5 -#define GPUREG_00F6 0x00F6 -#define GPUREG_00F7 0x00F7 -#define GPUREG_TEXENV5_CONFIG0 0x00F8 -#define GPUREG_TEXENV5_CONFIG1 0x00F9 -#define GPUREG_TEXENV5_CONFIG2 0x00FA -#define GPUREG_TEXENV5_CONFIG3 0x00FB -#define GPUREG_TEXENV5_CONFIG4 0x00FC -#define GPUREG_00FD 0x00FD -#define GPUREG_00FE 0x00FE -#define GPUREG_00FF 0x00FF -#define GPUREG_COLOROUTPUT_CONFIG 0x0100 -#define GPUREG_BLEND_CONFIG 0x0101 -#define GPUREG_COLORLOGICOP_CONFIG 0x0102 -#define GPUREG_BLEND_COLOR 0x0103 -#define GPUREG_ALPHATEST_CONFIG 0x0104 -#define GPUREG_STENCILTEST_CONFIG 0x0105 -#define GPUREG_STENCILOP_CONFIG 0x0106 -#define GPUREG_DEPTHTEST_CONFIG 0x0107 -#define GPUREG_0108 0x0108 -#define GPUREG_0109 0x0109 -#define GPUREG_010A 0x010A -#define GPUREG_010B 0x010B -#define GPUREG_010C 0x010C -#define GPUREG_010D 0x010D -#define GPUREG_010E 0x010E -#define GPUREG_010F 0x010F -#define GPUREG_0110 0x0110 -#define GPUREG_0111 0x0111 -#define GPUREG_0112 0x0112 -#define GPUREG_0113 0x0113 -#define GPUREG_0114 0x0114 -#define GPUREG_0115 0x0115 -#define GPUREG_DEPTHBUFFER_FORMAT 0x0116 -#define GPUREG_COLORBUFFER_FORMAT 0x0117 -#define GPUREG_0118 0x0118 -#define GPUREG_0119 0x0119 -#define GPUREG_011A 0x011A -#define GPUREG_011B 0x011B -#define GPUREG_DEPTHBUFFER_LOC 0x011C -#define GPUREG_COLORBUFFER_LOC 0x011D -#define GPUREG_OUTBUFFER_DIM 0x011E -#define GPUREG_011F 0x011F -#define GPUREG_0120 0x0120 -#define GPUREG_0121 0x0121 -#define GPUREG_0122 0x0122 -#define GPUREG_0123 0x0123 -#define GPUREG_0124 0x0124 -#define GPUREG_0125 0x0125 -#define GPUREG_0126 0x0126 -#define GPUREG_0127 0x0127 -#define GPUREG_0128 0x0128 -#define GPUREG_0129 0x0129 -#define GPUREG_012A 0x012A -#define GPUREG_012B 0x012B -#define GPUREG_012C 0x012C -#define GPUREG_012D 0x012D -#define GPUREG_012E 0x012E -#define GPUREG_012F 0x012F -#define GPUREG_0130 0x0130 -#define GPUREG_0131 0x0131 -#define GPUREG_0132 0x0132 -#define GPUREG_0133 0x0133 -#define GPUREG_0134 0x0134 -#define GPUREG_0135 0x0135 -#define GPUREG_0136 0x0136 -#define GPUREG_0137 0x0137 -#define GPUREG_0138 0x0138 -#define GPUREG_0139 0x0139 -#define GPUREG_013A 0x013A -#define GPUREG_013B 0x013B -#define GPUREG_013C 0x013C -#define GPUREG_013D 0x013D -#define GPUREG_013E 0x013E -#define GPUREG_013F 0x013F -#define GPUREG_0140 0x0140 -#define GPUREG_0141 0x0141 -#define GPUREG_0142 0x0142 -#define GPUREG_0143 0x0143 -#define GPUREG_0144 0x0144 -#define GPUREG_0145 0x0145 -#define GPUREG_0146 0x0146 -#define GPUREG_0147 0x0147 -#define GPUREG_0148 0x0148 -#define GPUREG_0149 0x0149 -#define GPUREG_014A 0x014A -#define GPUREG_014B 0x014B -#define GPUREG_014C 0x014C -#define GPUREG_014D 0x014D -#define GPUREG_014E 0x014E -#define GPUREG_014F 0x014F -#define GPUREG_0150 0x0150 -#define GPUREG_0151 0x0151 -#define GPUREG_0152 0x0152 -#define GPUREG_0153 0x0153 -#define GPUREG_0154 0x0154 -#define GPUREG_0155 0x0155 -#define GPUREG_0156 0x0156 -#define GPUREG_0157 0x0157 -#define GPUREG_0158 0x0158 -#define GPUREG_0159 0x0159 -#define GPUREG_015A 0x015A -#define GPUREG_015B 0x015B -#define GPUREG_015C 0x015C -#define GPUREG_015D 0x015D -#define GPUREG_015E 0x015E -#define GPUREG_015F 0x015F -#define GPUREG_0160 0x0160 -#define GPUREG_0161 0x0161 -#define GPUREG_0162 0x0162 -#define GPUREG_0163 0x0163 -#define GPUREG_0164 0x0164 -#define GPUREG_0165 0x0165 -#define GPUREG_0166 0x0166 -#define GPUREG_0167 0x0167 -#define GPUREG_0168 0x0168 -#define GPUREG_0169 0x0169 -#define GPUREG_016A 0x016A -#define GPUREG_016B 0x016B -#define GPUREG_016C 0x016C -#define GPUREG_016D 0x016D -#define GPUREG_016E 0x016E -#define GPUREG_016F 0x016F -#define GPUREG_0170 0x0170 -#define GPUREG_0171 0x0171 -#define GPUREG_0172 0x0172 -#define GPUREG_0173 0x0173 -#define GPUREG_0174 0x0174 -#define GPUREG_0175 0x0175 -#define GPUREG_0176 0x0176 -#define GPUREG_0177 0x0177 -#define GPUREG_0178 0x0178 -#define GPUREG_0179 0x0179 -#define GPUREG_017A 0x017A -#define GPUREG_017B 0x017B -#define GPUREG_017C 0x017C -#define GPUREG_017D 0x017D -#define GPUREG_017E 0x017E -#define GPUREG_017F 0x017F -#define GPUREG_0180 0x0180 -#define GPUREG_0181 0x0181 -#define GPUREG_0182 0x0182 -#define GPUREG_0183 0x0183 -#define GPUREG_0184 0x0184 -#define GPUREG_0185 0x0185 -#define GPUREG_0186 0x0186 -#define GPUREG_0187 0x0187 -#define GPUREG_0188 0x0188 -#define GPUREG_0189 0x0189 -#define GPUREG_018A 0x018A -#define GPUREG_018B 0x018B -#define GPUREG_018C 0x018C -#define GPUREG_018D 0x018D -#define GPUREG_018E 0x018E -#define GPUREG_018F 0x018F -#define GPUREG_0190 0x0190 -#define GPUREG_0191 0x0191 -#define GPUREG_0192 0x0192 -#define GPUREG_0193 0x0193 -#define GPUREG_0194 0x0194 -#define GPUREG_0195 0x0195 -#define GPUREG_0196 0x0196 -#define GPUREG_0197 0x0197 -#define GPUREG_0198 0x0198 -#define GPUREG_0199 0x0199 -#define GPUREG_019A 0x019A -#define GPUREG_019B 0x019B -#define GPUREG_019C 0x019C -#define GPUREG_019D 0x019D -#define GPUREG_019E 0x019E -#define GPUREG_019F 0x019F -#define GPUREG_01A0 0x01A0 -#define GPUREG_01A1 0x01A1 -#define GPUREG_01A2 0x01A2 -#define GPUREG_01A3 0x01A3 -#define GPUREG_01A4 0x01A4 -#define GPUREG_01A5 0x01A5 -#define GPUREG_01A6 0x01A6 -#define GPUREG_01A7 0x01A7 -#define GPUREG_01A8 0x01A8 -#define GPUREG_01A9 0x01A9 -#define GPUREG_01AA 0x01AA -#define GPUREG_01AB 0x01AB -#define GPUREG_01AC 0x01AC -#define GPUREG_01AD 0x01AD -#define GPUREG_01AE 0x01AE -#define GPUREG_01AF 0x01AF -#define GPUREG_01B0 0x01B0 -#define GPUREG_01B1 0x01B1 -#define GPUREG_01B2 0x01B2 -#define GPUREG_01B3 0x01B3 -#define GPUREG_01B4 0x01B4 -#define GPUREG_01B5 0x01B5 -#define GPUREG_01B6 0x01B6 -#define GPUREG_01B7 0x01B7 -#define GPUREG_01B8 0x01B8 -#define GPUREG_01B9 0x01B9 -#define GPUREG_01BA 0x01BA -#define GPUREG_01BB 0x01BB -#define GPUREG_01BC 0x01BC -#define GPUREG_01BD 0x01BD -#define GPUREG_01BE 0x01BE -#define GPUREG_01BF 0x01BF -#define GPUREG_01C0 0x01C0 -#define GPUREG_01C1 0x01C1 -#define GPUREG_01C2 0x01C2 -#define GPUREG_01C3 0x01C3 -#define GPUREG_01C4 0x01C4 -#define GPUREG_01C5 0x01C5 -#define GPUREG_01C6 0x01C6 -#define GPUREG_01C7 0x01C7 -#define GPUREG_01C8 0x01C8 -#define GPUREG_01C9 0x01C9 -#define GPUREG_01CA 0x01CA -#define GPUREG_01CB 0x01CB -#define GPUREG_01CC 0x01CC -#define GPUREG_01CD 0x01CD -#define GPUREG_01CE 0x01CE -#define GPUREG_01CF 0x01CF -#define GPUREG_01D0 0x01D0 -#define GPUREG_01D1 0x01D1 -#define GPUREG_01D2 0x01D2 -#define GPUREG_01D3 0x01D3 -#define GPUREG_01D4 0x01D4 -#define GPUREG_01D5 0x01D5 -#define GPUREG_01D6 0x01D6 -#define GPUREG_01D7 0x01D7 -#define GPUREG_01D8 0x01D8 -#define GPUREG_01D9 0x01D9 -#define GPUREG_01DA 0x01DA -#define GPUREG_01DB 0x01DB -#define GPUREG_01DC 0x01DC -#define GPUREG_01DD 0x01DD -#define GPUREG_01DE 0x01DE -#define GPUREG_01DF 0x01DF -#define GPUREG_01E0 0x01E0 -#define GPUREG_01E1 0x01E1 -#define GPUREG_01E2 0x01E2 -#define GPUREG_01E3 0x01E3 -#define GPUREG_01E4 0x01E4 -#define GPUREG_01E5 0x01E5 -#define GPUREG_01E6 0x01E6 -#define GPUREG_01E7 0x01E7 -#define GPUREG_01E8 0x01E8 -#define GPUREG_01E9 0x01E9 -#define GPUREG_01EA 0x01EA -#define GPUREG_01EB 0x01EB -#define GPUREG_01EC 0x01EC -#define GPUREG_01ED 0x01ED -#define GPUREG_01EE 0x01EE -#define GPUREG_01EF 0x01EF -#define GPUREG_01F0 0x01F0 -#define GPUREG_01F1 0x01F1 -#define GPUREG_01F2 0x01F2 -#define GPUREG_01F3 0x01F3 -#define GPUREG_01F4 0x01F4 -#define GPUREG_01F5 0x01F5 -#define GPUREG_01F6 0x01F6 -#define GPUREG_01F7 0x01F7 -#define GPUREG_01F8 0x01F8 -#define GPUREG_01F9 0x01F9 -#define GPUREG_01FA 0x01FA -#define GPUREG_01FB 0x01FB -#define GPUREG_01FC 0x01FC -#define GPUREG_01FD 0x01FD -#define GPUREG_01FE 0x01FE -#define GPUREG_01FF 0x01FF -#define pipeline 0xGeometry -#define GPUREG_ATTRIBBUFFERS_LOC 0x0200 -#define GPUREG_ATTRIBBUFFERS_FORMAT_LOW 0x0201 -#define GPUREG_ATTRIBBUFFERS_FORMAT_HIGH 0x0202 -#define GPUREG_ATTRIBBUFFER0_CONFIG0 0x0203 -#define GPUREG_ATTRIBBUFFER0_CONFIG1 0x0204 -#define GPUREG_ATTRIBBUFFER0_CONFIG2 0x0205 -#define GPUREG_ATTRIBBUFFER1_CONFIG0 0x0206 -#define GPUREG_ATTRIBBUFFER1_CONFIG1 0x0207 -#define GPUREG_ATTRIBBUFFER1_CONFIG2 0x0208 -#define GPUREG_ATTRIBBUFFER2_CONFIG0 0x0209 -#define GPUREG_ATTRIBBUFFER2_CONFIG1 0x020A -#define GPUREG_ATTRIBBUFFER2_CONFIG2 0x020B -#define GPUREG_ATTRIBBUFFER3_CONFIG0 0x020C -#define GPUREG_ATTRIBBUFFER3_CONFIG1 0x020D -#define GPUREG_ATTRIBBUFFER3_CONFIG2 0x020E -#define GPUREG_ATTRIBBUFFER4_CONFIG0 0x020F -#define GPUREG_ATTRIBBUFFER4_CONFIG1 0x0210 -#define GPUREG_ATTRIBBUFFER4_CONFIG2 0x0211 -#define GPUREG_ATTRIBBUFFER5_CONFIG0 0x0212 -#define GPUREG_ATTRIBBUFFER5_CONFIG1 0x0213 -#define GPUREG_ATTRIBBUFFER5_CONFIG2 0x0214 -#define GPUREG_ATTRIBBUFFER6_CONFIG0 0x0215 -#define GPUREG_ATTRIBBUFFER6_CONFIG1 0x0216 -#define GPUREG_ATTRIBBUFFER6_CONFIG2 0x0217 -#define GPUREG_ATTRIBBUFFER7_CONFIG0 0x0218 -#define GPUREG_ATTRIBBUFFER7_CONFIG1 0x0219 -#define GPUREG_ATTRIBBUFFER7_CONFIG2 0x021A -#define GPUREG_ATTRIBBUFFER8_CONFIG0 0x021B -#define GPUREG_ATTRIBBUFFER8_CONFIG1 0x021C -#define GPUREG_ATTRIBBUFFER8_CONFIG2 0x021D -#define GPUREG_ATTRIBBUFFER9_CONFIG0 0x021E -#define GPUREG_ATTRIBBUFFER9_CONFIG1 0x021F -#define GPUREG_ATTRIBBUFFER9_CONFIG2 0x0220 -#define GPUREG_ATTRIBBUFFERA_CONFIG0 0x0221 -#define GPUREG_ATTRIBBUFFERA_CONFIG1 0x0222 -#define GPUREG_ATTRIBBUFFERA_CONFIG2 0x0223 -#define GPUREG_ATTRIBBUFFERB_CONFIG0 0x0224 -#define GPUREG_ATTRIBBUFFERB_CONFIG1 0x0225 -#define GPUREG_ATTRIBBUFFERB_CONFIG2 0x0226 -#define GPUREG_INDEXBUFFER_CONFIG 0x0227 -#define GPUREG_NUMVERTICES 0x0228 -#define GPUREG_GEOSTAGE_CONFIG 0x0229 -#define GPUREG_022A 0x022A -#define GPUREG_022B 0x022B -#define GPUREG_022C 0x022C -#define GPUREG_022D 0x022D -#define GPUREG_DRAWARRAYS 0x022E -#define GPUREG_DRAWELEMENTS 0x022F -#define GPUREG_0230 0x0230 -#define GPUREG_0231 0x0231 -#define GPUREG_0232 0x0232 -#define GPUREG_0233 0x0233 -#define GPUREG_0234 0x0234 -#define GPUREG_0235 0x0235 -#define GPUREG_0236 0x0236 -#define GPUREG_0237 0x0237 -#define GPUREG_0238 0x0238 -#define GPUREG_0239 0x0239 -#define GPUREG_023A 0x023A -#define GPUREG_023B 0x023B -#define GPUREG_023C 0x023C -#define GPUREG_023D 0x023D -#define GPUREG_023E 0x023E -#define GPUREG_023F 0x023F -#define GPUREG_0240 0x0240 -#define GPUREG_0241 0x0241 -#define GPUREG_0242 0x0242 -#define GPUREG_0243 0x0243 -#define GPUREG_0244 0x0244 -#define GPUREG_0245 0x0245 -#define GPUREG_0246 0x0246 -#define GPUREG_0247 0x0247 -#define GPUREG_0248 0x0248 -#define GPUREG_0249 0x0249 -#define GPUREG_024A 0x024A -#define GPUREG_024B 0x024B -#define GPUREG_024C 0x024C -#define GPUREG_024D 0x024D -#define GPUREG_024E 0x024E -#define GPUREG_024F 0x024F -#define GPUREG_0250 0x0250 -#define GPUREG_0251 0x0251 -#define GPUREG_0252 0x0252 -#define GPUREG_0253 0x0253 -#define GPUREG_0254 0x0254 -#define GPUREG_0255 0x0255 -#define GPUREG_0256 0x0256 -#define GPUREG_0257 0x0257 -#define GPUREG_0258 0x0258 -#define GPUREG_0259 0x0259 -#define GPUREG_025A 0x025A -#define GPUREG_025B 0x025B -#define GPUREG_025C 0x025C -#define GPUREG_025D 0x025D -#define GPUREG_PRIMITIVE_CONFIG 0x025E -#define GPUREG_025F 0x025F -#define GPUREG_0260 0x0260 -#define GPUREG_0261 0x0261 -#define GPUREG_0262 0x0262 -#define GPUREG_0263 0x0263 -#define GPUREG_0264 0x0264 -#define GPUREG_0265 0x0265 -#define GPUREG_0266 0x0266 -#define GPUREG_0267 0x0267 -#define GPUREG_0268 0x0268 -#define GPUREG_0269 0x0269 -#define GPUREG_026A 0x026A -#define GPUREG_026B 0x026B -#define GPUREG_026C 0x026C -#define GPUREG_026D 0x026D -#define GPUREG_026E 0x026E -#define GPUREG_026F 0x026F -#define GPUREG_0270 0x0270 -#define GPUREG_0271 0x0271 -#define GPUREG_0272 0x0272 -#define GPUREG_0273 0x0273 -#define GPUREG_0274 0x0274 -#define GPUREG_0275 0x0275 -#define GPUREG_0276 0x0276 -#define GPUREG_0277 0x0277 -#define GPUREG_0278 0x0278 -#define GPUREG_0279 0x0279 -#define GPUREG_027A 0x027A -#define GPUREG_027B 0x027B -#define GPUREG_027C 0x027C -#define GPUREG_027D 0x027D -#define GPUREG_027E 0x027E -#define GPUREG_027F 0x027F -#define GPUREG_GSH_BOOLUNIFORM 0x0280 -#define GPUREG_GSH_INTUNIFORM_I0 0x0281 -#define GPUREG_GSH_INTUNIFORM_I1 0x0282 -#define GPUREG_GSH_INTUNIFORM_I2 0x0283 -#define GPUREG_GSH_INTUNIFORM_I3 0x0284 -#define GPUREG_0285 0x0285 -#define GPUREG_0286 0x0286 -#define GPUREG_0287 0x0287 -#define GPUREG_0288 0x0288 -#define GPUREG_GSH_INPUTBUFFER_CONFIG 0x0289 -#define GPUREG_GSH_ENTRYPOINT 0x028A -#define GPUREG_GSH_ATTRIBUTES_PERMUTATION_LOW 0x028B -#define GPUREG_GSH_ATTRIBUTES_PERMUTATION_HIGH 0x028C -#define GPUREG_GSH_OUTMAP_MASK 0x028D -#define GPUREG_028E 0x028E -#define GPUREG_GSH_CODETRANSFER_END 0x028F -#define GPUREG_GSH_FLOATUNIFORM_CONFIG 0x0290 -#define GPUREG_GSH_FLOATUNIFORM_DATA 0x0291 -#define GPUREG_0299 0x0299 -#define GPUREG_029A 0x029A -#define GPUREG_GSH_CODETRANSFER_CONFIG 0x029B -#define GPUREG_GSH_CODETRANSFER_DATA 0x029C -#define GPUREG_02A4 0x02A4 -#define GPUREG_GSH_OPDESCS_CONFIG 0x02A5 -#define GPUREG_GSH_OPDESCS_DATA 0x02A6 -#define GPUREG_02AE 0x02AE -#define GPUREG_02AF 0x02AF -#define GPUREG_VSH_BOOLUNIFORM 0x02B0 -#define GPUREG_VSH_INTUNIFORM_I0 0x02B1 -#define GPUREG_VSH_INTUNIFORM_I1 0x02B2 -#define GPUREG_VSH_INTUNIFORM_I2 0x02B3 -#define GPUREG_VSH_INTUNIFORM_I3 0x02B4 -#define GPUREG_02B5 0x02B5 -#define GPUREG_02B6 0x02B6 -#define GPUREG_02B7 0x02B7 -#define GPUREG_02B8 0x02B8 -#define GPUREG_VSH_INPUTBUFFER_CONFIG 0x02B9 -#define GPUREG_VSH_ENTRYPOINT 0x02BA -#define GPUREG_VSH_ATTRIBUTES_PERMUTATION_LOW 0x02BB -#define GPUREG_VSH_ATTRIBUTES_PERMUTATION_HIGH 0x02BC -#define GPUREG_VSH_OUTMAP_MASK 0x02BD -#define GPUREG_02BE 0x02BE -#define GPUREG_VSH_CODETRANSFER_END 0x02BF -#define GPUREG_VSH_FLOATUNIFORM_CONFIG 0x02C0 -#define GPUREG_VSH_FLOATUNIFORM_DATA 0x02C1 -#define GPUREG_02C9 0x02C9 -#define GPUREG_02CA 0x02CA -#define GPUREG_VSH_CODETRANSFER_CONFIG 0x02CB -#define GPUREG_VSH_CODETRANSFER_DATA 0x02CC -#define GPUREG_02D4 0x02D4 -#define GPUREG_VSH_OPDESCS_CONFIG 0x02D5 -#define GPUREG_VSH_OPDESCS_DATA 0x02D6 -#define GPUREG_02DE 0x02DE -#define GPUREG_02DF 0x02DF -#define GPUREG_02E0 0x02E0 -#define GPUREG_02E1 0x02E1 -#define GPUREG_02E2 0x02E2 -#define GPUREG_02E3 0x02E3 -#define GPUREG_02E4 0x02E4 -#define GPUREG_02E5 0x02E5 -#define GPUREG_02E6 0x02E6 -#define GPUREG_02E7 0x02E7 -#define GPUREG_02E8 0x02E8 -#define GPUREG_02E9 0x02E9 -#define GPUREG_02EA 0x02EA -#define GPUREG_02EB 0x02EB -#define GPUREG_02EC 0x02EC -#define GPUREG_02ED 0x02ED -#define GPUREG_02EE 0x02EE -#define GPUREG_02EF 0x02EF -#define GPUREG_02F0 0x02F0 -#define GPUREG_02F1 0x02F1 -#define GPUREG_02F2 0x02F2 -#define GPUREG_02F3 0x02F3 -#define GPUREG_02F4 0x02F4 -#define GPUREG_02F5 0x02F5 -#define GPUREG_02F6 0x02F6 -#define GPUREG_02F7 0x02F7 -#define GPUREG_02F8 0x02F8 -#define GPUREG_02F9 0x02F9 -#define GPUREG_02FA 0x02FA -#define GPUREG_02FB 0x02FB -#define GPUREG_02FC 0x02FC -#define GPUREG_02FD 0x02FD -#define GPUREG_02FE 0x02FE -#define GPUREG_02FF 0x02FF diff --git a/libctru/include/3ds/gpu/shdr.h b/libctru/include/3ds/gpu/shdr.h index 1a89ddb..02b5128 100644 --- a/libctru/include/3ds/gpu/shdr.h +++ b/libctru/include/3ds/gpu/shdr.h @@ -61,8 +61,8 @@ void SHDR_UseProgram(DVLB_s* dvlb, u8 id); void SHDR_FreeDVLB(DVLB_s* dvlb); s8 SHDR_GetUniformRegister(DVLB_s* dvlb, const char* name, u8 programID); -void DVLP_SendCode(DVLP_s* dvlp, SHDR_type type); -void DVLP_SendOpDesc(DVLP_s* dvlp, SHDR_type type); +void DVLP_SendCode(DVLP_s* dvlp); +void DVLP_SendOpDesc(DVLP_s* dvlp); void DVLE_SendOutmap(DVLE_s* dvle); void DVLE_SendConstants(DVLE_s* dvle); diff --git a/libctru/source/gpu/gpu.c b/libctru/source/gpu/gpu.c index 8e33bc8..ccde474 100644 --- a/libctru/source/gpu/gpu.c +++ b/libctru/source/gpu/gpu.c @@ -470,18 +470,23 @@ void GPU_SetTexEnv(u8 id, u16 rgbSources, u16 alphaSources, u16 rgbOperands, u16 void GPU_DrawArray(GPU_Primitive_t primitive, u32 n) { + // //? + // GPUCMD_AddSingleParam(0x00040080, 0x00010000); //set primitive type GPUCMD_AddSingleParam(0x0002025E, primitive); GPUCMD_AddSingleParam(0x0002025F, 0x00000001); + //index buffer not used for drawArrays but 0x000F0227 still required + GPUCMD_AddSingleParam(0x000F0227, 0x80000000); //pass number of vertices GPUCMD_AddSingleParam(0x000F0228, n); - //all the following except 0x000F022E might be useless GPUCMD_AddSingleParam(0x00010253, 0x00000001); + GPUCMD_AddSingleParam(0x00010245, 0x00000000); GPUCMD_AddSingleParam(0x000F022E, 0x00000001); GPUCMD_AddSingleParam(0x00010245, 0x00000001); GPUCMD_AddSingleParam(0x000F0231, 0x00000001); + GPUCMD_AddSingleParam(0x000F0111, 0x00000001); } diff --git a/libctru/source/gpu/shdr.c b/libctru/source/gpu/shdr.c index 350f603..47ac389 100644 --- a/libctru/source/gpu/shdr.c +++ b/libctru/source/gpu/shdr.c @@ -72,27 +72,23 @@ s8 SHDR_GetUniformRegister(DVLB_s* dvlb, const char* name, u8 programID) return -1; } -void DVLP_SendCode(DVLP_s* dvlp, SHDR_type type) +void DVLP_SendCode(DVLP_s* dvlp) { if(!dvlp)return; - u32 regOffset=(type==GEOMETRY_SHDR)?(-0x30):(0x0); - - GPUCMD_AddSingleParam(GPUCMD_HEADER(0, 0xF, GPUREG_VSH_CODETRANSFER_CONFIG)+regOffset, 0x00000000); + GPUCMD_AddSingleParam(0x000F02CB, 0x00000000); int i; - for(i=0;icodeSize;i+=0x80)GPUCMD_Add(GPUCMD_HEADER(0, 0xF, GPUREG_VSH_CODETRANSFER_DATA)+regOffset, &dvlp->codeData[i], ((dvlp->codeSize-i)<0x80)?(dvlp->codeSize-i):0x80); + for(i=0;icodeSize;i+=0x80)GPUCMD_Add(0x000F02CC, &dvlp->codeData[i], ((dvlp->codeSize-i)<0x80)?(dvlp->codeSize-i):0x80); - GPUCMD_AddSingleParam(GPUCMD_HEADER(0, 0xF, GPUREG_VSH_CODETRANSFER_END)+regOffset, 0x00000001); + GPUCMD_AddSingleParam(0x000F02BF, 0x00000001); } -void DVLP_SendOpDesc(DVLP_s* dvlp, SHDR_type type) +void DVLP_SendOpDesc(DVLP_s* dvlp) { if(!dvlp)return; - u32 regOffset=(type==GEOMETRY_SHDR)?(-0x30):(0x0); - - GPUCMD_AddSingleParam(GPUCMD_HEADER(0, 0xF, GPUREG_VSH_OPDESCS_CONFIG)+regOffset, 0x00000000); + GPUCMD_AddSingleParam(0x000F02D5, 0x00000000); u32 param[0x20]; @@ -100,15 +96,13 @@ void DVLP_SendOpDesc(DVLP_s* dvlp, SHDR_type type) //TODO : should probably preprocess this for(i=0;iopdescSize;i++)param[i]=dvlp->opcdescData[i*2]; - GPUCMD_Add(GPUCMD_HEADER(0, 0xF, GPUREG_VSH_OPDESCS_DATA)+regOffset, param, dvlp->opdescSize); + GPUCMD_Add(0x000F02D6, param, dvlp->opdescSize); } void DVLE_SendOutmap(DVLE_s* dvle) { if(!dvle)return; - u32 regOffset=(dvle->type==GEOMETRY_SHDR)?(-0x30):(0x0); - u32 param[0x7]={0x1F1F1F1F,0x1F1F1F1F,0x1F1F1F1F,0x1F1F1F1F, 0x1F1F1F1F,0x1F1F1F1F,0x1F1F1F1F}; @@ -138,20 +132,18 @@ void DVLE_SendOutmap(DVLE_s* dvle) if(dvle->outTableData[i].regID+1>maxAttr)maxAttr=dvle->outTableData[i].regID+1; } - GPUCMD_AddSingleParam(GPUCMD_HEADER(0, 0xF, GPUREG_0251), numAttr-1); //? - GPUCMD_AddSingleParam(GPUCMD_HEADER(0, 0xF, GPUREG_024A), numAttr-1); //? - GPUCMD_AddSingleParam(GPUCMD_HEADER(0, 0xF, GPUREG_VSH_OUTMAP_MASK)+regOffset, attrMask); - GPUCMD_AddSingleParam(GPUCMD_HEADER(0, 0x1, GPUREG_PRIMITIVE_CONFIG), numAttr-1); - GPUCMD_AddSingleParam(GPUCMD_HEADER(0, 0xF, GPUREG_SH_OUTMAP_TOTAL), numAttr); - GPUCMD_Add(GPUCMD_HEADER(1, 0xF, GPUREG_SH_OUTMAP_O0), param, 0x00000007); + GPUCMD_AddSingleParam(0x000F0251, numAttr-1); //? + GPUCMD_AddSingleParam(0x000F024A, numAttr-1); //? + GPUCMD_AddSingleParam(0x000F02BD, attrMask); //? + GPUCMD_AddSingleParam(0x0001025E, numAttr-1); //? + GPUCMD_AddSingleParam(0x000F004F, numAttr); //? + GPUCMD_Add(0x800F0050, param, 0x00000007); } void DVLE_SendConstants(DVLE_s* dvle) { if(!dvle)return; - u32 regOffset=(dvle->type==GEOMETRY_SHDR)?(-0x30):(0x0); - u32 param[4]; u32 rev[3]; u8* rev8=(u8*)rev; @@ -170,7 +162,7 @@ void DVLE_SendConstants(DVLE_s* dvle) param[0x2]=rev[1]; param[0x3]=rev[0]; - GPUCMD_Add(GPUCMD_HEADER(1, 0xF, GPUREG_VSH_FLOATUNIFORM_CONFIG)+regOffset, param, 0x00000004); + GPUCMD_Add(0x800F02C0, param, 0x00000004); } } @@ -179,26 +171,24 @@ void SHDR_UseProgram(DVLB_s* dvlb, u8 id) if(!dvlb || id>dvlb->numDVLE)return; DVLE_s* dvle=&dvlb->DVLE[id]; - u32 regOffset=(dvlb->DVLE[id].type==GEOMETRY_SHDR)?(-0x30):(0x0); + //? + GPUCMD_AddSingleParam(0x00010229, 0x00000000); + GPUCMD_AddSingleParam(0x00010244, 0x00000000); - - GPUCMD_AddSingleParam(GPUCMD_HEADER(0, 0x1, GPUREG_GEOSTAGE_CONFIG), 0x00000000); - GPUCMD_AddSingleParam(GPUCMD_HEADER(0, 0x1, GPUREG_0244), (dvlb->DVLE[id].type==GEOMETRY_SHDR)?0x1:0x0); - - DVLP_SendCode(&dvlb->DVLP, dvlb->DVLE[id].type); - DVLP_SendOpDesc(&dvlb->DVLP, dvlb->DVLE[id].type); + DVLP_SendCode(&dvlb->DVLP); + DVLP_SendOpDesc(&dvlb->DVLP); DVLE_SendConstants(dvle); - GPUCMD_AddSingleParam(GPUCMD_HEADER(0, 0x8, GPUREG_GEOSTAGE_CONFIG), 0x00000000); - GPUCMD_AddSingleParam(GPUCMD_HEADER(0, 0xF, GPUREG_VSH_ENTRYPOINT)-regOffset, 0x7FFF0000|(dvle->mainOffset&0xFFFF)); //set entrypoint + GPUCMD_AddSingleParam(0x00080229, 0x00000000); + GPUCMD_AddSingleParam(0x000F02BA, 0x7FFF0000|(dvle->mainOffset&0xFFFF)); //set entrypoint - GPUCMD_AddSingleParam(GPUCMD_HEADER(0, 0xF, GPUREG_0252), 0x00000000); // should all be part of DVLE_SendOutmap ? + GPUCMD_AddSingleParam(0x000F0252, 0x00000000); // should all be part of DVLE_SendOutmap ? DVLE_SendOutmap(dvle); //? - GPUCMD_AddSingleParam(GPUCMD_HEADER(0, 0xF, GPUREG_0064), 0x00000001); - GPUCMD_AddSingleParam(GPUCMD_HEADER(0, 0xF, GPUREG_006F), 0x00000703); + GPUCMD_AddSingleParam(0x000F0064, 0x00000001); + GPUCMD_AddSingleParam(0x000F006F, 0x00000703); } //TODO