regs_internal.cpp
1 // Copyright 2015 Citra Emulator Project 2 // Licensed under GPLv2 or any later version 3 // Refer to the license.txt file included. 4 5 #include <algorithm> 6 #include <iterator> 7 #include <utility> 8 9 #include "common/common_types.h" 10 #include "video_core/pica/regs_internal.h" 11 12 namespace Pica { 13 14 static constexpr std::pair<u16, const char*> register_names[] = { 15 {0x010, "GPUREG_FINALIZE"}, 16 17 {0x040, "GPUREG_FACECULLING_CONFIG"}, 18 {0x041, "GPUREG_VIEWPORT_WIDTH"}, 19 {0x042, "GPUREG_VIEWPORT_INVW"}, 20 {0x043, "GPUREG_VIEWPORT_HEIGHT"}, 21 {0x044, "GPUREG_VIEWPORT_INVH"}, 22 23 {0x047, "GPUREG_FRAGOP_CLIP"}, 24 {0x048, "GPUREG_FRAGOP_CLIP_DATA0"}, 25 {0x049, "GPUREG_FRAGOP_CLIP_DATA1"}, 26 {0x04A, "GPUREG_FRAGOP_CLIP_DATA2"}, 27 {0x04B, "GPUREG_FRAGOP_CLIP_DATA3"}, 28 29 {0x04D, "GPUREG_DEPTHMAP_SCALE"}, 30 {0x04E, "GPUREG_DEPTHMAP_OFFSET"}, 31 {0x04F, "GPUREG_SH_OUTMAP_TOTAL"}, 32 {0x050, "GPUREG_SH_OUTMAP_O0"}, 33 {0x051, "GPUREG_SH_OUTMAP_O1"}, 34 {0x052, "GPUREG_SH_OUTMAP_O2"}, 35 {0x053, "GPUREG_SH_OUTMAP_O3"}, 36 {0x054, "GPUREG_SH_OUTMAP_O4"}, 37 {0x055, "GPUREG_SH_OUTMAP_O5"}, 38 {0x056, "GPUREG_SH_OUTMAP_O6"}, 39 40 {0x061, "GPUREG_EARLYDEPTH_FUNC"}, 41 {0x062, "GPUREG_EARLYDEPTH_TEST1"}, 42 {0x063, "GPUREG_EARLYDEPTH_CLEAR"}, 43 {0x064, "GPUREG_SH_OUTATTR_MODE"}, 44 {0x065, "GPUREG_SCISSORTEST_MODE"}, 45 {0x066, "GPUREG_SCISSORTEST_POS"}, 46 {0x067, "GPUREG_SCISSORTEST_DIM"}, 47 {0x068, "GPUREG_VIEWPORT_XY"}, 48 49 {0x06A, "GPUREG_EARLYDEPTH_DATA"}, 50 51 {0x06D, "GPUREG_DEPTHMAP_ENABLE"}, 52 {0x06E, "GPUREG_RENDERBUF_DIM"}, 53 {0x06F, "GPUREG_SH_OUTATTR_CLOCK"}, 54 55 {0x080, "GPUREG_TEXUNIT_CONFIG"}, 56 {0x081, "GPUREG_TEXUNIT0_BORDER_COLOR"}, 57 {0x082, "GPUREG_TEXUNIT0_DIM"}, 58 {0x083, "GPUREG_TEXUNIT0_PARAM"}, 59 {0x084, "GPUREG_TEXUNIT0_LOD"}, 60 {0x085, "GPUREG_TEXUNIT0_ADDR1"}, 61 {0x086, "GPUREG_TEXUNIT0_ADDR2"}, 62 {0x087, "GPUREG_TEXUNIT0_ADDR3"}, 63 {0x088, "GPUREG_TEXUNIT0_ADDR4"}, 64 {0x089, "GPUREG_TEXUNIT0_ADDR5"}, 65 {0x08A, "GPUREG_TEXUNIT0_ADDR6"}, 66 {0x08B, "GPUREG_TEXUNIT0_SHADOW"}, 67 68 {0x08E, "GPUREG_TEXUNIT0_TYPE"}, 69 {0x08F, "GPUREG_LIGHTING_ENABLE0"}, 70 71 {0x091, "GPUREG_TEXUNIT1_BORDER_COLOR"}, 72 {0x092, "GPUREG_TEXUNIT1_DIM"}, 73 {0x093, "GPUREG_TEXUNIT1_PARAM"}, 74 {0x094, "GPUREG_TEXUNIT1_LOD"}, 75 {0x095, "GPUREG_TEXUNIT1_ADDR"}, 76 {0x096, "GPUREG_TEXUNIT1_TYPE"}, 77 78 {0x099, "GPUREG_TEXUNIT2_BORDER_COLOR"}, 79 {0x09A, "GPUREG_TEXUNIT2_DIM"}, 80 {0x09B, "GPUREG_TEXUNIT2_PARAM"}, 81 {0x09C, "GPUREG_TEXUNIT2_LOD"}, 82 {0x09D, "GPUREG_TEXUNIT2_ADDR"}, 83 {0x09E, "GPUREG_TEXUNIT2_TYPE"}, 84 85 {0x0A8, "GPUREG_TEXUNIT3_PROCTEX0"}, 86 {0x0A9, "GPUREG_TEXUNIT3_PROCTEX1"}, 87 {0x0AA, "GPUREG_TEXUNIT3_PROCTEX2"}, 88 {0x0AB, "GPUREG_TEXUNIT3_PROCTEX3"}, 89 {0x0AC, "GPUREG_TEXUNIT3_PROCTEX4"}, 90 {0x0AD, "GPUREG_TEXUNIT3_PROCTEX5"}, 91 92 {0x0AF, "GPUREG_PROCTEX_LUT"}, 93 {0x0B0, "GPUREG_PROCTEX_LUT_DATA0"}, 94 {0x0B1, "GPUREG_PROCTEX_LUT_DATA1"}, 95 {0x0B2, "GPUREG_PROCTEX_LUT_DATA2"}, 96 {0x0B3, "GPUREG_PROCTEX_LUT_DATA3"}, 97 {0x0B4, "GPUREG_PROCTEX_LUT_DATA4"}, 98 {0x0B5, "GPUREG_PROCTEX_LUT_DATA5"}, 99 {0x0B6, "GPUREG_PROCTEX_LUT_DATA6"}, 100 {0x0B7, "GPUREG_PROCTEX_LUT_DATA7"}, 101 102 {0x0C0, "GPUREG_TEXENV0_SOURCE"}, 103 {0x0C1, "GPUREG_TEXENV0_OPERAND"}, 104 {0x0C2, "GPUREG_TEXENV0_COMBINER"}, 105 {0x0C3, "GPUREG_TEXENV0_COLOR"}, 106 {0x0C4, "GPUREG_TEXENV0_SCALE"}, 107 108 {0x0C8, "GPUREG_TEXENV1_SOURCE"}, 109 {0x0C9, "GPUREG_TEXENV1_OPERAND"}, 110 {0x0CA, "GPUREG_TEXENV1_COMBINER"}, 111 {0x0CB, "GPUREG_TEXENV1_COLOR"}, 112 {0x0CC, "GPUREG_TEXENV1_SCALE"}, 113 114 {0x0D0, "GPUREG_TEXENV2_SOURCE"}, 115 {0x0D1, "GPUREG_TEXENV2_OPERAND"}, 116 {0x0D2, "GPUREG_TEXENV2_COMBINER"}, 117 {0x0D3, "GPUREG_TEXENV2_COLOR"}, 118 {0x0D4, "GPUREG_TEXENV2_SCALE"}, 119 120 {0x0D8, "GPUREG_TEXENV3_SOURCE"}, 121 {0x0D9, "GPUREG_TEXENV3_OPERAND"}, 122 {0x0DA, "GPUREG_TEXENV3_COMBINER"}, 123 {0x0DB, "GPUREG_TEXENV3_COLOR"}, 124 {0x0DC, "GPUREG_TEXENV3_SCALE"}, 125 126 {0x0E0, "GPUREG_TEXENV_UPDATE_BUFFER"}, 127 {0x0E1, "GPUREG_FOG_COLOR"}, 128 129 {0x0E4, "GPUREG_GAS_ATTENUATION"}, 130 {0x0E5, "GPUREG_GAS_ACCMAX"}, 131 {0x0E6, "GPUREG_FOG_LUT_INDEX"}, 132 133 {0x0E8, "GPUREG_FOG_LUT_DATA0"}, 134 {0x0E9, "GPUREG_FOG_LUT_DATA1"}, 135 {0x0EA, "GPUREG_FOG_LUT_DATA2"}, 136 {0x0EB, "GPUREG_FOG_LUT_DATA3"}, 137 {0x0EC, "GPUREG_FOG_LUT_DATA4"}, 138 {0x0ED, "GPUREG_FOG_LUT_DATA5"}, 139 {0x0EE, "GPUREG_FOG_LUT_DATA6"}, 140 {0x0EF, "GPUREG_FOG_LUT_DATA7"}, 141 {0x0F0, "GPUREG_TEXENV4_SOURCE"}, 142 {0x0F1, "GPUREG_TEXENV4_OPERAND"}, 143 {0x0F2, "GPUREG_TEXENV4_COMBINER"}, 144 {0x0F3, "GPUREG_TEXENV4_COLOR"}, 145 {0x0F4, "GPUREG_TEXENV4_SCALE"}, 146 147 {0x0F8, "GPUREG_TEXENV5_SOURCE"}, 148 {0x0F9, "GPUREG_TEXENV5_OPERAND"}, 149 {0x0FA, "GPUREG_TEXENV5_COMBINER"}, 150 {0x0FB, "GPUREG_TEXENV5_COLOR"}, 151 {0x0FC, "GPUREG_TEXENV5_SCALE"}, 152 {0x0FD, "GPUREG_TEXENV_BUFFER_COLOR"}, 153 154 {0x100, "GPUREG_COLOR_OPERATION"}, 155 {0x101, "GPUREG_BLEND_FUNC"}, 156 {0x102, "GPUREG_LOGIC_OP"}, 157 {0x103, "GPUREG_BLEND_COLOR"}, 158 {0x104, "GPUREG_FRAGOP_ALPHA_TEST"}, 159 {0x105, "GPUREG_STENCIL_TEST"}, 160 {0x106, "GPUREG_STENCIL_OP"}, 161 {0x107, "GPUREG_DEPTH_COLOR_MASK"}, 162 163 {0x110, "GPUREG_FRAMEBUFFER_INVALIDATE"}, 164 {0x111, "GPUREG_FRAMEBUFFER_FLUSH"}, 165 {0x112, "GPUREG_COLORBUFFER_READ"}, 166 {0x113, "GPUREG_COLORBUFFER_WRITE"}, 167 {0x114, "GPUREG_DEPTHBUFFER_READ"}, 168 {0x115, "GPUREG_DEPTHBUFFER_WRITE"}, 169 {0x116, "GPUREG_DEPTHBUFFER_FORMAT"}, 170 {0x117, "GPUREG_COLORBUFFER_FORMAT"}, 171 {0x118, "GPUREG_EARLYDEPTH_TEST2"}, 172 173 {0x11B, "GPUREG_FRAMEBUFFER_BLOCK32"}, 174 {0x11C, "GPUREG_DEPTHBUFFER_LOC"}, 175 {0x11D, "GPUREG_COLORBUFFER_LOC"}, 176 {0x11E, "GPUREG_FRAMEBUFFER_DIM"}, 177 178 {0x120, "GPUREG_GAS_LIGHT_XY"}, 179 {0x121, "GPUREG_GAS_LIGHT_Z"}, 180 {0x122, "GPUREG_GAS_LIGHT_Z_COLOR"}, 181 {0x123, "GPUREG_GAS_LUT_INDEX"}, 182 {0x124, "GPUREG_GAS_LUT_DATA"}, 183 184 {0x126, "GPUREG_GAS_DELTAZ_DEPTH"}, 185 186 {0x130, "GPUREG_FRAGOP_SHADOW"}, 187 188 {0x140, "GPUREG_LIGHT0_SPECULAR0"}, 189 {0x141, "GPUREG_LIGHT0_SPECULAR1"}, 190 {0x142, "GPUREG_LIGHT0_DIFFUSE"}, 191 {0x143, "GPUREG_LIGHT0_AMBIENT"}, 192 {0x144, "GPUREG_LIGHT0_XY"}, 193 {0x145, "GPUREG_LIGHT0_Z"}, 194 {0x146, "GPUREG_LIGHT0_SPOTDIR_XY"}, 195 {0x147, "GPUREG_LIGHT0_SPOTDIR_Z"}, 196 197 {0x149, "GPUREG_LIGHT0_CONFIG"}, 198 {0x14A, "GPUREG_LIGHT0_ATTENUATION_BIAS"}, 199 {0x14B, "GPUREG_LIGHT0_ATTENUATION_SCALE"}, 200 201 {0x150, "GPUREG_LIGHT1_SPECULAR0"}, 202 {0x151, "GPUREG_LIGHT1_SPECULAR1"}, 203 {0x152, "GPUREG_LIGHT1_DIFFUSE"}, 204 {0x153, "GPUREG_LIGHT1_AMBIENT"}, 205 {0x154, "GPUREG_LIGHT1_XY"}, 206 {0x155, "GPUREG_LIGHT1_Z"}, 207 {0x156, "GPUREG_LIGHT1_SPOTDIR_XY"}, 208 {0x157, "GPUREG_LIGHT1_SPOTDIR_Z"}, 209 210 {0x159, "GPUREG_LIGHT1_CONFIG"}, 211 {0x15A, "GPUREG_LIGHT1_ATTENUATION_BIAS"}, 212 {0x15B, "GPUREG_LIGHT1_ATTENUATION_SCALE"}, 213 214 {0x160, "GPUREG_LIGHT2_SPECULAR0"}, 215 {0x161, "GPUREG_LIGHT2_SPECULAR1"}, 216 {0x162, "GPUREG_LIGHT2_DIFFUSE"}, 217 {0x163, "GPUREG_LIGHT2_AMBIENT"}, 218 {0x164, "GPUREG_LIGHT2_XY"}, 219 {0x165, "GPUREG_LIGHT2_Z"}, 220 {0x166, "GPUREG_LIGHT2_SPOTDIR_XY"}, 221 {0x167, "GPUREG_LIGHT2_SPOTDIR_Z"}, 222 223 {0x169, "GPUREG_LIGHT2_CONFIG"}, 224 {0x16A, "GPUREG_LIGHT2_ATTENUATION_BIAS"}, 225 {0x16B, "GPUREG_LIGHT2_ATTENUATION_SCALE"}, 226 227 {0x170, "GPUREG_LIGHT3_SPECULAR0"}, 228 {0x171, "GPUREG_LIGHT3_SPECULAR1"}, 229 {0x172, "GPUREG_LIGHT3_DIFFUSE"}, 230 {0x173, "GPUREG_LIGHT3_AMBIENT"}, 231 {0x174, "GPUREG_LIGHT3_XY"}, 232 {0x175, "GPUREG_LIGHT3_Z"}, 233 {0x176, "GPUREG_LIGHT3_SPOTDIR_XY"}, 234 {0x177, "GPUREG_LIGHT3_SPOTDIR_Z"}, 235 236 {0x179, "GPUREG_LIGHT3_CONFIG"}, 237 {0x17A, "GPUREG_LIGHT3_ATTENUATION_BIAS"}, 238 {0x17B, "GPUREG_LIGHT3_ATTENUATION_SCALE"}, 239 240 {0x180, "GPUREG_LIGHT4_SPECULAR0"}, 241 {0x181, "GPUREG_LIGHT4_SPECULAR1"}, 242 {0x182, "GPUREG_LIGHT4_DIFFUSE"}, 243 {0x183, "GPUREG_LIGHT4_AMBIENT"}, 244 {0x184, "GPUREG_LIGHT4_XY"}, 245 {0x185, "GPUREG_LIGHT4_Z"}, 246 {0x186, "GPUREG_LIGHT4_SPOTDIR_XY"}, 247 {0x187, "GPUREG_LIGHT4_SPOTDIR_Z"}, 248 249 {0x189, "GPUREG_LIGHT4_CONFIG"}, 250 {0x18A, "GPUREG_LIGHT4_ATTENUATION_BIAS"}, 251 {0x18B, "GPUREG_LIGHT4_ATTENUATION_SCALE"}, 252 253 {0x190, "GPUREG_LIGHT5_SPECULAR0"}, 254 {0x191, "GPUREG_LIGHT5_SPECULAR1"}, 255 {0x192, "GPUREG_LIGHT5_DIFFUSE"}, 256 {0x193, "GPUREG_LIGHT5_AMBIENT"}, 257 {0x194, "GPUREG_LIGHT5_XY"}, 258 {0x195, "GPUREG_LIGHT5_Z"}, 259 {0x196, "GPUREG_LIGHT5_SPOTDIR_XY"}, 260 {0x197, "GPUREG_LIGHT5_SPOTDIR_Z"}, 261 262 {0x199, "GPUREG_LIGHT5_CONFIG"}, 263 {0x19A, "GPUREG_LIGHT5_ATTENUATION_BIAS"}, 264 {0x19B, "GPUREG_LIGHT5_ATTENUATION_SCALE"}, 265 266 {0x1A0, "GPUREG_LIGHT6_SPECULAR0"}, 267 {0x1A1, "GPUREG_LIGHT6_SPECULAR1"}, 268 {0x1A2, "GPUREG_LIGHT6_DIFFUSE"}, 269 {0x1A3, "GPUREG_LIGHT6_AMBIENT"}, 270 {0x1A4, "GPUREG_LIGHT6_XY"}, 271 {0x1A5, "GPUREG_LIGHT6_Z"}, 272 {0x1A6, "GPUREG_LIGHT6_SPOTDIR_XY"}, 273 {0x1A7, "GPUREG_LIGHT6_SPOTDIR_Z"}, 274 275 {0x1A9, "GPUREG_LIGHT6_CONFIG"}, 276 {0x1AA, "GPUREG_LIGHT6_ATTENUATION_BIAS"}, 277 {0x1AB, "GPUREG_LIGHT6_ATTENUATION_SCALE"}, 278 279 {0x1B0, "GPUREG_LIGHT7_SPECULAR0"}, 280 {0x1B1, "GPUREG_LIGHT7_SPECULAR1"}, 281 {0x1B2, "GPUREG_LIGHT7_DIFFUSE"}, 282 {0x1B3, "GPUREG_LIGHT7_AMBIENT"}, 283 {0x1B4, "GPUREG_LIGHT7_XY"}, 284 {0x1B5, "GPUREG_LIGHT7_Z"}, 285 {0x1B6, "GPUREG_LIGHT7_SPOTDIR_XY"}, 286 {0x1B7, "GPUREG_LIGHT7_SPOTDIR_Z"}, 287 288 {0x1B9, "GPUREG_LIGHT7_CONFIG"}, 289 {0x1BA, "GPUREG_LIGHT7_ATTENUATION_BIAS"}, 290 {0x1BB, "GPUREG_LIGHT7_ATTENUATION_SCALE"}, 291 292 {0x1C0, "GPUREG_LIGHTING_AMBIENT"}, 293 294 {0x1C2, "GPUREG_LIGHTING_NUM_LIGHTS"}, 295 {0x1C3, "GPUREG_LIGHTING_CONFIG0"}, 296 {0x1C4, "GPUREG_LIGHTING_CONFIG1"}, 297 {0x1C5, "GPUREG_LIGHTING_LUT_INDEX"}, 298 {0x1C6, "GPUREG_LIGHTING_ENABLE1"}, 299 300 {0x1C8, "GPUREG_LIGHTING_LUT_DATA0"}, 301 {0x1C9, "GPUREG_LIGHTING_LUT_DATA1"}, 302 {0x1CA, "GPUREG_LIGHTING_LUT_DATA2"}, 303 {0x1CB, "GPUREG_LIGHTING_LUT_DATA3"}, 304 {0x1CC, "GPUREG_LIGHTING_LUT_DATA4"}, 305 {0x1CD, "GPUREG_LIGHTING_LUT_DATA5"}, 306 {0x1CE, "GPUREG_LIGHTING_LUT_DATA6"}, 307 {0x1CF, "GPUREG_LIGHTING_LUT_DATA7"}, 308 {0x1D0, "GPUREG_LIGHTING_LUTINPUT_ABS"}, 309 {0x1D1, "GPUREG_LIGHTING_LUTINPUT_SELECT"}, 310 {0x1D2, "GPUREG_LIGHTING_LUTINPUT_SCALE"}, 311 312 {0x1D9, "GPUREG_LIGHTING_LIGHT_PERMUTATION"}, 313 314 {0x200, "GPUREG_ATTRIBBUFFERS_LOC"}, 315 {0x201, "GPUREG_ATTRIBBUFFERS_FORMAT_LOW"}, 316 {0x202, "GPUREG_ATTRIBBUFFERS_FORMAT_HIGH"}, 317 {0x203, "GPUREG_ATTRIBBUFFER0_OFFSET"}, 318 {0x204, "GPUREG_ATTRIBBUFFER0_CONFIG1"}, 319 {0x205, "GPUREG_ATTRIBBUFFER0_CONFIG2"}, 320 {0x206, "GPUREG_ATTRIBBUFFER1_OFFSET"}, 321 {0x207, "GPUREG_ATTRIBBUFFER1_CONFIG1"}, 322 {0x208, "GPUREG_ATTRIBBUFFER1_CONFIG2"}, 323 {0x209, "GPUREG_ATTRIBBUFFER2_OFFSET"}, 324 {0x20A, "GPUREG_ATTRIBBUFFER2_CONFIG1"}, 325 {0x20B, "GPUREG_ATTRIBBUFFER2_CONFIG2"}, 326 {0x20C, "GPUREG_ATTRIBBUFFER3_OFFSET"}, 327 {0x20D, "GPUREG_ATTRIBBUFFER3_CONFIG1"}, 328 {0x20E, "GPUREG_ATTRIBBUFFER3_CONFIG2"}, 329 {0x20F, "GPUREG_ATTRIBBUFFER4_OFFSET"}, 330 {0x210, "GPUREG_ATTRIBBUFFER4_CONFIG1"}, 331 {0x211, "GPUREG_ATTRIBBUFFER4_CONFIG2"}, 332 {0x212, "GPUREG_ATTRIBBUFFER5_OFFSET"}, 333 {0x213, "GPUREG_ATTRIBBUFFER5_CONFIG1"}, 334 {0x214, "GPUREG_ATTRIBBUFFER5_CONFIG2"}, 335 {0x215, "GPUREG_ATTRIBBUFFER6_OFFSET"}, 336 {0x216, "GPUREG_ATTRIBBUFFER6_CONFIG1"}, 337 {0x217, "GPUREG_ATTRIBBUFFER6_CONFIG2"}, 338 {0x218, "GPUREG_ATTRIBBUFFER7_OFFSET"}, 339 {0x219, "GPUREG_ATTRIBBUFFER7_CONFIG1"}, 340 {0x21A, "GPUREG_ATTRIBBUFFER7_CONFIG2"}, 341 {0x21B, "GPUREG_ATTRIBBUFFER8_OFFSET"}, 342 {0x21C, "GPUREG_ATTRIBBUFFER8_CONFIG1"}, 343 {0x21D, "GPUREG_ATTRIBBUFFER8_CONFIG2"}, 344 {0x21E, "GPUREG_ATTRIBBUFFER9_OFFSET"}, 345 {0x21F, "GPUREG_ATTRIBBUFFER9_CONFIG1"}, 346 {0x220, "GPUREG_ATTRIBBUFFER9_CONFIG2"}, 347 {0x221, "GPUREG_ATTRIBBUFFER10_OFFSET"}, 348 {0x222, "GPUREG_ATTRIBBUFFER10_CONFIG1"}, 349 {0x223, "GPUREG_ATTRIBBUFFER10_CONFIG2"}, 350 {0x224, "GPUREG_ATTRIBBUFFER11_OFFSET"}, 351 {0x225, "GPUREG_ATTRIBBUFFER11_CONFIG1"}, 352 {0x226, "GPUREG_ATTRIBBUFFER11_CONFIG2"}, 353 {0x227, "GPUREG_INDEXBUFFER_CONFIG"}, 354 {0x228, "GPUREG_NUMVERTICES"}, 355 {0x229, "GPUREG_GEOSTAGE_CONFIG"}, 356 {0x22A, "GPUREG_VERTEX_OFFSET"}, 357 358 {0x22D, "GPUREG_POST_VERTEX_CACHE_NUM"}, 359 {0x22E, "GPUREG_DRAWARRAYS"}, 360 {0x22F, "GPUREG_DRAWELEMENTS"}, 361 362 {0x231, "GPUREG_VTX_FUNC"}, 363 {0x232, "GPUREG_FIXEDATTRIB_INDEX"}, 364 {0x233, "GPUREG_FIXEDATTRIB_DATA0"}, 365 {0x234, "GPUREG_FIXEDATTRIB_DATA1"}, 366 {0x235, "GPUREG_FIXEDATTRIB_DATA2"}, 367 368 {0x238, "GPUREG_CMDBUF_SIZE0"}, 369 {0x239, "GPUREG_CMDBUF_SIZE1"}, 370 {0x23A, "GPUREG_CMDBUF_ADDR0"}, 371 {0x23B, "GPUREG_CMDBUF_ADDR1"}, 372 {0x23C, "GPUREG_CMDBUF_JUMP0"}, 373 {0x23D, "GPUREG_CMDBUF_JUMP1"}, 374 375 {0x242, "GPUREG_VSH_NUM_ATTR"}, 376 377 {0x244, "GPUREG_VSH_COM_MODE"}, 378 {0x245, "GPUREG_START_DRAW_FUNC0"}, 379 380 {0x24A, "GPUREG_VSH_OUTMAP_TOTAL1"}, 381 382 {0x251, "GPUREG_VSH_OUTMAP_TOTAL2"}, 383 {0x252, "GPUREG_GSH_MISC0"}, 384 {0x253, "GPUREG_GEOSTAGE_CONFIG2"}, 385 {0x254, "GPUREG_GSH_MISC1"}, 386 387 {0x25E, "GPUREG_PRIMITIVE_CONFIG"}, 388 {0x25F, "GPUREG_RESTART_PRIMITIVE"}, 389 390 {0x280, "GPUREG_GSH_BOOLUNIFORM"}, 391 {0x281, "GPUREG_GSH_INTUNIFORM_I0"}, 392 {0x282, "GPUREG_GSH_INTUNIFORM_I1"}, 393 {0x283, "GPUREG_GSH_INTUNIFORM_I2"}, 394 {0x284, "GPUREG_GSH_INTUNIFORM_I3"}, 395 396 {0x289, "GPUREG_GSH_INPUTBUFFER_CONFIG"}, 397 {0x28A, "GPUREG_GSH_ENTRYPOINT"}, 398 {0x28B, "GPUREG_GSH_ATTRIBUTES_PERMUTATION_LOW"}, 399 {0x28C, "GPUREG_GSH_ATTRIBUTES_PERMUTATION_HIGH"}, 400 {0x28D, "GPUREG_GSH_OUTMAP_MASK"}, 401 402 {0x28F, "GPUREG_GSH_CODETRANSFER_END"}, 403 {0x290, "GPUREG_GSH_FLOATUNIFORM_INDEX"}, 404 {0x291, "GPUREG_GSH_FLOATUNIFORM_DATA0"}, 405 {0x292, "GPUREG_GSH_FLOATUNIFORM_DATA1"}, 406 {0x293, "GPUREG_GSH_FLOATUNIFORM_DATA2"}, 407 {0x294, "GPUREG_GSH_FLOATUNIFORM_DATA3"}, 408 {0x295, "GPUREG_GSH_FLOATUNIFORM_DATA4"}, 409 {0x296, "GPUREG_GSH_FLOATUNIFORM_DATA5"}, 410 {0x297, "GPUREG_GSH_FLOATUNIFORM_DATA6"}, 411 {0x298, "GPUREG_GSH_FLOATUNIFORM_DATA7"}, 412 413 {0x29B, "GPUREG_GSH_CODETRANSFER_INDEX"}, 414 {0x29C, "GPUREG_GSH_CODETRANSFER_DATA0"}, 415 {0x29D, "GPUREG_GSH_CODETRANSFER_DATA1"}, 416 {0x29E, "GPUREG_GSH_CODETRANSFER_DATA2"}, 417 {0x29F, "GPUREG_GSH_CODETRANSFER_DATA3"}, 418 {0x2A0, "GPUREG_GSH_CODETRANSFER_DATA4"}, 419 {0x2A1, "GPUREG_GSH_CODETRANSFER_DATA5"}, 420 {0x2A2, "GPUREG_GSH_CODETRANSFER_DATA6"}, 421 {0x2A3, "GPUREG_GSH_CODETRANSFER_DATA7"}, 422 423 {0x2A5, "GPUREG_GSH_OPDESCS_INDEX"}, 424 {0x2A6, "GPUREG_GSH_OPDESCS_DATA0"}, 425 {0x2A7, "GPUREG_GSH_OPDESCS_DATA1"}, 426 {0x2A8, "GPUREG_GSH_OPDESCS_DATA2"}, 427 {0x2A9, "GPUREG_GSH_OPDESCS_DATA3"}, 428 {0x2AA, "GPUREG_GSH_OPDESCS_DATA4"}, 429 {0x2AB, "GPUREG_GSH_OPDESCS_DATA5"}, 430 {0x2AC, "GPUREG_GSH_OPDESCS_DATA6"}, 431 {0x2AD, "GPUREG_GSH_OPDESCS_DATA7"}, 432 433 {0x2B0, "GPUREG_VSH_BOOLUNIFORM"}, 434 {0x2B1, "GPUREG_VSH_INTUNIFORM_I0"}, 435 {0x2B2, "GPUREG_VSH_INTUNIFORM_I1"}, 436 {0x2B3, "GPUREG_VSH_INTUNIFORM_I2"}, 437 {0x2B4, "GPUREG_VSH_INTUNIFORM_I3"}, 438 439 {0x2B9, "GPUREG_VSH_INPUTBUFFER_CONFIG"}, 440 {0x2BA, "GPUREG_VSH_ENTRYPOINT"}, 441 {0x2BB, "GPUREG_VSH_ATTRIBUTES_PERMUTATION_LOW"}, 442 {0x2BC, "GPUREG_VSH_ATTRIBUTES_PERMUTATION_HIGH"}, 443 {0x2BD, "GPUREG_VSH_OUTMAP_MASK"}, 444 445 {0x2BF, "GPUREG_VSH_CODETRANSFER_END"}, 446 {0x2C0, "GPUREG_VSH_FLOATUNIFORM_INDEX"}, 447 {0x2C1, "GPUREG_VSH_FLOATUNIFORM_DATA0"}, 448 {0x2C2, "GPUREG_VSH_FLOATUNIFORM_DATA1"}, 449 {0x2C3, "GPUREG_VSH_FLOATUNIFORM_DATA2"}, 450 {0x2C4, "GPUREG_VSH_FLOATUNIFORM_DATA3"}, 451 {0x2C5, "GPUREG_VSH_FLOATUNIFORM_DATA4"}, 452 {0x2C6, "GPUREG_VSH_FLOATUNIFORM_DATA5"}, 453 {0x2C7, "GPUREG_VSH_FLOATUNIFORM_DATA6"}, 454 {0x2C8, "GPUREG_VSH_FLOATUNIFORM_DATA7"}, 455 456 {0x2CB, "GPUREG_VSH_CODETRANSFER_INDEX"}, 457 {0x2CC, "GPUREG_VSH_CODETRANSFER_DATA0"}, 458 {0x2CD, "GPUREG_VSH_CODETRANSFER_DATA1"}, 459 {0x2CE, "GPUREG_VSH_CODETRANSFER_DATA2"}, 460 {0x2CF, "GPUREG_VSH_CODETRANSFER_DATA3"}, 461 {0x2D0, "GPUREG_VSH_CODETRANSFER_DATA4"}, 462 {0x2D1, "GPUREG_VSH_CODETRANSFER_DATA5"}, 463 {0x2D2, "GPUREG_VSH_CODETRANSFER_DATA6"}, 464 {0x2D3, "GPUREG_VSH_CODETRANSFER_DATA7"}, 465 466 {0x2D5, "GPUREG_VSH_OPDESCS_INDEX"}, 467 {0x2D6, "GPUREG_VSH_OPDESCS_DATA0"}, 468 {0x2D7, "GPUREG_VSH_OPDESCS_DATA1"}, 469 {0x2D8, "GPUREG_VSH_OPDESCS_DATA2"}, 470 {0x2D9, "GPUREG_VSH_OPDESCS_DATA3"}, 471 {0x2DA, "GPUREG_VSH_OPDESCS_DATA4"}, 472 {0x2DB, "GPUREG_VSH_OPDESCS_DATA5"}, 473 {0x2DC, "GPUREG_VSH_OPDESCS_DATA6"}, 474 {0x2DD, "GPUREG_VSH_OPDESCS_DATA7"}, 475 }; 476 477 const char* RegsInternal::GetRegisterName(u16 index) { 478 const auto it = std::lower_bound(std::begin(register_names), std::end(register_names), index, 479 [](auto p, auto i) { return p.first < i; }); 480 if (it->first == index) { 481 return it->second; 482 } 483 484 // Return empty string if no match is found 485 return ""; 486 } 487 488 } // namespace Pica