Difference between revisions of "Grand Theft Auto: San Andreas"
From xboxdevwiki
(Created page with "{{Game}} See https://github.com/aap/skygfx for a re-implementation of the Xbox graphics features for PC. This game shares some technical aspects with Grand Theft Auto III...") |
|||
| Line 3: | Line 3: | ||
This game shares some technical aspects with [[Grand Theft Auto III]] and [[Grand Theft Auto: Vice City]]. | This game shares some technical aspects with [[Grand Theft Auto III]] and [[Grand Theft Auto: Vice City]]. | ||
| + | |||
| + | At least some parts of the games source code have been leaked into the public. | ||
| + | The source code was illegally offered for sale in the past. | ||
== Reverse engineering by aap == | == Reverse engineering by aap == | ||
Latest revision as of 15:27, 24 May 2017
See https://github.com/aap/skygfx for a re-implementation of the Xbox graphics features for PC.
This game shares some technical aspects with Grand Theft Auto III and Grand Theft Auto: Vice City.
At least some parts of the games source code have been leaked into the public. The source code was illegally offered for sale in the past.
Contents
Reverse engineering by aap
aap has reverse engineered a lot for skygfx. Some of these files might be for Grand Theft Auto III or Grand Theft Auto: Vice City. They come from a folder for all GTA research
Shader used for cars
Shader 1
; c14 0.0 0.5 1.0 2.0 ; c26 specular ; c27 spec, fresnel, 0.6, power dp4 r3.x, v0, c4 dp4 r3.y, v0, c5 dp4 r3.z, v0, c6 add r2.xyz, c12.xyzz, -r3.xyzz dp3 r0.x, v1.xyzz, c4.xyzz dp3 r2.w, r2.xyzz, r2.xyzz +mov oD0.w, c14.z dp3 r0.y, v1.xyzz, c5.xyzz dp3 r0.z, v1.xyzz, c6.xyzz +rsq r1.w, r2.w mov r5.w, c14.w mul r2.xyz, r2.xyzz, r1.w ; r2: normalized view vector dp3 r0.w, r0.xyzz, r0.xyzz add r4.xyz, r2.xyzz, -c13.xyzz mov r11.w, c27.w +rsq r1.w, r0.w dp3 r4.w, r4.xyzz, r4.xyzz mul r0.xyz, r0.xyzz, r1.w ; r0: normalized world normal add r10.xyz, r2.xyzz, -c18.xyzz mul r11.z, c27.w, r5.w +rsq r1.w, r4.w dp3 r4.w, r10.xyzz, r10.xyzz add r9.yzw, r2.yyzx, -c19.yyzx mul r4.xyz, r4.xyzz, r1.w dp3 r4.w, r9.wyzz, r9.wyzz +rsq r1.w, r4.w add r8.xzw, r2.yyzx, -c20.yyzx dp3 r10.w, r4.xyzz, r0.xyzz mul r4.xyz, r10.xyzz, r1.w +rsq r1.x, r4.w dp3 r4.w, r8.wxzz, r8.wxzz add r10.xyz, r2.xyzz, -c21.xyzz max r11.x, r10.w, c14.x +rsq r1.w, r4.w dp3 r10.w, r4.xyzz, r0.xyzz mul r4.xyz, r9.wyzz, r1.x +lit r1.z, r11.xxxw dp3 r4.w, r10.xyzz, r10.xyzz max r11.y, r10.w, c14.x dp3 r11.x, r4.xyzz, r0.xyzz mul r4.xyz, r8.wxzz, r1.w +rsq r1.x, r4.w mul r8.xyz, r1.z, c26.xyzz ; direct light mul r11.w, c27.w, r5.w +lit r1.z, r11.yyyz max r11.y, r11.x, c14.x dp3 r11.x, r4.xyzz, r0.xyzz mul r4.xyz, r10.xyzz, r1.x dp4 r6.y, v0, c0 dp4 r6.z, v0, c1 dp4 r6.x, v0, c2 +dp4 oFog.x, v0, c2 mad r8.xyz, r1.z, c22.xyzz, r8.xyzz ; add extra 1 mul r11.w, c27.w, r5.w +lit r1.z, r11.yyyw max r11.y, r11.x, c14.x +mov oPos.xyz, r6.yzxw dp3 r11.x, r4.xyzz, r0.xyzz dp4 oPos.w, v0, c3 mad r8.xyz, r1.z, c23.xyzz, r8.xyzz ; add extra 2 mul r11.w, c27.w, r5.w +lit r1.z, r11.yyyw max r11.y, r11.x, c14.x +rcc r1.x, r12.w mad r8.xyz, r1.z, c24.xyzz, r8.xyzz ; add extra 3 mul oPos.xyz, r12.xyzz, c-38.xyzz +lit r1.z, r11.yyyw mad oD0.xyz, r1.z, c25.xyzz, r8.xyzz ; add extra 4 mad oPos.xyz, r12.xyzz, r1.x, c-37.xyzz
Shader 2
; v0 vertex ; v1 normal ; v2 tex coord ; c0 c1 c2 c3 worldviewproj matrix ; c4 c5 c6 world matrix ; c8 c9 texture matrix? ; c12 eye position ; c13 direct direction ; c14 0.0 0.5 1.0 2.0 ; c15 ambient ; c16 color ; c17 direct color ; c18 c19 c20 c21 extra directions ; c22 c23 c24 c25 extra colors ; c26 specular ; c27 spec, fresnel, 0.6, power dp3 r0.x, v1.xyzz, c4.xyzz dp3 r0.y, v1.xyzz, c5.xyzz dp3 r0.z, v1.xyzz, c6.xyzz dp4 r3.x, v0, c4 dp3 r0.w, r0.xyzz, r0.xyzz +mov oT0.xy, v2.xyyy dp4 r3.y, v0, c5 dp4 r3.z, v0, c6 +rsq r1.w, r0.w add r2.xyz, c12.xyzz, -r3.xyzz mul r0.xyz, r0.xyzz, r1.w ; r0.xyz: normalized world-normal dp3 r2.w, r2.xyzz, r2.xyzz dp3 r0.w, r0.xyzz, -c13.xyzz dp3 r11.w, r0.xyzz, -c18.xyzz +rsq r1.w, r2.w max r0.w, r0.w, c14.x mul r2.xyz, r2.xyzz, r1.w ; r2: normalized world-view-vector dp3 r7.x, r2.xyzz, r0.xyzz mul r8.xyz, r0.w, c16.xyzz ; direct color max r5.x, r7.x, c14.x mov r11.xyz, c16 +mov oD0.w, c16 max r0.w, r11.w, c14.x dp3 r11.w, r0.xyzz, -c19.xyzz mul r6.x, r7.x, c14.w add r5.x, c14.z, -r5.x mad r8.xyz, c15.xyzz, r11.xyzz, r8.xyzz ; add ambient color mul r6.yzw, r0.w, c22.yyzx max r0.w, r11.w, c14.x dp3 r11.w, r0.xyzz, -c20.xyzz mad r11.xyz, r6.x, r0.xyzz, -r2.xyzz mul r6.x, r5.x, r5.x dp4 r10.y, v0, c0 dp4 r10.z, v0, c1 dp4 r10.x, v0, c2 +dp4 oFog.x, v0, c2 mad r8.xyz, r6.wyzz, c16.xyzz, r8.xyzz ; add extra light 1 mul r6.yzw, r0.w, c23.yyzx +mov oPos.xyz, r10.yzxw max r0.w, r11.w, c14.x dp3 r0.x, r0.xyzz, -c21.xyzz dp3 r11.x, r11.xyzz, c8.xyzz mul r6.x, r6.x, r6.x mov r11.w, c27.y dp4 oPos.w, v0, c3 mad r8.xyz, r6.wyzz, c16.xyzz, r8.xyzz ; add extra light 2 mul r6.yzw, r0.w, c24.yyzx +rcc r1.x, r12.w max r0.w, r0.x, c14.x dp3 r11.y, r11.xyzz, c9.xyzz mul r5.x, r5.x, r6.x add r7.x, c14.z, -r11.w mad r8.xyz, r6.wyzz, c16.xyzz, r8.xyzz ; add extra light 3 mul r6.xyz, r0.w, c25.xyzz mul r11.yw, r11.yyyx, c14.y mad r5.x, r7.x, r5.x, c27.y mul oPos.xyz, r12.xyzz, c-38.xyzz mad oD0.xyz, r6.xyzz, c16.xyzz, r8.xyzz ; add extra light 4 add oT1.xy, r11.wyyy, c14.y mul oD1, r5.x, c27.x mad oPos.xyz, r12.xyzz, r1.x, c-37.xyzz
Gloss shader
; v0 vertex pos ; v2 tex coord ; c0-c3 matrix ; c4-c7 world matrix ; c12 eye position ; c13 light direction ; c26 pipeline data... ; c27 0, 0, 0, 8.0 ; c28 0, 0, 1, 1 ; c29 0.5, 0.5, 0.5, 0.5 dp4 r3.x, v0, c4 dp4 r3.y, v0, c5 dp4 r3.z, v0, c6 add r2.xyz, c12.xyzz, -r3.xyzz dp4 r6.x, v0, c0 dp3 r2.w, r2.xyzz, r2.xyzz +mov oT0, v2 dp4 r6.y, v0, c1 dp4 r6.z, v0, c2 +rsq r1.w, r2.w dp4 oPos.w, v0, c3 mul r2.xyz, r2.xyzz, r1.w ; r2: view vector +mov oPos.xyz, r6 mov r5.xyz, c28.xyzz +rcc r1.x, r12.w add r4.xyz, r2.xyzz, c13.xyzz mul oPos.xyz, r12.xyzz, c-38.xyzz dp3 r4.w, r4.xyzz, r4.xyzz +mov oFog.xyz, c26.xyzz mad oD0.xyz, r5.xyzz, c29.xyzz, c29.xyzz rsq r4.w, r4.w mad oPos.xyz, r12.xyzz, r1.x, c-37.xyzz mul r5.xyz, r4.xyzz, r4.w mad oD1.xyz, r5.xyzz, c29.xyzz, c29.xyzz
typedef struct _D3DPixelShaderDef
{
DWORD PSAlphaInputs[8]; // Alpha inputs for each stage
00000000
00000000
00000000
cdc81010
DWORD PSFinalCombinerInputsABCD; // Final combiner inputs
130f0000
DWORD PSFinalCombinerInputsEFG; // Final combiner inputs (continued)
0d081c80
DWORD PSConstant0[8]; // C0 for each stage
DWORD PSConstant1[8]; // C1 for each stage
DWORD PSAlphaOutputs[8]; // Alpha output for each stage
00000000
00000000
00000000
000000c0
DWORD PSRGBInputs[8]; // RGB inputs for each stage
44450000
PS_REGISTER_V0
PS_INPUTMAPPING_EXPAND_NORMAL
PS_REGISTER_V1
PS_INPUTMAPPING_EXPAND_NORMAL
cdcd0000
PS_REGISTER_R1
PS_INPUTMAPPING_SIGNED_IDENTITY
PS_REGISTER_R1
PS_INPUTMAPPING_SIGNED_IDENTITY
cdcd0000
cdcd0000
DWORD PSCompareMode; // Compare modes for clipplane texture mode
DWORD PSFinalCombinerConstant0; // C0 in final combiner
DWORD PSFinalCombinerConstant1; // C1 in final combiner
DWORD PSRGBOutputs[8]; // Stage 0 RGB outputs
000020d0
PS_REGISTER_R1
PS_COMBINEROUTPUT_AB_DOT_PRODUCT
PS_REGISTER_ZERO
000000d0
PS_REGISTER_R1
PS_COMBINEROUTPUT_AB_MULTIPLY
000000d0
000000d0
DWORD PSCombinerCount; // Active combiner count (Stages 0-7)
00011104
4
PS_COMBINERCOUNT_MUX_MSB
PS_COMBINERCOUNT_UNIQUE_C0
PS_COMBINERCOUNT_UNIQUE_C1
DWORD PSTextureModes; // Texture addressing modes
00000001
PS_TEXTUREMODES_PROJECT2D
DWORD PSDotMapping; // Input mapping for dot product modes
DWORD PSInputTexture; // Texture source for some texture modes
DWORD PSC0Mapping; // Mapping of c0 regs to D3D constants
DWORD PSC1Mapping; // Mapping of c1 regs to D3D constants
DWORD PSFinalCombinerConstants; // Final combiner constant mapping
} D3DPIXELSHADERDEF;
San Andreas Car Shaders
These shaders are picked depending on the following flags:
1 default 2 refl && !spec && lit 3 env && !lit env && !spec && lit 4 spec && lit 5 refl && spec && lit 6 env && spec && lit
Shader 1
; c0-3 matrix ; c4-6 world/normal matrix ; c13 direct color ; c14 0.7 0.7 0.7 1.0 ; c15 ambient color ; c16 light direction ; c20 diff mat ; c21 amb mat ; c22 spec mat ; c32 0, 1, 0.5, 2 ; c33 0.3 0.7 0.1 0.01 dp4 oPos.x, v0, c0 dp4 oPos.y, v0, c1 dp4 oPos.z, v0, c2 dp4 oPos.w, v0, c3 dp3 r0.y, v1, c5 dp3 r0.x, v1, c4 +mov oFog.x, r12.w dp3 r0.z, v1, c6 mov r0.w, c20 +mov oT0, v2 mov r2, c15 dp3 r0.xyz, r0, -c16 mul oPos.xyz, r12, c-38 +rcc r1.x, r12.w max r0.xyz, r0.xyzz, c32.x min r0.xyz, r0.xyzz, c32.y mul r0.xyz, r0, c13 mul r0.xyz, r0, c20 mad oD0, r2, c21, r0 mad oPos.xyz, r12, r1.x, c-37
Shader 2
; v0 position ; v1 normal ; v2 tex coord ; c0-3 matrix ; c4-6 world/normal matrix ; c12 eye ; c13 direct color ; c14 0.7 0.7 0.7 1.0 ; c15 ambient color ; c16 light direction ; c20 diff mat ; c21 amb mat ; c22 spec mat ; c32 0, 1, 0.5, 2 ; c33 0.3 0.7 0.1 0.01 dp3 r0.x, v1.xyzz, c4.xyzz dp3 r0.y, v1.xyzz, c5.xyzz dp3 r0.z, v1.xyzz, c6.xyzz dp4 oPos.w, v0, c3 dp3 r11.x, r0.xyzz, c8.xyzz +mov oT0, v2 dp3 r11.y, r0.xyzz, c9.xyzz +rcc r1.x, r12.w dp3 r11.z, r0.xyzz, c10.xyzz +mov oFog.x, r12.w dp3 r0.w, r0.xyzz, -c16.xyzz dp3 r11.w, r11.xyzz, r11.xyzz max r0.x, r0.w, c32.x min r0.x, r0.x, c32.y +rsq r1.w, r11.w mov r10.y, c32.y mul r10.zw, r11.yyyx, r1.w dp4 oPos.x, v0, c0 dp4 oPos.y, v0, c1 dp4 oPos.z, v0, c2 mul r0.xyz, r0.x, c13.xyzz mul r0.xyz, r0.xyzz, c20.xyzz mov r0.w, c20.w mov r2, c15 dp3 r11.x, r10.wzyy, c24.xyzz dp3 r11.y, r10.wzyy, c25.xyzz mov r11.z, c32.y mul oPos.xyz, r12.xyzz, c-38.xyzz mad oD0, r2, c21, r0 mov oT1, r11.xyzz mad oPos.xyz, r12.xyzz, r1.x, c-37.xyzz
Shader 3
; v0 position ; v1 normal ; v2 tex coord ; c0-3 matrix ; c4-6 world/normal matrix ; c12 eye ; c13 direct color ; c14 0.7 0.7 0.7 1.0 ; c15 ambient color ; c16 light direction ; c20 diff mat ; c21 amb mat ; c22 spec mat ; c32 0, 1, 0.5, 2 ; c33 0.3 0.7 0.1 0.01 dp3 r0.x, v1.xyzz, c4.xyzz dp3 r0.y, v1.xyzz, c5.xyzz dp3 r0.z, v1.xyzz, c6.xyzz dp4 oPos.w, v0, c3 dp3 r0.w, r0.xyzz, -c16.xyzz +mov oT0, v2 mov r11.xz, v3.xxyy +rcc r1.x, r12.w max r0.x, r0.w, c32.x +mov oFog.x, r12.w mov r11.y, c32.y min r0.x, r0.x, c32.y dp4 oPos.x, v0, c0 dp4 oPos.y, v0, c1 dp4 oPos.z, v0, c2 mul r0.xyz, r0.x, c13.xyzz mul r0.xyz, r0.xyzz, c20.xyzz mov r0.w, c20.w mov r2, c15 dp3 r10.w, r11.xzyy, c24.xyzz dp3 r10.y, r11.xzyy, c25.xyzz mov r10.z, v3.w mul oPos.xyz, r12.xyzz, c-38.xyzz mad oD0, r2, c21, r0 mov oT1, r10.wyzz mad oPos.xyz, r12.xyzz, r1.x, c-37.xyzz
Shader 4
; v0 position ; v1 normal ; v2 tex coord ; c0-3 matrix ; c4-6 world/normal matrix ; c12 eye ; c13 direct color ; c14 0.7 0.7 0.7 1.0 ; c15 ambient color ; c16 light direction ; c20 diff mat ; c21 amb mat ; c22 spec mat ; c32 0, 1, 0.5, 2 ; c33 0.3 0.7 0.1 0.01 dp4 r10.x, v0, c4 dp4 r10.y, v0, c5 dp4 r10.z, v0, c6 dp3 r11.x, v1.xyzz, c4.xyzz add r0.xyz, -r10.xyzz, c12.xyzz dp3 r11.y, v1.xyzz, c5.xyzz dp3 r11.w, r0.xyzz, r0.xyzz +mov oD0.w, c20.w dp3 r11.z, v1.xyzz, c6.xyzz ; r11.xyz world normal dp4 oPos.w, v0, c3 +rsq r1.x, r11.w dp3 r4.x, r11.xyzz, -c16.xyzz ; diffuse factor +mov oT0, v2 mul r0.xyz, r0.xyzz, r1.x ; r0.xyz view vector +rcc r1.y, r12.w mul r4.xyz, r4.x, c13.xyzz +mov oFog.x, r12.w add r2.xyz, r0.xyzz, -c16.xyzz mul r4.xyz, r4.xyzz, c20.xyzz dp3 r11.w, r2.xyzz, r2.xyzz mul r4.xyz, r4.xyzz, c32.z dp4 oPos.x, v0, c0 +rsq r1.x, r11.w dp4 oPos.y, v0, c1 mul r2.xyz, r2.xyzz, r1.x ; r2.xyz spec vector dp3 r3.x, r11.xyzz, r2.xyzz dp4 oPos.z, v0, c2 mul r3.x, r3.x, r3.x mul r3.x, r3.x, r3.x mul r3.x, r3.x, r3.x mul r3.x, r3.x, r3.x mul r3.xyz, r3.x, c14.xyzz mul r3.xyz, r3.xyzz, c22.xyzz mul r3.xyz, r3.xyzz, c32.z add r0.xyz, r4.xyzz, r3.xyzz mov r2.xyz, c15.xyzz mad r0.xyz, r2.xyzz, c21.xyzz, r0.xyzz mul oPos.xyz, r12.xyzz, c-38.xyzz mov oD0.xyz, r0 mad oPos.xyz, r12.xyzz, r1.y, c-37.xyzz
Shader 5
dp3 r11.x, v1.xyzz, c4.xyzz dp3 r11.y, v1.xyzz, c5.xyzz dp3 r11.z, v1.xyzz, c6.xyzz dp4 r10.x, v0, c4 dp4 r10.y, v0, c5 dp4 r10.z, v0, c6 dp3 r4.x, r11.xyzz, -c16.xyzz +mov oT0, v2 add r0.xyz, -r10.xyzz, c12.xyzz dp3 r10.w, r11.xyzz, c8.xyzz dp3 r11.w, r0.xyzz, r0.xyzz +mov oD0.w, c20.w dp3 r10.y, r11.xyzz, c9.xyzz mul r4.xyz, r4.x, c13.xyzz +rsq r1.x, r11.w dp3 r10.z, r11.xyzz, c10.xyzz mul r0.xyz, r0.xyzz, r1.x add r2.xyz, r0.xyzz, -c16.xyzz dp3 r11.w, r10.wyzz, r10.wyzz dp3 r10.x, r2.xyzz, r2.xyzz mul r4.xyz, r4.xyzz, c20.xyzz +rsq r1.w, r11.w dp4 oPos.w, v0, c3 +rsq r1.x, r10.x mul r4.xyz, r4.xyzz, c32.z mul r2.xyz, r2.xyzz, r1.x +rcc r1.y, r12.w mul r10.zw, r10.yyyw, r1.w +mov oFog.x, r12.w dp3 r3.x, r11.xyzz, r2.xyzz mov r10.y, c32.y mul r3.x, r3.x, r3.x mul r3.x, r3.x, r3.x mul r3.x, r3.x, r3.x mul r3.x, r3.x, r3.x mul r3.xyz, r3.x, c14.xyzz mul r3.xyz, r3.xyzz, c22.xyzz mul r3.xyz, r3.xyzz, c32.z dp4 oPos.x, v0, c0 dp4 oPos.y, v0, c1 dp4 oPos.z, v0, c2 add r0.xyz, r4.xyzz, r3.xyzz mov r2.xyz, c15.xyzz mad r0.xyz, r2.xyzz, c21.xyzz, r0.xyzz dp3 r11.w, r10.wzyy, c24.xyzz dp3 r11.y, r10.wzyy, c25.xyzz +mov oD0.xyz, r0 mov r11.z, c32.y mul oPos.xyz, r12.xyzz, c-38.xyzz mov oT1, r11.wyzz mad oPos.xyz, r12.xyzz, r1.y, c-37.xyzz
Shader 6
; v0 position ; v1 normal ; v2 tex coord 1 ; v3 tex coord 2 ; c0-3 matrix ; c4-6 world/normal matrix ; c12 eye ; c13 direct color ; c14 0.7 0.7 0.7 1.0 ; c15 ambient color ; c16 light direction ; c20 diff mat ; c21 amb mat ; c22 spec mat ; c32 0, 1, 0.5, 2 ; c33 0.3 0.7 0.1 0.01 dp4 r10.x, v0, c4 dp4 r10.y, v0, c5 dp4 r10.z, v0, c6 dp3 r11.x, v1.xyzz, c4.xyzz add r0.xyz, -r10.xyzz, c12.xyzz dp3 r11.y, v1.xyzz, c5.xyzz dp3 r11.w, r0.xyzz, r0.xyzz +mov oD0.w, c20.w dp3 r11.z, v1.xyzz, c6.xyzz ; r11 normal dp4 oPos.w, v0, c3 +rsq r1.x, r11.w dp3 r4.x, r11.xyzz, -c16.xyzz +mov oT0, v2 mul r0.xyz, r0.xyzz, r1.x ; r0 view vector +rcc r1.y, r12.w mul r4.xyz, r4.x, c13.xyzz +mov oFog.x, r12.w add r2.xyz, r0.xyzz, -c16.xyzz mul r4.xyz, r4.xyzz, c20.xyzz dp3 r11.w, r2.xyzz, r2.xyzz mul r4.xyz, r4.xyzz, c32.z ; r4 diffuse term mov r10.zw, v3.yyyx +rsq r1.x, r11.w mov r10.y, c32.y mul r2.xyz, r2.xyzz, r1.x dp3 r3.x, r11.xyzz, r2.xyzz dp4 oPos.x, v0, c0 mul r3.x, r3.x, r3.x mul r3.x, r3.x, r3.x mul r3.x, r3.x, r3.x mul r3.x, r3.x, r3.x mul r3.xyz, r3.x, c14.xyzz mul r3.xyz, r3.xyzz, c22.xyzz mul r3.xyz, r3.xyzz, c32.z ; r3 specular term dp4 oPos.y, v0, c1 dp4 oPos.z, v0, c2 add r0.xyz, r4.xyzz, r3.xyzz mov r2.xyz, c15.xyzz mad r0.xyz, r2.xyzz, c21.xyzz, r0.xyzz dp3 r11.w, r10.wzyy, c24.xyzz dp3 r11.y, r10.wzyy, c25.xyzz +mov oD0.xyz, r0 mov r11.z, v3.w mul oPos.xyz, r12.xyzz, c-38.xyzz mov oT1, r11.wyzz mad oPos.xyz, r12.xyzz, r1.y, c-37.xyzz
Shader used for grass
dp4 oPos.w, v0, c3 dp4 oPos.x, v0, c0 dp4 oPos.y, v0, c1 +rcc r1.x, r12.w dp4 oPos.z, v0, c2 mov oFog.x, r12.w mul oPos.xyz, r12.xyzz, c-38.xyzz mov oT0, v1 mov oD0, c20 mad oPos.xyz, r12.xyzz, r1.x, c-37.xyzz
Pixelshader used for world objects (?)
typedef struct _D3DPixelShaderDef
{
DWORD PSAlphaInputs[8]; // Alpha inputs for each stage
14181010
PS_REGISTER_V0
PS_INPUTMAPPING_UNSIGNED_IDENTITY
PS_REGISTER_T0
PS_INPUTMAPPING_UNSIGNED_IDENTITY
PS_REGISTER_ZERO
PS_INPUTMAPPING_UNSIGNED_IDENTITY
PS_REGISTER_ZERO
PS_INPUTMAPPING_UNSIGNED_IDENTITY
dcd11010
PS_REGISTER_R0
PS_INPUTMAPPING_SIGNED_IDENTITY
PS_REGISTER_C0
PS_INPUTMAPPING_SIGNED_IDENTITY
PS_REGISTER_ZERO
PS_INPUTMAPPING_UNSIGNED_IDENTITY
PS_REGISTER_ZERO
PS_INPUTMAPPING_UNSIGNED_IDENTITY
DWORD PSFinalCombinerInputsABCD; // Final combiner inputs
130c0300
PS_REGISTER_FOG
PS_CHANNEL_ALPHA
PS_REGISTER_R0
PS_REGISTER_FOG
DWORD PSFinalCombinerInputsEFG; // Final combiner inputs (continued)
00001c80
PS_REGISTER_R0
PS_CHANNEL_ALPHA
PS_FINALCOMBINERSETTING_CLAMP_SUM
DWORD PSConstant0[8]; // C0 for each stage
ffffffff
ffffffff
DWORD PSConstant1[8]; // C1 for each stage
DWORD PSAlphaOutputs[8]; // Alpha output for each stage
000000c0
PS_REGISTER_DISCARD
PS_REGISTER_R0
000000c0
PS_REGISTER_DISCARD
PS_REGISTER_R0
DWORD PSRGBInputs[8]; // RGB inputs for each stage
0804c149
PS_REGISTER_T0
PS_INPUTMAPPING_UNSIGNED_IDENTITY
PS_REGISTER_V0
PS_INPUTMAPPING_UNSIGNED_IDENTITY
PS_REGISTER_C0
PS_INPUTMAPPING_SIGNED_IDENTITY
PS_REGISTER_T1
PS_INPUTMAPPING_EXPAND_NORMAL
cdcc20cc
PS_REGISTER_R1
PS_INPUTMAPPING_SIGNED_IDENTITY
PS_REGISTER_R0
PS_INPUTMAPPING_SIGNED_IDENTITY
PS_REGISTER_ZERO
PS_INPUTMAPPING_UNSIGNED_INVERT
PS_REGISTER_R0
PS_INPUTMAPPING_SIGNED_IDENTITY
DWORD PSCompareMode; // Compare modes for clipplane texture mode
DWORD PSFinalCombinerConstant0; // C0 in final combiner
DWORD PSFinalCombinerConstant1; // C1 in final combiner
DWORD PSRGBOutputs[8]; // Stage 0 RGB outputs
000000cd
PS_REGISTER_R1
PS_COMBINEROUTPUT_CD_MULTIPLY
PS_REGISTER_R0
PS_COMBINEROUTPUT_AB_MULTIPLY
00000c00
PS_REGISTER_R0
PS_COMBINEROUTPUT_AB_CD_SUM
DWORD PSCombinerCount; // Active combiner count (Stages 0-7)
00011102
2
PS_COMBINERCOUNT_MUX_MSB
PS_COMBINERCOUNT_UNIQUE_C0
PS_COMBINERCOUNT_UNIQUE_C1
DWORD PSTextureModes; // Texture addressing modes
00000021
PS_TEXTUREMODES_PROJECT2D
PS_TEXTUREMODES_PROJECT2D
DWORD PSDotMapping; // Input mapping for dot product modes
DWORD PSInputTexture; // Texture source for some texture modes
DWORD PSC0Mapping; // Mapping of c0 regs to D3D constants
ffffff00
DWORD PSC1Mapping; // Mapping of c1 regs to D3D constants
ffffffff
DWORD PSFinalCombinerConstants; // Final combiner constant mapping
000001ff
} D3DPIXELSHADERDEF;
Xbox vertex formats
0000XXXC 44443333 2222111 NNNNVVVV V N: 1 0x34 D3DVSDT_PBYTE3 2 0x35 D3DVSDT_SHORT3 3 0x31 D3DVSDT_NORMSHORT3 4 0x16 D3DVSDT_NORMPACKED3 default normal 5 0x32 D3DVSDT_FLOAT3 default position C: 0x40 D3DVSDT_D3DCOLOR T1-4: 1 0x24 D3DVSDT_PBYTE2 2 0x25 D3DVSDT_SHORT2 3 0x21 D3DVSDT_NORMSHORT2 4 0x16 D3DVSDT_NORMPACKED3 5 0x22 D3DVSDT_FLOAT2 default X: tangent? XXX is index of tex coord set - 1 that has the data anything 0x16 D3DVSDT_NORMPACKED3 0x16 D3DVSDT_NORMPACKED3 default: 0 position 2 normal 3 color 9-C tex coords skin: stream 0 0 position 3 normal 4 color 5-8 tex coords stream 1 1 weights D3DVSDT_PBYTEn 2 indices D3DVSDT_SHORTn normmap: 40320000 ; vertex 40160001 ; normal 40220002 ; tex coords 40160003 ; ? 40160004 ; ? 40320000 ; vertex 40160001 ; normal 40400002 ; color 40220003 ; tex coords 40160004 ; ? 40160005 ; ? 20000000h 40320000h ; vertex 5 40160001h ; normal 4 40220002h ; tex coord 40400004h ; color 5 0FFFFFFFFh