From c8a1d11408e8fb57b4634ff34c821e9a8a057dba Mon Sep 17 00:00:00 2001 From: root <182859762@qq.com> Date: Wed, 5 Jul 2023 23:00:27 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=BB=E5=8F=96ATTRIB=5FDATA=E7=9A=84?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=EF=BC=8C=E4=BB=A5=E5=8F=8A=E8=A1=A5=E5=85=A8?= =?UTF-8?q?parse.js?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tools/cmdlist/commands.csv | 768 +++++++++++++++++++++++++++++++++++++ tools/cmdlist/parse.js | 236 ++++++++++-- tools/cmdlist/read.js | 33 ++ 3 files changed, 1009 insertions(+), 28 deletions(-) create mode 100644 tools/cmdlist/commands.csv create mode 100644 tools/cmdlist/read.js diff --git a/tools/cmdlist/commands.csv b/tools/cmdlist/commands.csv new file mode 100644 index 0000000..6aa193e --- /dev/null +++ b/tools/cmdlist/commands.csv @@ -0,0 +1,768 @@ +0000,GPUREG_0000,, +0001,GPUREG_0001,, +0002,GPUREG_0002,, +0003,GPUREG_0003,, +0004,GPUREG_0004,, +0005,GPUREG_0005,, +0006,GPUREG_0006,, +0007,GPUREG_0007,, +0008,GPUREG_0008,, +0009,GPUREG_0009,, +000A,GPUREG_000A,, +000B,GPUREG_000B,, +000C,GPUREG_000C,, +000D,GPUREG_000D,, +000E,GPUREG_000E,, +000F,GPUREG_000F,, +0010,GPUREG_FINALIZE,,PICA_REG_INTERRUPT +0011,GPUREG_0011,, +0012,GPUREG_0012,, +0013,GPUREG_0013,, +0014,GPUREG_0014,, +0015,GPUREG_0015,, +0016,GPUREG_0016,, +0017,GPUREG_0017,, +0018,GPUREG_0018,, +0019,GPUREG_0019,, +001A,GPUREG_001A,, +001B,GPUREG_001B,, +001C,GPUREG_001C,, +001D,GPUREG_001D,, +001E,GPUREG_001E,, +001F,GPUREG_001F,, +0020,GPUREG_0020,, +0021,GPUREG_0021,, +0022,GPUREG_0022,, +0023,GPUREG_0023,, +0024,GPUREG_0024,, +0025,GPUREG_0025,, +0026,GPUREG_0026,, +0027,GPUREG_0027,, +0028,GPUREG_0028,, +0029,GPUREG_0029,, +002A,GPUREG_002A,, +002B,GPUREG_002B,, +002C,GPUREG_002C,, +002D,GPUREG_002D,, +002E,GPUREG_002E,, +002F,GPUREG_002F,, +0030,GPUREG_0030,, +0031,GPUREG_0031,, +0032,GPUREG_0032,, +0033,GPUREG_0033,, +0034,GPUREG_0034,, +0035,GPUREG_0035,, +0036,GPUREG_0036,, +0037,GPUREG_0037,, +0038,GPUREG_0038,, +0039,GPUREG_0039,, +003A,GPUREG_003A,, +003B,GPUREG_003B,, +003C,GPUREG_003C,, +003D,GPUREG_003D,, +003E,GPUREG_003E,, +003F,GPUREG_003F,, +0040,GPUREG_FACECULLING_CONFIG,,PICA_REG_CULL_FACE +0041,GPUREG_VIEWPORT_WIDTH,,PICA_REG_VIEWPORT_WIDTH1 +0042,GPUREG_VIEWPORT_INVW,,PICA_REG_VIEWPORT_WIDTH2 +0043,GPUREG_VIEWPORT_HEIGHT,,PICA_REG_VIEWPORT_HEIGHT1 +0044,GPUREG_VIEWPORT_INVH,,PICA_REG_VIEWPORT_HEIGHT2 +0045,GPUREG_0045,, +0046,GPUREG_0046,, +0047,GPUREG_FRAGOP_CLIP,?,PICA_REG_FRAGOP_CLIP +0048,GPUREG_FRAGOP_CLIP_DATA0,?,PICA_REG_FRAGOP_CLIP_DATA1 +0049,GPUREG_FRAGOP_CLIP_DATA1,?,PICA_REG_FRAGOP_CLIP_DATA2 +004A,GPUREG_FRAGOP_CLIP_DATA2,?,PICA_REG_FRAGOP_CLIP_DATA3 +004B,GPUREG_FRAGOP_CLIP_DATA3,?,PICA_REG_FRAGOP_CLIP_DATA4 +004C,GPUREG_004C,, +004D,GPUREG_DEPTHMAP_SCALE,As f24,PICA_REG_FRAGOP_WSCALE_DATA1 +004E,GPUREG_DEPTHMAP_OFFSET,As f24,PICA_REG_FRAGOP_WSCALE_DATA2 +004F,GPUREG_SH_OUTMAP_TOTAL,,PICA_REG_GS_OUT_REG_NUM0 / PICA_REG_VS_OUT_REG_NUM0 +0050,GPUREG_SH_OUTMAP_O0,,PICA_REG_GS_OUT_ATTR0 / PICA_REG_VS_OUT_ATTR0 +0051,GPUREG_SH_OUTMAP_O1,,PICA_REG_GS_OUT_ATTR1 / PICA_REG_VS_OUT_ATTR1 +0052,GPUREG_SH_OUTMAP_O2,,PICA_REG_GS_OUT_ATTR2 / PICA_REG_VS_OUT_ATTR2 +0053,GPUREG_SH_OUTMAP_O3,,PICA_REG_GS_OUT_ATTR3 / PICA_REG_VS_OUT_ATTR3 +0054,GPUREG_SH_OUTMAP_O4,,PICA_REG_GS_OUT_ATTR4 / PICA_REG_VS_OUT_ATTR4 +0055,GPUREG_SH_OUTMAP_O5,,PICA_REG_GS_OUT_ATTR5 / PICA_REG_VS_OUT_ATTR5 +0056,GPUREG_SH_OUTMAP_O6,,PICA_REG_GS_OUT_ATTR6 / PICA_REG_VS_OUT_ATTR6 +0057,GPUREG_0057,, +0058,GPUREG_0058,, +0059,GPUREG_0059,, +005A,GPUREG_005A,, +005B,GPUREG_005B,, +005C,GPUREG_005C,, +005D,GPUREG_005D,, +005E,GPUREG_005E,, +005F,GPUREG_005F,, +0060,GPUREG_0060,, +0061,GPUREG_EARLYDEPTH_FUNC,?,PICA_REG_EARLY_DEPTH_FUNC +0062,GPUREG_EARLYDEPTH_TEST1,?,PICA_REG_EARLY_DEPTH_TEST1 +0063,GPUREG_EARLYDEPTH_CLEAR,,PICA_REG_EARLY_DEPTH_CLEAR +0064,GPUREG_SH_OUTATTR_MODE,?,PICA_REG_GS_OUT_ATTR_MODE / PICA_REG_VS_OUT_ATTR_MODE +0065,GPUREG_SCISSORTEST_MODE,,PICA_REG_SCISSOR +0066,GPUREG_SCISSORTEST_POS,,PICA_REG_SCISSOR_XY +0067,GPUREG_SCISSORTEST_DIM,,PICA_REG_SCISSOR_SIZE +0068,GPUREG_VIEWPORT_XY,,PICA_REG_VIEWPORT_XY +0069,GPUREG_0069,, +006A,GPUREG_EARLYDEPTH_DATA,,PICA_REG_EARLY_DEPTH_DATA +006B,GPUREG_006B,, +006C,GPUREG_006C,, +006D,GPUREG_DEPTHMAP_ENABLE,?,PICA_REG_FRAGOP_WSCALE +006E,GPUREG_RENDERBUF_DIM,?,PICA_REG_RENDER_BUF_RESOLUTION1 +006F,GPUREG_SH_OUTATTR_CLOCK,?,PICA_REG_GS_OUT_ATTR_CLK / PICA_REG_VS_OUT_ATTR_CLK +0070,GPUREG_0070,, +0071,GPUREG_0071,, +0072,GPUREG_0072,, +0073,GPUREG_0073,, +0074,GPUREG_0074,, +0075,GPUREG_0075,, +0076,GPUREG_0076,, +0077,GPUREG_0077,, +0078,GPUREG_0078,, +0079,GPUREG_0079,, +007A,GPUREG_007A,, +007B,GPUREG_007B,, +007C,GPUREG_007C,, +007D,GPUREG_007D,, +007E,GPUREG_007E,, +007F,GPUREG_007F,, +0080,GPUREG_TEXUNIT_CONFIG,,PICA_REG_TEXTURE_FUNC +0081,GPUREG_TEXUNIT0_BORDER_COLOR,,PICA_REG_TEXTURE0_BORDER_COLOR +0082,GPUREG_TEXUNIT0_DIM,,PICA_REG_TEXTURE0_SIZE +0083,GPUREG_TEXUNIT0_PARAM,,PICA_REG_TEXTURE0_WRAP_FILTER +0084,GPUREG_TEXUNIT0_LOD,?,PICA_REG_TEXTURE0_LOD +0085,GPUREG_TEXUNIT0_ADDR1,,PICA_REG_TEXTURE0_ADDR1 +0086,GPUREG_TEXUNIT0_ADDR2,,PICA_REG_TEXTURE0_ADDR2 +0087,GPUREG_TEXUNIT0_ADDR3,,PICA_REG_TEXTURE0_ADDR3 +0088,GPUREG_TEXUNIT0_ADDR4,,PICA_REG_TEXTURE0_ADDR4 +0089,GPUREG_TEXUNIT0_ADDR5,,PICA_REG_TEXTURE0_ADDR5 +008A,GPUREG_TEXUNIT0_ADDR6,,PICA_REG_TEXTURE0_ADDR6 +008B,GPUREG_TEXUNIT0_SHADOW,?,PICA_REG_TEXTURE0_SHADOW +008C,GPUREG_008C,, +008D,GPUREG_008D,, +008E,GPUREG_TEXUNIT0_TYPE,?,PICA_REG_TEXTURE0_FORMAT +008F,GPUREG_LIGHTING_ENABLE0,?,PICA_REG_FRAG_LIGHT_EN0 +0090,GPUREG_0090,, +0091,GPUREG_TEXUNIT1_BORDER_COLOR,,PICA_REG_TEXTURE1_BORDER_COLOR +0092,GPUREG_TEXUNIT1_DIM,,PICA_REG_TEXTURE1_SIZE +0093,GPUREG_TEXUNIT1_PARAM,,PICA_REG_TEXTURE1_WRAP_FILTER +0094,GPUREG_TEXUNIT1_LOD,?,PICA_REG_TEXTURE1_LOD +0095,GPUREG_TEXUNIT1_ADDR,,PICA_REG_TEXTURE1_ADDR +0096,GPUREG_TEXUNIT1_TYPE,,PICA_REG_TEXTURE1_FORMAT +0097,GPUREG_0097,, +0098,GPUREG_0098,, +0099,GPUREG_TEXUNIT2_BORDER_COLOR,,PICA_REG_TEXTURE2_BORDER_COLOR +009A,GPUREG_TEXUNIT2_DIM,,PICA_REG_TEXTURE2_SIZE +009B,GPUREG_TEXUNIT2_PARAM,,PICA_REG_TEXTURE2_WRAP_FILTER +009C,GPUREG_TEXUNIT2_LOD,?,PICA_REG_TEXTURE2_LOD +009D,GPUREG_TEXUNIT2_ADDR,,PICA_REG_TEXTURE2_ADDR +009E,GPUREG_TEXUNIT2_TYPE,,PICA_REG_TEXTURE2_FORMAT +009F,GPUREG_009F,, +00A0,GPUREG_00A0,, +00A1,GPUREG_00A1,, +00A2,GPUREG_00A2,, +00A3,GPUREG_00A3,, +00A4,GPUREG_00A4,, +00A5,GPUREG_00A5,, +00A6,GPUREG_00A6,, +00A7,GPUREG_00A7,, +00A8,GPUREG_TEXUNIT3_PROCTEX0,?,PICA_REG_TEXTURE3_PROCTEX0 +00A9,GPUREG_TEXUNIT3_PROCTEX1,?,PICA_REG_TEXTURE3_PROCTEX1 +00AA,GPUREG_TEXUNIT3_PROCTEX2,?,PICA_REG_TEXTURE3_PROCTEX2 +00AB,GPUREG_TEXUNIT3_PROCTEX3,?,PICA_REG_TEXTURE3_PROCTEX3 +00AC,GPUREG_TEXUNIT3_PROCTEX4,?,PICA_REG_TEXTURE3_PROCTEX4 +00AD,GPUREG_TEXUNIT3_PROCTEX5,?,PICA_REG_TEXTURE3_PROCTEX5 +00AE,GPUREG_00AE,, +00AF,GPUREG_PROCTEX_LUT,?,PICA_REG_PROCTEX_LUT +00B0,GPUREG_PROCTEX_LUT_DATA0,?,PICA_REG_PROCTEX_LUT_DATA0 +00B1,GPUREG_PROCTEX_LUT_DATA1,?,PICA_REG_PROCTEX_LUT_DATA1 +00B2,GPUREG_PROCTEX_LUT_DATA2,?,PICA_REG_PROCTEX_LUT_DATA2 +00B3,GPUREG_PROCTEX_LUT_DATA3,?,PICA_REG_PROCTEX_LUT_DATA3 +00B4,GPUREG_PROCTEX_LUT_DATA4,?,PICA_REG_PROCTEX_LUT_DATA4 +00B5,GPUREG_PROCTEX_LUT_DATA5,?,PICA_REG_PROCTEX_LUT_DATA5 +00B6,GPUREG_PROCTEX_LUT_DATA6,?,PICA_REG_PROCTEX_LUT_DATA6 +00B7,GPUREG_PROCTEX_LUT_DATA7,?,PICA_REG_PROCTEX_LUT_DATA7 +00B8,GPUREG_00B8,, +00B9,GPUREG_00B9,, +00BA,GPUREG_00BA,, +00BB,GPUREG_00BB,, +00BC,GPUREG_00BC,, +00BD,GPUREG_00BD,, +00BE,GPUREG_00BE,, +00BF,GPUREG_00BF,, +00C0,GPUREG_TEXENV0_SOURCE,,PICA_REG_TEX_ENV_0 +00C1,GPUREG_TEXENV0_OPERAND,,PICA_REG_TEX_ENV_0_OPERAND +00C2,GPUREG_TEXENV0_COMBINER,,PICA_REG_TEX_ENV_0_COMBINE +00C3,GPUREG_TEXENV0_COLOR,,PICA_REG_TEX_ENV_0_COLOR +00C4,GPUREG_TEXENV0_SCALE,,PICA_REG_TEX_ENV_0_SCALE +00C5,GPUREG_00C5,, +00C6,GPUREG_00C6,, +00C7,GPUREG_00C7,, +00C8,GPUREG_TEXENV1_SOURCE,,PICA_REG_TEX_ENV_1 +00C9,GPUREG_TEXENV1_OPERAND,,PICA_REG_TEX_ENV_1_OPERAND +00CA,GPUREG_TEXENV1_COMBINER,,PICA_REG_TEX_ENV_1_COMBINE +00CB,GPUREG_TEXENV1_COLOR,,PICA_REG_TEX_ENV_1_COLOR +00CC,GPUREG_TEXENV1_SCALE,,PICA_REG_TEX_ENV_1_SCALE +00CD,GPUREG_00CD,, +00CE,GPUREG_00CE,, +00CF,GPUREG_00CF,, +00D0,GPUREG_TEXENV2_SOURCE,,PICA_REG_TEX_ENV_2 +00D1,GPUREG_TEXENV2_OPERAND,,PICA_REG_TEX_ENV_2_OPERAND +00D2,GPUREG_TEXENV2_COMBINER,,PICA_REG_TEX_ENV_2_COMBINE +00D3,GPUREG_TEXENV2_COLOR,,PICA_REG_TEX_ENV_2_COLOR +00D4,GPUREG_TEXENV2_SCALE,,PICA_REG_TEX_ENV_2_SCALE +00D5,GPUREG_00D5,, +00D6,GPUREG_00D6,, +00D7,GPUREG_00D7,, +00D8,GPUREG_TEXENV3_SOURCE,,PICA_REG_TEX_ENV_3 +00D9,GPUREG_TEXENV3_OPERAND,,PICA_REG_TEX_ENV_3_OPERAND +00DA,GPUREG_TEXENV3_COMBINER,,PICA_REG_TEX_ENV_3_COMBINE +00DB,GPUREG_TEXENV3_COLOR,,PICA_REG_TEX_ENV_3_COLOR +00DC,GPUREG_TEXENV3_SCALE,,PICA_REG_TEX_ENV_3_SCALE +00DD,GPUREG_00DD,, +00DE,GPUREG_00DE,, +00DF,GPUREG_00DF,, +00E0,GPUREG_TEXENV_UPDATE_BUFFER,?,PICA_REG_GAS_FOG_MODE / PICA_REG_TEX_ENV_BUF_INPUT +00E1,GPUREG_FOG_COLOR,?,PICA_REG_FOG_COLOR +00E2,GPUREG_00E2,, +00E3,GPUREG_00E3,, +00E4,GPUREG_GAS_ATTENUATION,?,PICA_REG_GAS_ATTENUATION +00E5,GPUREG_GAS_ACCMAX,?,PICA_REG_GAS_ACCMAX +00E6,GPUREG_FOG_LUT_INDEX,?,PICA_REG_FOG_LUT_INDEX +00E7,GPUREG_00E7,, +00E8,GPUREG_FOG_LUT_DATA0,?,PICA_REG_FOG_LUT_DATA0 +00E9,GPUREG_FOG_LUT_DATA1,?,PICA_REG_FOG_LUT_DATA1 +00EA,GPUREG_FOG_LUT_DATA2,?,PICA_REG_FOG_LUT_DATA2 +00EB,GPUREG_FOG_LUT_DATA3,?,PICA_REG_FOG_LUT_DATA3 +00EC,GPUREG_FOG_LUT_DATA4,?,PICA_REG_FOG_LUT_DATA4 +00ED,GPUREG_FOG_LUT_DATA5,?,PICA_REG_FOG_LUT_DATA5 +00EE,GPUREG_FOG_LUT_DATA6,?,PICA_REG_FOG_LUT_DATA6 +00EF,GPUREG_FOG_LUT_DATA7,?,PICA_REG_FOG_LUT_DATA7 +00F0,GPUREG_TEXENV4_SOURCE,,PICA_REG_TEX_ENV_4 +00F1,GPUREG_TEXENV4_OPERAND,,PICA_REG_TEX_ENV_4_OPERAND +00F2,GPUREG_TEXENV4_COMBINER,,PICA_REG_TEX_ENV_4_COMBINE +00F3,GPUREG_TEXENV4_COLOR,,PICA_REG_TEX_ENV_4_COLOR +00F4,GPUREG_TEXENV4_SCALE,,PICA_REG_TEX_ENV_4_SCALE +00F5,GPUREG_00F5,, +00F6,GPUREG_00F6,, +00F7,GPUREG_00F7,, +00F8,GPUREG_TEXENV5_SOURCE,,PICA_REG_TEX_ENV_5 +00F9,GPUREG_TEXENV5_OPERAND,,PICA_REG_TEX_ENV_5_OPERAND +00FA,GPUREG_TEXENV5_COMBINER,,PICA_REG_TEX_ENV_5_COMBINE +00FB,GPUREG_TEXENV5_COLOR,,PICA_REG_TEX_ENV_5_COLOR +00FC,GPUREG_TEXENV5_SCALE,,PICA_REG_TEX_ENV_5_SCALE +00FD,GPUREG_TEXENV_BUFFER_COLOR,?,PICA_REG_TEX_ENV_BUF_COLOR +00FE,GPUREG_00FE,, +00FF,GPUREG_00FF,, +0100,GPUREG_COLOR_OPERATION,,PICA_REG_COLOR_OPERATION +0101,GPUREG_BLEND_FUNC,,PICA_REG_BLEND_FUNC +0102,GPUREG_LOGIC_OP,,PICA_REG_LOGIC_OP +0103,GPUREG_BLEND_COLOR,,PICA_REG_BLEND_COLOR +0104,GPUREG_FRAGOP_ALPHA_TEST,,PICA_REG_FRAGOP_ALPHA_TEST +0105,GPUREG_STENCIL_TEST,,PICA_REG_STENCIL_TEST +0106,GPUREG_STENCIL_OP,,PICA_REG_STENCIL_OP +0107,GPUREG_DEPTH_COLOR_MASK,,PICA_REG_DEPTH_COLOR_MASK +0108,GPUREG_0108,, +0109,GPUREG_0109,, +010A,GPUREG_010A,, +010B,GPUREG_010B,, +010C,GPUREG_010C,, +010D,GPUREG_010D,, +010E,GPUREG_010E,, +010F,GPUREG_010F,, +0110,GPUREG_FRAMEBUFFER_INVALIDATE,,PICA_REG_COLOR_BUFFER_CLEAR0 +0111,GPUREG_FRAMEBUFFER_FLUSH,,PICA_REG_COLOR_BUFFER_CLEAR1 +0112,GPUREG_COLORBUFFER_READ,,PICA_REG_COLOR_BUFFER_READ +0113,GPUREG_COLORBUFFER_WRITE,,PICA_REG_COLOR_BUFFER_WRITE +0114,GPUREG_DEPTHBUFFER_READ,,PICA_REG_DEPTH_STENCIL_READ +0115,GPUREG_DEPTHBUFFER_WRITE,,PICA_REG_DEPTH_STENCIL_WRITE +0116,GPUREG_DEPTHBUFFER_FORMAT,,PICA_REG_RENDER_BUF_DEPTH_MODE +0117,GPUREG_COLORBUFFER_FORMAT,,PICA_REG_RENDER_BUF_COLOR_MODE +0118,GPUREG_EARLYDEPTH_TEST2,?,PICA_REG_EARLY_DEPTH_TEST2 +0119,GPUREG_0119,, +011A,GPUREG_011A,, +011B,GPUREG_FRAMEBUFFER_BLOCK32,,PICA_REG_RENDER_BLOCK_FORMAT +011C,GPUREG_DEPTHBUFFER_LOC,,PICA_REG_RENDER_BUF_DEPTH_ADDR +011D,GPUREG_COLORBUFFER_LOC,,PICA_REG_RENDER_BUF_COLOR_ADDR +011E,GPUREG_FRAMEBUFFER_DIM,,PICA_REG_RENDER_BUF_RESOLUTION0 +011F,GPUREG_011F,, +0120,GPUREG_GAS_LIGHT_XY,?,PICA_REG_GAS_LIGHT_XY +0121,GPUREG_GAS_LIGHT_Z,?,PICA_REG_GAS_LIGHT_Z +0122,GPUREG_GAS_LIGHT_Z_COLOR,?,PICA_REG_GAS_LIGHT_Z_COLOR +0123,GPUREG_GAS_LUT_INDEX,?,PICA_REG_GAS_LUT_INDEX +0124,GPUREG_GAS_LUT_DATA,?,PICA_REG_GAS_LUT_DATA +0125,GPUREG_0125,, +0126,GPUREG_GAS_DELTAZ_DEPTH,?,PICA_REG_GAS_DELTAZ_DEPTH +0127,GPUREG_0127,, +0128,GPUREG_0128,, +0129,GPUREG_0129,, +012A,GPUREG_012A,, +012B,GPUREG_012B,, +012C,GPUREG_012C,, +012D,GPUREG_012D,, +012E,GPUREG_012E,, +012F,GPUREG_012F,, +0130,GPUREG_FRAGOP_SHADOW,?,PICA_REG_FRAGOP_SHADOW +0131,GPUREG_0131,, +0132,GPUREG_0132,, +0133,GPUREG_0133,, +0134,GPUREG_0134,, +0135,GPUREG_0135,, +0136,GPUREG_0136,, +0137,GPUREG_0137,, +0138,GPUREG_0138,, +0139,GPUREG_0139,, +013A,GPUREG_013A,, +013B,GPUREG_013B,, +013C,GPUREG_013C,, +013D,GPUREG_013D,, +013E,GPUREG_013E,, +013F,GPUREG_013F,, +0140,GPUREG_LIGHT0_SPECULAR0,?,PICA_REG_FRAG_LIGHT0_SPECULAR0 / PICA_REG_FRAG_LIGHT_START +0141,GPUREG_LIGHT0_SPECULAR1,?,PICA_REG_FRAG_LIGHT0_SPECULAR1 +0142,GPUREG_LIGHT0_DIFFUSE,?,PICA_REG_FRAG_LIGHT0_DIFFUSE +0143,GPUREG_LIGHT0_AMBIENT,?,PICA_REG_FRAG_LIGHT0_AMBIENT +0144,GPUREG_LIGHT0_XY,?,PICA_REG_FRAG_LIGHT0_POSITION_XY +0145,GPUREG_LIGHT0_Z,?,PICA_REG_FRAG_LIGHT0_POSITION_Z +0146,GPUREG_LIGHT0_SPOTDIR_XY,?,PICA_REG_FRAG_LIGHT0_SPOT_XY +0147,GPUREG_LIGHT0_SPOTDIR_Z,?,PICA_REG_FRAG_LIGHT0_SPOT_Z +0148,GPUREG_0148,, +0149,GPUREG_LIGHT0_CONFIG,,PICA_REG_FRAG_LIGHT0_TYPE +014A,GPUREG_LIGHT0_ATTENUATION_BIAS,?,PICA_REG_FRAG_LIGHT0_DIST_ATTN_BIAS +014B,GPUREG_LIGHT0_ATTENUATION_SCALE,?,PICA_REG_FRAG_LIGHT0_DIST_ATTN_SCALE +014C,GPUREG_014C,, +014D,GPUREG_014D,, +014E,GPUREG_014E,, +014F,GPUREG_014F,, +0150,GPUREG_LIGHT1_SPECULAR0,?,PICA_REG_FRAG_LIGHT1_SPECULAR0 +0151,GPUREG_LIGHT1_SPECULAR1,?,PICA_REG_FRAG_LIGHT1_SPECULAR1 +0152,GPUREG_LIGHT1_DIFFUSE,?,PICA_REG_FRAG_LIGHT1_DIFFUSE +0153,GPUREG_LIGHT1_AMBIENT,?,PICA_REG_FRAG_LIGHT1_AMBIENT +0154,GPUREG_LIGHT1_XY,?,PICA_REG_FRAG_LIGHT1_POSITION_XY +0155,GPUREG_LIGHT1_Z,?,PICA_REG_FRAG_LIGHT1_POSITION_Z +0156,GPUREG_LIGHT1_SPOTDIR_XY,?,PICA_REG_FRAG_LIGHT1_SPOT_XY +0157,GPUREG_LIGHT1_SPOTDIR_Z,?,PICA_REG_FRAG_LIGHT1_SPOT_Z +0158,GPUREG_0158,, +0159,GPUREG_LIGHT1_CONFIG,?,PICA_REG_FRAG_LIGHT1_TYPE +015A,GPUREG_LIGHT1_ATTENUATION_BIAS,?,PICA_REG_FRAG_LIGHT1_DIST_ATTN_BIAS +015B,GPUREG_LIGHT1_ATTENUATION_SCALE,?,PICA_REG_FRAG_LIGHT1_DIST_ATTN_SCALE +015C,GPUREG_015C,, +015D,GPUREG_015D,, +015E,GPUREG_015E,, +015F,GPUREG_015F,, +0160,GPUREG_LIGHT2_SPECULAR0,?,PICA_REG_FRAG_LIGHT2_SPECULAR0 +0161,GPUREG_LIGHT2_SPECULAR1,?,PICA_REG_FRAG_LIGHT2_SPECULAR1 +0162,GPUREG_LIGHT2_DIFFUSE,?,PICA_REG_FRAG_LIGHT2_DIFFUSE +0163,GPUREG_LIGHT2_AMBIENT,?,PICA_REG_FRAG_LIGHT2_AMBIENT +0164,GPUREG_LIGHT2_XY,?,PICA_REG_FRAG_LIGHT2_POSITION_XY +0165,GPUREG_LIGHT2_Z,?,PICA_REG_FRAG_LIGHT2_POSITION_Z +0166,GPUREG_LIGHT2_SPOTDIR_XY,?,PICA_REG_FRAG_LIGHT2_SPOT_XY +0167,GPUREG_LIGHT2_SPOTDIR_Z,?,PICA_REG_FRAG_LIGHT2_SPOT_Z +0168,GPUREG_0168,, +0169,GPUREG_LIGHT2_CONFIG,?,PICA_REG_FRAG_LIGHT2_TYPE +016A,GPUREG_LIGHT2_ATTENUATION_BIAS,?,PICA_REG_FRAG_LIGHT2_DIST_ATTN_BIAS +016B,GPUREG_LIGHT2_ATTENUATION_SCALE,?,PICA_REG_FRAG_LIGHT2_DIST_ATTN_SCALE +016C,GPUREG_016C,, +016D,GPUREG_016D,, +016E,GPUREG_016E,, +016F,GPUREG_016F,, +0170,GPUREG_LIGHT3_SPECULAR0,?,PICA_REG_FRAG_LIGHT3_SPECULAR0 +0171,GPUREG_LIGHT3_SPECULAR1,?,PICA_REG_FRAG_LIGHT3_SPECULAR1 +0172,GPUREG_LIGHT3_DIFFUSE,?,PICA_REG_FRAG_LIGHT3_DIFFUSE +0173,GPUREG_LIGHT3_AMBIENT,?,PICA_REG_FRAG_LIGHT3_AMBIENT +0174,GPUREG_LIGHT3_XY,?,PICA_REG_FRAG_LIGHT3_POSITION_XY +0175,GPUREG_LIGHT3_Z,?,PICA_REG_FRAG_LIGHT3_POSITION_Z +0176,GPUREG_LIGHT3_SPOTDIR_XY,?,PICA_REG_FRAG_LIGHT3_SPOT_XY +0177,GPUREG_LIGHT3_SPOTDIR_Z,?,PICA_REG_FRAG_LIGHT3_SPOT_Z +0178,GPUREG_0178,, +0179,GPUREG_LIGHT3_CONFIG,?,PICA_REG_FRAG_LIGHT3_TYPE +017A,GPUREG_LIGHT3_ATTENUATION_BIAS,?,PICA_REG_FRAG_LIGHT3_DIST_ATTN_BIAS +017B,GPUREG_LIGHT3_ATTENUATION_SCALE,?,PICA_REG_FRAG_LIGHT3_DIST_ATTN_SCALE +017C,GPUREG_017C,, +017D,GPUREG_017D,, +017E,GPUREG_017E,, +017F,GPUREG_017F,, +0180,GPUREG_LIGHT4_SPECULAR0,?,PICA_REG_FRAG_LIGHT4_SPECULAR0 +0181,GPUREG_LIGHT4_SPECULAR1,?,PICA_REG_FRAG_LIGHT4_SPECULAR1 +0182,GPUREG_LIGHT4_DIFFUSE,?,PICA_REG_FRAG_LIGHT4_DIFFUSE +0183,GPUREG_LIGHT4_AMBIENT,?,PICA_REG_FRAG_LIGHT4_AMBIENT +0184,GPUREG_LIGHT4_XY,?,PICA_REG_FRAG_LIGHT4_POSITION_XY +0185,GPUREG_LIGHT4_Z,?,PICA_REG_FRAG_LIGHT4_POSITION_Z +0186,GPUREG_LIGHT4_SPOTDIR_XY,?,PICA_REG_FRAG_LIGHT4_SPOT_XY +0187,GPUREG_LIGHT4_SPOTDIR_Z,?,PICA_REG_FRAG_LIGHT4_SPOT_Z +0188,GPUREG_0188,, +0189,GPUREG_LIGHT4_CONFIG,?,PICA_REG_FRAG_LIGHT4_TYPE +018A,GPUREG_LIGHT4_ATTENUATION_BIAS,?,PICA_REG_FRAG_LIGHT4_DIST_ATTN_BIAS +018B,GPUREG_LIGHT4_ATTENUATION_SCALE,?,PICA_REG_FRAG_LIGHT4_DIST_ATTN_SCALE +018C,GPUREG_018C,, +018D,GPUREG_018D,, +018E,GPUREG_018E,, +018F,GPUREG_018F,, +0190,GPUREG_LIGHT5_SPECULAR0,?,PICA_REG_FRAG_LIGHT5_SPECULAR0 +0191,GPUREG_LIGHT5_SPECULAR1,?,PICA_REG_FRAG_LIGHT5_SPECULAR1 +0192,GPUREG_LIGHT5_DIFFUSE,?,PICA_REG_FRAG_LIGHT5_DIFFUSE +0193,GPUREG_LIGHT5_AMBIENT,?,PICA_REG_FRAG_LIGHT5_AMBIENT +0194,GPUREG_LIGHT5_XY,?,PICA_REG_FRAG_LIGHT5_POSITION_XY +0195,GPUREG_LIGHT5_Z,?,PICA_REG_FRAG_LIGHT5_POSITION_Z +0196,GPUREG_LIGHT5_SPOTDIR_XY,?,PICA_REG_FRAG_LIGHT5_SPOT_XY +0197,GPUREG_LIGHT5_SPOTDIR_Z,?,PICA_REG_FRAG_LIGHT5_SPOT_Z +0198,GPUREG_0198,, +0199,GPUREG_LIGHT5_CONFIG,?,PICA_REG_FRAG_LIGHT5_TYPE +019A,GPUREG_LIGHT5_ATTENUATION_BIAS,,PICA_REG_FRAG_LIGHT5_DIST_ATTN_BIAS +019B,GPUREG_LIGHT5_ATTENUATION_SCALE,,PICA_REG_FRAG_LIGHT5_DIST_ATTN_SCALE +019C,GPUREG_019C,, +019D,GPUREG_019D,, +019E,GPUREG_019E,, +019F,GPUREG_019F,, +01A0,GPUREG_LIGHT6_SPECULAR0,?,PICA_REG_FRAG_LIGHT6_SPECULAR0 +01A1,GPUREG_LIGHT6_SPECULAR1,?,PICA_REG_FRAG_LIGHT6_SPECULAR1 +01A2,GPUREG_LIGHT6_DIFFUSE,,PICA_REG_FRAG_LIGHT6_DIFFUSE +01A3,GPUREG_LIGHT6_AMBIENT,,PICA_REG_FRAG_LIGHT6_AMBIENT +01A4,GPUREG_LIGHT6_XY,,PICA_REG_FRAG_LIGHT6_POSITION_XY +01A5,GPUREG_LIGHT6_Z,,PICA_REG_FRAG_LIGHT6_POSITION_Z +01A6,GPUREG_LIGHT6_SPOTDIR_XY,?,PICA_REG_FRAG_LIGHT6_SPOT_XY +01A7,GPUREG_LIGHT6_SPOTDIR_Z,?,PICA_REG_FRAG_LIGHT6_SPOT_Z +01A8,GPUREG_01A8,, +01A9,GPUREG_LIGHT6_CONFIG,?,PICA_REG_FRAG_LIGHT6_TYPE +01AA,GPUREG_LIGHT6_ATTENUATION_BIAS,,PICA_REG_FRAG_LIGHT6_DIST_ATTN_BIAS +01AB,GPUREG_LIGHT6_ATTENUATION_SCALE,,PICA_REG_FRAG_LIGHT6_DIST_ATTN_SCALE +01AC,GPUREG_01AC,, +01AD,GPUREG_01AD,, +01AE,GPUREG_01AE,, +01AF,GPUREG_01AF,, +01B0,GPUREG_LIGHT7_SPECULAR0,?,PICA_REG_FRAG_LIGHT7_SPECULAR0 +01B1,GPUREG_LIGHT7_SPECULAR1,?,PICA_REG_FRAG_LIGHT7_SPECULAR1 +01B2,GPUREG_LIGHT7_DIFFUSE,?,PICA_REG_FRAG_LIGHT7_DIFFUSE +01B3,GPUREG_LIGHT7_AMBIENT,?,PICA_REG_FRAG_LIGHT7_AMBIENT +01B4,GPUREG_LIGHT7_XY,?,PICA_REG_FRAG_LIGHT7_POSITION_XY +01B5,GPUREG_LIGHT7_Z,?,PICA_REG_FRAG_LIGHT7_POSITION_Z +01B6,GPUREG_LIGHT7_SPOTDIR_XY,?,PICA_REG_FRAG_LIGHT7_SPOT_XY +01B7,GPUREG_LIGHT7_SPOTDIR_Z,?,PICA_REG_FRAG_LIGHT7_SPOT_Z +01B8,GPUREG_01B8,, +01B9,GPUREG_LIGHT7_CONFIG,?,PICA_REG_FRAG_LIGHT7_TYPE +01BA,GPUREG_LIGHT7_ATTENUATION_BIAS,,PICA_REG_FRAG_LIGHT7_DIST_ATTN_BIAS +01BB,GPUREG_LIGHT7_ATTENUATION_SCALE,,PICA_REG_FRAG_LIGHT7_DIST_ATTN_SCALE +01BC,GPUREG_01BC,, +01BD,GPUREG_01BD,, +01BE,GPUREG_01BE,, +01BF,GPUREG_01BF,, +01C0,GPUREG_LIGHTING_AMBIENT,?,PICA_REG_FRAG_LIGHT_AMBIENT +01C1,GPUREG_01C1,, +01C2,GPUREG_LIGHTING_NUM_LIGHTS,?,PICA_REG_FRAG_LIGHT_SRC_NUM +01C3,GPUREG_LIGHTING_CONFIG0,?,PICA_REG_FRAG_LIGHT_FUNC_MODE0 +01C4,GPUREG_LIGHTING_CONFIG1,?,PICA_REG_FRAG_LIGHT_FUNC_MODE1 +01C5,GPUREG_LIGHTING_LUT_INDEX,?,PICA_REG_FRAG_LIGHT_LUT +01C6,GPUREG_LIGHTING_ENABLE1,?,PICA_REG_FRAG_LIGHT_EN1 +01C7,GPUREG_01C7,, +01C8,GPUREG_LIGHTING_LUT_DATA0,?,PICA_REG_FRAG_LIGHT_LUT_DATA0 +01C9,GPUREG_LIGHTING_LUT_DATA1,?,PICA_REG_FRAG_LIGHT_LUT_DATA1 +01CA,GPUREG_LIGHTING_LUT_DATA2,?,PICA_REG_FRAG_LIGHT_LUT_DATA2 +01CB,GPUREG_LIGHTING_LUT_DATA3,?,PICA_REG_FRAG_LIGHT_LUT_DATA3 +01CC,GPUREG_LIGHTING_LUT_DATA4,?,PICA_REG_FRAG_LIGHT_LUT_DATA4 +01CD,GPUREG_LIGHTING_LUT_DATA5,?,PICA_REG_FRAG_LIGHT_LUT_DATA5 +01CE,GPUREG_LIGHTING_LUT_DATA6,?,PICA_REG_FRAG_LIGHT_LUT_DATA6 +01CF,GPUREG_LIGHTING_LUT_DATA7,?,PICA_REG_FRAG_LIGHT_LUT_DATA7 +01D0,GPUREG_LIGHTING_LUTINPUT_ABS,?,PICA_REG_FRAG_LIGHT_ABSLUTINPUT +01D1,GPUREG_LIGHTING_LUTINPUT_SELECT,?,PICA_REG_FRAG_LIGHT_LUTINPUT +01D2,GPUREG_LIGHTING_LUTINPUT_SCALE,?,PICA_REG_FRAG_LIGHT_LUTSCALE +01D3,GPUREG_01D3,, +01D4,GPUREG_01D4,, +01D5,GPUREG_01D5,, +01D6,GPUREG_01D6,, +01D7,GPUREG_01D7,, +01D8,GPUREG_01D8,, +01D9,GPUREG_LIGHTING_LIGHT_PERMUTATION,?,PICA_REG_FRAG_LIGHT_SRC_EN_ID +01DA,GPUREG_01DA,, +01DB,GPUREG_01DB,, +01DC,GPUREG_01DC,, +01DD,GPUREG_01DD,, +01DE,GPUREG_01DE,, +01DF,GPUREG_01DF,, +01E0,GPUREG_01E0,, +01E1,GPUREG_01E1,, +01E2,GPUREG_01E2,, +01E3,GPUREG_01E3,, +01E4,GPUREG_01E4,, +01E5,GPUREG_01E5,, +01E6,GPUREG_01E6,, +01E7,GPUREG_01E7,, +01E8,GPUREG_01E8,, +01E9,GPUREG_01E9,, +01EA,GPUREG_01EA,, +01EB,GPUREG_01EB,, +01EC,GPUREG_01EC,, +01ED,GPUREG_01ED,, +01EE,GPUREG_01EE,, +01EF,GPUREG_01EF,, +01F0,GPUREG_01F0,, +01F1,GPUREG_01F1,, +01F2,GPUREG_01F2,, +01F3,GPUREG_01F3,, +01F4,GPUREG_01F4,, +01F5,GPUREG_01F5,, +01F6,GPUREG_01F6,, +01F7,GPUREG_01F7,, +01F8,GPUREG_01F8,, +01F9,GPUREG_01F9,, +01FA,GPUREG_01FA,, +01FB,GPUREG_01FB,, +01FC,GPUREG_01FC,, +01FD,GPUREG_01FD,, +01FE,GPUREG_01FE,, +01FF,GPUREG_01FF,, +0200,GPUREG_ATTRIBBUFFERS_LOC,,PICA_REG_VTX_ATTR_ARRAYS_BASE_ADDR +0201,GPUREG_ATTRIBBUFFERS_FORMAT_LOW,,PICA_REG_VTX_ATTR_ARRAYS0 +0202,GPUREG_ATTRIBBUFFERS_FORMAT_HIGH,,PICA_REG_VTX_ATTR_ARRAYS1 +0203,GPUREG_ATTRIBBUFFER0_OFFSET,,PICA_REG_LOAD_ARRAY0_ATTR_OFFSET +0204,GPUREG_ATTRIBBUFFER0_CONFIG1,,PICA_REG_LOAD_ARRAY0_ELEMENT0 +0205,GPUREG_ATTRIBBUFFER0_CONFIG2,,PICA_REG_LOAD_ARRAY0_ELEMENT1 +0206,GPUREG_ATTRIBBUFFER1_OFFSET,, +0207,GPUREG_ATTRIBBUFFER1_CONFIG1,, +0208,GPUREG_ATTRIBBUFFER1_CONFIG2,, +0209,GPUREG_ATTRIBBUFFER2_OFFSET,, +020A,GPUREG_ATTRIBBUFFER2_CONFIG1,, +020B,GPUREG_ATTRIBBUFFER2_CONFIG2,, +020C,GPUREG_ATTRIBBUFFER3_OFFSET,, +020D,GPUREG_ATTRIBBUFFER3_CONFIG1,, +020E,GPUREG_ATTRIBBUFFER3_CONFIG2,, +020F,GPUREG_ATTRIBBUFFER4_OFFSET,, +0210,GPUREG_ATTRIBBUFFER4_CONFIG1,, +0211,GPUREG_ATTRIBBUFFER4_CONFIG2,, +0212,GPUREG_ATTRIBBUFFER5_OFFSET,, +0213,GPUREG_ATTRIBBUFFER5_CONFIG1,, +0214,GPUREG_ATTRIBBUFFER5_CONFIG2,, +0215,GPUREG_ATTRIBBUFFER6_OFFSET,, +0216,GPUREG_ATTRIBBUFFER6_CONFIG1,, +0217,GPUREG_ATTRIBBUFFER6_CONFIG2,, +0218,GPUREG_ATTRIBBUFFER7_OFFSET,, +0219,GPUREG_ATTRIBBUFFER7_CONFIG1,, +021A,GPUREG_ATTRIBBUFFER7_CONFIG2,, +021B,GPUREG_ATTRIBBUFFER8_OFFSET,, +021C,GPUREG_ATTRIBBUFFER8_CONFIG1,, +021D,GPUREG_ATTRIBBUFFER8_CONFIG2,, +021E,GPUREG_ATTRIBBUFFER9_OFFSET,, +021F,GPUREG_ATTRIBBUFFER9_CONFIG1,, +0220,GPUREG_ATTRIBBUFFER9_CONFIG2,, +0221,GPUREG_ATTRIBBUFFER10_OFFSET,, +0222,GPUREG_ATTRIBBUFFER10_CONFIG1,, +0223,GPUREG_ATTRIBBUFFER10_CONFIG2,, +0224,GPUREG_ATTRIBBUFFER11_OFFSET,, +0225,GPUREG_ATTRIBBUFFER11_CONFIG1,, +0226,GPUREG_ATTRIBBUFFER11_CONFIG2,, +0227,GPUREG_INDEXBUFFER_CONFIG,,PICA_REG_INDEX_ARRAY_ADDR_OFFSET +0228,GPUREG_NUMVERTICES,,PICA_REG_DRAW_VERTEX_NUM +0229,GPUREG_GEOSTAGE_CONFIG,?,PICA_REG_DRAW_MODE0 +022A,GPUREG_VERTEX_OFFSET,,PICA_REG_DRAW_VERTEX_OFFSET +022B,GPUREG_022B,, +022C,GPUREG_022C,, +022D,GPUREG_POST_VERTEX_CACHE_NUM,,PICA_REG_POST_VERTEX_CACHE_NUM +022E,GPUREG_DRAWARRAYS,,PICA_REG_START_DRAW_ARRAY +022F,GPUREG_DRAWELEMENTS,,PICA_REG_START_DRAW_ELEMENT +0230,GPUREG_0230,, +0231,GPUREG_VTX_FUNC,?,PICA_REG_VTX_FUNC +0232,GPUREG_FIXEDATTRIB_INDEX,?,PICA_REG_VS_FIXED_ATTR +0233,GPUREG_FIXEDATTRIB_DATA0,?,PICA_REG_VS_FIXED_ATTR_DATA0 +0234,GPUREG_FIXEDATTRIB_DATA1,?,PICA_REG_VS_FIXED_ATTR_DATA1 +0235,GPUREG_FIXEDATTRIB_DATA2,?,PICA_REG_VS_FIXED_ATTR_DATA2 +0236,GPUREG_0236,, +0237,GPUREG_0237,, +0238,GPUREG_CMDBUF_SIZE0,,PICA_REG_COMMAND_BUF_SIZE_CH0 +0239,GPUREG_CMDBUF_SIZE1,,PICA_REG_COMMAND_BUF_SIZE_CH1 +023A,GPUREG_CMDBUF_ADDR0,,PICA_REG_COMMAND_BUF_ADDR_CH0 +023B,GPUREG_CMDBUF_ADDR1,,PICA_REG_COMMAND_BUF_ADDR_CH1 +023C,GPUREG_CMDBUF_JUMP0,,PICA_REG_COMMAND_BUF_KICK_CH0 +023D,GPUREG_CMDBUF_JUMP1,,PICA_REG_COMMAND_BUF_KICK_CH1 +023E,GPUREG_023E,, +023F,GPUREG_023F,, +0240,GPUREG_0240,, +0241,GPUREG_0241,, +0242,GPUREG_VSH_NUM_ATTR,?,PICA_REG_VS_ATTR_NUM1 +0243,GPUREG_0243,, +0244,GPUREG_VSH_COM_MODE,?,PICA_REG_VS_COM_MODE +0245,GPUREG_START_DRAW_FUNC0,?,PICA_REG_START_DRAW_FUNC0 +0246,GPUREG_0246,, +0247,GPUREG_0247,, +0248,GPUREG_0248,, +0249,GPUREG_0249,, +024A,GPUREG_VSH_OUTMAP_TOTAL1,?,PICA_REG_VS_OUT_REG_NUM1 +024B,GPUREG_024B,, +024C,GPUREG_024C,, +024D,GPUREG_024D,, +024E,GPUREG_024E,, +024F,GPUREG_024F,, +0250,GPUREG_0250,, +0251,GPUREG_VSH_OUTMAP_TOTAL2,?,PICA_REG_VS_OUT_REG_NUM2 +0252,GPUREG_GSH_MISC0,?,PICA_REG_GS_MISC_REG0 +0253,GPUREG_GEOSTAGE_CONFIG2,?,PICA_REG_DRAW_MODE1 +0254,GPUREG_GSH_MISC1,?,PICA_REG_GS_MISC_REG1 +0255,GPUREG_0255,, +0256,GPUREG_0256,, +0257,GPUREG_0257,, +0258,GPUREG_0258,, +0259,GPUREG_0259,, +025A,GPUREG_025A,, +025B,GPUREG_025B,, +025C,GPUREG_025C,, +025D,GPUREG_025D,, +025E,GPUREG_PRIMITIVE_CONFIG,?,PICA_REG_GS_OUT_REG_NUM3 / PICA_REG_DRAW_MODE2 / PICA_REG_VS_OUT_REG_NUM3 +025F,GPUREG_RESTART_PRIMITIVE,?,PICA_REG_START_DRAW_FUNC1 +0260,GPUREG_0260,, +0261,GPUREG_0261,, +0262,GPUREG_0262,, +0263,GPUREG_0263,, +0264,GPUREG_0264,, +0265,GPUREG_0265,, +0266,GPUREG_0266,, +0267,GPUREG_0267,, +0268,GPUREG_0268,, +0269,GPUREG_0269,, +026A,GPUREG_026A,, +026B,GPUREG_026B,, +026C,GPUREG_026C,, +026D,GPUREG_026D,, +026E,GPUREG_026E,, +026F,GPUREG_026F,, +0270,GPUREG_0270,, +0271,GPUREG_0271,, +0272,GPUREG_0272,, +0273,GPUREG_0273,, +0274,GPUREG_0274,, +0275,GPUREG_0275,, +0276,GPUREG_0276,, +0277,GPUREG_0277,, +0278,GPUREG_0278,, +0279,GPUREG_0279,, +027A,GPUREG_027A,, +027B,GPUREG_027B,, +027C,GPUREG_027C,, +027D,GPUREG_027D,, +027E,GPUREG_027E,, +027F,GPUREG_027F,, +0280,GPUREG_GSH_BOOLUNIFORM,,PICA_REG_GS_BOOL +0281,GPUREG_GSH_INTUNIFORM_I0,,PICA_REG_GS_INT0 +0282,GPUREG_GSH_INTUNIFORM_I1,,PICA_REG_GS_INT1 +0283,GPUREG_GSH_INTUNIFORM_I2,,PICA_REG_GS_INT2 +0284,GPUREG_GSH_INTUNIFORM_I3,,PICA_REG_GS_INT3 +0285,GPUREG_0285,, +0286,GPUREG_0286,, +0287,GPUREG_0287,, +0288,GPUREG_0288,, +0289,GPUREG_GSH_INPUTBUFFER_CONFIG,,PICA_REG_GS_ATTR_NUM +028A,GPUREG_GSH_ENTRYPOINT,,PICA_REG_GS_START_ADDR +028B,GPUREG_GSH_ATTRIBUTES_PERMUTATION_LOW,,PICA_REG_GS_ATTR_IN_REG_MAP0 +028C,GPUREG_GSH_ATTRIBUTES_PERMUTATION_HIGH,,PICA_REG_GS_ATTR_IN_REG_MAP1 +028D,GPUREG_GSH_OUTMAP_MASK,,PICA_REG_GS_OUT_REG_MASK +028E,GPUREG_028E,, +028F,GPUREG_GSH_CODETRANSFER_END,,PICA_REG_GS_PROG_RENEWAL_END +0290,GPUREG_GSH_FLOATUNIFORM_INDEX,,PICA_REG_GS_FLOAT_ADDR +0291,GPUREG_GSH_FLOATUNIFORM_DATA0,,PICA_REG_GS_FLOAT_DATA0 +0292,GPUREG_GSH_FLOATUNIFORM_DATA1,,PICA_REG_GS_FLOAT_DATA1 +0293,GPUREG_GSH_FLOATUNIFORM_DATA2,,PICA_REG_GS_FLOAT_DATA2 +0294,GPUREG_GSH_FLOATUNIFORM_DATA3,,PICA_REG_GS_FLOAT_DATA3 +0295,GPUREG_GSH_FLOATUNIFORM_DATA4,,PICA_REG_GS_FLOAT_DATA4 +0296,GPUREG_GSH_FLOATUNIFORM_DATA5,,PICA_REG_GS_FLOAT_DATA5 +0297,GPUREG_GSH_FLOATUNIFORM_DATA6,,PICA_REG_GS_FLOAT_DATA6 +0298,GPUREG_GSH_FLOATUNIFORM_DATA7,,PICA_REG_GS_FLOAT_DATA7 +0299,GPUREG_0299,, +029A,GPUREG_029A,, +029B,GPUREG_GSH_CODETRANSFER_INDEX,?,PICA_REG_GS_PROG_ADDR +029C,GPUREG_GSH_CODETRANSFER_DATA0,,PICA_REG_GS_PROG_DATA0 +029D,GPUREG_GSH_CODETRANSFER_DATA1,,PICA_REG_GS_PROG_DATA1 +029E,GPUREG_GSH_CODETRANSFER_DATA2,,PICA_REG_GS_PROG_DATA2 +029F,GPUREG_GSH_CODETRANSFER_DATA3,,PICA_REG_GS_PROG_DATA3 +02A0,GPUREG_GSH_CODETRANSFER_DATA4,,PICA_REG_GS_PROG_DATA4 +02A1,GPUREG_GSH_CODETRANSFER_DATA5,,PICA_REG_GS_PROG_DATA5 +02A2,GPUREG_GSH_CODETRANSFER_DATA6,,PICA_REG_GS_PROG_DATA6 +02A3,GPUREG_GSH_CODETRANSFER_DATA7,,PICA_REG_GS_PROG_DATA7 +02A4,GPUREG_02A4,, +02A5,GPUREG_GSH_OPDESCS_INDEX,,PICA_REG_GS_PROG_SWIZZLE_ADDR +02A6,GPUREG_GSH_OPDESCS_DATA0,,PICA_REG_GS_PROG_SWIZZLE_DATA0 +02A7,GPUREG_GSH_OPDESCS_DATA1,,PICA_REG_GS_PROG_SWIZZLE_DATA1 +02A8,GPUREG_GSH_OPDESCS_DATA2,,PICA_REG_GS_PROG_SWIZZLE_DATA2 +02A9,GPUREG_GSH_OPDESCS_DATA3,,PICA_REG_GS_PROG_SWIZZLE_DATA3 +02AA,GPUREG_GSH_OPDESCS_DATA4,,PICA_REG_GS_PROG_SWIZZLE_DATA4 +02AB,GPUREG_GSH_OPDESCS_DATA5,,PICA_REG_GS_PROG_SWIZZLE_DATA5 +02AC,GPUREG_GSH_OPDESCS_DATA6,,PICA_REG_GS_PROG_SWIZZLE_DATA6 +02AD,GPUREG_GSH_OPDESCS_DATA7,,PICA_REG_GS_PROG_SWIZZLE_DATA7 +02AE,GPUREG_02AE,, +02AF,GPUREG_02AF,, +02B0,GPUREG_VSH_BOOLUNIFORM,,PICA_REG_VS_BOOL +02B1,GPUREG_VSH_INTUNIFORM_I0,,PICA_REG_VS_INT0 +02B2,GPUREG_VSH_INTUNIFORM_I1,,PICA_REG_VS_INT1 +02B3,GPUREG_VSH_INTUNIFORM_I2,,PICA_REG_VS_INT2 +02B4,GPUREG_VSH_INTUNIFORM_I3,,PICA_REG_VS_INT3 +02B5,GPUREG_02B5,, +02B6,GPUREG_02B6,, +02B7,GPUREG_02B7,, +02B8,GPUREG_02B8,, +02B9,GPUREG_VSH_INPUTBUFFER_CONFIG,,PICA_REG_VS_ATTR_NUM0 +02BA,GPUREG_VSH_ENTRYPOINT,,PICA_REG_VS_START_ADDR +02BB,GPUREG_VSH_ATTRIBUTES_PERMUTATION_LOW,,PICA_REG_VS_ATTR_IN_REG_MAP0 +02BC,GPUREG_VSH_ATTRIBUTES_PERMUTATION_HIGH,,PICA_REG_VS_ATTR_IN_REG_MAP1 +02BD,GPUREG_VSH_OUTMAP_MASK,,PICA_REG_VS_OUT_REG_MASK +02BE,GPUREG_02BE,, +02BF,GPUREG_VSH_CODETRANSFER_END,,PICA_REG_VS_PROG_RENEWAL_END +02C0,GPUREG_VSH_FLOATUNIFORM_INDEX,,PICA_REG_VS_FLOAT_ADDR +02C1,GPUREG_VSH_FLOATUNIFORM_DATA0,,PICA_REG_VS_FLOAT_DATA0 +02C2,GPUREG_VSH_FLOATUNIFORM_DATA1,,PICA_REG_VS_FLOAT_DATA1 +02C3,GPUREG_VSH_FLOATUNIFORM_DATA2,,PICA_REG_VS_FLOAT_DATA2 +02C4,GPUREG_VSH_FLOATUNIFORM_DATA3,,PICA_REG_VS_FLOAT_DATA3 +02C5,GPUREG_VSH_FLOATUNIFORM_DATA4,,PICA_REG_VS_FLOAT_DATA4 +02C6,GPUREG_VSH_FLOATUNIFORM_DATA5,,PICA_REG_VS_FLOAT_DATA5 +02C7,GPUREG_VSH_FLOATUNIFORM_DATA6,,PICA_REG_VS_FLOAT_DATA6 +02C8,GPUREG_VSH_FLOATUNIFORM_DATA7,,PICA_REG_VS_FLOAT_DATA7 +02C9,GPUREG_02C9,, +02CA,GPUREG_02CA,, +02CB,GPUREG_VSH_CODETRANSFER_INDEX,?,PICA_REG_VS_PROG_ADDR +02CC,GPUREG_VSH_CODETRANSFER_DATA0,,PICA_REG_VS_PROG_DATA0 +02CD,GPUREG_VSH_CODETRANSFER_DATA1,,PICA_REG_VS_PROG_DATA1 +02CE,GPUREG_VSH_CODETRANSFER_DATA2,,PICA_REG_VS_PROG_DATA2 +02CF,GPUREG_VSH_CODETRANSFER_DATA3,,PICA_REG_VS_PROG_DATA3 +02D0,GPUREG_VSH_CODETRANSFER_DATA4,,PICA_REG_VS_PROG_DATA4 +02D1,GPUREG_VSH_CODETRANSFER_DATA5,,PICA_REG_VS_PROG_DATA5 +02D2,GPUREG_VSH_CODETRANSFER_DATA6,,PICA_REG_VS_PROG_DATA6 +02D3,GPUREG_VSH_CODETRANSFER_DATA7,,PICA_REG_VS_PROG_DATA7 +02D4,GPUREG_02D4,, +02D5,GPUREG_VSH_OPDESCS_INDEX,?,PICA_REG_VS_PROG_SWIZZLE_ADDR +02D6,GPUREG_VSH_OPDESCS_DATA0,,PICA_REG_VS_PROG_SWIZZLE_DATA0 +02D7,GPUREG_VSH_OPDESCS_DATA1,,PICA_REG_VS_PROG_SWIZZLE_DATA1 +02D8,GPUREG_VSH_OPDESCS_DATA2,,PICA_REG_VS_PROG_SWIZZLE_DATA2 +02D9,GPUREG_VSH_OPDESCS_DATA3,,PICA_REG_VS_PROG_SWIZZLE_DATA3 +02DA,GPUREG_VSH_OPDESCS_DATA4,,PICA_REG_VS_PROG_SWIZZLE_DATA4 +02DB,GPUREG_VSH_OPDESCS_DATA5,,PICA_REG_VS_PROG_SWIZZLE_DATA5 +02DC,GPUREG_VSH_OPDESCS_DATA6,,PICA_REG_VS_PROG_SWIZZLE_DATA6 +02DD,GPUREG_VSH_OPDESCS_DATA7,,PICA_REG_VS_PROG_SWIZZLE_DATA7 +02DE,GPUREG_02DE,, +02DF,GPUREG_02DF,, +02E0,GPUREG_02E0,, +02E1,GPUREG_02E1,, +02E2,GPUREG_02E2,, +02E3,GPUREG_02E3,, +02E4,GPUREG_02E4,, +02E5,GPUREG_02E5,, +02E6,GPUREG_02E6,, +02E7,GPUREG_02E7,, +02E8,GPUREG_02E8,, +02E9,GPUREG_02E9,, +02EA,GPUREG_02EA,, +02EB,GPUREG_02EB,, +02EC,GPUREG_02EC,, +02ED,GPUREG_02ED,, +02EE,GPUREG_02EE,, +02EF,GPUREG_02EF,, +02F0,GPUREG_02F0,, +02F1,GPUREG_02F1,, +02F2,GPUREG_02F2,, +02F3,GPUREG_02F3,, +02F4,GPUREG_02F4,, +02F5,GPUREG_02F5,, +02F6,GPUREG_02F6,, +02F7,GPUREG_02F7,, +02F8,GPUREG_02F8,, +02F9,GPUREG_02F9,, +02FA,GPUREG_02FA,, +02FB,GPUREG_02FB,, +02FC,GPUREG_02FC,, +02FD,GPUREG_02FD,, +02FE,GPUREG_02FE,, +02FF,GPUREG_02FF,, diff --git a/tools/cmdlist/parse.js b/tools/cmdlist/parse.js index 1588643..3730978 100644 --- a/tools/cmdlist/parse.js +++ b/tools/cmdlist/parse.js @@ -1,28 +1,208 @@ -function *read_one_command( words ) -{ - let pos = 0; - while( pos < words.length ) - { - let header = words[pos+1]; - let [reg, size] = read_header(header); - let param = [words[0]] - - let idx = pos+2; - while( size-- > 0 ) param.push( words[idx++] ); - pos += 2 + ( (size%2) ? size+1 : size ); - yield {reg, param} - } -} - -function *parse( bytes ) -{ - const words = new Uint32Array( bytes ); - let output = []; - while( 1 ){ - let command = yield read_one_command( words ); - if( command == null ) break; - else output.push( command ); - } - return output; -} - +const fs = require("fs") + +function read_header( n ) +{ + return [n&0xffff, (n>>20)&0xff]; +} + +function *read_one_command( words ) +{ + let pos = 0; + while( pos < words.length ) + { + let header = words[pos+1]; + let [reg, size] = read_header(header); + let param = [words[pos]] + + let idx = pos+2, loc = pos; + pos += 2 + ( (size%2) ? size+1 : size ); + while( size-- > 0 ) param.push( words[idx++] ); + yield {reg, param, loc} + } +} + +function parse( bytes ) +{ + const words = new Uint32Array( bytes ); + let output = []; + let iter = read_one_command( words ); + while( 1 ){ + let state = iter.next(); + if( state.done ) break; + else output.push( state.value ); + } + return output; +} + +const list1 = [ + 0x01, 0x00, 0x00, 0x00, 0x10, 0x01, 0x0F, 0x00, 0x00, 0x00, 0x06, 0x03, + 0x1C, 0x01, 0x2F, 0x80, 0x00, 0x00, 0x03, 0x03, 0xF0, 0xF0, 0x18, 0x01, + 0xF0, 0xF0, 0x18, 0x01, 0x6E, 0x00, 0x0F, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x16, 0x01, 0x0F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x17, 0x01, 0x0F, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1B, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x00, 0x00, + 0x12, 0x01, 0x3F, 0x80, 0x0F, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x45, 0x00, + 0x41, 0x00, 0x3F, 0x80, 0x10, 0x11, 0x11, 0x38, 0x00, 0x90, 0x46, 0x00, + 0x14, 0xAE, 0x47, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x68, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x00, 0x2F, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x29, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x02, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x44, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xCB, 0x02, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xCC, 0x02, 0x7F, 0x00, + 0x01, 0xF0, 0x07, 0x4E, 0x02, 0x08, 0x02, 0x08, 0x03, 0x18, 0x02, 0x08, + 0x04, 0x28, 0x02, 0x08, 0x05, 0x38, 0x02, 0x08, 0x06, 0x10, 0x20, 0x4C, + 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xBF, 0x02, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD5, 0x02, 0x0F, 0x00, + 0x6E, 0x03, 0x00, 0x00, 0xD6, 0x02, 0x6F, 0x00, 0xA1, 0x0A, 0x00, 0x00, + 0x68, 0xC3, 0x06, 0x00, 0x64, 0xC3, 0x06, 0x00, 0x62, 0xC3, 0x06, 0x00, + 0x61, 0xC3, 0x06, 0x00, 0x6F, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x7F, + 0xBA, 0x02, 0x0F, 0x00, 0x03, 0x00, 0x00, 0x00, 0xBD, 0x02, 0x0F, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x4A, 0x02, 0x0F, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x51, 0x02, 0x0F, 0x00, 0x01, 0x00, 0x00, 0x00, 0x5E, 0x02, 0x01, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x4F, 0x00, 0x7F, 0x80, 0x00, 0x01, 0x02, 0x03, + 0x0C, 0x0D, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, + 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x64, 0x00, 0x0F, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x6F, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x29, 0x02, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x02, 0x0F, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x54, 0x02, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xA0, + 0x89, 0x02, 0x0F, 0x00, 0x7B, 0x00, 0x00, 0x00, 0x01, 0x02, 0x1F, 0x80, + 0x00, 0x00, 0xFC, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0xA0, + 0xB9, 0x02, 0x0B, 0x00, 0x01, 0x00, 0x00, 0x00, 0x42, 0x02, 0x0F, 0x00, + 0x10, 0x00, 0x00, 0x00, 0xBB, 0x02, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x6D, 0x00, 0x0F, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x40, 0x00, 0x0F, 0x00, 0x00, 0x00, 0xBF, 0x00, + 0x4D, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x04, 0x01, 0x3F, 0x80, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x26, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x01, 0x0F, 0x00, 0x00, 0x00, 0x76, 0x76, 0x01, 0x01, 0x0F, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x0F, 0x00, 0x00, 0x01, 0xE4, 0x00, + 0x00, 0x01, 0x07, 0x00, 0x00, 0x3C, 0x00, 0x80, 0x30, 0x01, 0x0F, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x62, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x01, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x6A, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x81, 0x00, 0x4F, 0x80, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, // Last 4 bytes: GPUREG_TEXUNIT0_PARAM. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x03, 0x01, 0x00, 0x00, 0x00, // Last 4 bytes: GPUREG_TEXUNIT0_TYPE. + 0x8E, 0x00, 0x0F, 0x00, 0x01, 0x10, 0x01, 0x00, 0x80, 0x00, 0x0B, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x80, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x8B, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xE1, 0x00, 0x0F, 0x00, 0x03, 0x00, 0x03, 0x00, 0xC0, 0x00, 0x4F, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0xC8, 0x00, 0x4F, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0xD0, 0x00, 0x4F, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0xD8, 0x00, 0x4F, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0xF0, 0x00, 0x4F, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0xF8, 0x00, 0x4F, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, 0xC0, 0x02, 0x3F, 0x80, + 0xBF, 0x00, 0x00, 0x3E, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x02, 0x0F, 0x00, + 0x00, 0x00, 0x80, 0xBF, 0xC1, 0x02, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x88, 0x88, 0x08, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xD7, 0xA3, 0xBB, + 0x00, 0x00, 0x80, 0xBF, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0x7F, 0xB0, 0x02, 0x0F, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x5E, 0x02, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x5F, 0x02, 0x0F, 0x00, + 0x00, 0x00, 0x00, 0x80, 0x27, 0x02, 0x0F, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x53, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x02, 0x01, 0x00, + 0x0F, 0x00, 0x00, 0x00, 0x32, 0x02, 0x0F, 0x00, 0x3E, 0x00, 0x00, 0x3F, + 0x33, 0x02, 0x2F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x43, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x33, 0x02, 0x2F, 0x80, 0x10, 0x3E, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x3F, 0x33, 0x02, 0x2F, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x33, 0x02, 0x2F, 0x80, 0x10, 0x3E, 0x00, 0x00, 0x00, 0x68, 0x3E, 0x00, + 0x3E, 0x00, 0x00, 0x3F, 0x33, 0x02, 0x2F, 0x80, 0xE0, 0x46, 0x00, 0x00, + 0x00, 0x40, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x02, 0x2F, 0x80, + 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x3F, + 0x33, 0x02, 0x2F, 0x80, 0xE0, 0x46, 0x00, 0x00, 0x00, 0x7C, 0x47, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x33, 0x02, 0x2F, 0x80, 0x00, 0x3F, 0x00, 0x00, + 0x00, 0x68, 0x3E, 0x00, 0x01, 0x00, 0x00, 0x00, 0x45, 0x02, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x53, 0x02, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x31, 0x02, 0x0F, 0x00, 0x01, 0x00, 0x00, 0x00, 0x11, 0x01, 0x0F, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x10, 0x01, 0x0F, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x0F, 0x00, 0x78, 0x56, 0x34, 0x12, 0x10, 0x00, 0x0F, 0x00, + 0x78, 0x56, 0x34, 0x12, 0x10, 0x00, 0x0F, 0x00 +]; + +const list2 = [ + 0x01, 0x00, 0x00, 0x00, 0x10, 0x01, 0x0F, 0x00, 0x00, 0x00, 0x06, 0x03, + 0x1C, 0x01, 0x2F, 0x80, 0x00, 0x00, 0x03, 0x03, 0xF0, 0xF0, 0x18, 0x01, + 0xF0, 0xF0, 0x18, 0x01, 0x6E, 0x00, 0x0F, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x16, 0x01, 0x0F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x17, 0x01, 0x0F, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1B, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x00, 0x00, + 0x12, 0x01, 0x3F, 0x80, 0x0F, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x45, 0x00, + 0x41, 0x00, 0x3F, 0x80, 0x10, 0x11, 0x11, 0x38, 0x00, 0x90, 0x46, 0x00, + 0x14, 0xAE, 0x47, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x68, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x00, 0x2F, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0xC0, 0x02, 0x0F, 0x00, 0x00, 0x00, 0x80, 0xBF, 0xC1, 0x02, 0xFF, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x08, 0x3C, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0A, 0xD7, 0xA3, 0xBB, 0x00, 0x00, 0x80, 0xBF, 0x00, 0x00, 0x80, 0x3F, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x5E, 0x02, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x5F, 0x02, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x80, + 0x27, 0x02, 0x0F, 0x00, 0x01, 0x00, 0x00, 0x00, 0x53, 0x02, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x45, 0x02, 0x01, 0x00, 0x0F, 0x00, 0x00, 0x00, + 0x32, 0x02, 0x0F, 0x00, 0x3E, 0x00, 0x00, 0x3F, 0x33, 0x02, 0x2F, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x33, 0x02, 0x2F, 0x80, 0x10, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3E, 0x00, 0x00, 0x3F, 0x33, 0x02, 0x2F, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x7C, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x02, 0x2F, 0x80, + 0x10, 0x3E, 0x00, 0x00, 0x00, 0x68, 0x3E, 0x00, 0x3E, 0x00, 0x00, 0x3F, + 0x33, 0x02, 0x2F, 0x80, 0xE0, 0x46, 0x00, 0x00, 0x00, 0x40, 0x43, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x33, 0x02, 0x2F, 0x80, 0x00, 0x3F, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x3F, 0x33, 0x02, 0x2F, 0x80, + 0xE0, 0x46, 0x00, 0x00, 0x00, 0x7C, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x33, 0x02, 0x2F, 0x80, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x68, 0x3E, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x45, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x53, 0x02, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x31, 0x02, 0x0F, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x11, 0x01, 0x0F, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x10, 0x01, 0x0F, 0x00, 0x01, 0x00, 0x00, 0x00, 0x63, 0x00, 0x0F, 0x00, + 0x78, 0x56, 0x34, 0x12, 0x10, 0x00, 0x0F, 0x00, 0x78, 0x56, 0x34, 0x12, + 0x10, 0x00, 0x0F, 0x00 +]; + +// patching +/*let gbaGpuInitList = list1; +gbaGpuInitList[958] = 0x45; +gbaGpuInitList[968] = 0x60; +gbaGpuInitList[989] = 0x40; +gbaGpuInitList[1000] = 0x60; +//*((u32*)&gbaGpuInitList[1004]) = 0x003DE000u; +gbaGpuInitList[1016] = 0x40; +gbaGpuInitList[1022] = 0x45; +gbaGpuInitList[1048] = 0x40; +gbaGpuInitList[1053] = 0x40; +//*((u32*)&gbaGpuInitList[1068]) = 0x003DE000u; +list1[1004] = 0x00; +list1[1005] = 0xe0; +list1[1006] = 0x3d; +list1[1007] = 0x00; +list1[1068] = 0x00; +list1[1069] = 0xe0; +list1[1070] = 0x3d; +list1[1071] = 0x00;*/ + +const target = list2; + +let names = fs.readFileSync("commands.csv").toString("utf-8"); +let map = names.split("\n").map( l => l.split(",") ).filter( n=>n.length>2 ).reduce( (r,v) => ({...r, [parseInt(v[0], 16)]: v[1]}), {} ); +let arr = parse( Uint8Array.from(target).buffer ); +arr.forEach( (cmd, ord) => { + let start = cmd.loc*4; + let end = ord+1==arr.length ? target.length : arr[ord+1].loc*4; + console.log( "//", ord+1, `@${start.toString().padStart(4,0)}`, map[cmd.reg], cmd.param.map(n=>n.toString(16)).join(",") ); + let sub = target.slice( start, end ); + console.log( sub.map((n,i)=>`0x${n.toString(16).padStart(2,0)}, ${(i+1)%4==0?"\n":""}`).join("") ); +}) diff --git a/tools/cmdlist/read.js b/tools/cmdlist/read.js new file mode 100644 index 0000000..aaeaab6 --- /dev/null +++ b/tools/cmdlist/read.js @@ -0,0 +1,33 @@ +const {readFileSync} = require("fs"); + +const readf24 = c => { + if( c == 0 ) return 0; + + const sign = c&(1<<23); + const e = (c>>16)&0x7f; + const r = c&0xffff; + const p = e - 0b111111; + + let u = 1, t = 0x8000, k=2; + while( t > 0 ){ + let x = t&r; + if( x ) u+=1/k; + t = t>>1; + k = k * 2; + } + + let res = u*Math.pow(2, p); + return sign ? -res : res; +} + +const text = readFileSync("temp").toString("utf-8"); +const arr = text.split("\n").filter( s=>s.includes(",") ) +const lines = arr.map( n => n.split(",").map(d=>parseInt(d, 16) ) ); +for( let param of lines ){ + let a = param[0] >> 8; + let b = (param[0]&0xff)<<16 | param[1]>>16; + let c = (param[1]&0xffff)<<8 | param[2]>>24; + let d = param[2] & 0xffffff; +// console.log( a.toString(16), b.toString(16), c.toString(16), d.toString(16) ); + console.log( readf24(d), readf24(c), readf24(b), readf24(a) ); +}