@@ -1052,6 +1052,70 @@ void ChunkTableClass::List_W3D_CHUNK_PS2_SHADERS(ChunkItem * Item,CListCtrl *Lis
1052
1052
}
1053
1053
}
1054
1054
1055
+ void ChunkTableClass::List_W3D_CHUNK_FX_SHADERS (ChunkItem * Item,CListCtrl *List)
1056
+ {
1057
+ List_Subitems (Item,List);
1058
+ }
1059
+
1060
+ void ChunkTableClass::List_W3D_CHUNK_FX_SHADER (ChunkItem* Item, CListCtrl* List)
1061
+ {
1062
+ List_Subitems (Item, List);
1063
+ }
1064
+
1065
+ void ChunkTableClass::List_W3D_CHUNK_FX_SHADER_INFO (ChunkItem* Item, CListCtrl* List)
1066
+ {
1067
+ uint8 version = *(uint8*)Item->Data ;
1068
+ W3dFXShaderInfoStruct* shaderinfo = (W3dFXShaderInfoStruct*)((uint8*)Item->Data + 1 );
1069
+ int counter = 0 ;
1070
+
1071
+ AddItem (List, counter, " Version" , version);
1072
+ AddItem (List, counter, " ShaderName" , shaderinfo->ShaderName );
1073
+ AddItem (List, counter, " Technique" , shaderinfo->Technique );
1074
+ }
1075
+
1076
+ void ChunkTableClass::List_W3D_CHUNK_FX_SHADER_CONSTANT (ChunkItem* Item, CListCtrl* List)
1077
+ {
1078
+ int counter = 0 ;
1079
+ uint8 *chunkdata = (uint8 *)Item->Data ;
1080
+ uint32 type = *(uint32 *)chunkdata;
1081
+ chunkdata += 4 ;
1082
+ // Includes the null terminator
1083
+ uint32 constantstrlen = *(uint32 *)chunkdata;
1084
+ chunkdata += 4 ;
1085
+ char * constantname = (char *)chunkdata;
1086
+ chunkdata += constantstrlen;
1087
+ AddItem (List, counter, " Type" , type);
1088
+ AddItem (List, counter, " ConstantName" , constantname);
1089
+ if (type == CONSTANT_TYPE_TEXTURE)
1090
+ {
1091
+ // This is hopefully also null-terminated
1092
+ uint32 texturestrlen = *(uint32 *)chunkdata;
1093
+ chunkdata += 4 ;
1094
+ char * texture = (char *)chunkdata;
1095
+ AddItem (List, counter, " Texture" , texture);
1096
+ }
1097
+ else if (type >= CONSTANT_TYPE_FLOAT1 && type <= CONSTANT_TYPE_FLOAT4)
1098
+ {
1099
+ int count = type - 1 ;
1100
+ float * floats = (float *)chunkdata;
1101
+ AddItem (List, counter, " Floats" , floats, count);
1102
+ }
1103
+ else if (type == CONSTANT_TYPE_INT)
1104
+ {
1105
+ uint32 u = *(uint32*)chunkdata;
1106
+ AddItem (List, counter, " Int" , u);
1107
+ }
1108
+ else if (type == CONSTANT_TYPE_BOOL)
1109
+ {
1110
+ uint8 u = *(uint8*)chunkdata;
1111
+ AddItem (List, counter, " Bool" , u);
1112
+ }
1113
+ else
1114
+ {
1115
+ AddItem (List, counter, " Unknown" , " Unknown" );
1116
+ }
1117
+ }
1118
+
1055
1119
void ChunkTableClass::List_W3D_CHUNK_TEXTURES (ChunkItem * Item,CListCtrl *List)
1056
1120
{
1057
1121
List_Subitems (Item,List);
@@ -1183,6 +1247,24 @@ void ChunkTableClass::List_W3D_CHUNK_SCG(ChunkItem * Item,CListCtrl *List)
1183
1247
data++;
1184
1248
}
1185
1249
}
1250
+
1251
+ void ChunkTableClass::List_W3D_CHUNK_FXSHADER_IDS (ChunkItem* Item, CListCtrl* List)
1252
+ {
1253
+ int Counter = 0 ;
1254
+ int counter = 0 ;
1255
+ uint32* data = (uint32*)Item->Data ;
1256
+ void * max = (char *)Item->Data + Item->Length ;
1257
+ char buf[256 ];
1258
+
1259
+ while (data < max) {
1260
+
1261
+ sprintf (buf, " Vertex[%d] FXShader Index" , counter);
1262
+ AddItem (List, Counter, buf, *data);
1263
+
1264
+ counter++;
1265
+ data++;
1266
+ }
1267
+ }
1186
1268
1187
1269
void ChunkTableClass::List_W3D_CHUNK_TEXTURE_STAGE (ChunkItem * Item,CListCtrl *List)
1188
1270
{
@@ -2057,6 +2139,10 @@ ChunkTableClass::ChunkTableClass() {
2057
2139
NewType ( W3D_CHUNK_VERTEX_SHADE_INDICES, " W3D_CHUNK_VERTEX_SHADE_INDICES" ,List_W3D_CHUNK_VERTEX_SHADE_INDICES);
2058
2140
NewType ( W3D_CHUNK_MATERIAL_INFO," W3D_CHUNK_MATERIAL_INFO" ,List_W3D_CHUNK_MATERIAL_INFO);
2059
2141
NewType ( W3D_CHUNK_SHADERS," W3D_CHUNK_SHADERS" ,List_W3D_CHUNK_SHADERS);
2142
+ NewType ( W3D_CHUNK_FX_SHADERS," W3D_CHUNK_FX_SHADERS" ,List_W3D_CHUNK_FX_SHADERS, true );
2143
+ NewType ( W3D_CHUNK_FX_SHADER," W3D_CHUNK_FX_SHADER" ,List_W3D_CHUNK_FX_SHADER, true );
2144
+ NewType ( W3D_CHUNK_FX_SHADER_INFO, " W3D_CHUNK_FX_SHADER_INFO" , List_W3D_CHUNK_FX_SHADER_INFO);
2145
+ NewType ( W3D_CHUNK_FX_SHADER_CONSTANT, " W3D_CHUNK_FX_SHADER_CONSTANT" , List_W3D_CHUNK_FX_SHADER_CONSTANT);
2060
2146
NewType ( W3D_CHUNK_PS2_SHADERS," W3D_CHUNK_PS2_SHADERS" ,List_W3D_CHUNK_PS2_SHADERS);
2061
2147
2062
2148
NewType ( W3D_CHUNK_VERTEX_MATERIALS, " W3D_CHUNK_VERTEX_MATERIALS" ,List_W3D_CHUNK_VERTEX_MATERIALS,true );
@@ -2077,7 +2163,8 @@ ChunkTableClass::ChunkTableClass() {
2077
2163
NewType ( W3D_CHUNK_DCG, " W3D_CHUNK_DCG" , List_W3D_CHUNK_DCG);
2078
2164
NewType ( W3D_CHUNK_DIG, " W3D_CHUNK_DIG" , List_W3D_CHUNK_DIG);
2079
2165
NewType ( W3D_CHUNK_SCG, " W3D_CHUNK_SCG" , List_W3D_CHUNK_SCG);
2080
-
2166
+ NewType ( W3D_CHUNK_FXSHADER_IDS, " W3D_CHUNK_FXSHADER_IDS" , List_W3D_CHUNK_FXSHADER_IDS);
2167
+
2081
2168
NewType ( W3D_CHUNK_TEXTURE_STAGE, " W3D_CHUNK_TEXTURE_STAGE" , List_W3D_CHUNK_TEXTURE_STAGE,true );
2082
2169
NewType ( W3D_CHUNK_TEXTURE_IDS, " W3D_CHUNK_TEXTURE_IDS" , List_W3D_CHUNK_TEXTURE_IDS);
2083
2170
NewType ( W3D_CHUNK_STAGE_TEXCOORDS, " W3D_CHUNK_STAGE_TEXCOORDS" , List_W3D_CHUNK_STAGE_TEXCOORDS);
0 commit comments